Postfix / SpamAssassin 完全忽略 SPF

Postfix / SpamAssassin 完全忽略 SPF

我目前收到了大量来自“我自己”的电子邮件,并且在过滤它们方面遇到了很大的困难。我将 postfix 配置为检查 SPF 并(大概)在失败时拒绝,并且 SpamAssassin 已安装 SPF 过滤器。但没有任何作用。我可以通过 telnet 连接到 postfix,并以明文形式将一条消息从“我自己”发送给我自己,无需身份验证,它就会到达我的收件箱,就像它应该在那里一样。

$ sudo -u spamd -H spamassassin -D --lint 2>&1 | grep SPF
May 24 10:12:04.282 [15707] dbg: diag: [...] module installed: Mail::SPF, version v2.008
May 24 10:12:04.289 [15707] dbg: plugin: loading Mail::SpamAssassin::Plugin::SPF from @INC

master.cf 的相关位

...
smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamassassin
submission inet n       -       n       -       -       smtpd -o content_filter=spamassassin
smtps     inet  n       -       n       -       -       smtpd -o content_filter=spamassassin
policyd-spf unix - n n - - spawn user=nobody argv=/bin/python /usr/libexec/postfix/policyd-spf
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
...

摘录 main.cf

smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    permit_mynetworks,
    check_policy_service unix:private/policyd-spf,
    reject_unauth_destination,
    reject_rhsbl_reverse_client dbl.spamhaus.org,
    reject_rhsbl_helo dbl.spamhaus.org,
    reject_rhsbl_sender dbl.spamhaus.org,
    reject_rbl_client zen.spamhaus.org

我在 DNS 的 txt 记录中定义了 SPF(由于网络限制,我通过 mailjet 中继所有邮件):

example.com. 20020 IN TXT "v=spf1 include:spf.mailjet.com ?all"

编辑:根据建议,我更新了我的 DNS,但确切的行为仍然存在:

example.com. 86400 IN TXT "v=spf1 include:spf.mailjet.com -all"

编辑2:我添加了 DMARC 记录以对 100% 的违规行为实施隔离,但它仍然不起作用:

_DMARC.example.com. 86400 IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; fo=1; pct=100"

我用 mxtoolbox 检查了 SPF 和 DMARC,一切看起来都很好。

但 Postfix 只是直接传递邮件,而 SA 则附加SPF_NEUTRAL在邮件头中。那么......我该如何进行这项工作?如何防止此类垃圾电子邮件的发送?

编辑:我不在乎 SA 或 Postfix 是否阻止它,我只是不希望它出现在我的收件箱中。我想我可能混淆了尝试整合这两种阻塞,这就是它不起作用的原因?或者我的 DNS 配置错误?

编辑3:根据这里的方法2:https://serverfault.com/questions/905591/receiving-spam-from-my-own-email-address-postfix这应该有效吗? (这个问题比较旧,使用了 perl 模块,而我使用的是较新的 python 模块,但我以相同的方式实现了它。)

答案1

我还发现spamassassinSPF 的实现是“奇怪的”......而不是postfix-policyd-spf-perland postfix-policyd-spf-pythonthat Works完美

为此我有

  1. 配置 postfix 首先使用 检查 SPF postfix-policyd-spf-python,阻止所有违反 SPF 规则的内容

  2. 然后使用 spamassassin + 其 SPF 规则检查邮件内容

安装:

apt install postfix-policyd-spf-python

然后编辑文件,在 spamassassin 之前/etc/postfix/main.cf插入spf过滤(在我的例子中是 amavis):

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,  reject_unauth_destination, check_policy_service unix:private/policy-spf, check_policy_service inet:127.0.0.1:10023

并添加以下行/etc/postfix/master.cf

policy-spf  unix  -       n       n       -       -       spawn user=nobody argv=/usr/bin/policyd-spf

然后重新启动 postfix,一切都会按预期工作!

相关内容