利用者より相手にメールが届いているか確認して欲しいという依頼がありましたので PowerShell のコマンドを作成しました。
メールが外部送信できているか確認するスクリプト
◆使い方
-
宛先の情報を入力(任意)
※空にした場合はすべてのメールが対象になります。 -
差出人の情報を入力(必須)
※自ドメインのメールアドレスにしてください。 -
検索範囲を入力(必須)
※Get-MessageTraceDetail は過去10日までしか遡れません。それ以上の日は指定しないでください。 -
スクリプトを実行
test.ps1
# 宛先の情報を入力する(任意)
$RecipientAddress = '宛先メールアドレスを記入'
# 差出人の情報を入力する(必須)
$SenderAddress = '差出人メールアドレスを記入'
# 検索範囲を入力する(必須)
$StartDate = (Get-Date).AddDays(-10)
$EndDate = (Get-Date)
# メールアドレスをドメインパートとローカルパートに分ける
$LocalPart = $SenderAddress.Split("@")[0] # 出力するファイル名に利用
$DomainPart = $SenderAddress.Split("@")[1] # 組織内の配信を除外するのに利用
# Get-MessageTrace のオプションを作成する
$MessageTraceOptions = @{
"RecipientAddress" = $RecipientAddress
"SenderAddress" = $SenderAddress
"StartDate" = $StartDate
"EndDate" = $EndDate
}
# 宛先が存在しない場合はオプションから除外する
if ($RecipientAddress -notlike "*@*" -or $RecipientAddress -eq $null ) {
$MessageTraceOptions.Remove("RecipientAddress")
}
# Get-MessageTrace の結果を変数に入れる
# ※Mmessage Trace ID の取得が目的
# ※この時、組織内の配送は除外する
$messageTrace = Get-MessageTrace @MessageTraceOptions | Where-Object {$_.RecipientAddress -notlike "*@$DomainPart"}
# 繰り返す
$messageTrace | ForEach-Object {
# Get-MessageTrace の要素を取り出す
$tmpSubject = $_.Subject
$tmpSenderAddress = $_.SenderAddress
$tmpRecipientAddress = $_.RecipientAddress
$tmpReceived = $_.Received
# Get-MessageTraceDetail のオプションを作成する
$MessageTraceDetailOptions = @{
"MessageTraceId" = $_.MessageTraceId
"RecipientAddress" = $tmpRecipientAddress
"StartDate" = $StartDate
"EndDate" = $EndDate
}
Get-MessageTraceDetail @MessageTraceDetailOptions |
Select-Object @{Label="Subject";Expression={$tmpSubject}}, @{Label="SenderAddress";Expression={$tmpSenderAddress}}, @{Label="RecipientAddress";Expression={$tmpRecipientAddress}}, @{Label="Received";Expression={$tmpReceived}}, Date, Event, Action, Detail, MessageId, MessageTraceId
} | Export-Csv -Append -Path $ENV:USERPROFILE\Desktop\Get-MessageTraceDetail_$($LocalPart)_$(Get-Date -Format "yyyyMMdd").csv -Encoding Default -NoTypeInformation
◆結果
結果はデスクトップに 「Get-MessageTraceDetail_差出人_yyyyMMdd.csv」 というファイルが出力されます。
内容は下記となります。
項目 | 意味 |
---|---|
Subject | 件名 |
SenderAddress | 差出人 |
RecipientAddress | 宛先 |
Received | メッセージが受信した日時 |
Date | メッセージが処理された日時 |
Event | イベント |
Action | メッセージに対して実行されたアクション |
Detail | メッセージトレースイベントの詳細情報 |
MessageId | メッセージの一意の識別子 |
MessageTraceId | メッセージトレースの一意の識別子 |
Event 列に 「外部に送信」 があれば外部送信されています。
注意
※外部送信≠相手に届いたですのでご注意ください。