您的位置:首页 > 编程语言 > PHP开发

smtp工作原理和邮件队列过大处理一例

2010-08-17 16:16 239 查看
我们所熟悉的电子邮件服务除了依赖于SMTP协议之外,还需要POP协议的支持,而POP协议是IIS所不能支持的,所以使用IIS服务器并不能实现完整的邮件服务,这需要大家明确。笼统的说,SMTP负责邮件的传递,例如从客户机到邮件服务器,以及服务器之间的传递工作。而POP协议能够让客户检索到由SMTP发送来的邮件,并将新的邮件下载的用户本地。
SMTP通过文件夹方式实现邮件的传送,一封邮件在存送的各个不同过程(状态)下被SMTP放入不同文件夹中。例如,用户只需将待发送的邮件投入发送文件夹就可以由IIS实现自动发送,而用户收到的新邮件也是被IIS投放到收件文件夹中。
由IIS自动生成的默认SMTP站点具有如右图所示的缺省文件夹,它们位于inetpub目录下的mailroot文件夹中,主要的功能文件夹有:
● Pickup:拾取待发送邮件,用户将待发邮件投入此文件夹。
● Queue:保存传送过程中的邮件,因网络繁忙、目标服务器无响应等原因不能一次发送成功的邮件暂存在此等待继续发送。
● Badmail:存放不能投递且不能返回发送者的邮件(称为死信)。
● Route、SortTemp、MailBox:IIS使用这些目录对发往其他服务器的邮件进行排序和重组,从而使投递过程有序、快捷。
注意:上述文件夹中,除了Badmail和Drop可以移到其他分区外,其余文件夹必须保存在NTFS分区上。
SMTP服务的工作原理如右图所示,一旦用户将待发邮件投放到Pickup文件夹中,IIS即时将信邮件拾获并加入Queue文件夹,然后由IIS判断邮件的目标地址,根据收件人位于本地或远程判断下一步工作:
● 本地邮件传送:如果邮件是送交本地收件人的,IIS将其从Queue文
● 远程邮件传送:对于收件人账号位于远程邮件服务器商的邮件,SMTP服务将进行如下操作:
1.SMTP服务将邮件进行编组,以便在发送时能够一次将多个邮件同时发送出去,以优化网络资源消耗。
2.IIS负责检验远程邮件服务器是否做好接收邮件的准备,一旦准备妥当即可进入下一步。否则,邮件将重新进入待发邮件队列(Queue文件夹),随后,IIS将每隔一定时间从新尝试联系目标服务器,尝试次数与收件间隔可在SMTP服务属性中设置。

3.IIS将邮件实际发送到Internet(Intranet)中,等到目标邮件服务器返回一个成功收到邮件的信息之后,邮件的发送工作就算圆满完成了。此步骤中可选的高级功能包括SSL加密、使用智能主机转发、指定特殊路由等将待稍后详述。
4.一旦目标邮件服务器不能接受邮件(主要因为目的地址不存在或邮件据收),IIS将尝试将邮件返回给发送用户,如果返回操作不成功,该邮件将作为死信投递到Badmail文件夹中。
上述过程就是IIS中SMTP服务的工作原理,除了IIS服务器之外,客户机还需安装客户端邮件程序。
当SMTP送信文件夹(邮件队列)在容量溢出时,将造成无法正常发信。收集或监控SMTP协议日志,发现“452 4.2.2 邮箱已满Mailbox Full”。下面说一下这个问题的对策和解决方法。
因为IIS自带的SMTP没有邮件队列自动告警或清理的功能; 如果不设置“enable drop directory quota”,则邮件队列文件夹可以无限增大直到占满整个磁盘。虽然这种情况很难出现,但是要考虑到邮件队列中存在过多的邮件,会给SMTP服务器带来额外的负担。SMTP 服务将把投递目录的大小限制为在“限制邮件大小为 (KB)”设置中指定的大小的 10 倍,既是为了限制邮件队列中邮件数量的,如果不限制邮件队列文件夹的大小,可能会出现一次要投递上百、上千乃至更多封邮件的情况,必然会极大的消耗服务器系统资源和带宽,进而有可能带来更大的风险隐患。针对这个问题,我们可以这样来设置,如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息