发出的邮件在接收方被标记为 DKIM 验证失败,最可能的原因是什么?
DKIM(RFC 6376)验证失败通常源于以下五个问题:
1. DNS 公钥记录未发布或不可访问。接收方根据邮件 DKIM-Signature 中的 s=(选择器)和 d=(域名)构造 DNS 查询:选择器._domainkey.域名。若此 TXT 记录缺失,验证直接失败。用 dig TXT s1._domainkey.example.com 确认记录存在。
2. 选择器(Selector)配置错误。发件 MTA 使用的选择器与 DNS 中发布的选择器不匹配。检查邮件系统 DKIM 配置中的 selector 参数,确保与 DNS 记录匹配。
3. 私钥与 DNS 公钥不配对。重新生成密钥对后,DNS 中仍是旧公钥,或发布了一个无关联的公钥。解决方法是:在邮件系统管理面板重新生成 DKIM 密钥对,然后将新公钥更新到 DNS。
4. 签名时使用了错误的域。DKIM-Signature 中的 d= 域必须与 DNS 公钥记录所在的域一致。如果 MTA 配置了多个域,确认每个域的签名选择器和密钥对是独立的。
5. RSA 密钥长度不足。部分邮件系统要求 DKIM 密钥至少 1024 位,推荐使用 2048 位。使用 OpenSSL 可生成:openssl genrsa -out private.pem 2048,再从私钥提取公钥:openssl rsa -in private.pem -pubout。
参考:RFC 6376 — DomainKeys Identified Mail (DKIM) Signatures, §3.3(Key Lookup),§3.5(Signature Verification)
