關于Sendmail信件隊列
關于sendmail信件隊列:
對于 Sendmail 設定到目前為止,應該也可以正常的應付蠻多工作的啦!
但是我們還是得要了解一下的是:如果我將郵件送到 Sendmail 主機后,Sendmail 便會幫我將該封郵件傳送到目的地的 MTA ,不過,如果目的地 MTA 主機有問題時,這封信會怎么跑?
一般來說,如果 DNS 設定正確的話,也就是說目的地 MTA 有 MX 標志存在時,只是剛好這部主機暫時無法聯機,或者是有些問題,導致無法立即接受來自你的 MTA 的郵件,此時這封郵件將會被放置到你的 MTA 主機的隊列目錄去,通常預設是在 /var/spool/mqueue 當中!
然后在一定的周期時間內, Sendmail 會定時的嘗試將郵件寄送出去,一般 Sendmail 的預設設定是:
1. 如果該封信在五分鐘之內無法寄出,則系統會發出一封『警告信』給原發信者,告知該封郵件尚無法被寄送出去,不過,系統仍會持續的嘗試寄出該封郵件;
2. 如果在四小時候仍無法寄出,系統會再次的發出警告信給原發信者;
3. 如果持續進行五天都無法將信件送出,那么該封郵件就會退回給原發信者了!
在 Red Hat 的預設條件中,在 /var/spool/mqueue 當中的信件會每隔 60 分鐘由 Sendmail 嘗試重新傳送一次到目的地去!
這個嘗試的時間是可以改變的!可以利用 sendmail 的指令或者直接修改 /etc/sysconfig/sendmail 里面的 『QUEUE=時間』來修訂!
例如,如果你想要讓 Sendmail 每隔 30 分鐘就幫你嘗試傳送 /var/spool/mqueue 里面的未寄出的信件時,那么就將 /etc/sysconfig/sendmail 這個檔案里面的『QUEUE=1h 』改成『QUEUE=30m 』即可!
信件隊列的內容:
老實說,信件隊列的內容是給 Sendmail 看的,不是給人看的,所以我們都不可能看的懂他的訊息!這個時候,只得以 Sendmail 的指令來反查這些郵件隊列到底是什么咚咚了!很簡單的,只要下達 mailq 或者是 sendmail -bp 就可以這些郵件隊列的基本數據!
[root@test root]# mailq
/var/spool/mqueue (1 requests)
----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------
h1LEKYR23711 36414 Fri Feb 21 22:20
(Deferred: Connection refused by vbird.adsldns.org)
Q-ID:表示此封郵件隊列的代表號 ( ID );
Size :這封信有多大容量 ( bytes )的意思;
Q-Time:這封信什么時候進入 /var/spool/mqueue 這個目錄的,并且說明無法立即傳送出去的原因 (例如上面的 Deferred );
Sender/Recipient:送信與收信者的電子郵件啰!
如果您有開放郵件的話,那么記得偶而要去看一看您的郵件隊列 ( mailq ) 是否存在大量的未寄出信件喔!好讓你知道是否可能被當作轉信站啦!
【編輯推薦】
- Sendmail的功能之別名設定與郵件備份
- Sendmail的功能之群發
- Sendmail的郵件目錄
- Sendmail郵件收受流程(一)
- Sendmail郵件收受流程(二)
- Sendmail的功能之寄送外部郵件
- Sendmail配置筆記之配置篇
- Sendmail配置筆記之安裝篇