SPF 认证:概述与最佳实践
鸟
2016年12月19日
电子邮件
1 min read

关键要点
SPF (Sender Policy Framework) 是一种基于路径的电子邮件认证协议,用于验证发送服务器是否被授权为某个域发送邮件。
SPF 策略以DNS TXT 记录形式存在,格式包含定义哪些服务器、IP 或网络被允许代表某个域发送邮件的机制。
SPF 验证与Return-Path 域(退信域)或HELO 主机名相关,而不是可见的发件人地址。
由于 SPF 仅检查发送路径,它可以在SMTP 事务中早期进行验证,从而可用于快速拒绝未授权邮件。
SPF 是有效的,但并不完美——它容易出现误报问题,尤其在邮件转发和邮件列表的情况下。
SPF 记录依赖于类似
mx、a、ipv4、ipv6、include、redirect、exists的机制,并且必须以all修饰符(-all,~all,?all,+all) 结束。DNS 查询限制适用:SPF 评估不能超过 10 个 DNS 查询,因此记录规划很重要。
ptr机制现在被认为是“不可使用”,但验证器仍然必须接受它。由于兼容性问题,一些发送者仍在使用它。仅靠 SPF 不能保证邮件是合法的——它只是保证邮件来自授权的服务器。它在与 DKIM、DMARC 和其他防欺诈技术结合使用时效果最佳。
Q&A 精华
SPF是什么的简单说法?
SPF允许一个域声明哪些服务器被允许以其名义发送电子邮件。接收服务器检查这一点以检测未经授权的发件人。
为什么SPF被称为“路径为基础”?
因为SPF验证了路径(具体来说,是发送服务器的IP),而不是消息内容中的任何内容。
SPF政策存储在哪里?
A: 作为一个DNS TXT 记录,以
v=spf1开始,后跟定义允许发件人的机制。SPF 验证哪个域?
The Return-Path(也称为退回域)。
如果 Return-Path 为空(NULL 发件人),SPF 将检查HELO域。
SMTP 交易中能否提前检查 SPF?
是的。因为它仅依赖于发送服务器的IP和域,SPF可以在接收消息正文之前进行验证——使其在过滤时更有效。
为什么SPF有时即使对于合法邮件也会失败?
常见原因包括:
Email forwarding(转发者未在原始域的SPF记录中)
Mailing lists(邮件由不同的服务器重新发送)
这会导致误报,这是路径认证固有的问题。
机制如include、redirect和exists的作用是什么?
include— 授权另一个域的SPF记录 (例如,您的ESP)redirect— 重用另一个域的SPF策略exists— 基于DNS查找动态授权 (对于复杂的基础设施很有用)
“all” 修饰符如何工作?
-all→ 拒绝未列出的任何内容(严格)~all→ 软失败(接受但标记)?all→ 中立+all→ 通过所有(有效禁用SPF)
为什么不建议使用ptr机制?
它在现代规范中已经缓慢、不可靠并且已被弃用,但SPF验证器仍然必须支持它。
仅靠SPF是否足够进行电子邮件身份验证?
不,SPF验证发送基础设施,但:
它不保护消息完整性
它与可见的发件人域不一致
它在转发时发生故障
当与DKIM和DMARC结合使用时,SPF最强。



