spamassassin就不用多介绍了,非常老牌的一款反垃圾邮件工具。

pyzor是一个协作式网络系统,可以使用邮件摘要检测和阻止垃圾邮件,同时它可以做为插件的方式集成到spamassassin来增强SA的反垃圾邮件能力。

在你开始用本文的配置进行尝试的时候务必先按照这篇文章把基础环境搭建好:

> Debian10使用Postfix+Dovecot+RainLoop搭建邮件服务器

这里我选择spamass-milter来和postfix通信,首先安装需要用到的包:

apt -y install spamass-milter pyzor


然后配置postfix:

postconf -e "milter_protocol = 6"
postconf -e "milter_default_action = accept"
postconf -e "smtpd_milters = unix:/spamass/spamass.sock"
postconf -e "non_smtpd_milters = unix:/spamass/spamass.sock"


接着编辑spamass-milter的配置文件:

nano /etc/default/spamass-milter


在OPTIONS后面加上如下配置:

OPTIONS="-u spamass-milter -i 127.0.0.1 -- -s 268435456"


注:–是指把参数传递给spamc,-s是指定最大的邮件扫描大小256MB。

编辑spamassassin的配置文件:

nano /etc/default/spamassassin


启动规则自动更新:

CRON=1


编辑如下配置文件:

nano /etc/spamassassin/local.cf


修改安全报告为0,这样我们可以在邮箱内看到spamassassin标记的原始垃圾邮件而不是只能以附件的方式查看:

report_safe 0


还是在这个配置文件内加入下面的配置来集成pyzor:

use_pyzor 1
pyzor_path /usr/bin/pyzor
pyzor_options --homedir /etc/mail/spamassassin


接下来我们可以把spamassassin标记的垃圾邮件自动移动到垃圾箱,这里需要用到dovecot的sieve插件。

首先编辑20-lmtp.conf:

nano /etc/dovecot/conf.d/20-lmtp.conf


lmtp协议启用sieve插件:

protocol lmtp {
  mail_plugins = $mail_plugins sieve
}


然后编辑90-sieve.conf:

nano /etc/dovecot/conf.d/90-sieve.conf


在里面指定一个sieve脚本文件:

sieve_after = /var/lib/dovecot/sieve/spamfilter.sieve


新建目录以及新建一个sieve脚本文件:

mkdir -p /var/lib/dovecot/sieve
nano /var/lib/dovecot/sieve/spamfilter.sieve


写入如下配置:

require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
    fileinto "Junk";
}


然后再用sievec编译一下,提升一下脚本执行速度:

sievec /var/lib/dovecot/sieve/spamfilter.sieve


脚本所在的目录需要更改所有者为vmail:

chown -R vmail:vmail /var/lib/dovecot/sieve


最后重启spamass-milter/spamassassin/postfix/dovecot:

systemctl restart spamass-milter spamassassin postfix dovecot


现在我们可以测试一下spamassassin和pyzor是否能够正常工作,发一封GTUBE邮件到我们的邮箱内,可以看到直接进了垃圾箱:



然后查看原始内容,可以看到有类似如下图的内容则说明一切正常:



参考文献:

https://wiki.debian.org/DebianSpamAssassin

https://linux.die.net/man/1/spamass-milter