带有 DMARC 的电子邮件:“失败”,即使它从 https://mxtoolbox.com 验证器通过

Jai*_*oya 2 spf dkim dmarc

我在下面使用 username@example.net 来保护隐私,但这发生在真实的域和电子邮件地址上。

在我们发送的大量电子邮件中,DMARC 失败了:

在此处输入图片说明

在我的 TXT 记录中,这是我对 DMARC 所拥有的:

_dmarc 14400 IN TXT "v=DMARC1; p=none; rua=mailto:username@example.net; sp=none; aspf=r"

当我去https://mxtoolbox.com验证我的 DMARC 记录时,这就是我得到的:

在此处输入图片说明

为什么 DMARC 会失败,即使验证器说它通过了,没有语法错误并且一切正常?请注意 SPF 和 DKIM 如何通过。出于某种我试图理解的原因,问题仅在于 DMARC。

更新 1:我在https://support.google.com/a/answer/2466563?hl=en 上找到了这一段:

对齐模式是指将发件人记录与 SPF 和 DKIM 签名进行比较的精度,这两个可能的值是宽松的或严格的。分别用“r”和“s”表示。简而言之,relaxed 允许部分匹配,例如给定域的子域,而 strict 需要完全匹配。

请注意我_dmarc 14400 IN TXT "v=DMARC1; p=none; rua=mailto:username@example.net; sp=none; aspf=r"如何尝试使用轻松模式。

Syn*_*hro 8

我猜(因为我无法从您发布的内容中得知)这是因为您的 SPF 发件人域未与您的 From 标头“对齐”。您通过 sendgrid 发送,所以我希望 sendgrid 也处理您的退回邮件,因此您可能在收到的消息上有一个返回路径标头,例如:

Return-path: <bounces-username=example.net@sendgrid.net>
Run Code Online (Sandbox Code Playgroud)

但是您的 From 标头在您自己的域中:

From: <username@example.net>
Run Code Online (Sandbox Code Playgroud)

您的SPF可能会允许从sendgrid的IP地址发送(通过include他们的SPF记录的),所以你会得到的说了一通,但显然example.netsendgrid.net是不一样的领域,所以他们不被视为对齐,你会得到一个DMARC失败。

为了使其更加一致aspf=s,您的发件人地址需要是 sendgrid.net 地址(可能不是您想要的),或者您的邮件服务器需要位于 example.net(您可能正在使用 sendgrid,因为您不这样做) t 想运行你自己的邮件服务器),所以你需要恢复到aspf=r(放松)模式。这将允许您在您的 DNS 中创建一个 CNAME,该 CNAME 指向您域中的一个名称,例如mail.example.net在 sendgrid 的邮件服务器上,并且他们需要知道该安排已就位,以便他们可以使用该信封发件人发送消息,并在放松模式,example.net并被mail.example.net认为是对齐的,你会得到一个 DMARC PASS

mxtoolbox 会给你一个通行证,因为你的 DMARC 记录在单独考虑时确实是完全有效的,但除非你发送的邮件上的域实际上对齐,否则它仍然无法工作。