DMARC 从 p=none 升级到 p=reject 通常需要 8-9 周,核心前提是 SPF 和 DKIM 全量覆盖所有合法发件源。本文以 MDaemon 为例,给出分阶段推进路线、报告监测要点和常见踩坑修复方法。
默认的起始策略——也是许多采用自建邮箱方案的企业始终未能跨越的策略——就是 p=none。这是一种安全的观察模式。它向外界宣告:我正在监控,但请不要因我的域名认证问题而拒绝或隔离任何邮件。这种模式原本应当是暂时的,然而许多自建邮件服务器的管理员要么忘记了修改,要么出于担心业务邮件被误拦截而拒绝跨出这一步。
本文将详细探讨在 MDaemon 自建邮箱系统中,如何将 DMARC 从 p=none 逐步安全过渡到 p=reject:它究竟能为企业自建邮箱提供什么保护、如何分阶段实现这一目标,以及如何规避那些让大多数管理员产生恐惧并使其永远停留在 p=none 状态的坑。
作为参考,一个完整的 DMARC TXT 记录如下所示: v=DMARC1; p=reject; rua=mailto:dmarc-rua@yourcompany.com; ruf=mailto:dmarc-ruf@yourcompany.com; fo=1; adkim=r; aspf=r; pct=100; sp=reject
在 p=none 阶段,策略本身不强制执行任何拦截操作,主要用于收集报告。接收方服务器会将汇总的 XML 报告发送到您在 rua= 标签中指定的地址。通过这些不断流入的报告,您可以清楚了解哪些服务器正在以您的企业域名名义发送邮件。这对于提高自建邮箱的出站可见性大有裨益,但它本身并不能提供任何实质性的企业邮箱防钓鱼保护。
以下是解析后的汇总报告视图示例:

处于 p=none 策略下的自建邮箱域名,对直接针对该域名的伪造欺骗(Direct-domain spoofing)毫无防御能力。如果黑客使用 ceo@yourcompany.com 的身份向您的客户、合作伙伴和员工发送诈骗邮件,这些邮件将直接进入对方的收件箱,就如同您的 DMARC 记录根本不存在一样。在默认情况下,接收方服务器检查您的记录后看到 p=none,便仅记录下认证失败日志,随后照常投递。
将策略升级为 p=quarantine,是告知外界将认证失败的邮件投递至垃圾邮件箱;而升级为 p=reject,则是告知外界在 SMTP 传输阶段就直接拒绝接收这些邮件。这两种策略都能在主流邮件服务商端有效拦截直接域名欺骗。只要您提前做好准备工作,自建邮箱升级策略并不会带来业务中断的风险。
升级 DMARC 策略前,必须确保所有合法发件源均已通过 SPF 和 DKIM 认证,否则将导致业务邮件被误拦截。
每一个合法的发送源都必须经过认证: 梳理您域名下所有发送邮件的渠道。除了 MDaemon 自建邮件服务器,还包括营销平台、CRM 系统、账单系统、工单系统、日历邀请以及任何会发送通知的内部应用。每一个发送源都需要通过 MDaemon(在此情况下 SPF 和 DKIM 会自然生效)发送,或者通过配置了您的 DKIM 密钥并已列入您 SPF 记录中的第三方平台发送。
必须为出站邮件开启 DKIM 签名: 在 MDaemon 中路径为:安全 (Security) → 发件人身份验证 (Sender Authentication) → DKIM 签名 (DKIM Signing)。为域名启用该功能,生成或导入选择器(Selector)密钥,在 DNS 中发布对应的 _domainkey TXT 记录,并发送测试邮件检查邮件头以验证签名是否有效。
您的 SPF 记录必须包含所有合法的发件源: 这是大多数自建邮箱团队发现隐患的地方。您的 SPF 记录应列出经授权代表您域名发送邮件的所有 IP、主机名或第三方 include: 指令。请使用公开的 SPF 查询工具,确认您的记录未超出 DMARC 所限制的 10 次 DNS 查询上限。一旦超出,将引发 SPF 永久性失败(Permanent Error)。
确保正在收集汇总(rua)报告: 没有数据支撑,就无法对自建邮箱策略进行硬化加固。在您的 DMARC 记录中发布 rua=mailto:... 地址,注册使用免费或商业的 DMARC 报告分析工具(如 EasyDMARC、dmarcian 等),并在做出首次策略调整前积累至少两到四周的数据
在满足上述前提条件后,策略调整应当是一系列微小、可逆的步骤,而非一次性完成变更。标准的推进流程如下:
p=none → p=quarantine pct=10 → pct=25 → pct=50 → pct=100 → p=reject pct=10 → pct=50 → pct=100
pct= 标签告知接收方将您的策略应用到指定比例的认证失败邮件上,其余邮件则按降级策略处理。在隔离策略中设置 pct=10 意味着:“将 10% 认证失败的邮件放入垃圾邮件箱,其余正常投递”。这允许您在采样观察真实环境表现的同时,暴露可能存在的未知的隐患。
以下为建议的推进节奏,每一步仅需修改 DNS 中的 DMARC TXT 记录:
| 阶段 | DNS 记录变更 | 观察时长 | 关注指标 |
|---|---|---|---|
| 第 0 周 | 保持 p=none,确认 rua 报告正常 | 至少 2 周 | 所有合法源均通过认证 |
| 第 2 周 | p=quarantine; pct=10 | 1 周 | 无误拦截报告 |
| 第 3 周 | pct=25 | 1 周 | 同上 |
| 第 4 周 | pct=50 | 1 周 | 同上 |
| 第 5-6 周 | pct=100 | 2 周 | 连续两周干净报告 |
| 第 7 周 | p=reject; pct=10 | 1 周 | 无退信投诉 |
| 第 8-9 周 | pct=50 → pct=100 | 各 1 周 | 全量 reject 稳定 |
总计用时:大约需要两个月审慎且每一步均可逆的操作。请在这一阶段保持耐心,这有助于避免自建邮箱出现关键业务邮件丢失的问题。
每次调整策略后,通过 DMARC 汇总报告确认无合法邮件被误拦截,是推进下一步的前提。在每个阶段,请重点观察:
合法发送源未能通过对齐(Alignment): 某营销平台使用发件人地址 From: @yourcompany.com 发送邮件,但使用 @platform.com 进行签名,此时虽然能够通过 DKIM 验证,但无法通过 DMARC 的域名对齐。解决办法是启用该平台的“品牌化 DKIM(Branded DKIM)”功能,使其签名使用您的企业域名选择器。
邮件转发和邮件列表破坏了 SPF: 当邮件被转发时,中继服务器的 IP 会变成新的发送方 IP,这将与您的 SPF 记录不匹配。只要 DKIM 签名和对齐无误,DMARC 依然可以通过——这也是为什么 DKIM 是自建邮箱认证中更为关键的一环。
未知来源的高发送量邮件: 这才是您真正要排查的对象:某个无法识别的发送 IP 正在声称代表您的域名发送邮件。有时这是一个遗忘的内部脚本;有时是未经报备的第三方 SaaS 服务;偶尔也可能是真正的钓鱼攻击者。
绝大多数“DMARC 弄塌了我们的邮件系统”的故事,都可以追溯到以下几个常见错误:
遗忘了账单系统。发票、对账单等财务邮件往往来自多年未动的系统,它们通常是最后一个配置 DKIM 签名的系统。
遗忘了技术支持/工单系统。 工单回复邮件通常由服务台平台发出,发件人地址为 support@yourcompany.com,但未配置 DKIM 对齐。
日历邀请。 企业内部的自动化监控脚本或日历系统发送邀请的方式,可能默认无法实现域名对齐。
内部自动化邮件。 脚本、监控系统、应用程序通知。这些通常直接通过 MDaemon 发送,一般不会有问题,但切记要进行验证,不要凭空假设。
对首次失败反应过度。 当您收紧策略后,一旦有单个用户报告邮件丢失,管理员往往倾向于将整个策略撤回至 p=none。正确的做法是定位具体发送源并修复它,然后继续推进。
以下是在 MDaemon 内部从上到下的具体配置步骤:
为出站邮件启用 DKIM 签名: 打开路径“安全 (Security) → 发件人身份验证 (Sender Authentication) → DKIM 签名 (DKIM Signing)”。生成一个选择器,设置规范化算法( relaxed/relaxed 是安全的默认选择),并配置签名规则。
在 DNS 中发布公钥: 在 DNS 中创建 <selector>._domainkey.yourdomain.com TXT 记录并写入 DKIM 公钥。通过发送测试邮件确认 DKIM 签名通过。
发布或更新您的 SPF 记录: 确保包含每一个合法的发件源(包括 MDaemon 服务器 IP 及第三方服务),并确保未超出 10 次 DNS 查询限制。
发布初始 DMARC 记录: 设置策略为 p=none; rua=mailto:dmarc-reports@yourdomain.com。
配置报告查看工具: 在 DMARC 分析工具中观察汇总报告至少两周。
开始分阶段推广: 每一个阶段的操作,都只需要对 DNS 中的 DMARC TXT 记录进行一次简单修改。
达到 p=reject 后,企业邮箱域名伪造防护已生效,但仍需定期维护以应对发件源变更。任何未经授权的发件人使用 From: @yourcompany.com 发送的邮件,都将被 Gmail、Microsoft 365、Yahoo 等主流服务商直接拒绝或隔离。
虽然显示名称欺骗(Display-name spoofing)和仿冒相似域名(Lookalike domains)是 DMARC 无法完全解决的其他问题,但直接针对您企业域名的域名伪造防护已被成功封堵。配合正确的邮件认证配置与 DMARC 运维策略,自建邮箱可以建立可靠的邮件安全防线。
DMARC p=none 和 p=reject 有什么区别?
p=none 仅监控不拦截,认证失败的邮件正常投递;p=reject 要求接收方在 SMTP 阶段直接拒绝认证失败的邮件,是最严格的防护策略。
自建邮箱如何验证 DMARC 记录已正确发布?
使用命令 nslookup -type=TXT _dmarc.yourdomain.com 查询 DNS 记录,确认策略值(p=)和报告地址(rua/ruf)配置正确。
MDaemon 中如何查看 DMARC 认证失败日志?
在 MDaemon 日志菜单中查看 SMTP 会话日志,搜索 "DMARC" 或 "FAIL" 关键词,即可定位认证失败的具体邮件记录。
DMARC 策略从 p=none 过渡到 p=reject 需要多长时间?
建议至少安排 8-9 周时间,分阶段逐步收紧策略,每步观察一周以上,确保没有合法邮件被误拦截。
自建邮箱设置 DMARC p=reject 后正常邮件被退信,怎么排查处理?
检查 DMARC 汇总报告,定位未通过认证的合法发送源,补齐 SPF 和 DKIM 配置,修复后重新推进策略。
系列文章导航:
如果您已完成 SPF/DKIM 部署,希望由专业团队审核 DMARC 推进方案、降低策略收紧期间的误拦截风险,云璨作为 MDaemon 中国区授权服务商,可提供 SPF/DKIM/DMARC 全链路配置审计与分阶段推进指导服务。欢迎联系云璨获取技术支持。