Агенты транспорта
Область действия: Exchange Server 2013
Агенты транспорта позволяют установить пользовательское программное обеспечение, созданное корпорацией Майкрософт, сторонними поставщиками или специалистами вашей организации, на сервер Exchange. Это программное обеспечение может обрабатывать сообщения электронной почты, которые проходят через транспортный конвейер. В Microsoft Exchange Server 2013 транспортный конвейер состоит из следующих процессов:
интерфейсная транспортная служба на серверах клиентского доступа;
транспортная служба на серверах почтовых ящиков;
транспортная служба почтовых ящиков на серверах почтовых ящиков;
транспортная служба на пограничных транспортных серверах.
Дополнительные сведения о транспортном конвейере см. в разделе Поток обработки почты.
Как и в предыдущих версиях Exchange, транспорт Exchange 2013 обеспечивает расширяемость посредством агентов транспорта пакета SDK Microsoft Exchange Server 2013. Версия пакета SDK для Exchange 2013 основана на Microsoft платформа .NET Framework версии 4.0 и позволяет третьим лицам реализовать следующие предопределенные классы:
SmtpReceiveAgent
RoutingAgent
DeliveryAgent
После подчинения библиотекам в SDK получившиеся сборки регистрируются в Exchange 2013, который загружает агентов и вызывает обработчиков событий во время определенных стадий SMTP сессий или обработки сообщений. Эти стадии, или события, являются частью определений агентов. Регистрационные данные агента хранятся в файле конфигурации XML.
В следующем списке описываются требования для использования агентов транспорта в Exchange 2013.
Служба транспорта на серверах почтовых ящиков и пограничных транспортных серверах полностью поддерживает все предопределенные классы в пакете SDK, поэтому любые сторонние транспортные агенты, написанные для ролей центрального транспортного или пограничного транспортного сервера в Microsoft Exchange Server 2010, должны работать в транспортной службе в Exchange 2013.
Служба транспорта переднего плана поддерживает только класс SmtpReceiveAgent в пакете SDK, а сторонние агенты не могут работать с событием SMTP OnEndOfData .
Служба транспорта почтовых ящиков не поддерживает пакет SDK, поэтому вы не можете использовать сторонние агенты в службе транспорта почтовых ящиков.
Поддержка устаревших агентов транспорта на основе версии .NET Framework до версии 4.0 не включена по умолчанию, но ее можно включить. Дополнительные сведения см. в разделе Включение поддержки устаревших агентов транспорта.
Обновления для службы управления агентами транспорта
В связи с обновлениями для транспортного конвейера Exchange 2013 командлеты агента транспорта должны различать службу транспорта и службу транспорта переднего плана, особенно если сервер клиентского доступа и сервер почтовых ящиков установлены на одном компьютере. Дополнительные сведения см. в разделе Управление агентами транспорта.
Командлеты управления агентом транспорта обрабатывают файл конфигурации, расположенный по адресу %ExchangeInstallPath%TransportRoles\Shared
. Для транспортной службы на серверах почтовых ящиков и пограничных транспортных серверах файл имеет следующий формат agents.config
. Для службы транспорта переднего плана на серверах клиентского доступа файл имеет значение .fetagents.config
Оба файла используют тот же формат, что и в Exchange 2010. Дополнительные сведения об управлении транспортными агентами см. в разделе "Управление агентами транспорта".
Агенты транспорта и события SMTP
Агенты транспорта используют события SMTP. Такие события возникают при передаче сообщений через транспортный конвейер. События SMTP предоставляют агентам транспорта доступ к сообщениям в особых точках в процессе сеансов связи SMTP и при маршрутизации сообщений через организацию.
Обратите внимание, что в Exchange 2013 появились новые события получения SMTP. Они существуют в интерфейсной транспортной службе на серверах клиентского доступа, транспортной службе на серверах почтовых ящиков и пограничных транспортных серверах, а также в транспортной службе для доставки почты в почтовый ящик на серверах почтовых ящиков. Классификатор существует только в транспортной службе на серверах почтовых ящиков и пограничных транспортных серверах. Дополнительные сведения о транспортных службах и классификаторе см. в разделе Маршрутизация почты.
В следующих таблицах приведены события 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 команды (text) BDAT или (binary data) удаленным узлом SMTP. |
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) узлу-отправителю SMTP. |
** | OnRsetCommand | Это событие активируется, если команда RSET выдана отправляющему узлу SMTP. |
15 | OnDisconnectEvent | Это событие инициируется при прекращении сеанса связи SMTP узлом-отправителем или узлом-получателем SMTP. Как правило, это происходит, когда команда QUIT выдана удаленным узлом SMTP. |
** Эти события могут возникать в любое время между событиями OnConnectEvent и OnDisconnectEvent.
Классификатор событий
Sequence | событие SMTP | Описание |
---|---|---|
1 | OnSubmittedMessage | Это событие инициируется, когда сообщение попадает в очередь передачи в службе транспорта на принимающем сервере почтовых ящиков или пограничном транспортном сервере. |
2 | OnResolvedMessage | Это событие возникает после разрешения всех получателей, но до определения следующего перехода для каждого получателя. Событие маршрутизации OnResolvedMessage позволяет последующим событиям переопределять способ маршрутизации по умолчанию с помощью метода SetRoutingOverride, выполняемого для отдельных получателей. |
3 | OnRoutedMessage | Это событие инициируется после завершения классификации сообщений, расширения списков рассылки и разрешения получателей. |
4 | OnCategorizedMessage | Это событие инициируется, когда классификатор завершает обработку сообщения. |
Приоритет агентов транспорта
Порядок действия агентов транспорта на сообщения в транспортном конвейере определяют два фактора:
Событие SMTP, в котором зарегистрирован агент транспорта, и момент, когда такое событие SMTP обнаруживает сообщения.
Значение приоритета, назначенное агенту транспорта, если в одном событии SMTP зарегистрировано несколько агентов. Самый высокий приоритет 1. Чем больше значение, тем ниже приоритет агента.
Например, предположим, что настроены следующие агенты транспорта:
В событии SMTP OnEndOfHeaders зарегистрированы агент транспорта А с приоритетом 1 и агент транспорта В с приоритетом 2.
В событии SMTP OnMailCommand зарегистрирован агент транспорта Б с приоритетом 4.
Сначала к сообщениям применяется агент транспорта Б, так как событие OnMailCommand обнаруживает сообщения раньше, чем событие OnEndOfHeaders. Когда сообщения достигают события OnEndOfHeaders, сначала применяется агент транспорта А, а затем В, так как у первого из них приоритет выше (целое значение меньше).
Встроенные агенты транспорта
Exchange 2013 включает множество встроенных агентов транспорта, которые обеспечивают такие функции, как защита от нежелательной почты, правила транспорта и ведение журнала. Большинство встроенных агентов транспорта на серверах почтовых ящиков и серверах клиентского доступа Exchange 2013 недоступны командлетам управления агентами транспорта и не могут контролироваться с их помощью. Практически все видимые и управляемые встроенные агенты транспорта находятся в транспортной службе на серверах почтовых ящиков и пограничных транспортных серверах.
Более интересные встроенные агенты транспорта на серверах почтовых ящиков описаны в таблице ниже. Обратите внимание, что в таблицу не включены многие невидимые агенты транспорта, которыми невозможно управлять.
Интересные встроенные агенты транспорта на серверах почтовых ящиков
Имя агента | Управляемость | Приоритет | События SMTP или классификатора |
---|---|---|---|
Агент правил транспорта | Да | 1 | OnResolvedMessage |
Агент защиты от вредоносных программ | Да | 2 | OnSubmittedMessage |
Агент маршрутизации обмена текстовыми сообщениями | Да | 3 | OnSubmittedMessage |
Агент доставки обмена текстовыми сообщениями | Да | 4 | Недоступно |
Агент ведения журнала | Нет | Не настраивается | OnRoutedMessage |
Агент расшифровки отчетов журнала | Нет | Не настраивается | OnCategorizedMessage |
Агент расшифровки RMS | Нет | Не настраивается | OnSubmittedMessage |
Агент шифрования RMS | Нет | Не настраивается | OnSubmittedMessage OnRoutedMessage |
Агент расшифровки протокола RMS | Нет | Не настраивается | OnEndOfData |
На пограничных транспортных серверах большинство встроенных агентов транспорта доступны для командлетов агентов транспорта и других командлетов и могут контролироваться с их помощью.
Другие интересные встроенные агенты транспорта на пограничных транспортных серверах описаны в таблице ниже. Обратите внимание, что в таблицу не включены невидимые агенты транспорта, которыми невозможно управлять.
Интересные встроенные агенты транспорта на пограничных транспортных серверах
Имя агента | Управляемость | Приоритет | События SMTP или классификатора |
---|---|---|---|
Агент фильтрации подключений | Да | 1 | OnConnectEvent OnMailCommand OnRcptComand OnEndOfHeaders |
Агент переопределения адресов входящих сообщений | Да | 2 | OnRcptComand 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. Дополнительные сведения см . в разделе "Просмотр транспортных агентов в конвейере транспорта".
Трассировка конвейера. Трассировка конвейера создает точный моментальный снимок сообщения до и после обнаружения каждого транспортного агента. Это позволяет обнаружить агент транспорта, который приводит к неожиданным результатам. Дополнительные сведения см. в разделе "Трассировка конвейера".