Exchange传输组件大揭秘(中)
来源:Linuxdby.com
作者:Webmaster
时间:2007-05-28
点击:
[ 收藏] [ 投稿]
|
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事件,负责在多个外部连接器之间进行负载平衡。 |
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
为了全面分析,我们先简单的把这10个Event和他们对应的Event Sink的职能列出来:(如表二)
OnCategorize事件 | Event Sink所执行的操作 |
Register | 分类器组件初始化事件,负责创建分类器与其它模块(如活动目录访问、路由引擎等等)的连接 |
BeginMessageCategorization | 表示邮件分类过程的开始 |
EndMessageCategorization | 表示邮件分类过程的结束 |
BuildQuery | 通过收发件人的proxyAddresses属性来创建对活动目录进行查询的LDAP语句,来获取收发件人对象的完整信息,这是地址解析的重要过程之一 |
BuildQueries | 执行批量的BuildQuery操作 |
SendQuery | 发送查询请求到活动目录,此查询是异步的 |
SortQueryResult | 根据查询条件对返回的结构进行处理 |
ProcessItem | 将地址解析的结果应用到邮件上 |
ExpandItem | 这个过程也是邮件投递过程中非常重要的一环,DL分解、发送限制检查、邮件拆分都在这里发生 |
CompleteItem | 当以上操作完成后,CompleteItem事件的Event Sink执行邮件传送归档(Journaling)、组织内收件人的服务器定位以及其它的一些特殊操作 |
表二:OnCategorize事件
请参考微软知识库文档来了解Categorization过程更多的细节:
XCON: What Message Categorization in Exchange 2000 Server Involves
http://support.microsoft.com/default.aspx?scid=kb;en-us;233363
我们可以从表二中看到,OnCategorize事件群的Event Sink执行了邮件投递过程中的很多重要操作,我们重点讨论其中三个Event Sink的处理细节。
第一:BuildQuery和地址解析
BuildQuery是一个非常复杂的过程,要完全理解这个组件,首先需要了解Exchange Server中的各种“邮件地址类型”。在Exchange Server中,我们常用的SMTP地址(username@domain.com)只是种类繁多的邮件地址类型里面的冰山一角。每一种邮件协议,都有它特定的邮件地址表示方法,Lotus Notes、Novell GroupWise、古老的MS Mail等等,都有一套特定的邮件地址,只不过相比SMTP,这些邮件地址类型我们很少接触到罢了。Exchange中必须支持的其他邮件地址类型还有:X.400 address、Legacyexchangedn、Non-Exchange address等等。要说清楚这些地址类型,我们还需要从Exchange的发展史谈起。Exchange5.5时代,微软为了兼容X.400和X.500协议,在邮件系统内部采用了X.400这样的用户邮件地址表示方式,随着Internet的发展,Exchange产品也开始把重心侧重到对SMTP协议的支持,从Exchange 2000开始,SMTP成为了Exchange中邮件传输的主力协议,但是为了兼容Exchange 5.5,微软仍然保留了MTA传输引擎和X.400地址类型,同时,在活动目录中引入了Legacyexchangedn这样的属性。
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:
ExRAP 检测到的 Exchange 配置和操作问题 下一篇:
为通过身份验证连接和匿名连接配置 SMTP
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】