docker 中的 postfix 无法解析中继主机的主机名

docker 中的 postfix 无法解析中继主机的主机名

在 docker 容器中运行的 postfix 实例似乎无法解析我的中继的主机名,即 outbound.mailhop.org(以前是 Oracle,现在归 DuoCircle 所有)。

中继失败并显示以下消息:

Apr  5 14:59:27 smtp postfix/smtp[103]: 10E6F481F6D: to=<[email protected]>, relay=none, delay=938, delays=938/0.03/0/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=outbound.mailhop.org type=A: Host not found, try again)

在上面的设置中我使用了如下 A 记录查找:

relayhost = [outbound.mailhop.org]:465

但 MX 记录查找也会失败:

relayhost = outbound.mailhop.org:465

为了分析问题,我扩展了debian:stable-slim镜像以包含包,并在容器内dnsutils启动了一个交互式shell。在那里我可以使用或进行查找,没有任何问题。bashoutbound.mailhop.orgnslookupdig

我能想到的唯一相关的东西是 nscd。启动 postfix 需要 unscd 包。然而根据/etc/nscd.confwhich 的说法:

enable-cache hosts no

任何查找都应始终直接寻址名称服务器。

我真的不明白为什么nslookup工作digpostfix显示出问题。

答案1

因此,问题的原因在于,master.cf子程序relay配置为在chroot位于 的中运行/var/spool/postfix。由于在我的容器中没有/etc/hosts/etc/resolv.conf相对于 chroot 目录的 ,因此 postfix 无法正确解析主机名也就不足为奇了。

  • 起初我只是将现有的复制/etc/resolv.conf到 chroot 目录就可以了。
  • 在 docker 容器中运行 postfix - 就像是强化版的 chroot - 后来我将其改为master.cf禁用所有 postfix 子程序的 chrooting。

相关内容