Agentes de transporte en Exchange Server

Los agentes de transporte permiten instalar software personalizado creado por Microsoft, por otros proveedores o por una organización en un servidor Exchange. A continuación, el software procesa los mensajes de correo electrónico que pasan por la canalización de transporte. En Microsoft Exchange Server 2016 o 2019, la canalización de transporte se realiza de los siguientes procesos:

  • El servicio de transporte front-end en servidores de buzones
  • Servicio de transporte en servidores de buzones de correo
  • Servicio de transporte de buzones en servidores de buzones de correo
  • Servicio de transporte en servidores de transporte perimetral

Para obtener más información sobre la canalización de transporte, vea Flujo de correo y la canalización de transporte.

El transporte de Exchange proporciona extensibilidad a través del SDK de agentes de transporte de Microsoft Exchange Server. La versión de Exchange del SDK permite a terceros implementar las siguientes clases predefinidas:

  • SmtpReceiveAgent
  • RoutingAgent
  • DeliveryAgent

Cuando se cumplen con las bibliotecas del SDK, los ensamblados resultantes se registran con Exchange, que carga los agentes e invoca sus controladores de eventos durante fases específicas de las sesiones SMTP o el procesamiento de mensajes. Estas etapas o eventos forman parte de las definiciones de agentes. La información del registro de agentes se almacena en un archivo de configuración XML.

En la lista siguiente se explican los requisitos para usar agentes de transporte en Exchange.

  • El servicio de transporte en los servidores de buzones de correo y los servidores de transporte perimetral admite completamente todas las clases predefinidas en el SDK.
  • El servicio de transporte front-end solo admite la clase SmtpReceiveAgent en el SDK y los agentes de terceros no pueden funcionar en el evento SMTP OnEndOfData .
  • El servicio de transporte de buzones no admite el SDK en absoluto, por lo que no puede usar ningún agente de terceros en el servicio de transporte de buzones.

Administración del agente de transporte

Los cmdlets del agente de transporte deben distinguir entre el servicio de transporte y el servicio de transporte front-end. Los cmdlets de administración del Agente de transporte manipulan el archivo agents.config de configuración ubicado en %ExchangeInstallPath%TransportRoles\Shared.

Para obtener más información, consulte Administración de agentes de transporte en Exchange Server.

Agentes de transporte y eventos SMTP

Los agentes de transporte utilizan eventos SMTP. Estos eventos se desencadenan a medida que los mensajes se desplazan por el canal de transporte. Los eventos SMTP dan a los agentes de transporte acceso a los mensajes en puntos específicos durante la conversación SMTP y durante el enrutamiento de los mensajes por la organización.

La recepción SMTP existe en el servicio de transporte front-end en los servidores de buzones de correo, el servicio de transporte en los servidores de buzones y los servidores de transporte perimetral y el servicio de entrega de transporte de buzones en los servidores de buzones. El categorizador existe solo en el servicio de transporte en servidores de buzones de correo y servidores de transporte perimetral. Para obtener más información sobre los servicios de transporte y el categorizador, vea Enrutamiento de correo en Exchange Server.

La tabla siguiente incluye los eventos SMTP que proporcionan acceso a los mensajes en la canalización de transporte.

Eventos de recepción SMTP

Secuencia Evento SMTP Descripción
1 OnConnectEvent La conexión inicial desencadena este evento desde un host SMTP remoto.
2 OnHeloCommand Este evento se desencadena cuando el host SMTP remoto emite el HELO comando.
3 OnEhloCommand Este evento se desencadena cuando el host SMTP remoto emite el EHLO comando.
4 OnStartTlsCommand Este evento se desencadena cuando el host SMTP remoto emite el STARTTLS comando.
5 OnAuthCommand Este evento se desencadena cuando el host SMTP remoto emite el AUTH comando.
6 OnProcessAuthentication Este evento se desencadena cuando se procesa la autenticación con el host SMTP remoto.
7 OnEndOfAuthentication Este evento se desencadena cuando el host SMTP remoto ha completado la autenticación.
8 OnXSessionParamsCommand Este evento se desencadena cuando el host SMTP remoto emite el XSESSIONPARAMS comando.
9 OnMailCommand Este evento se desencadena cuando el host SMTP remoto emite el MAIL FROM comando.
10 OnRcptToCommand Este evento se desencadena cuando el host SMTP remoto emite el RCPT TO comando.
11 OnDataCommand Este evento se desencadena cuando el host SMTP remoto emite el DATA comando (texto) o BDAT (datos binarios).
12 OnEndOfHeaders Este evento se desencadena cuando el host SMTP remoto ha completado el envío de encabezados de mensajes de correo electrónico. Esto se indica mediante una línea en blanco (<CRLF>) que separa los encabezados del mensaje y el cuerpo del mensaje.
13 OnProxyInboundMessage Este evento se desencadena cuando el servicio de transporte front-end retransmite o proxy una sesión SMTP entrante al servicio de transporte en un servidor de buzones.
14 OnEndOfData Este evento se desencadena cuando el host SMTP remoto emite un comando de fin de datos:
  • Para las sesiones de texto iniciadas por el DATA comando, el final del indicador de datos es <CRLF>.<CRLF>.
  • Para las sesiones binarias iniciadas por el BDAT comando, el final del indicador de datos es BDAT LAST.
** OnHelpCommand Este evento se desencadena si el host SMTP remoto emite el HELP comando.
** OnNoopCommand Este evento se desencadena si el host SMTP remoto emite el NOOP comando.
** OnReject Este evento se desencadena si el host SMTP receptor emite una notificación de estado de entrega temporal o permanente (también conocida como DSN, informe de no entrega, NDR o mensaje de devolución) al host SMTP de envío.
** OnRsetCommand Este evento se desencadena si el host SMTP de envío emite el RSET comando .
15 OnDisconnectEvent Este evento se desencadena cuando el host SMTP de envío o de recepción se desconecta de la conversación SMTP. Normalmente, esto sucede cuando el host SMTP remoto emite el QUIT comando.

** Estos eventos pueden producirse en cualquier momento después de OnConnectEvent pero antes de OnDisconnectEvent.

Eventos de categorizador

Secuencia Evento de categorizador Descripción
1 OnSubmittedMessage Este evento se desencadena cuando llega un mensaje a la cola envío en el servicio de transporte en el servidor exchange receptor.
2 OnResolvedMessage Este evento se desencadena una vez que se han resuelto todos los destinatarios pero antes de que se determine el siguiente salto para cada uno de ellos. El evento de enrutamiento OnResolvedMessage permite que los eventos de enrutamiento posteriores invaliden el comportamiento de enrutamiento predeterminado mediante la utilización del método por destinatario SetRoutingOverride.
3 OnRoutedMessage Este evento se desencadena una vez que los mensajes se han categorizado, las listas de distribución se han expandido y se han resuelto los destinatarios.
4 OnCategorizedMessage Este evento se desencadena cuando el categorizador finaliza el procesamiento del mensaje.

Prioridad de los agentes de transporte

Dos factores determinan el orden en que los agentes de transporte actúan en los mensajes de la canalización de transporte:

  1. El evento SMTP en el que se registra el agente de transporte y cuando el evento SMTP encuentra mensajes.
  2. El valor de prioridad que se asigna al agente de transporte si hay varios agentes registrados en el mismo evento SMTP. La prioridad más alta es 1. Un valor entero más alto indica una prioridad de agente más baja.

Por ejemplo, supongamos que configuró los siguientes agentes de transporte:

  • El agente de transporte A con una prioridad de 1 y el agente de transporte C con una prioridad de 2 están registrados en el evento SMTP OnEndOfHeaders.
  • El agente de transporte B con una prioridad de 4 está registrado en el evento SMTP OnMailCommand.

El agente de transporte B se aplica primero a los mensajes porque el evento OnMailCommand encuentra mensajes antes del evento OnEndOfHeaders. Cuando los mensajes alcanzan el evento OnEndOfHeaders, el agente de transporte A se aplica antes del agente de transporte C porque el agente de transporte A tiene mayor prioridad (valor entero más bajo) que el agente de transporte C.

Agentes de transporte integrados

Exchange Server incluye muchos agentes de transporte integrados que proporcionan características como el correo no deseado, las reglas de transporte y el registro en diario. La mayoría de los agentes de transporte integrados en los servidores de buzones de correo de Exchange son invisibles y los cmdlets de administración de agentes de transporte no pueden administrarlos. Prácticamente todos los agentes de transporte integrados que son visibles y administrables se encuentran en el servicio de transporte en servidores de buzones y servidores de transporte perimetral.

Los agentes de transporte integrados más interesantes de los servidores de buzones de correo se describen en la tabla siguiente. Tenga en cuenta que esta tabla no incluye muchos de los agentes de transporte invisibles que no se pueden administrar.

Agentes de transporte integrados interesantes en servidores de buzones de correo

Nombre del agente ¿Fácil de administrar? Prioridad Eventos del categorizador o SMTP
Agente de regla de transporte 1 OnResolvedMessage
Agente de directiva DLP 2 OnResolvedMessage
Agente de directiva de retención Yes 3 OnResolvedMessage
Agente de revisión de supervisión Yes 4 OnResolvedMessage
Agente de malware 5 OnSubmittedMessage
Agente de enrutamiento de mensajes de texto 6 OnSubmittedMessage
Agente de entrega de mensajes de texto 7 No aplicable
Eliminación del agente smtp del sondeo del sistema 8 OnEndOfHeaders
Agente de enrutamiento de eliminación de sondeo del sistema 9 OnCategorizedMessage
Agente de registro en diario No No configurable OnRoutedMessage
Agente de descifrado de informes de diario No No configurable OnCategorizedMessage
Agente de descifrado de RMS No No configurable OnSubmittedMessage
Agente de cifrado de RMS No No configurable OnSubmittedMessage

OnRoutedMessage

Agente de descifrado de protocolo RMS No No configurable OnEndOfData

Agentes de transporte integrados interesantes en servidores de transporte perimetral

En los servidores de transporte perimetral, la mayoría de los agentes de transporte integrados son visibles y se pueden administrar mediante cmdlets de administración de agentes de transporte u otros cmdlets específicos para las funciones.

Los agentes de transporte integrados más interesantes de los servidores de transporte perimetral se describen en la tabla siguiente. Tenga en cuenta que esta tabla no incluye los agentes de transporte invisibles ni los que no se pueden administrar.

Nombre del agente ¿Fácil de administrar? Prioridad Eventos del categorizador o SMTP
Agente de filtro de conexión 1 OnConnectEvent

OnMailCommand

OnRcptCommand

OnEndOfHeaders

Agente de reescritura de direcciones entrantes 2 OnRcptCommand

OnEndOfHeaders

Agente de regla perimetral 3 OnEndOfData
Agente de filtro de contenido* 4 OnEndOfData
Agente de identificador de remitente* 5 OnEndOfHeaders
Agente de filtro de remitentes* 6 OnMailCommand

OnEndOfHeaders

Agente de filtro de destinatarios 7 OnRcptCommand
Agente de análisis de protocolo* 8 OnConnectEvent

OnEndOfHeaders

OnEndOfData

OnReject

OnRsetCommand

OnDisconnectEvent

Agente de filtro de datos adjuntos 9 OnEndOfData
Agente de reescritura de direcciones salientes 10 OnSubmittedMessage

OnRoutedMessage

* También puede instalar y configurar estos agentes contra correo no deseado en los servidores de buzones de correo. Para obtener más información, consulte Habilitar la funcionalidad contra correo electrónico no deseado en servidores de buzón.

Solución de problemas de los agentes de transporte

Como ayuda para solucionar problemas con los agentes de transporte, puede usar las siguientes funciones:

  • Get-TransportPipeline: este cmdlet muestra los eventos SMTP y los agentes de transporte correspondientes que encuentran mensajes en el servidor exchange. Para obtener más información, vea Ver agentes de transporte en la canalización de transporte en Exchange Server.

  • Seguimiento de canalizaciones: el seguimiento de canalizaciones crea una instantánea exacta de un mensaje antes y después de encontrar cada agente de transporte. Esto le permite encontrar un agente de transporte que está provocando resultados inesperados. Para más información, vea Seguimiento del canal.