Работа с очередями в Exchange Server
Очереди в Exchange Server используются для временного хранения сообщений, которые ещё не доставлены. Администратору важно уметь контролировать их состояние, диагностировать проблемы и очищать очереди при необходимости.
Основные инструменты
- Queue Viewer (Exchange Toolbox) — графический интерфейс для просмотра очередей.
- Exchange Management Shell — PowerShell-командлеты для управления очередями.
Основные команды PowerShell
Задача | Команда |
---|---|
Показать список очередей | `Get-Queue` |
Показать сообщения в очереди | `Get-Message -Queue "Server\submission"` |
Приостановить очередь | `Suspend-Queue -Identity "Server\submission"` |
Возобновить очередь | `Resume-Queue -Identity "Server\submission"` |
Удалить все сообщения с отчётом NDR | `Remove-Message -Queue "Server\submission" -WithNDR $true` |
Форсировать повторную доставку | `Retry-Queue -Identity "Server\domain.com"` |
Типы очередей
- Submission Queue
- Первое место, куда попадает сообщение после приёма (из Outlook, OWA, SMTP).
- Из этой очереди письма передаются на обработку транспортным правилам и дальше в нужные очереди доставки.
- Mailbox Delivery Queue
- Очередь доставки сообщений в почтовые базы данных Exchange.
- Если база недоступна или перегружена — письма скапливаются здесь.
- Remote Delivery Queue
- Очередь доставки на внешние SMTP-серверы (например, gmail.com, yandex.ru).
- Каждое доменное имя (NextHopDomain) имеет отдельную очередь.
- Poison Queue
- Очередь для «опасных» сообщений, которые вызвали сбой в транспортной службе (например, зацикленные письма или повреждённые заголовки).
- По умолчанию администратор сам решает: удалить или повторно обработать письма.
- Shadow Redundancy Queue
- Используется для обеспечения надёжности. Exchange хранит копию письма до подтверждения, что оно доставлено следующим хопом.
DeliveryType очередей в Exchange Server
Свойство DeliveryType указывает, каким образом очередь будет пытаться доставить сообщения. Ниже приведены основные типы с описанием:
DeliveryType | Назначение |
---|---|
ShadowRedundancy | Используется механизм «теневой избыточности». Сообщение временно хранится, пока следующий хоп (сервер-получатель) не подтвердит успешное получение. Обеспечивает надёжность доставки. |
SmartHostConnectorDelivery | Доставка через Send Connector, у которого явно задан смартхост (обычно внешний релей или шлюз). Письма уходят через указанный сервер, минуя прямой MX-запрос. |
SmtpDeliveryToMailbox | Используется при доставке сообщений напрямую в почтовый ящик через SMTP (например, в сценариях Edge Transport или внешних коннекторов). |
SmtpRelayToDag | Внутренняя доставка внутри DAG (Database Availability Group). Сообщения пересылаются между членами DAG для балансировки или при активации копий баз данных. |
SmtpRelayToMailboxDeliveryGroup | Используется для пересылки сообщений в группу серверов доставки почтовых ящиков (Mailbox Delivery Group). Сообщение отправляется на один из серверов группы по SMTP. |
Undefined | Тип доставки не определён. Может встречаться в промежуточных состояниях или при ошибках конфигурации. |
Дополнительные типы, встречающиеся в очередях
DeliveryType | Назначение |
---|---|
DnsConnectorDelivery | Доставка через Send Connector, у которого тип маршрутизации — DNS. Сервер сам ищет MX-записи домена получателя. |
NonSmtpGatewayDelivery | Используется для доставки в коннекторы, работающие не через SMTP (например, Foreign Connector для интеграции с приложениями). |
DeliveryAgent | Передача сообщений в сторонний агент доставки (Delivery Agent Connector). Обычно применяется для интеграции с системами защиты или сторонними шлюзами. |
Unreachable | Очередь «Unreachable» — письма, которые не удалось маршрутизировать ни в одну очередь. Обычно указывают на ошибку конфигурации коннекторов или проблемный адрес. |
Пути к логам
Очереди хранятся в файле:
C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue\mail.que
Журналы транспорта:
C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\Hub\ProtocolLog\SmtpSend C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\Hub\ProtocolLog\SmtpReceive C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpSend C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpReceive
Журналы трекинга сообщений:
C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\MessageTracking
Чтобы увидеть события для очереди типа SmtpRelayToDag в логе C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\Hub\ProtocolLog\SmtpReceive или SmtpSend необходимо
- разрешить логирование в коннеторе Default <Имя сервера> типа HUB Transport
- поднять детализацию логов до IntraOrgConnectorProtocolLoggingLevel Verbose
get-transportService <Имя сервера> |set-TransportService -IntraOrgConnectorProtocolLoggingLevel Verbose
Пошаговая диагностика очередей
1. Проверить состояние очередей
Get-Queue | ft Identity,Status,MessageCount,NextHopDomain -Auto
2. Посмотреть сообщения в проблемной очереди
Get-Message -Queue "Server\RemoteDelivery\contoso.com" | ft FromAddress,Subject,Status -Auto
3. Проверить последние ошибки доставки
Get-Message -Queue "Server\RemoteDelivery\contoso.com" | Select-Object FromAddress,Subject,LastError
4. Проверить сетевое соединение до домена
Test-SmtpConnectivity -Identity "Server"
или вручную:
telnet mail.contoso.com 25
5. Форсировать повторную попытку доставки
Retry-Queue -Identity "Server\RemoteDelivery\contoso.com" -Resubmit $true
6. Если проблема в конкретном письме — удалить его
Get-Message -Queue "Server\RemoteDelivery\contoso.com" | Remove-Message -WithNDR $true
Типичные ошибки в очередях
Код ошибки | Описание |
---|---|
`450 4.4.317 Cannot connect to remote server` | Exchange не может установить соединение с удалённым SMTP-сервером. Проверить DNS, маршрутизацию, порты. |
`450 4.4.318 Connection was closed abruptly (SuspiciousRemoteServerError)` | Удалённый сервер неожиданно закрыл соединение. Возможны проблемы на стороне получателя или фильтрация. |
`451 4.7.0 Temporary server error. Please try again later. PRX5` | Ошибка временного характера, часто связана с прокси/гибридным окружением. |
`421 4.4.2 Connection dropped` | Соединение оборвано из-за таймаута или фильтрации. |
`550 5.1.1 User unknown` | Указанный получатель не существует. |
`550 5.7.1 Unable to relay` | Отказ в пересылке: сервер не разрешает ретрансляцию писем. |
`554 5.4.4 DNS lookup failure` | Ошибка разрешения MX-записи домена получателя. |
Когда использовать
* При задержках доставки сообщений. * При ошибках связи с внешними доменами. * Для анализа «застрявших» писем. * Для тестирования и принудительной доставки.