传输代理

 

适用于:Exchange Server 2013

上一次修改主题:2015-03-09

通过传输代理,您可以在 Exchange 服务器上安装由 Microsoft、第三方供应商或您的组织创建的自定义软件。随后该软件便可以处理通过传输管道的电子邮件。在 Microsoft Exchange Server 2013 中,传输管道由以下进程组成:

  • 客户端访问服务器上的前端传输服务

  • 邮箱服务器上的传输服务

  • 邮箱服务器上的邮箱传输服务

  • 边缘传输服务器上的传输服务

有关传输管道的详细信息,请参阅邮件流

如同以前版本的 Exchange,Exchange 2013 传输通过 Microsoft Exchange Server 2013 传输代理 SDK 提供扩展性。SDK 的 Exchange 2013 版本基于 Microsoft.NET Framework 版本 4.0,并允许第三方实施以下预定义类:

  • SmtpReceiveAgent

  • RoutingAgent

  • DeliveryAgent

在遵照 SDK 库时,结果程序集通过 Exchange 2013 注册,这样会在 SMTP 会话或邮件处理的某个特定阶段加载代理,并调用代理的时间处理器。这些阶段或事件,是代理定义的一部分。代理注册信息存储在 XML 配置文件中。

以下列表说明了在 Exchange 2013 中使用传输代理的要求。

  • 邮箱服务器和边缘传输服务器上的传输服务完全支持 SDK 中的所有预定义分类,所以任何在 Microsoft Exchange Server 2010 上为集线器传输或边缘传输服务器角色写入的第三方传输代理均应该在 Exchange 2013 的传输服务中工作。

  • 前端传输服务仅仅支持 SDK 中的 SmtpReceiveAgent类,而第三方代理可以运行在 OnEndOfData SMTP 事件上。

  • 邮件传输服务完全不支持 SDK,所以在邮箱传输服务中不可使用任何第三方代理。

对于基于 .NET Framework 4.0 之前版本的旧版传输代理的支持并非默认启用,但是可自行启用。有关说明,请参阅启用对旧版传输代理的支持

目录

对传输代理管理的更新

传输代理和 SMTP 事件

传输代理的优先级

内置传输代理

解决传输代理问题

由于对 Exchange 2013 传输管道的更新,传输代理 cmdlet 需要在传输服务与前端传输服务之间进行分辨,尤其是客户端访问服务器与邮箱服务器安装在同一计算机上时。有关详细信息,请参阅管理传输代理

传输代理管理 cmdlet 操作位于 %ExchangeInstallPath%TransportRoles\Shared 的配置文件。对于邮箱服务器和边缘传输服务器上的传输服务,此文件为 agents.config。对于客户端访问服务器上的前端传输服务,此文件为 fetagents.config。这两个文件使用与 Exchange 2010 中相同的格式。有关管理传输代理的详细信息,请参阅管理传输代理

返回顶部

传输代理使用 SMTP 事件。邮件在传输管道中移动时会触发这些事件。SMTP 事件使传输代理可以在 SMTP 会话期间以及通过组织路由邮件期间,在特定的时间点访问邮件。

请注意,Exchange 2013 中有新的 SMTP 接收事件。客户端访问服务器上的前端传输服务、邮箱服务器和边缘传输服务器上的传输服务以及邮箱服务器上的邮箱传输传递服务中存在 SMTP 接收。分类程序只存在于邮箱服务器和边缘传输服务器上的传输服务。有关运输服务和分类程序的详细信息,请参阅邮件路由

下表列出了可提供对传输管道中邮件的访问权限的 SMTP 事件。

SMTP 接收事件

序列 SMTP 事件 描述

1

OnConnectEvent

通过远程 SMTP 主机的初始连接触发此事件。

2

OnHeloCommand

远程 SMTP 主机发出 HELO 命令时将触发此事件。

3

OnEhloCommand

远程 SMTP 主机发出 EHLO 命令时将触发此事件。

4

OnStartTlsCommand

远程 SMTP 主机发出 STARTTLS 命令时将触发此事件。

5

OnAuthCommand

远程 SMTP 主机发出 AUTH 命令时将触发此事件。

6

OnProcessAuthentication

处理远程 SMTP 主机的身份验证时,将触发此事件。

7

OnEndOfAuthentication

远程 SMTP 主机完成身份验证时将触发此事件。

8

OnXSessionParamsCommand

远程 SMTP 主机发出 XSESSIONPARAMS 命令时将触发此事件。

9

OnMailCommand

远程 SMTP 主机发出 MAIL FROM 命令时将触发此事件。

10

OnRcptToCommand

远程 SMTP 主机发出 RCPT TO 命令时将触发此事件。

11

OnDataCommand

远程 SMTP 主机发出 DATA(文本)或 BDAT(二进制数据)命令时将触发此事件。

12

OnEndOfHeaders

远程 SMTP 主机完成提交电子邮件头时,将触发此事件。此由分隔邮件头和邮件正文的空白行 (<CRLF>) 指明。

13

OnProxyInboundMessage

客户端访问服务器上的前端传输服务将传入 SMTP 会话中继或代理到邮箱服务器上的传输服务时,将触发此事件。

14

OnEndOfData

远程 SMTP 主机发出数据结尾命令时,将触发此事件。对于 DATA 命令启动的文本会话,数据结尾指示符为 <CRLF>.<CRLF>。对于 BDAT 命令启动的二进制会话,数据结尾指示符为 BDAT LAST

**

OnHelpCommand

远程 SMTP 主机发出 HELP 命令时将触发此事件

**

OnNoopCommand

远程 SMTP 主机发出 NOOP 命令时将触发此事件

**

OnReject

如果接收 SMTP 主机向发送 SMTP 主机发出临时或永久传递状态通知 (DSN) 代码,则触发此事件。

**

OnRsetCommand

发送 SMTP 主机发出 RSET 命令时将触发此事件

15

OnDisconnectEvent

接收或发送 SMTP 主机断开 SMTP 会话前,将触发此事件。通常,远程 SMTP 主机发出 QUIT 命令时将触发此事件

** 在 OnConnectEvent 之后和 OnDisconnectEvent 之前,随时可以发生这些事件。

分类程序事件

序列 分类程序事件 描述

1

OnSubmittedMessage

邮件到达接收邮箱服务器或边缘传输服务器上传输服务中的提交队列时,将触发此事件。

2

OnResolvedMessage

在解析所有收件人之后到为每个收件人确定跃点之前的这段时间,将触发此事件。使用 OnResolvedMessage 路由事件,能够通过每个收件人的 SetRoutingOverride 方法使用后续事件覆盖默认的路由行为。

3

OnRoutedMessage

对邮件进行分类、扩展通讯组列表并且解析了收件人后,将会触发此事件。

4

OnCategorizedMessage

分类程序完成邮件处理时,将触发此事件。

返回顶部

有两个因素可确定传输管道中邮件传输代理操作的顺序:

  1. 注册传输代理位置的 SMTP 事件,以及该 SMTP 事件遇到邮件的时间。

  2. 多个代理注册到同一个 SMTP 事件时,分配给传输代理的优先级值。最高优先级为 1。较高的整数值表示较低的代理优先级。

例如,假设您已配置以下传输代理:

  • 优先级为 1 的传输代理 A 与优先级为 2 的传输代理 C 被注册到 OnEndOfHeaders SMTP 事件。

  • 优先级为 4 的传输代理 B 被注册到 OnMailCommand SMTP 事件。

因为 OnMailCommand 事件在 OnEndOfHeaders 事件之前遇到邮件,因此传输代理 B 最先应用于邮件。当邮件到达 OnEndOfHeaders 事件时,因为传输代理 A 优先级高于(整数值低于)传输代理 C,所以在传输代理 C 之前先应用传输代理 A。

Exchange 2013 包含许多内置的传输代理,这些代理具有反垃圾邮件、传输规则和日志记录等功能。通过传输代理 cmdlet,Exchange 2013 邮箱服务器和客户端访问服务器上的大多数内置传输代理均不可见且不受管理。实际上,邮箱服务器和边缘传输服务器上传输服务中的所有内置传输代理均可见且易管理。

邮箱服务器上更令人关注的内置传输代理详见下表。请注意,此表不包括许多不可见且不受管理的传输代理。

邮箱服务器上令人关注的内置传输代理

代理名 易于管理? Priority SMTP 或分类程序事件

传输规则代理

1

OnResolvedMessage

恶意软件代理

2

OnSubmittedMessage

文本消息路由代理

3

OnSubmittedMessage

文本消息传递代理

4

不适用

日记代理

无法配置

OnRoutedMessage

日记报告解密代理

无法配置

OnCategorizedMessage

RMS 解密代理

无法配置

OnSubmittedMessage

RMS 加密代理

无法配置

OnSubmittedMessageOnRoutedMessage

RMS 协议解密代理

无法配置

OnEndOfData

通过传输代理管理 cmdlet 或其他特定功能 cmdlet,边缘传输服务器上的大多数内置传输代理均可见且易管理。

边缘传输服务器上更令人关注的内置传输代理详见下表。请注意,此表不包括不可见或不受管理的传输代理。

边缘传输服务器上令人关注的内置传输代理

代理名 易于管理? 优先级 SMTP 或分类程序事件

连接筛选代理

1

OnConnectEventOnMailCommandOnRcptComandOnEndOfHeaders

地址重写入站代理

2

OnRcptCommandOnEndOfHeaders

边缘规则代理

3

OnEndOfData

内容筛选器代理*

4

OnEndOfData

发件人 ID 代理*

5

OnEndOfHeaders

发件人筛选器代理*

6

OnMailCommandOnEndOfHeaders

收件人筛选器代理

7

OnRcptCommand

协议分析代理*

8

OnConnectEventOnEndOfHeadersOnEndOfDataOnRejectOnRsetCommandOnDisconnectEvent

附件筛选代理

9

OnEndOfData

地址重写出站代理

10

OnSubmittedMessageOnRoutedMessage

* 您还可以在邮箱服务器上安装和配置这些反垃圾邮件代理。有关详细信息,请参阅在邮箱服务器上启用反垃圾邮件功能

返回顶部

为了帮助您解决传输代理问题,可以使用以下功能:

  • Get-TransportPipeline   此 cmdlet 显示 SMTP 事件以及在 Exchange 服务器上遇到邮件的相应传输代理。有关详细信息,请参阅查看传输管道中的传输代理

  • 管道跟踪   管道跟踪能够在邮件遇到每个传输代理前后创建邮件的准确快照。这使您可以找到导致意外结果的传输代理。有关详细信息,请参阅管道跟踪

返回顶部

 
显示: