Тематические термины: Exchange , Powershell , SMTP .
В случае проблем отправки электронной почты, часто необходимо просматривать очередь сообщений. В MS Exchange для этого есть, по меньшей мере, 2 инструмента — графическая консоль и Powershell.
Средство просмотра очереди
Просмотр
Описание
Действия
Powershell
Просмотр
Примеры использования
Чистка
Повторная отправка
Приостановка
Возобновление
Почему письма висят в очереди
Часто встречаемые проблемы
Время жизни очереди
Скрипт мониторинга
Дополнительная информация
Типы очередей
Где хранятся очереди
Смена пути расположения очереди
Читайте также
Графическая консоль удобна для быстрого периодического осмотра очереди или поиска сообщения.
Запускаем Консоль управления Exchange — переходим в раздел Инструменты — кликаем по Средство просмотра очереди :
Откроется список почтовых доменов, на которые недавно были попытки отправить сообщения. В первую очередь, нас интересует колонки «Количество сообщений» и «Последняя ошибка» — для решения проблем смотрим их:
Для поиска писем по критериям, возможно создать фильтр:
Кликнув правой кнопкой мыши по списку очереди, мы получаем список возможных действий:
Powershell позволит автоматизировать некоторые задачи по работе с очередями.
Синтаксис:
Get-Queue [-Filter Фильтр] [-Server Сервер] <Параметры запроса>
Пример:
Get-Queue | fl
Отобразить очереди, в которых более 50-и писем.
Get-Queue -Filter { MessageCount -gt 50 }
Посмотреть сообщения для конкретной очереди:
Get-Queue -Identity mx615820 | Get-Message
* где mx615820 — идентификатор очереди, который мы смотрим командой Get-Queue.
Посмотреть все очереди на всех транспортных серверах:
Get-TransportServer | ForEach { Get-Queue -Server $_.Name }
Подробная информация об очереди:
Get-Queue -Identity mx615820 | Format-List
* где mx615820 — идентификатор очереди, который мы смотрим командой Get-Queue.
Подробная информация о письмах в очереди от определенного отправителя:
Get-Message -Filter { FromAddress -like «user@remontka.local» } | Format-List
Список отправителей для определенной очереди:
Get-Queue mx726931 | Get-Message -ResultSize Unlimited | Select FromAddress
Список получателей:
Get-Queue mx726931 | Get-Message -ResultSize Unlimited -IncludeRecipientInfo | Select Recipients
Удалить сообщения в очереди:
Get-Queue -Identity mxPoison | Get-Message -ResultSize unlimited | Remove-Message -WithNDR $False
* где mxPoison — название очереди.
Удалить все сообщения:
Get-Queue | Get-Message -ResultSize unlimited | Remove-Message -WithNDR $False
Удалить сообщение по фильтру:
Get-Queue | Get-Message -ResultSize unlimited | Where {$_.Subject -eq «Тема письма»} | Remove-Message -WithNDR $False
Выполняется с помощью командлета Retry-Queue:
Retry-Queue -Filter {Status -eq «Retry»}
* данная команда принудительно повторит отправку всех сообщений, у которых активен статус «Повторить».
Для повторной отправки из очереди подозрительных сообщений, сначала смотрим письма:
Get-Message -Queue Poison
И повторяем попытку отправки с использованием идентификатора письма:
Resume-Message mxPoison162514
* где mxPoison162514 — полный идентификатор сообщения (mx — сервер, Poison — очередь, 162514 — id письма).
Выполняется командлетом Suspend-Queue:
Suspend-Queue mx173625
Остановить отправку сообщений, которые находятся в очереди с более чем 500 писем:
Suspend-Queue -Filter {MessageCount -ge 500 -and Status -eq «Retry»}
Resume-Queue -Filter {Status -eq «Suspended»}
Помещение письма в очередь при отправке — обычный процесс в работе любого почтового сервера. Сообщения, которые успешно отправляются, сразу пропадают из очереди, но при возникновении проблем, система пытается совершить повторные попытки отправки, а письма могут долго висеть в этой очереди, пока не отправятся или не истечет установленный администратором срок.
Причин, почему может не уходить почта довольно много. Проблема может быть на нашей стороне, стороне получателя, сбоев программного обеспечения, ошибок администрирования, агрессивного действия систем безопасности и много другое. Вот небольшой список часто возникающих проблем:
Посмотреть:
Get-transportserver MX | Select MessageExpirationTimeout
* где MX — имя транспортного сервера. По умолчанию, равен 2.00:00:00 (2 дня).
Поменять:
Set-TransportServer MX -MessageExpirationTimeout 3.00:00:00
* где MX — имя транспортного сервера.
Пример рабочего скрипта на Powershell:
Set-PSDebug -Off
$username = «remontkaadmin»
$password = cat C:Scriptspassword.txt | convertto-securestring
$threshold_count = 100
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://mx.remontka.local/powershell -Credential $cred
Import-PSSession $session
function Send-Alert () {
$it = «Дмитрий <master@remontka.com>»
$from = «Служба проверки очереди сообщений <queue_check@remontka.local>»
$subject = «Необходимо проверить транспорт почты»
$bodyMessage = «Есть очереди, превышающие допустимое количество писем»
$enc = New-Object System.Text.utf8encoding
Send-MailMessage -to $it -from $from -Subject $subject-bodyAsHTML $bodyMessage -smtpServer mx.remontka.local -Encoding $enc
}
Get-TransportServer | ForEach {
Retry-Queue -Filter {Status -eq «Retry»}
}
Start-Sleep -s 300
Get-TransportServer | ForEach {
Get-Queue -Server $_.Name -Filter { MessageCount -gt $threshold_count } | ForEach {
Send-Alert
echo 2
break
}
}
Что происходит:
* важно отметить, что в случае проблем с почтой, письмо администратору может и не прийти. Именно для этого мы также выводим статус 2. Его можно проверять системой мониторинга, например Zabbix .
Существуют следую очереди:
Очереди хранятся в базе данных ESE, которая находится в папке «%ExchangeInstallPath%TransportRolesdataQueue»:
* mail.que — основной файл с базой очередей; tmp.edb — временный файл для проверки схемы самой базы; trn.chk — контрольные точки для отслеживания записи в логах.
Со временем, файл mail.que может разрастись и занимать много места. Для полной чистки базы ее можно просто создать заново. Для этого открываем службы Windows — останавливаем Microsoft Exchange Transport (перестанет работать почта) — переименовываем папку Queue, в которой находятся файлы базы и снова запускаем службу транспорта. Папка и база очереди создастся снова.
Открываем на редактирование файл %ExchangeInstallPath%BinEdgeTransport.exe.config (C:Program FilesMicrosoftExchange ServerV14BinEdgeTransport.exe.config) и меняем значения ключей QueueDatabasePath и QueueDatabaseLoggingPath , например:
<add key=»QueueDatabasePath» />
<add key=»QueueDatabaseLoggingPath» value=»D:Queue» />
* где QueueDatabasePath — папка хранения файлов очереди; QueueDatabaseLoggingPath — папка хранения файлов журналов очереди.
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…