SPF 记录是什么,如何配置

SPF 是防邮件伪造的 DNS 认证机制,通过 TXT 记录声明哪些服务器有权以你的域名发信。本文讲清 SPF 语法机制、配置步骤与验证方法。

最佳实践
应用程序模块协作插画

直接回答:SPF(Sender Policy Framework)是一条发布在域名 DNS 中的 TXT 记录,列出被授权代表该域名发送邮件的服务器。 配置方法是在 DNS 服务商处添加形如 v=spf1 include:_spf.example.com ~all 的 TXT 记录。收信端据此验证 SMTP MAIL FROM(信封发件人)或 HELO/EHLO 身份的来源 IP,不直接验证读者看到的 From 头,最终收拒由接收方策略决定。

SPF 记录语法速览

v=spf1 ip4:203.0.113.10 include:_spf.google.com ~all
片段 含义
v=spf1 版本声明,必须是开头
ip4:203.0.113.10 授权该 IPv4 地址(可用 /24 等网段)
ip6: 授权 IPv6 地址
a 按连接地址族匹配域名 A/AAAA 结果
mx 授权域名 MX 记录指向的服务器
include:域名 引入另一域名的 SPF 策略(第三方邮件服务商常用)
~all 返回 Softfail,接收方按本地策略处理
-all 返回 Fail,是否拒收取决于接收方策略
?all 返回 Neutral,不作来源授权断言(与 None 不同结果)

一条 SPF 记录里可组合多个机制,空格分隔。

配置步骤

1. 盘点发信来源

列出所有以你的域名发信的服务:自有邮件服务器 IP、企业邮箱(Google Workspace、Microsoft 365、腾讯企业邮等)、营销邮件平台、应用服务器(工单/告警通知)。漏掉任何一个都会导致其邮件被判伪造。

2. 检查现有记录

dig TXT example.com | grep spf

一个域名只能有一条 SPF TXT 记录;已有记录则修改合并,不能新增第二条。

3. 编写并添加 TXT 记录

下面仅为语法示例。include 值必须来自实际邮件服务商当前文档,不能把示例服务商加入不使用其服务的域名。

到 DNS 服务商控制台添加:

  • 类型:TXT
  • 主机记录:@(根域名)或对应子域名
  • 值:v=spf1 mx include:spf.mxhichina.com ~all(按你的实际来源写)

4. 验证

dig TXT example.com

或用在线 SPF 校验工具检查语法、DNS 查询次数与覆盖范围。发测试邮件到 Gmail,查看接收方生成的 Authentication-Results/Received-SPF;一次 Pass 只验证此次来源与身份,不代表所有路径已覆盖。

关键限制:10 次 DNS 查询上限

SPF 规范要求一次校验中 include、a、mx、redirect 等机制触发的 需要 DNS 查询的机制/修饰符求值项累计不得超过 10 个,这不是简单统计实际 UDP/TCP DNS 包数;超限返回 PermError。嵌套 include 也要计入。来源多时要:

  • 优先用 ip4:/ip6: 直接列地址(不占查询次数)
  • 合并同一服务商的 include
  • 谨慎评估扁平化:手工固定服务商动态 IP 会过期,应优先采用服务商支持的方案并维护变更

与其他邮件认证机制的关系

SPF 只解决"来源服务器是否合法",完整的反伪造体系还有:

  • DKIM:对邮件内容签名,证明内容未被篡改
  • DMARC:在 SPF/DKIM 基础上定义处置策略并回收报告,结合可见 From 域对齐和报告逐步评估 quarantine/reject,不能不盘点转发与合法来源就收紧

三者配齐才能有效保护域名信誉。

常见问题(FAQ)

Q:~all 和 -all 怎么选?
A:刚配置时用 ~all(软拒绝)观察一段时间,确认所有合法发信来源都被覆盖后再收紧到 -all。一开始就 -all 容易误伤自己漏配的服务。

Q:配了 SPF 为什么邮件还是进垃圾箱?
A:SPF 只是因素之一。检查 DKIM 签名、DMARC 策略、发信 IP 信誉、反向解析(PTR 记录)是否齐全;营销类邮件还与内容、投诉率有关。

Q:子域名的邮件需要单独配 SPF 吗?
A:需要。SPF 不继承——mail.example.com 发信就要在 mail.example.com 上配 TXT 记录;不从某子域发信也应显式配置 v=spf1 -all 防止被滥用。

参考资料

本文依据官方资料核对,未进行现场运行测试;代码与配置示例需结合实际版本、权限和环境验证。

延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台