2014-10-27 188 views
3

我在Docker容器中存在Postfix實例的問題。我使用supervisord來確保服務在後臺運行。但是,如果我構建映像,首次啓動它並嘗試發送郵件,Postfix會抱怨它無法解析給定地址的MX記錄(status=deferred (Host or domain name not found. Name service error for name=domain.tld type=MX: Host not found, try again))。Docker容器中的Postfix無法解析MX,除非它重新啓動一次

現在我安裝如果找出一個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

我遇到同樣的問題。仍在努力。我發現如果我在容器中運行綁定並修改/etc/resolv.conf以使用127.0.0.1,則後綴DNS解析工作。對於這個解決方案不感到興奮,因爲我不確定如何保持resolv.conf設置固定。仍試圖找出根本原因。 – 2014-11-26 16:32:24

+0

@JamesCooper我也是。即使將自定義DNS(Google)傳遞給Docker,也無法使其工作。這會導致我瘋了:P – frdmn 2014-12-18 08:07:49

+0

同樣的問題,也與Exim。我安裝了'host',好奇地它回答了-t MX或-t ANY,這是我認爲Postfix和Exim正在解決的問題。 – jkoreska 2015-01-05 20:47:36

回答

0

如果您使用的是VM VirtualBox的你可能已經遇到這個錯誤:https://www.virtualbox.org/ticket/11540

編輯:

爲了詳細說明,我有確切的問題,也與進出口的碼頭工人。我在我的Docker容器中安裝了一個備用DNS工具host,它在使用-t MX或甚至-t ANY運行時回答了A記錄。這導致我相信DNS被破壞,導致我發現VirtualBox的問題。

這不是Postfix或Docker,它是VirtualBox虛擬機上的DNS解析錯誤,默認爲resolv.conf。在其他環境中運行相同的軟件不存在此問題。

+0

這是作爲答案發布的,但它並不試圖回答這個問題。它應該可能是編輯,評論,另一個問題,或者完全刪除。 ***只有鏈接的答案是不可接受的。*** – cybermonkey 2015-01-05 21:05:56

+0

不夠公平。我有確切的問題,該鏈接回答了問題的癥結所在。我會詳細說明。 – jkoreska 2015-01-05 21:10:42

+0

@jkoreska感謝您的回覆。不幸的是,我不在虛擬機中運行它。 – frdmn 2015-01-09 09:29:14

2

當我嘗試在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 
相關問題