Agentes de transporte em Exchange Server

Os agentes de transporte permitem instalar um software personalizado criado pela Microsoft, por fornecedores de terceiros ou por sua organização, em um servidor do Exchange. Esse software pode processar mensagens de email que passam pelo pipeline de transporte. Em Microsoft Exchange Server 2016 ou 2019, o pipeline de transporte é feito dos seguintes processos:

  • O serviço de transporte front-end em servidores de caixa de correio
  • O serviço de transporte em servidores de caixa de correio
  • O serviço transporte de caixa de correio em servidores de caixa de correio
  • O serviço de transporte em servidores de transporte de borda

Para obter mais informações sobre o pipeline de transporte, consulte Fluxo de email e o pipeline de transporte

O transporte exchange fornece extensibilidade por meio do SDK dos Agentes de Transporte Microsoft Exchange Server. A versão do Exchange do SDK permite que terceiros implementem as seguintes classes predefinidas:

  • SmtpReceiveAgent
  • RoteamentoAgent
  • DeliveryAgent

Quando cumpridos em relação a bibliotecas no SDK, os assemblies resultantes são registrados com o Exchange, que carrega os agentes e invoca seus manipuladores de eventos durante estágios específicos das sessões SMTP ou processamento de mensagens. Esses estágios ou eventos fazem parte das definições do agente. As informações de registro do agente são armazenadas em um arquivo de configuração XML.

A lista a seguir explica os requisitos para o uso de agentes de transporte no Exchange.

  • O serviço de transporte em servidores de caixa de correio e servidores de Transporte de Borda dá suporte total a todas as classes predefinidas no SDK.
  • O serviço de Transporte front-end só dá suporte à classe SmtpReceiveAgent no SDK e agentes de terceiros não podem operar no evento OnEndOfData SMTP.
  • O serviço de Transporte de Caixa de Correio não dá suporte ao SDK, portanto, você não pode usar agentes de terceiros no serviço de Transporte de Caixa de Correio.

Gerenciamento de agente de transporte

Os cmdlets do agente de transporte precisam distinguir entre o serviço de transporte e o serviço de transporte front-end. Os cmdlets de gerenciamento do Agente de Transporte manipulam o arquivo agents.config de configuração localizado em %ExchangeInstallPath%TransportRoles\Shared.

Para obter mais informações, consulte Gerenciar agentes de transporte em Exchange Server.

Agentes de transporte e eventos SMTP

Os agentes de transporte usam eventos SMTP. Esses eventos são acionados à medida que as mensagens são movidas através do pipeline de transporte. Os eventos SMTP fornecem aos agentes de transporte acesso a mensagens em pontos especíificos durante a conversa SMTP e durante o roteamento de mensagens em toda a organização.

O SMTP Receive existe no serviço de Transporte front-end em servidores de caixa de correio, o serviço de transporte em servidores de caixa de correio e servidores de Transporte de Borda e o serviço de Entrega de Transporte de Caixa de Correio em servidores de caixa de correio. O categorizador existe apenas no serviço de transporte em servidores de caixa de correio e servidores de Transporte de Borda. Para obter mais informações sobre os serviços de transporte e o categorizador, consulte Roteamento de email em Exchange Server.

As tabelas a seguir listam os eventos SMTP que fornecem acesso a mensagens no pipeline de transporte.

Eventos de recebimento de SMTP

Sequência Evento SMTP Descrição
1 OnConnectEvent Esse evento é disparado pela conexão inicial de um host SMTP remoto.
2 OnHeloCommand Esse evento é disparado quando o HELO comando é emitido pelo host SMTP remoto.
3 OnEhloCommand Esse evento é disparado quando o EHLO comando é emitido pelo host SMTP remoto.
4 OnStartTlsCommand Esse evento é disparado quando o STARTTLS comando é emitido pelo host SMTP remoto.
5 OnAuthCommand Esse evento é disparado quando o AUTH comando é emitido pelo host SMTP remoto.
6 OnProcessAuthentication Esse evento é disparado quando a autenticação com o host SMTP remoto está sendo processada.
7 OnEndOfAuthentication Esse evento é disparado quando o host SMTP remoto concluiu a autenticação.
8 OnXSessionParamsCommand Esse evento é disparado quando o XSESSIONPARAMS comando é emitido pelo host SMTP remoto.
9 OnMailCommand Esse evento é disparado quando o MAIL FROM comando é emitido pelo host SMTP remoto.
10 OnRcptToCommand Esse evento é disparado quando o RCPT TO comando é emitido pelo host SMTP remoto.
11 OnDataCommand Esse evento é disparado quando o DATA comando (texto) ou BDAT (dados binários) é emitido pelo host SMTP remoto.
12 OnEndOfHeaders Esse evento é disparado quando o host SMTP remoto é concluído enviando os cabeçalhos de mensagem de email. Isso é indicado por uma linha em branco (<CRLF>) que separa os cabeçalhos da mensagem e o corpo da mensagem.
13 OnProxyInboundMessage Esse evento é disparado quando uma sessão SMTP de entrada é retransmitida ou proxieda pelo serviço de Transporte front-end para o serviço de transporte em um servidor de caixa de correio.
14 Onendofdata Esse evento é disparado quando o host SMTP remoto emite um comando de fim de dados:
  • Para sessões de texto iniciadas pelo DATA comando, o indicador de fim de dados é <CRLF>.<CRLF>.
  • Para sessões binárias iniciadas pelo BDAT comando, o indicador de fim de dados é BDAT LAST.
** OnHelpCommand Esse evento será disparado se o HELP comando for emitido pelo host SMTP remoto.
** OnNoopCommand Esse evento será disparado se o NOOP comando for emitido pelo host SMTP remoto.
** OnReject Esse evento será disparado se o host SMTP receber emitir uma notificação de status de entrega temporária ou permanente (também conhecida como DSN, relatório de não entrega, NDR ou mensagem de salto) para o host SMTP de envio.
** OnRsetCommand Esse evento será disparado se o RSET comando for emitido pelo host SMTP de envio.
15 OnDisconnectEvent Esse evento é disparado pela desconexão da conversa SMTP pelo host de recebimento ou envio de SMTP. Normalmente, isso acontece quando o QUIT comando é emitido pelo host SMTP remoto.

** Esses eventos podem ocorrer a qualquer momento após OnConnectEvent , mas antes de OnDisconnectEvent.

Eventos do categorizador

Sequência Evento categorizador Descrição
1 OnSubmittedMessage Esse evento é disparado quando uma mensagem chega na fila De envio no serviço de transporte no servidor do Exchange que recebe.
2 OnResolvedMessage Esse evento é disparado depois que todos os destinatários foram resolvidos, mas antes que o próximo salto tenha sido determinado para cada destinatário. O evento de roteamento OnResolvedMessage permite que os eventos subsequentes substituam o comportamento de roteamento padrão usando o método SetRoutingOverride por destinatário.
3 OnRoutedMessage Esse evento é disparado depois que as mensagens foram categorizadas, as listas de distribuição foram expandidas e os destinatários foram resolvidos.
4 OnCategorizedMessage Esse evento é disparado quando o categorizador conclui o processamento da mensagem.

Prioridade dos agentes de transporte

Dois fatores determinam a ordem para que os agentes de transporte atuem em mensagens no pipeline de transporte:

  1. O evento SMTP em que o agente de transporte é registrado e quando esse evento SMTP encontra mensagens.
  2. O valor de prioridade atribuído ao agente de transporte se houver vários agentes registrados no mesmo evento SMTP. A prioridade mais alta é 1. Um valor inteiro mais alto indica uma prioridade de agente mais baixa.

Por exemplo, suponha que você tenha configurado os seguintes agentes de transporte:

  • O Agente de Transporte A com prioridade 1 e o Agente de Transporte C com prioridade 2 são registrados no evento SMTP OnEndOfHeaders.
  • O Agente de Transporte B com prioridade 4 está registrado para o evento SMTP OnMailCommand.

O Agente de Transporte B é aplicado primeiro às mensagens porque o evento OnMailCommand encontra mensagens antes do evento OnEndOfHeaders . Quando as mensagens atingem o evento OnEndOfHeaders, o Agente de Transporte A é aplicado antes do Agente de Transporte C porque o Agente de Transporte A tem uma prioridade mais alta (valor inteiro mais baixo) do que o Agente de Transporte C.

Agentes de transporte internos

Exchange Server inclui muitos agentes de transporte internos que fornecem recursos como anti-spam, regras de transporte e diários. A maioria dos agentes de transporte internos nos servidores de Caixa de Correio do Exchange é invisível e não gerenciada pelos cmdlets de gerenciamento do agente de transporte. Praticamente todos os agentes de transporte internos visíveis e gerenciáveis estão no serviço de transporte em servidores de caixa de correio e servidores de Transporte de Borda.

Os agentes de transporte internos mais interessantes em servidores de caixa de correio são descritos na tabela a seguir. Observe que esta tabela não inclui muitos dos agentes de transporte invisíveis e incontroláveis.

Agentes de transporte internos interessantes em servidores de caixa de correio

Nome do Agente Gerenciável? Prioridade Eventos SMTP ou categorizador
Agente de Regra de Transporte Sim 1 OnResolvedMessage
Agente de Política DLP Sim 2 OnResolvedMessage
Agente de Política de Retenção Sim 3 OnResolvedMessage
Agente de Revisão de Supervisão Sim 4 OnResolvedMessage
Agente malware Sim 5 OnSubmittedMessage
Agente de Roteamento de Mensagens de Texto Sim 6 OnSubmittedMessage
Agente de Entrega de Mensagens de Texto Sim 7 n/d
System Probe Drop Smtp Agent Sim 8 OnEndOfHeaders
Agente de roteamento de queda de investigação do sistema Sim 9 OnCategorizedMessage
Agente de Diário Não Não configurável OnRoutedMessage
Agente de Descriptografia do Relatório diário Não Não configurável OnCategorizedMessage
Agente de Descriptografia do RMS Não Não configurável OnSubmittedMessage
Agente de Criptografia RMS Não Não configurável OnSubmittedMessage

OnRoutedMessage

Agente de Descriptografia de Protocolo RMS Não Não configurável Onendofdata

Agentes de transporte internos interessantes em servidores de transporte do Edge

Em servidores de Transporte de Borda, a maioria dos agentes de transporte internos é visível e gerenciável pelos cmdlets de gerenciamento do agente de transporte ou por outros cmdlets específicos do recurso.

Os agentes de transporte internos mais interessantes nos servidores do Edge Transport são descritos na tabela a seguir. Observe que esta tabela não inclui agentes de transporte invisíveis ou incontroláveis.

Nome do Agente Gerenciável? Prioridade Eventos SMTP ou categorizador
Agente de Filtragem de Conexões Sim 1 OnConnectEvent

OnMailCommand

OnRcptCommand

OnEndOfHeaders

Agente de Entrada de Reescrita de Endereço Sim 2 OnRcptCommand

OnEndOfHeaders

Agente de Regra de Borda Sim 3 Onendofdata
Agente de Filtro de Conteúdo* Sim 4 Onendofdata
Agente de ID do Remetente* Sim 5 OnEndOfHeaders
Agente de Filtro do Remetente* Sim 6 OnMailCommand

OnEndOfHeaders

Agente de Filtro do Destinatário Sim 7 OnRcptCommand
Agente de Análise de Protocolo* Sim 8 OnConnectEvent

OnEndOfHeaders

Onendofdata

OnReject

OnRsetCommand

OnDisconnectEvent

Agente de Filtragem de Anexo Sim 9 Onendofdata
Agente de Saída de Reescrita de Endereço Sim 10 OnSubmittedMessage

OnRoutedMessage

* Você também pode instalar e configurar esses agentes anti-spam em servidores de caixa de correio. Para saber mais, confira Habilitar a funcionalidade antispam em servidores Caixa de Correio.

Solucionar problemas de agentes de transporte

Para ajudá-lo a solucionar problemas com agentes de transporte, você pode usar os seguintes recursos:

  • Get-TransportPipeline: este cmdlet mostra os eventos SMTP e os agentes de transporte correspondentes que encontram mensagens no servidor exchange. Para obter mais informações, consulte Exibir agentes de transporte no pipeline de transporte no Exchange Server.

  • Rastreamento de pipeline: o rastreamento de pipeline cria um instantâneo exato de uma mensagem antes e depois de encontrar cada agente de transporte. Isso permite encontrar um agente de transporte que esteja causando resultados inesperados. Para obter mais informações, consulte Rastreamento de pipeline.