Exchange Server: 検索メッセージ追跡ログ

メッセージ追跡では、メールボックス サーバーとエッジ トランスポート サーバーのトランスポート パイプラインを介したメール フローによるメッセージ アクティビティを記録します。 Exchange 管理シェル で Get-MessageTrackingLog コマンドレットを使用することで、メッセージ追跡ログのエントリを特定の検索条件で検索できます。 次に例を示します。

  • ユーザーが特定の受信者に送信したメッセージがどうなったかを確認します。

  • メール フロー ルール (トランスポート ルールとも呼ばれます) がメッセージに対して動作したかどうかを確認します。

  • インターネットの送信者が作成したメッセージが Exchange 組織に送信されたかどうかを確認します。

  • 指定した期間内に指定のユーザーから送信されたメッセージをすべて検索します。

始める前に把握しておくべき情報

  • 予想所要時間 : 10 分

  • この手順を実行する際には、あらかじめアクセス許可が割り当てられている必要があります。 必要なアクセス許可を確認するには、「 メール フローのアクセス許可 」トピックの「メッセージ追跡」エントリを参照してください。

  • メッセージ追跡ログの検索を行うには、Microsoft Exchange Transport Log Search サービスを実行している必要があります。 このサービスを無効にするか停止すると、メッセージ追跡ログの検索や配信レポートの実行ができません。 ただし、このサービスを停止しても Exchange のその他の機能には影響しません。

  • Get-MessageTrackingLog コマンドレットからの結果に表示されるフィールド名は、メッセージ追跡ログ ファイルで見られる実際のフィールド名とほぼ同じです。 主な違いは次のとおりです。

    • ダッシュは、フィールド名から削除されます。 たとえば、 内部メッセージ ID は として InternalMessageId表示されます。

    • 日付/時刻フィールドは としてTimestamp表示されます。

    • 受信者アドレス フィールドは としてRecipients表示されます。

    • 送信者アドレス フィールドは としてSender表示されます。

  • メッセージ追跡ログの date-time フィールドは世界協定時刻 (UTC) で情報を格納します。 ただし、検索を実行するために使用しているコンピューターの地域の日付/時刻形式で 、Start パラメーターまたは End パラメーターの日付/時刻検索条件を入力する必要があります。

  • 別の Exchange サーバーからメッセージ追跡ログ ファイルをコピーし、それを Get-MessageTrackingLog コマンドレットで検索することはできません。 また、既存のメッセージ追跡ログ ファイルを手動で保存した場合、ファイルのタイム スタンプが変更され、メッセージ追跡ログを検索するための Exchange のクエリ ロジックが正常に動作しなくなります。

  • Exchange 2016 では、 Get-MessageTrackingLog コマンドレットは、同じ Active Directory サイト内の Exchange 2013 メールボックス サーバーと Exchange 2010 ハブ トランスポート サーバー上のメッセージ追跡ログを検索できます。 Exchange 2019 では、 Get-MessageTrackingLog コマンドレットは、同じ Active Directory サイト内の Exchange 2016 および Exchange 2013 メールボックス サーバーのメッセージ追跡ログを検索できます。

  • このトピックの手順で使用可能なキーボード ショートカットについては、「Exchange 管理センターのキーボード ショートカット」を参照してください。

ヒント

問題がある場合は、 Exchange Server、Exchange Online、Exchange Online Protection。 必要な作業 シェルを使用して送信者フィルターを有効または無効にする

Exchange 管理シェル を使用してメッセージ追跡ログを検索する

特定のイベントについてメッセージ追跡ログのエントリを検索するには、次の構文を使用します。

Get-MessageTrackingLog [-Server <ServerIdentity>] [-ResultSize <Integer> | Unlimited] [-Start <DateTime>] [-End <DateTime>] [-EventId <EventId>] [-InternalMessageId <InternalMessageId>] [-MessageId <MessageId>] [-MessageSubject <Subject>] [-Recipients <RecipientAddress1,RecipientAddress2...>] [-Reference <Reference>] [-Sender <SenderAddress>]

サーバー上のメッセージ追跡ログから最新の 1,000 件のエントリを表示するには、次のコマンドを実行します。

Get-MessageTrackingLog

次の使用例は、ローカル サーバー上のメッセージ追跡ログを検索し、2015 年 8 月 8 日から 2015 年 3 月 28 日午後 3 時 28 分 5 分 00 分までのすべてのエントリについて、メッセージ送信者が であったpat@contoso.comすべての FAIL イベントについて検索します。

Get-MessageTrackingLog -ResultSize Unlimited -Start "3/28/2015 8:00AM" -End "3/28/2015 5:00PM" -EventId "Fail" -Sender "pat@contoso.com"

以下の構文を使用します。

Get-MessageTrackingLog <SearchFilters> | <Format-Table | Format-List> [<FieldNames>] [<OutputFileOptions>]

この例では、以下の検索条件でメッセージ追跡ログを検索します。

  • Send イベントの最初の 1,000 件について結果を返します。

  • 結果をリスト形式で表示します。

  • または RecipientSend始まるフィールド名のみを表示します。

  • という名前の新しいファイルに出力を書き込む D:\Send Search.txt

Get-MessageTrackingLog -EventId Send | Format-List Send*,Recipient* | Set-Content -Path "D:\Send Search.txt"

Exchange 管理シェル を使用して複数のサーバー上のメッセージ追跡ログからメッセージ エントリを検索する

通常、 MessageID: ヘッダー フィールドの値は、メッセージが Exchange 組織内を移動する間は変わりません。 このプロパティの名前は、キュー表示ユーティリティでは InternetMessageId 、メッセージ追跡ログ表示ユーティリティでは MessageId です。 目的のメッセージの MessageID: の値が特定できたら、Exchange 組織内のすべてのメールボックス サーバー上のメッセージ追跡ログからそのメッセージに関する情報を検索できます。

すべてのメールボックス サーバーおよび Exchange 2010 ハブ トランスポート サーバーで特定のメッセージに関するメッセージ追跡ログ エントリをすべて検索するには、次の構文を使用します。

$Servers = Get-ExchangeServer;  $Servers | where {$_.isHubTransportServer -eq $true -or $_.isMailboxServer -eq $true} | Get-MessageTrackingLog -MessageId <MessageID>  | Select-Object <CommaSeparatedFieldNames>  | Sort-Object -Property <FieldName>

この例では以下の検索条件で、すべてのメールボックス サーバーおよび Exchange 2010 ハブ トランスポート サーバー上のメッセージ追跡ログを検索します。

  • MessageID: の値<ba18339e-8151-4ff3-aeea-87ccf5fc9796@mailbox01.contoso.com>を持つメッセージに関連するすべてのエントリを検索します。 山かっこ文字 (<>) は省略できます。 省略しない場合は、 MessageID: の値全体を二重引用符で囲む必要があります。

  • エントリごとに、 date-timeserver-hostnameclient-hostnamesourceevent-id 、および recipient-address の各フィールドを表示します。

  • date-time フィールドに基づいて結果を並べ替えます。

$Servers = Get-ExchangeServer; $Servers | where {$_.isHubTransportServer -eq $true -or $_.isMailboxServer -eq $true} | Get-MessageTrackingLog -MessageId ba18339e-8151-4ff3-aeea-87ccf5fc9796@mailbox01.contoso.com | Select-Object Timestamp,ServerHostname,ClientHostname,Source,EventId,Recipients | Sort-Object -Property Timestamp

EAC を使用してメッセージ追跡ログを検索する

Exchange 管理センター (EAC) にある管理者向けの配信レポート機能を使用することで、組織内の特定のメールボックスで送受信されたメッセージの情報をメッセージ追跡ログから検索できます。 詳細については、「配信レポートによるメッセージの追跡」を参照してください。