DMARC p=none 怎么安全过渡到 p=reject?

DMARC p=none 怎么安全过渡到 p=reject?
三阶段渐进路线(推荐每个阶段 ≥2 周):
阶段一 — p=none(监控期,≥2 周): _dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:dmarc-f@example.com; fo=1"
不拒绝任何邮件,只收集报告。用 DMARC 报告分析工具(如 parsedmarc 开源工具)分析 RUA 聚合报告,确认:(1) 所有合法发信源都能通过 DMARC 对齐;(2) 找出所有未授权但仍在发信的第三方;(3) 排除误伤。
阶段二 — p=quarantine(隔离期,≥2 周): _dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@example.com; ruf=mailto:dmarc-f@example.com; fo=1"
先设置 pct=25(仅 25% 的失败邮件进入隔离),逐步调至 50 → 75 → 100。监控用户投诉量——如果投诉无明显上升,方可进入下一阶段。RFC 7489 定义 pct 为百分比标签,接收方对指定比例的失败邮件执行策略。
阶段三 — p=reject(最终态): _dmarc.example.com. IN TXT "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc@example.com; fo=1"
所有 DMARC 失败的邮件被接收方拒绝(不投递)。同时设置子域策略 sp=reject 保护子域。保持 rua 报告接收,持续监控是否有异常。
关键提醒:从 none 到 reject 不要跳跃式执行。每次策略变更后至少观察 2 周并分析报告,确认无误再推进。如果过程中发现大量合法邮件失败——说明 SPF/DKIM 配置仍有遗漏,回退到上一阶段继续修复,而非强行推进。

📎 RFC 7489 DMARC (Section 6.3 p= / sp= / pct= 标签);RFC 9091 多提供商 DMARC 实践