瞭解傳輸代理程式
適用版本: Exchange Server 2010 SP2, Exchange Server 2010 SP3
上次修改主題的時間: 2015-03-09
傳輸代理程式可讓您在執行 Microsoft Exchange Server 2010 的電腦上安裝由 Microsoft、協力供應商或您的組織所建立的自訂軟體。此軟體接著可處理在 Hub Transport Server 或 Edge Transport Server 上透過傳輸管線進行傳送的電子郵件。自訂傳輸代理程式為 Exchange 2010 提供了多項附加功能,例如反垃圾郵件程式或防毒程式、或是您的組織可能需要的任何傳輸功能。
傳輸代理程式通常會自動安裝成為設計來與 Exchange 2010 一起運作之應用程式的一部分。但可能會有一些組織希望開發自己的傳輸代理程式,以管理其 Exchange 2010 組織內部的郵件。
注意: |
---|
傳輸代理程式對於接觸的所有電子郵件都有完整的存取權。Exchange 對傳輸代理程式的行為沒有任何限制。不穩定或含有安全性漏洞的傳輸代理程式,可能會影響到 Exchange 的穩定性與安全性。因此,請務必只安裝您完全信任、並在測試環境中經過完整測試的傳輸代理程式。 |
要尋找與管理傳輸代理程式相關的管理工作嗎?請參閱 管理傳輸代理程式。
目錄
傳輸代理程式與 SMTP 事件
傳輸代理程式的優先順序
內建傳輸代理程式
傳輸代理程式的疑難排解
傳輸代理程式與 SMTP 事件
為 Exchange 2010 撰寫的傳輸代理程式,會使用 SMTP 事件。這些事件會在郵件於傳輸管線之間移動時觸發。在 SMTP 交談期間與在組織之間路由傳送郵件的特定時間點上,SMTP 事件會將郵件的存取權授與傳輸代理程式。下表列出針對傳輸管線中的郵件提供存取權的 SMTP 事件:
SMTP 接收事件
順序 | SMTP 事件 | 描述 |
---|---|---|
1 |
OnConnect |
此事件會在遠端 SMTP 主機建立初始連線時觸發。 |
2 |
OnEhloCommand |
此事件會在遠端 SMTP 主機發出 |
3 |
OnHeloCommand |
此事件會在遠端 SMTP 主機發出 |
4 |
OnAuthCommand |
此事件會在遠端 SMTP 主機發出 |
5 |
OnEndOfAuthentication |
此事件會在遠端 SMTP 主機完成驗證時觸發。 |
6 |
OnMailCommand |
此事件會在遠端 SMTP 主機發出 |
7 |
OnRcptToCommand |
此事件會在遠端 SMTP 主機發出 |
8 |
OnDataCommand |
此事件會在遠端 SMTP 主機發出 |
9 |
OnEndOfHeaders |
此事件會在遠端 SMTP 主機完成提交電子郵件標頭時觸發。 |
10 |
OnEndOfData |
此事件會在遠端 SMTP 主機發出 |
** |
OnHelpCommand |
此事件會在遠端 SMTP 主機發出 |
** |
OnNoopCommand |
此事件會在遠端 SMTP 主機發出 |
** |
OnReject |
此事件會在接收 SMTP 主機對傳送 SMTP 主機發出暫時或永久傳遞狀態通知 (DSN) 代碼時觸發。此事件可能在 OnConnect SMTP 事件之後及 OnDisconnect SMTP 事件之前的任一時間點上觸發。 |
** |
OnRsetCommand |
此事件會在傳送 SMTP 主機發出 |
11 |
OnDisconnect |
此事件會在接收或傳送 SMTP 主機中斷 SMTP 交談時觸發。 |
分類程式事件
順序 | 分類程式事件 | 描述 |
---|---|---|
1 |
OnSubmittedMessage |
此事件會在郵件提交至接收 SMTP 主機上的提交佇列時觸發。無論是透過 SMTP 提交、MAPI 提交、收取目錄或重新顯示目錄所寄達的郵件,都會遇到此事件。 |
2 |
OnResolvedMessage |
此事件的觸發時機是在所有收件者都已解析之後,但決定每個收件者的下一個躍點之前。OnResolvedMessage 路由事件讓後續的事件能使用每個收件者的 SetRoutingOverride 方法來覆寫預設路由行為。 |
3 |
OnRoutedMessage |
此事件會在郵件分類後、通訊群組清單展開後以及完成收件者解析後觸發。 |
4 |
OnCategorizedMessage |
這個事件會在分類程式完成處理訊息時觸發。 |
傳輸代理程式可對前述表格中所列出的任何 SMTP 事件進行登錄。但傳輸代理程式的預定動作,通常會指定它將執行的 SMTP 事件。
請考量反垃圾郵件代理程式作為範例。就這些代理程式而言,其首要考量並非郵件內容的有效性,而是據以識別及拒絕有效垃圾郵件的標準。越快拒絕已確認為垃圾郵件的郵件,組織所付出的成本就越低。所有在 OnEndOfData SMTP 事件之前觸發的 SMTP 事件,都不需要接收 SMTP 主機產生未傳遞回條 (NDR)。不會產生 NDR 的原因是,在 OnEndOfData SMTP 事件觸發之前,並不會傳遞完整的郵件內容。因此,郵件的最終傳遞仍由傳送 SMTP 主機負責。若傳遞至接收 SMTP 主機的郵件在 OnEndOfData SMTP 事件之前即已失敗,傳送 SMTP 主機即必須產生 NDR 給郵件的寄件者。在 OnEndOfData SMTP 事件觸發後,接收 SMTP 主機即已接受完整的郵件內容。也就是說,SMTP 主機此時必須負責順利傳遞郵件,以及產生並傳送 NDR 給郵件的寄件者。因此,反垃圾郵件代理程式務必在 OnEndOfData SMTP 事件觸發前對 SMTP 事件進行登錄,以降低接收 SMTP 主機儲存郵件內容並對郵件寄件者產生 NDR 的可能性。
但對防毒代理程式而言,首要考量則是確實掃描每則郵件。必須檢視每則郵件的代理程式,必須針對 OnSubmittedMessage SMTP 事件進行設定。每則透過傳輸管線進行傳送的郵件,都會遇到 OnSubmittedMessage SMTP 事件,因為此事件會在所有可能的提交進入點後發生,例如來自遠端主機的 SMTP 提交、執行 Mailbox server role 之電腦所進行的 MAPI 提交、自訂應用程式所使用的收取目錄或協力廠商電子郵件應用程式所使用的重新顯示目錄等。
回到頁首
傳輸代理程式的優先順序
Exchange 2010 可讓您為 Exchange 所包含以及自訂應用程式所新增的傳輸代理程式指定優先順序。指定傳輸代理程式的優先順序後,您即可控制最先對郵件套用的代理程式。您可以為傳輸代理程式指派 1 或更高的優先順序。優先順序接近 1 的傳輸代理程式,將優先套用於郵件。然而,您為傳輸代理程式所指派的優先順序,只是用以決定對郵件套用傳輸代理程式之順序的其中一項因素。用以決定傳輸代理程式優先順序的第二項因素,是含有已登錄之傳輸代理程式的 SMTP 事件,在各項 SMTP 事件中所處的順序。
如本主題前述之表所示,SMTP 事件會依循其特定的順序,套用至透過傳輸管線進行傳送的郵件上。由於傳輸代理程式會登錄到特定的 SMTP 事件中,只有已經登錄到相同 SMTP 事件的代理程式,才會套用優先順序。
例如,您設定了如下的傳輸代理程式:
優先順序為
1
,並對 OnEndofHeaders SMTP 事件進行登錄的傳輸代理程式 AgentA優先順序為
4
,並對 OnMailCommand SMTP 事件進行登錄的傳輸代理程式 AgentB
當您使用 Get-TransportAgent 指令程式檢視已登錄的代理程式清單時,傳輸代理程式 AgentA 在清單中的優先順序將高於傳輸代理程式 AgentB。但在透過傳輸管線傳送郵件時,將會先對郵件套用傳輸代理程式 AgentB,再套用傳輸代理程式 AgentA,因為對郵件而言,OnMailCommand SMTP 事件會在 OnEndOfHeaders SMTP 事件之前產生。
回到頁首
內建傳輸代理程式
Exchange 2010 中含有數種可提供傳輸規則與日誌記錄等功能的預設傳輸代理程式。下表所列的傳輸代理程式預設會安裝在 Hub Transport Server 與 Edge Transport Server 上。下表也提供將說明各代理程式的詳細資訊的主題連結。
Hub Transport Server 傳輸代理程式
代理程式名稱 | 優先順序 | SMTP 事件 | 相關主題 |
---|---|---|---|
傳輸規則代理程式 |
1 |
OnRoutedMessage |
|
RMS 解密代理程式 |
此代理程式的優先順序不是使用者可設定的。 |
OnSubmittedMessage |
|
日誌報告解密代理程式 |
此代理程式的優先順序不是使用者可設定的。 |
OncCategorizedMessage |
|
RMS 加密代理程式 |
此代理程式的優先順序不是使用者可設定的。 |
OnRoutedMessage |
|
Prelicensing 代理程式 |
此代理程式的優先順序不是使用者可設定的。 |
OnRoutedMessage |
|
日誌代理程式 |
此代理程式的優先順序不是使用者可設定的。 |
OnSubmittedMessage, OnRoutedMessage |
Edge Transport Server 傳輸代理程式
代理程式名稱 | 優先順序 | SMTP 事件 | 相關主題 |
---|---|---|---|
連線篩選代理程式 |
1 |
OnConnectEvent, OnMailCommand, OnRcptComand, OnEndOfHeaders |
|
輸入地址修正代理程式 |
2 |
OnRcptCommand, OnEndOfHeaders |
|
Edge 規則代理程式 |
3 |
OnEndOfData |
|
內容篩選器代理程式 |
4 |
OnEndOfData |
|
寄件者識別碼代理程式 |
5 |
OnEndOfHeaders |
|
寄件者篩選器代理程式 |
6 |
OnMailCommand, OnEndOfHeaders |
|
收件者篩選器代理程式 |
7 |
OnRcptCommand |
|
通訊協定分析代理程式 |
8 |
OnEndOfHeaders, OnEndOfData, OnReject, OnRsetCommand, OnDisconnectEvent |
|
附件篩選代理程式 |
9 |
OnEndOfData |
|
輸出地址修正代理程式 |
10 |
OnRcptCommand, OnEndOfHeaders |
回到頁首
傳輸代理程式的疑難排解
透過傳輸代理程式,Exchange 將可協助您控制組織內的電子郵件流程。如此將可讓您的 Exchange 基礎結構符合組織的需求,而不是強迫組織配合您的電子郵件基礎結構。當您自訂環境時,環境的複雜性將隨之提高。為協助您排解可能發生的問題,以及確保您所做的變更能如預期套用於郵件,Exchange 提供了下列功能:
Get-TransportPipeline 指令程式 Get-TransportPipeline 指令程式可顯示所有於 Microsoft 傳輸服務啟動時與指令程式執行時之間、在傳輸管線中遇到郵件的已啟用傳輸代理程式,以及這些代理程式登錄所在的 SMTP 事件。如需相關資訊,請參閱檢視傳輸管線中的傳輸代理程式。
附註: 只有在透過傳輸管線傳送郵件後,才會產生由 Get-TransportPipeline 指令程式所顯示的資訊。此外,只有遇到郵件的傳輸代理程式才會顯示出來。 **管線追蹤 ** 管線追蹤可讓您建立整則郵件在遇到每個傳輸代理程式之前與之後的精準快照。管線追蹤可讓您判斷哪個傳輸代理程式可能產生了意外的結果,或確認傳輸代理程式的行為是否符合預期。
© 2010 Microsoft Corporation. 著作權所有,並保留一切權利。