Postfix 发信一直显示 "Temporary lookup failure" 怎么解决?
Postfix 发信一直显示 "Temporary lookup failure" 怎么解决?
问题界定:Temporary lookup failure 意味着 Postfix 在做某次查询时失败但标记为可重试。区别于 fatal error——邮件会进入 deferred 队列而非直接退信。但持续出现时说明查询源存在持续性问题。
Step 1 — 确定失败类型:在
/var/log/mail.log 中 grep 该条错误并查看完整上下文。常见关键字可以定位:含 Host or domain name not found → DNS 解析问题;含 transport → transport_maps 路由表故障;含 virtual → 虚拟域数据库故障。Step 2 — DNS 排查:
dig mx recipient.com +short 从本机测试目标域 MX 记录是否可达。检查 /etc/resolv.conf 中 nameserver 配置是否正确。如果本机 DNS 不可达,Postfix 所有外发投递都会报 lookup failure。Step 3 — transport_maps 排查:如果使用了按域路由(
transport_maps = hash:/etc/postfix/transport),确认 transport 文件格式为 domain.com smtp:[relay.host],并且每次编辑后执行了 postmap /etc/postfix/transport 生成 .db 文件。遗漏 postmap 是最常见的错误。Step 4 — 虚拟域数据库排查:对 virtual_alias_maps 或 virtual_mailbox_maps,用
postmap -q user@domain hash:/etc/postfix/virtual 做点对点查询测试。如果无输出,说明该条目不存在或数据库未正确生成。📎 RFC 5321 §4.5.4 重试策略;Postfix ADDRESS_REWRITING_README 官方文档
