Exchange传输组件大揭秘(中)

2008-02-23 06:06:04来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

导读:
本文根据笔者在微软Technet Webcast上的讲稿整理而成。文章介绍了微软Exchange Server中的核心传输组件连同他们的工作原理,阐述了SMTP协议的内容和使用SMTP发送邮件时的周详过程;深入地讨论了邮件传输和路由的工作机制,分析了SMTP报文的组成和Exchange在传输邮件时的路由过程(包括AQ, Routing Engine等组件)。本文能够供Exchange管理员深入的了解邮件传输组件的内部工作方式。
上期回顾
在上一期的《Exchange传输组件大揭秘-上》中,笔者讨论了SMTP协议的工作方式,协议命令字和MIME编码的基础知识,同时也介绍了Exchange Server传输模块的构成和基于事件触发机制的工作原理。本文我们将继续上一期的讨论,来深入的挖掘Exchange Server传输组件背后鲜为人知的秘密。
基于事件触发机制的邮件传输过程
上一期文章的末尾,我们提到了Exchange Server传输模块中的高级队列引擎(Advanced Queuing Engine,下文简称AQE)。作为传输模块的核心,AQE在邮件传输过程中起到了至关重要的作用,投递过程中很多关键的操作都是在AQE中完成的。
Windows IIS自带的SMTP服务使用Aqueue.dll作为高级队列处理组件,在安装Exchange Server时,安装程式使用Phatq.dll取代了Aqueue.dll,作为Exchange Server的高级队列处理组件。AQE的主要作用是控制邮件传输过程,触发相应的事件并调用Event Sink进行邮件的进一步处理。从邮件被提交到AQE内部到最终被投递,AQE会触发如下的事件:
SMTP Transport alt="" src="/upimg/allimg/070523/1611130.gif" border=0> bbs.bitsCN.com
图一:由AQE触发的事件
在上文中我们提到,Exchange Server传输组件内共有四种类型的事件,假如把上面提到的这些重要事件按照类别进行归类,我们能够发现其中大部分的事件属于SMTP传输事件。在Exchange Transport模块中,微软一共研发了6个Event Sink来响应这些SMTP传输事件,他们的名字和作用如下表:

Event Sink名称
作用
Exchange Transport XEXCH50 Submission
该Event Sink响应OnSubmission 事件,他的主要代码在Peexch50.dll 中被实现。这个Event Sink的主要作用是处理Exchange Server间的通信。任何的服务器内部通信也是通过SMTP协议来完成的,他们使用XEXCH50 这个微软自定义的命令字。
Exchange Transport AntiVirus API
该Event Sink响应OnSubmission 事件,他的主要代码在OnSubmit.dll 中被实现。这个Event Sink的主要作用是为反病毒厂商提供了一组在传输层的病毒扫描API,使用此API的程式能够在OnSubmission事件发生时截获邮件内容并进行病毒扫描。
通常情况之下,反病毒厂商更倾向于使用基于数据库层面的反病毒接口,因此这个传输层反病毒API默认是被禁用的。假如服务器是邮件网关、前端服务器,管理员能够通过更改注册表的方式启用此接口。
Exchange Categorizer
这是Exchange Server最重要的模块之一,由在Phatcat.dll中实现的Event Sink响应OnCategorize事件群中的事件。Phatcat.dll中的代码实现了地址解析、邮件转发、设定外发邮件地址标识、展开DL、进行各类传输限制的检查等等至关重要的功能。Categorizer中的代码同时也实现了邮件归档(journaling)和特别情况下的邮件拆分(bifurcate)。
Mobile Categorizer
Miscat.dll中的Event Sink负责处理移动设备用户的邮件到达通知(up-to-date notifications)。这是Exchange 2003中的新功能。
Exchange Router
这个Event Sink由Reapi.dll中的代码实现,用来响应OnGetMessageRouter 事件群中的事件。AQE通过Reapi.dll来确定邮件的下一跳(next hop)地址。这个Event Sink同时计算Exchange组织的路由拓扑和路由表。
Exchange LoadBalancer
这个Event Sink也是由Reapi.dll中的代码实现,他响应OnDnsResolveRecord事件,负责在多个外部连接器之间进行负载平衡。
中国网管联盟
表一:响应SMTP传输事件的Event Sink。
下文中,我们将重点讨论在Exchange Categorizer中发生的故事。
Exchange Categorizer
OnCategorize事件群一共由十个事件组成,我们能够通过MSExchangeTransport的诊断日志来了解这些事件的细节,诊断日志的开启方法请看图二。系统还允许管理员开启Level 7级别(Debugging Level)的SMTP诊断日志来监控SMTP服务器的每一个动作,这个日志的开启需要进行注册表的更改,具体的键值位置请参考此文档:How to enable SMTP protocol logging http://support.microsoft.com/default.aspx?scid=kb;en-us;265139。


图二:启动MSExchangeTransport Diagnostics Logging

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Exchange Server 2003 配合使用的防病毒软件概述

下一篇: 如何启用对 Internet 的外出时答复