spamassassin是在邮件到达邮箱后对邮件内容进行分析判断是不是垃圾邮件,其实在收下邮件之前就能判断。需要的是greylist。
greylist的原理是第一次收邮件的时候reject掉,然后正常的邮件会再次投递,就放行。如果是短时间内重复投递,比如300秒内重复投递,也拒绝。所以不管垃圾邮件是投递一次就不管还是短时间内重复投递,都会被挡住。
启用greylist可以安装postgrey
,修改/etc/postfix/main.cf
,加入
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10030
可以和原有规则混用,比如
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10030, check_policy_service unix:private/policy-spf
所以是在验证接收地址通过以后,验证spf之前。也可以先验证spf,但是我的设置是spf不做任何action,只是给spamassassin提供评分参考,因为有些正常邮件也没设置spf。
postgrey本身不需要设置,默认就很好。
sudo systemctl enable postgrey
sudo systemctl start postgrey
启动服务就可以了。
之前有些担心正常邮件被阻挡,而且因为是在下载邮件之前就拒绝,所以在垃圾邮件目录下甚至整个邮箱里都找不到。但是用过一段时间发现真正被挡的都是很明显的spam,不会丢失真正的邮件。
当然greylist也有局限性。比如有些邮箱不在whitelist里,就需要先reject等待重发,之间会有几分钟的延时,但目测没有超过10分钟的。另外现在的计算机能力提升很多,所以很多发垃圾邮件的都会设置重发,导致greylist无能为力,还是需要靠spamassassin去判断。
不管怎样,多一层防御总是好的。
看完了这 7 篇文章感觉博主好能折腾😂,我最近也有在 VPS 上搭建邮件服务器的想法,不过由于是新手所以感觉还是会比较吃力,比如我今天在虚拟机上安装 Arch Linux 又一次失败了🙈。
@荔枝: 玩vps就是为了折腾嘛 其实也是遇到有需求再去折腾的。linode上安装arch很简单,直接有镜像