傳輸代理程式
適用於:Exchange Server 2013
傳輸代理程式可讓您在 Exchange 伺服器上安裝由 Microsoft、協力廠商廠商或貴組織所建立的自訂軟體。 此軟體接著可以處理通過傳輸管線的電子郵件訊息。 在 Microsoft Exchange Server 2013 中,傳輸管線是由下列程式所組成:
用戶端存取伺服器上的前端傳輸服務
信箱伺服器上的傳輸服務
信箱伺服器上的信箱傳輸服務
Edge Transport Server 上的傳輸服務
如需傳輸管線的詳細資訊,請參閱 郵件流程
如同舊版 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 中使用傳輸代理程式的需求。
信箱伺服器和 Edge Transport Server 上的傳輸服務完全支援 SDK 中所有預先定義的類別,因此,在 Microsoft Exchange Server 2010 中針對中樞傳輸或 Edge Transport 伺服器角色所撰寫的任何協力廠商傳輸代理程式,都應該在 Exchange 2013 的傳輸服務中運作。
前端傳輸服務只支援 SDK 中的 SmtpReceiveAgent 類別,而且協力廠商代理程式無法在 OnEndOfData SMTP 事件上運作。
信箱傳輸服務完全不支援 SDK,因此您無法在信箱傳輸服務中使用任何協力廠商代理程式。
根據 4.0 版之前的.NET Framework版本,舊版傳輸代理程式的支援預設不會啟用,但您可以加以啟用。 如需指示, 請參閱啟用舊版傳輸代理程式的支援。
更新傳輸代理程式管理
由於 Exchange 2013 傳輸管線的更新,傳輸代理程式 Cmdlet 必須區分傳輸服務和前端傳輸服務,特別是當用戶端存取伺服器和信箱伺服器安裝在同一部電腦上時。 如需詳細資訊,請 參閱管理傳輸代理程式。
傳輸代理程式管理 Cmdlet 會操作位於 的 %ExchangeInstallPath%TransportRoles\Shared
組態檔。 針對信箱伺服器和 Edge Transport Server 上的傳輸服務,檔案為 agents.config
。 針對用戶端存取伺服器上的前端傳輸服務,檔案為 fetagents.config
。 這兩個檔案使用的格式與 Exchange 2010 相同。 如需管理傳輸代理程式的詳細資訊,請 參閱管理傳輸代理程式。
傳輸代理程式和 SMTP 事件
傳輸代理程式會使用 SMTP 事件。 當郵件在傳輸管線中移動時,會觸發這些事件。 在 SMTP 交談期間與在組織路由傳送郵件的特定時間點上,SMTP 事件會將郵件的存取權授與傳輸代理程式。
請注意,Exchange 2013 中有新的 SMTP 接收事件。 SMTP 接收存在於用戶端存取伺服器的前端傳輸服務、信箱伺服器和 Edge Transport Server 上的傳輸服務,以及信箱伺服器上的信箱傳輸傳遞服務。 分類器只存在於信箱伺服器和 Edge Transport Server 上的傳輸服務中。 如需傳輸服務和分類器的詳細資訊,請參閱 郵件路由。
下表列出可讓您存取傳輸管線中訊息的 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 主機發出 (文字) 或 BDAT (二進位資料) 命令時 DATA ,就會觸發此事件。 |
12 | OnEndOfHeaders | 當遠端 SMTP 主機完成提交電子郵件訊息標頭時,就會觸發此事件。 這會以分隔訊息標頭和訊息 <CRLF> 本文的空白行 () 來表示。 |
13 | OnProxyInboundMessage | 當用戶端存取伺服器上的前端傳輸服務將輸入 SMTP 會話轉送或 代理 至信箱伺服器上的傳輸服務時,就會觸發此事件。 |
14 | OnEndOfData | 當遠端 SMTP 主機發出結束資料命令時,就會觸發此事件。 對於 命令啟動的 DATA 文字會話,資料指標的結尾是 <CRLF>.<CRLF> 。 針對 命令啟動的 BDAT 二進位會話,資料指標的結尾是 BDAT LAST 。 |
** | OnHelpCommand | 如果 HELP 命令是由遠端 SMTP 主機發出,就會觸發此事件。 |
** | OnNoopCommand | 如果 NOOP 命令是由遠端 SMTP 主機發出,就會觸發此事件。 |
** | OnReject | 如果接收的 SMTP 主機發出暫時或永久傳遞狀態通知, (DSN) 程式碼傳送到傳送的 SMTP 主機,就會觸發此事件。 |
** | OnRsetCommand | 如果命令是由傳送的 RSET SMTP 主機發出,就會觸發此事件。 |
15 | OnDisconnectEvent | 此事件是由接收或傳送 SMTP 主機中斷 SMTP 交談的中斷連線所觸發。 一般而言,當遠端 SMTP 主機發出命令時 QUIT ,就會發生這種情況。 |
** 這些事件可在 OnConnectEvent 之後,但在 OnDisconnectEvent之前隨時發生。
分類器事件
順序 | SMTP 事件 | 描述 |
---|---|---|
1 | OnSubmittedMessage | 當訊息抵達接收信箱伺服器或 Edge Transport Server 上傳輸服務的提交佇列時,就會觸發此事件。 |
2 | OnResolvedMessage | 在解析所有收件者之後,但在為每個收件者決定下一個躍點之前,就會觸發此事件。 OnResolvedMessage路由事件可讓後續事件使用每個收件者SetRoutingOverride方法覆寫預設路由行為。 |
3 | OnRoutedMessage | 在郵件已分類、通訊群組清單已展開,且收件者已解析之後,就會觸發此事件。 |
4 | OnCategorizedMessage | 當分類器完成處理訊息時,就會觸發此事件。 |
傳輸代理程式的優先順序
有兩個因素決定傳輸代理程式在傳輸管線中處理訊息的順序:
註冊傳輸代理程式的 SMTP 事件,以及該 SMTP 事件遇到訊息時。
如果有多個代理程式登錄到相同的 SMTP 事件,指派給傳輸代理程式的優先順序值。 最高優先順序為 1。 較高的整數值表示較低的代理程式優先順序。
例如,假設您已設定下列傳輸代理程式:
優先順序為 1 的傳輸代理程式 A 和優先順序為 2 的傳輸代理程式 C 會登錄至 OnEndOfHeaders SMTP 事件。
優先順序為 4 的傳輸代理程式 B 會登錄至 OnMailCommand SMTP 事件。
傳輸代理程式 B 會先套用至訊息,因為 OnMailCommand 事件會在 OnEndOfHeaders 事件之前遇到訊息。 當訊息到達 OnEndOfHeaders 事件時,傳輸代理程式 A 會在傳輸代理程式 C 之前套用,因為傳輸代理程式 A 的優先順序高 (整數值較低) 於傳輸代理程式 C。
內建傳輸代理程式
Exchange 2013 包含許多內建的傳輸代理程式,可提供反垃圾郵件、傳輸規則和日誌記錄等功能。 Exchange 2013 信箱伺服器和用戶端存取伺服器上大部分的內建傳輸代理程式都是隱藏的,而且傳輸代理程式管理 Cmdlet 無法管理。 幾乎所有可見且可管理的內建傳輸代理程式,都位於信箱伺服器和 Edge Transport Server 上的傳輸服務中。
下表說明信箱伺服器上更有趣的內建傳輸代理程式。 請注意,此資料表不包含許多不可見且無法管理的傳輸代理程式。
信箱伺服器上有趣的內建傳輸代理程式
代理程式名稱 | 管理? | Priority (優先順序) | SMTP 或分類器事件 |
---|---|---|---|
傳輸規則代理程式 | 是 | 1 | OnResolvedMessage |
惡意程式碼代理程式 | 是 | 2 | OnSubmittedMessage |
文字傳訊路由代理程式 | 是 | 3 | OnSubmittedMessage |
簡訊傳遞代理程式 | 是 | 4 | 不適用 |
日誌代理程式 | 否 | 無法設定 | OnRoutedMessage |
日誌報表解密代理程式 | 否 | 無法設定 | OnCategorizedMessage |
RMS 解密代理程式 | 否 | 無法設定 | OnSubmittedMessage |
RMS 加密代理程式 | 否 | 無法設定 |
OnSubmittedMessage OnRoutedMessage |
RMS 通訊協定解密代理程式 | 否 | 無法設定 | OnEndOfData |
在 Edge 傳輸服務上,大部分的內建傳輸代理程式都可由傳輸代理程式管理 Cmdlet 或其他功能特定的 Cmdlet 來顯示及管理。
下表說明 Edge Transport Server 上更有趣的內建傳輸代理程式。 請注意,此資料表不包含隱藏或無法管理的傳輸代理程式。
Edge Transport Server 上有趣的內建傳輸代理程式
代理程式名稱 | 管理? | Priority (優先順序) | SMTP 或分類器事件 |
---|---|---|---|
連線篩選代理程式 | 是 | 1 |
OnConnectEvent OnMailCommand OnRcptComand OnEndOfHeaders |
地址修正輸入代理程式 | 是 | 2 |
OnRcptComand OnEndOfHeaders |
Edge 規則代理程式 | 是 | 3 | OnEndOfData |
內容篩選代理程式* | 是 | 4 | OnEndOfData |
寄件者識別碼代理程式* | 是 | 5 | OnEndOfHeaders |
寄件者篩選代理程式* | 是 | 6 |
OnMailCommand OnEndOfHeaders |
收件者篩選代理程式 | 是 | 7 | OnRcptCommand |
通訊協定分析代理程式* | 是 | 8 |
OnConnectEvent OnEndOfHeaders OnEndOfData OnReject OnRsetCommand OnDisconnectEvent |
附件篩選代理程式 | 是 | 9 | OnEndOfData |
地址修正輸出代理程式 | 是 | 10 |
OnSubmittedMessage OnRoutedMessage |
* 您也可以在信箱伺服器上安裝和設定這些反垃圾郵件代理程式。 如需詳細資訊,請參閱啟用信箱伺服器上的反垃圾郵件功能。
針對傳輸代理程式進行疑難排解
若要協助您針對傳輸代理程式的問題進行疑難排解,您可以使用下列功能:
Get-TransportPipeline:此 Cmdlet 會顯示 SMTP 事件,以及在 Exchange 伺服器上遇到訊息的對應傳輸代理程式。 如需詳細資訊,請 參閱檢視傳輸管線中的傳輸代理程式。
管線追蹤:管線追蹤會在遇到每個傳輸代理程式之前和之後,建立訊息的確切快照集。 這可讓您尋找造成非預期結果的傳輸代理程式。 如需詳細資訊,請參閱 管線追蹤。