Erstellen von Transport-Agents für Exchange 2013

Hier finden Sie Informationen zum Erstellen benutzerdefinierter Transport-Agents für Exchange 2013 und zu den Systemanforderungen zum Erstellen eines benutzerdefinierten Agents.

Gilt für: Exchange Server 2013

Exchange Server 2013 enthält mehrere Transport-Agents, die Sie zum Verarbeiten von Nachrichten verwenden können. Mithilfe der Assemblys, die im Lieferumfang von Exchange enthalten sind, können Sie eigene benutzerdefinierte Agents erstellen, um bestimmte Aufgaben gemäß den Anforderungen Ihrer Organisation auszuführen. Beispielsweise können Sie einen SmtpReceiveAgent-Transport-Agent verwenden, um Nachrichten abzufangen, die über das SMTP-Protokoll empfangen werden, und die Nachricht zu verarbeiten, um das Format des Texts so zu konvertieren, dass er vorformatierten Text enthält. Sie können einen RoutingAgent-Transport-Agent verwenden, um die Nachrichten zu protokollieren, die den Server auf der Route zu einem anderen Server durchlaufen. Sie können auch komplexere Features erstellen, die mehr als einen Agent-Typ verwenden. Um beispielsweise einen Antiviren-Agent zu erstellen, können Sie einen SmtpReceiveAgent und einen RoutingAgent-Agent implementieren. Wenn Sie über eine Komponente in Ihrem Netzwerk verfügen, die das SMTP-Protokoll nicht unterstützt, können Sie einen DeliveryAgent-Transport-Agent verwenden, um die Kommunikation zwischen Ihrem Exchange-Server und Ihrer externen Komponente zu verarbeiten.

Dieser Artikel enthält Informationen zu den Voraussetzungen und Aufgaben, die beim Erstellen Eines eigenen Transport-Agents erforderlich sind. Informationen zum Erstellen bestimmter Transport-Agents finden Sie unter Erstellen eines RoutingAgent-Transport-Agents für Exchange 2013, Erstellen eines SmtpReceiveAgent-Transport-Agents für Exchange 2013 und Erstellen eines DeliveryAgent-Transport-Agents für Exchange 2013.

Voraussetzungen für die Erstellung eines Transport-Agents

Im Folgenden sind die Voraussetzungen aufgeführt, die Sie benötigen, um einen Transport-Agent zu implementieren:

  • Ein Computer mit Exchange 2013, auf dem der Front-End-Transportdienst auf einem Clientzugriffs- oder Edge-Transport-Server oder der Transportdienst auf einem Postfachserver ausgeführt wird. Informationen zur Serverrollenarchitektur in Exchange 2013 finden Sie unter Transport-Agent-Konzepte in Exchange 2013.

  • Die folgenden Assemblys für die Transport-Agent-Klassen:

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

Außerdem wird empfohlen, Visual Studio 2012 zu installieren. Sie können Transport-Agents entweder mithilfe von Visual Basic .NET oder C# implementieren.

Verweisen auf die Assemblys

Exchange 2013 bietet eine Bibliothek von Klassen, die die Erweiterung des Exchange-Transportverhaltens unterstützen. Diese Klassen erfordern die .NET Framework 4.5. Sie können Transport-Agents basierend auf diesen Klassen mithilfe von Visual Studio 2012 implementieren.

Das Exchange 2013-Installationsprogramm installiert Assemblys, die für die Transport-Agent-Entwicklung verwendet werden, und registriert sie im globalen Assemblycache (GAC). Um mit der Implementierung eines Transport-Agents zu beginnen, erstellen Sie einen Verweis auf die Microsoft.Exchange.Data.Transport-Assembly in einem Klassenbibliotheksprojekt.

Implementieren eines Transport-Agents

Das folgende Beispiel zeigt eine minimale Implementierung von Klassen, die von den Klassen SmtpReceiveAgentFactory und SmtpReceiveAgent abgeleitet werden.

Vorsicht

Wenn mehrere Transport-Agents installiert und für dasselbe Ereignis registriert sind, werden alle Agents aufgerufen, auch wenn ein Agent alle Empfänger aus einem E-Mail-Element entfernt. > Um unbehandelte Fehler oder unvorhersehbares Verhalten zu vermeiden, sollte Ihr Transport-Agent Fälle behandeln, in denen die Empfängeranzahl für ein E-Mail-Element gleich 0 (null) ist.

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

Installieren und Aktivieren eines Agents

Nachdem Sie Ihren Agent in eine DLL kompiliert haben, müssen Sie den Agent auf Ihrem Exchange-Entwicklungsserver installieren und aktivieren. Verwenden Sie in der Exchange-Verwaltungsshell das Cmdlet Install-TransportAgent , um Ihren Agent zu installieren, und das Cmdlet Enable-TransportAgent , um Ihren Agent zu aktivieren. Informationen zur Verwendung der Exchange-Verwaltungsshell finden Sie unter Exchange Server PowerShell (Exchange-Verwaltungsshell).

Vorsicht

Transport-Agents haben Vollzugriff auf alle gefundenen E-Mails. Exchange 2013 schränkt das Verhalten eines Transport-Agents nicht ein. Transport-Agents, die instabil sind oder Sicherheitslücken enthalten, können die Stabilität und Sicherheit von Exchange 2013 beeinträchtigen. Daher sollten Sie nur Transport-Agents installieren, denen Sie voll vertrauen und die vollständig getestet wurden.

Wenn Sie das Cmdlet Install-TransportAgent zum Installieren eines Agents verwenden, behält die Exchange-Verwaltungsshell eine Sperre für die Assembly bei. Um die Sperre für die Assembly aufzuheben, müssen Sie die Instanz der Exchange-Verwaltungsshell schließen, die Sie zum Installieren des Agents verwendet haben. Sie können die Assembly erst aktualisieren, wenn Sie die Sperre freigeben.

Das folgende Beispiel zeigt, wie Sie die Exchange-Verwaltungsshell verwenden, um einen Agent namens MyAgent mithilfe einer von SmtpReceiveAgentFactory abgeleiteten Klasse namens MyAgents.MyAgentFactory zu installieren und zu aktivieren.

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

In diesem Beispiel wird der Agent myCustomAgent auf dem Server, auf dem der Agent installiert ist, bezeichnet. Das folgende Beispiel zeigt, wie Sie den Agent mit dem Namen MyCustomAgent aktivieren.

Enable-TransportAgent -Name "MyCustomAgent"

Um einen Transport-Agent im Front-End-Transportdienst auf einem Clientzugriffsserver zu verwalten, fügen Sie dem Befehl den folgenden Wert hinzu: -TransportService FrontEnd. Führen Sie beispielsweise den folgenden Befehl aus, um die Transport-Agents im Front-End-Transportdienst anzuzeigen.

Get-TransportAgent -TransportService FrontEnd

Weitere Informationen zum Installieren, Aktivieren und Verwalten Ihres Agents finden Sie unter Verwalten von Transport-Agents.

Inhalt dieses Abschnitts

Siehe auch