Содержание

Работа с очередями в Exchange Server

Очереди в Exchange Server используются для временного хранения сообщений, которые ещё не доставлены. Администратору важно уметь контролировать их состояние, диагностировать проблемы и очищать очереди при необходимости.

Основные инструменты

Основные команды 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"`

Типы очередей

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 необходимо

  1. разрешить логирование в коннеторе Default <Имя сервера> типа HUB Transport
  2. поднять детализацию логов до 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-записи домена получателя.

Когда использовать

* При задержках доставки сообщений. * При ошибках связи с внешними доменами. * Для анализа «застрявших» писем. * Для тестирования и принудительной доставки.