Agentes de transporte

Aplica-se a: Exchange Server 2013

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 2013, o pipeline de transporte é feito dos seguintes processos:

  • O serviço de transporte front-end em servidores de acesso ao cliente

  • 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

Assim como a versão anterior do Exchange, o transporte do Exchange 2013 fornece extensibilidade por meio do SDK dos Agentes de Transporte Microsoft Exchange Server 2013. A versão do Exchange 2013 do SDK baseia-se no Microsoft .NET Framework versão 4.0 e permite que terceiros implementem as seguintes classes predefinidas:

  • SmtpReceiveAgent

  • RoteamentoAgent

  • DeliveryAgent

Quando cumpridos em bibliotecas no SDK, os assemblies resultantes são registrados com o Exchange 2013, 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 2013.

  • O serviço de transporte em servidores de caixa de correio e servidores de Transporte de Borda dá suporte a todas as classes predefinidas no SDK e, portanto, todos os agentes de transporte de terceiros gravados para as funções de servidor hub transporte ou transporte de borda em Microsoft Exchange Server 2010 devem funcionar no serviço de transporte no Exchange 2013.

  • 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.

O suporte para agentes de transporte herdados com base em versões do .NET Framework anteriores à versão 4.0 não está habilitado por padrão, mas você pode habilitá-lo. Para obter instruções, consulte Habilitar suporte para agentes de transporte herdados.

Atualizações ao gerenciamento de agente de transporte

Devido às atualizações do pipeline de transporte do Exchange 2013, os cmdlets do agente de transporte precisam distinguir entre o serviço de transporte e o serviço de transporte front-end, especialmente se o servidor de Acesso ao Cliente e o servidor de caixa de correio estiverem instalados no mesmo computador. Para obter mais informações, consulte Gerenciar agentes de transporte.

Os cmdlets de gerenciamento do Agente de Transporte manipulam um arquivo de configuração localizado em %ExchangeInstallPath%TransportRoles\Shared. Para o serviço de transporte em servidores de caixa de correio e servidores de Transporte de Borda, o arquivo é agents.config. Para o serviço de transporte front-end em servidores de acesso ao cliente, o arquivo é fetagents.config. Ambos os arquivos usam o mesmo formato que no Exchange 2010. Para obter mais informações sobre como gerenciar agentes de transporte, consulte Gerenciar agentes de transporte.

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.

Observe que há novos eventos de Recebimento de SMTP no Exchange 2013. O SMTP Receive existe no serviço de Transporte front-end em servidores de acesso ao cliente, no serviço de transporte em servidores de caixa de correio e servidores de Transporte de Borda e no serviço de Entrega de Transporte da 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.

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 em um servidor de acesso ao cliente 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 um código DSN (notificação de status de entrega temporária ou permanente) 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 SMTP Descrição
1 OnSubmittedMessage Esse evento é disparado quando uma mensagem chega na fila De envio no serviço de transporte no servidor de caixa de correio de recebimento ou no servidor de Transporte de Borda.
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

Há dois fatores que determinam a ordem em que os agentes de transporte atuam nas 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

O Exchange 2013 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 em servidores da Caixa de Correio do Exchange 2013 e servidores de Acesso ao Cliente são invisíveis e incontroláveis 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 em 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 malware Sim 2 OnSubmittedMessage
Agente de Roteamento de Mensagens de Texto Sim 3 OnSubmittedMessage
Agente de Entrega de Mensagens de Texto Sim 4 n/d
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

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.

Agentes de transporte internos interessantes em servidores de transporte do Edge

Nome do Agente Gerenciável? Prioridade Eventos SMTP ou categorizador
Agente de Filtragem de Conexões Sim 1 OnConnectEvent
OnMailCommand
OnRcptComand
OnEndOfHeaders
Agente de Entrada de Reescrita de Endereço Sim 2 OnRcptComand
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 anti-spam em servidores de 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, confira Exibir agentes de transporte no pipeline de transporte.

  • 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.