首先让我先说我知道 DMARC 和 SPF做的不是同一件事。
但是,两者都可以选择告诉接收服务器如何处理未通过 SPF 的邮件(如果是 DMARC,则为 DKIM)。
现在让我们有一个 SPF 设置为v=spf1 include:… ~all
(重要部分是~all
)和 DMARC 设置为的理论案例v=DMARC1; p=reject; rua=…
。
在这种情况下,如果我理解正确的话,我们有一个 SPF 记录告诉“将没有通过 SPF 的邮件标记为垃圾邮件”和一个 DMARC 记录告诉“不接受没有通过 DKIM 或 SPF 的邮件”。
当收到未通过 SPF 的邮件时,哪个指令优先?如果将 DMARC 条目设置为p=none
,答案是否相同?
来自 RFC 7208:
这里的关键词是“不应该”,因此接收服务器可以执行其他策略并且仍然在标准范围内。
来自 RFC 7489:
这里的关键短语是“wishes”和“SHOULD”,因此接收服务器可以强制执行其他策略并在 SMTP 事务期间做他们想做的任何事情,同时仍然在策略范围内。
我最好的猜测是,如果接收方正在执行 DMARC,那么
p=reject
将是最重要的策略。同样来自 RFC 7489 中的同一部分:
这里的关键词是“请求”。在实践中,这几乎总是被视为没有 DMARC 政策,除了发送报告,因为该政策用于测试。
作为旁注,您似乎对 DMARC 正在测试的内容有一个普遍的误解。DMARC 测试对齐,这不是 DKIM 或 SPF 正在测试的内容,因此当 DMARC 失败时,这些测试都可以通过。