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