清除Qmail列隊(duì)郵件
Qmail有其令人稱道的優(yōu)點(diǎn),但是不可否認(rèn)的是,由于Qmail沒有控制接收郵件,于是很容易造成隊(duì)列的擁堵。如何清除Qmail列隊(duì)中的郵件呢?本文主要通過命令的方式解釋了刪除列隊(duì)的幾個問題。
[root@mail ~]# mailq 查看隊(duì)列郵件
postsuper -d ALL 這樣就刪除所有郵件啦
[注意:大小寫有區(qū)別,請注意大小寫!]
網(wǎng)上看到,Postfix 郵件隊(duì)列管理的幾個 Perl 小程序,pfdel.pl 是用來刪除隊(duì)列中指定用戶的郵件的,luserdel.pl 是用來刪除隊(duì)列中無效用戶的郵件的,moqdel.pl 是用來刪除隊(duì)列中郵箱配額已滿的用戶的郵件的,jmoqdel.pl 是刪除郵箱配額已滿的用戶的垃圾郵件箱的。我裝的是EMOS1.3,找不到這幾個小程序。
用外面的郵件服務(wù)器發(fā)點(diǎn)EDM,一直有問題,成功太少,干脆用自己的郵件服務(wù)器發(fā)送,誰知道3W多封郵件是發(fā)出去了,全部堵在我們自己的服務(wù)器上,郵件服務(wù)器給堵死了
只好刪除隊(duì)列中的垃圾郵件了,網(wǎng)上說是 mailq | tail +2 | awk ‘BEGIN { RS = “” } / chen@example\.org$/ { print $1 }’ | tr -d ‘*!’ | postsuper -d
參考官網(wǎng)寫個腳本也不行,應(yīng)該多研究下還可以的,腳本如下:
Q: 刪除郵件隊(duì)列
A: mailq | tail +2 | awk ‘BEGIN { RS = “” } / chen@example\.org$/ { print $1 }’ | tr -d ‘*!’
| postsuper -d -
[root@linuxas3 root]# vi mailqueue
#!/bin/bash
# netkiller@9812.net
queue=$1
# echo ${queue}
DELETE=”mailq | tail +2 | awk ’BEGIN { RS = \”\” } /${queue}$/ { print \$1 }’ | tr -d ‘*!’
| postsuper -d -”
echo ${DELETE} > queue
chmod 755 queue
./queue
[root@linuxas3 root]# chmod 755 mailqueue
[root@linuxas3 root]# ./mailqueue chen@example\\.org
mailq | tail +2 | awk ‘BEGIN { RS = “” } /chen@example\.org$/ { print $1 }’ | tr -d ‘*!’ |
由于郵件中有一些正常郵件,所以只能刪除特定字符的垃圾郵件,通過mailq顯示出來郵件隊(duì)列:2AB97F815E* 2749 Thu Feb 5 15:48:38 web1@shequsz.com
szmaxoni@public.szptt.net.cn 刪除郵件只需要命令postsuper -d 2AB97F815E即可。應(yīng)該通過管道可以簡單實(shí)現(xiàn),但是我對使用管道不熟悉,只好多走兩步了……
[root@mail ~]# mailq |grep shequsz\.com >>/home/maillist 到出包含shequsz.com的垃圾郵件到maillist
[root@mail home]# awk ‘{print $1}’ maillist >>/home/mywang/dellist 把郵件ID導(dǎo)出來,查看下如果帶*,需要編輯替換下
[root@mail mywang]# cat delmail.sh 編輯一個腳本,把文件里面ID逐個匹配然后刪除郵件
for i in `cat dellist`;
do postsuper -d $i;
done
[root@mail mywang]# sh delmail.sh
postfix有四種不同的郵件隊(duì)列,并且由隊(duì)列管理進(jìn)程統(tǒng)一進(jìn)行管理:
1. maildrop:本地郵件放置在maildrop中,同時也被拷貝到incoming中。
2. incoming:放置正在到達(dá)或隊(duì)列管理進(jìn)程尚未發(fā)現(xiàn)的郵件。
3. active:放置隊(duì)列管理進(jìn)程已經(jīng)打開了并正準(zhǔn)備投遞的郵件,該隊(duì)列有長度的限制。
4. deferred:放置不能被投遞的郵件。
postfix日常維護(hù)
啟動postfix postfix start
停止postfix postfix stop
重新讀取postfix配置文件 postfix reload
立即投遞隊(duì)列中所有郵件(慎用) postfix flush
查看隊(duì)列郵件 postqueue -p 或 mailqpostqueue -p |tail
使用postsuper 來維護(hù)隊(duì)列。一般是先用mailq查看隊(duì)列里的郵件,找到對應(yīng)的id,然后用postsuper -d來刪除。例如id是0EAF3A9B 那么postsuper -d 0EAF3A9B
Q: 刪除郵件隊(duì)列
A: mailq | tail +2 | awk ‘BEGIN { RS = “” } / chen@example\.org$/ { print $1 }’ | tr -d ‘*!’ | postsuper -d
詳細(xì)要看mailq和postsuper的用法
修復(fù)隊(duì)列以及任何權(quán)限錯誤
postfix check
查看郵件系統(tǒng)日志
tail -f /var/log/maillog
【編輯推薦】
- Qmai的配置
- 清除Qmail的郵件隊(duì)列軟件
- Qmail的使用技巧
- Sendmail Qmail Postfix 大比拼
- Qmail下的控制文件
- Linux下的郵件服務(wù)器 Qmail