Postfix邮件系统的组成及原理
用到的主要协议和软件
1. 邮件用户代理 (MUA)
MUA 是一个邮件系统的客户端程序,它提供了阅读、发送、和接受电子邮件的用户接口,是用户和 MTA 之间的接口。常用软件 Windows 下有 outlook 、 Foxmail等; Linux 下有 Thunderbird 、 Evolution 等 .
MUA 至少具有如下 3 个功能:
a. 撰写邮件
b. 显示邮件
c. 处理邮件
2. 邮件传输代理 (MTA)
MTA 主要用于存储和转发邮件,也可以说是邮件服务器软件的总称。常用软件:windows 下的 exchange,Linux 下 Sendmail 、 Postfix 、 Qmail 等;
MTA 主要功能:
a. 接收和传递由客户端发送的邮件
b. 维护邮件队列,以便客户端不必一直等到邮件真正发送出去
c. 接收客户的邮件,并将邮件放置在缓冲区存储,直到用户连接从而收取邮件
d. 有选择的转发和拒绝转发接收到的、目的地为另一个主机的消息
3. 邮件分发代理 (MDA)
MDA 主要负责将 MTA 接收的邮件传递到收件人的邮箱 (mailbox) 中
4. 电子邮件基本的工作流程
用户 ----MUA---MTA...........MTA---MUA---- 用户
5. 相关协议
1). 简单邮件传输协议 SMTP
监听 25 端口;
邮件的发送过程中有两处要用到这个协议:
a. 发送邮件的 MUA 与 MTA 建立链接并发送邮件
b.MTA 之间的邮件转发
2) 邮件访问协议
a.POP3(Post Office Protocol)
Pop 协议要检测用户的登录名和口令,然后将用户的邮件从服务器移动到用户本地桌面系统的 MUA 中,监听 110 端口
b.IMAP(Internet message access protocol)
IMAP 是 Pop 的替代品,踏出了提供与 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) [email protected]
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 "[email protected]"mysql:/etc/postfix/mysql-alias.cf
#postmap -q "ty.com"mysql:/etc/postfix/mysql-domains.cf
#postmap -q "[email protected]"mysql:/etc/postfix/mysql-mailboxs.cf
现在就可以测试发送 mail 到 [email protected], 若发送成功则会在 /home/email 目录下生成 ty.com 邮件目录
--------------------------------------------------------------
Postfix 只承担邮件系统中的 MTA 功能,一个完整的邮件系统还需要很多其他的功能,如 POP/IMAP 服务、 Web 界面客户端、垃圾邮件过滤等,这些功能 Postfix都是无法完成的,需要第三方软件的支持;
下面就开是添加各个软件:
Postfix+mysql+dovecot:
Dovecot 软件是一种在 Linux 下使用的开源软件,他可以提供 POP3 和 IMAP 服务。 Dovecot 将安全作为主要设计目标,速度快、占用内存小、配置简单,可以在各种规模的场合使用。
在实际使用中,常见的邮件系统使 Postfix 、 Dovecot 和 Mysql 三者配合搭建的邮件服务器。其中 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 [email protected]
+OK
pass test
+OK Logged in.
若登录出现 Loggedin. 则 dovecot 成功
---------------------------------------------------------------------------
添加 Extmail 软件,以 web 方式操作邮件系统
Extmail 是一个以 perl 语言编写,面向大容量 /ISP 级应用,免费的高性能Webmail 软件,主要包括 ExtMail 、 Extman 两个部分的程序套件。 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 "[email protected]"mysql:/etc/postfix/mysql-alias.cf
#postmap -q "[email protected]"mysql:/etc/postfix/mysql-mailbox.cf
#postmap -q "extmail.org"mysql:/etc/postfix/mysql-domains.cf
现在就可以测试给 [email protected] 发 mail ,若 /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
登录 extmail
注册新用户使会用到 extman 后台管理端,所以须配置好 extman 后才可以注册
会出现的问题
ERROR1 :
因为没有配置文件 /var/www/extsuite/extmail/webmail.cf ,所以出现如此问题 , 执行
#cp webmail.cf.default webmail.cf 即可
ERROR2:
因为 /extmail/cgi/index.cgi 权限不符,须执行
#chown -R email.email cgi/ //-R 递归, email.email 为系统用户, user.group
ERROR3 :
少了 perl-CGI 包支持
#yum install perl-CGI
ERROR4 :
配置文件 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 管理端
#vim webman.cf
SYS_CAPTCHA_ON = 1 // 验证码开关,此时没有安装验证码包,先关闭 (=0) 就可以进入 extman
SYS_CAPTCHA_LEN = 6 // 控制验证码长度
可能会出现的 ERROR:
解决: #vi webman.cf
SYS_SESS_DIR = /tmp/extman/ // 去掉后边的 extman 目录或者在 /tmp 下mkdir 目录,并设置其权限和 tmp 相同
现在就可以进入 extmail 后台管理端 extman ,但是会在 System 菜单中出现Nosuch file or directory 问题,如下
所以需要执行 :
#vi /etc/rc.local
/var/www/extsuite/extman/daemon/cmdserver & // 添加此行
#/var/www/extsuite/extman/daemon/cmdserver &
执行后刷新 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 网页如下,就可以使用验证码功能,防止恶意登录、注册
开启 /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
#make install
extman 图形日志的安装:
现在还不支持图形日志,进入 extman 后端管理 web 界面下点击 GraphLog 会出现如下报错
需要 rrdtool-perl 包的支持
安装好后仍不能显示图形,仍需以下步骤
#cd /var/www/extsuite/extman/addon
#cp -r mailgraph_ext/ /usr/local/
#cd /usr/local/mailgraph_ext
#./mailgraph-init start
报错,未安装 File-Tail-0.99.3.tar.gz
包
进入解压后的目录,安装
#perl MakeFile.PL
#make
#make install
#cd /usr/local/mailgraph_ext
#./mailgraph-init start
报错,未安装 perl-Time-HiRes 包
#yum install perl-Time-HiRes.x86_64
#./mailgraph-init start
无报错,安装完成;
现在刷新 extman 就可以看到图形日志
vi /etc/rc.local // 加入开机启动
/usr/local/mailgraph_ext/mailgrahp-init start // 添加
-------------------------------------------------------------------------------------------------------
基于 web 页面的邮件系统添加 dovecot 支持 (Postfix+Extmail+Mysql+Dovecot)
基于前边 extmail 、 dovecot 已安装,现在只需修改 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) 是否配置正确
如此,则配置成功
---------------------------------------------------------------------------------------
使 Postfix 系统支持 cyrus-sasl 认证功能 (SMTP 认证机制 )
Postfix 服务器没有认证功能,任何一个客户端都可以通过 SMTP 与 Postfix 服务器进行连接,然后使用 RCPT 命令要求 Postfix 服务器转发邮件到收件人所在邮件服务器,也就是说,互联网上的任何计算机,不需要使用帐号就可以通过这台邮件服务器向任何邮箱发送邮件,这无疑为垃圾邮件的发送敞开了大门。
因此,我们需要在 SMTP 服务器中使用身份认证机制,只有通过身份认证的用户才能发送 SMTP 请求服务器发送邮件到目的地。认证帐号一般与接受邮件的帐号相同,可以是操作系统帐号,也可以是虚拟帐号,或者是保存在数据库中的用户帐号。
可以通过 CyrusSASL ( CyrusSimple 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 ,则开启成功
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
#makepostfix.pem // 制作证书和 key
#postconf-e smtpd_tls_cert_file=/etc/pki/tls/certs/postfix.pem // 指定证书和 key 的目录
#telnetlocalhost 25 // 测试显示 STARTTLS 字符,则 ok
打开 thunderbird ,在 OutgoingServer 中编辑, Connectionsecurity 为 STARTTLS即可
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 邮件系统反垃圾反病毒:
#yuminstall 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
#tarzxf MailScanner-4.84.5-3.rpm.tar.gz
#cdMailScanner-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 包的支持
#yuminstall rpm-build
#./install.sh
#/etc/init.d/postfixstop
#chkconfigpostfix off // 关闭 postfix 及开机启动,因为开机自启动 MailScanner时会调用 postfix 启动程序而开启 postfix ,即就是 postfix 交由 MailScanner 控制,并扫描 mail
配置 MailScanner 和 postfix
#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 User =
IncomingWork Group =
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 语法测试,第一次安装会出现一些问题
四个ERROR,解决如下:
1.unrar 未安装,下载 rarlinux-3.8.0.tar.gz 解压 makeinstall
#whichunrar // 查看 unrar 目录
/usr/local/bin/unrar
#ln-s /usr/local/bin/unrar /usr/bin/ // 必须放在 /usr/bin/ 下,所以使用软链接指向其
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.Cannotfind 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