如何让 SPF 对齐通过子域的 DMARC?

如何让 SPF 对齐通过子域的 DMARC?

我有以下 DNS 配置:

$ dig +noall +answer -t txt example.com
example.com.    626 IN  TXT "v=spf1 +a +mx include:sendgrid.net include:_spf.google.com -all"

$ dig +noall +answer -t txt google._domainkey.example.com
google._domainkey.example.com.  600 IN TXT "v=DKIM1; k=rsa; ......"

$ dig +noall +answer -t txt _dmarc.example.com
_dmarc.example.com. 300 IN  TXT "v=DMARC1; p=none; pct=100; rua=mailto:report@email; aspf=s; adkim=r;"

$ dig +noall +answer -t txt em1234.example.com
em1234.example.com. 358 IN  CNAME   1234.xyz.sendgrid.net.
1234.xyz.sendgrid.net. 358 IN   TXT "v=spf1 ip4:149.72.253.162 -all"

当我从发送电子邮件时,example.com一切都很好,DMARC 正在通过。通过 SendGrid 和子域发送的电子邮件也是如此em1234.example.com。但是,报告发送到的报告工具声称 100% SPF 对齐失败,这很奇怪,因为 Gmail 和电子邮件标头的状态恰恰相反:

ARC-Authentication-Results: i=1; mx.google.com;
       dkim=pass [email protected] header.s=s1 header.b=Rv669YsQ;
       spf=pass (google.com: domain of bounces+4746099-3d38-recipient_email=recipient.com@em1234.example.com designates 149.72.253.162 as permitted sender) smtp.mailfrom="bounces+4746099-3d38-recipient_email=recipient.com@em1234.example.com";
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=example.com

所以我在这里遇到的问题是如何使 SendGrid 使用的子域与 SPF 对齐?这是修复此设置的唯一方法aspf还是relaxed还有其他方法?

答案1

在这种情况下,DMARC 通过,但 SPF 对齐失败。由于 sendgrid 代表example.com以下服务器发送电子邮件,因此接收邮件服务器看到的是:

  • mail.FROM 地址(收件人看到并回复的地址)是@example.com
  • Return-Path 标头(投递失败和退回邮件的目的地)是@em1234.example.com

DMARC 检查 3 件事:

  • SPF 能通过吗?
  • DKIM 通过了吗?
  • SPF 或 DKIM 是否对齐?

DMARC 要想通过,这 3 个条件都必须满足。

在您的示例中,您的 DMARC 记录指定了aspf=s(严格)和adkim=r(宽松)。当模式为严格时,mail.FROM 和 Return-Path 中列出的两个域必须完全匹配才能通过对齐。当模式为宽松时,子域也将通过。

由于 SPF 和 DKIM 均通过,并且 DKIM 处于对齐状态(由于采用宽松模式),因此 DMARC 通过。但是,由于 SPF 对齐检查处于严格模式,并且两个域不完全匹配,因此 SPF 对齐失败。

DMARC 仅要求 SPF 对齐或 DKIM 对齐之一通过。因此,通过 DMARC 测试并不意味着 SPF 和 DKIM 都对齐。

您的报告工具是正确的。您需要aspf=r在这种情况下进行更改。或者,您必须让 sendgrid 使用相同的 header.FROM 和 Return-Path 域。但是,第三方电子邮件系统通常会使用主域的子域。因此,除非 sendgrid 有任何其他选项,否则需要将 SPF 对齐检查更改为宽松模式,并且不会对您的组织造成任何风险。

有关 SPF 对齐的更多信息,请参见此处:https://mxtoolbox.com/dmarc/spf/spf-alignment

Sendgrid 文档中具体描述了该问题:https://support.sendgrid.com/hc/en-us/articles/13925777447451-如何使用自定义返回路径与严格 SPF 标识符对齐-DMARC 策略

我注意到 Sendgrid:

  • 支持自定义返回路径
  • 不建议使用严格对齐
  • 使用自定义返回路径意味着您实际上是从@subdomain.example.com 发送邮件,而这通常是我们所不希望的。

相关内容