您的位置: 网站首页 > 千军万马 > Linux操作系统 > 第8章 电子邮件服务器配置 > 【8.5 管理邮件队列】

8.5 管理邮件队列

 

8.5  管理邮件队列

一般当用户发送一封邮件的时候,Sendmail将立刻发送这一封电子邮件。但是如果当前网络忙使得无法立刻投递信件时,或者是目标地址的连接速度太慢,无法在短时间内投递到目标地址处时,Sendmail将把待发送的邮件排入队列,并在合适的时候重新发送。

队列文件通常存放在/var/spool/mqueue下面,每个待发送的邮件由几个文件构成,例如,用户可以看到下面的目录文件列表:

[root@mail mqueue]# ls

dfRAA27175 xfAAA00733 xfBAA00819 xfEAA32763 xfXAA00706

qfRAA27175 xfAAA00784 xfDAA01360 xfFAA01616

文件名字总是由一个两字符的前缀加上一个随机数字。前缀有4种:

1df:邮件内容。

2qf:邮件头和一些控制信息。

3xf:一些临时文件。

4tfqf文件的临时存储文件。

可以通过看队列中的qf文件来确定当前队列信息,不过通常都可以用mailq程序来完成对队列状态的查询:

[root@localhost mqueue]# mailq

Mail Queue (1 request)

--Q-ID-- --Size-- -----Q-Time----- ------------Sender/Recipient----------- -

RAA27175 22429 Fri Feb 25 17:34

: deferred)

bengok@163.com

这表示队列中目前只有一封信,由fangjc发出,收信人是bengok@163.com

Sendmail接受到的信件在用户取走之前将暂时存储在/var/spool/mail目录下面,存储的方法非常简单,就是每个有待读邮件的用户一个文件:

[root@localhost spool]# ls -l /var/spool/mail |more

total 19364

-rw-rw---- 1 anyi mail 7559035 Feb 28 22:04 anyi

-rw-rw---- 1 baixuan mail 514 Nov 7 01:32 baixuan

-rw-rw---- 1 cwc mail 515 Feb 28 08:35 cwc

如果一个用户有多封电子邮件,那么这些邮件就被简单地连接在一起构成一个大文件(所以用户会看到非常巨大的邮件文件)。

要查看邮件系统的状态,使用mailstats命令即可。

如果用户面对的是一个很庞大的邮件服务系统,有时会在某个邮件队列中拥塞太多的消息,用户可能想把这个队列暂停并且在网络空闲的时候再发送,暂停一个邮件队列的办法非常简单,就是将/var/spool/mqueue目录移走:

killall sendmail

mv /var/spool/mqueue /var/spool/mqueue.stop

mkdir /var/spool/mqueue

sendmail –bd

当网络空闲的时候,可以用-oQ参数立即处理拥塞的队列:

sendmail –oQ/var/spool/mqueue.stop –q.