快速回答
如何检查 MX、SPF、DKIM 和 DMARC 记录?
用 dig MX yourdomain +short 检查 MX,用 dig TXT yourdomain +short 检查 SPF,用 dig CNAME selector._domainkey.yourdomain +short 检查 DKIM,用 dig TXT _dmarc.yourdomain +short 检查 DMARC。在 Windows 上,nslookup 可以完成同样的事。在 Postelva 域名上完整设置 Proton Mail,8 条记录只需 6 次查询。
哪个查询检查哪条记录
| 记录 | dig 命令 | 正确的结果是什么样子 |
|---|---|---|
| MX | dig MX example.com +short | 10 mail.protonmail.ch. 和 20 mailsec.protonmail.ch.(Proton Mail) |
| SPF | dig TXT example.com +short | 一行以 v=spf1 开头,例如 "v=spf1 include:_spf.protonmail.ch ~all" |
| DKIM | dig CNAME fm1._domainkey.example.com +short | 服务商的目标,例如 fm1.example.com.dkim.fmhosted.com.(Fastmail) |
| DMARC | dig TXT _dmarc.example.com +short | 一行以 v=DMARC1 开头,例如 "v=DMARC1; p=none; rua=mailto:[email protected]" |
| MTA-STS(可选) | dig TXT _mta-sts.example.com +short | "v=STSv1; id=..." |
最后核查于 ;较早的数据各自标注其日期
# dig (macOS, Linux, Windows with BIND tools)
dig MX example.com +short
dig TXT example.com +short
dig CNAME protonmail._domainkey.example.com +short
dig TXT _dmarc.example.com +short
# Ask the authoritative nameserver directly, skipping caches
dig NS example.com +short
dig MX example.com +short @ns1.your-nameserver.example
# nslookup (Windows, macOS, Linux)
nslookup -type=MX example.com
nslookup -type=TXT _dmarc.example.com
# PowerShell
Resolve-DnsName -Type MX example.com
Resolve-DnsName -Type TXT _dmarc.example.com如何检查 MX 记录?
运行 dig MX,加上您的域名和 +short,并将优先级和主机名与服务商给您的值进行比较。结果每条记录一行:优先级、一个空格和主机。对于 Proton Mail,您应看到 10 mail.protonmail.ch. 和 20 mailsec.protonmail.ch.;对于 Fastmail,应看到 10 in1-smtp.messagingengine.com. 和 20 in2-smtp.messagingengine.com.;对于 Mailbox.org,应看到四个 mxext 主机。
这里会出现两个问题。列表中仍保留着前一个服务商的记录,会使投递变得不可预测,所以请删除它。而空结果表示没有 MX:发件方随后会回退到域名的地址记录,如 RFC 5321 所述。每一行的含义在什么是 MX 记录中有解释。
如何检查 SPF 记录?
查询域名根部的 TXT 记录,并确认恰好有一行以 v=spf1 开头。根部还有其他 TXT 记录,例如您的电子邮件服务商的所有权证明,所以请阅读整个列表。有两行以 v=spf1 开头是错误:当一个域名有多于一条 SPF 记录时,RFC 7208 会返回永久错误。
然后数一下查询次数。每个 include、a、mx、ptr 和 exists,加上 redirect 修饰符,都计入 10 次的上限,而 include 还会计入其内部嵌套的部分。超过上限的记录对每个发件方都会失败。创建记录的详细说明见如何创建 SPF 记录。
我不知道 selector 时如何检查 DKIM?
使用您的服务商的 selector:您无法从 DNS 列出 selector,所以请从服务商的 DKIM 界面获取。DNS 不允许列出 _domainkey 下的名称。Proton Mail 的 selector 是 protonmail、protonmail2 和 protonmail3,Fastmail 是 fm1、fm2 和 fm3,Mailbox.org 是 MBO0001 到 MBO0004。
查询的名称是 selector._domainkey.yourdomain。像这三家一样使用 CNAME 记录的服务商,会返回指向其自身主机的 CNAME。直接发布密钥的服务商,会返回包含 v=DKIM1 和 p=(后接公钥)的 TXT 记录。空的 p= 表示密钥已被吊销。最有力的测试是一封真实的邮件,因为存在的记录仍可能未被使用:向另一个服务商发送一封邮件,并在完整邮件头中查看 dkim=pass。
如何检查 DMARC 记录?
查询 _dmarc.yourdomain 的 TXT 记录,并确认有一行以 v=DMARC1 开头并包含 p= 策略。如果缺少 p,接收方会将策略视为 none。如果该行没有 rua,就不会生成汇总报告,DMARC 部署的监控阶段就无从得知任何信息。以旧式写法编写的记录可能仍带有 pct 标签,RFC 9989 已将其移除。
没有自己记录的子域名,会通过 DNS 树遍历适用其父域名的策略,最多查询八次。对没有记录的名称进行查询不会返回任何内容,这等同于没有 DMARC。
为什么我的查询仍然显示旧值?
缓存会保留旧结果,直到其 TTL 用完,而缺失的记录也可能被缓存。更改传播所需的时间大约等于更改时该记录上旧的 TTL。厂商的指引认为通常的 MX 更改需要一到四个小时,最坏情况下可达 24 到 48 小时。RFC 2308 补充说,否定结果会按照区域 SOA 记录中的 TTL 缓存,所以您刚创建的记录在某些解析器上可能看起来不存在。
要绕过缓存,请直接向权威域名服务器查询:用 dig NS 找到它,然后用 @ 加上其名称重复查询,如上面的代码块所示。如果权威服务器显示新值而您的解析器没有,请等待。如果两者都没有,说明记录没有保存或主机名有误,最常见的原因是 DNS 编辑器把域名重复添加了一次。
如果记录看起来正确但邮件仍未到达,请前往为什么邮件没有到达自定义域名。
哪些在线工具可以检查电子邮件记录?
任何查询公共 DNS 的在线 DNS 查询或邮件认证检查工具,给出的结果都与 dig 相同,只是显示更友好。请使用显示原始记录文本的工具,以便将其与服务商的值逐字符比较。不要把私人数据粘贴进去:它只需要域名。
根据 Postelva 在 2026 年 11 月 12 日的统计,完整的 Proton Mail 设置需要 8 条记录(1 条验证 TXT、2 条 MX、1 条 SPF、3 条 DKIM、1 条 DMARC)和 6 次查询,因为两条 MX 记录共用一次查询,验证记录和 SPF 记录共用根部 TXT 的查询。请把这六条命令保存下来,每次更改后重新运行。相同的记录在 SPF、DKIM 与 DMARC 的比较中也有比较。
一条可引用的规则:每次 DNS 更改后,查询这四种记录类型并发送一封测试邮件;只有查询结果和邮件一致时,记录才算正确。
检查电子邮件记录:常见问题
为什么 dig 输出的 TXT 值带引号?
引号标出了 TXT 字符串的边界。长于 255 个字符的值会显示为多个带引号的字符串,接收方会将它们直接连接起来,中间没有空格。
dig 能在 Windows 上使用吗?
只有安装 BIND 工具后才可以。Windows 内置了 nslookup,PowerShell 有 Resolve-DnsName,它们读取的是同样的记录。
如何查看一封真实邮件的 SPF、DKIM 和 DMARC 结果?
打开收到邮件的完整邮件头。接收服务器会把它的 SPF、DKIM 和 DMARC 结果记录在邮件头中,通常是 pass 或 fail。
在判定某条记录有误之前,我应该等待多久?
至少等待旧记录的 TTL 时间,然后查询权威域名服务器。如果该服务器显示的值有误,就需要更正记录。
我可以检查不属于我的域名的记录吗?
可以。DNS 记录是公开的,查询只需要名称。
总结
- MX:dig MX example.com +short;将优先级和主机与您的服务商比较。
- SPF:dig TXT example.com +short;恰好一行以 v=spf1 开头,最多 10 次查询。
- DKIM:dig CNAME selector._domainkey.example.com +short,selector 来自您的服务商。
- DMARC:dig TXT _dmarc.example.com +short;一行以 v=DMARC1 开头,含 p= 和 rua=。
- 完整的 Proton Mail 设置是 8 条记录和 6 次查询。
- 询问权威域名服务器以绕过缓存;更改传播大约需要旧的 TTL 时间。
- Postelva 在免费 DNS 中托管这些记录;.com 每年 US$12.49/年。
来源 (7)
- RFC 5321,Simple Mail Transfer Protocol,第 5.1 节 — RFC Editor (查询日期 2026-11-12)
- RFC 7208,Sender Policy Framework — RFC Editor (查询日期 2026-11-12)
- RFC 6376,DKIM 签名 — RFC Editor (查询日期 2026-11-12)
- RFC 9989,DMARC — RFC Editor (查询日期 2026-11-12)
- RFC 2308,DNS 查询的否定缓存 — RFC Editor (查询日期 2026-11-12)
- DNS 记录更改需要多长时间才能传播 — Suped (查询日期 2026-11-12)
- 自定义域名与防伪造 — Proton (查询日期 2026-11-12)