EventSink mit Single Server

Achtung:
Funktion ist nicht ohne Zusatzprodukt möglich, wenn per DNS versendet werden soll. Sie benötigen ausgehend einen Smarthost, z.B. den ihres Providers, einen Windows SMTP als Relay auf einem anderen Server (MSXFAQ.DE - WinSMTP als Relay) oder einen fremden SMTP-Relay (z.B. HMailserver)

Die Funktion eines SMTP-OnArrival-Sinks, wie er auf SMTP-EventSink beschrieben ist und von vielen der Tools auf der MSXFAQ genutzt wird, funktioniert nur, wenn die Mail per "SMTP" zugestellt wird. Wird eine Mail jedoch auf dem Server selbst von Exchange "erstellt", dann ist dies für den SMTP-Server kein "Arrival", und entsprechend startet der Sink nur komplett. Der Sink wird zwar gestartet aber über VBSCript  CDO kann die ausgehenden Mail nicht mehr verändert werden. Der Sink erhält nur eine Kopie der ausgehenden Mail, die zwar geändert aber nicht mehr zurück konvertiert wird. Nur wenn Sie ihren Sink als COM-DLL einbinden und nicht über die CDO-Message sondern die MAPI-Message gehen, können Sie auch hier Änderungen direkt vornehmen. Daher sind fast alle kommerziellen Sinks auch als COM+-DLL entwickelt.

Um auf auf einem einzelnen Server einen "OnArrival-Sink" nutzen zu können, müssen Sie daher zwei SMTP-Server so miteinander verschachteln, dass Exchange über einen SMTP-Connector und den einen virtuellen SMTP-Server die Mails zum zweiten SMTP-Server sendet, der die Mails nach der Verarbeitung weiter sendet.

Leider wird jeder virtuelle SMTP-Server, welcher auf einem Exchange Server eingerichtet wird, auch durch Exchange kontrolliert und die Konfiguration ist daher nicht unabhängig. Der ausgehende virtuelle SMTP-Server muss daher die Mail per Smarthost versenden z.B.

  • Smarthost des Internet Providers
    Wer von Exchange die Mail Richtung Internet über einen Smarthost eines Providers senden kann, kann so diese Einschränkung einfach umgehen. Allerdings verschwinden dann alle Mails in der Regel schnell Richtung Provider und Sie können in ihren Queues nicht mehr sehen, welche Mails noch nicht zugestellt wurden
  • Smarthost auf einem anderen Server
    Wer zwischen Exchange und Internet noch ein SMTP-Relay (z.B.: Firewall, Spamschutz, Virengateway o.ä.) betreibt, hat so einen internen Smarthost. Selbst ein Windows SMTP-Server kann diese Funktion erfüllen, sofern der Server kein Exchange Server ist. Siehe auch WinSMTP als Relay
  • lokaler "Nicht Windows SMTP-Server"
    Speziell in Small Business Umgebungen mit nur einem Server können Sie dann immer noch den Weg gehen, einen weiteren Mailserver, der nicht auf den Windows Bordmitteln basiert, auf dem Server mit zu installieren und entsprechend als Relay zu konfigurieren. Siehe auch HMailserver.

Die Konfiguration bezüglich Exchange sieht in aller Kürze wie folgt aus:

Kurzfassung

Hier die Kurzfassung der Konfiguration:

  • virtueller SMTP-Server 1
    Dieser Server übermittelt die Nachriten an den virtuellen Server 2. Hier ist einzustellen, dass alle ausgehende Nachrichten an den Host 127.0.0.1 Port 26 gesendet werden
  • virtueller SMTP-Server 2
    Für diesen Server wird das Script registriert. Weiterhin muss dieser Server auf einem Port ungleich 25 horchen, z.B. Port 26. Er nimmt alle Verbindung von VSMTP1 an und leitet die Nachrichten nach der Verarbeitung in das Internet weiter. Abhängig von ihrer individuelle Konfiguration erfolgt dies über einen Smarthost (z.B.: eine Firewall, ein Relay in der DMZ oder ihren Provider)

Achtung:
Funktion ist nicht ohne Zusatzprodukt möglich, wenn per DNS versendet werden soll. Sie benötigen ausgehend einen Smarthost, z.B. den ihres Providers, einen Windows SMTP als Relay auf einem anderen Server (MSXFAQ.DE - WinSMTP als Relay) oder einen fremden SMTP-Relay (z.B. HMailserver)

  • SMTP-Connector
    Der SMTP-Connector sorgt dafür, dass die Nachrichten nur über den virtuellen Server VSMTP1 versendet werden.

Jetzt können auch ausgehenden Nachrichten von MAPI-Clients über einen EventSink verändert werden.

Achtung:
Die müssen bei der Installation der EventSinks natürlich darauf achten, dass Sie die richtige Instanz verwenden..

Unterstützung durch Net at Work:
Diese Lösung funktioniert mit "einem" Exchange Server. Sobald Sie mehrere Exchange Server in einer Routinggruppe oder mehrere Standorte habe, müssen Sie die Konfiguration etwas anpassen. Ansonsten funktioniert das interne Routing nicht mehr korrekt. Wir helfen ihnen gerne bei der Ausarbeitung der Details in solchen Fällen.

Langfassung der Konfiguration

Hier ein Setup, welches auf meiner virtuellen Maschine mit einem einzelnen Server funktioniert. Auf diesem System teste ich meine Skripte. Schauen Sie erst einmal den Exchange System Manager an. Hier sehen Sie zwei virtuelle SMTP Server ("virtueller Standardserver für SMTP" und "EventSinkSMTP"). Weiterhin sehen Sie einen SMTP.Connector, welcher den sprechenden Namen "SMTP * -> 127.0.0.1:26" hat.

ESM Übersicht

Die Eigenschaften dieses SMTP-Connectors verraten, dass dieser Exchange anweist, alle Nachrichten an "[127.0.0.1]" zu senden und dazu den ersten virtuellen SMTP-Server zu verwenden.

SMTP-Connector

Bei diesem ersten virtuellen SMTP-Server ist nun abweichend konfiguriert, dass alle ausgehenden Verbindungen über Port 26 zu erfolgen haben

VSMTP1

Durch diesen Kniff sendet Exchange alle ausgehenden Mails an 127.0.0.1:26.

Die Konfiguration des virtuelen SMTP-Servers "EventSinkSMTP" ist nun so angepasst, dass dieser nicht mehr auf Port 25 lauscht, sondern eben auf Port 26 die Verbindungen annimmt.

SingleServerSink

Nun muss diesem SMTP-Server nur noch beigebracht werden, Wie er seine Nachrichten versenden. In meinem Beispiel lasse ich ihn die Nachrichten per Smarthost auf meinen SMTP-Server des Hosts senden.

Eventsink SMTP

Auf einem produktiven Server würden Sie hier dann z.B.: ein Relay in der DMZ oder den Smarthost ihres Providers angeben.

Keine Funktion ohne Smarthost !
Der zweite virtuelle SMTP-Server kann NICHT per DNS die Mails ins Internet versenden. Dann schlagen wieder die Exchange Erweiterungen zu, welche die Mails wieder in die Queues einstellen. Die Mails bleiben dann in der "Warteschlange für verzögerte Übermittlung" hängen.

Ausgehender Smarthost

Da sich Exchange 20007/2003 immer in den Windows SMTP-Service mit einklinkt, auch wenn kein SMTP-Connector dafür konfiguriert ist, funktioniert dies Kaskade auf einem Server immer nur, wenn der nächste Hop per "Smarthost" erreichbar ist. Dazu kann man aber leider keinen weiteren Windows SMTP-Server verwenden. Aber es ist kein Problem, einen der vielen verfügbaren freien SMTP-Server zu verwenden, die zum Teil nur sehr wenig Ressourcen benötigen. Eine Beschreibung hierzu habe ich mit dem HMailserver bereit gestellt.

Weitere Links