Exchange 2013 でメッセージを追跡する


こんにちは、Exchange サポートの竹本です。

先月、Exchange 2010 が延長サポート フェーズへ突入し、お客様からのお問い合わせも Exchange 2013 と Exchange Online が中心となってまいりました。
そんな中、今回は Exchange 2013 のメッセージ追跡の基礎についてです。

まず前提として、Exchange 2013 ではこれまでのバージョンで存在していたハブ トランスポートの役割は存在しません。その分、トランスポートの機能はメールボックス サーバーの役割に集約されています。
Exchange 2013 における基本的なメール フロー/ルーティングについては、以下の TechNet に詳細がまとめられていますので、是非ご参照ください。

 Title : メール フロー
 URL : https://technet.microsoft.com/ja-jp/library/aa996349(v=exchg.150).aspx

では、実際にメッセージの流れを追ってみたいと思います。


- ベースは追跡ログ
========================================================================
メッセージの流れを追う時にまず確認するのは、メッセージ追跡ログです。この考え方はこれまでと全く変わりありませんが、Exchange 2013 では、メールボックス サーバーに以下 3 種類の追跡ログが存在します。

 ・ トランスポート サービスの追跡ログ (MSGTRK から始まるもの)
 ・ メールボックス トランスポート発信サービスの追跡ログ (MSGTRKMS から始まるもの)
 ・ メールボックス トランスポート配信サービスの追跡ログ (MSGTRKMD から始まるもの)

下にもある通り、本当はもう一つ (MSGTRKMA から始まるもの) 記録されますが、ここでは省略します。

 Title : メッセージ追跡
 URL : https://technet.microsoft.com/ja-jp/library/bb124375(v=exchg.150).aspx

まずは例として、組織内のユーザー同士でメッセージを送受信した場合のログを追ってみましょう。
以下は "E15002" というユーザーが、"Test001" という件名のメッセージを "E15009" というユーザーに送信したメッセージについて、Get-MessageTrackingLog で検索した結果です。

"Deliver" というイベントが最後に記録されているので、メールボックスには配信されたのだろう、ということはわかりますが、何がどういう順番で処理されたのか、いまいちわかりづらいですね。
それぞれの Source と EventId の意味を機能別、処理順に整理してみます。
* 各コンポーネントが独立して処理やログ書き込みを行っていることもあり、実際の TimeStamp はこの通りにはならないことがあります。そのため、あくまでも処理のイメージとしてとらえていただければと思います。


- まずはメールボックス トランスポート発信サービスで
========================================================================
Outlook でメッセージを送信した時、そのメッセージはまずメールボックス (データベース) から "発信" される必要がありますが、これを担っているのがメールボックス トランスポート発信サービスです。そのため、始まりはここにあるログです。
具体的には、以下のエントリが該当します。

1. STOREDRIVER / NOTIFYMAPI : メールボックスの "送信トレイ" でメッセージが検出されたことを意味します。これは Get-MessageTrackingLog には出力されませんが、テキスト エディタで直接ログ ファイルを開くことで確認できます。
2. STOREDRIVER / RECEIVE : メールボックスから、メールボックス トランスポート発信サービスへメッセージが移ります。
3. STOREDRIVER / SUBMIT : メールボックス トランスポート発信サービスからトランスポート サービスへのメッセージを発信 (Submit) します。


- 次にトランスポート サービス
========================================================================
発信サービスによって Submit されたメッセージは、トランスポート サービスの管理下に移ります。これが従来のハブ トランスポートの役割に該当する部分となり、キューデータベースへの格納や、カテゴライザ処理なども行われます。基本となるログ エントリは、以下の通りです。

4. SMTP / HAREDIRECT : メッセージの冗長化目的のために、シャドウ メッセージが作成されます。
5. SMTP / RECEIVE : トランスポート サービスの SMTP 受信コンポーネントにより、メールボックス トランスポート発信サービスからメッセージを受信します。
6. AGENT / AGENTINFO : トランスポート ルール等、各種エージェントの処理が実施されます。
7. SMTP / SEND : トランスポート サービスから、次のホップ先となる SMTP サービス、つまり宛先が組織外の場合にはメールボックス トランスポート配信サービスへ、メッセージが送信されます。


- 最後にメールボックス トランスポート配信サービス
========================================================================
配信サービスの役割はその名の通り、トランスポート サービスから受信したメッセージを、メールボックスへ配信する役割を担います。

8. STOREDRIVER / DELIVER : メールボックス トランスポート配信サービスにより、メッセージがメールボックスに配信 (Deliver) されます。


このように、同一サーバー内の 2 ユーザー間でメッセージの送受信をしただけで、最低でも 7 つのエントリが記録されます。
ちょっと複雑なようにも見えますが、逆にこれらエントリの意味さえ抑えていれば、メッセージの宛先やサーバー台数、AD サイトの構成が変わったとしても、追跡は可能です。


- CAS の役割は?
========================================================================
さて、上記までで組織内の配送が完了しましたが、CAS サーバーが一切登場しませんでした。
これは、CAS サーバーはあくまでも Exchange サーバー以外の SMTP サーバー / SMTP クライアントとの通信を "プロキシ" することが役割となっているためです。"プロキシ" が目的ですから、Exchange サーバー同士の送受信には関与しませんし、キュー データベースもなければ、メッセージ追跡ログもありません。
では上位リレー サーバーからメッセージを受信したとき、どの CAS サーバーを経由したのかすらわからない、ということにならないでしょうか。
この点は心配ありません。こんな時はトランスポート サービスの追跡ログ、SMTP/RECEIVE のエントリを見てみましょう。

"external@contoso.com" からのメッセージが、CAS11 という CAS サーバーをプロキシして、MBX11 というメールボックス サーバーに到達したことがわかります。
追跡ログは持たずとも、しっかりと処理をしています。

- じゃあ上位リレーサーバーの情報は?
========================================================================
以前の Exchange サーバーを管理されていた方は、上述した SMTP/RECEIVE エントリの ClientHostName には、そのメッセージを送信してきたリレーサーバーの情報が格納されていたことに気付く方も多いと思います。
Exchange 2013 ではここが CAS サーバーとなるため、その情報は記録されません。代わりに、上位リレー サーバーの情報は、OriginalClientIp という項目で確認ができるようになっています。

先ほどのメッセージは、10.0.0.51 という IP アドレスを持つ SMTP クライアントから、受信したものであることがわかりました。


メッセージ追跡にはまだまだ奥が深いものがあり、追跡ログのファイルを直接開くと、もっとたくさんのことがわかります。
今回は基本的なところをご紹介しましたが、また、応用編のようなものをご紹介できればと思っています。

今後とも、弊社サポート ブログをよろしくお願いいたします。


Skip to main content