Exchange Server 2013/2016 メッセージ フローの概要

皆さん、こんにちはMiyaです。

最近はExchange Serverを触る機会が増えてきましたので、今後はExchange関連の記事も増やしていこうと思っています。

メールの遅延や配信エラーが発生した際に、どこでどう止まっているのかを判断するためにも、しっかり理解する必要があります。
Exchange Onlineでは特に意識する箇所ではありませんが、オンプレExchange Serverとなれば、Exchange Serverのアーキテクチャーをよく理解しておかなければ、トラブルシューティング時なんかでつまづきます。
本記事では、Exchange Serverの各SMTPコンポーネント間のメールフローについてのメモ記事になりますので、電子メールの一般的な知識をお持ちの方対象です。

スポンサーリンク:

メッセージトランスポートサービス

Exchange Serverは3つのトランポートサービスから構成されています。そもそもトランスポートサービスとは、Exchange組織内外でメッセージを送受信するためのコンポーネントであり、抽象的に説明するとSMTPサービスに該当します。

Exchange Serverのアーキテクチャーは、バージョン毎に変更されていますが、役割毎に各トランポートサービスが存在します。
ここでの詳細な説明は割愛しますが、Exchange Server 2013ではクライアントアクセスサーバーメールボックスサーバーの役割がトラスポートサービスをホストしており、Exchange Server 2016では、メールボックスサーバーの役割に集約されています。

メッセージトランスポートサービスには次の3つになります。

  • フロントエンド トランスポート サービス
  • ハブ トランスポート サービス
  • メールボックス トランスポート サービス

これらの3つのトランポートサービスによってExchange Serverはメールの送受信を実現しています。
以下にExchange Serverのメールフローの全体像を載せておきます。
Exchange

フロントエンド トランスポート サービス

フロントエンドトランスポートサービスは、クライアントアクセスサーバー(以下CAS)上で動作し、Exchange組織の外部SMTPサーバーとの間のメール送受信を担当します。

先ほどのメールフロー全体像を見ていただくと、フロントエンドトランポートサービスは、外部から受信したメッセージを、ハブトランスポートサービスとのみ通信していることが分かります。

しかも、その間にメッセージのフィルター処理や、キューを実行しないステートレスコンポーネントのため、外部から受信したメッセージをハブトランスポートサービスに中継だけの受付窓口と捉えてください。

また、ステートレスな事から、メッセージに関連するデータは保持しないのが特徴的です。

ハブ トランスポート サービス

ハブトランスポートサービスはメールボックスサーバー(以下MBX)で動作し、Exchange組織内のメールフローの処理や、メッセージの分類と呼ばれるカテゴライザーを行います。

ハブトランスポートサービスは、フロントエンドトランポートサービスとメールボックストランスポートサービスの間でメッセージの送受信を行うコンポーネントになります。
ユーザーのメールボックス(DB内のメールボックスデータ)には対して直接的なメール処理は行わず、メールボックストランスポートサービスがデーターベースと通信を行います。

SMTP受信

SMTP受信は、各トランスポートサービスで動作しており、さまざまなソースからのSMTPトラフィックを受け付けるコンポーネントとなります。
その中でもハブトランスポートサービスのSMTP受信では、メッセージが受け付けた直後に内容を検査し、トランスポートルールに設定されているスパムやマルウェア対策を行います。

メッセージの検証が済み、各エージェントから拒否されなかった場合に、そのメッセージは発信キューに格納され、メッセージの送信処理が始まります。

SMTP送信

SMTP送信も、各トランスポートサービスで動作しており、メッセージのルーティング先に送信する役割を持ちます。

トランスポートサービスでのSMTP送信では、前段にあるカテゴライザーによってメッセージが分類され、配信キューに格納されます。

カテゴライザーは、ハブトランスポートサービスのコンポーネントであり、メッセージのルーティング先を分類する役割を持ちます。
メッセージのルーティング先は、カテゴライザーによって判断された受信者の場所によって異なります。

  • 同一のメールボックスサーバー上のメールボックストランスポートサービス
  • 同一のDAGに属する、異なるメールボックストランポートサービス
  • 異なるDAGに属する、ハブトランスポートサービス
  • Exchange外部への配信の場合、フロントエンドトランスポートサービス

メールボックス トランスポート サービス

メールボックストランスポートサービスもハブトランスポートサービスと同様にMBX上で動作し、ユーザーのメールボックスをホストするデーターベースに接続し、メールの取得・配信を行います。

メールボックストランポートサービスには、配信サービス発信サービスと呼ばれる2つのコンポーネントから構成されています。

配信サービス

配信サービスは、ハブトランスポートサービスからSMTPメッセージを受信した時に、RPC(リモートプロシージャーコール)を利用して、メールボックスデータベースへ接続し、目的のメールボックスにメッセージを届ける役割を持ちます。

RPCとは、ちょっと前まで使われていたOutlook⇔Exchange Server間の接続プロトコルです。MS独自のプロトコルであるため、あまり聞きなれないかと思います。
現在では、Outlookとサーバー間ではMAPIoverHTTPが主流であり、Exchange OnlineでもRPCoverHTTP接続を2017年10月31日に廃止すると発表しております。
2017/10/31 の Office365 における RPC over HTTP の廃止に伴う MAPI over HTTP 移行の注意点
MAPI/HTTP の紹介 (特徴/対応する Exchange Server と Outlook/無効にする方法)
MAPI over HTTP による Outlook の接続

発信サービス

発信サービスは、配信サービスとは反対に、メッセージの送信するための役割になります。発信サービスもデータベース接続にRPCを利用し、送信するメッセージを取得し、ハブトランスポートサービスへ発信します。

尚、ハブトランスポートサービスとは異なり、メッセージに対して、フィルタをかけたり、キューしたりといった動作は行いません。

まとめますと、外部から送信されたメッセージは、フロントエンドトランスポートサービスの受信コネクタを経由して、次にハブトランスポートサービスへパイプされ、フィルタ処理、キュー処理が行われます。その後、目的のデータベースと接続しているメールボックストランスポートサービスへ送信し、ユーザーのメールボックスデーターベースにメッセージを配信します。
トランスポートサービス

ストア ドライバー

ストアドライバーとは、メールボックストランポートサービスのコンポーネントであり、送信者の送信トレイからメッセージを取得し、ハブトランスポートサービスに配信する役割を持ちます。

Outlookからメッセージを送信する際に、送信トレイフォルダに格納されますが、そのバックエンドに該当するのがストアドライバーになります。

ストアドライバーは主に、メッセージ形式(SNEF、TNEF)の変換作業を行います。ストアドライバーがメッセージを変換できない場合は、エンベロープFromのアドレスに対してNDRを生成するみたいです。

おわりに

Exchangeの中のメール配送は実にややこしい仕組みになっており、いくつものコンポーネントが存在しています。
Exchange管理者にはよくある話ですが、「メールが遅延してる」だとか「メールが届いていない」といった問い合わせに対して、これらの中の仕組みを理解しておけば迅速な対応が出来るはずw

今後はExchange Serverの構築などの記事も増やしていければなと思います(時間がなくてあまり取り掛かれない…w)

スポンサーリンク