我有一个域名,用于通过 Mailchimp 和 Google 发送电子邮件。我为它们都设置了 DKIM,还添加了 DMARC 记录(用于 atm 测试)。我收集 DMARC 故障报告,其中绝大多数报告都是 SPF 故障。
在我看来,SPF 是可以发送电子邮件的 IP/主机的允许列表,而 DKIM 是发件人必须用来签署电子邮件的密钥。在我看来,DKIM 似乎更适合防欺骗。
我搜索过的所有地方都只看到 SPF 对于电子邮件保护至关重要,但我不明白为什么在我的案例中如此。由于设置了 DKIM,因此只有 Mailchimp 和 Google 可以发送电子邮件,而 DMARC 会让收件人拒绝来自其他地方的电子邮件。限制 IP 地址似乎对此没有任何帮助。
在这种情况下,使用 +all 禁用 SPF 可以吗?如果我这样做,在什么情况下我的保护会减少?
答案1
SPF、DKIM 和 DMARC 协同工作,以增加您域名的信任度并将您的电子邮件送达收件箱。但是,需要记住的重要一点是,收件人电子邮件系统可以以任何他们想要的方式处理您的电子邮件。因此,不能保证这些机制中的任何一个或多个都得到正确实施。
SPF 和 DKIM 本身最大的问题是,它们无法确保from
标头经过验证。这是收件人在其邮件客户端中看到的电子邮件地址。因此,它们无法有效确定最终用户看到的内容是否真实。
对于 SPF,它仅检查 SMTP 消息中的标头(又称信封发件人)中指定的域return-path
。这不是最终用户看到的地址。
对于 DKIM,它只关心标头d=
中参数指定的域dkim-signature
。同样,最终用户看不到这一点。
DMARC 修复了这个问题。DMARC 要求“对齐”在任一 SPF 上都是正确的或者DKIM。
- 为了使 SPF 处于“一致”状态,标
from
头中的域必须与标头中的域匹配return-path
。通过第三方批量邮件提供商发送电子邮件时,这种情况很少发生,因为return-path
退回邮件和投诉会发送到提供商跟踪的地址,并且通常是由第三方管理的电子邮件地址。这就是您在 DMARC 报告中看到 SPF 失败的原因。 d=
对于 DKIM,标头字段中指定的域dkim-signature
必须与标头中的域匹配from
。这可以通过确保第三方发件人(即 Mailchimp)已正确配置 DKIM 签名并且您已将适当的 DNS 记录添加到您的域来实现。
此“一致性”检查可确保最终用户在其电子邮件客户端中看到的内容通过 SPF 或 DKIM 进行身份验证。如果通过的 SPF 记录或 DKIM 记录与标from
头(最终用户看到的内容)一致,则该邮件通过 DMARC。否则,它将无法通过 DMARC。
请注意,这些协议仅检查电子邮件地址的“域名”部分。即符号后的部分@
。这些协议均不检查用户名部分的有效性。即符号前的部分@
。
因此,您可以看到 SPF 和 DKIM 都是 DMARC 充分发挥作用的必要条件。这 3 个条件对于邮件的正常流动都是必需的。而且,并非所有收件人电子邮件系统都以相同方式或正确地实施标准。
令系统管理员非常沮丧的是,大量发件人在发送电子邮件时仍未正确配置这 3 个标准。而且,遗憾的是,很少有地方正确解释上述基本原则。
答案2
是的,因为遗憾的是并非所有服务器都会在接收时检查 DKIM/DMARC,但目前 SPF 检查更加集成/部署。
一个例子是 On-Prem Exchange 的服务器。可以使用 AntiSpam 规则集检查 SPF 记录,在更高版本中使用 Edge Transport Role,但 DKIM/DMARC 需要第三方集成才能启用它。
在这种情况下删除您的 SPF 记录可能会使您向处于这种情况的组织发送欺骗电子邮件。
答案3
虽然只有授权服务器才能使用 DKIM 签名,但 DKIM 标准中没有任何内容可以通知接收服务器来自您的域的邮件必须使用 DKIM 签名。从邮件标准的角度来看,接收服务器无法辨别授权的发送服务器和未经授权的发送服务器。
最终出现的问题是,对于不使用 DMARC 测试的接收服务器,您的域名很有可能被列入黑名单,因为垃圾邮件发送者会发现欺骗是小菜一碟。