混合模式组织中的 Exchange MTA

 

上一次修改主题: 2005-05-23

在与运行 Exchange Server 5.5 的服务器向后兼容的混合模式组织中,Exchange MTA 是关键组件。在本地站点中,Exchange Server 5.5 MTA 使用远程过程调用 (RPC) 直接相互通信,并且 Exchange Server 2003 必须使用相同机制。如果路由组连接器以运行 Exchange Server 5.5 的服务器作为远程桥头(就是说,将路由组连接器作为 Exchange 5.5 中的站点连接器运行),则在这样的路由组连接器上还会使用 MTA 和 RPC。

基于 RPC 的 MTA 通信

通过 RPC 通信不需要配置 OSI 传输堆栈或 X.400 连接器。Exchange 组件直接相互通信时,所有参数都是已知的。例如,在与本地路由组中运行 Exchange 5.5 Server 的服务器通信时,Exchange Server 2003 MTA 不需要您配置连接器。Exchange MTA 还通过 XAPI 与 Exchange 存储通信,以便将邮件传输给在 Exchange 存储中有其邮件队列的 SMTP 服务和基于 MAPI 的连接器。该通信是基于 MAPI 的,MAPI 是基于 RPC 的 API。通过使用 Exchange 系统管理器中的队列查看器管理单元来查看 MTA 邮件队列中的邮件时,该通信也基于 RPC。

Exchange MTA 使用 RPC 线程池来支持与 LAN-MTA、Exchange 存储和管理工具的通信。使用以下注册表参数,可以控制最小和最大 RPC 线程数。

位置

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\

MSExchangeMTA\Parameters

Min RPC Threads

类型

REG_DWORD

数值数据

0x4

描述

确定 RPC 运行时库应当为 MTA 进程创建和维护的最小 RPC 线程数。

默认值为 0x4。

位置 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ MSExchangeMTA\Parameters

Max RPC Calls Outstanding

类型

REG_DWORD

数值数据

0x32

描述

确定最大 RPC 线程数。它限制保证会同时被处理的最大 RPC 调用数。

默认值是 0x32 (50)。在 Exchange Server 5.5 和 Exchange Server 2003 共存情形中,建议值是 0x80 (128)。Max RPC Calls Outstanding 值不应当是零,并且应当大于 Min RPC Threads。

如果增加最大 RPC 线程数,那么还应当使用“HKEY_LOCAL_MACHINE \System\CurrentControlSet \Services\MSExchangeIS\<server_name>\Private-<database_guid>”下面的“Gateway In Threads”注册表参数和“Gateway Out Threads”注册表参数,来增加在 Exchange 存储进程中每个邮箱存储的进出网关的线程数,此部分前面已对此进行了解释。

RPC 性能影响

必须确保桥头服务器上没有 RPC 通信问题。例如,在桥头服务器的路由组中,不应当有运行 Exchange Server 5.5 并频繁停机的服务器。因为 RPC 通信是同步执行的,因此 MTA 必须等待超时终止,然后 MTA 才能服务于其他出站连接,而出站连接将取得大于传入连接的优先级。因此,RPC 通信问题可以使整个 MTA(包括所有 X.400 连接器)的性能降级。相比之下,X.400 连接器则建立异步连接,这样的连接对其他连接器有很少甚至没有影响。

note注意:
MTA 使用 RPC 来传输进出 Exchange 存储的邮件。但是,在正常的服务器操作期间,该 RPC 通信不应当遇到任何问题,并且不应当影响服务器性能。

RPC 回绑错误

建立 RPC 连接是一个绑定和回绑的过程,在这个过程中,本地 MTA 首先确认它正在与远程 MTA 通信(对远程 MTA 的名称和密码进行检查),然后,远程 MTA 确认本地 MTA 的身份(本地 MTA 的名称和密码被发送给对方,并进行检查)。在建立与远程 MTA 的 RPC 连接时,如果远程 MTA 无法解析本地 MTA 的完全限定域名 (FQDN),那么 Exchange MTA 将在日志中记录下 RPC 回绑错误。当远程 MTA 试图用给它的连接字符串进行回绑,并且无法解析 FQDN 时,回绑失败,并将以下错误记录在事件日志中:

Event ID: 9322

Source: MSExchangeMTA

Description: An interface error has occurred. An MtaBindBack over RPC has failed. Locality Table (LTAB) index: %1, NT/MTA error code:1722. Comms error %3, Bind error %4,Remote Server Name %5, Protocol String IP Address of Server.

回绑失败时,发起绑定的服务器不会收到来自远程系统的响应。最后,RPC 运行时库遇到超时,并将以下错误记录到事件日志中:

Event ID: 9318

Source: MSExchangeMTA - Interface

Description: An RPC communications error occurred. Unable to bind over RPC. Locality Table (LTAB) index: 151, NT/MTA error code: 1722. Comms error 1722, Bind error 1722, Remote Server Name SERVERNAME [MAIN BASE 1 500 %10] (14)

要解决该问题,必须确保两个 MTA 都可以将对方的 FQDN 解析成 IP 地址。

网关地址路由表

要执行邮件路由,运行 Exchange Server 5.5 的服务器使用网关地址路由表 (GWART),而运行 Exchange Server 2003 的服务器则使用链路状态信息。在混合模式的组织中,站点复制服务 (SRS) 与 Active Directory 复制 Exchange Server 5.5 目录信息。因此,运行 Exchange Server 2003 的服务器可以在配置目录分区中找到所有连接器。所以,路由引擎可以在链路状态表中包括已安装在 Exchange Server 5.5 上的连接器。这就让 Exchange Server 2003 用户能够使用在 Exchange Server 2003 中不可用的连接器,例如,Lotus cc:Mail 连接器、专业办公系统 (PROFS) 连接器或 SNA 分发系统 (SNADS) 连接器。

为了使运行 Exchange Server 5.5 的服务器能够使用 Exchange Server 2003 上的连接器,可以生成包括所有连接器信息的 GWART。然后,Exchange Server 5.5 用户可以通过安装在 Exchange Server 2003 上的 SMTP 连接器向 Internet 用户发送邮件。这是有利的,因为所有 Exchange 用户都可以受益于 Exchange Server 2003 的垃圾邮件和连接筛选功能。

为了向后兼容,Exchange Server 2003 MTA 生成 GWART 并通过 Active Directory 服务接口 (ADSI) 与 Active Directory 通信,以便写入 GWART 对象。MTA 以二进制形式将路由信息写入 gatewayRoutingTree 属性,并更新目录对象的 gWARTLastModified 属性,以指示 GWART 上一次的更新时间。GWART 对象驻留在运行 Exchange Server 的服务器的管理组中。站点复制服务 (SRS) 将 GWART 对象复制到 Exchange Server 5.5 目录,然后 Exchange Server 5.5 将 GWART 复制到所有运行 Exchange Server 5.5 的服务器,以便这些服务器可以在它们的路由决定中包括 Exchange Server 2003 连接器。

可以使用以下命令行从 Exchange 组织导出所有 GWART 对象: ldifde -f c:\GWART.ldf -s localhost -d " CN=Administrative Groups,CN=First Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com" -p subtree -r "(objectClass=siteAddressing)".

下表描述了 GWART 目录对象的重要属性。

GWART 对象的重要属性

属性 描述

objectClass

基于 siteAddressing 对象类,将目录对象标识为 GWART 对象。

gatewayRoutingTree

包含路由表,其格式为 Exchange Server 5.5 MTA 的所需格式。

gWARTLastModified

指定 GWART 对象上一次更新时的日期和时间。

ridServer

指向维护该管理组的 GWART 的服务器。

Exchange Server 5.5 和 Exchange Server 2003 之间的邮件循环

在混合模式 Exchange 组织中,不应当将运行 Exchange Server 2003 的服务器指定为包含 Exchange Server 5.5 用户的通讯组列表的展开服务器。如果 Exchange Server 5.5 用户向这样的通讯组列表发送邮件,那么 Exchange Server 5.5 MTA 将把邮件正确转发到 Exchange Server 2003 展开服务器。在 Exchange Server 2003 中,通讯组列表展开是 SMTP 服务中的分类程序的作业。但是,SMTP 传输子系统不会修正 P1 邮件传输信封中的 TraceInformation,以便将邮件标记为通讯组列表已展开。通讯组列表展开之后,Exchange Server 2003 将所有 Exchange Server 5.5 收件人的邮件路由回 Exchange Server 5.5。如果邮件现在重新访问已经处理过该邮件的运行 Exchange Server 5.5 的服务器,则该邮件会被丢弃并生成未送达报告。发生这种情况是因为检测到循环。SMTP 没有 X.400 跟踪信息的概念,并且基于 X.400 的 Exchange Server 5.5 MTA 必须丢弃邮件,因为 P1 信封中的 TraceInformation 没有指示这是通讯组列表展开邮件。为了避免这个问题,应当将运行 Exchange Server 5.5 的服务器作为包含 Exchange Server 5.5 用户的通讯组列表的展开服务器使用。