Exchange Serverのキューからメッセージをエクスポートする

Exchange Serverのメールボックス サーバーとエッジ トランスポート サーバーでは、キュー内のメッセージをファイルにエクスポートできます。 エクスポートされたメッセージはキューから削除されません。 メッセージのコピーは、プレーン テキスト ファイルとして指定された場所に作成されます。 メッセージ ファイルはメモ帳または Outlook で表示できます。また、Exchange 組織内外の他のメールボックス サーバーまたはエッジ トランスポート サーバーの再生ディレクトリを使用して、メッセージ ファイルを再送信できます。

はじめに把握しておくべき情報

  • 各手順の推定完了時間:5 分

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

  • 配信キュー、送信キュー、または到達不能キューからメッセージをエクスポートするには、メッセージを中断状態にする必要があります。 アクティブで正常なキューの場合は、まずキューを中断して、メッセージを一時停止できます。 有害メッセージ キューに置かれたメッセージは、既に中断状態になっています。 詳細については、「 キューの中断 」および「キュー 内のメッセージの中断」を参照してください。

  • Exchange ツールボックスのキュー ビューアーを使用して、メッセージをエクスポートすることはできません。 ただし、Exchange 管理シェルを使用してメッセージをエクスポートする前に、キュー ビューアーを使用してメッセージを見つけ、特定し、中断できます。 キュー ビューアーの詳細については、「キュー ビューアー」をご覧ください。 オンプレミスの Exchange 組織で Exchange 管理シェルを開く方法については、「 Open the Exchange Management Shell」をご覧ください。

  • キューからメッセージをエクスポートする場合は、キューからメッセージを削除しません。 再生ディレクトリを使用してエクスポートされたメッセージを再送信する場合は、メッセージの配信が重複しないようにキューからメッセージを削除する必要があります。 詳細については、「キューからメッセージを削除する」を参照してください。

  • エクスポートされたメッセージ ファイルのターゲットの場所に関する次の情報を確認します。

    • メッセージをエクスポートする前にターゲット フォルダーが存在する必要があり、自動的には作成されません。 完全なパスを指定しない場合、ファイルは現在の Exchange Management Shell 作業ディレクトリに書き込まれます。
    • パスは、Exchange サーバーに対してローカルにすることも、リモート サーバー (\server\share) 上の共有への UNC パスにすることもできます。
    • アカウントには、ターゲット フォルダーに 書き込み アクセス許可が必要です。
  • 一意性を確保するために、エクスポートされたメッセージ ファイル名にメッセージの InternetMessageID プロパティ値を使用します。 プロシージャには、山かっこ (> と <) を削除する手順が含まれています。ファイル名では使用できないためです。 また、.eml ファイル名拡張子を使用して、Outlook でファイルを簡単に開いたり、再生ディレクトリを使用してファイルを再送信したりできます。

  • キュー内のキューとメッセージの ID とフィルターの詳細については、次のトピックを参照してください。

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

ヒント

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

Exchange 管理シェルを使用してキューから特定のメッセージをエクスポートする

キューから特定のメッセージをエクスポートするには、次の構文を使用します。

Export-Message -Identity <MessageIdentity> | AssembleMessage -Path <FilePath>\<FileName>.eml

この例では、Mailbox01 という名前のサーバーで次のアクションを実行します。

  1. contoso.com 配信キューを中断します。

  2. InternalMessageID 値が 1234 であるキュー内のメッセージを中断します。

  3. メッセージのコピーを D:\contoso Export\export.eml ファイルにエクスポートします。

Suspend-Queue Mailbox01\contoso.com
Suspend-Message -Identity Mailbox01\contoso.com\1234
Export-Message -Identity Mailbox01\contoso.com\1234 | AssembleMessage -Path "D:\Contoso Export\export.eml"

Exchange 管理シェルを使用して、キューからすべてのメッセージをエクスポートする

キューからすべてのメッセージをエクスポートし、各メッセージの InternetMessageID 値をファイル名として使用するには、次の構文を使用します。

Get-Message -Queue <QueueIdentity> -ResultSize Unlimited | ForEach-Object {$Temp=<Path>+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}

この例では、Mailbox01 という名前のサーバーで次のアクションを実行します。

  1. contoso.com 配信キューを中断します。
  2. キュー内のすべてのメッセージを中断します。
  3. メッセージのコピーを D:\Contoso Export という名前のローカル フォルダーにエクスポートします。
Suspend-Queue Mailbox01\contoso.com
Get-Queue Mailbox01\contoso.com | Get-Message -ResultSize Unlimited | Suspend-Message
Get-Message -Queue Mailbox01\Contoso.com -ResultSize Unlimited | ForEach-Object {$Temp="D:\Contoso Export\"+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}

Exchange 管理シェルを使用して、サーバー上のすべてのキューから特定のメッセージをエクスポートする

サーバー上のすべてのキューから特定のメッセージをエクスポートし、各メッセージの InternetMessageID 値をファイル名として使用するには、次の構文を使用します。

Get-Message -Filter "<MessageFilter>" [-Server <ServerIdentity>] -ResultSize Unlimited | ForEach-Object {$Temp=<Path>+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}

この例では、Mailbox01 という名前のサーバーで次のアクションを実行します。

  1. サーバー上のすべてのキューを一時停止します。
  2. サーバー上のすべてのキュー内のすべてのメッセージを、fabrikam.com ドメイン内の送信者から一時停止します。
  3. メッセージのコピーを D:\Fabrikam Export という名前のローカル フォルダーにエクスポートします。
Suspend-Queue -Server Mailbox01
Suspend-Message -Filter "FromAddress -like '*@fabrikam.com'" -Server Mailbox01
Get-Message -Filter "FromAddress -like '*@fabrikam.com'" -Server Mailbox01 -ResultSize Unlimited | ForEach-Object {$Temp="D:\Fabrikam Export\"+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}

Exchange 管理シェルを使用して、サーバー上のすべてのキューからすべてのメッセージをエクスポートする

サーバー上のすべてのキューからすべてのメッセージをエクスポートし、各メッセージの InternetMessageID 値をファイル名として使用するには、次の構文を使用します。

Get-Message [-Server <ServerIdentity>] -ResultSize Unlimited | ForEach-Object {$Temp=<Path>+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}

この例では、Mailbox01 という名前のサーバーで次のアクションを実行します。

  1. サーバー上のすべてのキューを一時停止します。
  2. サーバー上のすべてのキュー内のすべてのメッセージを中断します。
  3. メッセージのコピーを D:\Mailbox01 Export という名前のローカル フォルダーにエクスポートします。
Suspend-Queue -Server Mailbox01
Get-Queue -Server Mailbox01 | Get-Message -ResultSize Unlimited | Suspend-Message
Get-Message -Server Mailbox01 -ResultSize Unlimited | ForEach-Object {$Temp="D:\Mailbox01 Export\"+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}