SPF 记录检查器
SPF(Sender Policy Framework)记录语法验证、机制解析与安全评估
🔍 SPF 记录验证
📖 SPF 机制详解
| 机制 | 限定符 | 含义 | 匹配结果 |
|---|---|---|---|
+all | 通过 (+) | 允许所有IP(极度危险!) | ⚠️ 永远通过 |
-all | 拒绝 (-) | 拒绝所有未列出的IP | ✅ 推荐 |
~all | 软失败 (~) | 标记为可疑但不拒绝 | ⚠️ 可接受 |
?all | 中性 (?) | 不判定(不推荐) | ❌ 不推荐 |
ip4:addr/mask | 可配限定符 | 指定IPv4地址或网段 | 精确匹配则通过 |
ip6:prefix | 可配限定符 | 指定IPv6前缀 | 精确匹配则通过 |
a:domain | 可配限定符 | 匹配域名的A记录 | A记录IP在发送者中 |
mx:domain | 可配限定符 | 匹配域名的MX记录 | MX服务器IP匹配 |
include:domain | 继承限定符 | 引用其他域的SPF策略 | 递归检查目标域 |
exists:domain | 可配限定符 | 如果域名存在任何DNS记录 | 存在即匹配 |
ptr:domain | 可配限定符 | 反向DNS匹配(已弃用) | PTR记录匹配域名 |
redirect=domain | - | 重定向到其他域的SPF | 完全使用目标策略 |
exp=text | - | 解释字符串(已弃用) | 失败时显示文本 |
💡 SPF 最佳实践
✅ 推荐做法
- 以 v=spf1 开头
- 以 -all 或 ~all 结尾
- 避免 +all (等于无保护)
- 使用 include 引用已知服务商
- DNS查询次数 < 10次
- 定期更新IP列表
❌ 常见错误
- 多个SPF记录(只允许一条)
- SPF记录过长(>450字节)
- 嵌套include超过10层
- 使用已弃用的ptr机制
- 缺少all结尾
- TXT和SPF类型混用
🔧 常用SPF模板
/* Google Workspace */ v=spf1 include:_spf.google.com ~all /* Office 365 */ v=spf1 include:spf.protection.outlook.com ~all /* 自建邮件 */ v=spf1 ip4:x.x.x.x mx ~all /* 仅第三方服务 */ v=spf1 include:_spf.google.com include:spf.protection.outlook.com ~all