DKIM body hash did not verify 错误怎么修?
51
DKIM body hash did not verify 错误怎么修?
▼
原因
DKIM body hash did not verify 表示接收方 MTA 重新计算的邮件正文 SHA256 哈希与 DKIM-Signature 头部中 bh= 字段的值不一致,即邮件正文在传输过程中被修改。
操作
1. 检查是否有邮件列表或网关修改了正文:
邮件列表软件(如 Mailman、Sympa)常添加 unsubscribe footer 或更改 Content-Type。用 grep -i 'list-id\|list-unsubscribe' /var/log/maillog 查看经过的 MTA。
2. 检查 MIME 编码转换:
MTA 在传输中将 8bit 转换为 quoted-printable 或 base64 时,正文字节流变化会导致 body hash 不匹配。
3. 应对方案:
— 配置出站 MTA 不对已签名的邮件做任何正文级修改。
— 对经过邮件列表的邮件,部署 ARC (RFC 8617) 进行转发链认证。
— 在接收端配置宽松 DKIM 验证策略,允许微小差异(如 VerifySecondCanonicalization=relaxed/simple)。
4. 验证:用 opendkim-testmsg -d example.com -s selector -D /path/to/private.key 在发送前测试 body hash 是否可重现。
RFC 6376 (DKIM Signatures, §3.7 Body) · RFC 8617 (ARC) · RFC 2045 (MIME) · RFC 5322 (Internet Message Format)
