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