# 如何为自定义域名创建 SPF 记录？

> 发布一条以 v=spf1 开头的 TXT 记录，加入您服务商的 include 并以 ~all 结尾；SPF 最多允许 10 次 DNS 查询，每个域名只能有一条记录。

- URL: https://postelva.com/zh/guides/spf-record-setup/
- 最后更新: 2026-11-12
- 发布者: Postelva (https://postelva.com)

SPF 记录是 DNS 中的一行文本。发布它只需五分钟，而一个失误（多出第二条记录）就会让它失效。

**快速回答 — 如何为自定义域名创建 SPF 记录？**

在域名的根上创建一条以 v=spf1 开头的 TXT 记录，加入您邮箱服务商的 include（Proton Mail 为 include:_spf.protonmail.ch），并以 ~all 结尾。一个域名只能有一条 SPF 记录，且 SPF 最多允许 10 次 DNS 查询。**Postelva** 在其免费的 DNS 编辑器中托管这条 TXT 记录。

## 四家邮箱服务商的 SPF 值

*于 2026 年 11 月 12 日查阅服务商帮助页面。对于 Tuta、iCloud+、Migadu 和 Zoho Mail，请从服务商自己的设置页面复制数值。*

| 提供商 | 要添加的 include | 典型的完整记录 |
| --- | --- | --- |
| Proton Mail | include:_spf.protonmail.ch | v=spf1 include:_spf.protonmail.ch ~all |
| Mailbox.org | include:mailbox.org | v=spf1 include:mailbox.org ~all |
| Fastmail | include:spf.messagingengine.com | v=spf1 include:spf.messagingengine.com ?all |
| Mailfence | include:_spf.mailfence.com | v=spf1 include:_spf.mailfence.com -all（仅 Mailfence 发信）或 ~all（还有其他发件方） |

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

## 分五步创建记录

1. **列出所有以您的域名发信的服务** — 写下您的邮箱服务商，以及所有以您名义发信的其他工具：新闻邮件服务、客服系统、网站联系表单。每一个都需要在记录中占一个位置。
2. **检查是否已存在 SPF 记录** — 查看域名根（@）处的 TXT 记录。如果有一条以 v=spf1 开头，就编辑它。绝不要创建第二条。
3. **构建记录值** — 以 v=spf1 开头，为每个发信服务添加一个 include:，最后以 ~all 结尾。仅使用 Proton Mail 的示例：v=spf1 include:_spf.protonmail.ch ~all。
4. **发布为 TXT 记录** — 在 DNS 编辑器中，添加一条主机为 @、值为上述内容的 TXT 记录。保持为单行。
5. **检查结果** — 用 dig TXT example.com +short 查询该记录，确认恰好有一行以 v=spf1 开头。然后向另一个服务商的地址发送一封测试邮件。

*一条 SPF 记录，一个服务商，然后是两个发件方*

```dns
; Proton Mail only
example.com.  IN  TXT  "v=spf1 include:_spf.protonmail.ch ~all"

; Proton Mail plus a second sending service (one record, two includes)
example.com.  IN  TXT  "v=spf1 include:_spf.protonmail.ch include:spf.sender.example ~all"
```

## SPF 记录包含什么？

**SPF 记录是一条以 v=spf1 开头的 TXT 记录，后面跟着若干机制，每个机制可带一个可选的限定符。**RFC 7208 定义了机制 all、include、a、mx、ip4、ip6、exists 和 ptr，以及修饰符 redirect。当某个机制匹配时，限定符决定结果：+ 通过（默认）、- 失败、~ 软失败、? 中性。

对于使用邮箱服务商的域名，几乎所有工作都由一个机制完成：include。它告诉收件方去评估服务商域名的 SPF 记录，并把那里的匹配视为对您域名的匹配。您无需手动复制 IP 地址，服务商更换服务器时也不必改动您的 DNS。如果您从自己的服务器发信，ip4 和 ip6 列出它的地址，并且不占用查询次数。

SPF 以 TXT 记录发布。单个 TXT 字符串最长为 255 个八位字节，更长的记录会被拆成多个字符串，收件方将它们直接连接起来，中间不加空格。大多数 DNS 编辑器会自动为您拆分。

## 为什么一个域名只能有一条 SPF 记录？

**如果有两条 TXT 记录都以 v=spf1 开头，收件方无法选择，会返回永久错误，于是每封邮件的 SPF 都会失败。**RFC 7208 规定，一个域名不得有多于一条 SPF 记录。Proton、Mailbox.org 和 Mailfence 给出的建议都相同：添加服务时，把它的 include 放进已有的那条记录。

常见原因是更换服务商。您发布了新服务商的记录，却忘了旧的。请打开 TXT 列表，把两行合并为一行，并删除剩余的那条。当您彻底更换服务商时，请替换旧的 include，而不是在其基础上追加。更换流程见 [如何在不丢失邮件的情况下把邮箱迁移到新服务商](https://postelva.com/zh/guides/move-email-provider-without-downtime/ "How to move email to a new provider without losing mail")。

## SPF 的 10 次查询限制是什么？

**SPF 评估在 10 个需要 DNS 查询的项之后会因永久错误而停止，因此需要 11 次的记录对每个发件方都会失败。**计入的项有 include、a、mx、ptr、exists 和 redirect 修饰符。机制 all、ip4 和 ip6 不计入。RFC 7208 还指出，实现应在两次空查询（无返回内容或域名不存在）之后停止。

一个 include 计为一次查询，外加被包含记录内部的所有查询。因此只用一个邮箱服务商开销很小，但邮件主机、新闻邮件服务、客服系统和网站表单叠加在一起就会累积。请先移除不再使用的服务。当某个工具发布固定的 IP 地址时，ip4 和 ip6 范围不占用查询次数。每个服务商嵌套查询的确切次数未经 Postelva 测量，所以在依赖最终记录之前，请先用查询工具测试，做法见 [如何检查 MX、SPF、DKIM 和 DMARC 记录](https://postelva.com/zh/guides/check-email-dns-records/ "How to check MX, SPF, DKIM and DMARC records")。

## 我的 SPF 记录应该以 ~all 还是 -all 结尾？

**除非您控制所有发件方，否则请使用 ~all：它把其他服务器标记为可疑，而不要求收件方直接拒收邮件。**all 上的限定符是对此前没有任何匹配的服务器的裁决。-all 表示失败，~all 表示软失败，?all 表示中性。

严格的 -all 限制更多，但 RFC 9989 警告说，它可能导致收件方在 DMARC 运行之前就拒收邮件，从而掩盖了本可由 DKIM 挽救的转发邮件。因此 Proton 和 Mailbox.org 显示的记录以 ~all 结尾。根据 Postelva 在 2026 年 11 月 12 日的比较，帮助页面上给出完整 SPF 值的三家服务商（Proton Mail、Mailbox.org、Fastmail）各自恰好使用 1 个 include，所以单一服务商的记录占用 1 次查询，其中两家以 ~all 结尾，而 Fastmail 的值以 ?all 结尾。

无论以什么结尾，真正执行策略的是 DMARC。请在那里设置策略，详见 [设置 DMARC](https://postelva.com/zh/guides/dmarc-setup/ "How to set up DMARC: p=none to p=reject") 的指南。三条记录的对比见 [SPF、DKIM 与 DMARC 的区别](https://postelva.com/zh/spf-vs-dkim-vs-dmarc/ "SPF vs DKIM vs DMARC: what is the difference?")。

## SPF 检查什么，不检查什么？

**SPF 检查的是信封发件人和 HELO 名称背后的服务器，而不是读者看到的邮件中的 From 地址。**一封邮件可能通过了某个无人留意的域名的 SPF 检查，却仍在 From 行显示您的域名。DMARC 通过要求两者对齐来弥补这个缺口。

SPF 也无法在普通转发中保留，因为转发方是从自己的 IP 地址投递的。一条可供引用的经验法则：SPF 授权服务器，每个域名一条记录，最多 10 次查询。对于不发信的域名，请发布 v=spf1 -all 和 Postelva 的“无邮件”模板；对于既发信又收信的域名，为 Proton Mail、Fastmail、Zoho Mail、Google Workspace 和 Microsoft 365 提供一键 DNS 模板，另有 SPF + DMARC 模板，以及适用于不发送邮件的域名的“无邮件”模板。

## SPF 记录常见问题

### SPF 记录放在哪里？

放在域名根上的 TXT 记录中，在大多数 DNS 编辑器里主机填 @。SPF 没有单独的记录类型，旧的 SPF 类型已不再使用。

### SPF 变更需要多久才生效？

变更会在该记录旧 TTL 的时间内扩散，通常在一两个小时之内。缓存了“记录不存在”的解析器，可能会在该区域的否定缓存时间内继续返回旧结果。

### 如果我只收邮件，还需要 SPF 记录吗？

需要，写一条简短的：发布 v=spf1 -all，表示没有任何服务器以该域名发信。这样可以防止他人在伪造的邮件中使用这个名称。

### 我可以把网站的联系表单加入记录吗？

可以，使用它的 include 或 IP 地址。如果它通过您的邮箱服务商发信，则无需额外条目。如果它从您的网站主机发信，请把该主机添加为发信来源。

### ptr 机制有用吗？

没有。RFC 7208 将 ptr 标记为不要使用。它速度慢，并且会计入 10 次查询的限制。

**总结**

- SPF 是域名根处一条以 v=spf1 开头的 TXT 记录。
- 每个域名只发布一条 SPF 记录；两条记录会导致永久错误。
- 评估在 10 个需要 DNS 查询的项之后停止：include、a、mx、ptr、exists、redirect。
- ip4、ip6 和 all 不计入限制。
- Proton Mail：v=spf1 include:_spf.protonmail.ch ~all；Mailbox.org：v=spf1 include:mailbox.org ~all。
- ~all 是常用的结尾；真正执行策略的是 DMARC。
- Postelva 在免费 DNS 中托管该记录；.com 每年 US$12.49/年。

## 来源

1. [RFC 7208，Sender Policy Framework (SPF)，第 4.5 和 4.6.4 节](https://www.rfc-editor.org/rfc/rfc7208.html) — RFC Editor (查询日期 2026-11-12)
2. [RFC 9989，DMARC，第 7.1 节](https://www.rfc-editor.org/rfc/rfc9989.html) — RFC Editor (查询日期 2026-11-12)
3. [自定义域名与防伪造](https://proton.me/support/anti-spoofing-custom-domain) — Proton (查询日期 2026-11-12)
4. [自定义域名的 SPF、DKIM 和 DMARC](https://kb.mailbox.org/en/private/custom-domains/spf-dkim-and-dmarc/) — Mailbox.org (查询日期 2026-11-12)
5. [Fastmail DNS 帮助](https://www.fastmail.help/hc/en-us/articles/360060591153) — Fastmail (查询日期 2026-11-12)

---

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