Exchange 20007 Transportagenten

Während bei Exchange 5.x fast gar keine Möglichkeit bestand, auf dem Server die Nachrichten bei der Übertragung zu verarbeiten, war bei Exchange 2000/20003 dies über die SMTP-Transportsinks (siehe auch SMTP-EventSink) zumindest in einer gewissen Weise möglich. Erst Exchange 2007 hingegen hat den Weg zu einer leistungsfähigen Verarbeitung geöffnet, da nun jede Mail, auch die zwischen Postfächern im gleichen Informationsspeicher, immer durch die Transport-Rolle muss. Und an dieser Stelle können nun Transport Agenten einsetzen, die diese Mails verarbeiten, verändern etc.

Die Exchange 2007 Transportregeln, welche z.B.: zum Anfügen eines Disclaimers auf E2K7 Disclaimer verwendet werden, sind auch einfach Transportagenten. Das schöne bei Exchange 2007 ist, dass die Agenten in Managed Code entwickelt werden können, und damit die Zeit der C++-Sinks für den Windows SMTP-Dienst langsam abläuft. Solche Agenten können auch im Exchange Edge Server genutzt werden.

Dieser Ort ist sehr leistungsfähig, da diese Agenten auf den kompletten Nachrichteninhalte vollständigen Zugriff haben. Es ist daher nur eine Frage der Zeit, bis Drittprodukte sind dieser Schnittstelle bemächtigen, um die Regeln, die Exchange 2007 von Hause aus bietet, zu erweitern. Denkbar sind z.B.:

Sie sehen also, dass es sich für Dritthersteller aber auch für größere Firmen durchaus lohnen kann, in die Entwicklung eines eigenen Transport Agenten etwas Zeit zu investieren.

Transport Agent - Erste Schritte

Ich bin nun nicht der Vollzeit Entwickler und es gibt schon sehr viele Beispiele für Transport Agenten im Internet. Schauen Sie sich einfach mal die weiterführenden Links an. Für Administratoren ist eher die Installation und Konfiguration interessant:

Ein Transport Agent ist primär mal ein Stück "Code", welches auf den zutreffenden Servern installiert werden muss, die als HubTransport-Rolle arbeiten. Dieser Code wird heute z.B.: mit Visual Studio 2005 in .NET 2.0 entwickelt und ergibt eine DLL, die auf den Server kopiert werden muss.

Der Transport Agent muss natürlich auf dem Server noch installiert und aktiviert werden.

Install-TransportAgent -Name "MSXFAQRoutingAgent" -TransportAgentFactory "MSXFQ.Routingagent1" -AssemblyPath "C:\Programme\MSXFAQ\routingagent1\routingagent1.dll"

Enable-TransportAgent -Identity "MSXFAQRoutnigAgent"

Danach muss der MSExchangeTransport neu gestartet werden, um den Agenten zu aktivieren.

Berechtigungen
Der Agent läuft mit den Rechten "NetworkAgent". Das ist viel weniger als "LocalSystem" o.ä. Der Agent kann also nicht einmal etwas in das Eventlog schreiben. Um Zugriff auf andere Ressourcen zu nutzen, müssen Sie daher diese z.B. mit der Angabe expliziter Anmeldedaten durchführen.

Debugging

Es ist nicht wirklich einfach, einen Transport Agent zu debuggen. Aber die Funktion Pipelinetracing erlaubt es, jede Mail des Transports als EML-Datei abzuzweigen.

Set-TransportServer servername -PipelineTracingSenderAddress absender@domain.tld -PipelineTracingEnabled $true -PipelineTracingPath c:\pipeTrace

Damit kann ein Admin dann die EML-Datei per Notepad öffnen und anzeigen. Weitere Details finden Sie hierzu auf Pipelinetracing

3rd Party Transportevent Agenten und Beispiele

Weitere Links

Keywords: E2K7 Programmieren Sink Agent Transport