FromModify Sink (Exchange 2000/2003)
Lösungen für Exchange 2007 finden sie am Ende dieser Seite.
Dieser Beispielsink zeigt die Möglichkeiten, ausgehende Mails beim Versand zu verändern. Dieses Beispiel deckt dabei zwei Funktionen ab:
- Displayname verbergen
Sie können in Exchange abschalten, dass der Displayname nach extern übertragen wird. Dies funktioniert aber nur, wenn die Mail per MAPI erstellt wird. Die Einstellung im Systemmanager greift nicht, wenn die Mail z.B. per OWA oder ActiveSync eingestellt wird. Dies kann dann nur durch eine Änderung der Mail auf einem zweiten SMTP-Server erfolgen. - Absenderadresse ersetzen (SendAs)
Bei der Änderung der FROM-Adresse kann das Skript natürlich auch gleich noch die Absenderadresse komplett umdrehen. Wenn Sie z.B. die Postfächer "support1" bis "support9" haben, dann ersetzt das Skript diese durch die generische Adresse "support". Damit senden alle diese Personen immer mit der Gruppenadresse, ohne langwierig mit den verschiedenen Optionen von Senden als umgehen zu müssen.
Das Musterskript prüft einfach nur die FROM-Adresse der
empfangenen Mails.. Es muss daher auf einem zweiten virtuellen SMTP-Server
laufen. Der SMTP-Server, mit welchem Exchange die Mails versendet, erlaubt
keine Änderung des MAPI-Inhalts per VBScript.
Siehe dazu auch
SMTP-EventSink
Unterstützung durch
Net at
Work:
Für individuelle Anpassungen können Sie gerne auf die Dienste von Net at
Work zurückgreifen.
Das Skript ist ein Muster und funktioniert in einer TestUmgebung fehlerfrei. Zur Funktion in einer produktiven Umgebung würde ich persönlich eine Fehlerbehandlung addieren und Performancetests durchführen wollen.
Download
Das folgende Archiv enthält den Code des SMTP EventSinks und zwei Batchfiles zur Installation und Deinstallation. Das VBScript muss jedoch angepasst werden !!!
Ich gehe nicht davon aus, dass meine Annahmen zur Streichung des Displaynamens oder ersetzen des Absenders auch in ihrem Fall zutreffend sind. Sie müssen daher anpassen:
- SMTP Instanz
Wenn Sie mehrere virtuelle SMTP-Server haben, dann müssen Sie die "richtige" Instanz in den beiden Batches ändern. - Option Displayname
Das Skript entfernt von der Absendermailadresse den Displaynamen. Wenn Sie dies nicht möchten, sollten Sie den entsprechenden Codeteil auskommentieren. - Option Adressumschreibung
Auch das Ersetzen von bestimmten Absenderadressen durch eine andere Adresse müssen Sie vor dem Einsatz anpassen, da Sie sicher nicht mit der Domäne "msxfaq.de" ihr Mails versenden. - Pfade
Das Skript ist so ausgelegt, dass es nach C:\FromModify abgelegt wird. Ist ihr Programmverzeichnis ein anderes, dann müssen Sie die Pfad in den Dateien entsprechend anpassen. - Optimierung auf "FROM"
Wenn Sie sowieso nur eine bestimmte Gruppe von Absendern verarbeiten wollen, dann können Sie bei der Registrierung des Eventsink schon auf diese Absender z.B. mit der Option "MAILFROM=Support*@firma.de" filtern.
Insofern sollten Sie keine Angst vor VBScript haben.
Debugging
Die Aktivität des Sinks kann in einer Protokolldatei nachgelesen werden, die der Sink im angegebenen Verzeichnis ablegt. Kontrollieren Sie hier die gewünschte Funktion und reduzieren Sie später die Debugausgaben, um Performance und Plattenplatz zu sparen.
Hier ist gut zu sehen, mit welchen Adressen die Mails durch den SMTP-Server geroutet und welche Veränderungen vorgenommen werden.
Weitere Verbesserungen
Neben den schon genannten Erweiterungen wären noch denkbar:
- AD-Lookup
Das generelle Ersetzen des Displaynamens könnte über eine Gruppenabfrage im Active Directory sicher individueller gelöst werden. - COM statt VBScript
Aus Aspekten der Performance wäre eine Lösung als COM-Komponente auf jeden Fall vorzuziehen. In dem Fall könnte der Sink auch "Cacheble" sein, so dass die CPU-Belastung weiter sinkt und eventuell zusätzliche Abfragen aus dem AD nicht jedes Mal erfolgen müsste.
Adress Rewriting mit Exchange 2007
Exchange 2007 unterstützt keine "SMTP Sinks" mehr, sondern diese Funktion wird nun mittels "Transport Agenten" bereit gestellt. Allerdings gibt es zwar einen "Adress Rewriting Agent", der aber nur auf der "Edge-Rolle" zur Verfügung steht.
Insofern bleibt hier nur eine Drittsoftware oder ein eigener Transport Agent. Zum Glück gibt es hierzu einige Links im Internet und sogar fertige beispiele
- Transportagenten
- HOW TO:Rewrite the To address in Transport Agents on
a Hub Server
http://blogs.msdn.com/akashb/archive/2009/02/24/how-to-rewrite-the-to-address-in-transport-agents-on-a-hub-server.aspx - "Adress rewriting Agent"
http://www.microsoft.com/technet/prodtechnol/exchange/e2k7help/99bdf01d-69a7-48d7-8f85-0bb1e363e4bc.mspx - Managing the Address Rewriting Agent (Achtung: nur mit Edge Server)
http://technet.microsoft.com/en-us/library/bb123896%28EXCHG.80%29.aspx
http://technet.microsoft.com/en-us/library/bb123896.aspx - Sample Exchange 2007 transport agent - add the name
of the group to subject line
http://blogs.technet.com/b/exchange/archive/2008/06/25/449079.aspx - How to Rewrite All E-Mail Messages from Sub-Domains (Achtung: nur mit Edge Server)
http://technet.microsoft.com/en-us/library/aa998556.aspx - Dinge, die beim "Rewriting" so alles beachtet werden müssen
http://gsexdev.blogspot.com/2009/01/from-address-rewriting-in-transport.html - ChooseFrom für Microsoft® Exchange Server 2007
http://www.ivasoft.biz/choosefrom2007.shtml
Übernimmt die Absenderadresse aus der "Reply-to“ Adresse in Outlook als Absender. - SendAsGroup für Microsoft® Exchange 2007/2010
http://www.ivasoft.biz/sendasgroup2007.shtml
Weitere Links
- SMTP-EventSink
- ChooseFrom für Microsoft® Exchange Server 2007
http://www.ivasoft.biz/choosefrom2007.shtml
Über die Mailadresse im “ReplyTo-Feld” kann man als Anwender seine ausgehende Adresse steuern.