postfix 如何删除队列中的邮件

阅读更多

[root@mail ~]# mailq 查看队列邮件

postsuper -d ALL  这样就删除所有邮件啦

[注意:大小写有区别,请注意大小写!]

网上看到,Postfix 邮件队列管理的几个 Perl 小程序,pfdel.pl 是用来删除队列中指定用户的邮件的,luserdel.pl 是用来删除队列中无效用户的邮件的,moqdel.pl 是用来删除队列中邮箱配额已满的用户的邮件的,jmoqdel.pl 是删除邮箱配额已满的用户的垃圾邮件箱的。我装的是EMOS1.3,找不到这几个小程序。

用外面的邮件服务器发点EDM,一直有问题,成功太少,干脆用自己的邮件服务器发送,谁知道3W多封邮件是发出去了,全部堵在我们自己的服务器上,邮件服务器给堵死了postfix 如何删除队列中的邮件_第1张图片只好删除队列中的垃圾邮件了,网上说是 mailq | tail +2 | awk ‘BEGIN { RS = “” } / chen@example\.org$/ { print $1 }’ | tr -d ‘*!’ | postsuper -d 

参考官网写个脚本也不行,应该多研究下还可以的,脚本如下:

Q: 删除邮件队列

A: mailq | tail +2 | awk ‘BEGIN { RS = “” } / chen@example\.org$/ { print $1 }’ | tr -d ‘*!’ 

| postsuper -d -

[root@linuxas3 root]# vi mailqueue
#!/bin/bash
[email protected]
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显示出来邮件队列:2AB97F815E* 2749 Thu Feb 5 15:48:38 [email protected]

[email protected]   删除邮件只需要命令postsuper -d 2AB97F815E即可。应该通过管道可以简单实现,但是我对使用管道不熟悉,只好多走两步了……

[root@mail ~]# mailq |grep shequsz\.com >>/home/maillist 到出包含shequsz.com的垃圾邮件到maillist

[root@mail home]# awk ‘{print $1}’ maillist >>/home/mywang/dellist 把邮件ID导出来,查看下如果带*,需要编辑替换下

[root@mail mywang]# cat delmail.sh  编辑一个脚本,把文件里面ID逐个匹配然后删除邮件

for i in `cat dellist`; 

do  postsuper -d $i;

done

[root@mail mywang]# sh delmail.sh 

postfix有四种不同的邮件队列,并且由队列管理进程统一进行管理:


  1. maildrop:本地邮件放置在maildrop中,同时也被拷贝到incoming中。

  2. incoming:放置正在到达或队列管理进程尚未发现的邮件。

  3. active:放置队列管理进程已经打开了并正准备投递的邮件,该队列有长度的限制。

  4. deferred:放置不能被投递的邮件。


postfix日常维护

启动postfix        postfix start

停止postfix        postfix stop

重新读取postfix配置文件     postfix reload



立即投递队列中所有邮件(慎用)           postfix flush


查看队列邮件    postqueue -p 或 mailqpostqueue -p |tail


使用postsuper 来维护队列。一般是先用mailq查看队列里的邮件,找到对应的id,然后用postsuper -d来删除。例如id是0EAF3A9B 那么postsuper -d 0EAF3A9B


Q: 删除邮件队列


A: mailq | tail +2 | awk ‘BEGIN { RS = “” } / chen@example\.org$/ { print $1 }’ | tr -d ‘*!’ | postsuper -d


详细要看mailq和postsuper的用法


修复队列以及任何权限错误

postfix check

查看邮件系统日志

tail -f /var/log/maillog

你可能感兴趣的:(配置管理,脚本,Perl,Bash,.net)