我在電纜調變解調器(bresnan communications)後面設定了一個小型家庭伺服器。我希望能夠讓這個盒子發送電子郵件(而不是接收)通知之類的。
我已經做了什麼:
- 我已經安裝並設定了sendmail。
- 我已添加
mail.bresnan.net
為我的SMART_HOST
指令。
我相信問題是
當我嘗試發送電子郵件時,我的郵件日誌中顯示以下內容:
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns,
size=140, class=0, nrcpts=1,
msgid=<[email protected]>,
relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<[email protected]>,
size=397, class=0, nrcpts=1,
msgid=<[email protected]>,
proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
to=<[email protected]>, ctladdr=aburns (1000/1000),
delay=00:00:00, xdelay=00:00:00, mailer=relay,
pri=30140, relay=[127.0.0.1] [127.0.0.1],
dsn=2.0.0, stat=Sent (oBMHOHWZ001531 Message accepted for delivery)
Dec 22 10:24:18 batcave sm-mta[1517]: oBMH9mVv001357:
to=<[email protected]>, ctladdr=<[email protected]>
(1000/1000), delay=00:14:30, xdelay=00:00:42, mailer=relay,
pri=300339, relay=pmx0.bresnan.net. [69.145.248.1],
dsn=4.0.0, stat=Deferred: Connection timed out with pmx0.bresnan.net.
您可以看到我的 sendmail 伺服器在何處接受郵件傳送,然後在何處嘗試將其移交給 Bresnan 的伺服器並逾時。
這就是我的問題所在。精明的讀者會注意到,這pmx0.bresnan.net
不是我SMART_HOST
設定的指令。這是MX
bresnan.com/net 網域的(外部?)伺服器。顯然,布雷斯南已經配置了他們的網絡,因此您無法從他們自己的網絡內訪問該伺服器,而必須使用該mail.bresnan.net
伺服器(我可以連接到該伺服器)。問題是我不知道如何告訴 sendmail 使用這個伺服器而不是領域。
我嘗試過的
- 設定主機條目,以便 pmx0 伺服器指向郵件 IP 位址。這是行不通的,這是有道理的,因為 sendmail 顯然正在執行 MX 查詢來查找返回 IP 的伺服器,因此不需要執行「正常」DNS 解析,因此主機檔案永遠不會參與其中。
修復(對於所有外發郵件):
再次,props 轉到 webmin(請參閱下面的註釋)來幫助我學習這一點。如果您輸入帶有方括號的智慧型主機,指示 sendmail 不進行 MX 查找,那麼:(define('SMART_HOST','[69.145.248.18]')
修復引號 -> 反引號)實際上無需郵件程式表即可運作。
修復(針對特定域):
如下圖所示,mailertable
需要設定 a。然而,正如在手冊頁,還需要在您的sendmail.mc
文件中啟用此功能。
另請注意,郵件程式路由不會強制 sendmail 使用指定的伺服器進行所有操作,它基於收件者的位址。這實際上對我來說沒問題,因為我只需要發送到幾個網域(gmail、google 託管和我的工作)。
概括:
- 添加
FEATURE('mailertable')
到您的sendmail.mc
文件。 (請注意,第一個引號應該是反引號。 - 建立您的
/etc/mail/mailertable
文件(參見手冊頁) - 建立一個地圖檔案:
sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
- 重建你的配置
make -C /etc/mail
- 重新啟動發送郵件:
service sendmail restart
筆記:我高度建議使用 WebMin 編輯/重建這些文件。如果沒有它,我會瘋狂地試圖找出為什麼我的 mailertable 檔案被忽略。
答案1
您可以透過在 sendmail 檔案中新增一個簡短的條目來繞過 MX 查找/etc/mail/mailertable
。
文件的內容可能應該只有一行,例如:
bresnan.net esmtp:[69.145.248.18]
儲存檔案並重新啟動 sendmail(如果必須手動完成,則重建 sendmail.cf)。