域名身份验证 · 2026 年 9 月 21 日
DMARC p=none、quarantine 与 reject 对比:运维人员指南
选择合适的 DMARC 策略,需要在安全性与送达率之间取得平衡。了解从 p=none 到 p=reject 的安全推进路径,在防止伪造的同时不拦截合法邮件。
核心权衡
选择 DMARC 策略,本质上是在可见性与强制执行之间做取舍。p=none 只做监控,不影响投递。p=quarantine 会把可疑邮件放入垃圾邮件文件夹。p=reject 会直接拦截未通过身份验证的邮件。最安全的做法是分阶段推进:先用 none 找出所有合法的发件方,再切换到 quarantine 测试影响,最后升级到 reject,让您的域名全面免受伪造。
为什么策略关系到故障工单队列
作为负责送达率的工程师,您的首要目标是:确保合法的事务性邮件送达收件人,同时阻止攻击者冒用您的域名。如果跳过监控阶段直接上 p=reject,一旦某个被遗忘的遗留系统或第三方营销工具突然发不出邮件,您很可能会迎来一起高优先级故障。
DMARC(Domain-based Message Authentication, Reporting, and Conformance,基于域名的邮件身份验证、报告与一致性)依赖 SPF 和 DKIM 的对齐。如果一封邮件两者都未通过,p= 标签会明确告诉收件服务器应如何处理这封邮件。
三个策略级别
1. p=none(监控模式)
在此模式下,无论身份验证结果如何,收件方都不会对邮件做任何处理。它纯粹用于收集数据。
适用场景:
- 首次配置 DMARC 时。
- 当您不确定有哪些服务在代表您发送邮件时。
- 迁移到新的邮件 API 期间。
记录示例:
v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com;
权衡:对伪造毫无防护。攻击者仍然可以冒用您的域名发信,但您会在 RUA(汇总)报告中看到这些邮件。
2. p=quarantine(软性强制执行)
未通过 DMARC 的邮件会被视为可疑邮件。大多数收件方会将其移入垃圾邮件文件夹。
适用场景:
- 在您分析完
p=none报告,并确认所有合法邮件流都已对齐之后。 - 作为全面拒收之前的安全缓冲。
记录示例:
v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com;
权衡:它会降低伪造邮件的可见度,但无法彻底消除。如果 DKIM 密钥轮换出错,或 SPF 记录触及 10 次 DNS 查询上限,部分合法邮件仍可能进入垃圾邮件文件夹。
3. p=reject(完全强制执行)
这是域名安全的黄金标准。如果邮件未通过 DMARC,收件服务器会直接拒绝接收。
适用场景:
- 当监控显示所有合法流量的对齐率达到 99.9% 时。
- 当域名被伪造的风险大于偶尔投递失败的风险时。
记录示例:
v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com;
权衡:没有任何安全网。如果某个关键系统配置错误,邮件就直接丢失了。您会在 RUA 报告中看到这些失败,但用户永远收不到邮件。
运维推进清单
不要凭感觉调整策略,而要以汇总报告中的数据为依据。每次调整前,请使用 SendHQ 邮件 DNS 检查工具等工具确认记录已正确传播。
阶段 1:摸底(p=none)
- 发布带有
rua地址的p=none。 - 等待 7 到 14 天,以覆盖一个完整业务周期的邮件(包括每周报告)。
- 分析报告中“未对齐”的流量。
- 找出合法的第三方发件方(例如 Zendesk、Salesforce、Shopify)。
- 为每个已识别的发件方配置 DKIM。这是确保对齐最可靠的方式。
阶段 2:测试(p=quarantine)
- 将策略更新为
p=quarantine。 - 留意支持工单中是否出现“我没收到邮件”或“邮件进了垃圾箱”之类的反馈。
- 检查 RUA 报告中是否出现新的失败高峰。
- 如果出现失败,请修复身份验证问题,并在
quarantine上再保持一周。
阶段 3:加固(p=reject)
- 将策略更新为
p=reject。 - 确认最关键的事务性邮件流程(密码重置、发票)仍能正常投递。
- 持续监控。DMARC 不是“配置一次就不用管”的设置。
把邮件当作副作用来处理
对于构建 AI 智能体或自动化工作流的产品工程师来说,发送邮件是一种外部副作用。这意味着它可能因为应用逻辑之外的原因而失败(DNS 问题、DMARC 拒收、速率限制)。
幂等与审批
当 AI 智能体触发邮件时,您必须防止重试期间重复发送。请在 API 请求中使用幂等键,确保一次网络超时不会让客户收到五封相同的邮件。
此外,不应让智能体自主发送高风险邮件。请为智能体生成的内容建立审批队列,确保“From”地址和内容符合您的品牌及身份验证策略。
投递基础设施的成本
选择哪家发信服务商,会影响您管理 DMARC 的方式。有些服务商让 DKIM 配置变得轻而易举,另一些则要求您为每个子域名手动添加 DNS 记录。
评估成本时,要看总体拥有成本。例如,在 Amazon SES 按量计费下(每 1,000 封邮件 0.10 USD),发送 50,000 封邮件大约需要 5 USD;而同样的发送量,按 Postmark 的套餐大约需要 66 USD(10,000 封 15 USD,超出部分每 1,000 封 1.20 到 1.80 USD)。
其他选择还有 Resend,它提供每月 3,000 封邮件的免费额度(每天上限 100 封);Mailgun 起价为每月 15 USD,含 10,000 封邮件。SendGrid 的免费套餐现已改为 60 天试用,Essentials 套餐起价为每月 19.95 USD。
无论选择哪家服务商,DMARC 策略始终是您域名的第一道防线。如果您使用的服务商只支持 SPF,那么在切换到 p=reject 时投递失败的风险更高,因为 SPF 在邮件转发时会失效。DKIM 是在转发过程中保持对齐的唯一方式。
常见失败场景
转发陷阱
用户 A 给用户 B 发了一封邮件,而用户 B 设置了自动转发到用户 C。为了避免被标记为垃圾邮件,转发服务器通常会把信封发件人改成自己的域名,这就破坏了 SPF 对齐。如果您设置了 p=reject 却没有 DKIM 签名,用户 C 将永远看不到这封邮件。
DNS 查询上限
SPF 记录最多只能触发 10 次 DNS 查询。如果您在 SPF 记录中添加了太多服务商,收件方会返回 permerror,进而导致 DMARC 失败。要解决这个问题,可以选用鼓励 DKIM 优先进行身份验证的服务商,或者使用 SPF 扁平化。
“影子 IT”问题
营销团队经常在不告知工程团队的情况下注册新工具(例如一个新的新闻通讯服务)。这些工具以您的域名发信,未通过 DMARC,于是被拒收。这正是 p=none 阶段不可省略的原因。
运维速查表
策略 | 处理方式 | 风险 | 可见性 | 推荐用途
p=none | 无 | 低 | 高 | 摸底与审计
p=quarantine | 垃圾邮件文件夹 | 中 | 高 | 测试与过渡
p=reject | 拦截 | 高 | 中 | 生产环境全面防护
如需深入了解这些记录的技术实现,请参阅我们的 DKIM、SPF 和 DMARC 指南。
手动管理这些记录非常繁琐。SendHQ 通过基于已验证域名的事务性邮件发送,以及确保您的基础设施可供智能体使用的工具,简化了这一切。
了解更多:https://sendhq.cc。