Php
來自 linux 的傳出郵件未送達
我似乎無法通過我的 php 腳本或通過我的 Centos 5.5 LAMP 伺服器上的 linux 控制台發送郵件,當電子郵件被發送到由我的盒子託管的域時。
我認為這與內部電子郵件路由或盒子使用的 DNS 伺服器沒有報告正確的 MX 記錄有關。
基本上我的郵箱不託管任何郵件,它都託管在Google應用程序上。我的名稱伺服器由第 3 方提供商託管,我正在使用 webmin。Webmin 無法辨識第 3 方提供商的設置。
我不確定如何解決這個問題。以前,當我在 cpanel 伺服器上遇到這個問題時,我會編輯
remotedomains
和localdomains
文件,將域從一個文件移動到另一個文件,這樣就可以解決問題。我需要向任何人提供什麼資訊才能找出問題所在?
謝謝
如果您執行
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
您可以在我的部落格文章中閱讀有關該問題的更詳細說明。