This article details how to search message transport logs in Exchange Online
Prerequisites
These scripts require the ExchangeOnlineManagement module.
Command(s)/Script(s)/Process
This will pull logs from the last 90 days
$SenderAddress = "*@domain.com"
$RecipientAddress = "*@domain.com"
$StartDate = (Get-Date -Hour 00 -Minute 00 -Second 00).AddDays(-90)
$EndDate = (Get-Date -Hour 00 -Minute 00 -Second 00)
$messageTrace = @()
$page = 1
$pageSize = 5000
$messageTrace = do
{
Write-Progress -Activity 'Collecting all messages' -CurrentOperation $page
$messagesThisPage = Get-MessageTrace -SenderAddress $SenderAddress -RecipientAddress $RecipientAddress -StartDate $StartDate -EndDate $EndDate -PageSize $pageSize -Page $page
$messagesThisPage
$page++
}
until ($messagesThisPage.count -eq 0)
$messageTrace | Where-Object {$_.MessageId -notlike "*prod.outlook.com>"} | export-csv "MessageTrace $(date -Format 'yyyy-MM-dd').csv"