Exchange 2013 中的传输代理概念
查找有关 Exchange 2013 中的传输代理管道和服务器角色体系结构如何影响传输代理开发的信息,以及可用于开发传输代理的类。
适用于:Exchange Server 2013
可以使用 Exchange Server 2013 中提供的类库实现传输代理,这些代理注册事件并在消息通过传输管道时对其执行操作。 还可以使用传输代理修改消息和转换内容。
本文提供有关传输代理和传输管道体系结构的信息。 请务必了解传输管道的体系结构,以便修改传输行为以满足组织的需求。 本文还提供了有关 Exchange 2013 体系结构中影响传输代理的更改以及可用于开发传输代理的类的信息。
传输管道中的传输代理
传输代理派生自以下三个类之一:
传输管道是指 Exchange 2013 组织边界内的邮件数据流。 管道由下表中列出的服务组成。
表 1. 传输管道服务
服务 | 说明 | 支持的类 |
---|---|---|
前端传输 |
在所有 客户端访问服务器上 运行,并充当 Exchange 2013 组织的所有入站和出站外部 SMTP 流量的无状态代理。 前端传输服务不会在本地检查消息内容或对任何邮件进行排队。 它与 邮箱服务器上的传输服务通信。 |
SmtpReceiveAgent |
Transport |
在所有邮箱服务器上运行,类似于 Exchange Server 2010 中的中心传输服务器角色。 传输服务在自身与邮箱传输和前端传输服务之间路由邮件。 此服务不直接与邮箱数据库通信。 |
SmtpReceiveAgent RoutingAgent DeliveryAgent |
邮箱传输 |
在所有邮箱服务器上运行,由两个单独的服务组成:邮箱传输提交和邮箱传输传递。 邮箱传输传递从传输服务接收 SMTP 邮件,并使用 Exchange 远程过程调用 (RPC) 来传递邮件,从而连接到邮箱数据库。 邮箱传输提交使用 RPC 连接到邮箱数据库以检索邮件,并通过 SMTP 将邮件提交到传输服务。 |
无。 |
传输事件
实现传输代理的方式是先注册某个事件,然后在该事件触发时执行操作。 这三种代理类型中的每一种都可以注册一组不同的事件。
下图显示了传输管道中传输代理可以注册事件的位置。
图 1. 传输事件
当邮件进入传输管道时,从 SmtpReceiveAgent 类派生的传输代理可以在代理注册的任何 SMTP 事件期间对邮件进行操作。 派生自 RoutingAgent 类的代理可以对其注册的四个分类程序事件中的任何一个执行操作。 派生自 DeliveryAgent 类的代理可以在注册的任何传递事件期间对消息进行操作。
传输代理和服务器角色
Exchange 2013 中服务器角色体系结构的更改会影响传输代理以及传输代理可以执行的操作。 Exchange 2013 包括以下服务器角色:
邮箱服务器 — 包括客户端访问协议、传输服务、邮箱数据库和统一消息组件。 邮箱服务器直接与 Active Directory 域服务 (AD DS) 、客户端访问服务器和邮件客户端(如 Outlook)通信。
客户端访问服务器 - 提供身份验证、有限重定向、代理服务和客户端访问协议,例如 HTTP、POP、IMAP 和 SMTP。
边缘传输服务器 - 将电子邮件路由到组织中和从组织流出。 边缘传输服务器通常位于 Exchange 拓扑的外围。
此合并结构减少了需要在 Exchange 2013 环境中部署的服务器数。 管理员不再需要在每个包含邮箱服务器的 Active Directory 站点中部署中心传输和客户端访问服务器,并且不再需要更新所有服务器角色即可利用新功能。
服务器角色体系结构的这些更改可能会影响代理在管道中可以响应事件的位置。 如果已为早于 Exchange 2013 的 Exchange 版本创建了传输代理,请务必查看体系结构更改,以确定是否需要对代理进行任何更改。
下图显示了 Exchange 2013 中的体系结构更改如何产生简化的合并传输管道。 在此图中,客户端访问服务器标记为 CAS。 邮箱服务器标记为 MBX。
图 2. Exchange 2013 服务器角色体系结构
下图显示了 Exchange 2013 服务器角色之间的交互。
图 3. 邮箱和客户端访问服务器交互
有关 Exchange 2013 服务器角色体系结构更改的详细信息,请参阅 Exchange 2013中的新增功能中的 Exchange 2013 体系结构。
传输代理类
传输代理派生自的类确定代理可以注册的事件。 代理通常包含代理类、代理工厂、一个或多个事件处理程序,以及执行希望代理执行的操作的代码。
下表列出了要针对每种代理类型派生的类。
表 2. 代理类
代理类型 | 工厂基类 | 代理基类 |
---|---|---|
SMTP 接收 |
SmtpReceiveAgentFactory |
SmtpReceiveAgent |
路由 |
RoutingAgentFactory |
RoutingAgent |
交货 |
DeliveryAgentFactory<Manager> |
DeliveryAgent |
这些工厂和代理基类提供可用于访问传输事件和消息的属性和方法。 在代理中实现继承自这些类的类。 在代理工厂派生类中,重写 CreateAgent 方法,以便它返回代理类的新实例。
传递给事件的参数可以包含 EmailMessage 类的实例,可用于更改基础邮件的属性和内容。 并非所有消息信息都在每个事件中都可用。 必须确定哪个代理和哪个事件最适合要完成的任务。
以下命名空间包含可用于在传输管道中读取、写入和修改消息的类型:
编写传输代理后,使用 Exchange 命令行管理程序 安装和管理代理 。 有关详细信息,请参阅 为 Exchange 2013 创建传输代理。