下载

DKIM、SPF 和 DMARC

FOLD 如何自行验证 DKIM 签名,并将其与你的邮件服务器给出的 SPF 和 DMARC 结果结合起来。

FOLD 根据两个来源判断发件人:邮件到达时你自己的邮件服务器记录的结果,以及 FOLD 自己的 DKIM 检查。两者都在 Mac、iPhone 和 iPad 上运行。

你的服务器给出的结果

接收服务器会添加一个 Authentication-Results 邮件头,其中包含它的 SPF、DKIM 和 DMARC 结论。发件人也可以添加这样的邮件头,因此 FOLD 只信任服务器名称与你账户的 IMAP 服务器完全一致的那个邮件头。其他所有副本都会被忽略。

FOLD 从这个邮件头中获取 SPF 和 DMARC 结果;它不会自行评估 SPF。如果你的服务商写入该邮件头时使用的名称与其 IMAP 服务器不同,FOLD 就没有你邮件的 SPF 或 DMARC 结论,并会显示指示标记中所述的中性状态。

FOLD 自己的 DKIM 检查

对于邮件中的每个 DKIM-Signature,FOLD 会:

  1. 要求 From 邮件头位于已签名的邮件头之中。
  2. 按照签名的规范化方式(simple 或 relaxed)重新计算正文哈希。
  3. 从 DNS 获取公钥(selector._domainkey.domain)。
  4. 使用 rsa-sha256 或 ed25519-sha256 验证签名。

以下内容会被拒绝:rsa-sha1 签名、短于 1024 位的 RSA 密钥,以及已被域名吊销的密钥。来自标记为测试状态(t=y)的密钥的签名,不计为通过。

结果如何组合

FOLD 自己的 DKIM 检查可以确认或收紧你的服务器给出的结论,但绝不会放宽它:

  • 来自发件人域名的有效签名会确认 DKIM。
  • 如果一个无效签名声称来自发件人的域名,邮件会变为无法验证发件人,即使你的服务器给出了不同的结论。邮件列表不受此限,因为它们会合理地修改邮件。
  • DNS 错误或缺少密钥不会改变你的服务器给出的结论,并显示为无法验证

当通过验证的域名与发件人的域名一致,或两者的最后两级标签相同时,DMARC 即视为已对齐。FOLD 目前尚未使用公共后缀列表(Public Suffix List),因此对于 co.uk 等后缀下的域名,这一比较过于宽松。有不止一个 From 邮件头的邮件,始终被视为可能的伪造。

检查何时运行

FOLD 会在首次下载完整邮件时进行检查:在你打开邮件时,或在它提前载入下一封邮件时。邮件会立即显示;结论会稍后片刻出现。DNS 查询会发送到你的设备所使用的解析器。

结果会与邮件一起存储。如果 DNS 查询失败,FOLD 会在你下次联网打开该邮件时重试。