SPF Toolbox v2.2.0 介绍与选型指南
SPF Toolbox(开源邮件 DNS 体检 Web 应用,v2.2.0)认知与选型:功能全景、PHP+JS 两层架构、11 类查询能力边界,并与 MXToolbox/dmarcian/Kitterman/手工 dig 量化对比。纯联网溯源,检索日期 2026-10-26。
SPF Toolbox v2.2.0 介绍与选型指南
目标:面向需要自建「邮件 DNS 记录体检」能力的系统管理员,讲清 SPF Toolbox 是什么、能查什么、架构如何、适合谁用,并与 MXToolbox 在线版、dmarcian、Kitterman SPF validator、手工 dig 做量化选型对比。本篇为认知篇,全部信息来自公开网络溯源(来源与检索日期见「环境信息」),未包含本地实测数据。
一、环境信息
本篇为认知溯源篇:所有事实均来自官方仓库、官方发布源、公共徽章服务与竞品官网,检索日期统一为 2026-10-26,未做本地实测。溯源清单如下:
| 信息项 | 来源 | 检索日期 |
|---|---|---|
| 项目主仓库与 README | https://github.com/charlesabarnes/SPFtoolbox | 2026-10-26 |
| 发布历史(releases.atom) | https://github.com/charlesabarnes/SPFtoolbox/releases.atom | 2026-10-26 |
| 最新稳定版 v2.2.0 | https://github.com/charlesabarnes/SPFtoolbox/releases | 2026-10-26 |
| 社区活跃度(星数/最后提交) | https://img.shields.io/github/stars/charlesabarnes/SPFtoolbox.json 与 https://img.shields.io/github/last-commit/charlesabarnes/SPFtoolbox.json | 2026-10-26 |
| 许可证(LICENSE 文件) | 仓库 v2.2.0 源码包内 LICENSE | 2026-10-26 |
| MXToolbox 在线版 | https://mxtoolbox.com/ | 2026-10-26 |
| Kitterman SPF validator | https://www.kitterman.com/spf/validate.html | 2026-10-26 |
| dmarcian 官网 | https://dmarcian.com/ | 2026-10-26 |
版本结论先行:截至检索日,SPF Toolbox 官方最新稳定版为 v2.2.0(发布于 2025-05-09),社区星数 299(shields.io),最后提交 2025 年 8 月。下文所有版本号、日期均以上表来源为准。
二、软件概述
SPF Toolbox(仓库名 SPFtoolbox,本文统一写作 SPF Toolbox)是一个开源的 JavaScript + PHP Web 应用,官方仓库一句话定位是:"SPFtoolbox is a Javascript and PHP app to look up DNS records such as SPF, MX, Whois, and more"——即「查询并解读 SPF、MX、Whois 等 DNS 记录的应用」。它面向的典型用户是邮件服务器管理员与运维人员:配置完邮件域后,需要快速核对 SPF、MX、DMARC、黑名单等一整套「邮件可达性体检」项,SPF Toolbox 把这些分散的查询动作合并成一个单页 Web 界面,输入域名一键出全部结果。
项目由 Charles Barnes 开发维护,2017 年首次发布(首个 release 为 V0.5,2017-07-19),最新稳定版 v2.2.0 发布于 2025-05-09。应用同时提供 Chrome 浏览器扩展形态(Chrome Web Store 徽章见 README),并可通过 YunoHost 应用商店、Heroku 一键部署或手动上传到任意 PHP 网页服务器运行。
💡 技术拓展:标题里的 SPF 只是切入点,邮件域「体检」实际围绕三件套展开——
机制 解决的问题 记录形态 SPF 声明「哪些服务器有权替我发信」,收方据此拒伪造 域名 TXT 记录,如 v=spf1 include:spf.mail.qq.com ~allDKIM 对每封信做数字签名,证明内容未被篡改 选择器._domainkey.域名下的 TXT 公钥记录DMARC 统筹 SPF/DKIM 校验失败的处置策略与报告 _dmarc.域名下的 TXT 策略记录三者互补:SPF 防「服务器伪造」,DKIM 防「内容篡改」,DMARC 给出统一策略与反馈闭环。SPF Toolbox 对三者均有覆盖路径:SPF/DKIM 走 TXT 查询(DKIM 需带选择器子域,见后文),DMARC 有专门的查询入口(自动拼
_dmarc.前缀)。
三、核心架构
从公开源码结构(v2.2.0 源码包)看,SPF Toolbox 是一个极简的两层架构,无数据库、无框架依赖、无构建步骤:
| 层 | 组成 | 职责 |
|---|---|---|
| 前端 | index.php(单页 UI)+ javascript/main.js(原生 JS,Fetch API) | 表单输入域名与查询类型,异步请求后端,渲染结果表格 |
| 后端 | operations/index.php(入口分发)+ 11 个查询类(A.php/AAAA.php/Mx.php/Txt.php/Dmarc.php/All.php/Blacklist.php/Port.php/ReverseLookup.php/Hinfo.php/Whois.php) | 每个类实现同一个 OperationInterface 接口,按 request 参数分发,返回 JSON |
几个值得注意的架构事实(均来自源码阅读):
- DNS 查询直接走 PHP 内置函数:A/AAAA/MX/TXT/HINFO/ALL 等查询都基于 PHP 的
dns_get_record(),黑名单基于checkdnsrr(),端口检测基于fsockopen()(默认探测 25、53、80、443、465、587、993 七个端口,超时 5 秒)。也就是说,查询能力完全继承自服务器操作系统的解析器(/etc/resolv.conf指向的上游 DNS)。 - Whois 复用打包的 phpwhois 库:
operations/phpwhois/目录内置了一套完整的 phpwhois 解析器(支持 .com/.net/.ru/.uk 等大量 TLD 的 whois 服务器协议),不依赖外部 whois 命令。 - DMARC 查询自动拼前缀:
Dmarc.php固定在域名前拼接_dmarc.,用户只需输入裸域名。 - 黑名单聚合 50 个 DNSBL 区域:
Blacklist.php的LOOKUP_HOSTS常量列出 50 个黑名单区域(spamhaus、sorbs、spamcop、barracuda 等主流 DNSBL),把域名解析出的 IP 反转后逐个反查,命中即标 FAIL。 - 响应自带跨域头:后端入口统一输出
Access-Control-Allow-Origin: *与Cache-Control: no-store等头,前端每次查询都是实时查询、不做结果缓存,第三方页面也能直接调用这个 JSON 端点。
💡 技术拓展:SPF Toolbox 查黑名单用的 DNSBL(DNS-based Blackhole List)是邮件反垃圾的行业标准机制——黑名单方维护「已知垃圾邮件源 IP」的 DNS 区域,收件方查
反转IP.区域名,有返回值即命中。同类常见 DNSBL 对比:
区域 运营方 特点 zen.spamhaus.org Spamhaus 业界最权威,返回 127.0.0.x 编码段 bl.spamcop.net SpamCop 用户举报驱动,时效快 dnsbl.sorbs.net SORBS 按垃圾类型细分 16 个子区域 b.barracudacentral.org Barracuda 商业反垃圾厂商维护 SPF Toolbox 内置的 50 个区域即上述主流 DNSBL 的聚合清单(完整清单见《SPF Toolbox v2.2.0 配置参数详解》),判定逻辑是「反查有 A 记录即判 FAIL」,因此对返回非 127 网段的区域需人工复核判定合理性。
四、功能特性
对照 Web 界面的查询类型下拉框(index.php)与后端 11 个查询类,SPF Toolbox v2.2.0 的功能清单如下:
| # | 界面选项 | 底层 request 值 | 功能说明 |
|---|---|---|---|
| 1 | IP/Get A Record | a | 查询域名 IPv4 地址(A 记录) |
| 2 | IPV6/Get AAAA Record | aaaa | 查询域名 IPv6 地址(AAAA 记录) |
| 3 | Mx/Get MX Record | mx | 查询收信服务器(MX 记录),排查「对方收不到信」第一步 |
| 4 | SPF/TXT | txt | 查询全部 TXT 记录,从中读取 SPF 授权声明 |
| 5 | DMARC | dmarc | 自动拼接 _dmarc. 前缀查询 DMARC 策略记录 |
| 6 | Blacklist Check | blacklist | 域名 IP 对 50 个 DNSBL 区域聚合反查,命中标 FAIL |
| 7 | Whois | whois | 内置 phpwhois 库查询域名注册信息(注册商、到期日等) |
| 8 | Check If Port Open/Forwarded | port | 对域名/IP 的指定端口做 TCP 连通性探测(默认 7 个常用端口) |
| 9 | Hinfo/Get Hardware Information | hinfo | 查询 HINFO 记录(多数域名无此记录,返回空) |
| 10 | Get All Simple DNS Records | all | 一次性拉取全部 DNS 记录(先 DNS_ALL 再回退 DNS_ANY) |
| 11 | Host By IP/Reverse Lookup | reverseLookup | 反向解析:由 IP 查主机名(PTR) |
功能层面的四个亮点与三个短板(基于源码能力边界):
亮点:
- 一键聚合:MX、SPF、DMARC、黑名单、端口、whois 全在一个页面,不用在多个在线工具间跳转;
- 无状态零配置:无数据库、无账号体系、无配置文件,解压即用,结果实时查询(响应头明令
no-store禁缓存); - 端点即 API:后端
operations/?domain=…&request=…返回纯 JSON 且允许跨域,可直接当内部 HTTP API 被 Shell(curl/jq)或监控系统调用; - 内网友好:自托管后,内网邮件系统排障不必把内部域名暴露给第三方在线工具。
短板:
- 无 DKIM 专用入口:界面没有 DKIM 查询项,需要变通——把
选择器._domainkey.域名整串当作域名走 TXT 查询; - 无 SPF/DMARC 语法解读:只展示原始记录文本,不像 Kitterman 工具那样做 RFC 7208 语法校验与处理限制(processing limit)检测;
- 无历史与监控:每次都是实时查询,没有投递日志留存、变化告警等持续监控能力(这正是商业工具 MXToolbox/dmarcian 的付费卖点)。
五、快速开始
以下为官方 README 给出的手动安装最小路径(摘自仓库 README「How to install SPFToolBox」一节,检索日期 2026-10-26):
- 下载最新 release:https://github.com/charlesabarnes/SPFtoolbox/releases/latest
- 将内容上传到已启用 PHP 5.3+ 的网页服务器;
- 解压到服务器上你期望的目录;
- 浏览器访问
index.php; - 输入域名提交查询。
除手动安装外,README 还给出两种托管平台的替代路径:YunoHost 用户可在应用商店一键安装(README 内嵌 install-with-yunohost 按钮);Heroku 用户可点击 Deploy to Heroku 按钮直接部署(仓库根目录带 app.json)。此外仓库自带 Dockerfile(基于 php:apache 官方基础映像,把源码拷入 /var/www/html)并通过 GitHub Actions 工作流向 GHCR 发布构建产物,偏好 Docker 化运行的用户可按 Dockerfile 自行构建。
在本专栏的部署篇中,上述官方路径已按「Apache + mod_php」形态完成从零部署实录(tar.gz 与 Git 源码双方案、systemd 托管、验证回显与 403 权限/出站 TCP/RFC8482 排障):《Ubuntu 22.04 安装 SPF Toolbox v2.2.0 指南》;逐参数修改-验证闭环见配置篇 《SPF Toolbox v2.2.0 配置参数详解》;curl/jq 命令行用法见命令篇 《SPF Toolbox v2.2.0 常用 CLI 命令详解》。
💡 技术拓展:PHP 部署形态不止「Apache + mod_php」一种,常见组合对比:
形态 原理 适用场景 Apache + mod_php PHP 作为 Apache 模块常驻 最简单,传统 LAMP 默认 Nginx + PHP-FPM FastCGI 进程池独立运行 高并发、资源更可控 PHP 内置服务器 php -S单进程开发服务器本地临时演示,不建议生产 SPF Toolbox 对三者均无特殊要求(纯 PHP,无扩展依赖、无 rewrite 需求),本专栏部署篇实际采用 Ubuntu 22.04 默认的「Apache + mod_php」组合,部署路径最短。
六、适用场景与限制
适用场景:
- 邮件服务器上线自查:新邮件域配置完 SPF/MX/DMARC 后,用聚合界面逐项核对是否生效;
- 投递故障排查:「对方收不到我们的信」时,先看 MX 与黑名单两项是否异常,再查 SPF 是否漏了新上线的发信服务器;
- 内网邮件系统日常巡检:自托管在内网,配合 curl/jq 把查询端点写进巡检脚本,定期输出 JSON 结果做留档比对;
- 教学与演示:代码量小、无需数据库,适合作为「邮件 DNS 记录如何工作」的演示教具。
限制与注意(基于源码与公开文档归纳):
- 需要 Web 服务器所在环境能出站访问 DNS(UDP 53)与 whois 服务器(TCP 43);端口探测需要相应出站 TCP 权限,被防火墙拦截时会全部显示 closed;
- 无用户认证机制,公网部署时应自行加访问控制(如 Apache Basic Auth 或反代层鉴权),避免沦为开放 DNS 查询跳板;
- 无结果缓存与限流,黑名单查询会对 50 个区域逐个反查,对解析器响应慢的环境单次查询可能耗时超过一分钟;
- 项目更新节奏较慢(2019-01 到 2025-05 之间无发布),安全修复依赖使用者跟进仓库动态;
- README 写明的运行门槛是 PHP 5.3+,但应用年久,在新版 PHP(8.x)上部署需留意弃用告警对 JSON 输出的影响(部署篇有实测验证)。
七、同类选型对比
围绕「邮件 DNS 记录体检」这一需求,把 SPF Toolbox 与三类典型替代方案做量化对比。对比对象:MXToolbox 在线版(最常用的商业在线诊断)、dmarcian(商业 DMARC 平台)、Kitterman SPF validator(老牌免费 SPF 单页工具)、手工 dig(命令行原生方案)。
7.1 量化对比表
| 维度 | SPF Toolbox v2.2.0 | MXToolbox 在线版 | dmarcian | Kitterman SPF validator | 手工 dig |
|---|---|---|---|---|---|
| 形态 | 开源自托管 Web 应用 | 在线 SaaS 工具站 | 在线 SaaS 平台 | 免费在线单页工具 | 本机命令行 |
| 开源与许可 | 开源;LICENSE 文件为 MIT(Copyright (c) 2017 Charles Barnes),package.json 元数据标 ISC,以 LICENSE 文件为准 | 闭源 | 闭源 | 网页服务免费;底层库 pyspf 为开源 | dig 属 BIND 工具集(ISC 许可) |
| 部署依赖 | PHP 5.3+ 网页服务器,解压即用 | 无需部署 | 无需部署 | 无需部署 | 仅需本机安装 dnsutils/bind9-dnsutils |
| 查询能力 | 11 类查询:A/AAAA/MX/TXT/DMARC/黑名单(50 个 DNSBL)/whois/端口/HINFO/全部记录/反向解析 | MX/SPF/DKIM/DMARC/黑名单等在线诊断(SuperTool,具体清单以官网为准) | DMARC 报告聚合分析、SPF 记录平展检查(SPF Surveyor)等 | 仅 SPF:RFC 7208 语法校验,并动态检测处理限制错误(官网自述使用 pyspf 库,其他工具少见此能力) | 单次 DNS 查询任意类型,结果自行解读 |
| 自动化接口 | AJAX 端点返回 JSON、允许跨域,可 curl 直接调用 | 官网交互为主,开放 API 属商业授权范围 | 平台内报表,API 属商业授权 | 无 | 天然脚本化,可完全自动化 |
| 内网域名可用 | 是(数据不出内网,仅出站 DNS/whois 查询) | 否(内部域名需交给第三方解析) | 否 | 否 | 是 |
| 持续监控 | 无(纯实时查询) | 有(付费版投递监控与告警) | 有(DMARC 报告持续聚合) | 无 | 无(需自建脚本轮询) |
| SPF 语法校验 | 无 | 以官网工具说明为准 | 有(记录平展视角) | 有(RFC 7208 + processing limit,官网自述) | 无 |
| 社区活跃度(2026-10-26 检索) | 299 stars;8 个 release(V0.5 2017-07-19 → v2.2.0 2025-05-09);最后提交 2025-08(shields.io) | 闭源产品,无公开星数 | 闭源产品,无公开星数 | 个人维护的免费站点,无仓库 | BIND 生态标配,随发行版更新 |
| 成本 | 免费自托管 | 免费查询 + 付费订阅 | 付费订阅(按域计费,以官网报价为准) | 免费 | 免费 |
7.2 选型建议
- 要内网可用、数据不出门、能当 API 被
curl调用 → SPF Toolbox 是唯一同时满足三项的开源选项;适合邮件网关/邮件服务器运维的内网工具箱; - 只要快速查一次公网域名的 MX/SPF/黑名单、不想装任何东西 → MXToolbox 在线版最快,浏览器输入域名即得;
- 要持续接收 DMARC 聚合报告、追踪伪造邮件源 → dmarcian 这类商业 DMARC 平台,SPF Toolbox 没有报告接收与聚合能力;
- 要严格验证 SPF 记录语法是否合规(尤其是多层 include 导致的 10 次 DNS 查询上限) → Kitterman validator 的 pyspf 校验是独特能力,SPF Toolbox 只展示记录原文不做语法校验;
- 要批量脚本化查询、写进自动化流水线 → 手工 dig(或 SPF Toolbox 的 JSON 端点 + curl/jq,用法见《SPF Toolbox v2.2.0 常用 CLI 命令详解》);SPF Toolbox 的价值在于把「人看的聚合界面」和「机器调用的 JSON 端点」合在同一服务里。
关键结论:SPF Toolbox 与在线工具不是替代关系,而是「私有化、可内网、可自动化」这一维度的补位——当查询对象是内部域名、使用方是运维脚本时它几乎无对手;当需要持续监控或 DMARC 报告聚合时,仍需商业平台补位。
八、参考链接
- 官方仓库:https://github.com/charlesabarnes/SPFtoolbox (检索日期 2026-10-26)
- 发布历史:https://github.com/charlesabarnes/SPFtoolbox/releases (检索日期 2026-10-26)
- 星数与活跃度徽章:https://img.shields.io/github/stars/charlesabarnes/SPFtoolbox.json 、https://img.shields.io/github/last-commit/charlesabarnes/SPFtoolbox.json (检索日期 2026-10-26)
- MXToolbox 在线版:https://mxtoolbox.com/ (检索日期 2026-10-26)
- dmarcian 官网:https://dmarcian.com/ (检索日期 2026-10-26)
- Kitterman SPF validator:https://www.kitterman.com/spf/validate.html (检索日期 2026-10-26)
- 本专栏部署篇:《Ubuntu 22.04 安装 SPF Toolbox v2.2.0 指南》
- 本专栏配置篇:《SPF Toolbox v2.2.0 配置参数详解》
- 本专栏命令篇:《SPF Toolbox v2.2.0 常用 CLI 命令详解》