元月 10
近來為了在主機上以程式定期發送會員通知信,而需要透過 sendmail 來處理信件發送的事務。但卻發現 sendmail 一直把信直接收在主機內的信箱,而沒有正常的往外寄出。(因為該網址的 MX 都指向 Google apps 了)
在檢查許久之後,發現問題並不是常見的設定檔問題,例如:
- relay-domains
- local-host-names
等等。而是在於 DNS 的設定。
經反覆測試後發現,sendmail 會以該主機所綁定的所有 IP 進行反查,找出所有相關的網址,然後將這些網址列為內部信件的網址清單。當主機上有程式要發信時,只要收件者的網域符合清單中的記錄,就視為內部郵件,不再向外投遞。
而且,這份清單並不是每次寄發時都會重新取得,而是會保留一段時間。因此,如果把 DNS 的反查記錄取消後,仍然有可能寄到內部信箱去了。所以,有這種情況發生時,應該重新啟動 sendmail 以確保運作正常。
這裡提到的只有反解部份喔,也就是正解仍然可以指向那台主機(通常是為了讓 xxx.com 和 www.xxx.com 都能連到網站),但切記反解就不要把 xxx.com 加入喔。這樣就可以讓 sendmail 把信往外寄了。