SpamAssassin local.cf DMARC 配置识别拒绝和无,但识别不隔离

SpamAssassin local.cf DMARC 配置识别拒绝和无,但识别不隔离

对于 SpamAssassin 3.4.2,我添加了以下配置规则集,local.cf目的是为失败的 DMARC 测试提供垃圾邮件分数。

DMARC 和 SPF 身份验证结果标头由 创建opendmarc,DKIM 身份验证结果标头由创建opendkim

预期输出是添加到 X-Spam-Report 标头的所有三个标头结果的分数。

实际输出仅针对已在 X-Spam-Report 标头中添加了适当分数的域p=rejectp=nonep=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

相关内容