Sendmail無法郵寄信件的問題
sendmail 無法郵寄信件的情況:
雖然 Mail 很方便,但是仍然會有無法郵寄信件的時候 !如果您已經設定好 Sendmail 了,但是總是無法郵寄出去,那可能是什么問題呢?
1.sendmail 無法郵寄信件的情況:關于硬件配備
無論任何情況之下,如果硬件出問題,那么所有的服務都將不正常啦!所以,請先檢查您的硬件是否“怪怪的!”這個先確認 OK 吧!
2. sendmail 無法郵寄信件的情況:關于網絡參數的問題
如果連不上 Internet ,那么哪里來的 Mail Server 呢?所以請先確認你的網絡已經正常的啟用了!關于網絡的確認問題,請查閱前幾篇“Linux 網絡偵錯”的內容介紹;
3.sendmail 無法郵寄信件的情況: 關于服務的問題
請務必確認 port 25 與 port 110 已經正確的啟動了!使用 netstat 指令即可了解是否已經啟動該服務!
4. sendmail 無法郵寄信件的情況:關于防火墻的問題
很多時候,很多朋友使用 Red Hat 或者其它 Linux distribution 提供的防火墻設定軟件,結果忘了啟動 port 25 與 port 110 的設定,導致無法收發信件!請特別留意這個問題喔!可以使用 iptables ( 核心為 2.4.xx 版本 ) 或者是 ipchains ( 核心為 2.2.xx 版本 ) 來檢查是否已經啟用該 port 呢!其余請參考簡易防火墻設定那一章喔!
5. sendmail 無法郵寄信件的情況:關于 TCP_Wrappers 的問題
如果你的 sendmail 還有支持 tcpd 這個程序 (或者說是 libwrap 這個函式庫 ) 的話,那么在 /etc/hosts.allow 與 /etc/hosts.deny 的設定也會影響到收發信件的正常與否!如果 /etc/hosts.deny 有設定“ALL: ALL”的話,那么請務必在 /etc/hosts.allow 里面加設“ sendmail: ALL ”喔!
6. sendmail 無法郵寄信件的情況:關于設定檔的問題
在 sendmail 8.11 版本中,僅有 sendmail.cf 這個設定檔,但是在 8.12 當中多了個 submit.cf 這個寄信功能檔案,請務必確定您的 *.mc 設定是正確的!
有一次在測試的時候,一直發信無法將信件寄出去!明明 sendmail.mc 都沒有什么問題,就是 local 無法寄信!后來才發現,因為我更動過 submit.mc 這個檔案,重新以 m4 跑過之后,忘記將他給改回來了!結果花了我兩天的時間在搞 sendmail.mc ....所以,在作任何一步動作的時候,請千萬記住“作筆記”或者“將動作記下來!”
7. sendmail 無法郵寄信件的情況:關于檔案權限的問題
一般來說,如果以 RPM 安裝 sendmail 會比較沒有問題,而如果以 Sendmail 8.12 以后版本手動安裝的話,那由于 sendmail 對于安全的要求越來越嚴格,所以你必須針對每個目錄或檔案進行檢查才行!通常檢查的目錄為:
/etc/mail :里面的檔案至少都為 644 或 640 的權限!
/var/spool/mqueue :務必為 700 的權限
/var/spool/clientmqueue:這在 8.12 才有,所有人與群組務必為 smmsp ,而權限務必為 770 ;
每個 ./forward 的檔案需要控制其權限喔!在 8.12 版本中, .forward 的“擁有群組”必須要為 smmsp ,并且其權限必須要為 640 才行喔!
8. sendmail 無法郵寄信件的情況:關于使用者的設定問題
一般而言,如果使用者不登入 sendmail 主機進行寄信的動作( local mailer ),那么 /etc/passwd 里面的設定就無關緊要了!不過,如果該使用者想要在 sendmail 本機上面使用 mail 的功能,那么在 8.12 版本當中,您就必須要:
使用者的 primary 群組必須要為 smmsp !
使用者的 shell 必須要可以登入才行!
其它使用者的相關檔案當中,最明顯的 .forward 權限必須設定正確!
9.sendmail 無法郵寄信件的情況: 其它檔案的設定問題
如果發現只有某個 domain 可以寄信,其它的同一主機的 domain 無法寄信,需要檢查 local-host-names 這個檔案的設定;
如果發現郵件被擋下來了!而且老是顯示 reject 的字樣,那么可能被 /etc/mail/access 擋住了;
如果發現郵件隊列 (mailq) 存在很多的郵件,可能是 DNS 死掉了,請檢查 /etc/resolv.conf 的設定是否正確!
10. sendmail 無法郵寄信件的情況:其它可能的問題
最常發生的就是認證的問題了!這是由于使用者沒有在 MUA 上面設定“我的郵件需要認證”的選項啦!請叫你的 client 端用戶趕緊勾選吧!
11.sendmail 無法郵寄信件的情況: 還是不知道問題的解決方案
一般而言,上面的幾個訊息應該可以提供您校正 sendmail 的問題了,不過,如果還是查不出問題的話,那么請務必檢查您的 /var/log/maillog (有的時候是 /var/log/mail ,這個要看 /etc/syslog.conf 的設定 ),當你寄出一封信的時候。
例如 vbird 寄給 bird2@tsai.adsldns.org 時,那么 maillog 檔案里面會顯示出兩行,一行為 from vbird一行為 to bird2@tsai.adsldns.org,也就是“我由哪里收到信,而這封信會寄到哪里去!”的意思,由這兩行就可以了解問題了!尤其是 to 的那一行,里面包含了相當多的有用信息,包括郵件無法傳送的錯誤原因的紀錄!
【編輯推薦】