トランスポート エージェント
製品: Exchange Server 2013
トランスポート エージェントを使用すると、Exchange サーバーに、Microsoft、サード パーティ ベンダー、または組織によって作成されたカスタム ソフトウェアをインストールできます。 このソフトウェアは、トランスポート パイプラインを経由する電子メール メッセージを処理できます。 Microsoft Exchange Server 2013 では、トランスポート パイプラインは以下のプロセスから構成されています。
クライアント アクセス サーバー上のフロント エンド トランスポート サービス
メールボックス サーバー上のトランスポート サービス
メールボックス サーバー上のメールボックス トランスポート サービス
エッジ トランスポート サーバー上のトランスポート サービス
トランスポート パイプラインの詳細については、「メール フロー」を参照してください。
前バージョンの Exchange と同様に、Exchange 2013 トランスポートは、Microsoft Exchange Server 2013 トランスポート エージェント SDK を通じて機能拡張を提供します。 Exchange 2013 バージョンの SDK は 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 をまったくサポートしていないため、メールボックス トランスポート サービスでサード パーティのエージェントを使用することはできません。
バージョン 4.0 より前の .NET Framework のバージョンに基づくレガシー トランスポート エージェントのサポートは、既定では有効ではありませんが、有効にすることができます。 手順については、「従来のトランスポート エージェントのサポートを有効にする」を参照してください。
トランスポート エージェント管理への更新
Exchange 2013 トランスポート パイプラインへの更新のために、特にクライアント アクセス サーバーとメールボックス サーバーが同一のコンピューターにインストールされている場合、トランスポート エージェント コマンドレットでは、トランスポート サービスとフロント エンド トランスポート サービスを区別する必要があります。 詳細については、「トランスポート エージェントの管理」を参照してください。
トランスポート エージェント管理コマンドレットは、 にある %ExchangeInstallPath%TransportRoles\Shared
構成ファイルを操作します。 メールボックス サーバーとエッジ トランスポート サーバー上のトランスポート サービスの場合、ファイルは です agents.config
。 クライアント アクセス サーバー上のフロントエンド トランスポート サービスの場合、ファイルは です fetagents.config
。 どちらのファイルも、Exchange 2010 と同じ形式を使用しています。 トランスポート エージェントの管理の詳細については、「 トランスポート エージェントの管理」を参照してください。
トランスポート エージェントと SMTP イベント
トランスポート エージェントは、SMTP イベントを使用します。 これらのイベントは、トランスポート パイプラインをメッセージが通過すると発生します。 SMTP イベントによって、トランスポート エージェントは、SMTP の対話中および組織内でのメッセージ ルーティング中の特定の時点でのメッセージに対するアクセス権を与えられます。
Exchange 2013 には、新しい SMTP 受信イベントが存在します。 SMTP 受信は、クライアント アクセス サーバーのフロント エンド トランスポート サービス、メールボックス サーバーとエッジ トランスポート サーバーのトランスポート サービス、およびメールボックス サーバーのメールボックス トランスポート配信サービスに存在します。 カテゴライザーは、メールボックス サーバーとエッジ トランスポート サーバーのトランスポート サービスにのみ存在します。 トランスポート サービスおよびカテゴライザーの詳細については、「メール ルーティング」を参照してください。
次の表は、トランスポート パイプラインでメッセージに対するアクセス権を付与する SMTP イベントの一覧です。
SMTP 受信イベント
Sequence | SMTP イベント | 説明 |
---|---|---|
1 | OnConnectEvent | このイベントは、リモート SMTP ホストからの最初の接続によって発生します。 |
2 | OnHeloCommand | このイベントは、コマンドが HELO リモート SMTP ホストによって発行されたときにトリガーされます。 |
3 | OnEhloCommand | このイベントは、コマンドが EHLO リモート SMTP ホストによって発行されたときにトリガーされます。 |
4 | OnStartTlsCommand | このイベントは、コマンドが STARTTLS リモート SMTP ホストによって発行されたときにトリガーされます。 |
5 | OnAuthCommand | このイベントは、コマンドが AUTH リモート SMTP ホストによって発行されたときにトリガーされます。 |
6 | OnProcessAuthentication | このイベントは、リモート SMTP ホストでの認証が処理されるときに発生します。 |
7 | OnEndOfAuthentication | このイベントは、リモート SMTP ホストが認証を完了すると発生します。 |
8 | OnXSessionParamsCommand | このイベントは、コマンドが XSESSIONPARAMS リモート SMTP ホストによって発行されたときにトリガーされます。 |
9 | OnMailCommand | このイベントは、コマンドが MAIL FROM リモート SMTP ホストによって発行されたときにトリガーされます。 |
10 | OnRcptToCommand | このイベントは、コマンドが RCPT TO リモート SMTP ホストによって発行されたときにトリガーされます。 |
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 ホストが送信側の SMTP ホストに対して、一時的または永続的な配信状態通知 (DSN) コードを発行すると発生します。 |
** | OnRsetCommand | このイベントは、送信 SMTP ホストによってコマンドが発行された場合 RSET にトリガーされます。 |
15 | OnDisconnectEvent | このイベントは、受信側または送信側のいずれかの SMTP ホストによって、SMTP 対話の接続が切断されると発生します。 通常、これはコマンドが QUIT リモート SMTP ホストによって発行されるときに発生します。 |
** これらのイベントは、OnConnectEvent の後、かつ OnDisconnectEvent の前の時点で発生します。
カテゴライザー イベント
Sequence | SMTP イベント | 説明 |
---|---|---|
1 | OnSubmittedMessage | このイベントは、受信側のメール ボックス サーバーまたはエッジ トランスポート サーバーのトランスポート サービスにある送信キューにメッセージが到着すると発生します。 |
2 | OnResolvedMessage | このイベントは、すべての受信者が解決された後で、各受信者の次ホップが決定される前に発生します。 OnResolvedMessage ルーティング イベントでは、受信者ごとの SetRoutingOverride メソッドを使用して、後続のイベントで既定のルーティング動作を変更することができます。 |
3 | OnRoutedMessage | このイベントは、メッセージが分類され、配布リストが展開され、受信者が解決された後で発生します。 |
4 | OnCategorizedMessage | このイベントは、カテゴライザーがメッセージの処理を完了すると発生します。 |
トランスポート エージェントの優先度
トランスポート パイプラインのメッセージをトランスポート エージェントが処理する順位を決定する次の 2 つの要因があります。
トランスポート エージェントが登録された SMTP イベントと、その SMTP イベントでメッセージが発生するタイミング。
同一の SMTP イベントに登録された複数のエージェントが存在する場合、トランスポート エージェントに割り当てられた優先度の値。 最も高い優先度は 1 です。 整数値が大きくなると、エージェントの優先度は低くなります。
たとえば、次のようなトランスポート エージェントを構成したとします。
優先度 1 のトランスポート エージェント A と優先度 2 のトランスポート エージェント C が OnEndOfHeaders SMTP イベントに登録されています。
優先度 4 のトランスポート エージェント B が OnMailCommand SMTP イベントに登録されています。
OnMailCommand イベントは OnEndOfHeaders イベントよりも前にメッセージに遭遇するため、トランスポート エージェント B が最初にメッセージに適用されます。 メッセージが OnEndOfHeaders イベントに到達すると、トランスポート エージェント A はトランスポート エージェント C よりも優先度が高い (整数値が小さい) ため、トランスポート エージェント A はトランスポート エージェント C よりも前に適用されます。
組み込みのトランスポート エージェント
Exchange 2013 には、スパム対策、トランスポート ルール、ジャーナリングなどの機能を提供する多くの組み込みトランスポート エージェントがあります。 Exchange 2013 メールボックス サーバーおよびクライアント アクセス サーバーの組み込みトランスポート エージェントのほとんどは、トランスポート エージェントの管理コマンドレットによって表示されず、管理することもできません。 表示と管理が可能な組み込みトランスポート エージェントは事実上すべて、メールボックス サーバーおよびエッジ トランスポート サーバー上のトランスポート サービスのものです。
メールボックス サーバーの組み込みトランスポート エージェントのうち、特に興味深いものを以下の表に示します。 この表には、表示されない管理不能なトランスポート エージェントの多くは含まれていないことに注意してください。
メールボックス サーバー上の興味深い組み込みトランスポート エージェント
エージェント名 | 管理可能 | 優先度 | SMTP またはカテゴライザー イベント |
---|---|---|---|
トランスポート ルール エージェント | はい | 1 | OnResolvedMessage |
マルウェア エージェント | はい | 2 | OnSubmittedMessage |
テキスト メッセージング ルーティング エージェント | はい | 3 | OnSubmittedMessage |
テキスト メッセージング配信エージェント | はい | 4 | 該当なし |
ジャーナル エージェント | いいえ | 構成不可 | OnRoutedMessage |
ジャーナル レポート復号化エージェント | いいえ | 構成不可 | OnCategorizedMessage |
RMS 復号化エージェント | いいえ | 構成不可 | OnSubmittedMessage |
RMS 暗号化エージェント | いいえ | 構成不可 |
OnSubmittedMessage OnRoutedMessage |
RMS プロトコル復号化エージェント | いいえ | 構成不可 | OnEndOfData |
エッジ トランスポート サーバーでは、ほとんどの組み込みトランスポート エージェントは、トランスポート エージェント管理コマンドレットまたはその他の機能固有のコマンドレットによって表示および管理することができます。
エッジ トランスポート サーバーの組み込みトランスポート エージェントのうち、特に興味深いものを以下の表に示します。 この表には、表示されない管理不能なトランスポート エージェントが含まれていないことに注意してください。
エッジ トランスポート サーバー上の興味深い組み込みトランスポート エージェント
エージェント名 | 管理可能 | 優先度 | SMTP またはカテゴライザー イベント |
---|---|---|---|
接続フィルター エージェント | はい | 1 |
OnConnectEvent OnMailCommand OnRcptComand OnEndOfHeaders |
アドレス書き換え受信エージェント | はい | 2 |
OnRcptComand OnEndOfHeaders |
エッジ ルール エージェント | はい | 3 | OnEndOfData |
コンテンツ フィルター エージェント* | はい | 4 | OnEndOfData |
送信者 ID エージェント* | はい | 5 | OnEndOfHeaders |
送信者フィルター エージェント* | はい | 6 |
OnMailCommand OnEndOfHeaders |
受信者フィルター エージェント | はい | 7 | OnRcptCommand |
プロトコル分析エージェント* | はい | 8 |
OnConnectEvent OnEndOfHeaders OnEndOfData OnReject OnRsetCommand OnDisconnectEvent |
添付ファイル フィルター エージェント | はい | 9 | OnEndOfData |
アドレス書き換え送信エージェント | はい | 10 |
OnSubmittedMessage OnRoutedMessage |
* これらのスパム対策エージェントをメールボックス サーバーにインストールして構成することもできます。 詳細については、「メールボックス サーバーのスパム対策機能を有効にする」を参照してください。
トランスポート エージェントのトラブルシューティング
トランスポート エージェントに関する問題をトラブルシューティングするために、以下の機能を使用することができます。
Get-TransportPipeline: このコマンドレットは、SMTP イベントと、Exchange サーバー上でメッセージを検出する対応するトランスポート エージェントを示します。 詳細については、「 トランスポート パイプライン内のトランスポート エージェントを表示する」を参照してください。
パイプライン トレース: パイプライン トレースでは、各トランスポート エージェントが検出される前後に、メッセージの正確なスナップショットが作成されます。 この機能により、予期しない結果の原因となるトランスポート エージェントを見つけることができます。 詳細については、「 パイプライン トレース」を参照してください。