当我已设置有效的 DKIM 时,为什么 Outlook/Hotmail/Live 上仍会出现 dkim=fail(正文哈希未验证)?
我已确保我的 SPF、DKIM、DMARC 记录设置正确,并且我域上的 DKIM 记录与我的服务器的 DKIM 密钥匹配。
当我从我的域名向 Google 等发送电子邮件时,我得到 SPF = Pass、DKIM = Pass、DMARC = Pass,并且是通过安全连接。一切顺利。
当使用相同配置发送到 Outlook.com 时,我收到错误:dkim=fail(主体哈希未验证)。为什么?
有人知道这是为什么吗?
我在 Debian 9 上使用带有 SpamAssassin 的 Postfix。
我的 DNS 记录很旧,这不是因为 DNS 传播。
我使用 Thunderbird 作为客户端发送电子邮件。
答案1
对我们来说,这是特殊字符的问题。比较 Gmail 中的源代码或“原始”电子邮件与 Hotmail 中相同电子邮件的源代码,您会发现导致 DKIM 失败的原因。对我们来说,这是和字符--
('
用单词而不是数字编码)。如果它以 HTML 编码,那就没问题,但如果将其添加为文本,然后粘贴到 HTML 中,那就不行了。
微软无法识别它们、应用规范化并删除它们,这导致正文哈希无法验证。
答案2
我正在使用 PHPMailer,也遇到了同样的问题,我的 DKIM 密钥在测试中可用,但在生产中却开始失效。原来,我的生产代码在输入的 $body 变量末尾插入了一个空格,$mail-> Body = $body
这导致了我的body hash did not verify
错误。