Exchange 2013 におけるトランスポート エージェントの概念

Exchange 2013 のトランスポート エージェント パイプラインとサーバー ロール アーキテクチャがトランスポート エージェントの開発にどのように影響するか、およびトランスポート エージェントの開発に使用できるクラスについて説明します。

製品: Exchange Server 2013

Exchange Server 2013 で提供されているクラス ライブラリを使用して、イベントを登録し、トランスポート パイプラインを通過するときにメッセージに対してアクションを実行するトランスポート エージェントを実装できます。 また、メッセージの変更とコンテンツの変換にも、トランスポート エージェントを使用できます。

この記事では、トランスポート エージェントとトランスポート パイプライン アーキテクチャに関する情報を提供します。 組織のニーズに合わせてトランスポート動作を変更できるように、トランスポート パイプラインのアーキテクチャを理解することが重要です。 この記事では、トランスポート エージェントに影響を与える Exchange 2013 アーキテクチャの変更と、トランスポート エージェントの開発に使用できるクラスについても説明します。

トランスポート パイプライン内のトランスポート エージェント

トランスポート エージェントは、次に示す 3 つのクラスのいずれかから派生します。

トランスポート パイプラインとは、Exchange 2013 組織の境界内でのメッセージ データの流れのことを意味します。 パイプラインは、次の表に示したサービスによって成立します。

表 1. トランスポート パイプラインのサービス

サービス 説明 サポートされるクラス
フロント エンド トランスポート
すべての クライアント アクセス サーバー で実行され、Exchange 2013 組織のすべての受信および送信外部 SMTP トラフィックのステートレス プロキシとして機能します。 フロント エンド トランスポート サービスは、メッセージ コンテンツを検査することも、メッセージをローカルにキューに格納することもありません。 メールボックス サーバー上のトランスポート サービスと通信します。
SmtpReceiveAgent
Transport
すべてのメールボックス サーバーで実行され、Exchange Server 2010 のハブ トランスポート サーバーの役割に似ています。 トランスポート サービスは、それ自体とメールボックス トランスポート サービスとフロント エンド トランスポート サービスの間でメッセージをルーティングします。 このサービスは、メールボックス データベースと直接通信しません。
SmtpReceiveAgent
RoutingAgent
DeliveryAgent
メールボックス トランスポート
すべてのメールボックス サーバーで実行され、メールボックス トランスポート送信とメールボックス トランスポート配信という 2 つのサービスで構成されます。 メールボックス トランスポート配信は、トランスポート サービスから SMTP メッセージを受信し、Exchange リモート プロシージャ コール (RPC) を使用してメールボックス データベースに接続してメッセージを配信します。 メールボックス トランスポート送信は、RPC を使用してメールボックス データベースに接続してメッセージを取得し、SMTP 経由でトランスポート サービスにメッセージを送信します。
なし。

トランスポート イベント

トランスポート エージェントは、まずイベントを登録して、そのイベントが発生したときにアクションを起こすことで実装します。 3 種類のそれぞれのエージェントで、異なるイベントのセットを登録できます。

次の図は、トランスポート エージェントがトランスポート パイプラインのどの部分でイベントを登録できるかを示しています。

図 1. トランスポート イベント

トランスポート パイプラインを介したメッセージ フロー、および各エージェントが登録できるイベントを示すイメージ。SmtpReceivedAgent の SMTP イベントから始まり、RoutingAgent の Categorizor イベント、そして最後に DeliveryAgent の配信イベントが続きます。

メッセージがトランスポート パイプラインに入ると、 SmtpReceiveAgent クラスから派生したトランスポート エージェントは、エージェントが登録した SMTP イベント中にメッセージに対して動作できます。 RoutingAgent クラスから派生したエージェントは、登録されている 4 つのカテゴライザー イベントのいずれかに対して動作できます。 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 サーバーロールアーキテクチャ

外部のファイアウォールを通過するクライアント トラフィックを示すイメージ。左側にはレイヤー 4 の負荷分散から統合 CAS 配列にトラフィックを渡すエッジ トランスポートがあり、右側にはデータベース アクセシビリティ グループの一連のメールボックス サーバーがあります。

次の図は、Exchange 2013 のサーバーの役割間での相互作用を示しています。

図 3. メールボックスとクライアント アクセス サーバーの相互作用

CAS に 4 つのターゲット (IIS/HTTP Proxy、POP/IMAP、SMTP、および UM) が存在するレイヤー 4 の負荷分散を通過するクライアント トラフィックから矢印が始まるやり取りを示すイメージ。矢印は、メールボックス ストアのコンプリメンタリ ターゲットを通過します。

Exchange 2013 サーバーの役割アーキテクチャの変更の詳細については、「 Exchange 2013 の新機能」の「Exchange 2013 アーキテクチャ 」を 参照してください。

トランスポート エージェントのクラス

カスタムのトランスポート エージェントの派生元クラスにより、そのエージェントで登録できるイベントが決まります。 通常、カスタムのエージェントには、1 つのエージェント クラス、1 つのエージェント ファクトリ、1 つ以上のイベント ハンドラー、およびエージェントで処理するアクションを実行するコードが含まれています。

次の表は、それぞれのエージェントの種類の派生元になるクラスを示しています。

表 2. エージェントのクラス

エージェントの種類 ファクトリの基底クラス エージェントの基底クラス
SMTP の受信
SmtpReceiveAgentFactory
SmtpReceiveAgent
ルーティング
RoutingAgentFactory
RoutingAgent
配信
DeliveryAgentFactory<Manager>
DeliveryAgent

これらのファクトリとエージェントの基底クラスには、トランスポート イベントとメッセージへのアクセスに使用できるプロパティとメソッドが用意されています。 カスタムのエージェントには、これらのクラスから継承するクラスを実装します。 エージェント ファクトリ派生クラスでは、CreateAgent メソッドをオーバーライドして、カスタムのエージェント クラスの新しいインスタンスを返すようにします。

イベントに渡される引数には 、EmailMessage クラスのインスタンスを含めることができます。これを使用して、基になるメッセージのプロパティと内容を変更できます。 すべてのメッセージ情報が、各イベントで使用できるわけではありません。 実行するタスクにとって最適なエージェントとイベントを判断する必要があります。

次に示す名前空間には、トランスポート パイプライン内のメッセージを読み取り、書き込み、および変更するために使用できる型が含まれています。

トランスポート エージェントを作成した後、Exchange Management Shell を使用して エージェントをインストールして管理します 。 詳細については、「Exchange 2013 のトランスポート エージェントの作成」を参照してください。

関連項目