手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>服务器技术>Mail服务器>列表

Exchange传输组件大揭秘(下)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
当B-EX01服务器发信给C-EX02服务器。邮件在B-EX01服务器上完成分类器操作,通过查询活动目录,得知邮件最终目的地为C-EX02服务器。根据B-EX01服务器所掌控的邮件系统拓扑结构,他知道C-EX02服务器位和路由组C,此时,需要进行选路操作。由于路由组B和C之间没有直接的连接器,路由引擎在经过判断后,会选择通过连接器1、2进行邮件投递。
从B-EX01服务器发信给Internet上的地址,此时目的地的地址类型和SMTP连接器上所标注的地址空间匹配,系统知道,邮件必须首先抵达SMTP连接器的桥头堡(即A-MX02服务器)才能向外发送,因此路由引擎会把邮件通过1、3连接器进行外发投递。
上面我们讨论的只是最简单的路由结构,当有多个路由组、连接器和不同的权重混合共存时,选路的过程会变得复杂的多。Exchange Server路由引擎采用经典的Dijkstra最短路径算法进行路由计算,确保在任何情况下,总是获得最优的路由结果。
Exchange存储和传输模块之间的桥梁: Store Driver
我们回忆一下在前文中出现过的这个邮件投递过程图(图三)。需要进行投递的邮件来源包括SMTP引擎(Queue目录)和Exchange数据库,Exchange传输系统在工作时,会频繁的从硬盘的Queue目录和Exchange数据库中读取和写入邮件数据。我们知道,SMTP传输系统工作在IIS的进程中,Exchange邮件数据库引擎工作在Store.exe进程中,如何使这两个进程能够快速的交换数据,是Exchange研发者所必须解决的问题。
高级对列引擎(AQE)在处理邮件时,在每个Event Sink之间传递代表邮件的MailMsg对象(具体过程请参考上期文章)。MailMsg对象由待处理邮件的SMTP信封数据和一个指向实际邮件位置的指针(句柄)所组成。当传输引擎需要读取邮件的内容时,会通过这个指针访问磁盘上的Queue目录或邮件数据库。微软采用NTFS Store Driver和Exchange Store Driver这两种技术,使这些访问能够以很高效的方式进行。 bbs.bitsCN.com


图三:Exchange邮件传输流程
为了使传输组件方便的访问磁盘上Queue目录中的邮件,微软采用了名为NTFS Store Driver的底层组件,这个组件能够帮助传输引擎使用指针(句柄)的方式快速的访问NTFS文档系统上的文档,而不是采用相对比较慢的CreateFile的传统Win32 API方式进行访问。这个模块包含在Windows 2000 IIS 5.0中,在NTFSDrv.dll这个文档中被实现,Exchange只是“借用”了这个现成的组件。
为了解决传输组件访问Exchange数据库的性能问题,微软采用了Exchange Store Driver技术。Exchange Store Driver使传输引擎能够使用指针(句柄)的方式快速的访问Exchange的数据库中的内容,而不是采用很低效率的MAPI接口,这样极大的提高了邮件传输的效率和性能。
相比前面提到的NTFS Store Driver,Exchange Store Driver在技术上更加复杂。我们知道,在Windows平台下,Exchange数据库引擎(Store.exe)和IIS服务进程(inetinfo.exe)是各自单独的进程(如图四)。Windows的每个进程都有单独的虚拟地址空间,因此,IIS是无法直接访问Store进程空间中的数据的。 DL.bitsCN.com网管软件下载


图四:Store和IIS的进程
为了把数据库中的邮件信息放置到AQE的pre-submission队列中,Exchange store driver成为了两个进程间数据交换的桥梁。Exchange store driver由一组Event Sink组成,主要包括如下三个文档:
Drviis.dll,这个DLL运行在IIS的进程空间,负责和AQE引擎进行通信。
ExSMTP.dll,这个DLL运行在Exchange数据库引擎的进程空间,这个组件负责建立数据库和Epoxy.dll的通信接口。
我们能够认为Drviis.dll和ExSMTP.dll是坐落在两个不同进程上桥墩,而Epoxy.dll,就是实现数据共享的桥梁本身。在Epoxy.dll中,微软通过ExIPC连接Store和IIS,在这两个进程中,开启了一块能够共享的虚拟内存空间(基于Shared Memory Circular Queue技术)。在这块共享内存的帮助下,Exchange得以在存储和传输引擎之间快速的进行数据交换。
如图五,Epoxy.dll不但为SMTP服务和Store建立了快速通道,实际上,通过Epoxy,IIS中的多个服务都能够和Store里面对应的模块进行快速通信。举例来说,当用户通过OWA访问邮件时,IIS就是通过IFS和Epoxy到数据库中去获取邮件的;POP3服务也是同样,当用户使用POP3客户端收信时,邮件通过Expop3-->Epoxy-->IFS-->POP3这样的路径传递到IIS,最终通过网络到达客户端。 bitscn.com


图五:Epoxy
常用的传输排错工具
为了有效的诊断和解决Exchange传输和路由系统中的问题,系统管理员必须对这些组件有深入的理解,包括组件之间的交互方式、邮件传输的路径、路由判断的依据等等。同时,管理员也应该对一些常用的工具做到了如指掌,在出现问题的时候,能够对症下药。下面我们介绍一些用来诊断邮件传输问题工具。我们把常用的工具分为四个类别:Exchange管理器中集成的工具、日志记录工具、报表统计工具和跟踪工具。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!