Отслеживание сообщений
Отслеживание сообщений через транспортные логи
Удобные команды, с помощью которых можно отслеживать логи сообщений.
Последние 12 часов по отправителю:
Get-MessageTrackingLog -Start (Get-Date).AddHours(-12) -ResultSize unlimited | where {[string]$_.sender -like "user@domain.ru"}
Последние 12 часов по получателю:
Get-MessageTrackingLog -Start (Get-Date).AddHours(-12) -ResultSize unlimited | where {[string]$_.recipients -like "username*"}
По отправителю и получателю за последние 24 часа:
Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize unlimited | where {[string]$_.sender -like "sender@domain.ru" -and [string]$_.recipients -like "recepient@domain.ru"}
Конкретная дата по получателю:
Get-MessageTrackingLog -Start "06/21/2024 00:00:01" -End "06/22/2024 00:00:01" -ResultSize unlimited | where {[string]$_.recipients -like "user*"}
Вывести информацию с адресами клиентов для события RECEIVE из MessageTrackingLog
Get-TransportService | ForEach-Object {Get-MessageTrackingLog -Start "06/21/2024 00:00:01" -End "06/22/2024 00:00:01" -ResultSize unlimited -EventId RECEIVE | where {[string]$_.recipients -like "user*"}} | Select-Object -Property Sender,Recipients,Timestamp,OriginalClientIp
Поиск сообщений через Search-Mailbox
В некоторых случаях, к примеру, если штатная функция eDiscovery не работает, или не выполняеется командлет поиска по всей организации New-MailboxSearch (такое может случиться по разным причинам), нам может помочь циклический поиск по всем ящикам организации через search-mailbox.
В данном примере мы выполним поиск по всем ящикам организации для mailbox@mail.ru как в качестве возможного отправителя и в качестве возможного получателя (для этого используется параметр participants), начиная с 2019-го года с полным уровнем логирования поиска (LogLevel Full) и отправим результаты в ящик Exchange mailbox_results - в папку search_results_mailbox.
$allmbxinyourorg = Get-Mailbox -ResultSize unlimited Foreach ($mbx in $allmbxinyourorg) { Search-Mailbox -identity $mbx -SearchQuery '(participants: mailbox@mail.ru) AND received>"2019-01-01"' -TargetMailbox "mailbox_results" -TargetFolder "search_results_mailbox" -LogLevel Full }
А в данном примере поищем упоминания слова word в теле письма или его теме.
$allmbxinyourorg = Get-Mailbox -ResultSize unlimited Foreach ($mbx in $allmbxinyourorg) { Search-Mailbox -identity $mbx -SearchQuery '(Body:"word" OR Subject:"word")' -TargetMailbox "search_results_mailbox" -TargetFolder "search_results_folder" -LogLevel Full }
Запросить всю внешнюю почту для конкретного ящика “user@contoso.com”, исключая внутренний домен contoso.com (пользователь, как видно, принадлежит данному домену), можно командлетом, в котором сначала отрабатывается условие для получения всех входящих, исключая выделенный домен, а затем фильтруется исходящие (домен также исключается).
search-mailbox -identity "user@contoso.com" -SearchQuery '((NOT from:"@contoso.com") AND (NOT from:"User*")) OR ((NOT to:"@contoso.com") AND (NOT to:"User*"))' -TargetMailbox "search_result_mailbox" -TargetFolder "search_results_folder"
Запросы на экспорт могут копиться. Если требуется очистить ВСЕ запросы - это можно сделать так:
get-mailboxexportrequest | Remove-MailboxExportRequest