Php

來自 linux 的傳出郵件未送達

  • June 11, 2012

我似乎無法通過我的 php 腳本或通過我的 Centos 5.5 LAMP 伺服器上的 linux 控制台發送郵件,當電子郵件被發送到由我的盒子託管的域時。

我認為這與內部電子郵件路由或盒子使用的 DNS 伺服器沒有報告正確的 MX 記錄有關。

基本上我的郵箱不託管任何郵件,它都託管在Google應用程序上。我的名稱伺服器由第 3 方提供商託管,我正在使用 webmin。Webmin 無法辨識第 3 方提供商的設置。

我不確定如何解決這個問題。以前,當我在 cpanel 伺服器上遇到這個問題時,我會編輯remotedomainslocaldomains文件,將域從一個文件移動到另一個文件,這樣就可以解決問題。

我需要向任何人提供什麼資訊才能找出問題所在?

謝謝

如果您執行sendmail -bt(sendmail 的測試模式)然後鍵入$=w,您將看到您遇到問題的域已列出。這是因為 sendmail 認為發往上述域的郵件必須在郵箱中本地發送,而不是發送給 Google。所以你要做的就是在兩個地方修改你的sendmail.mc(或者如果它們不存在則添加它們)。

首先在 LOCAL_CONFIG 部分添加一個地圖,用於查找域的最佳 MX:

LOCAL_CONFIG
Kbestmx bestmx -T.TMP

接下來,在 sendmail 選擇遞送代理的 LOCAL_RULE_0 部分中,使用上面的地圖將郵件路由到 Google:

LOCAL_RULE_0
R $* < @ example.com. > $*           $#esmtp $@ [$(bestmx example.com. $)] $: $1 < @ example.com. > $2
  • 注 1:將 example.com 替換為相關域
  • 注意 2:不要將規則複製粘貼到您的 sendmail.mc 中。為規則的左側和右側鍵入它們不是用空格分隔而是用製表符分隔。
  • 注意 3:編輯完 sendmail.mc 後,您必須建構 sendmail.cf,然後重新啟動 sendmail。我不知道這是如何在 CentOS 中完成的。我執行 Debian 並執行sendmailconfig

您可以在我的部落格文章中閱讀有關該問題的更詳細說明。

引用自:https://serverfault.com/questions/344105