SPF(Sender Policy Framework)是一种电子邮件认证机制,主要用于验证电子邮件发送者的IP地址,是否被授权在他所在的域名发送邮件。SPF 检查结果有几种状态,这些状态表明了你的邮件服务器或者邮件安全措施对SPF记录的验证结果。虽然通过SPF检查并不代表它就不是钓鱼邮件,SPF检查也不能100%拦截钓鱼邮件,但它是一个重要因素,可以避免发信人地址域的伪造。合适的SPF检查策略,可以拦截掉一大批弱智的钓鱼邮件攻击。
根据官方 RFC 规范文档 RFC7208:SPF 实现必须将进行 DNS 查找的机制和修饰符的数量限制为每 SPF 检查最多 10 个,包括使用 “包含” 机制或 “重定向” 修饰符导致的任何查找。 如果在检查期间超过此数字,则必须返回 PermError。 “include”,“a”,“mx”,“ptr” 和 “exists” 机制以及 “重定向” 修饰符确实计入此限制。 “all”,“ip4” 和 “ip6” 机制不需要 DNS 查找,因此不计入此限制。以下是SPF的几种常见状态及其含义:
- Pass
- 含义:发件服务器的IP地址与域名SPF记录中授权的IP地址匹配,验证通过。
- 处理方式:邮件被接受,标记为合法发件人。
- 示例:
v=spf1 include:http://_spf.google.com ~all (Google Workspace的SPF记录)。
- Fail
- 含义:发件服务器的IP地址未在SPF记录中授权,明确验证失败。
- 处理方式:邮件可能被直接拒收或标记为垃圾邮件。
- 关键点:
- 通常由SPF记录中的 -all 机制触发(严格策略)。
- 需谨慎使用,避免因配置错误导致合法邮件被拒。
- SoftFail
- 含义:发件服务器IP地址未被明确授权,但可能属于临时或非关键来源(例如测试环境)。
- 处理方式:邮件可能被接受,但标记为可疑或降低信任评分。
- 语法关联:
SPF记录中通过 ~all 声明(软失败策略)。
- Neutral
- 含义:SPF记录未明确声明是否授权该IP地址,验证结果“中立”。
- 处理方式:邮件正常投递,但SPF验证不提供任何信任依据。
- 典型场景:
SPF记录仅包含 ?all (中性策略),或未完全覆盖所有发件源。
- None
- 含义:域名未发布任何SPF记录,无法进行验证。
- 处理方式:接收方可能根据其他反垃圾邮件策略处理邮件。
- 风险:
未配置SPF的域名易被伪造,建议尽快添加SPF记录。
- TempError
- 含义:临时性验证错误(如DNS查询超时或服务器故障)。
- 处理方式:邮件可能被暂存并重试,不直接影响投递结果。
- 常见原因:
DNS服务器响应缓慢或SPF记录语法复杂导致解析失败。
- PermError
- 含义:永久性验证错误(如SPF记录语法错误或超过DNS查询限制)。
- 处理方式:邮件可能被拒绝或标记为高风险。
- 典型问题:
- SPF记录超过10次DNS查询限制(RFC 7208规定)。
- 包含非法字符(如未转义的空格)。
SPF状态处理建议
-
优先使用 Pass 和严格策略:
- 通过 include 机制整合可信服务商(如邮件服务商、CRM系统)。
- 使用 -all 拒绝未授权的IP地址,但需确保覆盖所有发件源。
-
避免常见错误:
- 检查SPF记录是否超过10次DNS查询。
- 使用工具验证语法合法性。
-
结合DKIM和DMARC:
SPF是反垃圾邮件的基础,需与DKIM(邮件签名)和DMARC(投递策略)配合使用,提升整体安全性。
标准宏变量SPF记录格式
v=spf1 include:%{ir}.%{v}.%{d}.spf.has.pphosted.com ~all
这不是普通 SPF,是Plesk/PPHosted 托管环境专用的动态 SPF 包含机制。
-
v=spf1
标准开头,声明这是 SPF 版本 1。要知道,所有现代邮件系统都只认 spf1 -
include:%{ir}.%{v}.%{d}.spf.has.pphosted.com
这是整条记录最核心、最特殊的部分:SPF 宏变量(macro)动态包含。三个宏变量含义(RFC 7208 标准)
%{ir}:反向的接收方 IP(in-addr 格式)
例:IP 1.2.3.4 → 4.3.2.1
%{v}:IP 版本
IPv4 → i
IPv6 → ip6
%{d}:当前域名(你的域名)
举例:
假设你的域名是abc.com,你的发信服务器 IPv4:192.168.1.100。那么宏变量的含义就是:
%{ir} → 100.1.168.192
%{v} → i
%{d} → abc.com
这条SPF在收件人邮件服务器段的验证格式就是:100.1.168.192.i.abc.com.spf.has.pphosted.com
总结
SPF的七种状态(Pass、Fail、SoftFail、Neutral、None、TempError、PermError)反映了邮件发件人验证的不同结果。合理配置SPF记录(如明确授权IP、避免语法错误)可显著降低钓鱼邮件和伪造风险,同时需注意与其他安全协议(DKIM/DMARC)的协同部署。若需具体配置指导或问题排查,可进一步分析您的域名SPF记录。
如您发现侵权内容,欢迎友好的反馈,站长必在24小时内妥善处理。站长邮箱:postmaster@cloud700.com
