我目前正在编写一些用于验证 SPF 记录的代码。然而,当将我的查找次数结果与其他工具(例如 MxToolbox 和 EasyDMARC)进行比较时,它们似乎不正确。
目前我正在做类似以下代码的事情。
if (directive.Mechanism == SpfMechanism.MX)
{
_lookups++;
// Lookup the MX records
var records = _resolver.GetMXRecords(directive.MX);
foreach (var record in records)
{
// Do an A lookup for the MX record
_lookups++;
// ...
}
}
但是我不确定是否要增加每个 MX 记录的查找次数。
RFC 提到
check_host() 首先在 .然后 它对返回的每个 MX 名称执行地址查找。这是 与每个返回的 IP 地址进行比较。防止拒绝服务 (DoS) 攻击,第 4.6.4 节中定义的处理限制必须是 紧随其后。如果超出 MX 查找限制,则会出现“permerror” 返回并终止评价。如果有任何地址匹配, 机制匹配。
但是对于是否应该计算这些还不是很清楚,公共实现在这方面似乎也有所不同。
再次仔细阅读 RFC 后,查找限制实际上是执行查找的机制的限制。每个 MX 机制的查找次数为 10,与查找限制无关。
通过进行这些更改解决了我的问题,现在我的结果与其他 SPF 工具和库相同。