Valimail:DKIM 验证失败(dkim=fail)的原因、类型、实例与修复指南
DKIM 失败指接收方无法验证邮件签名。Valimail 详解 7 类 DKIM 失败(签名不匹配、密钥未找到、密钥过期、DNS 问题、配置错误、正文哈希未验证、无签名密钥),并给出诊断步骤与用 relaxed/relaxed 规范化、密钥轮换、避免签名后改内容等修复实践。
📖 原文翻译与解读。原文:DKIM fail: Reasons, types, examples, and how to fix it(Valimail,Valimail 原文未标注发布日期)
一、什么是 DKIM fail
DKIM(DomainKeys Identified Mail)用加密签名证明邮件合法且未被篡改。当接收服务器无法验证签名、或根本找不到签名时,邮件头显示 dkim=fail。在 Authentication-Results 头中表现为 dkim=fail。根据发件域的 DMARC 策略,失败可能导致邮件被投递、隔离或拒绝。
二、DKIM 失败的原因
- 签名与 DNS 中发布的公钥不匹配;
- 按邮件指定的 selector 在 DNS 中找不到密钥;
- 签名后邮件内容被修改(网关、防病毒、转发服务追加内容);
- DKIM 密钥过期且未更新;
- DNS 解析问题(传播延迟、配置错误);
- 配置不正确(密钥长度错误、记录格式不当);
- 签名后由安全网关或转发服务修改了正文/头信息。
三、七类 DKIM 失败
| 类型 | 含义 | 典型后果 |
|---|---|---|
| Signature mismatch | 签名与公钥不匹配 | 被标垃圾或拒收 |
| Key not found | DNS 中无对应公钥 | 验证失败、送达率下降 |
| Expired key | 密钥过期未更新 | 所有外发失败 |
| DNS issues | 解析/传播故障 | 临时性失败 |
| Incorrect configuration | 长度或格式错 | 持续失败 |
| Body hash did not verify | 签名后内容被改(如加页脚) | 签名失效 |
| No key for signature | selector 对应记录缺失 | 完全失败 |
四、真实示例
- 某大学输错 selector,新密钥签名的邮件全部失败——用正确 selector 更新 DNS 解决;
- 营销邮件被转发后追加免责声明,正文 DKIM 失败——改用保留签名的转发服务;
- 非营利组织忘记更新密钥,一年后所有外发失败——建立密钥轮换计划;
- 初创公司更新密钥后立即签名,传播期内部分供应商找不到公钥——先监测传播再签名;
- 企业升级到 2048 位但 DNS 只发了 1024 位公钥,验证失败——发布正确长度公钥。
五、如何修复
① 读取 Authentication-Results 的具体错误:body hash did not verify 多为签名后内容被改,将 DKIM 规范化从 simple/simple 改为 relaxed/relaxed 多可修复;no key for signature 则确认记录位于 [selector]._domainkey.[yourdomain.com]。② 定期轮换 DKIM 密钥并提前更新 DNS。③ 仔细核对 selector 与密钥长度(推荐 1024 或 2048 位,短于 1024 位有安全风险)。④ 禁止中转/转发/安全工具在签名后改动正文或头。⑤ 留足 DNS 传播时间。⑥ 持续审计 DKIM/SPF/DMARC 配置。
对邮件系统运维,DKIM 对齐是 DMARC 通过的基石——参见 SPF/DKIM/DMARC 部署检查清单。
了解更多行业资讯,请访问 行业资讯首页 或致电 021-69753778 获取安全咨询服务。
相关文章
—— ztpop.net 编辑团队 译
