postfix+dovecot+maildrop+mailscanner+clamav+spamassassin搭建rhel6平台邮件服务器

 

系统:rhel6,安装base,developments tools。后一项选择的所有可选包。

web平台:lamp

web用户界面及后台管理: extmail extman。以前一直用这个,页面美观,易操作。易管理。

SMTP服务器:postfix2.8

pop3服务器:dovecot2.0

MDA服务器:maildrop2.5

验证服务器:dovecot做smtp验证,courier-authlib做pop3验证。开始想用dovecot做投递认证。后来由于水平实在有限,网上资料也很少,终究放弃了。而且好像extman那块也还没有做到支持dovecot。

杀毒+反垃圾:mailscanner+clamav+spamassassin,之所以用这个组合一个是maillscanner功能很强大。再有就是看着官网比较顺眼。最大的好处是提供了那些繁琐的perl依赖包的下载,简直就是一键式安装。非常方便噢。

主要软件都是最新的版本。看起来会比那些老文档爽吧,而且网上对dovecot+maildrop的组合用的好像不是很多,我个人觉得这个组合效率应该不比courier套件的组合低。我用maildrop主要也是为实现自动回复的功能。

======================================================================

安装配置前准备:

1.改主机名(非必要,但别是除localhost之外的其他主机名了,修改主机名也是为了避免出现不必要的错误)

#hostname mail.test.com 
#vi /etc/sysconfig/network 
修改 HOSTNAME=mail.test.com 
注销再登陆,验证一下: 
#hostname 
#uname -n

显示一致,说明已经可以进行下一步了。

==================================================================

2.DNS设置

如果方便可以直接在你的域名管理后台添加mail的A记录及MX记录。如果暂时是测试环境那就自己建一个dns服务吧,其实也很简单。

从www.isc.org下载bind9.8,这是当前的最新版了。

#tar zxvf bind-9.8.0.tar.gz
 #cd bind-9.8.0
 #./configure --prefix=/usr/local/bind --enable-threads
 #make;make install
 #/usr/local/bind/sbin/rndc-confgen > /usr/local/bind/etc/rndc.conf
 #tail -10/usr/local/bind/etc/rndc.conf |head -9| sed s/#\// > /usr/local#/bind/etc/named.conf#dig > /usr/local/bind/etc/named.root
#vim /usr/local/bind/etc/named.conf 
下是我的named.conf文件:
 key "rndc-key" {
         algorithm hmac-md5;
         secret "phTa1qrl4gZ5Th3vrV+nzQ==";
  };

  controls {
         inet 127.0.0.1 port 953
                 allow { 127.0.0.1; } keys { "rndc-key"; };
  };
 options {
         directory "/usr/local/bind";
         pid-file "var/named.pid";
         forwarders {
                 202.106.0.20;
         };
 };
 zone "." IN {
         type hint;
         file "etc/named.root";
 };
 zone "localhost" IN {
         type master;
         file "etc/named.local";
 };
 zone "0.0.127.in-addr.arpa" IN {
         type master;
         file "etc/named.localarpa";
 };
 zone "test.com" IN {
         type master;
         file "etc/named.test";
 };
 zone "0.168.192.in-addr.arpa" IN {
         type master;
         file "etc/named.testarpa";
 };接下来建立这个主文件中指定的zone配置文件 
(1)named.local 
$TTL 86400
 @   1D    IN      SOA     @        root.localhost. (
                                         20110429
                                         3H
                                         15M
                                         1W
                                         1D )
     1D    IN      NS      @
     1D    IN      A      127.0.0.1(2)named.localarpa 
$TTL 86400
 @       IN      SOA     localhost.      root.localhost. (
                                         20110429
                                         3H
                                         15M
                                         1W
                                         1D )
         IN      NS      localhost.
 1       IN      PTR     localhost.(3)named.test 
$TTL 86400
 @       IN      SOA     test.com.       root.test.com.(
                                         20110429
                                         3H
                                         15M
                                         1W
                                         1D )
         IN      NS      @
         IN      MX  1   mail.test.com.
 ns      IN      A       192.168.50.170
 @       IN      A       192.168.50.170
 mail    IN      A       192.168.50.170(4)named.testarpa 
$TTL 86400
 @ IN SOA test.com. root.test.com. (
                         20110429 ; Serial
                         3H ; Refresh 1d=1 days
                         15M ; Retry 30m=30 minutes
                         1W ; Expire 1w=7 days
                         1D ) ; Minimum ;Negative Caching
 @       IN NS test.com.
         IN PTR test.com.
         IN PTR mail.test.com.
         IN PTR ns.test.com. #/usr/local/bind/sbin/named

 

注:(1)/usr/local/bind/sbin/rndc-confgen 这条命令的意思就不解释了,只是在执行这个命令时有时候会卡住,这是因为/dev/random的原因。编辑这个文件,在里面输入随意的数字字母,多输点,保存退出,这个命令就执行成功了,以前在centos上没遇见这个问题。这里注意一下喽。

(2)named.conf中options这一行以上的内容就是由(1)产生的,这里不能自建。一定要用rndc-confgen这个命令生成。

好了以上我只是建了一个测试环境。不需要太复杂

启动之后用nslookup,ping检查一下看是否能正常解析,如果有错误会在/var/log/messages中可以看到。

=======================================================================

3.amp安装配置

我自己测试时用的系统自带的安装包。不过我这里还想再操作一遍。yum这个东西很不赖,安装软件时可以解决rpm包的依赖性,这是我为什么讨厌使用rpm包的原因,有时候让人抓狂。不过一些简单的包用rpm还是蛮有效率的。

由于我的系统安装时比较干净,所以一些包默认没有安装。比如安装PHP环境需要的一些支持图像的软件我的系统只装了主程序,但相应的devel包却没装。这时候用光盘镜像制作的yum源搬上来吧。

yum install libpng 
yum install libpng-devel 
yum install libjpeg 
yum install libjpeg-devel 
yum install freetype 
yum install freetype-devel 
yum install zlib 
yum install zlib-devel 
yum install libxml2 
yum install libxml2-devel 
yum install gd  #以上的包也是为这个gd服务的,所以要先装好
(1)apache
#tar jxvf httpd-2.2.15.tar.bz2 
#cd httpd-2.2.15
 #./configure --prefix=/usr/local/apache --enable-so --enable-rewrite && make && make install(2)mysql 
groupadd mysql 
 useradd -g mysql -M -s /bin/false mysql
 tar zxvf mysql-5.1.53-linux-i686-glibc23.tar.gz 
 cp -a mysql-5.1.53-linux-i686-glibc23 /usr/local/mysql
 cd /usr/local/mysql
 chown -R mysql:mysql .scripts/mysql_install_db --user=mysql 
 cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
 chown -R root .
 chown -R mysql data
 bin/mysqld_safe --user=mysql &
 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
 chkconfig --add mysqld
 chkconfig --level 35 mysqld on
 echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
 ldconfig
 echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
 . /etc/profile我为了追求安装时的速度,这里是用的二进制包,不过用于邮件存储来说应该够用了。如果时间很充裕还是用源码包configure,make,make install吧。
(3)php 
tar zxvf php-5.3.6.tar.gz &&
 cd php-5.3.6  ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --enable-mbstring --with-gd --with-jpeg-dir --with-freetype --with-zlib-dir --with-xml --with-mysql=/usr/local/mysql --with-mysql-libs=/usr/local/mysql/lib --with-mysql-includes=/usr/local/mysql/include --enable-sockets 
 make && make install && cp php.ini-production /usr/local/php/lib/php/php.ini修改/usr/local/apache/conf/httpd.conf
加入 AddType application/x-httpd-php .php
修改 DirectoryIndex加入index.php
这样就是apache支持了php解析。 
 
在/usr/local/apache/htdocs/下建立一个test.php文件:
<?php 
phpinfo()
 
?>
在浏览器里查看此文件是否被解释执行。
echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.local
========================================================================= 
4.安装courier-authlib,maildrop 
安装前先建立想要建立相关的用户信息
groupadd postdrop
 groupadd -g 1000 postfix
 useradd -u 1000 -g postfix -s /sbin/nologin -G postdrop postfix
 groupadd dovecot
 useradd -s /sbin/nologin -g dovecot dovecot
 groupadd -g 1010 vmail
 useradd -u 1010 -g vmail -d /mailbox -s /sbin/nologin vmail建立存放虚拟域,用户及邮件的目录
mkdir /mailbox
chown -R vmail.vmail /mailbox
建立所需的数据库
tar zxvf extman-1.1.tar.gz
cd extman-1.1/docs
mysql -uroot -p < extmail.sql
mysql -uroot -p < init.sql
 
 
 tar jxvf courier-authlib-0.63.0
  cd courier-authlib-0.63.0 ./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 
cd /usr/local/authlib/etc/authlib/
mv authdaemonrc.dist authdaemonrc
 mv authmysqlrc.dist authmysqlrc编辑authdaemonrc,确保为以下内容: 
authmodulelist="authmysql"
 authmodulelistorig="authmysql"
 daemons=10
 authdaemonvar=/usr/local/authlib/var/spool/authdaemon
 DEBUG_LOGIN=0
 DEFAULTOPTIONS=""
 LOGGEROPTS=""其中前三行是需要自行修改的 
编辑authmysqlrc确保为以下内容: 
MYSQL_SERVER            localhost
 MYSQL_USERNAME          extmail
 MYSQL_PASSWORD          extmail
 MYSQL_SOCKET            /var/lib/mysql/mysql.sock
 MYSQL_PORT              3306
 MYSQL_OPT               0
 MYSQL_DATABASE          extmail
 MYSQL_USER_TABLE        mailbox
 MYSQL_CRYPT_PWFIELD     password
 DEFAULT_DOMAIN          test.com
 MYSQL_UID_FIELD         uidnumber
 MYSQL_GID_FIELD         gidnumber
 MYSQL_LOGIN_FIELD       username
 MYSQL_HOME_FIELD        homedir
 MYSQL_NAME_FIELD        name
 MYSQL_MAILDIR_FIELD     maildir
 MYSQL_QUOTA_FIELD       quota
 MYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,
              CONCAT("/mailbox/",homedir),CONCAT("/mailbox/",maildir),\
                         quota,name from mailbox\
                         where username="$(local_part)@$(domain)";

 

注:MYSQL_SELECT_CLAUSE......应用这个查询语句的目的是为了取得maildrop的自动回复功能,我在网上看到的还有一种配置,设置:

MYSQL_UID_FIELD为vmail的uid
MYSQL_GID_FIELD为vmail的gid
MYSQL_HOME_FIELD为("/mailbox/",maildir)
MYSQL_MAILDIR_FIELD为("/mailbox/",maildir)

然后最下面那个查询语句省略。但这种配置我试过在extmail里设置好自动回复,不能实现其功能。

设置authlib的共享库:

echo "/usr/local/authlib/lib/courier-authlib" >> /etc/ld.so.conf
 ldconfig拷贝安装包内的courier-authlib.sysvinit到/etc/init.d下:
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 startchmod +x /usr/local/authlib/var/spool/authdaemon
ln -sv /usr/local/authlib/bin/courierauthconfig /usr/bin
ln -sv /usr/local/authlib/include/* /usr/include

注:上面两个连接文件在安装maildrop时,会去相应目录检查这些文件。

tar jxvf maildrop-2.5.2.tar.bz2 
 cd maildrop-2.5.2./configure --enable-sendmail=/usr/sbin/sendmail --enable-trusted-users='root vmail' --enable-syslog=1 --enable-maildirquota --enable-maildrop-uid=1010 --enable-maildrop-gid=1010 --with-trashquota --with-dirsync
make;make install

安装完成以后用命令maildrop -v检查一下是否支持courier认证,显示以下信息,表明正确安装。如果没有第二行,很可能是courier安装时没有指定vmail用户,或者courierauthconfig没有连接正确,我就有过这么一次,重新编译了好几遍maildrop都是没有courier认证支持。我都快抓狂了,最后去检查那个courierauthconfig连接文件,结果发现时红色的。正常情况下应该是浅绿色的。

maildrop 2.5.2 Copyright 1998-2005 Double Precision, Inc.
 Courier Authentication Library extension enabled.
 Maildir quota extension are now always enabled.
 This program is distributed under the terms of the GNU General Public
 License. See COPYING for additional information. 
编辑maildrop日志文件
 
vi /etc/maildroprc 输入如下内容: 
 
logfile "/var/log/maildrop.log" 
 
touch /var/log/maildrop.log 
 
chown -R vmal.vmail /var/log/maildrop.log
这个文件要自行建立,而且权限要正确,否则在测试时会出现“不能建立这个文件”。网上有人说把日志的设置去掉,比较不可取。另外此文件还可以设置垃圾邮件分拣。我在这里没有设置。再做深入研究时再加吧。
=========================================================================
5.postfix+dovecot 
(1)安装
安装之前首先卸载sendmail,这一步记得还算熟了,不过rhel6上的sendmail已经被postfix取代,postconf -m 发现默认竟然支持mysql了。一大惊喜,以后可以不用费劲编译安装了。呵呵,别失望,我已经下载好了2.8的版本,为了体验一下,我还是卸载了原装正版的postfix。还是以源码包安装为老规矩吧。
这次安装打破以前的惯例,首先声明这不是我的原创,也是网上翻出来的。编译postfix时把sasl验证改为dovecot。并且使用自动安装方式,省去交互式安装需要手动按回车的麻烦,我这里是安照默认安装的路径。
rpm -e postfix --nodeps #卸载自带的postfix
postfix还依赖一些包 
yum install openssl 
yum install openssl-devel 
yum install db* 
还有记得上面mysql的库文件要加到ld.so.conf中,并使之生效。
 
#!/bin/bash
 postfixver=postfix-2.8.2dovecotver=dovecot-2.0.11
 ###################setup_postfix#################
 tar zxvf $postfixver.tar.gz
 cd $postfixver
 chmod 755 ./postfix-install
 make makefiles \
 CCARGS='-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH \
 -DDEF_SERVER_SASL_TYPE=\"dovecot\" -DUSE_TLS -I/usr/include' \
 AUXLIBS='-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lssl -lcrypto' &&
 make &&
 ./postfix-install -non-interactive \
 install_root=/ tempdir=/tmp \
 config_directory=/etc/postfix \
 command_directory=/usr/sbin \
 daemon_directory=/usr/libexec/postfix \
 data_directory=/var/lib/postfix \
 html_directory=no \
 mail_owner=postfix \
 mailq_path=/usr/bin/mailq \
 manpage_directory=/usr/local/man \
 newaliases_path=/usr/bin/newaliases \
 queue_directory=/var/spool/postfix \
 readme_directory=no \
 sendmail_path=/usr/sbin/sendmail \
 setgid_group=postdrop  
############setup_dovecot############ 
 
tar zxvf $dovecotver.tar.gz
 cd $dovecotver
 ./configure --prefix=/usr/local/dovecot \
 --sysconfdir=/etc --localstatedir=/var --with-sql --with-mysql --with-openssl &&
 make &&
 make install红色字体是脚本内容,这里就是简单命令的罗列,所以就不一步一步操作了。
(2)配置
postconf -n > /etc/postfix/main.cf.new   #把默认的main.cf中的有效配置提取出来. 
mv /etc/postfix/main.cf /etc/postfix/main.cf.bak  
mv /etc/postfix/main.cf.new /etc/postfix/main.cf 
下面是我的main.cf配置: 
sed -e /^#/d /etc/postfix/main.cf 
 
queue_directory = /var/spool/postfix

 command_directory = /usr/sbin

 daemon_directory = /usr/libexec/postfix

 data_directory = /var/lib/postfix

 mail_owner = postfix

 sendmail_path = /usr/sbin/sendmail

 newaliases_path = /usr/bin/newaliases

 mailq_path = /usr/bin/mailq

 setgid_group = postdrop

 html_directory = no

 manpage_directory = /usr/local/man

 sample_directory = /etc/postfix

 unknown_local_recipient_reject_code = 550

 readme_directory = no
 header_checks = regexp:/etc/postfix/header_checks  #这个配置是调用MailScanner用的,可以不加。
 mydomain = test.com
 myhostname = mail.test.com
 myorigin = $mydomain
 inet_interfaces = all
 mydestination =  
 mynetworks_style = subnet
 mynetworks = 127.0.0.0/8
 home_mailbox = Maildir/                 #邮箱格式为Maildir         
 alias_database = hash:/etc/postfix/aliases
 alias_maps = hash:/etc/postfix/aliases
 virtual_mailbox_base = /mailbox           #我的邮箱目录
 virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf  #mysql_virtual_mailbox_maps.cf这个文件可以从extman解压包中的doc目录中取得
#下面的三个mysql_virtual.....文件也同样从extman的doc中取得,拷贝到相应目录即可
 virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
 virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
 virtual_uid_maps = static:1010         #vmail的ID
 virtual_gid_maps = static:1010
 virtual_transport = maildrop:          #使用maildrop做本地的投递
 maildrop_destination_recipient_limit = 1   
 maildrop_destination_concurrency_limit=1
 message_size_limit = 209715200          #邮件大小的限制,网上有的说是限制附件这不准确
 virtual_mailbox_limit = 209715200
 virtual_create_maildirsize = yes
 virtual_mailbox_extended = yes
 virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_limit_maps.cf
 virtual_mailbox_limit_override = yes
 virtual_mailbox_limit_message = sorry,the user'smaildir has overdrawn his diskspace quota,please try again later.
 virtual_overquota_bounce = yes
 smtpd_sasl_auth_enable = yes
 smtpd_sasl_local_domain = $mydomain
 smtpd_sasl_security_options = noanonymous
 smtpd_sasl_type = dovecot               #这一行声明使用dovecot做SMTP验证,和下一行一起作用
 smtpd_sasl_path = private/auth
 broken_sasl_auth_clients = yes
 smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,permit_auth_destination, 
 reject_invalid_hostname,reject_non_fqdn_hostname, 
 
 reject_unknown_sender_domain,reject_non_fqdn_sender, 
 
 reject_non_fqdn_recipient,reject_unknown_recipient_domain, 
 
 reject_unauth_pipeling,reject_unauth_destination,reject
注:postfix的配置文件如果一行内写的太长想换行的话,要在下一行加空格,这样postfix就知道是上一行的续写。
要postfix支持maildrop还需要在master.cf中把调用maildrop的注释打开,并加上适当的修改。
 
maildrop  unix  -       n       n       -       -       pipe
   flags=DRhu user=vmail argv=/usr/local/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}编辑dovecot配置文件 
cp /usr/local/dovecot/share/doc/dovecot/example-config/dovecot.conf /etc/dovecot/
 cp /usr/local/dovecot/share/doc/dovecot/example-config/dovecot-sql.conf.ext /etc/dovecot/dovecot-mysql.conf 两个关键的配置样例文件在安装目录的share/doc下,拷贝到指定的存放配置文件的目录(根据安装时的选项)。 
#sed -e /^#/d /etc/dovecot/dovecot.conf 
 protocols = imap pop3
 listen = *
 base_dir = /usr/local/dovecot/
 auth_debug = yes
 auth_default_realm = test.com
 default_login_user = dovecot
 default_internal_user = dovecot
 disable_plaintext_auth = no
 ssl = no
 mail_uid = 1010
 mail_gid = 1010
 first_valid_uid = 1010
 last_valid_uid = 1010
 log_path = /var/log/dovecot.log
 mail_location = maildir:/mailbox/%d/%n/Maildir
 pop3_uidl_format = %08Xu%08Xv
 auth default {
         mechanisms  = plain login
         passdb sql {
                 args = /etc/dovecot/dovecot-mysql.conf
         }
         userdb sql {
                 args = /etc/dovecot/dovecot-mysql.conf
         }
         socket listen {
                 client {
                         path = /var/spool/postfix/private/auth
                         mode = 0660
                         user = postfix
                         group = postfix
                 }
         }
 } #sed -e /^#/d /etc/dovecot/dovecot-mysql.conf 
 driver = mysql
 connect = host=localhost dbname=extmail user=extmail password=extmail
 default_pass_scheme = MD5-CRYPT      #这里和extmail的验证方式一致
 password_query = \
   SELECT password ,maildir as userdb_home\
   FROM mailbox WHERE username = '%u'
 user_query = \
   SELECT 1010 as uid, 1010 as gid \
   FROM mailbox WHERE username = '%u' AND active='1'加入自启动程序
echo "postfix start" >> /etc/rc.local 
echo "/usr/local/dovecot/sbin/dovecot -c /etc/dovecot/dovecot.conf" >> /etc/rc.local
==================================================================
6.反病毒+反垃圾
从mailscanner官网下载MailScanner,还有一个惊喜,不仅MailScanner的包自带安装时依赖的perl程序,还有ClamAV 0.96.5 and SpamAssassin 3.3.1 easy installation package.这么一个包。下载下来打开后也和MailScanner一样封装好了clamav和spam,同时也有相应的perl程序包。这可是省了很多的时间呢。
先安装MailScanner。解压运行目录下的install.sh就可以了。安装顺利完成。
安装install-Clam-SA-latest.tar.gz。这个包安装过程中有些小问题。一些依赖的perl程序在它自己的解压包内还是没有的,导致安装到spam时报错。有一个必须安装的NetAddr-IP包没装上,还有三个可选包,还提示安装razor和dcc。这个只能麻烦一下了,先手动安装这几个包吧。这里我以前已经下载了相关的包,所以可选的也给它装上。 
IO-Socket-SSL-1.39
Mail-SPF-2.004 
NetAddr-IP-4.004
razor-agents-2.84
razor-agents-sdk-2.07
dcc-1.3.139 
就是这几个包了,注意版本别太低,不然不被识别。前3个是perl包,安装时执行 
"perl Makefile.PL;make;make install";后面是一般的压缩包,三部曲"configure;make;make install". 
这样再运行install.sh就顺利装好了。 
这里先做一些简单的配置就可以运行起来了。mailscanner的配置文件很人性化,每个设置都有大量的说明。可设置的选项很多,主配置文件有3100多行,这里先让其运行起来。 
编辑/etc/MailScanner/MailScanner.conf主配置文件,修改一下选项: 
%org-name% = test.com
 %org-long-name% = ceshi    #填写组织名,可随意填写
 %web-site% = mail.test.com   #填写组织的网站 Run As User = postfix
 Run As Group = postfix Incoming Queue Dir = /var/spool/postfix/hold
 Outgoing Queue Dir = /var/spool/postfix/incoming
 MTA = postfix SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin
Virus Scanners = clamav 
Use SpamAssassin = yes 
更细致的配置以后根据实际情况再做调整。 
mkdir /var/spool/MailScanner/spamassassin
 chown -R postfix.postfix /var/spool/MailScanner/incoming
 chown -R postfix.postfix /var/spool/MailScanner/quarantine
 chown -R postfix.postfix /var/spool/MailScanner/spamassassin基本配置好了,clamav和spam据说可以直接被mailscanner管理。甚至是postfix。 
这里为使postfix调用mailscanner,要编辑main.cf文件。上面安装postfix时给出的配置文件已经添加了,下面要编辑/etc/postfix/header_checks,确保为以下内容: 
/^Received:/ HOLD
这个配置可以从官网文档上查到,也可以在网络上找到。再提一下,mailscanner的官网看起来还是比较顺眼的,多看一下。 
既然mailscanner能管理postfix,那就把前面写进开机启动的postfix start去掉。 
然后关闭postfix 
postfix stop 
chkconfig --add MailScanner 
chkconfig --level 235 MailScanner on 
service MailScanner start 
ps aux |grep postfix 
经查看postfix确实已经启动。 
tail -f /var/log/maillog 发送一封邮件测试一下 
MailScanner[18478]: New Batch: Scanning 1 messages, 879 bytes 
MailScanner[18478]: Virus and Content Scanning: Starting 
MailScanner[18478]: Requeue: A141A43EC6.A8809 to 3E5AE43EC9 
postfix/qmgr[18466]: 3E5AE43EC9: from=<>, size=669, nrcpt=1 (queue active) 
MailScanner[18478]: Uninfected: Delivered 1 messages 
MailScanner[18478]: Deleted 1 messages from processing-database 
这是我截取的一段日志。可以看到mailscanner在扫描邮件了。
==================================================================
7.webmail
终于最后一步了。这一步按照搭建过程其实在做完smtp和pop3服务后就该做了,我做测试就是用extman添加虚拟域和用户的。命令行暂时还没研究怎么添加虚拟用户。
extman需要几个perl包,系统光盘中没有的需要自行下载了。
我用命令罗列了一个脚本。安装起来更方便些:
#! /bin/bash 
unixsyslogver=Unix-Syslog-0.100
 dbdmysqlver=DBD-mysql-3.0008
 dbiver=DBI-1.612
 filetrilver=File-Tail-0.99.3 extmailver=extmail-1.2
 extmanver=extman-1.1 #########setup_apache_virtual_directory###### 
mkdir -p /usr/local/httpd/htdocs 
#################################
 tar zxvf $unixsyslogver.tar.gz
 cd $unixsyslogver
 perl Makefile.PL
 make;make intall
 cd -
 #################################
 tar zxvf $dbdmysqlver.tar.gz
 cd $dbdmysqlver
 perl Makefile.PL
 make;make intall
 cd -
 ###################################
 tar zxvf $dbiver.tar.gz
 cd $dbiver
 perl Makefile.PL
 make;make intall
 cd -
 ###################################
 tar zxvf $filetrilver.tar.gz
 cd $filetrilver
 perl Makefile.PL
 make;make intall
 cd - ################################### 
tar zxvf $extmailver
 tar zxvf $extmanver
 mv $extmailver/ /usr/local/httpd/htdocs/extmail
 mv $extmanver/ /usr/local/httpd/htdocs/extman
 chown -R vmail:vmail /usr/local/httpd/htdocs/extmail/cgi
 chown -R vmail:vmail /usr/local/httpd/htdocs/extman/cgi
 mkdir /tmp/extman
 chown -R vmail:vmail /tmp/extman
 cp /usr/local/httpd/htdocs/extman/docs/mysql_virtual_* /etc/postfix/编辑httpd.conf把User和Group改成vmail用户;加入虚拟机设置,映射到htdocs目录。我这里是为了方便,正式环境要规范一些。 
<VirtualHost *:80>
 ServerName mail.test.com
 DocumentRoot /usr/local/httpd/htdocs/extmail/html/
 ScriptAlias /extmail/cgi/ /usr/local/httpd/htdocs/extmail/cgi/
 Alias /extmail/ /usr/local/httpd/htdocs/extmail/html/
 ScriptAlias /extman/cgi/ /usr/local/httpd/htdocs/extman/cgi/
 Alias /extman/ /usr/local/httpd/htdocs/extman/html/
 </VirtualHost>编辑/usr/local/httpd/htdocs/extmail/webmail.cf,修改以下关键选项: 
SYS_CONFIG = /usr/local/httpd/htdocs/extmail/

 SYS_LANGDIR = /usr/local/httpd/htdocs/extmail/lang

 SYS_TEMPLDIR = /usr/local/httpd/htdocs/extmail/htmlSYS_AUTH_TYPE = mysql

 SYS_MAILDIR_BASE = /mailbox SYS_MYSQL_USER = extmail
 SYS_MYSQL_PASS = extmail
 SYS_MYSQL_DB = extmail
 SYS_MYSQL_HOST = localhost
 SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock SYS_AUTHLIB_SOCKET = /usr/lcoal/authlib/var/spool/authdaemon/socket 
SYS_G_ABOOK_FILE_PATH = /usr/local/httpd/htdocs/extmail/globabook.cf
编辑/usr/local/httpd/htdocs/extman/webman.cf,修改以下关键选项: 
SYS_CONFIG = /usr/local/httpd/htdocs/extman/

 SYS_LANGDIR = /usr/local/httpd/htdocs/extman/lang

 SYS_TEMPLDIR = /usr/local/httpd/htdocs/extman/html

 SYS_MAILDIR_BASE = /mailbox
 SYS_DEFAULT_UID = 1010

 SYS_DEFAULT_GID = 1010
 SYS_MYSQL_USER = webman
 SYS_MYSQL_PASS = webman
 SYS_MYSQL_DB = extmail
 SYS_MYSQL_HOST = localhost
 SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock 启动以下守护进程,不启动话在进入extman后台是不显示系统统计信息。 
 /usr/local/httpd/htdocs/extman/daemon/cmdserver --daemon
安装rrdtool让extman显示图形日志
tar zxvf rrdtool-1.0.50.tar.gz 
 cd rrdtool-1.0.50
 ./configure 
 make;make installcp /root/rrdtool-1.0.50/perl-shared/blib/lib/RRDs.pm /usr/lib/perl5/
cp -a /root/rrdtool-1.0.50/perl-shared/blib/arch/auto/RRDs/* /usr/lib/perl5/
注:最好别用高版本的,不好安装,低版本也不影响显示。不过安装完之后启动mailgraph-init 还是提示找不到 RRDs.pm。用find看到解压包内包含所需文件,干脆拷贝过去。
cp -r /usr/local/httpd/htdocs/extman/addon/mailgraph_ext/ /usr/local/mailgraph_ext/
/usr/local/mailgraph_ext/mailgraph-init start

==================================================================

8.后记

虽然以前也配置过类似系统,但以前使用的相关功能软件不同。资料也比较多。还是很费劲。现在配置的这个系统也是经过无数次调试。终于成功了,性能方面应该能满足一般中小企业的用户了,当然还有待调优相关软件的设置。达到更好的性能。

配置的时候一定要小心各配置文件的细节,也许多一个标点或打错字母都让你找半天原因。

我用crt打开几个窗口。一个几乎是 tail -f /var/log/maillog 没停过。

还有就是谷歌了。我发现谷歌有些方面是比百度好使!