Creación de agentes de transporte para Exchange 2013

Busque información sobre cómo crear agentes de transporte personalizados para Exchange 2013 y los requisitos del sistema para crear un agente personalizado.

Se aplica a: Exchange Server 2013

Exchange Server 2013 incluye varios agentes de transporte que puede usar para procesar mensajes. Mediante el uso de los ensamblados que vienen con Exchange, puede crear sus propios agentes personalizados para realizar tareas específicas según las necesidades de su organización. Por ejemplo, puede usar un agente de transporte SmtpReceiveAgent para interceptar los mensajes recibidos a través del protocolo SMTP y procesar el mensaje para convertir el formato del cuerpo para que contenga texto con formato previo. Puede usar un agente de transporte RoutingAgent para registrar los mensajes que pasan a través del servidor en la ruta a otro servidor. También puede crear características más complejas que usen más de un tipo de agente. Por ejemplo, para crear un agente antivirus, puede implementar un SmtpReceiveAgent y un agente RoutingAgent. Si tiene un componente en la red que no admite el protocolo SMTP, puede usar un agente de transporte DeliveryAgent para controlar la comunicación entre el servidor exchange y el componente externo.

En este artículo se proporciona información sobre los requisitos previos y las tareas relacionadas con la creación de su propio agente de transporte. Para obtener información sobre cómo crear agentes de transporte específicos, vea Crear un agente de transporte RoutingAgent para Exchange 2013, Crear un agente de transporte SmtpReceiveAgent para Exchange 2013 y Crear un agente de transporte deliveryAgent para Exchange 2013.

Requisitos previos para crear un agente de transporte

Los siguientes son los requisitos previos que necesita para implementar un agente de transporte:

  • Equipo que ejecuta Exchange 2013 que ejecuta el servicio de transporte front-end en un servidor de acceso de cliente o de transporte perimetral, o el servicio de transporte en un servidor de buzones de correo. Para obtener información sobre la arquitectura de roles de servidor en Exchange 2013, vea Conceptos del agente de transporte en Exchange 2013.

  • Los ensamblados siguientes para las clases del agente de transporte:

    • Microsoft.Exchange.Data.dll
    • Microsoft.Exchange.Data.Common.dll
    • Microsoft.Exchange.Transport.dll
  • .NET Framework 4.5

También se recomienda instalar Visual Studio 2012. Puede implementar agentes de transporte mediante Visual Basic .NET o C#.

Referencia a los ensamblados

Exchange 2013 proporciona una biblioteca de clases que admiten la extensión del comportamiento de transporte de Exchange. Estas clases requieren .NET Framework 4.5. Puede implementar agentes de transporte basados en estas clases mediante Visual Studio 2012.

El instalador de Exchange 2013 instala ensamblados que se usan para el desarrollo del agente de transporte y los registra en la caché global de ensamblados (GAC). Para empezar a implementar un agente de transporte, cree una referencia al ensamblado Microsoft.Exchange.Data.Transport en un proyecto de biblioteca de clases.

Implementación de un agente de transporte

En el ejemplo siguiente se muestra una implementación mínima de clases que derivan de las clases SmtpReceiveAgentFactory y SmtpReceiveAgent .

Precaución

Si se instalan y registran varios agentes de transporte para el mismo evento, se invocarán todos los agentes, incluso si un agente quita todos los destinatarios de un elemento de correo. > Para evitar errores no controlados o comportamiento imprevisible, el agente de transporte debe controlar los casos en los que el destinatario cuente con un elemento de correo es igual a cero.

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

Instalación y habilitación de un agente

Después de compilar el agente en un archivo DLL, debe instalar y habilitar el agente en el servidor exchange de desarrollo. En el Shell de administración de Exchange, use el cmdlet Install-TransportAgent para instalar el agente y el cmdlet Enable-TransportAgent para habilitar el agente. Para obtener información sobre cómo usar el Shell de administración de Exchange, vea Exchange Server PowerShell (Shell de administración de Exchange).

Precaución

Los agentes de transporte tienen acceso completo a todos los mensajes de correo electrónico que encuentran. Exchange 2013 no restringe el comportamiento de un agente de transporte. Los agentes de transporte que son inestables o que contienen errores de seguridad pueden afectar a la estabilidad y la seguridad de Exchange 2013. Por lo tanto, solo debe instalar agentes de transporte en los que confíe plenamente y que se hayan probado por completo.

Cuando se usa el cmdlet Install-TransportAgent para instalar un agente, el Shell de administración de Exchange mantiene un bloqueo en el ensamblado. Para liberar el bloqueo en el ensamblado, debe cerrar la instancia del Shell de administración de Exchange que usó para instalar el agente. No podrá actualizar el ensamblado hasta que libere el bloqueo.

En el ejemplo siguiente se muestra cómo usar el Shell de administración de Exchange para instalar y habilitar un agente denominado MyAgent mediante una clase derivada de SmtpReceiveAgentFactory denominada MyAgents.MyAgentFactory.

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

En este ejemplo se asigna el nombre MyCustomAgent al agente en el servidor en el que está instalado el agente. En el ejemplo siguiente se muestra cómo habilitar el agente denominado 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 al comando: -TransportService FrontEnd. Por ejemplo, para ver los agentes de transporte en el servicio de transporte front-end, ejecute el siguiente comando.

Get-TransportAgent -TransportService FrontEnd

Para obtener más información sobre cómo instalar, habilitar y administrar el agente, consulte Administración de agentes de transporte.

En esta sección

Vea también