10个不稳定版本 (3个破坏性更新)
0.3.0 | 2023年9月20日 |
---|---|
0.2.1 | 2023年3月31日 |
0.2.0 | 2023年2月15日 |
0.1.2 | 2022年11月10日 |
0.0.3 | 2022年5月30日 |
187 在 电子邮件 分类中
每月下载 29次
93KB
2K SLoC
spftrace
spftrace 工具是用于执行、分析和显示 SPF 查询的工具。SPF 定义在 RFC 7208 中。
此工具使用 IP 地址和域名执行 SPF 查询,并以评估树的形式图形化显示结果。
此工具使用 viaspf 库执行 SPF 查询。viaspf 库可以跟踪查询的执行过程,并将其作为结构化数据通过其 API 提供跟踪信息。spftrace 然后,分析这些数据并显示。
由于底层执行引擎是真实的、符合 RFC 标准的 SPF 实现,spftrace 能够正确处理所有 SPF 策略。包括 SPF 的不太为人所知的功能,如宏、双 CIDR 前缀长度、exp 修饰符或空查找限制等,都根据规范进行评估。同样支持国际化电子邮件域名。
安装
spftrace 工具是 Rust 程序;像往常一样使用 Cargo 进行安装。例如,使用以下命令安装 crates.io 上发布的最新版本
cargo install --locked spftrace
最低支持的 Rust 版本为 1.65.0。
用法
向 spftrace 传递发件人标识(电子邮件地址或域名)和 IP 地址。
使用未指定的 IP 地址 0.0.0.0
(IPv4) 或 ::
(IPv6) 显示某些启用 SPF 的域的完整评估树。
spftrace example.com 0.0.0.0
example.com
│ "v=spf1 mx include:spf.example.com ~all"
├── mx → example.com (lookups: 1/10, nested: 2/10)
│ ├── mx1.example.com
│ │ ├── 216.58.192.0
│ │ ├── 65.55.52.224
│ │ └── 207.46.116.128
│ └── mx2.example.com
│ └── 65.55.238.129
│ not-match
├── include:spf.example.com → spf.example.com (lookups: 2/10)
│ spf.example.com
│ │ "v=spf1 ip4:207.46.4.128/25 ip4:65.55.174.0/24 ip6:2c0f:fb50:4000::/36
│ │ ip6:2001:4860:4000::/36 ~all"
│ ├── ip4:207.46.4.128/25 not-match
│ ├── ip4:65.55.174.0/24 not-match
│ ├── ip6:2c0f:fb50:4000::/36 not-match
│ ├── ip6:2001:4860:4000::/36 not-match
│ └── all match result=softfail
│ not-match
└── all match result=softfail
softfail
上述命令可以缩写为 spftrace example.com
:当未指定 IP 地址时,假定 0.0.0.0
。
有关详细信息,请参阅包含的手册页 spftrace(1)。(您可以通过传递文件路径到 man
来在不安装的情况下查看手册页:man ./spftrace.1
)
开发
单元测试位于单独的模块 tests
中。指定一个测试名称,并传递 --test-threads 1
测试二进制选项来运行并可视化检查一些测试(Cargo无法捕获stdout,因此至少限制线程数量可以避免输出交错)。
例如
cargo test ptr -- --test-threads 1
许可证
版权 © 2022–2023 David Bürgin
本程序是免费软件:您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它,许可证版本为3,或(根据您的选择)任何后续版本。
本程序的分发是希望它将是有用的,但没有任何保证;甚至没有关于适销性或特定用途适用性的暗示性保证。有关详细信息,请参阅GNU通用公共许可证。
您应该已收到与该程序一起的GNU通用公共许可证副本。如果没有,请参阅https://gnu.ac.cn/licenses/。
依赖项
~8–15MB
~196K SLoC