Postfix邮件系统的组成及原理


wKiom1MVo1CAmw_RAADJ1R4IytA594.jpg


用到的主要协议和软件


1.邮件用户代理(MUA)

MUA是一个邮件系统的客户端程序,它提供了阅读、发送、和接受电子邮件的用户接口,是用户和MTA之间的接口。常用软件Windows下有outlookFoxmail等;Linux下有ThunderbirdEvolution.

MUA至少具有如下3个功能:

       a.撰写邮件

       b.显示邮件

       c.处理邮件


2.邮件传输代理(MTA)

       MTA主要用于存储和转发邮件,也可以说是邮件服务器软件的总称。常用软件:windows下的exchange,LinuxSendmailPostfixQmail等;

MTA主要功能:

       a.接收和传递由客户端发送的邮件

       b.维护邮件队列,以便客户端不必一直等到邮件真正发送出去

       c.接收客户的邮件,并将邮件放置在缓冲区存储,直到用户连接从而收取邮件

       d.有选择的转发和拒绝转发接收到的、目的地为另一个主机的消息


3.邮件分发代理(MDA)

       MDA主要负责将MTA接收的邮件传递到收件人的邮箱(mailbox)


4.电子邮件基本的工作流程

       用户----MUA---MTA...........MTA---MUA----用户

5.相关协议

   1).简单邮件传输协议SMTP

       监听25端口;

       邮件的发送过程中有两处要用到这个协议:

           a.发送邮件的MUAMTA建立链接并发送邮件

           b.MTA之间的邮件转发

   2)邮件访问协议

       a.POP3(Post Office Protocol)

           Pop协议要检测用户的登录名和口令,然后将用户的邮件从服务器移动到用户本地桌面系统的MUA中,监听110端口


       b.IMAP(Internet message access protocol)

           IMAPPop的替代品,踏出了提供与pop相同的基本功能外,还增加了对邮箱同步的支持,即IMAP提供了如何远程维护服务器上的邮件箱的功能,监听143端口    



Postfix系统更新,添加支持mysql模块,构建邮件系统


 1.Postfix添加Mysql模块


$tar zxf postfix-2.10.2.tar.gz
 $cd postfix-2.10.2
 $make -f Makefile.init makefiles           //需要db*-devel,gcc支持


$ make upgrade

        //make -f 后边不添加mysql的头文件及库文件参数,makeupgrade更新后postfix将不支持mysql服务,可以使用postconf-m 查看,若不支持mysql需要重新解压postfix包重新更新,如下



首先需要安装mysql-devel开发包

$yum install mysql-devel
$make -f Makefile.init makefiles \
>'CCARGS=-DHAS_MYSQL -I/usr/include/mysql' \                    //指定mysql的头文件所在目录
>'AUXLIBS=-L/usr/lib64/mysql -lmysqlclient -lz -lm'                   //指定mysql的库文件所在目录


$make upgrade                  //更新后,再使用postconf-m查看可以支持mysql模块



2.安装PhpMyAdmin,web页面形式操作Mysql数据库,建立邮件用户信息:


       PhpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。

$yum install httpd php php-mysql
$tar -zxf phpMyAdmin-3.5.7-all-languages.tar.gz -C /var/www/html
$cd /var/www/html/
$mv phpMyAdmin-3.5.7-all-languages/ phpmyadmin
$cd phpmyadmin/
$cp config.sample.inc.php config.inc.php


$vi config.inc.php
    $cfg['blowfish_secret'] = 'tian';                     //第二个引号中必须要有字符串,可任意


$/etc/init.d/httpd start


用浏览器访问127.0.0.1/phpmyadmin就可以以web形式访问mysql,用户名密码仍未mysql


浏览器访问mysql后,建立库(linux),在建立表email,结构内容如下


              username  varchar(25)          test@ty.com

              password  varchar(20)          test

              domain    varchar(15)          ty.com

              mailbox   varchar(15)          ty.com/test/


$useradd -u 800 email             //添加邮件用户email


mysql> grant all on linux.* to email@localhost identified by'email';
    Query OK, 0 rows affected (0.00 sec)                   //用户授权


   postconf -d             //查看默认设置

   postconf -n             //查看当前设置    


3.配置Postfix


[root@ty ~]$ postconf -e virtual_mailbox_base=/home/email/
[root@ty ~]$ postconf -e virtual_gid_maps=static:800
[root@ty ~]$ postconf -e virtual_uid_maps=static:800


$vi mysql-alias.cf
       user = email
       password = email
       dbname = linux
       table = email
       select_field = username
       where_field = username


$vi mysql-domains.cf
        user = email
        password = email
        dbname = linux
        table = email
        select_field = domain    
        where_field = domain


$vi mysql-mailboxs.cf
        user = email
        password = email
        dbname = linux
        table = email
        select_field = mailbox
        where_field = username


$ postconf -e "virtual_alias_maps =mysql:/etc/postfix/mysql-alias.cf"
$ postconf -e "virtual_mailbox_domains =mysql:/etc/postfix/mysql-domains.cf"
$ postconf -e "virtual_mailbox_maps =mysql:/etc/postfix/mysql-mailboxs.cf"


$ postmap -q "test@ty.com"mysql:/etc/postfix/mysql-alias.cf
$ postmap -q "ty.com"mysql:/etc/postfix/mysql-domains.cf
$ postmap -q "test@ty.com"mysql:/etc/postfix/mysql-mailboxs.cf


现在就可以测试发送mailtest@ty.com,若发送成功则会在/home/email目录下生成ty.com邮件目录


--------------------------------------------------------------


         Postfix只承担邮件系统中的MTA功能,一个完整的邮件系统还需要很多其他的功能,如POP/IMAP服务、Web界面客户端、垃圾邮件过滤等,这些功能Postfix都是无法完成的,需要第三方软件的支持;


下面就开是添加各个软件:


Postfix+mysql+dovecot:


      Dovecot软件是一种在Linux下使用的开源软件,他可以提供POP3IMAP服务。Dovecot将安全作为主要设计目标,速度快、占用内存小、配置简单,可以在各种规模的场合使用。


在实际使用中,常见的邮件系统使PostfixDovecotMysql三者配合搭建的邮件服务器。其中Postfix作为邮件发送服务,Dovecot作为邮件接受服务,而Mysql作为帐号存储服务器。


   $yum install dovecot dovecot-mysql

   $vi dovecot.conf

          listen = *, ::


   $cd /etc/dovecot/conf.d


$vi 10-auth.conf
          !include auth-system.conf.ext
          !include auth-sql.conf.ext


$vi 10-mail.conf
          mail_location = maildir:/home/vemail/%d/%n   //maildir不变,只变后边路径
          first_valid_uid = 888


   $cat auth-sql.conf.ext   //需要有/etc/dovecot/dovecot-sql.conf.ext文件

   $cd /usr/share/doc/dovecot-2.0.9/example-config

   $cp dovecot-sql.conf.ext /etc/dovecot/


$vi dovecot-sql.conf.ext
           driver = mysql
           connect = host=localhost dbname=vmail user=email password=email
           default_pass_scheme = PLAIN
           password_query = \
               SELECT username, domain, password \
               FROM postfix WHERE username = '%u'
           user_query = SELECT mailbox, 888AS uid, 888 AS gid FROMpostfix WHERE
   username = '%u'                                                        //from+表,select+表的内容选项


配置文件修改好后,测试dovecot是否成功


$telnet localhost 110
       Trying ::1...
       Connected to localhost.
       Escape character is '^]'.
       +OK Dovecot ready.
       user test@ty.com
       +OK
       pass test
       +OK Logged in.


若登录出现Loggedin.dovecot成功



---------------------------------------------------------------------------



添加Extmail软件,以web方式操作邮件系统


       Extmail是一个以perl语言编写,面向大容量/ISP级应用,免费的高性能Webmail软件,主要包括ExtMailExtman两个部分的程序套件。ExtMail套件用于提供从浏览器中登录、使用邮件系统Web操作界面,而Extman套件用于提供从浏览器中管理邮件系统的Web操作界面。

       Extmail 套件可以提供给普通邮件用户使用,而Extman套件可以提供给邮件系统管理员使用.


extmail包含两个包:

     extmail-1.2.tar.gz     //为前端邮件工具,配置文件为webmail.cf

     extman-1.1.tar.gz      //为后端管理工具         webman.cf


$mkdir /var/www/extsuite
$tar zxf extmail-1.2.tar.gz -C /var/www/extmail
$tar zxf extman-1.2.tar.gz -C /var/www/extman
$cd extman/docs
$vi init.sql                          //可以修改postmaster和root的密码
$mysql -uroot -pwestos < extmail.sql    //导入数据库
$mysql -uroot -pwestos < init.sql
$cd extmail


$cp mysql_virtual_alias_maps.cf /etc/postfix/mysql-alias.cf
$cp mysql_virtual_domains_maps.cf /etc/postfix/mysql-domains.cf
$cp mysql_virtual_mailbox_maps.cf /etc/postfix/mysql-mailbox.cf


$postmap -q "postmaster@extmail.org"mysql:/etc/postfix/mysql-alias.cf
$postmap -q "postmaster@extmail.org"mysql:/etc/postfix/mysql-mailbox.cf
$postmap -q "extmail.org"mysql:/etc/postfix/mysql-domains.cf


现在就可以测试给postmaster@extmail.orgmail,若/home/vmail/下创建目录成功,则ok


$cp webmail.cf.default webmail.cf
$vi webmail.cf
  SYS_LOG_ON = 0                        //日志功能关闭
  SYS_MAILDIR_BASE = /home/vmail        //为系统用户,邮件存放目录
  SSYS_MYSQL_USER = extmail            //为extmail库的用户,默认extmail.sql生成
  SYS_MYSQL_PASS = extmail


$chown -R vmail.vmail cgi/       //修改cgi目录及其子目录权限,使该用户可以访问


$vi /etc/httpd/conf/httpd.conf   //添加邮件虚拟用户
     NameVirtualHost *:80                       //添加内容INSTALL文件里有,只需根据自己的实际情况稍做改动即可
    <VirtualHost *:80>     
     ServerName mail.example.com
     DocumentRoot /var/www/extsuite/extmail/html/
     ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
     Alias /extmail /var/www/extsuite/extmail/html
     SuexecUserGroup vmail vmail       //此处为系统用户
   </VirtualHost>



$/etc/init.d/httpd restart


使用extmail客户端时,必须先用mail命令发送一封邮件,以激活extmail




wKiom1MV2Zqj-EUFAAES8hHwciU818.jpg

登录extmail


注册新用户使会用到extman后台管理端,所以须配置好extman后才可以注册



会出现的问题

ERROR1

wKiom1MV2ZShKOO7AAFORVRLKZg448.jpg


因为没有配置文件/var/www/extsuite/extmail/webmail.cf,所以出现如此问题,执行


$cp webmail.cf.default webmail.cf即可



ERROR2:

wKiom1MV2ZfhenEPAAHspg-dRWc977.jpg

因为/extmail/cgi/index.cgi权限不符,须执行


$chown -R email.email cgi/    //-R递归,email.email为系统用户,user.group



ERROR3

wKiom1MV2ZnRmHgJAALYv_DHCNU371.jpg

少了perl-CGI包支持

$yum install perl-CGI



ERROR4

wKioL1MXBB-BZt_PAADtcRdH6i0221.jpg


配置文件webmail.cf中日志功能打开(SYS_LOG_ON= 1),但没有指定目录,将其关闭=0即可,或者在cpan.org网站中下载Unix-Syslog包安装后,即可:


$tar -zxf Unix-Syslog-1.1.tar.gz
$cd Unix-Syslog
$perl Makefile.PL                                 //可能会出现如下报错
       Can't locate ExtUtils/MakeMaker.pm in @INC
                                        //缺少perl-ExtUtils-MakeMaker包

  $yum install perl-ExtUtils-MakeMaker

再次执行,如下即可


 $make install


注:mysql里设置的域不以定要和httpd.conf中的虚拟主机的ServerName相同,登录时填写的域须和mysql中一致,http中的虚拟主机domain须加入/etc/hosts里地址解析,否则用extmail客户端登录不上



extman后台管理:


$cd /var/www/extsuite/extman
$cp webman.cf.default webman.cf


将以下两行添加到httpd.conf中(即上一步添加extmail内容内)


  ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi


  Alias /extman /var/www/extsuite/extman/html


重启apache



$vi  webman.cf
        SYS_MAILDIR_BASE = /home/email
        SYS_CRYPT_TYPE = plain

登录extman管理端


wKioL1MXAsCCh54gAAEBIeQaXs0572.jpg

$vim webman.cf
  SYS_CAPTCHA_ON = 1    //验证码开关,此时没有安装验证码包,先关闭(=0)就可以进入extman
  SYS_CAPTCHA_LEN = 6   //控制验证码长度


可能会出现的ERROR:

wKiom1MXAnuAs3MPAADTbPW4FXA117.jpg

解决:

$vi webman.cf
        SYS_SESS_DIR = /tmp/extman/   //去掉后边的extman目录或者在/tmp下mkdir目录,并设置其权限和tmp相同



现在就可以进入extmail后台管理端extman,但是会在System菜单中出现Nosuch file or directory问题,如下

wKioL1MXAoLBB0TqAAGZqb6w9Zg940.jpg

所以需要执行:

$vi /etc/rc.local            
  /var/www/extsuite/extman/daemon/cmdserver &    //添加此行


$/var/www/extsuite/extman/daemon/cmdserver &

wKioL1MXBNaiXWtQAAJc6tPDIQg491.jpg

执行后刷新extman网页,此问题就会消失



想要支持验证码功能,须安装perl-GD-2.45-1.el6.rfx.x86_64包,因为这包存在依赖性,所以选择yum的本地安装


$yum localinstall perl-GD-2.45-1.el6.rfx.x86_64

打开验证码开关,刷新既可以看到验证码


vi webmail.cf
  SYS_SHOW_SIGNUP = 1   //控制自由注册


安装验证码包:

yum localinstall perl-GD-2.45-1.el6.rfx.x86_64.rpm //localinstall安装本地包,并检查依赖性,安装成功后,在webman.cf中打开验证功能,刷新extman网页如下,就可以使用验证码功能,防止恶意登录、注册

wKiom1MXA1GAamTZAAC-kldVw4c718.jpg




开启/var/log/maillog日志记录功能:


vi /var/www/extsuite/extmail/webmail.cf

  SYS_LOG_ON=1        //打开日志功能


刷新extmail前端,会进不去报错没有Unix::syslog,则需要安装之,可以到cpan.org上下载Unix-Syslog-1.1.tar.gz解压安装


$cd Unix-Syslog
$perl Makefile.PL   //会提示缺少安装包
   Can't locate ExtUtils/MakeMaker.pm in @INC
$yum install perl-ExtUtils-MakeMaker             //安装完后继续执行perlMakefile.PL


$perl Makefile.PL                                //若如下显示,则依赖性解决,可以makeinstall

wKiom1MXA-KhRlgeAABhgCzJqsU706.jpg



$make install


extman图形日志的安装:


现在还不支持图形日志,进入extman后端管理web界面下点击GraphLog会出现如下报错

wKiom1MXBaXhTiCUAAIOCsp2s3k996.jpg

需要rrdtool-perl包的支持

yum install rrdtool-perl

安装好后仍不能显示图形,仍需以下步骤



$cd /var/www/extsuite/extman/addon
  $cp -r mailgraph_ext/ /usr/local/
  $cd /usr/local/mailgraph_ext


  $./mailgraph-init start    

wKiom1MXBcahzyD_AAFv3KH-TNg519.jpg


报错,未安装File-Tail-0.99.3.tar.gz


进入解压后的目录,安装


$perl MakeFile.PL
$make
$make install


  $cd /usr/local/mailgraph_ext

  $./mailgraph-init start

wKiom1MXBe3y4IUfAADIsLTTpwM782.jpg

报错,未安装perl-Time-HiRes


$yum install perl-Time-HiRes.x86_64
$./mailgraph-init start


wKioL1MXBfngh92YAAC-jdihDeE803.jpg

无报错,安装完成;

现在刷新extman就可以看到图形日志


vi /etc/rc.local      //加入开机启动

  /usr/local/mailgraph_ext/mailgrahp-init start  //添加



###############################################


基于web页面的邮件系统添加dovecot支持(Postfix+Extmail+Mysql+Dovecot)


基于前边extmaildovecot已安装,现在只需修改dovecot配置即可

$vi/etc/dovecot/conf.d/10-mail.conf
       mail_location =maildir:/home/email/%d/%n/Maildir
       first_valid_uid= 800


$vi/etc/dovecot/dovecot-sql.conf.ext
        connect =host=localhost dbname=extmail user=extmail password=extmail
        defdefault_pass_scheme= PLAIN
        password_query= \
            SELECTusername, domain, password \
            FROM mailboxWHERE username = '%u'
         user_query =SELECT maildir, 800 AS uid, 800 AS gid FROM mailbox WHERE
username ='%u'


dovecot配置好后,启动,测试dovecot(使用的端口110)是否配置正确

wKioL1MXLbTRZ7_PAAEcuBOhrkQ359.jpg

如此,则配置成功


############################################


使Postfix系统支持cyrus-sasl认证功能(SMTP认证机制)


     Postfix服务器没有认证功能,任何一个客户端都可以通过SMTPPostfix服务器进行连接,然后使用RCPT命令要求Postfix服务器转发邮件到收件人所在邮件服务器,也就是说,互联网上的任何计算机,不需要使用帐号就可以通过这台邮件服务器向任何邮箱发送邮件,这无疑为垃圾邮件的发送敞开了大门。

     因此,我们需要在SMTP服务器中使用身份认证机制,只有通过身份认证的用户才能发送SMTP请求服务器发送邮件到目的地。认证帐号一般与接受邮件的帐号相同,可以是操作系统帐号,也可以是虚拟帐号,或者是保存在数据库中的用户帐号。


可以通过CyrusSASLCyrusSimple Authentication and Security Layer)软件包实现。


$yum  install cyrus-sasl-devel cyrus-sasl-plain
$cd  postfix-2.10.2


$make  -f Makefile.init makefiles  'CCARGS=-DHAS_MYSQL \
-I/usr/include/mysql  -DUSE_SASL_AUTH  -DUSE_CYRUS_SASL  \
-I/usr/include/sasl  -DUSE_TLS''AUXLIBS=-L/usr/lib64/mysql  \
-lmysqlclient  -lz  -lm  -L/usr/lib64  -lsasl2  -lssl  -lcrypto'

/postfix-2.10.2/README_FILES/

目录下查看各个模块的安装介绍

           SASL_README

           TLS_README

           MYSQL_README


需要根据情况修改各模块的头文件和库文件目录


查看sasl头文件和库文件目录rpm-ql cyrus-sasl-devel


$makeupgrade
$/etc/init.d/postfixstart


$postconf-e "smtpd_sasl_auth_enable = yes"                     //激活sasl加密,是smtpd不是smtp

   smtpd_sasl_security_options= noanonymous  //限制某些登录方式,此处禁止采用匿名用户登录方式


验证认证方式:

$postconf-a                      //postconf命令用来显示Postfix当前的配置状态,-a选项表示输出当前

cyrus                               支持的SASL认证类型

dovecot


重启服务,测试:

telnetlocalhost 25  //测试显示有字段AUTHLOGIN PLAIN,则开启成功

wKiom1MXLmaQjXEIAAD1cYQolTo463.jpg


        EHLO向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。可以鉴别接收方是否支持ESMTP(扩展SMTP)协议,接收方将返回所有支持的扩展命令。

         ESMTP就是对标准 SMTP协议进行的扩展。它与 SMTP服务的区别仅仅是,使用 SMTP发信不需要验证用户帐户,而用ESMTP 发信时,服务器会要求用户提供用户名和密码以便验证身份。验证之后的邮件发送过程与SMTP 方式没有两样。


$vi/etc/sasl2/smtpd.conf     //在README_FILES/SASL_README文件中Thesql plugin部分定义
        pwcheck_method: auxprop
        auxprop_plugin:sql
        mech_list:PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
        sql_engine:mysql
        sql_hostnames:127.0.0.1
        sql_user:extmail
        sql_passwd:extmail
        sql_database:extmail
        sql_select:SELECT password FROM mailbox WHERE username = '%u@%r'
                //需要根据mysql中的实际设置修改      
                //注意:一定要把例子中@符两边的单引号''去掉,否则会报SQL语法错误



安装cyrus-sasl-sql-2.1.23-13.el6_3.1.x86_64.rpm  使sasl认证信息加入mysql


$yumlocalinstall cyrus-sasl-sql-2.1.23-13.el6_3.1.x86_64.rpm
$perl-MMIME::Base64 -e 'print encode_base64("\0test\@ty.com\0test");'
    AHRlc3RAdHkub3JnAHRlc3Q=

            //括号里边加入数据库extmail里的邮件用户,因为@为特殊字符,需要用\转义,

            //the\0 is a null byte



$telnetlocalhost 25
        Trying127.0.0.1...
        Connectedto localhost.
        Escapecharacter is '^]'.
        220ty2.com ESMTP Postfix
        ehlo  localhost
        250-ty2.com
        250-PIPELINING
        250-SIZE10240000
        250-VRFY
        250-ETRN
        250-AUTHCRAM-MD5 DIGEST-MD5 LOGIN PLAIN
        250-ENHANCEDSTATUSCODES
        250-8BITMIME
        250DSN
        authplain   AHRlc3RAdHkub3JnAHRlc3Q=
        2352.7.0 Authentication successful
        quit
        2212.0.0 Bye
        Connectionclosed by foreign host.    //则user发送mail时的认证加入成功


------------------------------


TLS使邮件传输链路加密


$postconf -e "smtpd_tls_security_level = may"    //激活TLS加密
$postconf -e "smtpd_tls_session_cache_database =btree:/var/lib/postfix/smtpd_scache"
$cd /etc/pki/tls/certs
$make postfix.pem       //制作证书和key
$postconf -e smtpd_tls_cert_file=/etc/pki/tls/certs/postfix.pem  //指定证书和key的目录


$telnetlocalhost 25     //测试显示STARTTLS字符,则ok

wKiom1MXL7aS8He9AAEyyd1Op2s039.jpg


打开thunderbird,在OutgoingServer中编辑,ConnectionsecuritySTARTTLS即可

wKiom1MXMD_hNwopAANStqdh7fE563.jpg


smtpd_client_restrictions= check_client_access hash:/etc/postfix/access //可以设置用此服务器发送邮件的主机(客户端)



dovecot收信:   未加密        加密端口

pop3  110        995(pop3s)

imap4 143        993(imap4s)

postfix发信 SMTP25    


sasl认证是通过25端口给发件用户加一认证,即发mail时需要认证


telnetlocalhost 110  //测试dovecot是否配置成功


telnetlocalhost 25   //测试25端口


tls是加密25端口,使邮件传输过程加密

postconf -a     //postconf命令用来显示Postfix当前的配置状态,-a选项表示输出当前支持的SASL认证类型


##########################################


Postfix邮件系统反垃圾反病毒:


反垃圾:

www.ccert.edu.cn/spam/sa/Chinese_rules.cf


#yuminstall spamassassin      

#cd /usr/share/spamassassin                                  //可以在此目录下存放反垃圾文件的规则

Chinese_rules.cf               //支持中文的反垃圾规则;GB2312 windows下的邮件      

Chinese_rules_UTF-8.cf  //支持中文的反垃圾规则;UTF-8 linux下的邮件

//规则中记录每个关键字的评分,当评分达到设定的门限值,就会自动屏蔽垃圾邮件

/etc/mail/spamassassin/local.cf                //此文件中记录设定的门限值          

required_hits5  //最大分值

report_safe0


rewrite_headerSubject [SPAM]              //标记

#spamd -D                                  //测试规则是否加入成功,须先stopspamassassin

若规则没加成功,注意查看/var/lib/spamassassin目录,清空重试


反病毒:

下载安装包:


       clamav-0.97.6-1.el6.rf.x86_64.rpm

       clamav-db-0.97.6-1.el6.rf.x86_64.rpm

       clamav-milter-0.97.6-1.el6.rf.x86_64.rpm

       clamd-0.97.6-1.el6.rf.x86_64.rpm


需要libmilter.so.1.0支持,所以得安装sendmail-milter,官网rpm.pbone.net


$yumlocalinstall sendmail-milter-8.14.4-8.el6.x86_64.rpm
$yumlocalinstall clam* 
$freshclam          //安装完成后更新病毒库,要保证能够上网


   $/etc/init.d/clamdstart        //启动后可以使用clamdscan命令扫描病毒(这个speed快,但必须启动clamd),也可以用clamscan命令扫描(这个speed慢,不用再启动其他程序)


$clamdscan/tmp                 //扫描/tmp目录下是否有病毒文件
$clamdscan--remove /tmp        //扫描并直接删除病毒文件



-------------------------


安装mail扫描工具MailScanner-4.84.5-3.rpm.tar.gz


$tar -zxf MailScanner-4.84.5-3.rpm.tar.gz
$cd MailScanner-4.84.5-3
$./install.sh      //此时安装会出现error:
        Youneed to install the patch command from your Linux distribution.
        Onceyou have done that, please try running this script again.


   需要rpm-build包的支持

$yum install rpm-build
$./install.sh 
$/etc/init.d/postfix stop


   $chkconfig postfix off      //关闭postfix及开机启动,因为开机自启动MailScanner时会调用postfix启动程序而开启postfix,即就是postfix交由MailScanner控制,并扫描mail


配置MailScannerpostfix


$vi/etc/MailScanner/MailScanner.conf
            Run As User = postfix
            Run As Group = postfix
           IncomingQueue Dir = /var/spool/postfix/hold
           OutgoingQueue Dir = /var/spool/postfix/incoming
           MTA= postfix
           IncomingWork Permissions = 0640
           VirusScanners = clamav
           SpamAssassinUser State Dir = /var/spool/MailScanner/spamassassin


$mkdir /var/spool/MailScanner/spamassassin
$chown -R postfix.postfix /var/spool/MailScanner/spamassassin
$MailScanner --lint          //MailScanner语法测试,第一次安装会出现一些问题


wKioL1MXMfXSgM8qAAO_ioAR-8k211.jpg


四个ERROR,解决如下:


1.unrar未安装,下载rarlinux-3.8.0.tar.gz解压makeinstall


$which unrar     //查看unrar目录
 /usr/local/bin/unrar
$ln -s /usr/local/bin/unrar /usr/bin/    //必须放在/usr/bin/下,所以使用软链接指向其


wKiom1MXMpjhVprsAACB7-lNmeg063.jpg

wKioL1MXMnLhYG3BAACRM6DDRyw043.jpg


2.

ERROR:The "envelope_sender_header" in yourspam.assassin.prefs.conf
ERROR:is not correct, it should match X-yoursite-MailScanner-From

解决:

$vi /etc/MailScanner/spam.assassin.prefs.conf
      envelope_sender_headerX-yoursite-MailScanner-From


3.

config:failed to parse line, skipping, in "/etc/mail/spamassassin/ mailscanner.cf": use_auto_whitelist 0


解决:

$vi /etc/MailScanner/spam.assassin.prefs.conf
        use_auto_whitelist0               //将此行注释



4.

Can not find Socket (/tmp/clamd.socket) Exiting! at /usr/lib/MailScanner/MailScanner/SweepViruses.pm line 3838


查看/etc/clamd.conf中Socket如下:

LocalSocket    /var/run/clamav/clamd.sock


根据这个修改MailScanner.conf里的Socket

   ClamdSocket = /var/run/clamav/clamd.sock