我在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工作完全正常。
有人可以解释我为什么甚至更好:如何解决这个问题?
提前致谢!
答案 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解析的错误。在另一个环境中运行相同的软件没有这个问题。