Postfix进阶管理-MDA部分
前面讲的都属于MTA基于smtp特征的过滤。我们还可以使用增加MDA套件,实现对邮件更深层的过滤和分析。下面针对病毒附件、广告邮件内容过滤进行的配置。
下面的内容包括三部分:
2、clamav套件
3、Spamassassin套件
一、amavisd-new插件
amavisd-new是一个内容过滤插件,其可以在sendmail、postfix作为MDA,配置防病毒软件、防广告邮件系统等对邮件进行更一步的分析。
amavisd-new注意依赖perl对邮件进行分析,所以需要依赖大量的perl模块。
以红旗DC Server 5.0 for x86为例,下面是其需要的所有perl模块和软件包:
1、安装:
2、配置/etc/amavisd.conf
amavisd-new配置的内容比较多,但关键配置主要有:
$MYHOME = '/var/amavis'; #工作目录
$inet_socket_port = 10024; #内部端口
$myhostname = 'dc5test.linuxfly.org'; #以FQDN定义的主机名
$notify_method = 'smtp:[127.0.0.1]:10025'; #外部连接端口
$forward_method = 'smtp:[127.0.0.1]:10025'; #外部连接端口
然后是配置对病毒邮件、垃圾邮件执行的动作:
$final_banned_destiny = D_BOUNCE; #对自定义禁止项目的动作
$final_spam_destiny = D_PASS; #对广告邮件的动作
$final_bad_header_destiny = D_PASS; #对带有不良邮件头的动作
◎相关动作的定义:
D_DISCARD 邮件被丢弃,而且不会告知收件者与寄信人;
D_BOUNCE 邮件不会传给收件人,但无法传递的讯息会告知寄信人;
D_REJECT 邮件不会传给收件者,但寄信人会收到拒绝的讯息。
3、配置/etc/postfix/master.cf
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o smtpd_milters=
-o local_header_rewrite_clients=
-o local_recipient_maps=
-o relay_recipient_maps=
4、配置/etc/postfix/main.cf
最后增加:
分别定义上述master.cf中的两个服务名称。
◎可以从系统中下面的地方获得详细帮助信息:
5、启动服务
状态:
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
amavisd-new内置的接口,几乎支持目前国际上所有的防病毒软件。而且同时可以有主、备两个接口分别配置,也可以与多个防病毒软件连接。
1、以免费的Clamav为例,可以从这里下载:
安装后,修改/etc/clamd.conf文件,并确认下面的路径:
AllowSupplementaryGroups yes
注释3310端口:
◎这部分在新版本的Clamav中是可选的。
启动服务:
2、修改amavisd-new的接口是否已经激活:/etc/amavisd.conf
主病毒引擎:
['ClamAV-clamd',
&ask_daemon, ["CONTSCAN {}n", "/tmp/clamd"],
qr/bOK$/, qr/bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
)
副病毒引擎:
['ClamAV-clamscan', 'clamscan',
"--stdout --no-summary -r --tempdir=$TEMPBASE {}",
[0], qr/:.*sFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
)
◎注意:
上面两个引擎默认都应该是打开的,但其执行效率有点不同。主引擎使用的是unix socks方式,速度和效率比较高;而备引擎是以clamscan命令扫描,效率比较低。建议打开主引擎即可。
3、把clamav用户加入amavis组中
因为clamav使用clamav用户启动服务,而amavis的工作目录是:
drwxr-x--- 8 amavis amavis 4096 8月 30 15:08 /var/amavis/tmp/
如果不修改,则会再邮件日志中报类似的错误:
ERRORn
所以,请执行:
4、增加别名
修改:/etc/alias
生成数据库:
先停止amavisd服务:
查看运行状态:
......
Using primary internal av scanner code for ClamAV-clamd
......
Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan
......
SpamAssasin是最常见得广告信过滤系统,简称SA。其会对邮件进行评估,如果符合某一过滤内容,则计算一个分数,当整个邮件的总分超过我们预设的分数的时候,就把这封邮件作为广告邮件。
而红旗DC Server 5.0上默认已经安装有SA,从上面的命令中也可以看到信息输出:
SpamControl: init_pre_fork done
可以看到,amavisd-new是通过Mail::SpamAssassin模块调用SA的,所以,不需要启动spamassassin服务的,已经启动的可以关闭:
1、修改amavisd-new的默认分数:/etc/amavisd.conf
$sa_tag2_level_deflt = 6.2; #这个是第二允许值,达到后会加上'spam detected'字样
把$sa_tag_level_deflt修改为5比较合适。
这个是SPAM邮件会修改成的邮件头:
2、确认SpamAssassin的配置
根据调用的不同而修改:
report_safe 1
use_bayes 0
auto_learn 0
bayes_auto_expire 1
skip_rbl_checks 1
use_razor2 0
use_dcc 0
use_pyzor 0
dns_available no
3、测试
日志中会显示:
Aug 30 18:49:25 dc5test postfix/smtp[8125]: BB9068F2C: to=<[email protected]>, orig_to=, relay=127.0.0.1[127.0.0.1], delay=50, status=sent (250 Ok: queued as DE9898F3A)
其动作,由amavisd.conf中的$final_spam_destiny决定。
收到的邮件有点像这样:
证明amavisd-new也和SA接上了。
4、增加中文支持
由于以前没有中文的过滤规则集,SpamAssassin对中文邮件过滤的准确性不高。CCERT反垃圾邮件研究小组利用CCERT所掌握的最新和丰富的样本数据,推出了第一个基于SpamAssassin的中文垃圾邮件过滤规则集Chinese_rules.cf。该规则集每周更新一次,时效性非常好。
相关的介绍可以看这里:点击
使用:
# service amavisd restart
因SA由amavisd-new调用的,所以请重启一下amavisd,让其通知SA激活新规则。
CCERT每周更新一次规则集和相应分数,更新使用CCERT反垃圾邮件服务在6个月内处理过的垃圾邮件为样本。经常更新Chinese_rules.cf会使过滤效果更好。
只要把上述下载命令以及重起amavisd-new的命令放在crontab中,并定期运行就可以完成自动更新功能。