19.4.8 查看信件队列信息

19.4.8  查看信件队列信息

进行上述设置后,Postfix应该可以应对一般小型企业的Mail Server了。不过,有的时候因为网络的问题或者是对方主机的问题,可能导致某些信件无法送出而被暂存在队列中,那如何了解队列中有哪些邮件呢?在队列中等待送出的信件是如何送出的呢?

· 如果该封信在5分钟之内无法寄出,则通常系统会发出一封警告信给原发信者,告知该封邮件尚无法被寄送出去,不过,系统仍会持续的尝试寄出该封邮件。

· 如果在4小时后仍无法寄出,系统会再次发送警告信给原发信者。

· 如果持续进行5天都无法将信件送出,那么该封邮件会退回给原发信者。

当然,某些MTA已经取消了警告信的寄发,不过原则上,如果信件无法实时寄出去的话,MTA还是会努力尝试5天的;如果接下来的5天都无法送出时,才会将原信件退回给发信者。一般来说,如果MTA设置正确且网络没有问题,应该不可能会有信件被放在队列中而传不出去,所以如果发现有信件在队列时,需要仔细的看一下了。检查队列内容的方法可以使用Mailq,也可以使用postqueue-p来检查:

[root@linux ~]# postqueue -p
Mail queue is empty

若您的邮件如此显示时,恭喜您,没有问题邮件在队列中。不过,如果将Postfix关闭,并尝试发一封信给某个人,那就可能会出现如下的信息:

[root@linux ~]# /etc/init.d/Postfix stop
[root@linux ~]# echo "test" | Mail -s "testing queue" root
[root@linux ~]# postqueue -p
postqueue: warning: Mail system is down -- accessing queue directly
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
9C2D1A26AC       71 Thu Nov 23 14:59:31  root
                                         root

-- 0 Kbytes in 1 Request.
# 第一行就说明了无法寄出的原因为 Mail system is down
# 然后才出现无法寄出的信件信息,包括来源与目标

输出的信息主要有如下几项。

· Queue ID:表示此封邮件队列的代表号(ID),这个号码是给MTA看的,我们不需要看懂。
· Size:这封信有多大容量(bytes)。
· Arrival Time:表示这封信是何时进入队列的,并且可能会说明无法立即传送出去的原因。
· Sender/Recipient:送信与收信者的电子邮件。

事实上这封信是放置在/var/spool/Postfix里的,由于信件内容已经编码为给MTA看的资料排列,所以您可以使用postcat来读出原信件的内容。可以这样做(注意看文件名与Queue ID的对应):

[root@linux ~]# cd /var/spool/Postfix/Maildrop
[root@linux Maildrop]# postcat 9C2D1A26AC  <==这个文件名是Queue ID
*** ENVELOPE RECORDS 9C2D1A26AC ***         <==说明队列的编号
sender_fullname: root                          <==下面两个为发信者大名与E-mail
sender: root
recipient: root                                 <==收信者
*** MESSAGE CONTENTS 9C2D1A26AC ***         <==下面则是信件的内容
To: root
Subject: testing queue

test
*** HEADER EXTRACTED 9C2D1A26AC ***
*** MESSAGE FILE END 9C2D1A26AC ***

如此一来您就知道目前我们的MTA主机有多少未送出的信件,同时,未送出信件的内容也可以追踪到了。不过,如果想要Postfix立刻尝试将这些在队列中的信件寄出去,该如何操作呢?可以重新启动Postfix,也可以通过Postfix的操作来处理:

[root@linux ~]# /etc/init.d/Postfix restart
[root@linux ~]# Postfix flush

鸟哥个人建议使用Postfix flush即可。

分享到