Docker容器中的Postfix除非重新启动一次,否则无法解析MX

时间:2014-10-27 10:11:25

标签: docker postfix-mta supervisord

我在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工作完全正常。

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

提前致谢!

2 个答案:

答案 0 :(得分:4)

当我尝试在phusion / baseimage上安装postfix时遇到了同样的问题,它用runit替换了ubuntus init.d系统。如果您发出" service postfix restart",则会在/etc/init.d中运行后缀脚本,而后者又会执行很多我不理解的事情。其中之一是将/ 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

答案 1 :(得分:0)

如果您使用VirtualBox VM,可能会遇到此错误:https://www.virtualbox.org/ticket/11540

编辑:

详细说明,我遇到了确切的问题,也是Docker中的Exim。我在Docker容器中安装了备用DNS工具host,并在使用A甚至-t MX运行时回复了-t ANY条记录。这让我相信DNS被破坏了导致我发现VirtualBox的错误。

它不是Postfix或Docker,它是具有默认resolv.conf的VirtualBox VM上DNS解析的错误。在另一个环境中运行相同的软件没有这个问题。