SPF(发件人政策框架)

电子邮件和安全
电子邮件身份验证协议,指定哪些邮件服务器被授权代表域名发送电子邮件。
← 返回词汇表

什么是SPF?

SPF(发件人政策框架)是一种电子邮件身份验证方法,允许域所有者指定哪些邮件服务器被授权代表他们发送电子邮件。接收邮件服务器检查SPF记录以验证来自域的传入电子邮件来自授权来源。

为什么SPF很重要

没有SPF,任何人都可以发送看起来来自你的域的电子邮件(欺骗)。SPF帮助:

SPF的工作原理

1. 域所有者发布 DNS中的SPF记录(TXT)

2. 发件人的邮件服务器发送声称来自@example.com的电子邮件

3. 接收者的邮件服务器查询example.com的SPF记录

4. 服务器检查发送IP是否授权

5. 应用结果:通过、失败、软失败或中立

SPF记录语法

SPF记录是具有特定格式的TXT记录:

v=spf1 [mechanisms] [qualifier]all

SPF记录示例

基本(单个邮件服务器)
v=spf1 ip4:203.0.113.50 -all
Google Workspace
v=spf1 include:_spf.google.com ~all
多个服务
v=spf1 include:_spf.google.com include:sendgrid.net ip4:203.0.113.50 -all

SPF机制

机制描述示例
ip4IPv4地址或范围ip4:203.0.113.0/24
ip6IPv6地址或范围ip6:2001:db8::/32
include包括另一个域的SPFinclude:_spf.google.com
a域的A记录IPa:mail.example.com
mx域的MX服务器IPmx
all匹配所有(通常最后)-all, ~all, ?all

限定符

限定符结果含义
+(默认)通过授权发件人
-失败未授权,拒绝
~软失败可能未授权,接受但标记
?中立无政策声明

SPF实现最佳实践

从软失败开始

首次实施SPF时,使用~all以避免拒绝合法电子邮件:

v=spf1 include:_spf.google.com ~all

过渡到失败

一旦确认工作,切换到-all以获得严格执行:

v=spf1 include:_spf.google.com -all

DNS查询保持在10以下

SPF允许最多10个DNS查询(包括、a、mx、重定向、存在)。超过此限制会导致SPF失败。

# 计入DNS查询:

include:_spf.google.com # 1(加上嵌套包含)

a:mail.example.com # 1

mx # 1

# 不计入:

ip4:203.0.113.50 # 0

ip6:2001:db8::1 # 0

仅一个SPF记录

多个SPF记录会导致验证失败。将所有机制合并为一个记录:

# 错误 - 两个SPF记录

v=spf1 include:_spf.google.com ~all

v=spf1 include:sendgrid.net ~all

# 正确 - 合并

v=spf1 include:_spf.google.com include:sendgrid.net ~all

检查SPF记录

使用dig
dig example.com TXT | grep spf
使用DomScan
curl "https://domscan.net/v1/health?domain=example.com"

# 返回hasSPF状态

在线验证程序:MXToolbox、mail-tester.com

常见SPF问题

DNS查询过多

症状:SPF permerror

解决方案:展平包含或使用更少的外部服务

缺失第三方服务

症状:合法电子邮件未通过SPF

解决方案:为所有发送服务添加包含/ip4(营销工具、CRM等)

过度宽松的SPF

症状:欺骗电子邮件通过SPF

问题:使用+all或包含太多服务

解决方案:审计并限制授权发件人

SPF对电子邮件身份验证至关重要,但与DKIM和DMARC结合使用时效果最佳,以获得全面保护。

将知识付诸实践

使用 DomScan 的 API 检查域名可用性、健康状态等。