Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->网络应用 ->邮件服务器 ->Exchange Server ->正文

Exchange传输组件大揭秘(中)

来源:Linuxdby.com 作者:Webmaster 时间:2007-05-28 点击: [收藏] [投稿]
这个队列中包含所有已经完成分类操作并等待进一步投递的邮件。此时AQE判断邮件的目的地,并对所有需要进行远程投递的邮件触发OnGetMessageRouter事件来调用路由引擎进行进一步的处理。
Local Delivery
这个队列中包含所有投递目的地是本地服务器的邮件,对于这些邮件,AQE会跳过OnGetMessageRouter事件并直接把他们通过Exchange Store Driver进行投递。
Dynamic Delivery
这些队列往往存在于执行外发邮件任务的SMTP桥头堡之上。针对外发邮件,每个目的地domain都会有一个队列,所有发给这个domain的邮件都包含在其中。这些队列是动态生成的,并且在邮件投递完毕后的一定时间内,由AQE销毁。
MailMSG对象
正如上文提到的,AQE的队列包含了处于不同投递状态的邮件。实际上,这些队列中并不会真正的包含待投递的邮件本身(想想看:谁也不会背着自己的私家车去车管所的各个窗口办理上牌照手续),因为对于分类器和路由引擎来说,邮件的内容往往太大,把他们都放到内存的队列里面会严重的影响性能,而且对执行投递操作并没有帮助(邮件投递主要依靠SMTP信封和正文中的信头部分,与正文中的信体和附件都没有关系)。
为了提高性能,AQE会为其需要处理的每一封邮件创建一个名为ImailMsg的数据结构。在这个结构中,包含了所有AQE需要的邮件属性,并且在此数据结构中,还有一个指向邮件实际内容所在地(可能是NTFS文件系统上的SMTP Queue目录,也可能是Exchange的数据库)的一个句柄(如图六)。


图六:MailMsg对象
当邮件被提交时,ImailMsg数据结构就会被生成。在整个分类和路由过程中,邮件本身都会保存在问及系统上的Queue目录或者是Exchange数据库中,只有ImailMsg在不同的队列中被移动。当邮件真的需要被投递和传输时,邮件的物理数据才会被进行操作。这样做,极大地提高了系统的性能。
我们常在Exchange的队列管理器中看到许多邮件,其实这些都是ImailMsg,这些邮件的“真身”,都分布在不同的位置上。
总结和下期介绍
在本期文章中,我们从更加底层的角度审视了Exchange Server邮件传输的过程,深入的了解了Exchange分类器的作用和它的工作方式。为了避免过于复杂和方便读者理解,笔者对一些错综复杂的过程作了简化处理,并提供了供进一步研究参考的资料链接。下期要目如下:
1. 邮件路由的过程
2. Exchange存储和传输模块之间的桥梁: Store Driver
3. 常用的传输排错工具
作者简介:
喻勇,曾任微软产品技术支持工程师和CTEC课程讲师。对Exchange Server,SharePoint Server,IIS,.NET开发等微软产品和技术有丰富的实践经验。他的电子邮件信箱是yy@yuyong.net,读者可以在他的网站www.yuyong.net下载Exchange相关的课程讲义。


 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:ExRAP 检测到的 Exchange 配置和操作问题   下一篇:为通过身份验证连接和匿名连接配置 SMTP

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号