目前我使用 postfix 和 spamass-milter 以及 clamav-milter 作为队列前过滤器,它们都运行良好。我每天根据一组强大的 Spamassassin 规则和贝叶斯数据在我的小型个人邮件服务器上拒绝数百封邮件。
smtpd_milters = unix:/spamass/spamass.sock, unix:/clamav/clamav.sock
milter_default_action = accept
Mar 20 12:00:00 hostname spamd[23017]: spamd: result: Y 14 - {LIST OF SPAMASSASSIN RULES APPLIED} scantime=1.0,size=15000,required_score=5.0, [...]
Mar 20 12:00:01 hostname postfix/cleanup[23375]: BA3D3ADB33F milter-reject: END-OF-MESSAGE from unknown[IP_ADDRESS]: 5.7.1 Blocked by SpamAssassin; from=<[email protected]> [...]
我唯一要抱怨的是,上面第二行日志中的 SMTP 回复显示,在终止 SMTP 会话之前,我因为 Spamassassin/spamass-milter 而拒绝了该邮件。反过来,clamav-milter 阻止了该邮件,并在 SMTP 会话中回复它认为检测到的病毒。
我想要的是仅包含 SMTP 数字状态代码的静默回复。没理由过多地告知垃圾邮件发送者,而且我对 RFC 合规性的理解是,只需要数字状态代码。
我已经寻找并找到了一个可调参数来定制这些回复,既适用于 milter,也适用于一般的 postfix(例如,我的 postfix 也会根据 RBL 信息进行排队前拒绝,等等),但我似乎找不到正确的旋钮(如果有的话)。
有人知道这种定制是否可以实现,如果可以,那么如何进行?
答案1
这可以在 milter 中定制。spamass-milter
版本 0.4.0,2014 年的最新版本添加了两个选项来覆盖其拒绝的消息的响应:
-C 拒绝代码
Mail that is rejected is rejected by default with a 5.7.1 code. This option allows that to be overridden. See also, -R -S option.
-R 拒绝文本
Mail that is rejected is rejected with the message "Blocked by SpamAssassin". This option allows the user to call with a different message, instead. See also, the -C option.
如果您将两者设置为已在其他地方用于不同 EOM 阶段拒绝的值,则可能会使决策来源变得不那么明显。某些 Linux 发行版在配置文件中提供此类选项的参数,请检查相关的启动脚本 ( systemctl cat spamass-milter.service
) 以找到编辑这些参数的最佳位置。
请记住,真正想要调查其邮件被拒绝的原因的发件人仍然可以从其他来源(例如 MDN)收集此类信息。