Delete Mail Queue

很多單位機關因為 “便民服務",因此發展了一種叫做 “電子報" 的東西。

這種服務說起來也真妙,往往訂了之後大家又把他們當做垃圾信件,在使用者的收件軟體上直接轉到 “垃圾件信" 資料夾。

這樣也就算了,更狠的 MIS 更是把發電子報的 IP 或 domain 整個鎖起來。

OK, 已經離題了,不過 Steven 確實常常發現,很多使用者在填註冊表單時,E-mail 帳號實在是亂七八糟,不知道是太好填了還是怎樣,大家就隨便填一填,反正自己又不會收到 XD

但是對於發信的 Server 來說,信發不出去也是一個困擾,一般系統會由程式去發信,但是發完之後遇到被退或是沒有回應的主機,最終的結果還是跑到 root 帳戶,以至於每次在 root 下了 mail 指令,洋洋灑灑的幾千幾萬封無效信件都流到 root 這裡來了(好吧,我相信有很多管理員不會收 root 的信件 XD),再不然就是下了 mailq 之後系統好像升天了一樣,好一陣子沒有回應,過了一段時間後畫面顯示幾千封(或上萬封)排隊等著被載出門的信。

既然每封信會有各種阿撒不魯的原因(沒設 MX、被對方檔了、找不到主機、使用者亂填 … 等等),讓信件發不出去,說實在的對 Server 來說,這些件也不用一直重試了,Steven 發狠提了個建議:

  • 所有信件不需要重新試著重發
  • 設定減少 mail 的存活時間
  • 設定實體退信的帳戶

# 寄不出去的信每三個小時重寄一次,對就是等久一點,反正正常的主機是不會沒有回應的 XD

maximal_backoff_time = 3h

# 在一天之內重試無用的話就直接退給發信者 (找不到會回到 root)

maximal_queue_lifetime = 1d

建立實體退信的帳戶

程式管理員和系統管理者,應該要配合好信件的處理,有時候 coding 的人為了方便直接在程式上設定了無效的寄件者,最後測試時找了一堆不存在的 mail,這些 mail 最後還是回到 root,久了變成 mail box 太大,最後形成管系統的人和 coding 的人一直在吵架 @@

其實不一定要建立實體退信帳戶,使用 alias 的方法也可以,主要就是不要讓信又回到 root 就可以了

而處理退信帳戶的方法有很多,較好的 coding 應該會分析這些被退回的信件,讓系統不再發給對方,減少 Server 負擔。

若是對退信的帳戶本來就沒有要處理的話,那麼小弟建議系統管理員就發狠吧,直接把 mailbox 清空就好了 @@,反正也不會有人去看 XD

BTW,如果要即時處理現在 queue 在 server 上的信件,可參考以下方法

刪掉所有 queue,信會直接被刪掉,不會再重試

root # postsuper -d ALL

刪掉特定信件

root # postsuper -d ${MAIL_ID}

以上是 postfix 的做法,若是使用 sendmail 的話,可以用下列方式

不好意思,Steven 幾百年沒碰 Sendmail 了,所以只會用下列的方法來做 @@

root # cd /var/spool/mqueue

root # find ./ | xargs rm -rf

以上,大家在為了 “便民服務" 的同時,也要保護自己,因為總是有小白到處亂走,那些留下的垃圾實在是不需要再回了,守規矩的人一樣是守規矩,不用為那些小白花太多心力的 :D

Comments are closed.

十一月 2019
« 五月    
 123
45678910
11121314151617
18192021222324
252627282930  

Google ADs