postfix有四种不同的邮件队列,并且由队列管理进程统一进行管理:
 
1. maildrop:本地邮件放置在maildrop中,同时也被拷贝到incoming中。
 
2. incoming:放置正在到达或队列管理进程尚未发现的邮件。
 
   3. active:放置队列管理进程已经打开了并正准备投递的邮件,该队列有长度的限制。

 

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

 

 

常用日常维护指令:


1.启动postfix      postfix start


2.停止postfix      postfix stop


3.重新读取postfix(配置文件配置文件有改动后)      postfix reload


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


5.查看队列邮件
      postqueue -p
      mailq
      postqueue -p |tail

 

6.使用postsuper 来维护队列。


 一般是先用mailq查看队列里的邮件,找到对应的id,然后用postsuper -d来删除。


 例如id是0EAF3A9B 那么postsuper -d 0EAF3A9B

 

7.删除邮件队列(详细要看mailq和postsuper的用法)

 

postqueue -p 查看队列内容
postcat 查看队列里邮件内容

postsuper -d ALL (hold/deffered...) 删除某个队列里所有邮件

 

8.删带有某特征的

在《Postfix 权威指南》里有一个叫 pfdel 的 Perl 小程序,可以用它删除指定邮件地址的邮件(不管是发信人还是收信人的邮件地址),这个虽然方便,但是如果想要清除因为 maildir over quota 或者 Invalid user specified 错误而产生的邮件,还需要修改一下。下面是这四个程序:

  • pfdel.pl

  • luserdel.pl

  • moqdel.pl

  • jmoqdel.pl

其中,pfdel.pl 是用来删除队列中指定用户的邮件的,luserdel.pl 是用来删除队列中无效用户的邮件的,moqdel.pl 是用来删除队列中邮箱配额已满的用户的邮件的,jmoqdel.pl 是删除邮箱配额已满的用户的垃圾邮件箱的。

           postfix_tools打包下载地址 :   postfix_tools

 

9.修复队列以及任何权限错误      postfix check


10.查看邮件系统日志     tail -f /var/log/maillog (-f 参数用于实时显示,便于查看)

 

-----------------

postfix日志脚本

# statistic recipient
echo "Part one : - Top 10 Recipient domain "
fgrep to= /var/log/maillog | cut -d/< -f2 | cut -d/> -f1 | cut -d@ -f2 | sort | uniq -c | sort -nr |head

# statistic sender
echo "Part two: - Top 10 Sender domain "
fgrep from= /var/log/maillog | cut -d/< -f2 | cut -d/> -f1 | cut -d@ -f2 | sort | uniq -c | sort -nr | head

# statistic destination mail total count
echo "Part three: Total lines and sizes of log, And total mail sent"
cat /var/log/maillog | fgrep status=sent | wc -l | awk '{ print $1 }'

echo ""; echo "Scanning maillog for rejections:"
cat -fc /var/log/maillog | egrep reject: | cut -d : -f 5- | sort | uniq -c | sort -nr | grep -v '^  *[1-2]  *[^ ]* [^ ]* from [^ ]*: 450 '

echo "Scanning maillog for warnings:"
cat /var/log/maillog | egrep warning: | cut -d : -f 5- | sort | uniq -c

echo "Scanning maillog for trouble:"
cat /var/log/maillog | egrep '(fatal|panic):'

检查hash文件结果的命令
 postmap -q xxxxxx@163.com hash:permited_sender
 postmap -q "xxxxxx@163.com " mysql:/usr/local/etc/postfix/mysql-sender.cf