Postfix 似乎忽略網域的 MX 記錄

Postfix 似乎忽略網域的 MX 記錄

在我的專用伺服器上,我安裝了 Postfix,用於透過網站發送電子郵件。我的一位客戶透過第三方託管他們的電子郵件,因此我們在網域上設定了 MX 記錄。

但是,當從伺服器發送任何 Postfix 電子郵件時,他們不會收到電子郵件。我認為由於網域指向伺服器本身,它會嘗試向自身發送郵件,但伺服器上沒有任何內容可以處理該網域的電子郵件。 (其他網域的郵件帳號運作良好。)

如何讓 Postfix 使用網域的 MX 記錄傳送電子郵件?伺服器是帶有標準 LAMP 堆疊的 Ubuntu 8.10。我安裝了Webmin,以及主機提供的名為「Matrix」的控制台。

編輯:如果我嘗試從自己的地址發送電子郵件,我會收到一封來自郵件傳送系統的錯誤電子郵件,其中包含以下錯誤:

<[email protected]>: user unknown. Command output: Invalid user specified.

Final-Recipient: rfc822; [email protected]
Action: failed
Status: 5.1.1
Diagnostic-Code: x-unix; Invalid user specified.

以下是所做的日誌條目:

Jan  6 18:06:52 localhost postfix/pickup[29006]: 0329D3F69: uid=33 from=<[email protected]>
Jan  6 18:06:52 localhost postfix/cleanup[30495]: 0329D3F69: message-id=<[email protected]>
Jan  6 18:06:52 localhost postfix/qmgr[22461]: 0329D3F69: from=<[email protected]>, size=611, nrcpt=2 (queue active)
Jan  6 18:06:52 localhost postfix/pipe[30497]: 0329D3F69: to=<[email protected]>, relay=maildrop, delay=0.15, delays=0.1/0/0/0.04, dsn=5.1.1, status=bounced (user unknown. Command output: Invalid user specified. )
Jan  6 18:06:52 localhost postfix/smtp[30498]: 0329D3F69: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[209.85.227.27]:25, delay=0.61, delays=0.1/0.01/0.06/0.45, dsn=2.0.0, status=sent (250 2.0.0 OK 1294337212 o18si30528441wbo.103)
Jan  6 18:06:52 localhost postfix/cleanup[30495]: 868723F75: message-id=<[email protected]>
Jan  6 18:06:52 localhost postfix/bounce[30500]: 0329D3F69: sender non-delivery notification: 868723F75
Jan  6 18:06:52 localhost postfix/qmgr[22461]: 868723F75: from=<>, size=2553, nrcpt=1 (queue active)
Jan  6 18:06:52 localhost postfix/qmgr[22461]: 0329D3F69: removed
Jan  6 18:06:52 localhost postfix/pipe[30497]: 868723F75: to=<[email protected]>, relay=maildrop, delay=0.06, delays=0.01/0/0/0.05, dsn=2.0.0, status=sent (delivered via maildrop service)
Jan  6 18:06:52 localhost postfix/qmgr[22461]: 868723F75: removed

答案1

所以,我工作很無聊,想提以下。我以前從未使用過這個網站,所以請原諒我。

對於其中一個答案,您事後評論:

「好吧,我有 virtual_mailbox_domains = $transport_maps 和 Transport_maps = hash:/etc/postfix/transport。該文件內有一行內容為condorproperties.co.uk maildrop: - 我應該刪除該行嗎? – DisgruntledGoat 昨天”

然後接著是:

“@Devdas:我已經嘗試刪除該行並重新啟動 Postfix,它不能解決問題,我需要將“maildrop”更改為其他內容嗎? – DisgruntledGoat 昨天”

第一個問題的答案是「是」。 /etc/postfix/transport 中的該行強制對發送至condorproperties.co.uk 的電子郵件進行本地郵件投遞(透過maildrop)。去掉是最適合的。問題是僅僅重新啟動 postfix 不足以應用變更。

問題是,設定檔中設定的對應是一個雜湊:/etc/postfix/transport。檔案 /etc/postfix/transport 是該檔案的人類可讀版本,並且應該有一個對應的 /etc/postfix/transport.db - 已編譯的雜湊圖 - 檔案。您可以使用命令 postmap 將人類可讀的版本編譯為雜湊版本。 Postfix 確實會檢查修改時間,並且應該在日誌檔案中大聲抱怨 /etc/postfix/transport.db 已過時。您需要做的就是執行 postmap /etc/postfix/transport 以便您先前所做的變更(刪除condorproperties.co.uk 行)生效。事實上,我認為一旦您發出了 postmap 命令,您甚至不需要重新載入 postfix 即可使變更生效,但這不會有什麼壞處。

長話短說,運行 postmap /etc/postfix/transport 然後 postfix 重新載入。

乾杯。

順便說一句,您的日誌檔案中的重要線索是這一行: Jan 6 18:06:52 localhost postfix/pipe[30497]: 0329D3F69: to=, relay=maildrop, delay=0.15, Delays=0.1/0/ 0/0.04, dsn=5.1.1,status=bounced(使用者未知。指令輸出:指定的使用者無效。)

注意,中間有寫著「relay=maildrop」嗎?

答案2

您可以將 postconf -n 貼到這裡嗎?

我敢打賭,您已將 mydomain.co.uk 明確列在 mydestination、virtual_mailbox_domains 或 relay_domains 之一中,並且傳輸為 maildrop。

ring0 的想法是正確的,但據我了解,錯誤地解析了問題。目標是讓伺服器上某個網域的電子郵件傳送到其他地方,但它仍保留在 Postfix 中。

任何郵件伺服器都會有本機設定覆蓋 DNS。因此,如果您的 MTA 不查看 DNS,則您的本機設定中有該網域。

答案3

postfix遵循標準,對網域名稱進行MX條目解析,以便找到接下來要聯絡哪個伺服器來傳輸郵件。

  • 您可能會因網域名稱(區域)的 TTL 而遇到問題,例如您在註冊商更新了 MX 條目,但該網域的 TTL 使先前解析的條目保留在網域名稱伺服器的快取中。

  • 此外,目標伺服器上的網域不得聲明為當地的,使伺服器拒絕郵件(請參閱日誌,例如/var/log/mail.log),考慮到您的發送伺服器正在嘗試通過該目標伺服器(mydestination在 中/etc/postfix/main.cf)中繼(垃圾郵件)。

嘗試dig +nocmd mydomain.tld mx +noall +answer獲取易於閱讀的信息,包括您關心的域中的 TTL。

答案4

另請檢查您是否沒有以某種方式為要向其發送郵件的遠端網域定義任何自訂傳輸或傳輸對應。

相關內容