我有一个 Docker 容器中的 Postfix 实例问题。我正在使用 supervisord 来确保服务在后台运行。但是,如果我构建镜像,第一次启动它并尝试发送邮件,Postfix 会提示它无法解析给定地址 ( status=deferred (Host or domain name not found. Name service error for name=domain.tld type=MX: Host not found, try again) ) 的 MX 记录。

现在我安装了 dig 以确定它是否是 DNS 问题,但我可以直接解决 MX:

$ dig mx domain.tld +short
90 aspmx2.googlemail.com.
90 aspmx3.googlemail.com.
10 aspmx.l.google.com.
50 alt1.aspmx.l.google.com.
50 alt2.aspmx.l.google.com.

然后我继续使用 service postfix restart 重新启动 Postfix,并且对 MX 问题消失感到非常震惊。我将这个问题复制了三遍以上,而且总是一样。我必须发出 service postfix restart 才能使 Postfix 完全正常工作。

有人可以解释我为什么或者更好:如何解决这个问题?

提前致谢!

最佳答案

当我尝试在 phusion/baseimage 上安装 postfix 时遇到了同样的问题,它用 runit 替换了 ubuntus init.d 系统。如果您发出“service postfix restart”,这仍然会运行/etc/init.d 中的 postfix 脚本,这反过来又会做很多我不明白的事情。其中之一是将一堆文件从/etc 复制到/var/spool/postfix/etc,包括resolv.conf。复制此文件为我解决了这个问题。因此,在您的运行脚本中,添加(取自/etc/init.d/postfix)

FILES="localtime services resolv.conf hosts nsswitch.conf nss_mdns.config"
for file in $FILES; do
    cp /etc/${file} /var/spool/postfix/etc/${file}
    chmod a+rX /var/spool/postfix/etc/${file}
done

关于docker - Docker 容器中的 Postfix 无法解析 MX,除非它重新启动一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26585185/

10-16 05:27