Получение статистики сообщений в MS Exchange
Описанные методы помогут собрать статистику об отправленных и полученных сообщениях, найти нужное письмо или решить проблему с отправкой сообщений.
Графическая оболочка
Стоит сразу предупредить — метод не удобен для большого числа писем. Его стоит применять для общего ознакомления работы со статистикой или с применением фильтров.
Открываем Консоль управления Exchange - переходим в Инструменты - Проводник журнала отслеживания:
Ждем или прерываем проверку обновлений и переходим на экран приветствия:
В открывшемся окне выставляем фильтры и кликаем по Далее.
Используемые фильтры
Чтобы сократить вывод и отсечь ненужную информацию, используем фильтры.
- Получатели — кому были адресованы сообщения. Вводится адрес электронной почты
- Отправитель — кто отправил электронное письмо. Email-адрес.
- Сервер — в инфраструктуре с несколькими Exchange серверами можно выбрать конкретный. Имя сервера.
- Код события — ограничивает вывод для сообщений с определенным кодом ответа сервера. Варианты:
- RECEIVE — принятые сервером сообщения.
- SEND — отправленные сервером сообщения.
- FAIL — сообщения, при доставке которых возникла ошибка.
- DSN — сообщения-отчеты о недоставке.
- DELIVER — доставленные в локальный почтовый ящик.
- BADMAIL — сообщения, которые не могут быть ни доставлены, ни возвращены.
- RESOLVE — для получателя в Active Directory найден другой адрес.
- EXPAND — от разрешенных групп рассылки.
- REDIRECT — отправленные другим получателям.
- TRANSFER — перемещенные в сообщения с ветвлением.
- SUBMIT — успешная передача службе транспорта.
- POISONMESSAGE — с источником события — идентификатор о сбое.
- DEFER — с отложенной доставкой.
- ИД сообщения — если известен конкретный идентификатор письма.
- Тема.
- Ссылка — поиск сообщений по полю Reference. Чаще всего, оно пустое, но может содержаться информация, например, InternalMessageId.
- Начало — дата и время, от которого искать письма. Если не указано, поиск от самого первого, которое есть в журнале.
- Окончание — дата и время, до которого ищем письма. Если не указано, поиск до последнего, которое есть в журнале.
Использование Powershell
Для работы из командной строки или написания скриптов, можно использовать Powershell командлет Get-MessageTrackingLog. Примеры его использования лучше всего посмотреть в графической оболочке — при формировании запроса с фильтрами, система выводит аналогичную команду на Powershell.
Простой запрос для отображения входящих сообщений:
Get-MessageTrackingLog -EventID "RECEIVE" -Start "2017/10/20 13:27:00" -End "2017/10/31 13:37:00"
* данная команда выведен сообщения за период от Start до End.
Мы можем увидеть ПРЕДУПРЕЖДЕНИЕ: Доступно больше результатов, чем показано в настоящий момент. Для их просмотра увеличьте значение параметра ResultSize. Это означает, что выведены не все результаты. Чтобы получить все данные, добавляем в конце команды -ResultSize unlimited.
Примеры использования Get-MessageTrackingLog 1. Для входящихПолучить количество входящих сообщений:
(Get-MessageTrackingLog -EventID "RECEIVE" -ResultSize unlimited).Count
Входящие сообщения, которые пришли через определенный коннектор:
Get-MessageTrackingLog -EventID "RECEIVE" -ResultSize unlimited | Where
Поиск входящего письма для определенного получателя за определенный период, где тема сообщения содержит слово «вопрос»:
Get-MessageTrackingLog -EventID "RECEIVE" -Start "2017/10/20 00:00:00" -End "2017/10/21 00:00:00" -Recipients "master@dmosk.ru" -MessageSubject "вопрос"
Список сообщений, с поиском отправителя по домену:
Get-MessageTrackingLog -EventID "RECEIVE" -Start "2017/10/20 00:00:00" -End "2017/10/21 00:00:00" -ResultSize unlimited | Where
2. Для исходящихКоличество отправленных писем:
(Get-MessageTrackingLog -EventID "SEND" -ResultSize unlimited).Count
Для просмотра количества оправленных сообщений наружу стоит указать ConnectorId, иначе, в статистику попадут служебные письма:
(Get-MessageTrackingLog -EventID "SEND" -ResultSize unlimited | Where ).Count
Список отправленных писем за определенный период:
Get-MessageTrackingLog -EventID "SEND" -Start "2017/10/20 00:00:00" -End "2017/10/21 00:00:00" -ResultSize unlimited
Список сообщений от определенного отправителя:
Get-MessageTrackingLog -EventID "SEND" -Start "2017/10/20 00:00:00" -End "2017/10/21 00:00:00" -Sender "master@dmosk.ru"
Поиск сообщения, отправленного определенному получателю:
Get-MessageTrackingLog -EventID "SEND" -Start "2017/10/20 00:00:00" -End "2017/10/21 00:00:00" -Recipients "master@dmosk.ru"
Поиск письма, отправленного на определенный домен:
Get-MessageTrackingLog -EventID "SEND" -ResultSize unlimited | where
3. РазноеСписок коннекторов, через которые проходят письма:
Get-MessageTrackingLog | Select ConnectorId -unique
Пример скрипта для получения статистики по часам
Попробуем посмотреть, в какие часы приходит максимальное число писем:
$username = "dmosk\login" $password = cat C:\Scripts\password.txt | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exchange_server.dmosk.local/powershell -Credential $cred Import-PSSession $session
Get-MessageTrackingLog -EventID "RECEIVE" -ResultSize unlimited | Where | ForEach-Object
* в двух словах, сначала мы подключаемся к серверу Exchange (в качестве пароля используем строку из файла, который заранее создан командой read-host -assecurestring | convertfrom-securestring | out-file C:\Scripts\password.txt). Затем получаем статистику входящих сообщений, вытаскиваем для каждого дату и час. После увеличиваем на единицу значение массива, в качестве ключа которого используем время (часы).
На работу скрипта может уйти несколько минут. Пример ответа:
Name Value ---- ----- 23 2403 22 2108 21 1699 20 1557 19 1407 18 1426 17 2042 16 2576 15 2574 14 2363 13 3036