邮件送达率与 DNS

DMARC fail:检查对齐、头字段与 SPF

作者:Alexey Bulygin
通过头字段、SPF、DKIM 和 From 域名调查 DMARC 失败

DMARC fail表示邮件没有提供通过认证且与可见 From 对齐的结果。p=reject 请求拒收,p=quarantine 请求按可疑邮件处理,最终由接收方决定。应检查配置,同时不排除其他投递问题。整体架构见小企业商务邮箱

常见原因包括对齐错误、转发后的 SPF 失败、不完整的 DKIM 签名和 SPF 求值问题。不要猜测并随意增加 DNS,而应读取可信接收结果、比较域名,再修复相关发信渠道。

下面提供初步判断表、排查流程和可能的 DNS 修改示例。后续配置变更仍需重新测试,不能保证一次修改永久解决所有问题。

DMARC fail 实际是什么意思

邮件没有任何一项结果同时满足认证通过和可见 From 对齐。SPF 或 DKIM 可以对其他域名通过,却未提供 DMARC 的通过依据。

规范要求 SPF 或 DKIM 通过并且与 RFC5322 From 域名对齐。只需一项同时满足。参见 RFC 7489

情况SPFDKIMDMARC可能含义检查方向
两项认证均未通过FailFailFail可能是配置错误、转发修改或未经授权发送核对来源、IP、DNS 和签名
缺少对齐Pass, unalignedPass, unalignedFail认证通过,但未与 From 对齐配置适用 Return-Path 和对齐 DKIM
转发邮件FailPass, alignedPass可能是正常转发结果确认有效且对齐的签名
转发且发生修改FailFailFail修改是可能原因之一测试签名与转发;ARC 可支持本地例外决定
SPF PermErrorPermErrorFail or noneFail可能超出求值限制或语法无效检查 SPF 求值及真实发信域名

步骤 1:先检查对齐

正常邮件可能通过服务商自身域名的认证,却没有与你的 From 对齐。关键不只是认证通过,而是哪个域名通过。

示例:

Header From:support@yourdomain.com
Return-Path:bounces.vendor.net
DKIM:d=vendor.net

这里可能出现 spf=passdkim=pass,却未通过 DMARC,因为 vendor.net 不与 yourdomain.com 对齐。

营销、CRM、客服和备用 SMTP 应检查域名认证、自定义 Return-Path 或退信域名,以及对齐 DKIM。链接品牌和跟踪域名本身不改变信封发件人。

以下仅演示 DNS 结构,具体值与启用步骤由服务商提供:

Type: CNAME
Host: bounces
Value: yourvendor.example.net

Type: CNAME
Host: k1._domainkey
Value: dkim1.yourvendor.example.net

Type: CNAME
Host: k2._domainkey
Value: dkim2.yourvendor.example.net

TrekMail 可在添加域名时显示相关 DNS 要求。参见添加域名必需 DNS 记录。实际 MAILFROM 域名应维护一条有效 SPF。发布 DNS 不会自动启用第三方配置,之后仍需真实邮件测试。

步骤 2:分析接收方头字段

打开失败邮件的完整头字段,找到 Authentication-ResultsReturn-Path 和 DKIM d= 域名。应使用可信接收服务器自行生成的结果,而非发件人任意附带的头字段。

检查清单:

  1. 确定可见 From 域名。
  2. 检查 SPF 结果。
  3. 确定 SPF 实际验证的域名。
  4. 检查 DKIM 结果。
  5. 确定有效 DKIM 签名的域名。
  6. 将通过认证的机制与 From 比较。

缺少对齐的示例:

Authentication-Results: mx.google.com;
  dkim=pass header.i=@sendgrid.net header.s=s1;
  spf=pass smtp.mailfrom=bounces.sendgrid.net;
  dmarc=fail (p=reject) header.from=yourdomain.com

注意以下区别:

SPF 验证的是信封中所示的 sendgrid.net 子域名。header.i 中的 sendgrid.net 不能单独决定 DMARC 使用的 DKIM 域名,还需检查有效签名的 d=。所示结果没有与 From yourdomain.com 对齐且通过的机制。

应逐发信渠道重复验证。事务邮件成功不说明营销、客服或转发别名也成功。可参考设置自有域名邮箱

步骤 3:单独调查转发

转发使用新的服务器,该 IP 可能未获得原始信封域名的授权,导致 SPF 失败。但有效且对齐的 DKIM 若得到保留,DMARC 仍可以通过。

Google Groups、Outlook 转发、校友或大学转发都可能出现这种情况。仅 SPF 失败不足以判断 DMARC;通过且对齐的 DKIM 已经足够。

RFC 7960 介绍相关问题:保留原信封地址时,SPF 可能在新服务器失败。改写信封,例如 SRS,可以支持新地址的 SPF,却不保证原始 From 对齐。参见 RFC 7960

随意增加 SPF 授权不是通用修复,应考虑:

  1. 为支持的出站渠道启用 DKIM 并测试。
  2. 没有经验证的严格需求时,考虑宽松对齐。
  3. 调查邮件列表的签名变化和具体接收决定。

重要转发场景可参考邮件转发设置将域名邮件转发到 Gmail。TrekMail 可按套餐提供转发和托管 SMTP。签名覆盖的数据必须在规范化规则下得到保留,不保证所有转发路径都成功。

步骤 4:检查 SPF PermError

超过十个需要 DNS 的机制与修饰符的求值限制,或配置无效,都可能导致 SPF PermError。计算包括嵌套求值,不是全部 DNS 数据包数量。通过且对齐的 DKIM 仍可能让 DMARC 通过。

多个服务商的 SPF 示例:

v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:mail.zendesk.com include:sendgrid.net include:servers.mcsv.net ~all

只看这一行不能确认是否超限。嵌套 include 和 redirect 的求值也需要检查。

先查询 DNS 值:

dig +short txt yourdomain.com
nslookup -type=txt yourdomain.com

这些查询不直接证明 PermError。应分析完整求值并核对实际发信来源。六个月前停止使用的服务,也只能在确认不存在低频发送后移除。可考虑的独立域名包括:

marketing.yourdomain.com
support.yourdomain.com
billing.yourdomain.com

独立 SPF 预算只有在发信方实际使用相应信封域名、完成启用后才生效。仅发布子域名不会分拆预算,还需验证 From 对齐。

TrekMail 文档说明了避免重复 SPF 和合并适用值的方法,参见检查 DNS 状态

步骤 5:区分可能的滥用与配置错误

不是每个 DMARC fail 都需要放行。部分邮件未经授权,另一些来自正常但配置错误、或修改了邮件的转发路径。

未知 IP 和两项认证失败不足以证明冒用。应核对清单、日志和转发,不要盲目放行或封锁。p=quarantinep=reject 提出处理请求,而非保证具体动作。

实际排查顺序:

  1. 根据系统清单、日志与转发路径核实未知来源。
  2. 对正常发件人确认实际平台及域名启用。
  3. 缺少签名时,配置支持的 DKIM 并测试。
  4. 无法提供通过且对齐的机制时,规划适用且已启用的发信域名,或受控替代服务。

认证或对齐失败时,策略可以请求限制,接收方也可采用本地例外,包括参考 ARC。但这不把原始 DMARC fail 变成 pass。适用条件见 Google 发件人指南

不同发信系统的常见问题

系统类型只能提供线索,不能替代具体邮件验证。

系统可能原因可验证的修复
营销平台DKIM 或 Return-Path 未对齐启用自有 DKIM 与适用 Return-Path
客服或 CRM外部 From 或认证域名完成域名认证并测试
邮箱转发新服务器上的 SPF 失败确认有效对齐 DKIM,并检查整个路径
邮件列表转发改变签名数据分析变化,ARC 可帮助本地接收决定
混合企业邮件SPF 求值限制或未完成 DNS核对发信需求并配置实际信封域名
多域名代理机构客户配置不一致统一有记录的 DNS 模板与发信测试

管理大量域名的 DMARC 问题

客户环境可能同时使用 Google Workspace、cPanel、SendGrid 和 Gmail 转发。缺少当前配置记录,会增加定位认证错误的难度。

统一 DNS、迁移、域名状态、转发和 SMTP 的工作流程可以帮助管理,但每条真实发信路径仍需独立验证。

TrekMail 付费套餐的价格参考为每月 $3.50 起,并提供 14 天试用。自备 SMTP 有免费选项。按套餐可以集中域名、IMAP 邮箱、catch-all、转发、IMAP 导入和 API。应核对当前功能和限制;IMAP 复制邮件,不替代 MX 或应用切换。

管理客户域名时,可用多域名邮箱托管所介绍的流程,与当前 DNS 维护方式比较。

DMARC fail 简明检查清单

先选择失败邮件,确定通过认证的域名并与 From 比较,再检查缺少的具体机制,而不只是面板状态。

  1. 读取接收服务器可信的 Authentication-Results
  2. 检查 SPF 是否通过及实际信封域名。
  3. 检查 DKIM 是否通过及其 d=
  4. 将通过的认证与 Header From 比较。
  5. 缺少通过且对齐的结果时,修复对应域名配置。
  6. 转发场景测试签名有效性与签名数据保留。
  7. 分析 SPF 求值和当前服务商,只有完成信封配置启用才拆分域名。
  8. 调查未知来源的 SPF、DKIM 失败,不自动判为冒用。

核心是可核查的结果和受控变更。

总结:修复具体失败环节

DMARC fail可能来自对齐错误、转发修改、SPF PermError 或未经授权发送。仅凭结果无法证明哪一种原因。

验证相关环节并测试有针对性的修改。TrekMail 可按套餐提供共享存储、固定费用多域名托管、Nano 自备 SMTP、托管 SMTP 和 IMAP 导入。参见 TrekMailhttps://trekmail.net/pricing,同时核对当前条件与限制。

分享这篇文章

我们使用运行和保护 TrekMail 所必需的技术。确认后还会允许《Cookie 政策》中所述的有限分析和广告衡量。

登录 TrekMail

访问您的控制面板、邮箱和 DNS。

12 个字符 两次密码一致

重置邮件已发送

如果该邮箱对应已有账户,我们已发送密码重置说明。

继续即表示您同意 TrekMail 的 服务条款隐私政策.