Criando agentes de transporte para o Exchange 2013
Encontre informações sobre como criar agentes de transporte personalizados para o Exchange 2013 e os requisitos do sistema para criar um agente personalizado.
Aplica-se a: Exchange Server 2013
Exchange Server 2013 inclui vários agentes de transporte que você pode usar para processar mensagens. Usando os assemblies que vêm com o Exchange, você pode criar seus próprios agentes personalizados para executar tarefas específicas de acordo com as necessidades da sua organização. Por exemplo, você pode usar um agente de transporte SmtpReceiveAgent para interceptar mensagens recebidas por meio do protocolo SMTP e processar a mensagem para converter o formato do corpo para conter texto pré-configurado. Você pode usar um agente de transporte RoutingAgent para registrar as mensagens que passam pelo servidor na rota para outro servidor. Você também pode criar recursos mais complexos que usam mais de um tipo de agente. Por exemplo, para criar um agente antivírus, você pode implementar um SmtpReceiveAgent e um agente RoutingAgent. Se você tiver um componente em sua rede que não dê suporte ao protocolo SMTP, poderá usar um agente de transporte DeliveryAgent para lidar com a comunicação entre o servidor exchange e seu componente externo.
Este artigo fornece informações sobre os pré-requisitos para e tarefas envolvidas na criação do seu próprio agente de transporte. Para obter informações sobre como criar agentes de transporte específicos, consulte Criar um agente de transporte RoutingAgent para o Exchange 2013, Criar um agente de transporte SmtpReceiveAgent para o Exchange 2013 e Criar um agente de transporte DeliveryAgent para o Exchange 2013.
Pré-requisitos para criar um agente de transporte
A seguir estão os pré-requisitos necessários para implementar um agente de transporte:
Um computador que executa o Exchange 2013 que está executando o serviço de Transporte front-end em um servidor de acesso ao cliente ou transporte de borda ou o serviço de transporte em um servidor de caixa de correio. Para obter informações sobre a arquitetura de função do servidor no Exchange 2013, confira Conceitos de agente de transporte no Exchange 2013.
Os seguintes assemblies para as classes do agente de transporte:
- Microsoft.Exchange.Data.dll
- Microsoft.Exchange.Data.Common.dll
- Microsoft.Exchange.Transport.dll
O .NET Framework 4.5
Também recomendamos que você instale o Visual Studio 2012. Você pode implementar agentes de transporte usando o Visual Basic .NET ou c#.
Referenciando os assemblies
O Exchange 2013 fornece uma biblioteca de classes que dão suporte à extensão do comportamento de transporte do Exchange. Essas classes exigem o .NET Framework 4.5. Você pode implementar agentes de transporte com base nessas classes usando o Visual Studio 2012.
O instalador do Exchange 2013 instala assemblies que são usados para o desenvolvimento do agente de transporte e os registra no GAC (cache de assembly global). Para começar a implementar um agente de transporte, crie uma referência ao assembly Microsoft.Exchange.Data.Transport em um projeto de biblioteca de classes.
Implementando um agente de transporte
O exemplo a seguir mostra uma implementação mínima de classes que derivam das classes SmtpReceiveAgentFactory e SmtpReceiveAgent .
Cuidado
Se vários agentes de transporte estiverem instalados e registrados para o mesmo evento, todos os agentes serão invocados, mesmo que um agente remova todos os destinatários de um item de email. > Para evitar erros não tratados ou comportamento imprevisível, seu agente de transporte deve lidar com casos em que a contagem de destinatários em um item de email é igual a zero.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Exchange.Data.Transport;
using Microsoft.Exchange.Data.Transport.Smtp;
namespace MyAgents
{
public sealed class MyAgentFactory : SmtpReceiveAgentFactory
{
public override SmtpReceiveAgent CreateAgent(SmtpServer server)
{
return new MyAgent();
}
}
public class MyAgent : SmtpReceiveAgent
{
public MyAgent()
{
this.OnEndOfData += new EndOfDataEventHandler(MyEndOfDataHandler);
}
private void MyEndOfDataHandler (ReceiveMessageEventSource source, EndOfDataEventArgs e)
{
// The following line appends text to the subject of the message that caused the event.
e.MailItem.Message.Subject += " - this text appended by MyAgent";
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.Exchange.Data.Transport
Imports Microsoft.Exchange.Data.Transport.Smtp
Namespace MyAgents
NotInheritable Class MyAgentFactory
Inherits SmtpReceiveAgentFactory
Public Overrides Function CreateAgent(ByVal server as SmtpServer) As SmtpReceiveAgent
Return New MyAgent
End Function
End Class
Public Class MyAgent
Inherits SmtpReceiveAgent
Private Sub MyEndOfDataHandler(ByVal source As ReceiveMessageEventSource, ByVal e As EndOfDataEventArgs) Handles Me.OnEndOfData
' The following line appends text to the subject of the message that caused the event.
e.MailItem.Message.Subject &= e.MailItem.Message.Subject + " - this text appended by MyAgent"
End Sub
End Class
End Namespace
Instalando e habilitando um agente
Depois de compilar seu agente em uma DLL, você deve instalar e habilitar o agente no servidor do Exchange de desenvolvimento. No Shell de Gerenciamento do Exchange, use o cmdlet Install-TransportAgent para instalar seu agente e o cmdlet Enable-TransportAgent para habilitar seu agente. Para obter informações sobre como usar o Shell de Gerenciamento do Exchange, consulte Exchange Server PowerShell (Shell de Gerenciamento do Exchange).
Cuidado
Os agentes de transporte têm acesso total a todas as mensagens de email que encontrarem. O Exchange 2013 não restringe o comportamento de um agente de transporte. Agentes de transporte instáveis ou que contêm falhas de segurança podem afetar a estabilidade e a segurança do Exchange 2013. Portanto, você só deve instalar agentes de transporte de confiança total e que foram totalmente testados.
Quando você usa o cmdlet Install-TransportAgent para instalar um agente, o Shell de Gerenciamento do Exchange mantém um bloqueio no assembly. Para liberar o bloqueio no assembly, você deve fechar a instância do Shell de Gerenciamento do Exchange que você usou para instalar o agente. Você não poderá atualizar o assembly até liberar o bloqueio.
O exemplo a seguir mostra como usar o Shell de Gerenciamento do Exchange para instalar e habilitar um agente chamado MyAgent usando uma classe derivada de SmtpReceiveAgentFactory chamada MyAgents.MyAgentFactory.
Install-TransportAgent -Name "MyCustomAgent" -TransportAgentFactory "MyAgents.MyAgentFactory" -AssemblyPath "C:\myagents\MyAgent.dll"
Este exemplo nomeia o agente MyCustomAgent no servidor no qual o agente está instalado. O exemplo a seguir mostra como habilitar o agente chamado MyCustomAgent.
Enable-TransportAgent -Name "MyCustomAgent"
Para gerenciar um agente de transporte no serviço de transporte front-end em um servidor de Acesso ao Cliente, adicione o seguinte valor ao comando: -TransportService FrontEnd
. Por exemplo, para exibir os agentes de transporte no serviço de Transporte front-end, execute o comando a seguir.
Get-TransportAgent -TransportService FrontEnd
Para obter mais informações sobre como instalar, habilitar e gerenciar seu agente, consulte Gerenciar Agentes de Transporte.
Nesta seção
- Criar um agente de transporte RoutingAgent para o Exchange 2013
- Criar um agente de transporte SmtpReceiveAgent para o Exchange 2013
- Criar um agente de transporte DeliveryAgent para o Exchange 2013