DMARC 记录怎么配?p=none、quarantine、reject 三种策略怎么选,用一条 TXT 防邮件冒用
DMARC(Domain-based Message Authentication, Reporting, and Conformance,基于域名的消息认证、报告与一致性)是域名 DNS 里的一条 TXT 记录,用来声明「收件方遇到认证失败的邮件该怎么处理」。它本身属于邮件反垃圾/反冒用配置、不是网络拨测,但因为它和 SPF 记录 一样就写在域名 DNS 里,你可以用宝塔拨测的 DNS 检测工具 选 TXT 记录类型直接查出来,验证配置是否生效——这是它和拨测工具的交集。
宝塔拨测站也提供了 DMARC 记录生成器,填好域名和策略参数就能生成 DMARC TXT 记录。本文解决两个问题:这条记录该怎么读、三种策略(p=none/quarantine/reject)到底怎么选。
DMARC 是 SPF、DKIM 之上的「策略 + 报告」层
要理解 DMARC,先看它补的是哪一环。按 DMARC 标准(RFC 7489):
- SPF 验证的是信封发件人(MAIL FROM)——「发信的 IP 是否被这个域名授权」,但它不检查用户看到的 From 地址。
- DKIM 验证的是邮件签名——「这封邮件是否被某个域名的私钥签过名、内容有没有被改」。
- DMARC 在这两者之上再加两条规则:一是「对齐」,要求用户看到的 From 域名与 SPF/DKIM 认证通过的域名一致;二是「处置 + 报告」,根据对齐结果决定收件方怎么做,并让收件方把结果汇总报告给发件方。
换句话说,SPF 和 DKIM 各自回答了「这封邮件是不是冒名的」,DMARC 把它们的结果统一成一个明确的处理策略,并让发件方看得见结果。
一条 DMARC 记录拆开看:v、p、rua 三段
DMARC 以 TXT 记录发布在域名的 _dmarc 主机上(完整主机名形如 _dmarc.example.com)。按 RFC 7489,核心字段如下:
| 字段 | 含义 |
|---|---|
v=DMARC1 |
版本标识,固定写在开头 |
p= |
处置策略:none / quarantine / reject |
rua= |
聚合报告地址(mailto: 开头),收件方定期把认证结果汇总发到这里 |
ruf= |
取证报告地址,认证失败时发失败邮件样本 |
pct= |
策略生效比例(0–100),只对百分之多少的邮件执行 p 策略 |
ri= |
报告间隔,单位秒,默认 86400(一天) |
p 和 rua 是最关键的两个:p 决定「没通过认证的邮件怎么办」,rua 决定「结果报告发到哪个邮箱」。pct 适合灰度上线——先把策略只对 10% 的邮件生效,观察无误再调到 100。
p=none、quarantine、reject 三种策略怎么选
p 是整条记录最容易配错的地方,三种取值对未通过认证邮件的处置逐级收紧:
p=none(监控):只收集报告、不改变任何邮件的投递行为。适合刚接入 DMARC 的观察期,先看有多少正常邮件会被误判,再决定下一步。p=quarantine(隔离):建议收件方把未通过认证的邮件归入垃圾邮件箱,而不是直接拒收。p=reject(拒绝):建议收件方直接拒收未通过认证的邮件,处置最严。
选择建议:刚配 DMARC 时从 p=none 起步,用 rua 聚合报告观察一段时间;确认没有正常邮件被误判后,再逐步上调到 quarantine、最后到 reject。一步到位上 reject 的风险是——如果 SPF/DKIM 本身没配全,正常邮件也可能被拒收。
三条真实域名的 DMARC 记录实测
用 DNS TXT 查询实测三个域名当前的 DMARC 记录(2026-11-01 查询),都采用 p=quarantine:
| 域名 | DMARC 记录(实测) | 策略 | 报告 |
|---|---|---|---|
bt.cn |
v=DMARC1;p=quarantine;rua=mailto:admin@bt.cn |
quarantine |
仅聚合报告 |
qq.com |
v=DMARC1; p=quarantine; rua=mailto:mailauth-reports@qq.com |
quarantine |
仅聚合报告 |
baidu.com |
v=DMARC1; p=quarantine; rua=mailto:baidu-spammail@baidu.com; ruf=mailto:baidu-spammail@baidu.com |
quarantine |
聚合 + 取证报告 |
三条记录都是典型的「收紧中」形态:策略统一用 quarantine(隔离进垃圾箱),而不是更激进的 reject,并且都配了 rua 聚合报告地址用于持续观察。baidu.com 额外配了 ruf 取证报告地址,说明它还收集认证失败的邮件样本,用于进一步排查。
用宝塔 DMARC 记录生成器生成并发布
宝塔拨测的 DMARC 记录生成器 把上面的字段做成了表单,两步完成:
- 配置 DMARC:填域名、策略类型(none/quarantine/reject)、聚合报告、取证报告、过滤比例、报告间隔等参数,页面实时生成 DMARC TXT 记录(默认示例
v=DMARC1;p=none;ri=86400)。 - 发布到 DNS:把生成的记录添加到域名的 DNS——进 DNS 管理面板,添加一条 TXT 记录,主机填
_dmarc、值填生成的 DMARC 内容。完整主机记录形如_dmarc.example.com。
发布后,用 DNS 检测工具 选 TXT 记录类型、主机填 _dmarc 查一次,确认返回的记录值就是你要的策略和报告地址,才算真正配好。
一句话总结:DMARC 是 SPF、DKIM 之上的「处置 + 报告」层,核心就一件事——用 p 策略告诉收件方「认证失败的邮件怎么办」,用 rua 把结果报告回给你。刚接入先从 p=none 观察,确认无误再上调到 quarantine、reject。
常见问题
DMARC 是什么?和 SPF、DKIM 什么关系?
DMARC(Domain-based Message Authentication, Reporting, and Conformance,基于域名的消息认证、报告与一致性)是建立在 SPF、DKIM 之上的策略层:SPF 验证发信 IP 是否被授权、DKIM 验证邮件签名,DMARC 再要求发件人地址(From)与认证域名「对齐」,并根据对齐结果决定怎么处理、把结果报告给谁。
DMARC 记录里的 p=none、quarantine、reject 分别是什么意思?
p 是 DMARC 的处置策略。none(监控)只发报告、不改变投递;quarantine(隔离)建议把未通过认证的邮件归入垃圾箱;reject(拒绝)建议直接拒收未通过认证的邮件。越往后越严格,但配错策略也可能误伤正常邮件。
一条 DMARC 记录由哪些字段组成?
核心字段是 v(版本,固定 v=DMARC1)、p(策略)、rua(聚合报告地址)、ruf(取证报告地址)、pct(策略生效比例)、ri(报告间隔,默认 86400 秒即一天)。记录以 TXT 类型发布在域名的 _dmarc 主机上。
怎么验证我的 DMARC 记录有没有配好?
DMARC 是 DNS 里的一条 TXT 记录,可以用宝塔拨测的 DNS 检测工具(t.bt.cn/dns/)选 TXT 记录类型、主机填 _dmarc 查出来,看返回的记录值是否和预期一致。
用宝塔 DMARC 记录生成器能做什么?
在 [DMARC 记录生成器](https://t.bt.cn/tools/dmarc.html) 填好域名、策略类型、聚合报告、取证报告、过滤比例等参数,它会实时生成对应的 DMARC TXT 记录,再按提示把这条记录发布到域名的 DNS 即可。