评论

收藏

[MySQL] Postfix配置Step By Step(一)

数据库 数据库 发布于:2021-07-05 10:08 | 阅读数:466 | 评论:0

    很早就想试下Linux下的Postfix服务,也看了网上很多相关的教程,但是每当我看到那长长的篇幅就打退堂鼓了,但是有些东西在技术的道路上始终是要经历和面对的,这些天就一直在鼓捣着这东东,现在把自已的经历写出来,希望能对大家有点用.对于大侠来讲,这些算不了什么,但至少相对我这种还在Linux门外徊徘的人来说,它是我学习的一个历程.其中  蓝色字体需用户输入,白色字体是系统显示,红色字体是我加入的说明。
  系统相关

hostname         //主机名称
cat /proc/version    //系统版本    
ifconfig eth0      //IP地址
  软件相关
  
mysqlhttp://downloads.mysql.com/archives.php?p=mysql-4.1邮件数据库      
opensslwww.openssl.org提供SSL      
BerkeleyDBhttp://www.oracle.com/database/berkeley-db.html安装perl组件及病毒库时的组件      
Apachehttp://archive.apache.org/dist/httpd/binaries/Web服务器      
libpnghttp://www.libpng.org/pub/png/libpng.htmlpng图片支持      
jpegftp://ftp.uu.net/graphics/jpeg/jpeg图片支持      
freetypehttp://www.fretype.orgFreetype字体支持      
fontconfighttp://www.fontconfig.org字体配置支持      
xpmhttp://koala.ilog.fr/ftp/pub/xpm/xpm图片支持      
GDhttp://www.boutell.com/gd/GD库支持      
PHPhttp://www.php.netPHP支持      
phpMyAdminhttp://sourceforge.net/projects/phpmyadmin/图形化管理mysql      
SASLhttp://cyrusimap.web.cmu.edu/downloads.html#sasl用户认证工具      
courier-authlibwww.courier-mta.org/authlib/用户认证工具      
courier-imapwww.courier-mta.org/imap/imap及pop3工具      
pcrehttp://www.pcre.org/
pcre支持      
clamavhttp://sourceforge.net/project/showfiles.php?
group_id=86638&package_id=90197
防病毒      
perlhttp://search.cpan.org/searchperl相关模块      
amavisd-newhttp://www.ijs.si/software/amavisd/#download防病毒及防垃圾邮件相关      
extmailhttp://www.extmail.org/邮件Web前台      
extmanhttp://www.extmail.org/邮件Web管理后台      
Postfixftp://postfix.cn99.com/postfix/index.html邮件服务器      
RRDtoolhttp://oss.oetiker.ch/rrdtool/pub/?M=D图形化日志支持工具      
SpamAssassinhttp://search.cpan.org/
反垃圾邮件工具      
libarthttp://oss.oetiker.ch/rrdtool/pub/libs/RRD支持库文件      
html2ps
http://user.it.uu.se/~jan /html2ps-1.0b5.tar.gzImageMgick所需文件      
Jasper
http://www.ece.uvic.ca/ ~mdadams ... /jasper-1.701.0.zipImageMgick所需文件      
ImageMagick
http://sourceforge.net/project/showfiles.php?
group_id=24099
图片显示支持      

    在进行配置的过程中,除了各种配置文件的录入问题导致出错外,还有一个比较容易出问题的地方就在于安装perl相关支持模块.在测试中,我尝试删除所有的perl及其相关模块,然后再重新安装perl基本模块,而其它的支持模块全部采用源码的方式,经统计共有67个之多.所以如果你也是按我的方法来安装配置的话,请先将这些东东下载下来,下载的方法是登录  http://search.cpan.org/search ,然后在搜索栏中输入下列相关的模块,如要下载URI,方法见下图,其它的类同.  安装时请按从前往后从左向右的先后顺序进行。


    1
  

    2
  

    3
  

    4
  

    5
  
BerKeleyDB      Comperss-Raw-zlib      IO-Compress-Base      IO-Compress-Zlib
Compress-Zlib      
IO-Zlib      Array-Compcre      Sub-Updevel      Test-Simple   
Test-Exception      
Tree-Dag-Node      Test-Warn      Net-SsLeay      IO-Socket-SSL     
IO-String      
Algorithm-Diff      Text-Diff      Archive-Tar      Archive-Zip      DBI      
DBD-Mysql      IO-Socket-INET6      IP-country      File-Temp      NetAddr-IP      
NET-CIDR-Lite      NET-IP      NET-Ident      Digest-SHA      Digest-SHAL      
Digest-HMAC      NET-DNS      Version        NET-DNS-Resolver
-Programmable
HTML-Tagset      
HTML-Parser      Extutils-CBuilder      Encode-Detect      Extutils-Parsexs      Error      
GD      GD-securityImage      GD-securityImage
-util      
Unix-Syslog      Sys-Hostname
-Long      
Regexp-Common      URI      Mail-SPF      Mail-SPF-Query      TimeDate      
Pod-Escapes      Pod-Simple      Test-Pod      MailTools      Mail-DKIM      
Crypt-Openssl-
Random
Crypt-Openssl-RSA      Mail-DomainKeys      MIME-Tools      Libww-Perl      
SpamAssassin      Convery-TNEF      Convert-UUlib      NET-Server      Time-HiRes      
File-Tail      Log-Log4perl      22.1 Socket6-0.19      41.1  PerlMagick


  卸载系统原有组件

    因为这里的安装方式都是采用源码,所以如果系统中存在旧有的版本,则会引起冲突,这里要做的是把一些和源码包冲突的软件卸载.在使用命令进行查询时,当执行完命令后没有提示则表示系统未安装查询的组件,否则请卸载查询出来的组件。

rpm -qa | grep httpd      //查询是否已安装软件
rpm -qa | grep mysql
rpm -qa | grep php
rpm -qa |grep sasl
rpm -e --nodeps cyrus-sasl-md5-2.1.19-5.EL4    cyrus-sasl-2.1.19-5.EL4 \
cyrus-sasl-plain-2.1.19-5.EL4 cyrus-sasl-devel-2.1.19-5.EL4                 //卸载SASL
rpm -qa |grep sendmail
service sendmail stop
rpm -e --nodeps sendmail
rpm -qa |grep perl
rpm -e --nodeps perl-XML-NamespaceSupport-1.08-6 \
perl-XML-Twig-3.13-6 perl-XML-LibXML-1.58-1 perl-URI-1.30-4 \
perl-DateManip-5.42a-3 perl-HTML-Parser-3.35-6 perl-libwww-perl-5.79-5 \
perl-libxml-perl-0.07-30 perl-XML-Encoding-1.01-26 perl-Digest-SHA1-2.07-5 \
perl-Net-DNS-0.48-1 perl-Convert-ASN1-0.18-3 perl-XML-Grove-0.46alpha-27 \
perl-LDAP-0.31-5 perl-XML-LibXML-Common-0.13-7 perl-Filter-1.30-6 \
perl-Parse-Yapp-1.05-32 perl-XML-Dumper-0.71-2 perl-Time-HiRes-1.55-3 \
perl-XML-SAX-0.12-7 perl-Crypt-SSLeay-0.51-5 perl-HTML-Tagset-3.03-30 \
perl-XML-Parser-2.34-5 perl-libxml-enno-1.02-31 perl-Digest-HMAC-1.01-13
一:增加系统相关的用户和组
    其中用户和组的作用相信大家看了前面的软件相关大概可以看出其作用了,其中vmail是用来登录Webmail的帐号,而postdrop则是在邮件中起postdrop的作用。
  
groupadd mysql
groupadd vmail
groupadd postfix
groupadd postdrop
groupadd amavis
groupadd clamav
groupmod -g 1001 vmail
useradd mysql -g mysql
useradd vmail -g vmail -u 1001
useradd postfix -g postfix
useradd amavis -g amavis
useradd clamav -g clamav
  二:安装Mysql

      1:安装
  
mv mysql-5.0.41-linux-i686 /usr/local/mysql
cd /usr/local/mysql/
chown -R root .         //注意这些地方的点号
chown -R mysql data
chown -R mysql data/mysql/.
chgrp -R mysql .
cp ./support-files/my-medium.cnf /etc/my.cnf
./scripts/mysql_install_db --user=mysql
    2:启动及共享链接库
  
bin/mysqld_safe --user=mysql &    
/usr/local/mysql/bin/mysqlshow -p    
echo "/usr/local/mysql/lib" >>      /etc/ld.so.conf
ldconfig -v          //加入动态链接库中
    3:加入到自动运行队列

cp /usr/local/mysql/support-files/mysql.server    /etc/rc.d/init.d/mysqld
chmod 700 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
export PATH=$PATH:/usr/local/mysql/bin
三:安装Openssl
  因为Openssl在这里的作用不是很明显,而且系统中默认一般都自带有,所以这里没有采用源码的方式安装,在这里只是做一次查询,如果想用源码的方式,这个和普通的编译方式一样,没什么特别要求的地方.
rpm -qa |grep ssl
  四:安装BerkeleyDB

  安装这个软件的原因是因为后面的Perl组件包中必须要有它的支持才能进行下去,所以这个是不能省的.
    1:安装
  
tar zxvf db-4.5.20.tar.gz
cd db-4.5.20/build_unix
../dist/configure --prefix=/usr/local/BerkeleyDB
make
make install
    2:禁用和移除旧版本文件
  
mv /usr/include/db4 /usr/include/db4.off    
rm /usr/include/db_cxx.h    
rm /usr/include/db.h    
rm /usr/include/db_185.h
    3:链接新文件到动态库
  
ln -sv /usr/local/BerkeleyDB/include    /usr/include/db4
ln -sv /usr/local/BerkeleyDB/include/db.h    /usr/include/db.h
ln -sv /usr/local/BerkeleyDB/include/db_cxx.h    /usr/include/db_cxx.h
echo "/usr/local/BerkeleyDB/lib" >>    /etc/ld.so.conf
ldconfig -v
  五:安装Apache

  安装Apache有两个要注意的地方,因为我这里用的Postfix的后台管理是extman这个程序,而它是通过CGI的方式来进行管理的,所以这里启用了suexec的功能,还有一个是关于网站的存放路径的,如果不指定,那么在启用suexec后会出现  suexec-docroot的错误。
    1:安装
  
tar zxvf httpd-2.2.4.tar.gz
cd httpd-2.2.4
./configure --prefix=/usr/local/httpd    --sysconfdir=/etc/httpd \
--enable-so --enable-ssl --enable-track-vars --enable-rewrite \
--with-zlib --enable-mods-shared=most --enable-suexec --with-suexec-caller=daemon \
--with-suexec-docroot=/var/www/
make
make install
    2:加入到自动运行队列
  
echo "/usr/local/httpd/bin/apachectl start"      >> /etc/rc.local
  六:安装GD库

  GD库的主要作用是配置相关的图形及字符的正确显示,包括类似验证码的功能和后面的图形日志的显示.
    1:安装libpng
  
tar zxvf libpng-1.2.16.tar.gz
cd libpng-1.2.16
./configure --prefix=/usr/local/png
make
make install
ln -sv /usr/local/png/lib/*    /usr/lib/
    2:安装jpeg
  
mkdir /usr/local/jpeg    
mkdir /usr/local/jpeg/bin
mkdir /usr/local/jpeg/lib    
mkdir /usr/local/jpeg/include
mkdir /usr/local/jpeg/man
mkdir /usr/local/jpeg/man/man1
tar zxvf jpegsrc.v6b.tar.gz    
cd jpeg-6b/    
./configure --prefix=/usr/local/jpeg      --enable-shared --enable-static
make    
make install    
ln -sv /usr/local/jpeg/lib/*      /usr/lib/
    3:安装freetype
  
tar zxvf freetype-2.3.2.tar.gz
cd freetype-2.3.2
./configure    --prefix=/usr/local/freetype2
make
make install
    4:安装fontconfig
  
tar zxvf fontconfig-2.4.0.tar.gz
cd fontconfig-2.4.0
./configure    --prefix=/usr/local/fontconfig \
--with-freetype-config=/usr/local/freetype2/bin/freetype-config
make
make install
    5:安装xmkmf
  
//安装xmkmf的原因是编译xpm时要用来这个工具
rpm -ivh freetype-devel-2.1.9-1.i386.rpm
rpm -ivh fontconfig-devel-2.2.3-7.i386.rpm
rpm -ivh xorg-x11-devel-6.8.1-23.EL.i386.rpm
    6:安装xpm

//在rhel5中有直接的rpm包,librxpm.rpm libxpm-devel.rpm
tar zxvf xpm-3.4k.tar.gz
cd xpm-3.4k
xmkmf -a
make
make install
  7:安装gd
tar zxvf gd-2.0.34.tar.gz
cd gd-2.0.34
./configure --prefix=/usr/local/gd    --with-png=/usr/local/png/ \
--with-jpeg=/usr/local/jpeg/ --with-freetyp=/usr/local/freetype2/ \
--with-fontconfig =/usr/local/fontconfig/--with-xpm
cp /usr/local/png/include/png.h ./
cp /usr/local/png/include/pngconf.h ./
make
make install
七:安装courier-authlib
    1:安装
tar jxvf courier-authlib-0.59.3.tar.bz2
cd courier-authlib-0.59.3
./configure --with-redhat    --with-authmysql=yes \
--with-mailuser=vmail --with-mailgroup=vmail --with-mysql-libs=/usr/local/mysql/lib \
--with-mysql-includes=/usr/local/mysql/include \
--prefix=/usr/local/authlib --without-stdheaderdir
make
make install
make install-configure
grep "authdaemonvar"    \
/usr/local/authlib/etc/authlib/authdaemonrc  //找出配置文件中authdaemonvar的设置
##NAME: authdaemonvar:2
# authdaemonvar is here, but is not used directly by authdaemond. It's
authdaemonvar=/usr/local/authlib/var/spool/authdaemon
    2:更改相关配置文件

vi    /usr/local/authlib/etc/authlib/authdaemonrc
authmodulelist="authmysql"     //第27行
authmodulelistorig="authmysql"   //第34行
DEBUG_LOGIN=2           //第75行
//此文件中请不要使用空格符,应使用TAB键
vi    /usr/local/authlib/etc/authlib/authmysqlrc
MYSQL_SERVER   localhost         //26行
 MYSQL_USERNAME  extmail         //27行
 MYSQL_PASSWORD  extmail         //28行
MYSQL_DATABASE  extmail          //68行
 MYSQL_SOCKET  /tmp/mysql.sock       //49行
 MYSQL_USER_TABLE  mailbox       //75行
 MYSQL_CLEAR_PWFIELD  password       //84行
 DEFAULT_DOMAIN  test.com         //97行
 MYSQL_UID_FIELD  '1001'         //105行
 MYSQL_GID_FIELD  '1001'           //111行
 MYSQL_LOGIN_FIELD  username         //120行
MYSQL_HOME_FIELD  concat('/var/mailbox/',maildir)   //125行
MYSQL_NAME_FIELD  name            //131行
MYSQL_MAILDIR_FIELD  concat('/var/mailbox/',maildir)  //142行
MYSQL_QUOTA_FIELD  concat(quota,'S')   //157行
    3:共享链接库
  
echo      "/usr/local/authlib/lib/courier-authlib" >> /etc/ld.so.conf
ldconfig -v
    4:启动及加入到自动运行队列

cp courier-authlib.sysvinit    /etc/init.d/courier-authlib
chmod 755 /etc/init.d/courier-authlib
chkconfig --add courier-authlib
chkconfig --level 2345 courier-authlib    on
service courier-authlib start
chmod +x    /usr/local/authlib/var/spool/authdaemon
八:安装SASL
    1:安装
  
tar zxvf cyrus-sasl-2.1.21.tar.gz
cd cyrus-sasl-2.1.21
./configure --prefix=/usr/local/sasl2 \
--disable-anon -enable-plain --enable-login --enable-sql \
--with-mysql=/usr/local/mysql --with-mysql-includes=/usr/local/mysql/include \
--with-mysql-libs=/usr/local/mysql/lib \
--with-authdaemond=/usr/local/authlib/var/spool/authdaemon/socket
patch -p1 < sasl.patch //只在出现下面的错时才用
make
make install
    如果在编译的过程中出现如"client.c:64: error: static declaration of 'global_callbacks' follows non-static  declaration saslint.h:112…",需要加一个补丁程序,然后再执行编译过程。我的在rhel4下没出现错误,但在rhel5下出现错误.文件的内容如下:  
  
vi sasl.patch
  --- cyrus-sasl-2.1.20/lib/client.c~ 2003-11-11 11:26:06.000000000 -0500    
  +++ cyrus-sasl-2.1.20/lib/client.c 2005-05-31 22:34:14.000000000 -0400    
  @@ -61,7 +61,7 @@
  static cmech_list_t *cmechlist; /* global var which holds the list */
  -static sasl_global_callbacks_t global_callbacks;    
  +sasl_global_callbacks_t global_callbacks;
  static int _sasl_client_active = 0;
    2:共享链接库
  
mv /usr/lib/sasl2 /usr/lib/sasl2.OFF
ln -sv /usr/local/sasl2/lib/* /usr/lib
ln -sv /usr/local/sasl2/lib/* /usr/local/lib    
ln -sv /usr/local/sasl2/include/sasl/*      /usr/local/include    
mkdir -pv /var/state/saslauthd    
echo "/usr/local/sasl2/lib" >>   /etc/ld.so.conf    
echo      "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
ldconfig -v
    3:启动及加入到自动运行队列
  
echo "/usr/local/sasl2/sbin/saslauthd -a    shadow pam">>/etc/rc.local
/usr/local/sasl2/sbin/saslauthd -a shadow    pam
    4:新建配置文件

vi /usr/local/lib/sasl2/smtpd.conf
pwcheck_method:authdaemond
mech_list:PLAIN LOGIN
log_level:3
authdaemond_path:/usr/local/authlib/var/spool/authdaemon/socket
  过程写得比较详细,所以感觉有点长,慢慢来吧,下回再继续了。
  
关注下面的标签,发现更多相似文章