Агенты транспорта в Exchange Server

Агенты транспорта позволяют установить пользовательское программное обеспечение, созданное корпорацией Майкрософт, сторонними поставщиками или специалистами вашей организации, на сервер Exchange. Это программное обеспечение может обрабатывать сообщения электронной почты, которые проходят через транспортный конвейер. В Microsoft Exchange Server 2016 или 2019 г. транспортный конвейер состоит из следующих процессов:

  • Транспортная служба переднего плана на серверах почтовых ящиков
  • транспортная служба на серверах почтовых ящиков;
  • транспортная служба почтовых ящиков на серверах почтовых ящиков;
  • транспортная служба на пограничных транспортных серверах.

Дополнительные сведения о транспортном конвейере см. в разделе Поток обработки почты и конвейер транспорта.

Транспорт Exchange обеспечивает расширяемость с помощью пакета SDK Microsoft Exchange Server транспортных агентов. Версия пакета SDK для Exchange позволяет сторонним организациям реализовать следующие предопределенные классы:

  • SmtpReceiveAgent
  • RoutingAgent
  • DeliveryAgent

При соблюдении требований к библиотекам в пакете SDK результирующие сборки регистрируются в Exchange, который загружает агенты и вызывает их обработчики событий на определенных этапах сеансов SMTP или обработки сообщений. Эти стадии, или события, являются частью определений агентов. Регистрационные данные агента хранятся в файле конфигурации XML.

В следующем списке описаны требования к использованию агентов транспорта в Exchange.

  • Транспортная служба на серверах почтовых ящиков и пограничных транспортных серверах полностью поддерживает все предопределенные классы в пакете SDK.
  • Служба внешнего транспорта поддерживает только класс SmtpReceiveAgent в пакете SDK, а сторонние агенты не могут работать с событием SMTP OnEndOfData .
  • Транспортная служба почтовых ящиков вообще не поддерживает пакет SDK, поэтому в транспортной службе почтовых ящиков нельзя использовать сторонние агенты.

Управление агентом транспорта

Командлеты агента транспорта должны различать транспортную службу и транспортную службу переднего плана. Командлеты управления агентом транспорта управляют файлом agents.config конфигурации, расположенным по адресу %ExchangeInstallPath%TransportRoles\Shared.

Дополнительные сведения см. в статье Управление агентами транспорта в Exchange Server.

Агенты транспорта и события SMTP

Агенты транспорта используют события SMTP. Такие события возникают при передаче сообщений через транспортный конвейер. События SMTP предоставляют агентам транспорта доступ к сообщениям в особых точках в процессе сеансов связи SMTP и при маршрутизации сообщений через организацию.

Получение SMTP существует в службе внешнего транспорта на серверах почтовых ящиков, транспортной службе на серверах почтовых ящиков и пограничных транспортных серверах, а также в службе доставки транспорта почтовых ящиков на серверах почтовых ящиков. Классификатор существует только в транспортной службе на серверах почтовых ящиков и пограничных транспортных серверах. Дополнительные сведения о транспортных службах и классификаторе см. в статье Маршрутизация почты в Exchange Server.

В следующих таблицах приведены события SMTP, предоставляющие доступ к сообщениям в конвейере транспорта.

События приема SMTP

Sequence событие SMTP Описание
1 OnConnectEvent Это событие инициируется первоначальным подключением удаленного узла SMTP.
2 OnHeloCommand Это событие активируется при выполнении HELO команды удаленным узлом SMTP.
3 OnEhloCommand Это событие активируется при выполнении EHLO команды удаленным узлом SMTP.
4 OnStartTlsCommand Это событие активируется при выполнении STARTTLS команды удаленным узлом SMTP.
5 OnAuthCommand Это событие активируется при выполнении AUTH команды удаленным узлом SMTP.
6 OnProcessAuthentication Это событие инициируется, когда выполняется обработка проверки подлинности с помощью удаленного узла SMTP.
7 OnEndOfAuthentication Это событие инициируется, когда удаленный узел SMTP завершил проверку подлинности.
8 OnXSessionParamsCommand Это событие активируется при выполнении XSESSIONPARAMS команды удаленным узлом SMTP.
9 OnMailCommand Это событие активируется при выполнении MAIL FROM команды удаленным узлом SMTP.
10 OnRcptToCommand Это событие активируется при выполнении RCPT TO команды удаленным узлом SMTP.
11 OnDataCommand Это событие активируется, когда удаленный DATA узел SMTP выдает команду (text) или BDAT (двоичные данные).
12 OnEndOfHeaders Это событие инициируется, когда удаленный узел SMTP завершает передачу заголовков сообщений электронной почты. На это указывает пустая строка (<CRLF>), разделяющая заголовки сообщения и текст сообщения.
13 OnProxyInboundMessage Это событие активируется при ретрансляции входящего сеанса SMTP или передачи прокси-сервера службой внешнего транспорта в транспортную службу на сервере почтовых ящиков.
14 OnEndOfData Это событие активируется, когда удаленный узел SMTP выдает команду конца данных:
  • Для текстовых сеансов, запускаемых командой DATA , конец индикатора данных — <CRLF>.<CRLF>.
  • Для двоичных сеансов, запускаемых командой BDAT , конец индикатора данных — BDAT LAST.
** OnHelpCommand Это событие активируется, HELP если команда выдана удаленным узлом SMTP.
** OnNoopCommand Это событие активируется, NOOP если команда выдана удаленным узлом SMTP.
** OnReject Это событие активируется, если получающий узел SMTP выдает временное или постоянное уведомление о состоянии доставки (также известное как DSN, отчет о недоставке, NDR или сообщение о отказе) на отправляющий узел SMTP.
** OnRsetCommand Это событие активируется, RSET если команда выдана отправляемым узлом SMTP.
15 OnDisconnectEvent Это событие инициируется при прекращении сеанса связи SMTP узлом-отправителем или узлом-получателем SMTP. Как правило, это происходит, когда QUIT команда выполняется удаленным узлом SMTP.

** Эти события могут возникать в любое время между событиями OnConnectEvent и OnDisconnectEvent.

Классификатор событий

Sequence Событие классификатора Описание
1 OnSubmittedMessage Это событие активируется при поступлении сообщения в очередь отправки в транспортной службе на принимающем сервере Exchange Server.
2 OnResolvedMessage Это событие возникает после разрешения всех получателей, но до определения следующего перехода для каждого получателя. Событие маршрутизации OnResolvedMessage позволяет последующим событиям переопределять способ маршрутизации по умолчанию с помощью метода SetRoutingOverride, выполняемого для отдельных получателей.
3 OnRoutedMessage Это событие инициируется после завершения классификации сообщений, расширения списков рассылки и разрешения получателей.
4 OnCategorizedMessage Это событие инициируется, когда классификатор завершает обработку сообщения.

Приоритет агентов транспорта

Два фактора определяют порядок действий агентов транспорта с сообщениями в конвейере транспорта:

  1. Событие SMTP, в котором зарегистрирован агент транспорта, и момент, когда такое событие SMTP обнаруживает сообщения.
  2. Значение приоритета, назначенное агенту транспорта, если в одном событии SMTP зарегистрировано несколько агентов. Самый высокий приоритет — 1. Чем больше значение, тем ниже приоритет агента.

Например, предположим, что настроены следующие агенты транспорта:

  • В событии SMTP OnEndOfHeaders зарегистрированы агент транспорта А с приоритетом 1 и агент транспорта В с приоритетом 2.
  • В событии SMTP OnMailCommand зарегистрирован агент транспорта Б с приоритетом 4.

Сначала к сообщениям применяется агент транспорта Б, так как событие OnMailCommand обнаруживает сообщения раньше, чем событие OnEndOfHeaders. Когда сообщения достигают события OnEndOfHeaders, сначала применяется агент транспорта А, а затем — В, так как у первого из них приоритет выше (целое значение меньше).

Встроенные агенты транспорта

Exchange Server включает множество встроенных агентов транспорта, которые предоставляют такие функции, как защита от нежелательной почты, правила транспорта и ведение журнала. Большинство встроенных агентов транспорта на серверах почтовых ящиков Exchange недоступны командлетам управления агентами транспорта и не могут контролироваться с их помощью. Практически все встроенные агенты транспорта, которые являются видимыми и управляемыми, находятся в транспортной службе на серверах почтовых ящиков и пограничных транспортных серверах.

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

Интересные встроенные агенты транспорта на серверах почтовых ящиков

Имя агента Управляемость Приоритет События SMTP или классификатора
Агент правил транспорта Да 1 OnResolvedMessage
Агент политики защиты от потери данных Да 2 OnResolvedMessage
Агент политики хранения Да 3 OnResolvedMessage
Агент надзорной проверки Да 4 OnResolvedMessage
Агент защиты от вредоносных программ Да 5 OnSubmittedMessage
Агент маршрутизации обмена текстовыми сообщениями Да 6 OnSubmittedMessage
Агент доставки обмена текстовыми сообщениями Да 7 н/д
Агент SMTP для удаления пробы системы Да 8 OnEndOfHeaders
Агент маршрутизации удаления пробы системы Да 9 OnCategorizedMessage
Агент ведения журнала Нет Не настраивается OnRoutedMessage
Агент расшифровки отчетов журнала Нет Не настраивается OnCategorizedMessage
Агент расшифровки RMS Нет Не настраивается OnSubmittedMessage
Агент шифрования RMS Нет Не настраивается OnSubmittedMessage

OnRoutedMessage

Агент расшифровки протокола RMS Нет Не настраивается OnEndOfData

Интересные встроенные агенты транспорта на пограничных транспортных серверах

На пограничных транспортных серверах большинство встроенных агентов транспорта доступны для командлетов агентов транспорта и других командлетов и могут контролироваться с их помощью.

Другие интересные встроенные агенты транспорта на пограничных транспортных серверах описаны в таблице ниже. Обратите внимание, что в таблицу не включены невидимые агенты транспорта, которыми невозможно управлять.

Имя агента Управляемость Приоритет События SMTP или классификатора
Агент фильтрации подключений Да 1 OnConnectEvent

OnMailCommand

OnRcptCommand

OnEndOfHeaders

Агент переопределения адресов входящих сообщений Да 2 OnRcptCommand

OnEndOfHeaders

Агент пограничных правил Да 3 OnEndOfData
Агент фильтра содержимого* Да 4 OnEndOfData
Агент идентификации отправителей* Да 5 OnEndOfHeaders
Агент фильтра отправителей* Да 6 OnMailCommand

OnEndOfHeaders

Агент фильтра получателей Да 7 OnRcptCommand
Агент анализа протоколов* Да 8 OnConnectEvent

OnEndOfHeaders

OnEndOfData

OnReject

OnRsetCommand

OnDisconnectEvent

Агент фильтрации вложений Да 9 OnEndOfData
Агент переопределения адресов исходящих сообщений Да 10 OnSubmittedMessage

OnRoutedMessage

* Вы также можете установить и настроить эти агенты защиты от нежелательной почты на серверах почтовых ящиков. Дополнительные сведения см. в разделе Включение функций защиты от нежелательной почты на серверах почтовых ящиков.

Устранение неполадок агентов транспорта

Устранить неполадки агентов транспорта можно с помощью следующих функций:

  • Get-TransportPipeline: этот командлет показывает события SMTP и соответствующие агенты транспорта, которые сталкиваются с сообщениями на сервере Exchange Server. Дополнительные сведения см. в разделе Просмотр агентов транспорта в конвейере транспорта в Exchange Server.

  • Трассировка конвейера. Трассировка конвейера создает точный моментальный снимок сообщения до и после обнаружения каждого агента транспорта. Это позволяет обнаружить агент транспорта, который приводит к неожиданным результатам. Дополнительные сведения см. в разделе Трассировка конвейера.