Exchange传输组件大揭秘(中)当发送密件抄送(BCC)和使用MAPI的客户端发信给Internet用户时,还会发生更加复杂的bifurcation的过程,限于篇幅,这里不错深入的讨论。有兴趣的读者,可以参考如下的链接: http://www.microsoft.com/technet/prodtechnol/exchange/guides/E2k3TechRef/a3485026-00df-41ad-bb21-8acbc962895a.mspx 第三:CompleteItem和路由、投递前的准备工作 经过一些列Categorizer Event Sink处理后,邮件的目的地和收件人相应的属性都已经确定,在把邮件交给路由引擎选路和进行投递之前,Categorizer会做一些最后的收尾工作,并为路由和投递准备好需要的信息,这个过程包括:邮件归档、写入收件人标示、投递状态结果的处理等等。 Journaling 邮件归档(Journaling)是把某个指定的邮箱数据库中的用户发送和接收的邮件做一个自动归档的过程(请参考:XADM: How to Enable the "Message Journaling" Function for an Exchange Server Mailbox Store http://support.microsoft.com/default.aspx?scid=kb;en-us;261173)。分类器会根据BuildQuery过程获取的用户HomeMDB属性来判断此用户的邮件是否需要做归档,如果需要归档,分类器在邮件的收件人列表中加入归档邮箱(使用BCC方式隐藏,因此用户感觉不感到归档过程,这和上文提到的邮件转发是不同的过程)。 正如前面提到的,是否归档是根据用户的邮箱所在数据库来决定的。当一个用户通过SMTP网关发送邮件时,在这封邮件最终抵达收件人时,可能会被Exchange系统中的多台SMTP服务器进行处理和转发。第一台SMTP服务器负责添加转发地址,并且,服务器使用XEXCH50命令来通知其他的后续服务器归档操作已完成,避免其他服务器重复的添加归档地址。(XEXCH50命令在前文的邮件转发中也有类似的作用。) 由于邮件归档是基于SMTP正文中的地址进行的(请再次参考上期文章中的SMTP报文结构一段),它有些时候对BCC、自动转发和邮件组来说可能会无效。发给这些地址的邮件不一定会被自动的归档。如果公司必须要做到100%的邮件跟踪和归档,可以采用基于SMTP信封的归档(Envelope Journaling)。这个功能可以通过一个微软提供的名为E-Mail Journaling Advanced Configuration Tool的工具实现。(请参考:http://www.microsoft.com/technet/prodtechnol/exchange/EXBPA/ec28a756-7dc9-457a-a1aa-4f12ee365168.mspx ) Recipient marking 当完成收件人解析后,分类器会跟据每个收件人的目的地做一个特殊的收件人标记(Recipient marking)。这个标记通常为收件人目的地主机的FQDN。AQE根据这些FQDN来判断邮件的目的地是本地服务器,还是需要通过路由组件选路并投递到远程的主机。所有满足本地投递条件的邮件,都无需路由,直接从分类队列中被转到本地投递队列(local delivery queue)中。对于非本地投递的邮件,AQE必须调用路由引擎进行选路操作。 Redirecting delivery status notifications 退信地址的重定向是一个特殊情况下的特殊操作。我们举两个例子。一种情况下,当用户以一个组的名义发信时(是的,Exchange允许用户以其他人或用户组的名义发信。HOW TO:在 Exchange 2000 Server 中授予“代理发送”和“代表发送”权限,http://support.microsoft.com/default.aspx?scid=kb;zh-cn;327000 ),如果有退信产生,默认情况下,这封退信是发给这个组的(因此此时FROM中是这个组的地址)。为了解决这个问题,分类器会把这种类型的退信重新定向到邮件的真实发送者。 另一种更加常见的情况是,当发信给一个很大的邮件组时,发信人往往会收到很多OOF、自动回复和投递回条之类的邮件。为了缓解这个问题,默认情况下Exchange分类器会阻拦所有因为发送邮件给用户组而产生的OOF和自动回复。分类器通过在用户组收件人上添加特殊属性来通知系统不要为此收件人执行OOF和自动回复的处理操作。 队列和MailMsg对象
![]() 图四:Exchange Server队列查看器 AQE在内存中维护了若干个邮件队列,并由一组共享的线程池来对这些队列中的数据进行操作。我们可以通过Exchange System Manager的队列查看器来观看这些队列的情况(如图四),队列查看器是通过PhatQAdm.dll中的接口与AQE进行通讯来完成队列内容显示和执行队列管理操作的。下图(图五)标明了AQE中主要的队列和这些队列与传输事件之间的关系。
![]() 图五:AQE中的邮件队列 上图比较完整的描绘了一封邮件从提交、分类、路由一直到被投递的完整过程。Exchange Server使用队列来管理处于不同投递状态的邮件。对队列的深入理解,有助于分析和解决复杂的邮件传输问题。下面我们分别介绍一下每个队列的作用。 Messages Pending Submission 这个队列是AQE的入口,当有邮件进入这个队列时,AQE触发OnSubmission事件,其Event Sink针对队列中的邮件执行特定的操作,操作完成后,邮件被移动到Messages Awaiting Directory Lookup队列。 Messages Awaiting Directory Lookup 这个队列在分类器中非常的关键。分类器针对处于此队列中的邮件执行收/发件人解析、用户组成员解析、发送限制检查等一些列的操作(在前文中有提到)。经常有管理员会看到邮件在这个队列中大量的堆积,这说在解析地址过程中出现的瓶颈,这往往和活动目录的性能或网络流量有关。 Messages Waiting To Be Routed
上一篇:ExRAP 检测到的 Exchange 配置和操作问题 下一篇:为通过身份验证连接和匿名连接配置 SMTP 更多相关文章
|
推荐文章
精彩文章
|