Creación de los agentes de transporte de Exchange 2013Creating transport agents for Exchange 2013

Obtenga información sobre cómo crear agentes de transporte personalizados para Exchange 2013 y los requisitos del sistema para la creación de un agente personalizado.Find information about how to create custom transport agents for Exchange 2013, and the system requirements for creating a custom agent.

Se aplica a: Exchange Server 2013Applies to: Exchange Server 2013

Exchange Server 2013 incluye a varios agentes de transporte que pueden utilizar para procesar los mensajes.Exchange Server 2013 includes several transport agents that you can use to process messages. Mediante el uso de los ensamblados que se incluyen con Exchange, puede crear sus propios agentes personalizados para realizar tareas específicas de acuerdo con las necesidades de su organización.By using the assemblies that come with Exchange, you can create your own custom agents to perform specific tasks according to the needs of your organization. Por ejemplo, puede usar a un agente de transporte SmtpReceiveAgent para interceptar los mensajes que se reciben mediante el protocolo SMTP y procesar el mensaje para convertir el formato del cuerpo para contener texto con formato previo.For example, you can use an SmtpReceiveAgent transport agent to intercept messages that are received via the SMTP protocol and process the message to convert the format of the body to contain preformatted text. Puede usar a un agente de transporte RoutingAgent para registrar los mensajes que pasan a través del servidor en la ruta a otro servidor.You can use a RoutingAgent transport agent to log the messages that pass through the server on route to another server. También puede crear más complejas características que hacen uso de más de un tipo de agente.You can also create more complex features that make use of more than one type of agent. Por ejemplo, para crear a un agente antivirus, puede implementar un SmtpReceiveAgent y un agente de RoutingAgent.For example, to create an antivirus agent, you can implement an SmtpReceiveAgent and a RoutingAgent agent. Si tiene un componente de la red que no es compatible con el protocolo SMTP, puede usar a un agente de transporte DeliveryAgent para controlar la comunicación entre el servidor de Exchange y su componente externo.If you have a component on your network that does not support the SMTP protocol, you can use a DeliveryAgent transport agent to handle the communication between your Exchange server and your external component.

En este artículo se proporciona información acerca de los requisitos previos para y las tareas que intervienen en la creación de su propio agente de transporte.This article provides information about the prerequisites for and tasks involved in creating your own transport agent. Para obtener información acerca de cómo crear agentes de transporte específica, vea crear un agente de transporte RoutingAgent para Exchange 2013, crear un agente de transporte SmtpReceiveAgent para Exchange 2013y crear un agente de transporte DeliveryAgent para Exchange 2013.For information about creating specific transport agents, see Create a RoutingAgent transport agent for Exchange 2013, Create an SmtpReceiveAgent transport agent for Exchange 2013, and Create a DeliveryAgent transport agent for Exchange 2013.

Requisitos previos para crear a un agente de transportePrerequisites for creating a transport agent

Los siguientes son los requisitos previos que necesita para implementar a un agente de transporte:The following are the prerequisites that you need in order to implement a transport agent:

  • Un equipo que ejecuta Exchange 2013 que se ejecuta el servicio de transporte Front-End en un servidor acceso de cliente o de transporte perimetral, o el servicio de transporte en un servidor de buzón de correo.A computer running Exchange 2013 that is running the Front End Transport service on a Client Access or Edge Transport server, or the Transport service on a Mailbox server. Para obtener información acerca de la arquitectura de rol de servidor en Exchange 2013, vea de transporte conceptos de agente de Exchange 2013.For information about the server role architecture in Exchange 2013, see Transport agent concepts in Exchange 2013.

  • Los siguientes ensamblados para las clases de agente de transporte:The following assemblies for the transport agent classes:

    • Microsoft.Exchange.Data.dllMicrosoft.Exchange.Data.dll

    • Microsoft.Exchange.Data.Common.dllMicrosoft.Exchange.Data.Common.dll

    • Microsoft.Exchange.Transport.dllMicrosoft.Exchange.Transport.dll

  • .NET Framework 4.5The .NET Framework 4.5

También se recomienda que instale Visual Studio 2012.We also recommend that you install Visual Studio 2012. Agentes de transporte se pueden implementar mediante el uso de Visual Basic .NET o C#.You can implement transport agents by using either Visual Basic .NET or C#.

Hacer referencia a los ensambladosReferencing the assemblies

Exchange 2013 proporciona una biblioteca de clases que admiten la extensión de comportamiento de transporte de Exchange.Exchange 2013 provides a library of classes that support the extension of Exchange transport behavior. Estas clases requieren .NET Framework 4.5.These classes require the .NET Framework 4.5. Puede implementar a los agentes de transporte en función de estas clases mediante el uso de Visual Studio 2012.You can implement transport agents based on these classes by using Visual Studio 2012.

El programa de instalación de Exchange 2013 instala los ensamblados que se usan para el desarrollo de agente de transporte y los registra en la memoria caché de ensamblados global (GAC).The Exchange 2013 installer installs assemblies that are used for transport agent development and registers them in the global assembly cache (GAC). Para empezar a implementar a un agente de transporte, cree una referencia al ensamblado Microsoft.Exchange.Data.Transport en un proyecto de biblioteca de clases.To begin implementing a transport agent, create a reference to the Microsoft.Exchange.Data.Transport assembly in a class library project.

Implementación de un agente de transporteImplementing a transport agent

En el ejemplo siguiente se muestra una implementación mínima de clases que se derivan de las clases SmtpReceiveAgentFactory y SmtpReceiveAgent .The following example shows a minimal implementation of classes that derive from the SmtpReceiveAgentFactory and SmtpReceiveAgent classes.

Precaución

Si varios agentes de transporte se ha instalado y registrados para el mismo evento, todos los agentes se invocará, incluso si un agente quita a todos los destinatarios de un elemento de correo.If multiple transport agents are installed and registered for the same event, all agents will be invoked, even if one agent removes all the recipients from a mail item. > Para evitar errores no controlados o un comportamiento inesperado, el agente de transporte debe administrar los casos en que el recuento de destinatarios en un elemento de correo es igual a cero.> To avoid unhandled errors or unpredictable behavior, your transport agent should handle cases in which the recipient count on a mail item is equal to 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

Instalar y habilitar un agenteInstalling and enabling an agent

Después de compilar al agente a un archivo DLL, debe instalar y habilitar al agente de en el servidor de desarrollo de Exchange.After you compile your agent to a DLL, you must install and enable the agent on your development Exchange server. En el Shell de administración de Exchange, use el cmdlet Install-TransportAgent para instalar al agente y el cmdlet Enable-TransportAgent para habilitar al agente.In the Exchange Management Shell, use the Install-TransportAgent cmdlet to install your agent, and the Enable-TransportAgent cmdlet to enable your agent. Para obtener información acerca de cómo usar el Shell de administración de Exchange, consulte Exchange Server PowerShell (Shell de administración de Exchange).For information about how to use the Exchange Management Shell, see Exchange Server PowerShell (Exchange Management Shell).

Precaución

Los agentes de transporte tienen acceso total a todos los mensajes de correo electrónico que se encuentren.Transport agents have full access to all email messages that they encounter. Exchange 2013 no restringir el comportamiento de un agente de transporte.Exchange 2013 does not restrict the behavior of a transport agent. Los agentes de transporte que se inestable o que contienen errores de seguridad pueden afectar a la estabilidad y la seguridad de Exchange 2013.Transport agents that are unstable or that contain security flaws might affect the stability and security of Exchange 2013. Por lo tanto, sólo debe instalar a los agentes de transporte que plena confianza y que se han probado completamente.Therefore, you should only install transport agents that you fully trust and that have been fully tested.

Cuando use el cmdlet Install-TransportAgent para instalar a un agente, el Shell de administración de Exchange mantiene un bloqueo en el ensamblado.When you use the Install-TransportAgent cmdlet to install an agent, the Exchange Management Shell keeps a lock on the assembly. Para liberar el bloqueo en el ensamblado, debe cerrar la sesión de la consola de administración de Exchange que usó para instalar al agente.To release the lock on the assembly, you must close the instance of the Exchange Management Shell that you used to install the agent. Podrá actualizar el ensamblado hasta que se libere el bloqueo.You will be unable to update the assembly until you release the lock.

En el ejemplo siguiente se muestra cómo usar el Shell de administración de Exchange para instalar y habilitar a un agente denominado MyAgent mediante el uso de una clase derivada de SmtpReceiveAgentFactory denominado MyAgents.MyAgentFactory.The following example shows how to use the Exchange Management Shell to install and enable an agent named MyAgent by using a class derived from SmtpReceiveAgentFactory named MyAgents.MyAgentFactory.

Install-TransportAgent -Name "MyCustomAgent" -TransportAgentFactory "MyAgents.MyAgentFactory" -AssemblyPath "C:\myagents\MyAgent.dll"

En este ejemplo se da nombre al agente MyCustomAgent en el servidor en el que está instalado el agente.This example names the agent MyCustomAgent on the server on which the agent is installed. En el ejemplo siguiente se muestra cómo habilitar al agente denominado MyCustomAgent.The following example shows how to enable the agent named MyCustomAgent.

Enable-TransportAgent -Name "MyCustomAgent"

Para administrar un agente de transporte en el servicio de transporte Front-End en un servidor de acceso de cliente, agregue el siguiente valor para el comando: -TransportService FrontEnd.To manage a transport agent in the Front End Transport service on a Client Access server, add the following value to the command: -TransportService FrontEnd. Por ejemplo, para ver a los agentes de transporte en el servicio de transporte Front-End, ejecute el siguiente comando.For example, to view the transport agents in the Front End Transport service, run the following command.

Get-TransportAgent -TransportService FrontEnd

Para obtener más información acerca de cómo instalar, habilitar y administrar a su agente, vea Administrar agentes de transporte.For more information about installing, enabling, and managing your agent, see Manage Transport Agents.

En esta secciónIn this section

Vea tambiénSee also