SPF 记录怎么配?一条 TXT 声明谁有权替你发信,邮件少进垃圾箱
SPF(Sender Policy Framework,发件人策略框架)是域名 DNS 里的一条 TXT 记录,用来声明「哪些服务器有权用这个域名发邮件」。它本身属于邮件反垃圾配置、不是网络拨测,但因为它就写在域名 DNS 里,你可以用宝塔拨测的 DNS 检测工具 选 TXT 记录类型直接查出来,验证配置是否生效——这是它和拨测工具的交集。
宝塔拨测站也提供了 SPF 记录生成器,填好授权来源和处理策略就能生成 SPF TXT 记录。本文不讲生成器怎么点,只解决一个问题:这条 TXT 记录到底该怎么读、怎么配。
SPF 记录三段结构怎么读
按 SPF 标准(RFC 7208),一条 SPF 记录可以拆成三段来看:
| 段 | 示例 | 作用 |
|---|---|---|
| 版本 | v=spf1 |
固定前缀,标识这是 SPF 记录 |
| 授权来源 | a、mx、include:域名 |
声明哪些 IP 有权发信 |
| 处理策略 | -all、~all、?all |
对「未授权来源」怎么处理 |
宝塔官方文档对典型写法给出了明确解释:v=spf1 a mx ~all 表示「只有这个域名的 A 记录和 MX 记录中的 IP 地址有权限使用这个域名发送邮件」。也就是说,a 授权域名 A 记录指向的 IP,mx 授权域名 MX 记录(邮件服务器)指向的 IP。
结尾的策略是整条记录最容易配错、也最影响收信的地方:
-all(硬失败 fail):未列在授权来源的 IP 发来的邮件,收件服务器应直接拒绝。~all(软失败 softfail):未授权来源标记为可疑,收件方通常会放行,但更可能进垃圾箱。?all(中性 neutral):不做判断,等同没写策略,起不到拦截冒名邮件的作用。
两条真实域名的 SPF 记录对照
用 DNS TXT 查询实测两个域名当前的 SPF 记录(2026-10-30 查询),一个用严格策略、一个用宽松策略:
| 域名 | SPF 记录(实测) | 策略 |
|---|---|---|
bt.cn |
v=spf1 a mx -all |
-all 严格拒绝 |
qq.com |
v=spf1 include:spf.mail.qq.com ~all |
~all 软失败 |
两条记录刚好演示了两种典型形态:
bt.cn只授权自己的 A、MX 记录 IP,结尾-all严格——不在授权范围内的来源一律拒绝,策略最严。qq.com通过include:spf.mail.qq.com把授权委托给腾讯自己的邮件服务域名的 SPF 记录,结尾~all软失败——这样发信 IP 可以动态调整,代价是未授权来源只是「标记可疑」而非「直接拒绝」。
选择哪种策略取决于你的发信方式:只有自有服务器发信可以用 -all 收紧;接入了第三方邮件服务(如企业邮、营销邮件平台),要先用 include: 引入对方的 SPF,再决定结尾用 -all 还是 ~all。
在宝塔 DNS 里添加 SPF(TXT)记录
按宝塔官方文档,SPF 就是一条 TXT 记录,添加步骤如下:
- 登录堡塔域名管理后台,进入「域名列表」页面,找到要设置的域名,点击「解析」。
- 点击「添加记录」,填写以下字段:
- 主机记录:加在裸域名上就选
@;加在子域名上就填子域名(如www)。 - 记录类型:选
TXT。 - 线路类型:选「默认」,否则会导致部分用户无法解析。
- 记录值:填 SPF 记录,典型写法
v=spf1 a mx ~all。 - MX/权重:不需要填写。
- TTL:缓存时间,默认 600 秒,数值越小修改后各地生效越快。
- 主机记录:加在裸域名上就选
- 点击「确定」完成添加。
添加后,用 DNS 检测工具 选 TXT 记录类型查一次,确认返回的记录值就是你要的授权来源和策略,才算真正配好。
一句话总结:SPF 就是「告诉收件方谁有权替你发信」的一条 TXT 记录,核心在两点——授权来源要写全(自建服务器用 a/mx,接第三方邮件服务用 include:),结尾策略要选对(严格就 -all,宽松就 ~all)。
常见问题
SPF 是什么?为什么邮件会进垃圾箱?
SPF(Sender Policy Framework,发件人策略框架)是域名 DNS 里的一条 TXT 记录,用来声明「哪些服务器有权用这个域名发邮件」。收件服务器收到邮件后会查这条记录,判断发信来源是否被授权——没配或配错时,收件方无法确认邮件是不是冒名发送,就更容易把邮件判成垃圾邮件甚至直接拒收。
SPF 记录里的 v=spf1、a mx、-all 分别是什么意思?
按 SPF 标准(RFC 7208),一条 SPF 记录分三段:v=spf1 是版本标识,固定写在开头;a、mx、include 等是授权来源,声明哪些 IP 有权发信;结尾的 -all、~all、?all 是处理策略,告诉收件方对「未授权来源」怎么处理。
-all 和 ~all 有什么区别?
-all 表示硬失败(fail),未授权来源发的邮件应直接拒绝;~all 表示软失败(softfail),未授权来源标记为可疑、通常仍会放行(多进垃圾箱);?all 表示中性(neutral),不做判断,等同没写策略。
怎么验证我的 SPF 记录有没有配好?
SPF 是 DNS 里的一条 TXT 记录,可以用宝塔拨测的 DNS 检测工具(t.bt.cn/dns/)选 TXT 记录类型查出来,看返回的记录值是否和你预期的授权来源、策略一致。
宝塔面板里怎么加 SPF 记录?
登录堡塔域名管理后台,进入域名列表点「解析」,再点「添加记录」:主机记录选 @(或子域名)、记录类型选 TXT、线路类型选默认、记录值填 SPF 记录(如 v=spf1 a mx ~all)、MX/权重不填、TTL 默认 600 秒,点确定即可。
改了 SPF 记录多久生效?
受 TTL 缓存时间影响,各地 DNS 缓存到期后才会拿到新值。宝塔 DNS 的 TTL 默认 600 秒,数值越小,修改后各地生效越快;但已缓存的解析服务器会按旧 TTL 到期才更新。