什么是 DMARC?
DMARC (Domain-based Message Authentication, Reporting & Conformance) 定义在 RFC 7489 中。它通过增加两项关键能力建立在 SPF 和 DKIM 之上:一项告知接收者如何处理未经认证邮件的策略(监控、隔离或拒绝),以及一种向您发送关于谁在代表您的域名发送邮件以及是否通过认证的 XML 报告机制。
至关重要的是,DMARC 引入了**对齐 (alignment)** 的概念 — 电子邮件可见的“From”头中的域名必须与 SPF 或 DKIM 认证的域名匹配。这可以防止攻击者在伪造您的 From 域名的同时,利用另一个域名通过 SPF/DKIM 验证。
为什么需要 DMARC?
1头部 From 保护
单独的 SPF 和 DKIM 无法保护可见的 From 地址 — DMARC 通过对齐补齐了这一漏洞
2强制执行策略
您可以决定失败邮件的去向:监控、进入垃圾邮件文件夹或直接拒绝
3汇总报告
每日 XML 报告 (RUA) 显示每个使用您域名发送邮件的 IP 及其通过/失败率
4取证报告
失败报告 (RUF) 会发送单个失败邮件的脱敏副本以供调查
5Google/Yahoo 强制要求
自 2024 年 2 月起,批量发送者必须至少拥有 p=none 的 DMARC 策略才能送达 Gmail/Yahoo 收件箱
6品牌保护
防止冒充您品牌的网络钓鱼邮件到达您的客户手中
DMARC 工作原理 — 步骤详解
您在 `_dmarc.yourdomain.com` 发布一条 DMARC TXT 记录,指定策略和报告接收地址。
邮件到达接收服务器。服务器独立运行 SPF 和 DKIM 检查。
进行 DMARC 对齐测试:经过认证的域名(来自 SPF 或 DKIM)是否与邮件头 From 域名匹配?
如果 SPF+对齐 或 DKIM+对齐 中任意一个通过,则该邮件的 DMARC 验证通过。
如果两者都失败,接收者将应用您的策略:none(照常投递)、quarantine(放入垃圾邮件箱)或 reject(退信)。
接收者收集您域名的认证数据,并将汇总报告 (RUA) 或取证报告 (RUF) 发送到您指定的地址。
DMARC 记录语法
v=DMARC1; p=quarantine; pct=100; sp=reject;
rua=mailto:dmarc-reports@yourdomain.com;
ruf=mailto:dmarc-failures@yourdomain.com;
adkim=s; aspf=s; fo=1标签参考
v=DMARC1— 版本,必需项p=— 针对域名的策略sp=— 针对子域的策略pct=— 策略适用的失败邮件百分比rua=— 汇总报告接收者 (mailto:)ruf=— 取证报告接收者 (mailto:)adkim=— DKIM 对齐模式:r=宽松, s=严格aspf=— SPF 对齐模式:r=宽松, s=严格fo=— 失败报告选项 (0,1,d,s)ri=— 报告间隔秒数 (默认 86400)三种 DMARC 策略
DMARC 对齐详解
常见的 DMARC 失败及修复方法
SPF 对齐失败
信封 From (return-path) 域名与头部 From 域名不匹配 — 使用自有 return-path 的邮件服务商 (ESP) 常见此问题
DKIM 对齐失败
DKIM 签名中的 d= 域名与可见的 From 域名不匹配 — 配置您的 ESP 以使用您的域名进行签名
缺少 RUA 地址
没有 rua=,您将无法获得报告和可见性 — 务必至少包含一个报告地址
子域名未覆盖
添加 sp=reject 将策略扩展到子域名,或者为每个子域名发布独立的 DMARC 记录
常见问题解答
DMARC 是一种关键的邮件认证协议,与 SPF 和 DKIM 配合工作。它向接收服务器提供指令,说明如何处理未通过认证的邮件,防止未经授权的第三方冒用您的域名。
它验证您的记录是否正确配置在 DNS 中。通过确保政策处于活动状态(最终移至 p=reject),您向 Google 等邮件服务商表明您的邮件是合法的,从而降低被标记为垃圾邮件的风险。
'quarantine'(隔离)将未通过验证的邮件送入垃圾邮件箱,而 'reject'(拒绝)则直接退回邮件。两者都是保护域名的重要步骤。
对齐是指 'From' 标题中的域名与 SPF 或 DKIM 验证的域名匹配。如果没有正确对齐,即使验证通过也可能导致 DMARC 失败。
检查 'rua' 标签是否包含有效的 mailto: 地址。同时确认 DNS 记录已生效且目标邮箱支持接收此类报告。
取决于 DNS 的 TTL 设置。通常在几分钟到 48 小时内全球生效。