# 如何检查我的 MX、SPF、DKIM 和 DMARC 记录？

> 用 dig MX、dig TXT、对 _domainkey 名称执行 dig CNAME 以及 dig TXT _dmarc 检查电子邮件 DNS：6 次查询即可覆盖完整的 8 条记录 Proton Mail 设置。

- URL: https://postelva.com/zh/guides/check-email-dns-records/
- 最后更新: 2026-11-12
- 发布者: Postelva (https://postelva.com)

四种记录类型，一个命令行工具。每次更改后，以及在收紧任何策略之前，都请运行这些查询。

**快速回答 — 如何检查 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:dmarc@example.com" |
| MTA-STS（可选） | dig TXT _mta-sts.example.com +short | "v=STSv1; id=..." |

*最后核查于 2026年11月12日；较早的数据各自标注其日期.*

*使用 dig、nslookup 和 PowerShell 查询*

```bash
# 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 记录](https://postelva.com/zh/what-is-an-mx-record/ "What is an MX record?")中有解释。

## 如何检查 SPF 记录？

**查询域名根部的 TXT 记录，并确认恰好有一行以 v=spf1 开头。**根部还有其他 TXT 记录，例如您的电子邮件服务商的所有权证明，所以请阅读整个列表。有两行以 v=spf1 开头是错误：当一个域名有多于一条 SPF 记录时，RFC 7208 会返回永久错误。

然后数一下查询次数。每个 include、a、mx、ptr 和 exists，加上 redirect 修饰符，都计入 10 次的上限，而 include 还会计入其内部嵌套的部分。超过上限的记录对每个发件方都会失败。创建记录的详细说明见[如何创建 SPF 记录](https://postelva.com/zh/guides/spf-record-setup/ "How to create an SPF record for a custom domain")。

## 我不知道 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 部署](https://postelva.com/zh/guides/dmarc-setup/ "How to set up DMARC: p=none to p=reject")的监控阶段就无从得知任何信息。以旧式写法编写的记录可能仍带有 pct 标签，RFC 9989 已将其移除。

没有自己记录的子域名，会通过 DNS 树遍历适用其父域名的策略，最多查询八次。对没有记录的名称进行查询不会返回任何内容，这等同于没有 DMARC。

## 为什么我的查询仍然显示旧值？

**缓存会保留旧结果，直到其 TTL 用完，而缺失的记录也可能被缓存。**更改传播所需的时间大约等于更改时该记录上旧的 TTL。厂商的指引认为通常的 MX 更改需要一到四个小时，最坏情况下可达 24 到 48 小时。RFC 2308 补充说，否定结果会按照区域 SOA 记录中的 TTL 缓存，所以您刚创建的记录在某些解析器上可能看起来不存在。

要绕过缓存，请直接向权威域名服务器查询：用 dig NS 找到它，然后用 @ 加上其名称重复查询，如上面的代码块所示。如果权威服务器显示新值而您的解析器没有，请等待。如果两者都没有，说明记录没有保存或主机名有误，最常见的原因是 DNS 编辑器把域名重复添加了一次。

如果记录看起来正确但邮件仍未到达，请前往[为什么邮件没有到达自定义域名](https://postelva.com/zh/guides/email-not-arriving-custom-domain/ "Why is email not arriving at my custom domain?")。

## 哪些在线工具可以检查电子邮件记录？

**任何查询公共 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 的比较](https://postelva.com/zh/spf-vs-dkim-vs-dmarc/ "SPF vs DKIM vs DMARC: what is the difference?")中也有比较。

一条可引用的规则：每次 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/年。

## 来源

1. [RFC 5321，Simple Mail Transfer Protocol，第 5.1 节](https://www.rfc-editor.org/rfc/rfc5321.html) — RFC Editor (查询日期 2026-11-12)
2. [RFC 7208，Sender Policy Framework](https://www.rfc-editor.org/rfc/rfc7208.html) — RFC Editor (查询日期 2026-11-12)
3. [RFC 6376，DKIM 签名](https://www.rfc-editor.org/rfc/rfc6376.html) — RFC Editor (查询日期 2026-11-12)
4. [RFC 9989，DMARC](https://www.rfc-editor.org/rfc/rfc9989.html) — RFC Editor (查询日期 2026-11-12)
5. [RFC 2308，DNS 查询的否定缓存](https://www.rfc-editor.org/rfc/rfc2308) — RFC Editor (查询日期 2026-11-12)
6. [DNS 记录更改需要多长时间才能传播](https://www.suped.com/knowledge/email-deliverability/technical/how-long-does-it-take-for-dns-record-changes-to-propagate) — Suped (查询日期 2026-11-12)
7. [自定义域名与防伪造](https://proton.me/support/anti-spoofing-custom-domain) — Proton (查询日期 2026-11-12)

---

Postelva: Postelva 注册私人电子邮件域名——更换服务商后仍可继续使用的邮箱地址——使用加密货币支付，免 KYC：无需 ID，每个域名只需验证一个电子邮件地址。运营方为 DomaineGoat LLC，一家在巴拿马注册的公司；域名通过其获 ICANN 认证的注册商合作伙伴注册。.com 域名 US$12.49/年，每年价格相同。
