SpamAssassin的打分标准见http://spamassassin.org/tests.html,默认的标准可能并不适合我们,比如SUBJ_FULL_OF_8BITS有4分多,这个比较容易误伤友军,应该降低该分值。只需在配置文件里加上:
score SUBJ_FULL_OF_8BITS 2
那么SUBJ_FULL_OF_8BITS就只能评2分了。很多垃圾邮件内容都会有免费什么什么的,所以免费可以作为关键字,打上较高分数:
body CH_FREE /免费/
describe CH_FREE Contain Chinese Free
score CH_FREE 3.0
建立Bayes学习知识库:
# cd /var/lib/amavis/.spamassassin
# /usr/local/bin/sa-learn --rebuild -D -p user_prefs
以后spamassassin会自动学习更新。
3、amavis相关配置
修改/etc/amavis/amavisd.conf文件启用ANTI-SPAM功能:
# @bypass_spam_checks_acl = qw( . );
运行amavisd debug,看到有如下的信息,说明ANTI-SPAM的功能已经打开了:
Jul 17 02:35:46 debian amavisd[3082]: ANTI-SPAM code loaded
Jul 17 02:35:46 debian amavisd[3082]: SpamControl: initializing Mail::SpamAssassin
Jul 17 02:35:47 debian amavisd[3082]: SpamControl: done
/etc/amavis/amavisd.conf配置文件里的$final_spam_destiny决定了对垃圾邮件的处理,是拒绝、丢弃还是通过。
也许你还需要好好调整amavisd.conf配置文件,比如发现垃圾邮件和病毒邮件的时候是否给管理员发送提醒邮件等等,每个选项上面都有详细的描述。
在一个十多个邮件用户的真实环境里,spamassassin一天大概能挡下四、五十封垃圾邮件,而且正确率非常高,在98%以上。病毒邮件比较少,但是正确率100%,包括邮件用户给其他人员发木马等软件,都会被挡下来,所以内部邮件用户要发送此类邮件必须使用加密或者压缩后加口令。
四、邮件列表
1、mailman的安装
一直听说mailman不错,于是就选用了,结果问题多多,花了很长时间才解决。
首先在apt安装的时候就有问题,mailman一定要关联apache,由于系统本身有自己编译的apache,所以导致安装不成功。没办法只能手工编译,手工编译得确定有mailman的用户和组,而且需要python2.1-dev,源码包里有INSTALL和README.POSTFIX两个帮助文件一定要好好看看。
# apt-get install python2.1-dev
# wget http://www.XXXX..net/sourceforge/mailman/mailman-2.1.2.tgz
# tar xzf mailman-2.1.2.tgz
# mkdir /usr/local/mailman
# chmod 02775 /usr/local/mailman
# cd mailman-2.1.2
# ./configure --prefix=/usr/local/mailman --with-mail-gid=mailman
安装完后检查权限:
# /usr/local/mailman/bin/check_perm
加上-f参数可以修复。安装很方便,可是和虚拟域的postfix结合还是比较折腾人的,直接使用虚拟域如test.org就会带来麻烦,它会查找虚拟域的用户,所以会报unknown user的错误。
2、mailman的配置
加上mailman的cron:
# cd /usr/local/mailman/cron
# crontab -u mailman crontab.in
把mailman加到启动组里:
# cp scripts/mailman /etc/init.d/mailman
# update-rc.d mailman defaults
修改/usr/local/mailman/Mailman/mm_cfg.py,加上:
DEFAULT_EMAIL_HOST = 'lists.test.org'
MTA = 'Postfix'
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['lists.test.org', 'test.org']
可以试着添加一个邮件列表:
# /usr/local/mailman/bin/newlist mailman