管理我们的邮件队列(图)

来源:本网整理

1、队列文件通常存放在/var/spool/mqueue下面,每个待发送的邮件由几个文件构成,例如,我们可以看到下面的目录文件列表:[root@mail mqueue]#lsdfRAA27175 xfAAA00733 xfBAA00819 xfEAA32763 xfXAA00706qfRAA27175 xfAAA00784 xfDAA01360 xfFAA01616文件名字总是由一个两字符的前缀加上一个随机数字。前缀有四钟:df:邮件内容qf:邮件头和一些控制信息xf:一些临时文件tf:qf文件的临时存储文件2、可以通过看队列中的qf文件来确定当前队列信息,不过通常都可以用mailq程序来完成对队列状态的查询:root@mail mqueue]#mailqMail Queue(1 request)Q-ID-Size-Q-Time-Sender/Recipient-RAA27175 22429 Fri Feb 25 17:34deferred)net这表示队列中目前只有一封信,由zhangfl发出,[url=mailto:收信人是×@×.net]收信人是×@×.net]。3、查看队列:mailq查看MTA队列的滞留情况(等价于sendmail-bp)mailq-Ac#查看MSP队列的滞留情况(等价于sendmail-bp-Ac)强制送信:usr/sbin/sendmail-q-v对MTA队列强制送信usr/sbin/sendmail-q-v-Ac对MSP队列强制送信注:如执行完以上命令后,队列中仍然还有很多邮件,这时需要多次执行以上命令,直到邮件发送完为止。参数说明:q 立即处理队列的内容.v 显示进度详细信息Ac 读取MSP队列(默认是读取MTA队列)4、sendmail接受到的信件在用户取走之前将暂时存储在/var/spool/mail目录下面,存储的方法非常简单,就是每个有待读邮件的用户一个文件:[root@mail spool]#ls-l/var/spool/mail|total 19364rw-rw-1 anyi mail 7559035 Feb 28 22:04 anyirw-rw-1 baixuan mail 514 Nov 7 01:32 baixuanrw-rw-1 cwc mail 515 Feb 28 08:35 cwc如果一个用户有多封电子邮件,那么这些邮件就被简单地连接在一起构成一个大文件(所以你会看到非常巨大的邮件文件)。5、如果你面对的是一个很庞大的邮件服务系统,有时会在某个邮件队列中拥塞太多的消息,你可能想把这个队列暂停并且在网络空闲的时候再发送,暂停一个邮件队列的办法非常简单,就是将/var/spool/mqueue目录移走:killall sendmailmv/var/spool/mqueue/var/spool/mqueue.stopmkdir/var/spool/mqueuesendmail Cbd当网络空闲的时候,可以用-oQ参数立即处理拥塞的队列:sendmail CoQ/var/spool/mqueue.stop Cq6、设置邮件队列间隔守护程序启动时-q 标志的值确定 sendmail 守护程序处理邮件队列的时间间隔。在 Red Hat 的预设条件中,在/var/spool/mqueue 当中的信件会每隔 60 分钟由 Sendmail 尝试重新传送一次到目的地去!这个尝试的时间是可以改变的!可以利用 sendmail 的指令或者直接修改/etc/sysconfig/sendmail 里面的『QUEUE=时间』来修订!例如,如果你想要让 Sendmail 每隔 30 分钟就帮你尝试传送/var/spool/mqueue 里面的未寄出的信件时,那么就将/etc/sysconfig/sendmail 这个档案里面的『QUEUE=1h』改成『QUEUE=30m』即可!这些变化会在下一次系统重新启动时生效。如果您想让这些变化立刻生效,请停止并重新启动 sendmail 守护程序,指定新的-q 标志值。更多相关信息,请参阅停止 sendmail 守护程序和启动 sendmail 守护程序。7、在sendmail里如何控制邮箱大小在/etc/sendmail.cf 中设置找这个字段,把前面的注释“#”去掉,再把“0”修改为你想要控制的邮件大小,比如10M,这个文件中,是以字节为单位的。maximum message sizeO MaxMessageSize=10000008、要察看邮件系统的状态,使用mailstats命令www.zgxue.com防采集请勿采集本网。

本文出自《网管员世界》2004年第2期 |经验技巧|栏目

一般来说,邮件服务器接收到客户端提交过来的邮件,会立即进行发送。但是,当出现故障,比如线路中断或目的域不可到达时,邮件服务器就会将该邮件转入邮件队列(Message Deferred Queue),等待一个时间段,然后再尝试发送。另外,由于SMTP协议的问题,接收邮件时,邮件服务器不会去验证邮件发送方的地址,有些病毒邮件、广告群发邮件等垃圾邮件经常会使用伪造的或根本就不存在的邮件地址进行发送,而且,为了达到群发的目的,邮件的接收地址大部分都是成批地编造出来的。对这样的邮件,邮件服务器既发送不出去,也无法退回发送人,极容易造成死循环。大量的邮件囤积在服务器的邮件队列中,会极大的消耗系统的资源,严重时,甚至会造成SMTP进程死掉,系统响应非常迟缓。因此,作为邮件系统的管理员,需要经常去查看服务器的邮件队列,及时了解邮件系统的运行状况,并根据情况,处理队列中的邮件。

这些防火墙的算法更复杂,并且不与他人分享细节,对正常的邮件送达也可能有致命的影响,如部分邮件服务器要求有人工添加确认功能,针对大部分陌生地址邮件,华思邮件告诉各位我们应将采用拒收的策略。

查看邮件队列

服务器在一个队列中存储到达的邮件,等待发送到下一个目的地。下一个目的地可以是本地用户,或者是另一个邮件服务器。电子邮件的原理和Outlook Express的使用 1、电子邮件的原理 1.1、电子邮件的发送和

在Netscape Messaging Server4.15中,可以通过Netscape Console控制台去查看队列,方法是:启动Netscape Console,进入Messaging Server控制台,选择“Configuration”下的“Services”/“SMTP”/“Message Queue”,如图1所示。从控制台中,我们可以看到邮件目的域,即接收方域,还有待发往该域的邮件数量。另外,还有一个更为实用的方法—mailq,可以查看邮件的队列。在使用之前,用户必须使用邮件服务器程序属主的身份登录系统。

确认后,收件人信箱邮件服务器上的POP3服务器进程检查该用户邮箱,把邮箱中的邮件按POP3协议的规定传输到收信人主机的POP3客户进程,最终交给收信人主机的电子邮件应用软件,供用户查看和管理。

→图1

# mailq -v

你要确保你已经连接了网络,如果你没有连接网络的话,系统就会将你编辑的软件暂时存放在队列中,等待你连接网络。如果你连接了网络,只要点击发送接受邮件就可以了。

Summary of Queued Messages Destined for the Internet (via SMTP)

邮局服务器识别接收者的地址,并向管理该地址的邮件服务器(POP3服务器)发送消息。邮件服务器识将消息存放在接收者的电子信箱内,并告知接收者有新邮件到来。接收者通过邮件客户程序连接到服务器后,就会

Messages Destination Host Queue Directory

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

1 163.com $queue

HGR7EQ00.M7V 754/11450 [Wed, 20 Aug 2003 08:16:02 +0800] <ab@abc.cn> 1:<cd@163.com>

1 bolt.com $queue

HJT98W01.E7K 410/3348 [Wed, 20 Aug 2003 18:31:44 +0800] <> 1:<audrey.leeqk@bolt.com>

…………

由上可见,mailq可以查看到更丰富详细的信息,取上述第一条来讲,这表明对163.com的目的域,有一个邮件待发,发件人的地址是ab@abc.com,收件人的地址是cd@163.com,发件时间是“Wed, 20 Aug 2003 08:16:02 +0800”,而“754/11450”则分别表示该邮件的邮件头和邮件体(Header-Size/Body-Size)的大小,邮件目前在$queue目录下。

想进一步的了解该邮件的情况,可以进入$queue目录查看。

以往Netscape Messaging Server将目的域名作为目录名直接放在$queue/deferred/SMTP-Deliver目录下,Netscape Messaging Server 4.0以后,我们需要用Hash算法来定位该目的域队列:

# hashdir 163.com

14/44/

# ls $queue/deferred/SMTP-Deliver/14/44/

163.com

这样,我们就可以进入该队列,查看关于这个邮件更详细的信息。这些信息对邮件管理员都是非常有用的。根据它,管理员可以查找定位邮件、追踪邮件、了解邮件进入队列和排队时间,并据此决定相应的处理队列措施。

处理邮件队列

进入邮件队列的邮件,管理员可以采取的处理措施有三种(如图2):

→图2

1. Bounce,返回发件人。

2. Requeue,提交进入Active Queue,即立即发送。

3. Delete,删除邮件。

在使用mailq查看到的队列信息中,我们看到:

HKIVAV01.DK1 400/4418 [Wed, 20 Aug 2003 14:28:19 +0800] <> 1:<quxf@tom.com>

HJW4GJ01.18Q 400/4418 [Wed, 20 Aug 2003 14:28:57 +0800] <> 1: <quxf@tom.com>

…………

可见,发往tom.com的邮件有400封,信件的接收地址都是quxf@tom.com。用上面介绍的办法查看该邮件,发现都是系统(postmaster)因无法投递该信件而退回发件人的信息。待回退的原信内容是一封营销广告性质的邮件,接收人则是按一定规则成批编造出来的。这些邮件就形成了前面所说的死信。在$queue/messages目录下,可以看到大量大小相同的文件:

-rw-rw---- 1 mailsrv sys 4817 Aug 20 14:27 HKIVAA01.6JU

-rw-rw---- 1 mailsrv sys 4817 Aug 20 14:27 HKIVAE01.EJQ

-rw-rw---- 1 mailsrv sys 4817 Aug 20 14:27 HKIVAF01.6JW

…………

用top命令看到,CPU已经被占满:

CPU states: 0.0% idle, 78.8% user, 8.3% kernel, 12.9% iowait, 0.0% swap

……

PID USERNAME THR PR NCE SIZE RES STATE TIME FLTS CPU COMMAND

6493 mailsrv 33 54 -2 1.2G 89.6M run 10:44 1 68.32% smtpd

此时服务器的运行性能可想而知是怎样的糟糕了。客户端到服务器SMTP、POP等连接统统超时,根本无法连接到服务器。SMTP进程极大的消耗着系统资源,最终的结果是:SMTP 进程死掉。因此,一旦发现类似的邮件,管理员应立即采用“Delete”措施予以删除。用mailq查看到的队列信息中,我们还可以看到:

HJW4BV01.685 404/4089 [Wed, 20 Aug 2003 07:38:19 +0800] <> 1:<guest@guaqw.com>

HJW4GJ01.18Q 404/8962 [Wed, 20 Aug 2003 07:41:07 +0800] <> 1: <guest@guaqw.com> ……

这些到guaqw.com域的邮件也是类似的死信。从上面可以看出,这类信件的特征是:

发往该域的邮件数量比较大,发件地址一般都是空“<>”,邮件的邮件头/邮件体(Header-Size/Body-Size)的大小相似。另外,在查看队列时,管理员经常会发现,有很多目的域明显是不存在的,或者是用户笔误写错了的,比如hotmai.com、publik.bta.net.cn等。这些目的域是根本不可能到达,因此,就没有必要留在队列中,耗费邮件服务器的资源。对这样的队列,管理员可采取的措施就是:返回给发件人(Bounce)或者直接删除(Delete)。另外,有些邮件在队列中的时间比较长,目的域也不是很明显的情况下,管理员可以检查域名情况,判断是否也是同样的问题。这样就能为邮件服务器减少很多不必要的发送尝试。还有一些情况,比如有些比较重要的邮件,可能因为网络或线路的原因,没能立即发送出去,进入了邮件队列。按照常规,邮件必须等待过系统设置好的时间段后,才能再进入Active Queue尝试发送。这时候,管理员就可以采取“Requeue”措施,尽快发送,使该邮件不用再等待。

调整邮件队列参数

Netscape Messaging Server4.15中,可以调整关于邮件队列的参数为:

1)邮件队列的处理时间间隔(Process Interval)

2)邮件队列最长的排队时间(Maximum Queue Time)

→图4

启动Netscape Console,进入Messaging Server控制台,选择“Configuration”下的“Services”/“SMTP”/“Message Queue”/“Configuration”,如图3所示。“Message queue process interval”就是邮件进入队列后,在每次发送尝试间需要等待的时间;“Maximum message queue time”是邮件能在队列中存在的时间上限,超过这个时间,邮件服务器将放弃发送该邮件。这些参数,管理员可自行调整。

1、队列文件通常存放在/var/spool/mqueue下面,每个待发送的邮件由几个文件构成,例如,可以看到下面的目录文件列表:[root@mail mqueue]#lsdfRAA27175 xfAAA00733 xfBAA00819 xfEAA32763 xfXAA00706qfRAA27175 xfAAA00784 xfDAA01360 xfFAA01616文件名字总是由一个两字符的前缀加上一个随机数字。前缀有四钟:df:邮件内容qf:邮件头和一些控制信息xf:一些临时文件tf:qf文件的临时存储文件2、可以通过看队列中的qf文件来确定当前队列信息,不过通常都可以用mailq程序来完成对队列状态的查询:root@mail mqueue]#mailqMail Queue(1 request)Q-ID-Size-Q-Time-Sender/Recipient-RAA27175 22429 Fri Feb 25 17:34deferred)net这表示队列中目前只有一封信,由zhangfl发出,[url=mailto:收信人是×@×.net]收信人是×@×.net]。3、查看队列:mailq查看MTA队列的滞留情况(等价于sendmail-bp)mailq-Ac#查看MSP队列的滞留情况(等价于sendmail-bp-Ac)强制送信:usr/sbin/sendmail-q-v对MTA队列强制送信usr/sbin/sendmail-q-v-Ac对MSP队列强制送信注:如执行完以上命令后,队列中仍然还有很多邮件,这时需要多次执行以上命令,直到邮件发送完为止。参数说明:q 立即处理队列的内容.v 显示进度详细信息Ac 读取MSP队列(默认是读取MTA队列)4、sendmail接受到的信件在用户取走之前将暂时存储在/var/spool/mail目录下面,存储的方法非常简单,就是每个有待读邮件的用户一个文件:[root@mail spool]#ls-l/var/spool/mail|total 19364rw-rw-1 anyi mail 7559035 Feb 28 22:04 anyirw-rw-1 baixuan mail 514 Nov 7 01:32 baixuanrw-rw-1 cwc mail 515 Feb 28 08:35 cwc如果一个用户有多封电子邮件,那么这些邮件就被简单地连接在一起构成一个大文件(所以你会看到非常巨大的邮件文件)。5、如果你面对的是一个很庞大的邮件服务系统,有时会在某个邮件队列中拥塞太多的消息,你可能想把这个队列暂停并且在网络空闲的时候再发送,暂停一个邮件队列的办法非常简单,就是将/var/spool/mqueue目录移走:killall sendmailmv/var/spool/mqueue/var/spool/mqueue.stopmkdir/var/spool/mqueuesendmail Cbd当网络空闲的时候,可以用-oQ参数立即处理拥塞的队列:sendmail CoQ/var/spool/mqueue.stop Cq6、设置邮件队列间隔守护程序启动时-q 标志的值确定 sendmail 守护程序处理邮件队列的时间间隔。在 Red Hat 的预设条件中,在/var/spool/mqueue 当中的信件会每隔 60 分钟由 Sendmail 尝试重新传送一次到目的地去!这个尝试的时间是可以改变的!可以利用 sendmail 的指令或者直接修改/etc/sysconfig/sendmail 里面的『QUEUE=时间』来修订!例如,如果你想要让 Sendmail 每隔 30 分钟就帮你尝试传送/var/spool/mqueue 里面的未寄出的信件时,那么就将/etc/sysconfig/sendmail 这个档案里面的『QUEUE=1h』改成『QUEUE=30m』即可!这些变化会在下一次系统重新启动时生效。如果您想让这些变化立刻生效,请停止并重新启动 sendmail 守护程序,指定新的-q 标志值。更多相关信息,请参阅停止 sendmail 守护程序和启动 sendmail 守护程序。7、在sendmail里如何控制邮箱大小在/etc/sendmail.cf 中设置找这个字段,把前面的注释“#”去掉,再把“0”修改为你想要控制的邮件大小,比如10M,这个文件中,是以字节为单位的。maximum message sizeO MaxMessageSize=10000008、要察看邮件系统的状态,使用mailstats命令内容来自www.zgxue.com请勿采集。

免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
Copyright © 2017 www.zgxue.com All Rights Reserved