专项检查 · DMARC DMARC 检查:没通过验证的邮件会怎样?
DMARC 告诉收件方:自称来自你的域名、却没通过 SPF / DKIM 对齐的邮件该怎么处理,以及把相关报告发到哪里。这里找到记录(必要时往上级域名查),逐个校验标签,并把实际生效的策略写清楚。
- 10 种记录类型
- 三家 DNS 对比
- 点了才发请求
检查 DMARC 记录
输入域名(工具会查 _dmarc.<域名>),或者粘贴记录在本地检查。
dns.alidns.com)、Cloudflare(cloudflare-dns.com)或 Google(dns.google)——发送要查的名称和记录类型,不发别的。需要顺着查的检查(SPF 的 include、MX 主机)会把这些名称发给同一个服务。TapCub 的服务器不经手、不保存。子域名、_dmarc.example.com 这类带下划线的名称、中文域名都可以。
在中国大陆网络下,Cloudflare 和 Google 可能连不上,选阿里云一般没问题。
以 v=DMARC1 开头,在浏览器里检查。
概况
- 说明「pct」在 RFC 9989(2026 年 5 月)里已删除。按新规范实现的收件方会忽略它,老的还会读。
- 正常p=quarantine:没通过 DMARC 的邮件应放进垃圾箱。
- 说明示例结果:这是 2026-11-11 制作本页时实际查到的记录。点「查询」获取实时结果。
实际生效的策略
| 项目 | 值 | 含义 |
|---|---|---|
| 本域名(p) | quarantine | 进垃圾箱 |
| 子域名(sp) | reject | 记录里写了 |
| 不存在的子域名(np) | reject | 继承 |
| DKIM 对齐 | r | 宽松:同一个组织域名即可 |
| SPF 对齐 | r | 宽松:同一个组织域名即可 |
标签
| 标签 | 值 | 含义 | 状态 |
|---|---|---|---|
v | DMARC1 | 版本 | 正常 |
p | quarantine | 本域名的策略 | 正常 |
sp | reject | 子域名的策略 | 正常 |
pct | 100 | 策略作用于多少比例的失败邮件 | RFC 9989 已删除 |
rua | mailto:dmarc@github.com | 汇总报告发到哪里 | 正常 |
ruf | mailto:dmarc@github.com | 失败报告发到哪里 | 正常 |
fo | 1 | 什么情况下发失败报告 | 正常 |
v=DMARC1; p=quarantine; sp=reject; pct=100; rua=mailto:dmarc@github.com; ruf=mailto:dmarc@github.com; fo=1分享这组输入:数值写在链接的 # 后面,不会发到服务器。
https://tapcub.com/zh/tools/dns-lookup/dmarc
版本 v1.0更新于 更新记录
DMARC 结果怎么看
「实际生效的策略」表就是收件方会怎么做。
p:策略
none 只收报告,quarantine 放进垃圾箱,reject 直接拒收。多数域名先用 none,看报告,再逐步收紧。QQ 邮箱自己的域名用的是 quarantine。
sp 和 np:子域名
sp 管已存在的子域名,np(RFC 9989 新增)管不存在的名称。不写就继承上一级的策略。
adkim 和 aspf:对齐
宽松(默认)允许「发件人」域名的子域名;严格要求完全一致。改成严格可能让部分第三方代发的邮件失败。
rua:报告
汇总报告列出所有用你的域名发信的服务器以及是否通过。没有 rua 就只能靠猜。报告地址在别的域名时,需要对方发布授权记录。
SPF 或 DKIM 之一在与「发件人」对齐的域名上通过,DMARC 就通过。两者分别用 SPF、DKIM 检查。
三步
免注册,点一下才发请求。
-
1
输入名称
域名、子域名、网址、邮箱地址都行;粘贴 IP 地址就是反查。
-
2
选类型和解析服务
一般先用「常用全部」。改完解析之后选「三家一起对比」,看各家是否已经更新。
-
3
查询、复制
先看概况,再复制或下载区域文件格式的记录。邮件相关的记录用 MX、SPF、DMARC、DKIM 专项检查。
DMARC 规则:旧规范和新规范
RFC 7489(2015)已在 2026 年 5 月被 RFC 9989(策略)、RFC 9990(汇总报告)、RFC 9991(失败报告)取代。各家收件方跟进有快有慢,本工具两套都认。
- 记录放在
_dmarc.<域名>,必须以v=DMARC1开头;有多条时一条都不生效 - 子域名下没有记录时,收件方往上找:RFC 9989 逐级往上查(DNS tree walk),RFC 7489 用组织域名
- RFC 9989 删除了
pct、rf、ri,新增np、psd、t(t=y 大致代替 pct=0) - 缺少 p 时 RFC 9989 按 p=none 处理;RFC 7489 只在 rua 有效时这样处理
- 报告发到别的域名,对方要发布
<你的域名>._report._dmarc.<对方域名>的 TXT v=DMARC1(RFC 7489 §7.1)
| 标签 | 取值 | 默认值 |
|---|---|---|
| p | none / quarantine / reject | 无(RFC 9989 下视为 none) |
| sp / np | none / quarantine / reject | 继承 p(np 继承 sp) |
| adkim / aspf | r / s | r |
| rua / ruf | mailto: 地址,逗号分隔 | 不发报告 |
| fo | 0 / 1 / d / s | 0 |
| pct、rf、ri | RFC 9989 已删除 | 100、afrf、86400 |
| t / psd | y、n / y、n、u | n / u |
github.com 的 DMARC 记录
2026-11-11 查询:v=DMARC1; p=quarantine; sp=reject; pct=100; rua=mailto:dmarc@github.com; ruf=mailto:dmarc@github.com; fo=1
| 标签 | 值 | 解读 |
|---|---|---|
| p | quarantine | 冒用 github.com 的失败邮件进垃圾箱 |
| sp | reject | 子域名更严格:冒用任何子域名的邮件直接拒收 |
| np | (没写) | 继承 sp:reject |
| pct | 100 | 对所有失败邮件生效;按 RFC 9989 这个标签直接被忽略 |
| rua / ruf | mailto:dmarc@github.com | 报告发到自己的域名,不需要授权记录 |
| fo | 1 | SPF 或 DKIM 任一失败就要求发失败报告 |
记录会变。点「查询」看当前值,示例保留查询日期。
DMARC 常见错误
多数时候记录本身没错,是别的地方卡住了。
一直停在 p=none
none 是监测模式。报告显示所有正常发信方都通过后,就该改成 quarantine,再到 reject。
rua 漏写 mailto:
「rua=dmarc@example.com」是无效的,要写成「rua=mailto:dmarc@example.com」。地址无效时收件方什么都不发。
忘了子域名
主策略是 reject,却写了 sp=none,所有子域名都能被冒用。不写 sp 就会继承 p。
统计报表里哪里会碰到域名
DNS 能回答报表背后的几个实际问题:这些流量是谁带来的、爬虫来自哪个网络、统计脚本是怎么加载的。
DMARC 策略一开始该怎么设?
先用 p=none 加一个 rua 地址,能收到报告又不影响投递。把失败的发信方逐个修好,再改成 quarantine、reject。Gmail 和雅虎对批量发件方接受 p=none。
pct 标签还能用吗?
RFC 9989(2026 年 5 月)删除了 pct、rf、ri,按新规范实现的收件方会忽略它们;还在用 RFC 7489 的收件方仍会读 pct。原来用 pct=0 做测试的,新规范里对应的是 t=y。
已经有 SPF 和 DKIM,还要 DMARC 吗?
大多数发件方需要:Gmail 要求每天向 Gmail 发超过 5,000 封的发件方设置 DMARC,雅虎、Outlook.com 也公布了类似规则。而且只有 DMARC 才让收件方针对「发件人」地址处理 SPF、DKIM 失败。
子域名为什么显示的是上级域名的策略?
因为它自己没有记录。收件方会往上级找,用找到的那条记录,并在设了 sp(不存在的名称用 np)时按 sp / np 处理。