Exchange 2007 Foreign Connector

In eine Exchange 2007 Umgebung ohne Exchange 2003 können Sie nachträglich kein Exchange 2003 mehr nachinstallieren !!. Beachten Sie dies, wenn Sie noch "alte" Connectoren einsetzen wollen.

Mit Exchange 2007 entfallen nicht nur X.400-Connectoren ersatzlos, sondern auch die bisherigen EDK-Connectoren sind nicht mehr verfügbar. Wieder einmal sind die Hersteller angehalten, sich an Exchange 2007 mit einer neuen API zu verbinden. Diese ist aber denkbar einfach. Der neue Connectortyp heißt "Foreign-Connector" und arbeitet dateiorientiert.

Eingerichtet wird dieser mit der Exchange Management Shell und den folgenden Commandlets. (Diese Funktion war in der Beta noch nicht verfügbar)

New-ForeignConnector
Get-ForeignConnector
Remove-ForeignConnector
Set-ForeignConnector

In der Exchange Hilfe finden Sie eine genauere Beschreibung für den Umgang. Interessant ist aber die Art, wie der Connector funktioniert.

Im Gegensatz zum EDK gibt es keinen MAPI-Zugriff auf ein Connectorpostfach und die darin enthaltenen Objekte durch den Hersteller des Connectors selbst. Damit geht Exchange ein Stück weit in die Richtung, die UNIX-Mailsysteme schon immer genutzt haben.

Foreign Connector anlegen 

Aufgrund der einfachen Einrichtung und Anbindung plane ich ein paar Codebeispiele, um mit dieser Anbindung z.B.: eine SMS zu versenden oder andere Aufgaben durchzuführen. Fangen wir einfach mal mit einem einfachen Connector an, der z.B. Nachrichten an den Adressraum "FAX2 versenden soll:

Zuerst müssen wir mit der Powershell einen entsprechenden Connector anlegen.

New-ForeignConnector -Name Foreign-FAX -AddressSpaces "FAX:*;1"

New-ForeignConnector

Beachten Sie, dass man den Connector nicht im Exchange System Manager sehen kann. Aber eine Ausgabe von "Get-ForeignConnector" liefert schon mehr Details: 

[PS] C:\Documents and Settings\Administrator>Get-ForeignConnector | fl

DropDirectory : Foreign-FAX
DropDirectoryQuota : unlimited
RelayDsnRequired : False
Enabled : True
AddressSpaces : {FAX:*;1}
MaxMessageSize : unlimited
ConnectedDomains : {}
IsScopedConnector : False
IsSmtpConnector : False
Comment :
SourceRoutingGroup : Exchange Routing Group (DWBGZMFD01QNBJR)
SourceTransportServers : {WS03R2EEEXCHLCS}
HomeMTA : Microsoft MTA
HomeMtaServerId : WS03R2EEEXCHLCS
MinAdminVersion : -2147453113
AdminDisplayName :
ExchangeVersion : 0.1 (8.0.535.0)
Name : Foreign-FAX
DistinguishedName : CN=Foreign-FAX,CN=Connections,CN=Exchange Routing Grou
p (DWBGZMFD01QNBJR),CN=Routing Groups,CN=Exchange Admi
nistrative Group (FYDIBOHF23SPDLT),CN=Administrative G
roups,CN=First Organization,CN=Microsoft Exchange,CN=S
ervices,CN=Configuration,DC=contoso,DC=com
Identity : Foreign-FAX
Guid : c5fed047-b805-4082-96c2-69e578deed18
ObjectCategory : contoso.com/Configuration/Schema/ms-Exch-Mail-Gateway
ObjectClass : {top, msExchConnector, mailGateway}
WhenChanged : 2/25/2007 2:22:15 PM
WhenCreated : 2/25/2007 2:22:15 PM
OriginatingServer : WS03R2EEEXCHLCS.contoso.com
IsValid : True

Das "Drop-Verzeichnis" heißt also "Foreign-FAX" aber ist erst einmal noch nicht zu finden. Es wird nicht von der Powershell angelegt.

Mails von der Exchange Organisation zum Connector 

Daher senden wir einfach per OWA oder Outlook eine Mail an die Adresse "Fax:1234".

Testmail to FAX

Durch die direkte Eingabe der Adresse mit eckigen Klammern"[ ]" kann man jeden beliebigen Adressraum erreichen, auch wenn keine entsprechenden Adressvorlagen auf dem Server hinterlegt sind. Im Exchange Queue Manager kann man die Warteschlange sogar schon sehen

Queue Manager Warteschlange mit Fehler

Wie Sie auch sehen können, legt das Powershell Commandlet das Drop-Verzeichnis nicht einmal an. Auch dieses Verzeichnis müssen wir noch selbst anlegen. Wohl dem, der seine Eventlogs überwacht. Darin findet sich die dazu passende Meldung

Eventlogmeldung ForeignConnector

Kaum wurde das Verzeichnis angelegt, stellt Exchange die Nachricht doch noch zu. Stellen Sie bitte sicher, dass die NTFS-Rechte folgende Einträge haben: Network Service: Full Control; System: Full Control; Administrators: Full Control)

Explorer mit DropDirectory

Die Message selbst ist einfach eine EML-Datei, die man sich einfach mit Notepad anschauen kann. Allerdings ist es keine "echte" RFC822-Nachricht, da Exchange hier per Default eine TNEF-Mail ablegt.

TNEF-Mail im DROP-Verzeichnis

Ein Programm, welches diese Nachricht also weiter verarbeiten will, muss das Format entsprechend auslesen können. Wenn Sie schon etwas üben wollen, habe ich ihnen hier diese Nachricht zum Download bereit gestellt.

e2k7foreignconnector.zip
Gepackte EML-Datei mit der Testmail an [FAX:1234]

Wenn sie nun selbst in der Situation sind, einen eigenen Connector zu entwickeln, dann benötigen Sie natürlich entsprechende Hilfsmittel, um diese Mails wieder aufzufassen und weiter zu verarbeiten. Microsoft liefert dazu einige Classen und Hilfen mit. (Auszug aus der Exchange 2007 Online Hilfe)

Auf der Webseite http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=737392&SiteID=17 habe ich einen sehr ausführlichen Artikel eines Microsoft Entwicklers gefunden, den ich als Archiv hier gerne mal ablegen

Erläuterung zum Foreign Connector

Mails vom Connector zur Exchange Organisation

Möchte ein Connector nun eine Mail zurück zum Anwender senden, dann steht im einfach der Weg über SMTP offen. Ihr Connector sollte daher wissen, wie man selbst die entsprechenden Receive-Connectoren einer Exchange Organisation ausliest oder Sie müssen dies bei dem jeweiligen Produkt konfigurieren. Es ist immer eine gute Idee, wenn der Connector mit einem eigenen Dienstkonto läuft und sich der Connector auch per SMTP am Exchange Server authentifiziert. Das gleiche Konto kann der Connector ja auch nutzen, um mit dem Active Directory in Kontakt zu treten, um z.B. Daten aus den Benutzereigenschaften auszulesen.

Messagetracking

Mails, die zum Foreign Connector gehen, werden natürlich auch im Messagetracking protokolliert, hier am Beispiel einer Anbindung eines Faxservers (Cycos MRS):

EventId  Source   Sender                            Recipients                        MessageSubject
-------  ------   ------                            ----------                        --------------
RECEIVE  STORE... sender@example.com               {IMCEAFAX-05251304813@example.com.  testmail
SEND     GATEWAY  sender@example.com               {IMCEAFAX-05251304813@example.com.. testmail
RECEIVE  ADMIN    IMCEAMRS-MAILBOX_POSTMASTER@ex..  {sender@example.com}               testmail
DELIVER  STORE... IMCEAMRS-MAILBOX_POSTMASTER@ex..  {sender@example.com}               testmail)

Die erste Zeile zeigt die Mail vom Postfach zum Server und Zeile zwei routet die Mail an das Gateway. Hier habe ich einen "Fehler" produziert, der dann einen NDR erzeugt. Hier nutzt MRS allerdings das "Pickup"-Verzeichnis. (Zeile 3) welches dann in Zeile 4 zum Postfach zugeleitet wird.

Entfernen des Foreign Connectors

Eine klassische Deinstallation gibt es natürlich nicht. Der Eintrag in der Exchange Konfiguration wird einfach über einen Aufruf in der Exchange Management Shell wieder entfernt:

Remove-ForeignConnector -Identity "Foreign-FAX"
RemoveForeignConnector

Natürlich kommt hier noch eine Sicherheitsabfrage aber keine Bestätigungsmeldung mehr. Ein "Get-ForeignConnector schafft daher Gewissheit. Das "Verzeichnis" selbst muss ebenfalls von Hand gelöscht werden. 

Weitere Links

Keywords:Connector Foreign ExchangE2K7