Команда PowerShell Get-MessageTrace может помочь администраторам Office 365 отслеживать доставку и обработку электронных сообщений, которые могут не попадать в почтовые ящики их пользователей. В этой статье я покажу вам, как использовать команду Get-MessageTrace для управления и анализа трассировки электронных сообщений в Office 365.
Использование PowerShell Get-MessageTrace с Exchange Online
Команда Get-MessageTrace является стандартным методом для администраторов анализировать и управлять трафиком электронной почты в Exchange Online. Однако эта команда PowerShell доступна только в среде Exchange Online (часть Office 365).
В среде Exchange на месте, команда PowerShell Get-MessageTrace недоступна, и вашим альтернативным вариантом является командлет Get-MessageTrackingLog. Команда PowerShell Get-MessageTrace предоставляет функциональность, аналогичную своему аналогу на месте, но этот командлет специально разработан для облачных сред Office 365.
Отслеживание сообщений в Exchange на месте по сравнению с Exchange Online: Основные различия
- Окружение: Exchange на месте работает с собственными серверами организации, в то время как Exchange Online – это облачная служба, предоставляемая компанией Microsoft.
- Интеграция: В Exchange Online команда Get-MessageTrace без проблем интегрируется с функциями безопасности и соответствия Office 365, в то время как в средах на месте необходимо использовать командлет Get-MessageTrackingLog.
- Аутентификация: Методы аутентификации и сеансы PowerShell управляются по-разному из-за облачной природы Exchange Online.
- Масштабируемость: Масштабируемость Exchange Online разработана для обработки больших объемов электронной почты без необходимости модернизации оборудования на месте.
Подключение к Exchange Online
Вот небольшое напоминание: для использования любых командлетов Exchange Online вам необходимо установить удаленную сеанс PowerShell с вашей средой Office 365. Откройте Windows PowerShell и выполните следующую команду.
Connect-ExchangeOnline

Все, вы уже привыкли, верно? Если вам нужна еще небольшая помощь с необходимыми предварительными требованиями для подключения, пожалуйста, прочтите мой предыдущий пост о как подключиться к Exchange Online.
Использование Get-MessageTrace с определенным диапазоном дат
Анализ трафика электронной почты в определенном диапазоне дат является обычной административной задачей. Командлет Get-MessageTrace позволяет фильтровать и просматривать сообщения электронной почты на основе их даты создания или доставки. Обратите внимание, что эта команда PowerShell может получить доступ к истории не более 10 дней. Если вам нужно исследовать поток электронной почты более чем за 10 дней назад, вам потребуется использовать веб-сайт Exchange Admin Center и выполнить трассировку сообщения в течение более длительного периода времени.
Вот пошаговое руководство о том, как использовать командлет Get-MessageTrace для поиска сообщений в определенном диапазоне дат.
Последние x минут
Параметр «StartDate» используется для указания временного интервала, который вы хотите искать. Вы можете вводить даты (до максимум 10 дней). Однако вы также можете включать время. Обязательно заключите ваши диапазоны дат/времени в кавычки («»).
Давайте попробуем использовать командлет Get-MessageTrace для поиска электронных писем за последние 90 минут:
Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 12:15 PM"

I’ll remind you that I am using my Microsoft 365 Developer tenant, so there’s not a lot of email activity occurring. If you get no output, it simply means that no email traffic records were returned. This can be completely normal.
Вы также можете использовать более сложную команду PowerShell для возврата на 45 минут вот так:
Get-MessageTrace -StartDate (Get-Date).AddMinutes(-45) -EndDate (Get-Date)
Позвольте мне отправить несколько электронных писем, чтобы вы могли увидеть, как будет работать вывод в вашей среде.
Последние x часов
Теперь это важно – Exchange Online практически наверняка будет записывать времена доставки электронных писем в формате UTC! Поэтому мне нужно скорректировать времена окончания, и я покажу вам, как это сделать.
Давайте вернемся к последним 8 или 9 часам:
Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 7:00 PM"

Вот оно! Это показывает электронное письмо с другого аккаунта на мой основной аккаунт глобального администратора. Когда я печатаю это, я отправил письмо примерно в 12:15 PM (CDT). Однако UTC опережает нас на 5 часов. Вот почему строка электронной почты сообщает о доставке в 5:16 PM (UTC). Пожалуйста, имейте в виду эту разницу во времени!
Последние x дней
Хотя у меня нет истории доставки электронной почты, я все равно могу показать вам команду. Если вы хотите показать ВСЕ электронные письма, обработанные через Exchange Online, просто включите даты.
Get-MessageTrace -StartDate 08/05/2023 -EndDate 08/15/2023

Там мы идем. Поскольку у меня настроен Azure AD Connect Cloud Sync в этом арендаторе, я получаю еженедельное электронное письмо с обновлениями статуса. Письмо было отправлено 8/8/2023 года.
Еще раз, помните, что вы можете искать только в течение максимум 10 дней. Если вам нужно исследовать более давние события, вам придется использовать функцию трассировки сообщений на веб-сайте Центра администратора Exchange. Там вы можете создать запрос на возврат до 90 дней.
Использование Get-MessageTrace для поиска по адресу электронной почты отправителя
Выявление сообщений, отправленных конкретным отправителем, может быть критически важным для различных целей, таких как исследование коммуникационных паттернов или решение вопросов безопасности. Командлет Get-MessageTrace позволяет вам искать трассировки сообщений по определенному адресу электронной почты.
Вот как использовать параметр «-SenderAddress» для поиска трассировок сообщений от конкретного отправителя:
Get-MessageTrace -SenderAddress "[email protected]"

Классно, еще один. Приятный и интуитивно понятный. И отличный совет – если вы направите результаты в Format-List cmdlet, вы получите отличное краткое изложение результатов, включая статус доставки, идентификатор сообщения, идентификатор трассировки сообщения, адрес отправителя, адрес получателя и многое другое.

Использование Get-MessageTrace для поиска по адресу электронной почты получателя
Отслеживание электронных писем, отправленных конкретному получателю, является еще одной важной задачей для администраторов. Независимо от того, управляете ли вы доставкой электронной почты или гарантируете, что конфиденциальная информация достигает нужных людей, возможность поиска по адресу электронной почты получателя бесценна.
Давайте рассмотрим пример, здесь мы будем искать все электронные письма, доставленные мне:
Get-MessageTrace -RecipientAddress "[email protected]"

Это показывает 3 электронных сообщения, отправленных на мой адрес электронной почты в арендаторе. И, кстати, если вы НЕ включите какие-либо параметры, связанные со временем, он сообщит о последних 48 часах.
Можно ли использовать Get-MessageTrace для поиска по теме электронного письма?
К сожалению, вы не можете использовать команду Get-MessageTrace для поиска по теме. Для этого вам потребуется использовать Microsoft Purview и создать поиск eDiscovery (содержимое). Более подробную информацию об этом вы можете найти в нашей предыдущей статье об eDiscovery.
Использование команды Get-MessageTrace для поиска по IP-адресу отправителя и получателя
Вы также можете использовать команду Get-MessageTrace для поиска по IP-адресам отправителя и получателя. Это позволяет отслеживать электронные сообщения на основе IP-адресов отправляющих и принимающих серверов. Это может быть особенно полезно для диагностики проблем доставки, выявления подозрительной активности и понимания пути, по которому проходят сообщения через вашу электронную инфраструктуру.
Здесь мы также можем использовать параметры “-ToIP” и “-FromIP”. Например, если мы хотим найти все электронные письма, идущие от источника с IP-адресом 44.42.2.55 и нашего публичного IP-адреса брандмауэра, чтобы принять электронную почту, 101.3.2.88, мы могли бы использовать следующую команду в качестве примера.
Get-MessageTrace -ToIP "4.42.2.55" -FromIP "101.3.2.88"

Опять же, у меня здесь нет действительно крутого контента, чтобы показать вам, но это работает. Действительно, это так.
Как использовать подстановочные символы и частичные совпадения
Вы также можете использовать символы подстановки для эффективного сужения результатов. Например, по соображениям безопасности или соответствия требованиям, предположим, что ваш сотрудник по соответствию хочет увидеть запись всех электронных писем, обработанных из Gmail за последние 48 часов. Легко как пирожное!
Get-MessageTrace -SenderAddress *@gmail.com
Вот, это довольно просто сделать. И то же самое можно сделать для получателей. Если вы хотите увидеть все электронные письма, доставленные всем, у кого адрес электронной почты начинается с буквы «m», попробуйте следующую команду:
Get-MessageTrace -RecipientAddress m*@x3v6p.onmicrosoft.com
Опять же, это очень просто.
Как получить более подробные результаты с помощью Get-MessageTraceDetail
Если вам нужно расширить вывод команды Get-MessageTrace, вы будете рады узнать, что команда Get-MessageTraceDetail расширяет его и показывает вам отдельные события обработки и доставки для транзакции электронной почты. Позвольте мне показать вам.
Сначала я запущу команду Get-MessageTrace и направлю ее на команду «Format-List» (fl), чтобы получить некоторые подробности.
Get-MessageTrace | fl

Здесь мы можем увидеть более подробную информацию о 4 электронных сообщениях за последние 48 часов. Таким образом, мы можем получить идентификатор трассировки сообщения и адрес получателя из второго электронного письма и использовать следующую команду:
Get-MessageTraceDetail -MessageTraceID e4f33ded-b67f-49b8-9a00-08db9dbb953a -RecipientAddress [email protected]

Здесь мы видим 3 события, составляющих прием и доставку электронного сообщения из Интернета в фактический почтовый ящик Megan. Здесь предоставлено очень много подробной информации. Это может показать, было ли сообщение доставлено прямо в папку “Нежелательная почта” пользователя или было ли оно автоматически перенаправлено в другой внутренний (или внешний) почтовый ящик. В целом, это очень полезная информация для специалистов по ИТ и администраторов Exchange.
Как экспортировать результаты в файл CSV
Чаще всего вы будете выполнять поисковые запросы, которые вернут МНОЖЕСТВО записей. Вам определенно захочется использовать Excel для анализа и фильтрации результатов. Для этого просто направьте свои результаты через команду Export-CSV, вот так:
Get-MessageTrace | Export-CSV AllEmailsInLast48Hours.csv

Это заняло всего пару секунд. Очень хорошо!
Как выполнять расширенные поисковые запросы с помощью Group-Object
Вы можете использовать cmdlet Group-Object, чтобы получить более общую информацию о доставке электронной почты.
Наиболее активные отправители электронной почты
Вы можете использовать следующую команду, чтобы найти пользователей, отправивших наибольшее количество электронных писем за последние 7 дней. Позвольте мне показать вам команду, а затем я объясню ее.
Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property SenderAddress | Select Name,Count | Sort Count -Descending

Здесь мы сначала собираем полный список обработанных электронных писем за последние 10 дней. Затем мы берем этот вывод и используем команду Group-Object, используем свойство “SenderAddress”, получаем количество (число электронных писем) и сортируем его по наибольшему количеству вначале.
Получатели, получающие наибольшее количество электронных писем
В подобной манере мы можем быстро собрать информацию о пользователях, которые получили наибольшее количество электронных писем за последние 10 дней, запустив ту же команду и заменив свойство “SenderAddress” на “RecipientAddress”. Посмотрим, что произойдет:
Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property RecipientAddress | Select Name,Count | Sort Count -Descending

I do love how powerful and simple PowerShell can be. Now, we have the information. Again, the data in this tenant is VERY low. You will undoubtedly see more robust results when you run these commands in your tenant.
Команда Get-MessageTrace предлагает гибкость и контроль
Независимо от того, нужно ли вам искать в определенном диапазоне дат, определять следы сообщений от конкретного отправителя или отслеживать следы сообщений, отправленных конкретному получателю, командлет Get-MessageTrace обеспечивает необходимую гибкость и контроль. Кроме того, возможность экспорта результатов в файл CSV повышает вашу способность анализировать и документировать шаблоны электронной почты. Овладев навыками использования командлета Get-MessageTrace, вы можете эффективно управлять трафиком электронной почты и получать ценные инсайты в коммуникационную деятельность вашей организации.