对于 SpamAssassin 3.4.2,我添加了以下配置规则集,local.cf
目的是为失败的 DMARC 测试提供垃圾邮件分数。
DMARC 和 SPF 身份验证结果标头由 创建opendmarc
,DKIM 身份验证结果标头由创建opendkim
。
预期输出是添加到 X-Spam-Report 标头的所有三个标头结果的分数。
实际输出仅针对已在 X-Spam-Report 标头中添加了适当分数的域p=reject
,p=none
但p=quarantine
即使已按预期添加了 DMARC、DKIM 和 SPF Authentication-Results 标头,也不会在 X-Spam-Report 标头中添加任何内容。
添加到/etc/spamassassin/local.cf
:
ifplugin Mail::SpamAssassin::Plugin::AskDNS
askdns __DMARC_POLICY_NONE _dmarc._AUTHORDOMAIN_ TXT /^v=DMARC1;.*\bp=none;/
askdns __DMARC_POLICY_QUAR _dmarc._AUTHORDOMAIN_ TXT /^v=DMARC1;.*\bp=quarantine;/
askdns __DMARC_POLICY_REJECT _dmarc._AUTHORDOMAIN_ TXT /^v=DMARC1;.*\bp=reject;/
meta DMARC_REJECT !(DKIM_VALID_AU || SPF_PASS) && __DMARC_POLICY_REJECT
score DMARC_REJECT 10
meta DMARC_QUAR !(DKIM_VALID_AU || SPF_PASS) && __DMARC_POLICY_QUAR
score DMARC_QUAR 5
meta DMARC_NONE !(DKIM_VALID_AU || SPF_PASS) && __DMARC_POLICY_NONE
score DMARC_NONE 0.1
endif # Mail::SpamAssassin::Plugin::AskDNS
配置有什么问题?
答案1
您所引用的配置是从 Random Thoughts 博客中复制而来的DMARC / Spamassassin / Qmail。如果您出于某种原因无法使用 OpenDMARC,本博客文章将 AskDNS 作为第三个选项。由于您已经在使用 OpenDMARC,因此您可以直接Authentication-Results
在 SpamAssassin 中使用它的标头。修改自戴维·琼斯:
header DMARC_PASS Authentication-Results =~ /mail\.example\.com; dmarc=pass/
describe DMARC_PASS DMARC check passed
score DMARC_PASS -0.1
header DMARC_FAIL Authentication-Results =~ /mail\.example\.com; dmarc=fail/
describe DMARC_FAIL DMARC check failed
score DMARC_FAIL 5.0
header DMARC_NONE Authentication-Results =~ /mail\.example\.com; dmarc=none/
describe DMARC_NONE DMARC check neutral
score DMARC_NONE 0.1
如果您已经实施 OpenDMARC 来连接阶段拒绝对于未通过 DMARC 检查的邮件p=reject
,您的 SpamAssassin 将永远不会看到属于第四类的任何邮件,但为了完整性,这里列出它:
header DMARC_FAIL_REJECT Authentication-Results =~ /mail\.example\.com; dmarc=fail \(p=reject/
describe DMARC_FAIL_REJECT DMARC check failed and the sending domains says to reject this message
score DMARC_FAIL_REJECT 10.0
因为Authentication-Results
标题也可以伪造,我不会给予高消极的仅基于它们得分。因此,这里最有用的规则是DMARC_FAIL
,触发p=quarantine
。在我看来,这也可以给出比本例中更高的分数5.0
,因为决定已经由发送域做出。
如果上述示例配置不合适,这里还有一个额外的配置和评分选项:
header DMARC_PASS Authentication-Results =~ /mail\.example\.com; dmarc=pass/
describe DMARC_PASS DMARC check passed
score DMARC_PASS -0.1
header DMARC_NONE Authentication-Results =~ /mail\.example\.com; dmarc=none/
describe DMARC_NONE DMARC record not found
score DMARC_NONE 0.1
header DMARC_FAIL_NONE Authentication-Results =~ /mail\.example\.com; dmarc=fail \(p=none/
describe DMARC_FAIL_NONE DMARC check failed (p=none)
score DMARC_FAIL_NONE 2.0
header DMARC_FAIL_QUARANTINE Authentication-Results =~ /mail\.example\.com; dmarc=fail \(p=quarantine/
describe DMARC_FAIL_QUARANTINE DMARC check failed (p=quarantine)
score DMARC_FAIL_QUARANTINE 5.0
header DMARC_FAIL_REJECT Authentication-Results =~ /mail\.example\.com; dmarc=fail \(p=reject/
describe DMARC_FAIL_REJECT DMARC check failed (p=reject)
score DMARC_FAIL_REJECT 10.0