EDK 连接器体系结构

 

上一次修改主题: 2005-06-21

若要实现 Exchange 用户和非 Exchange 用户之间的无缝交互,连接到非 Exchange 邮件系统的连接器必须支持以下关键任务:

  • 双向邮件传输:电子邮件传输是所有连接器任务中最重要的任务。但是,在 Exchange 组织中,基于 MAPI 的连接器不执行邮件路由。基于 MAPI 的连接器从特定的 Exchange 桥头服务器那里获得出站邮件,并将入站邮件传输到同一个桥头服务器。然后在 SMTP 传输子系统中执行邮件路由和传递。有关 Exchange Server 2003 邮件处理的详细信息,请参阅邮件路由体系结构
    在邮件传输的非 Exchange 端,邮件传递和检索依赖于非 Exchange 邮件系统所提供的功能和编程接口。通常,在邮件传输的这一端也只使用单个联系点。例如,Lotus Notes 连接器只连接到一台 Lotus Domino 服务器。然后,需要由非 Exchange 邮件系统服务器将邮件路由到其最终目标。
    下图说明了基于 MAPI 的连接器为了完成出站和入站邮件传输而必须执行的典型步骤。
    4af18fd1-c475-4b1f-8d59-75cf6f1d802c
    与非 Exchange 邮件系统的双向邮件传输包括以下步骤:
    1. 邮件传输过程从获得来自源系统的邮件开始。基于 MAPI 的连接器使用 MAPI 检索来自 Exchange 的邮件。在邮件传输的非 Exchange 端,邮件检索操作基于非 Exchange 的邮件系统所提供的编程接口(例如,Lotus Notes Client API 或 Novell GroupWise API 网关)。
    2. 邮件传输的下一步是将邮件转换为目标邮件系统的格式。该步骤包括映射地址以及将邮件格式从 MAPI 转换到非 Exchange 格式和进行相反转换。
    3. 邮件传输的最后一步是将经过转换的邮件传递到目标系统。EDK 连接器再次使用 MAPI 将邮件传递给 Exchange 存储。邮件传输的非 Exchange 端使用专有编程接口(例如,Lotus Notes Client API 或 Novell GroupWise API 网关)来完成传输。
  • 目录同步:目录同步是基于 MAPI 的连接器所执行的第二个最重要的任务。目录同步是可选的,但它非常有用,因为它为所有用户提供了访问完整地址列表(包括 Exchange 和非 Exchange 邮件环境中的收件人)的能力。在中 Exchange Server 2003,目录信息驻留 Microsoft Active Directory 目录服务,和目录同步执行使用轻型目录访问协议 (LDAP) 和 Active Directory 服务接口 (ADSI)。
  • 执行支持功能:邮件传输和目录同步是基于 MAPI 的连接器必须执行的最重要的任务。此外,应当实现支持功能以提高与 Exchange Server 2003 的集成级别。支持功能包括:
    • 性能监视:基于 MAPI 的连接器提供了性能计数器,以便管理员可以使用“性能”工具(在“开始”菜单中的“管理工具”内)来创建性能监视报告。
    • 事件日志记录:基于 MAPI 的连接器可以按照各种诊断级别跟踪重要事件(例如,连接器服务启动、停止、转换邮件、传输邮件),并将它们记录在应用程序事件日志中。管理员可以使用“事件查看器”工具(在“管理工具”中)来确定连接器是否在正常运行。在对邮件传输问题进行故障排除时,应用程序事件日志是重要的信息源。
    • 错误处理:基于 MAPI 的连接器可以使用传递状态通知,将有关传输问题的信息告知邮件发件人。例如,如果由于地址不正确而使连接器无法处理收件人信息,则连接器将向邮件发件人发送未送达报告 (NDR)。
    • 邮件跟踪:基于 MAPI 的连接器可以跟踪在传输中经过该连接器的邮件的相关信息,并将这些信息记录在 Exchange Server 2003 的邮件跟踪日志文件中,以便管理员可以分析邮件从发件人的服务器出发到离开 Exchange 组织所走的完整路径。对于入站邮件来说,邮件跟踪开始于邮件到达基于 MAPI 的连接器并进入 Exchange 组织时。默认情况下,不启用邮件跟踪。必须在想要跟踪其邮件的每个服务器上启用该功能,或者使用服务器策略。在 Exchange 系统管理器中,在服务器或服务器策略“属性”中选择“常规”选项卡,然后选中“启用邮件跟踪”复选框。

基于 MAPI 的连接器由能够与 Exchange Server 2003 无缝集成的多个组件组成。这些组件包括用来包含连接器特有设置的 Active Directory 中的配置对象,以及执行邮件转换和传输的实际的连接器应用程序。基于 MAPI 的连接器还带有 Microsoft 管理控制台 (MMC) 管理单元,它们与 Exchange 系统管理器集成在一起,以便可以使用统一的用户界面执行系统配置任务。

基于 MAPI 的连接器由以下组件组成:

  • 连接器服务:通常,基于 MAPI 的连接器的实现方式是直接运行在 Exchange Server 2003 桥头服务器上的 Microsoft Windows 服务。因此,当服务器启动并运行在其自己的安全上下文中时,它们将自动启动。在 Exchange Server 2003 中,所有服务(包括基于 MAPI 的连接器的服务)都使用 LocalSystem 帐户,Exchange Server 2003 服务依存关系对此进行了讨论。
    note注意:
    连接器组件可以直接运行在运行 Exchange Server 2003 的服务器上,也可以运行在通过网络与 Exchange Server 2003 通信的单独计算机上。通常,通过计算机网络来访问非 Exchange 邮件系统,但是,如果非 Exchange 邮件系统位于连接器服务器的本地,则有可能提高连接器性能。例如,Exchange Server 2003 和 Lotus Domino 可能都运行在同一台服务器上。
  • 转换 DLL:基于 MAPI 的连接器可以向 Exchange Server 2003 框架注册用于邮件转换的转换 DLL,以便在连接器转换入站或出站邮件时调用合适的转换代码。这些 DLL 必须在注册表中注册,其位置在 HKEY_LOCAL_MACHINE\Software\Classes\MAPI Conversions 项的下面。然后,每个转换 DLL 必须有子项。DLL 子项名必须是 DLL 文件名。这些 DLL 必须安装在桥头服务器的 \System32 目录中。每个 DLL 项都包含转换 DLL 中的每个入口点的子项,转换引擎将使用这些子项执行转换。
    note注意:
    转换 DLL 是可选组件。执行邮件转换的代码还可以直接嵌入基于 MAPI 的连接器,在这种情况下,将不使用转换 DLL。例如,Lotus Notes 连接器和 Novell GroupWise 连接器不依赖于转换 DLL。随后几节将讨论这些连接器执行邮件转换所依赖的机制。
  • 代理地址生成 DLL:代理地址是收件人更新服务在 Active Directory 中分配给 Exchange 收件人对象的非 Exchange 地址。这使非 Exchange 用户能够向 Exchange 用户发送电子邮件,或者相反。例如,Exchange 用户 Ted Bremer 可能有一个 NOTES 代理电子邮件地址 Ted@Exchange。然后,Lotus Notes 用户可以使用该电子邮件地址向 Ted 发送邮件。在 Lotus Notes 环境中,Ted 显示为称为 Exchange 的 Lotus Notes 外部域中的用户,该外部域与 Lotus Notes 连接器关联。因此,Lotus Notes 将发送到 Ted@Exchange 的邮件路由到 Lotus Notes 连接器。当 Lotus Notes 连接器检索邮件时,连接器将执行地址转换,并用实际的 Exchange 地址(用户的 X.500 地址,在 legacyExchangeDN 属性中指定)来替换 Exchange 用户的 Lotus Notes(代理)地址。同样,在发送到 Lotus Notes 的所有出站邮件中,Lotus Notes 连接器会用 Ted 的 Lotus Notes代理地址信息来替换其 Exchange 地址信息。本机 Exchange Server 2003 地址格式是 SMTP。
    note注意:
    在非 Exchange 邮件系统中,Exchange 用户通常显示为存在于非 Exchange 邮件系统中的正常收件人。
    若要使收件人更新服务能够以正确格式生成代理地址,基于 MAPI 的连接器必须在运行 Exchange Server 2003 的服务器上安装合适的代理地址生成 DLL。代理地址 DLL 驻留在与地址类型和计算机处理器类型相对应的子目录中(在 \Program Files\Exchsrvr\Address 的下面)。该子目录被共享,可通过网络访问(共享名:\\\\<服务器名>\Address),以便收件人更新服务可以访问这些 DLL,即使邮件连接器被安装在运行 Exchange Server 的另一台服务器上。在 Exchange Server 2003 与 Active Directory中可以详细了解收件人更新服务。
    下图显示了收件人更新服务分配给 Exchange 用户的代理地址的示例。
    1851d0bd-9e67-4490-8c76-b988124c23f5
    用户可以有主代理地址和辅助代理地址。例如,图 8.2 显示了 Ted 的辅助 Lotus Notes代理地址。在发送到非 Exchange 邮件系统的所有出站邮件中,主代理地址被用作发件人地址。当入站邮件不发送给主代理地址时,则使用辅助代理地址将这些邮件传递给 Exchange Server 2003 中的正确收件人。为了继续示例,Ted 还可以接收发送到 Ted@Contoso 的 Lotus Notes邮件,因为该地址是 Ted 的辅助 NOTES 代理地址。
    note注意:
    可以在 Exchange 系统管理器的收件人策略中定义 Exchange 用户的代理地址。对于每个地址类型,Exchange 用户只有一个主代理地址,但可能有多个辅助地址。所有代理地址(主地址和辅助地址)在 Exchange 组织中都必须是唯一的。例如,不能有两个 Exchange 收件人的 NOTES 代理地址都是 Ted@Contoso。
  • addrType 对象:在运行 Exchange Server 2003 的服务器上,如将代理地址生成 DLL 放在 \Program Files\Exchsrvr\Address 下面的子目录中,收件人更新服务将不能生成特定地址类型的代理地址。若要启用某个地址类型,连接器还必须在 Active Directory 的 addrType 对象中注册它所支持的地址类型。所有 addrType 对象都驻留在 Active Directory 的配置目录分区,并位于 Address-Types 容器中。可以使用 ADSI Edit 查看该容器的内容。如果在“查看”菜单上选择“显示服务节点”选项以显示服务节点,也可以在 Active Directory 站点和服务中查看该容器。Address-Types 容器的路径是 \Services\Microsoft Exchange\<Exchange 组织名>\Addressing\Address-Types。默认情况下,存在用于 CCMAIL、GWISE、MS、NOTES、SMTP 和 X400 的 addrType 对象。
    下表列出了 addrType 对象的重要属性。

    addrType 对象的属性

    属性 描述

    Common-Name

    Address-Type 的公用名,用来构建 Active Directory 中对象的可分辨名称。

    File-Version

    代理地址生成器 DLL 文件的版本号。

    proxyGeneratorDLL

    用于该地址类型的代理地址生成器 DLL 的名称。例如,公用名为 NOTES:i386 的 addrType 对象在该属性中指定了一个称为 Ntspxgen.dll 的代理地址生成器 DLL。

    name

    地址类型的名称,例如 NOTES:i386。

  • 地址模板:通过与 addrType 对象配合,基于 MAPI 的连接器也可能安装地址模板和选项模板,以便提供用户可以用来为非 Exchange 邮件系统创建自定义收件人的友好接口。这些模板描述了在用来输入自定义地址的对话框上的设置。地址模板与地址语法程序配合,将用户输入的数据转换为代理地址字符串。可以在 Exchange 系统管理器中自定义地址模板(在“收件人”下面的“地址模板”容器中)。
    note注意:
    地址模板和地址语法程序是可选的连接器组件。Lotus Notes 连接器和 Novell GroupWise 连接器不安装这些组件。
  • msExchConnector 对象:比地址模板更重要的是每个基于 MAPI 的连接器必须在 Active Directory 中具有的实际连接器对象。服务器启动时,路由引擎会枚举和读取来自所有路由组的所有 msExchConnector 对象,以便初始化链路状态表。邮件路由体系结构对此进行了解释。
    在 Exchange 系统管理器中,连接器对象驻留在它们的路由组下面的“连接器”容器中。必须有相应的管理单元才能配置 msExchConnector 对象的设置。除了常规属性以外,这些设置包括连接器类型特有的属性。
    note注意:
    除了 Active Directory 中的 msExchConnector 对象以外,配置信息还可以存储在桥头服务器的注册表数据库中。
    下表列出了所有基于 MAPI 的连接器共同拥有的重要常规属性。

    msExchConnector 对象的重要常规属性

    属性 描述

    Common name

    在 Active Directory 中代表相对于其父容器的连接器对象的名称。

    computerName

    指向正在运行基于 MAPI 的连接器的桥头服务器。该属性必须与桥头服务器的网络基本输入/输出系统 (NetBIOS) 名称完全匹配,否则,Exchange 系统管理器中的队列查看器管理单元无法显示连接器的邮件队列。

    deliveryMechanism

    标识 Exchange Server 2003 用来将邮件传递给基于 MAPI 的连接器的传递机制。

    distinguishedName

    在 Active Directory 中代表连接器对象的可分辨名称。

    homeMDB

    标识包含连接器邮箱的专用存储。

    homeMTA

    标识负责将邮件路由到基于 MAPI 的连接器的 Exchange MTA。

    legacyExchangeDN

    以更早的 Exchange Server 5.5 目录格式表示连接器对象的可分辨名称。必须在连接器对象上设置这个属性,队列查看器管理单元才能工作。

    msExchConnectorType

    标识连接器类型。例如,Lotus Notes 连接器的连接器类型是 NOTES,Novell GroupWise 连接器的连接器类型是 GWISE。

    name

    代表连接器对象的名称。Exchange 系统管理器使用该名称作为连接器对象的显示名。

    objectClass

    将连接器标识为 msExchConnector 和 mailGateway。此外,将注册具体的对象类以标识实际的连接器类型。例如,msExchNotesConnector 是 Lotus Notes 连接器的对象类,msExchGroupWiseConnector 是 Novell GroupWise 连接器的网关对象的对象类。

    note注意:
    若支持连接器的特定属性,非 Microsoft 厂商提供的基于 MAPI 的连接器必须扩展 Active Directory 的架构,以创建新的对象类。应当通过从 mailGateway 类所继承的类的对象来表示 Active Directory 中的基于 MAPI 的连接器。mailGateway 对象又是 msExchConnector 的子类。

    routingList

    标识与该连接器关联的地址空间。每个连接器至少有一个关联的地址空间。通过将收件人地址与可用的地址空间信息进行比较,路由引擎使用该信息来确定特定邮件的可能连接器。

  • 管理单元:基于 MAPI 的连接器应当向 Exchange 系统管理器添加和注册一个 MMC 扩展管理单元,以便 Exchange 管理员可以使用友好的用户界面来配置 Active Directory 中(并且可能在注册表设置中)的连接器 msExchConnector 对象。例如,Lotus Notes 连接器带有 Exchange Notes 连接器管理单元,而 Novell GroupWise 连接器带有 Exchange GroupWise 连接器管理单元。这两个管理单元都在 Exadmin.dll 中实现,Exchange 系统管理器体系结构对此进行了解释。
  • 连接器邮箱:在 Active Directory 中为基于 MAPI 的连接器创建 msExchConnector 对象时,Exchange Server 2003 将在 msExchConnector 对象的 homeMDB 属性中所指定的邮箱存储内,为连接器创建一个特殊的邮箱。当连接器服务真正第一次启动时,或者第一封邮件被路由到连接器时,Exchange 存储将在桥头服务器上创建这个特殊的邮箱。这个邮箱包括基于 MAPI 的连接器的入站和出站邮件队列(名为 MTS-IN 和 MTS-OUT),可能还有连接器在邮件处理期间有可能使用的其他文件夹(名为 Badmail、ReadyIn 和 ReadyOut、Deferred Action,Spooler Queue 和 Temp)。例如,Lotus Notes 连接器和 Novell GroupWise 连接器将坏邮件放在 Badmail 文件夹中。是否使用除 MTS-IN 和 MTS-OUT 以外的其他文件夹取决于实际的连接器实现。
    note注意:
    连接器邮箱必须至少有一个 MTS-IN 文件夹和 MTS-OUT 文件夹。

尽管与非 Exchange 邮件系统通信的过程取决于各种连接器类型而各不相同,但所有 EDK 连接器都使用 MAPI 来访问 Exchange 存储中它们的连接器邮箱。如下图所示,Exchange 邮件传输代理 (MTA) 将发往非 Exchange 邮件系统的邮件放在 MTS-OUT 文件夹中,而基于 MAPI 的连接器则将它已从非 Exchange 邮件系统检索到并进行转换的入站邮件放在 MTS-IN 文件夹中。X.400 传输体系结构详细讨论了 Exchange MTA。

note注意:
由于连接器邮件队列始终是可用的,所以,基于 MAPI 的连接器在链路状态表中总是被标记为 STATE_UP,并且 Exchange MTA 继续将邮件传递给基于 MAPI 的连接器,即使连接器服务没有运行。这可以导致许多邮件被收集在 MTS-OUT 邮件队列中。
ae30bb20-dc8d-4452-bff5-d17a67be564c

Exchange Server 2003 在将邮件传输到非 Exchange 邮件系统时执行以下步骤:

  1. Exchange 用户向非 Exchange 用户发送邮件。邮件被传递到 SMTP 服务,以便进行路由和传输。
  2. SMTP 服务对邮件进行分类和路由,邮件路由体系结构对此进行了讨论。因为该邮件是发往非 Exchange 用户的,因此路由引擎将该邮件分配给 Exchange MTA。Exchange MTA 对连接到非 Exchange 邮件系统的、基于 MAPI 的连接器负责。
  3. SMTP 服务通过 Exchange 存储将邮件传递到 Exchange MTA。Exchange MTA 将邮件放在内部邮件队列中,该队列由 MTA 在与 Exchange 存储不同的文件系统 (\Program Files\Exchsrvr\Mtadata) 中进行单独维护。
  4. Exchange MTA 通过 MTARoute.dll 与 SMTP 传输子系统中的路由引擎通信,以确定基于 MAPI 的目标连接器。
  5. 路由引擎按地址空间识别用于处理收件人的、基于 MAPI 的连接器,并将该信息返回给 Exchange MTA。
  6. Exchange MTA 将邮件包装在邮件传输信封 (MTE) 中,并将它放在基于 MAPI 的目标连接器的 MTS-OUT 文件夹中。邮件传输信封中包含一个基于 MAPI 的连接器必须向其传递邮件的收件人列表,还包含附件形式的原始邮件。
    note注意:
    通过定期地轮询连接器邮箱,或者通过等待来自 Exchange 存储的 Advise 事件(该事件提示新的出站邮件),基于 MAPI 的连接器可以确定传出邮件什么时候到达它的 MTS-OUT 文件夹。

在邮件传输的 Exchange 端,入站邮件传递需要比出站邮件传输更少的步骤。基于 MAPI 的连接器将入站邮件放在 MTS-IN 文件夹中后,Exchange MTA 将邮件直接传递到 SMTP 传输子系统,以便进行分类、路由和传递,而不会执行邮件路由本身。

通过以下步骤完成入站邮件传输:

  1. 基于 MAPI 的连接器从非 Exchange 邮件系统获得邮件,然后对预期收件人执行地址转换,再将邮件转换为 MAPI 格式,然后把邮件放在 Exchange 存储内它的 MTS-IN 文件夹中。
  2. Exchange MTA 对只在邮件来自 SMTP 服务时才设置的特殊邮件属性进行分析。因为该标记已丢失,因此 MTA 识别出邮件并非来自本地 SMTP 服务,这说明它是 Exchange MTA 不需要对其执行邮件路由的入站邮件。MTA 将邮件直接传递到 SMTP 服务的 MTS-OUT 文件夹。
  3. Exchange 存储驱动程序将邮件放在提交前队列中,并由 SMTP 传输子系统分类、路由和传递邮件,邮件路由体系结构SMTP 传输体系结构对此进行了讨论。

与典型的 MAPI 客户端(例如,Microsoft Office Outlook)类似,基于 MAPI 的连接器需要 MAPI 配置文件才能访问它们的连接器邮箱。MAPI 配置文件定义了 MAPI 子系统与 Exchange 存储通信时所使用的设置。基于 MAPI 的连接器使用 MAPILogonEx 函数来动态地创建必需的配置文件,并且创建时不需要在服务器上安装 MAPI 客户端。有关如何动态创建 MAPI 配置文件的详细信息,请参阅 Microsoft 知识库文章 306962“How to Create MAPI Profiles Without Installing Outlook”。

MAPI 配置文件存储在注册表中 HKEY_USERS 部分的下面。依照被活动服务器处理并由管理员用来登录到系统的系统帐户和用户帐户的安全标识符 (SID),桥头服务器上存在几个子项。在 Exchange Server 2003 中,基于 MAPI 的连接器应当运行在 LocalSystem 帐户的上下文中,该帐户的一个 SID 是 S-1-5-18。因此,您可以在以下位置找到基于 MAPI 的连接器的 MAPI 配置文件:HKEY_USERS\S-1-5-18\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles。例如,如果在名为 Server01 的桥头服务器上安装并启动 Novell GroupWise 连接器,则可以在 Profiles 项的下面找到名为 SERVER01-LME-GWISE V5.5 的子项。

有可能将连接器配置文件复制到当前登录的管理员的子项中,然后使用低层的 MAPI 工具打开连接器邮箱。Mdbvu32.exe 就是这样的低层 MAPI 工具,可以从 Downloads for Exchange Server 2003 网站(英文)下载该工具。

该工具附带的 Information Store Viewer.doc 文件中包含有关如何使用 Mdbvu32.exe 工具的详细信息。下图显示操作中的 Mdbvu32.exe 工具。可以看见连接器邮箱中的所有系统文件夹。

c718b44b-13bd-4bef-8705-793e47112c1f

有关如何使用 Mdbvu32.exe 打开连接器邮箱的详细说明,请参阅如何使用 Mdbvu32.exe 打开连接器邮箱

当 MAPI 连接器从连接器邮箱中检索邮件时,它必须在传输该邮件之前将邮件从 MAPI 格式转换为目标邮件系统的格式。同样,连接器在将邮件放入它的 MTS-IN 文件夹之前,必须将入站邮件从非 Exchange 邮件系统的格式转换为 MAPI 格式。邮件转换包括以下两个单独的过程:

  • 地址转换:基于 MAPI 的连接器必须对邮件的邮件发件人和所有收件人执行地址转换,以便以受支持的格式并使用正确的地址信息将邮件传递到目标邮件系统。
  • 邮件转换:邮件转换是网关连接器在 MAPI 邮件格式与非 Exchange 系统邮件格式之间转换邮件的过程。该转换是基于邮件类信息的,并且入站和出站邮件都要执行该过程。

基于 MAPI 的连接器必须对所有入站和出站邮件执行地址转换。以下三个收件人列表与基于 MAPI 的连接器所处理的每个邮件关联:

  • 原始收件人列表:邮件本身上的收件人列表包含作为邮件目标的所有收件人。这些收件人中的一部分的邮箱可能在本地 Exchange 服务器上,也可能在 Exchange 组织中的另一个服务器上,或者在不与连接器关联的邮件系统上。在 Exchange Server 2003 中,原始收件人列表由 SMTP 传输子系统进行处理。相同的原则适用于入站邮件。除了 Exchange 用户以外,邮件的目标可能是非 Exchange 邮件系统中的其他服务器上的收件人。
  • 发送到 MTA 的收件人列表:如果邮件包含了 MTA 必须直接通过远程过程调用 (RPC)、X.400 连接器或基于 MAPI 的连接器向其传递邮件的收件人,则 SMTP 传输子系统只将邮件传递给 MTA。SMTP 传输子系统传递给 MTA 的收件人列表可能包括所有收件人,或只包括原始列表的子集。例如,如果用户向 Lotus Notes 用户以及同一台 Exchange 服务器上的另一个用户发送邮件,则 SMTP 传输子系统将把邮件直接传递给 Exchange 用户,但会把发送给 Lotus Notes 用户的邮件的另一个实例传递给 Exchange MTA。
  • 邮件传输信封上的收件人列表:Exchange MTA 只将那些连接器必须传输的邮件传递给基于 MAPI 的连接器。Exchange MTA 将邮件传递给基于 MAPI 的连接器时,它会创建一个由 MTA 以附件的形式向其添加原始邮件的邮件传输信封 (MTE)。MTA 包含有关连接器必须向其传递邮件的收件人的信息。Exchange MTA 可能使用几个连接器来传递邮件。在这种情况下,特定的连接器不负责处理由 SMTP 传输子系统传递给 MTA 的列表中的所有收件人。
    下列表列出了 MTE 元素。

    邮件传输信封的属性

    属性 描述

    每个邮件属性

    这些属性中有很多是本机 MAPI 属性,用于定义邮件到达连接器的日期和时间、邮件的条目 ID、主体 ID、原始发件人信息和跟踪信息。

    跟踪信息指示邮件路径。Exchange MTA 在每次路由邮件时,都会把本地域的国家/地区代码、公用管理域 (ADMD) 和专用管理域 (PRMD) 添加到邮件上。MTA 还会添加时间戳和操作标记,用于指示邮件是否曾经被展开、重定向、中继或重新路由。跟踪信息对于防止发生邮件传输循环很关键。

    每个收件人属性

    对于 MTE 收件人表中的每个收件人来说,这些属性指示如下信息:收件人类型、是否请求向收件人发送传递状态通知、邮件发件人是否请求 MTA 附加收件人的物理转发地址、邮件发件人是否请求收件人发送送达证据,以及可以作为未送达报告 (NDR) 的一部分使用的诊断代码。

    附件属性

    这些 MAPI 属性用于标识所附加的对象的类型,并指定如何访问附件内容。

邮件发件人和收件人的地址转换是基于代理地址的。所有 Exchange 用户都必须有一个所需类型的代理地址,以便基于 MAPI 的连接器能够在 Active Directory 中执行查找,并在出站邮件的邮件信封中插入正确的非 Exchange 地址。对于入站邮件来说,按相反方向执行转换。

如果 Active Directory 中不存在非 Exchange 发件人或收件人的地址信息,则基于 MAPI 的连接器必须为这些用户创建一次性地址。术语“一次性”表示只用一次,不会持久保留。一次性地址只在一封邮件中使用,不会保留这样的地址供其他邮件重复使用。一次性地址的格式由 MAPI 定义,如下所示:Display name[Address type:E-mail address],例如 Ted Bremer[NOTES:Ted@Exchange]。

一次性地址还可以用来封装非 Exchange 地址。例如,如果用户向 Lotus Notes 用户和 Internet 上的用户发送邮件,而在 Active Directory 中可能没有针对 Internet 上的用户的、包含 NOTES 代理地址的收件人对象,这种情况下,Lotus Notes 连接器无法直接映射 Internet 用户,而必须将 SMTP 地址封装在一次性 NOTES 地址中,以确保在出站 Lotus Notes 邮件中所指定的所有收件人都能以受支持的格式出现在非 Exchange 系统中。

如果基于 MAPI 的连接器无法映射发件人地址或收件人地址,它必须执行以下任务:

  • 发件人地址:如果基于 MAPI 的连接器无法将发件人的 Exchange 地址转换为非 Exchange 格式,则连接器必须生成 NDR。连接器必须将要求连接器处理的邮件的每个收件人标记为不可送达。发生该操作是因为连接器无法生成用于答复邮件的返回地址。NDR 被返回给邮件发件人,通知该发件人该邮件没有到达收件人。
  • 目标系统中的收件人地址:如果基于 MAPI 的连接器无法确定连接器必须处理的收件人的地址,则连接器必须为该收件人生成 NDR,以便通知邮件发件人:邮件没有到达所有预期的收件人。
  • 收件人地址不在目标系统中:如果基于 MAPI 的连接器无法确定不一定非要由该连接器处理的收件人(例如,不是由该连接器所连接的邮件系统中的收件人)的地址,则连接器不生成 NDR。连接器必须通过使用地址封装来保留尽可能多的地址信息。连接器还可以丢弃邮件中的收件人,或将收件人信息放在纯文本字段中。

Exchange Server 2003 使用邮件类来定义邮件包含哪些属性、邮件所传送的信息的类型以及怎样处理邮件。每个邮件类都有关联的属性集,并且由于不同的 MAPI 邮件类支持不同的属性集,因此必须用多个算法将 MAPI 邮件转换为非 Exchange 邮件系统的邮件格式。同样,如果非 Exchange 邮件系统的邮件格式支持它自己的邮件类,则需要用单独的转换算法来处理这些邮件类。

为了处理邮件类,连接器将把传出邮件转换为合适的格式(当非 Exchange 邮件系统有类似的邮件类时),并把传入邮件转换为合适的 MAPI 邮件类。当传入或传出邮件需要各种 REPORT 邮件类时,连接器还会生成这些类。除了处理邮件类以外,连接器还会转换邮件附件。

下表列出了基于 MAPI 的连接器必须处理的邮件类。

基于 MAPI 的连接器必须处理的邮件类

邮件类 描述

ENVELOPE.{MessageClass}

包含邮件的 MTE。包含在 MTE 中的标准邮件类是 IPM.NOTE。可以用 MAPI IMessage 接口打开该邮件对象。

note注意:
除了 ENVELOPE 邮件类以外,基于 MAPI 的连接器必须处理为了执行邮件转换而包含在 MTE 中的标准邮件类(例如 IPM.NOTE)。

REPORT.{MessageClass}.NDR

NDR。邮件传递失败时,基于 MAPI 的连接器将生成 NDR。例如,连接器可能无法确定邮件发件人或必需收件人的地址,或者有可能无法连接到非 Exchange 邮件系统。或者,因为指定的收件人不存在,非 Exchange 邮件系统可能返回 NDR。NDR 被返回给原始发件人,而原始邮件及其收件人列表作为嵌入邮件附件被包括在 NDR 中。

REPORT.{MessageClass}.DR

传递报告。传递报告是可选的报告,用于提供有关原始邮件传递情况的各种数量的信息,具体取决于非 Exchange 邮件系统。如果非 Exchange 邮件系统不支持传递报告,则基于 MAPI 的连接器可以在将邮件成功传输到非 Exchange 邮件系统时生成传递报告。该类型的报告只是告知发件人:非 Exchange 邮件系统已接受邮件。

REPORT.{MessageClass}.IPNRN

人际注意回执通知。已读回执是可选的报告邮件,类似于传递报告。已读回执通知发件人:收件人已阅读邮件。已读回执由收件人的邮件客户端生成。并非所有非 Exchange 邮件系统都支持这些报告。

REPORT.{MessageClass}.IPNNRN

人际注意未接收通知。未读回执类似于已读回执,只是它们通知发件人:收件人没有打开邮件而将其删除。未读回执由收件人的邮件客户端生成。并非所有非 Exchange 邮件系统都支持未读回执。

基于 MAPI 的连接器(例如 Lotus Notes 连接器和 Novell GroupWise 连接器)支持目录同步,目录同步可以建立一个在所有邮件系统范围内一致的全局地址列表。基于 MAPI 的连接器还必须确保在双方的目录中目录信息保持最新状态。例如,如果在非 Exchange 邮件系统中更改或删除用户,那么还必须在 Active Directory 中更改或删除相应的收件人对象。因此,基于 MAPI 的连接器使用 MAPI 与 Exchange 存储交互,但它使用 ADSI 与 Active Directory 交互。

目录同步由两个单独的、按顺序的过程组成:

  1. 从非 Exchange 邮件系统向 Active Directory 同步收件人。
  2. 从 Active Directory 向非 Exchange 邮件系统同步收件人。

从非 Exchange 邮件系统向 Exchange 组织的目录同步包含以下按顺序执行的过程:

  1. 从非 Exchange 邮件系统提取目录信息:基于 MAPI 的连接器使用非 Exchange 邮件系统所提供的编程接口从非 Exchange 邮件系统提取目录信息。例如,Lotus Notes 连接器使用 Lotus Notes Client API 完成该步骤,而 Novell GroupWise 连接器则使用由它传递给 Novell GroupWise API 网关的管理员邮件来完成该步骤。
  2. 准备导入 Active Directory 的目录信息:基于 MAPI 的连接器在 Active Directory 中为非 Exchange 用户创建以下类型的收件人对象:
    • 禁用已启用邮件的用户帐户:如果非 Exchange 用户尚未存在于 Active Directory 环境中,但将在迁移到 Exchange Server 2003 之后存在于该环境中,那么这是个好的选择。
    • 启用已启用邮件的用户帐户:对于在您的 Active Directory 环境中工作的非 Exchange 用户(即使他们没有 Exchange 邮箱),这是个好的选择。
    • 已启用邮件的联系人:对于不会、并且永远不会在 Active Directory 环境中的非 Exchange 用户,这是个好的选择。外部邮件系统中的 Internet 用户是一个例子。
    基于 MAPI 的连接器可以将通讯组列表作为联系人对象进行同步。这是一个优点,因为连接器不需要维护 Active Directory 中的通讯组列表成员身份信息。但是,发送到通讯组列表的邮件此后必须首先传输到旧版邮件系统,以便进行通讯组列表展开,然后才能将邮件传递给各个收件人。如果通讯组列表中包含反向指向 Exchange Server 2003 组织中的用户的收件人,则通讯组列表展开之后,邮件必须回到 Exchange Server 2003 组织。为了避免这种不必要的邮件传输,可以选择不同步通讯组列表。如果通讯组列表的个数是可管理的,则可以在 Active Directory 中创建已启用邮件的组,并直接指定各个成员。在这种情况下,Exchange Server 2003 可以立即执行通讯组列表展开,并且不会有向旧版邮件系统进行其他邮件传输的开销。Active Directory 中的组可以包含任何类型的收件人对象,例如用户帐户、联系人或其他组。
  3. 将目录信息导入 Active Directory:基于 MAPI 的连接器使用 ADSI 来创建已启用邮件的用户帐户或已启用邮件的联系人。Lotus Notes 连接器和 Novell GroupWise 连接器将收件人信息导入到 Active Directory 中的单个目标组织单位。基于 MAPI 的连接器将在目录同步期间为非 Exchange 用户所创建的收件人对象放在目标组织单位中,目标组织单位也叫做导入容器。只能有一个导入容器。
    note注意:
    运行基于 MAPI 的连接器的 Exchange Server 2003 桥头服务器的计算机帐户需要有相应的权限才能在所选的导入容器中创建和修改收件人。

下图说明了从非 Exchange 邮件系统向 Exchange 组织传输目录信息的常规过程。

046a3794-66f4-4257-9d60-8fbb55efede8

从 Exchange 组织向非 Exchange 邮件系统的目录同步遵守与从非 Exchange 邮件系统向 Exchange 组织的目录同步相同的原则。基于 MAPI 的连接器必须使用 ADSI 从 Active Directory 中的一个或多个组织单位(也叫导出容器)中提取有关已启用邮箱的用户帐户的信息,并处理该信息,然后在非 Exchange 目录中导入、更新或删除该信息。要让从 Active Directory 到非 Exchange 的目录同步正常执行,非 Exchange 邮件系统必须包含在本地邮件系统以外的用户的目录信息。大多数邮件系统都支持该功能。例如,Exchange 用户作为 Lotus Notes 外部域中的用户出现在 Lotus Notes 中。除了从 Active Directory 中导出已启用邮箱的用户帐户,基于 MAPI 的连接器还支持导出联系人和组,然后这些组将作为正常的 Exchange 收件人出现在非 Exchange 目录中。

note注意:
运行基于 MAPI 的连接器的 Exchange Server 2003 桥头服务器的计算机帐户需要有相应的权限才能访问和读取所选导出容器中的收件人信息。

下图说明了从 Active Directory 向非 Exchange 邮件系统传输目录信息的常规过程,该过程基于 ADSI 和非 Microsoft API 或导入工具,这些工具将收件人对象放在非 Exchange 目录中。基于 MAPI 的连接器将目录信息导入到非 Exchange 目录中时所使用的 API 和工具依赖于非 Exchange 邮件系统。例如,Lotus Notes 连接器使用 Lotus Notes Client API 来完成到 Lotus Notes 的目录导入,而 Novell GroupWise 连接器则使用由它传递给 Novell GroupWise API 网关的管理员邮件。

09ed343a-5f09-416b-8af9-e67ab046623a
 
显示: