← 返回博客

DMARC 记录配置:从 p=none 到 p=reject

分三阶段配置 DMARC:先用 p=none 收集报告,升级到 pct=10 的 p=quarantine,最终达到 p=reject。涵盖记录语法、对齐模式、阅读汇总报告,以及四个最常见错误。

更新于 2026年10月15日
DMARC 记录配置:从 p=none 到 p=reject

DMARC(基于域的消息认证、报告和一致性)建立在 SPF 和 DKIM 之上。它告诉接收方服务器对认证失败的邮件应该怎么处理,同时会向你发送报告,让你看清谁在以你的域名发信。

一句话版本

在 DNS 里加一条 DMARC 记录,先设 p=none,这样可以观察情况而不拦截任何邮件。读一两周的报告,再收紧策略。

记录语法

一条最简 DMARC 记录长这样:

_dmarc.yourdomain.com.  TXT  "v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com"

重要标签说明:

标签作用
v=DMARC1必填,固定值
p=域名策略:none、quarantine 或 reject
sp=子域策略,不填则继承 p
rua=汇总报告收件地址(每日摘要)
ruf=取证报告收件地址(单条失败样本,很少用)
pct=策略生效比例,1–100,默认 100
adkim=DKIM 对齐方式:r(宽松,默认)或 s(严格)
aspf=SPF 对齐方式:r(宽松,默认)或 s(严格)

宽松对齐意味着子域也算数:在宽松模式下,mail.yourdomain.com 可以满足 yourdomain.com 的 DMARC 要求。严格模式要求域名完全一致。

三阶段策略

第一阶段 — p=none:仅监控,认证失败的邮件照常投递,你会收到汇总报告。用这个阶段建立基线,找出所有合法的发信来源。

第二阶段 — p=quarantine:认证失败的邮件进垃圾箱。建议先用 pct=10 起步,观察几天报告后再逐步提高比例。只有在汇总报告里看不到合法邮件的异常失败后,再进入这一阶段。

第三阶段 — p=reject:认证失败的邮件在网关直接丢弃。这是最终目标,达到后伪造你的域名发信将变得非常困难。

第二阶段 25% 比例的记录示例:

"v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@yourdomain.com"

阅读汇总报告

报告通常以 XML 附件形式发送,每个发信方每天一份,大致内容如下:

  • 来源 IP:203.0.113.4,142 封邮件
  • SPF 结果:通过
  • DKIM 结果:失败
  • DMARC 处置:none(策略为 p=none)

大多数邮件服务商都有 DMARC 报告查看工具,可以把 XML 转成可读的表格。Google Postmaster Tools、MXToolbox、dmarcian 都有免费版。

常见错误

不先监控就直接设 p=reject。 如果某个第三方服务(比如通讯工具或工单系统)用你的域名发信但没有 DKIM,这些邮件会被直接丢弃。永远从 p=none 开始,给它两周时间。

不填 rua 地址。 没有报告就是在盲飞。即使是 p=none 阶段也要填,否则一无所知。

忘记子域。 如果设了 p=reject 但没有 sp= 标签,子域默认继承 p=reject——这通常是你想要的,但值得了解。如果有子域在发合法邮件,在切换到 reject 之前先在报告里确认一下。

pct 没有调回 100 就忘了。 默认值是 100,只有想要更低比例才需要写 pct=。留着 pct=10 忘记改,意味着 90% 的失败邮件仍能通过。

检查你的记录

dig TXT _dmarc.yourdomain.com +short

应该能看到你的记录原文输出。如果什么都没有,检查记录是否加了 _dmarc. 前缀并保存在了正确的域名下。

延伸阅读:邮件认证机制详解、一键 DNS 配置、邮件为什么进垃圾箱?