发出去的邮件 DKIM 签名一直显示 "temperror" 怎么解决?
发出去的邮件 DKIM 签名一直显示 "temperror" 怎么解决?
temperror 是什么:DKIM 验证有三种结果码(RFC 6376 §3.9):none(无签名)、pass(验证通过)、fail(签名不匹配/密钥不匹配等永久失败)、temperror(临时错误,验证方无法完成验证,但可能重试后成功)、permerror(永久错误,语法错误等)。temperror 与 fail 有本质区别——fail 是你这边的问题(密钥/签名/正文),temperror 通常是验证方那一侧的问题,最常见的是 DNS 查询超时或密钥服务器不可达。
Step 1 — 区分是你的问题还是对方的问题:用第三方工具从外部验证你的 DKIM 签名。使用 MXToolbox DKIM Check、dmarcian DKIM Inspector 或 mail-tester.com 发送测试邮件。如果这些外部服务能成功获取公钥并验证通过(返回 pass),说明你的 DNS 和签名配置正确——temperror 局限在特定收件方。
Step 2 — 检查 DNS 权威服务器可达性:对收件方报告 temperror 的域,运行
dig +trace selector._domainkey.example.com,逐级查看从根到权威 NS 的解析链路是否完整。如果某级 NS 返回 SERVFAIL 或超时(timeout),说明你的 DNS 托管商的权威服务器存在间歇性问题。可以尝试切换到不同的 DNS 验证节点测试:dig txt selector._domainkey.example.com @8.8.8.8 和 @1.1.1.1 对比结果。Step 3 — DNSSEC 交互问题:如果你的域启用了 DNSSEC,但 DNSSEC 签名链存在问题(如 RRSIG 过期、DNSKEY 不匹配),部分验证方的 DNS 解析器在 DNSSEC 验证失败后会返回 SERVFAIL 而非回退到不安全响应——DKIM 侧表现为 temperror。检查 DNSSEC 状态:
dig +dnssec txt selector._domainkey.example.com,确认返回包含有效的 RRSIG 记录且 ad 标志位(Authenticated Data)为 1。Step 4 — DNS 托管商限流:如果短时间内大量邮件同时触发 DKIM 验证查询,你的 DNS 权威服务器可能对来自某一收件方的查询请求实施限流(rate limiting),导致部分查询超时返回 temperror。通常表现为:同一收件方间歇性出现 temperror(有时 pass 有时 temperror),且仅在你批量发送时出现。联系 DNS 提供商确认是否有 QPS 限制,必要时升级 DNS 服务方案或分散查询负载。
Step 5 — 收件方 DNS 解析器问题:收件方自己的 DNS 递归解析器可能存在配置缺陷(如使用有 bug 的解析器版本、缓存污染、内部防火墙拦截 UDP 53 端口导致回退到 TCP 超时)。这种情况你无法直接修复——只能通过 DMARC RUA 报告(RFC 7489)观察 temperror 趋势(关注
<dkim>result 中的 temperror 占比),联系收件方 postmaster 告知其 DKIM 验证的 DNS 查询存在异常。📎 RFC 6376 §3.9 DKIM 结果码;RFC 7489 §3.1 DMARC 与 DKIM 协作
