Exchange Event Service

Der Event Service ist NICHT mehr in Exchange 2007 enthalten !

To answer your question - the EVENTS.EXE aka Events Service is gone from Exchange 12. This service was "de-emphasized" in Exchange 2000/2003 releases (meaning - it was included to allow time to migrate Event Service scripts to other solutions).
Quelle: http://blogs.technet.com/b/exchange/archive/2006/02/20/419994.aspx

Ehe Sie über "Skripte" nachdenken, sollten Sie überlegen, welche der drei Wege für die der Richtige ist. Neben der Möglichkeit ein Skript für einen Ordner zu erstellen, können Sie auch mit Regeln und mit Eventsinks eine Lösung schaffen.

Skripte ist VBSCRIPT-Code, welcher vom Exchange Event Service interpretiert und ausgeführt wird.

Exchange 5.5. hatte dazu einen Eventservice, welcher Ordner auf Veränderungen überwacht hat und benutzerdefinierte Prozesse angestoßen hat. Die Programme liefen allesamt auf dem Server und wurden z.B. in VBScript oder Javascript geschrieben. Auch DLLs sind möglich. Allerdings starteten diese Skript asynchron, d.h. in der Regel einige Zeit nach der Änderung im Ordnern

Mit Exchange 2000 wurden diese Skripte zu "Event Sinks", welche sowohl in den Transportweg als auch in die Datenbank integriert werden können. Im Gegensatz zu den Skripten von Exchange 5.5 können diese Sinks nun "synchron" laufen, d.h. erst nach der Abarbeitung wird das Element weitergegeben. Damit kann z.B.: ein Element verändert werden, ehe es in einem Ordner erscheint.

Security und Rechte

Eventservice: Dienst starten dann erscheint der Ordner EVENTCONFIG_Servername und dann Rechte geben.

In Exch2k muss der Event Service mit einem User account laufen. Der muss dann auch auf dem EventConfig_<DeinServer> folder owner sein und auf jedem weiteren Folder auf dem ein Script installiert werden soll.

Per Default ist der zwar auf LocalSystem eingestellt aber das funktioniert gar nicht ;-)

Exchange 2000 und Event Skripte

Auch Exchange 2000 unterstützt weiterhin die Exchange Skripte, wie sie seit Exchange 5.5 mit dem Event Service bekannt sind. Zwar bieten die Exchange 2000 Event Sinks eine sehr viel leistungsfähigere Plattform zur Verarbeitung von Ereignissen, aber auch die einfachen Skripte haben ihren Anwendungsfall gefunden. Allerdings ist vor dem ersten Start mit Exchange 2000 die Konfiguration entsprechend abzuschließen:

  • Dienstkonto für Eventservice
    Zuerst muss der Ereignisdienst auf dem Server mit einem Benutzernamen verbunden werden. Der Dienst wird standardmäßig als "LocalSystem" eingerichtet, aber kann damit nicht laufen. Der EventService muss mit einem Benutzerkonto gestartet werden. Legen Sie dazu am besten ein eigenes Dienstkonto an. So ist sicher gestellt, dass die Skripte auf dem Server nicht als "LocalSystem" laufen (Zu viele Rechte !!) aber auch dass die Skripte auf andere Ressourcen (z.B. Drucker, Netzwerklaufwerke o.ä.) zugreifen können.
  • Eventservice starten
    Nun gilt es den Dienst zu starten, und die Funktion zu kontrollieren. Der Dienst liegt einen Systemorder unter EventsRoot\EventConfig_Servername an
  • Autor Rechte auf EventsRoot\EventConfig_Servername vergeben
    Alle Personen, die nun Skripte erfassen wollen, benötigen auf dem Systemorder die Rechte als Autor.
  • Besitzer-Rechte auf den Anwendungsordner
    Damit das Skript auf dem entsprechenden Ordner auch ablaufen kann, benötigt der Benutzer, mit dem der Eventservice gestartet wurde, auch auf diesen Ordner die Rechte als "Besitzer". Ansonsten stellt der Eventservice zwar fest, dass ein Skript aktiviert werden soll, aber hat selbst nicht die Rechte, auf den Ordner zuzugreifen und entsprechende Aktionen auszuführen.

Nachdem Sie dies alles durchgeführt haben, sollten Sie Skripte erfassen und ablaufen lassen können. Ansonsten wird es Zeit für die Fehlersuche

Einrichten von Skripten

Um ein Skript bei einem Ordner zu hinterlegen sind drei Dinge wichtig:

  • Rechte auf Events Ordner
    Sie benötigen Schreibzugriff auf den Ordner, in dem die Skripte gespeichert werden.
  • SnapIn in Outlook
    Durch das Add-In "Serverskripting" erhalten Sie die Karteikarte in Outlook
  • Zugriff auf den fraglichen Ordner
    Auf dem Zielordner müssen Sie ebenfalls Zugriff haben, um das Skript zu verbinden.

Rechte auf EventConfig_Servername

Zuerst müssen die den Exchange Administrator (5.5) oder Exchange System Manager (200x) starten und zu den öffentlichen Ordnern wechseln. Bei Exchange 2000/2003 müssen sie nun über die rechte Maustaste erst die "Systemordner anzeigen" lassen. Dann finden Sie den Ordner "EventConfig_Servername".

In den Eigenschaften dieses Ordners müssen die auf den Client Berechtigungen den Leuten "Besitzer"-Rechte geben, die überhaupt Skripte entwickeln dürfen. Alle Skripte landen später in diesem Ordner. Das sieht der Anwender aber nicht. Damit ist die Einrichtung auf dem Server schon abgeschlossen. Die Änderungen können eventuell einige Zeit benötigen, bis sie aktiv werden.

Rechte auf EventConfig_Servername

Die Erstellung und Speicherung von Skripten selbst erfolgt in Outlook. Dazu müssen Sie aber erst das entsprechende Snap-In aktiviert haben. Dazu müssen Sie in Outlook 2003 über "Extras - Optionen - Weitere - erweiterte Optionen - Add-In-Manager"  die Serverskripte aktivieren. Meist ist das Snap-In bereits installiert und nur deaktiviert.

Skript in Outlook einstellen

Erst dann können sie auf den eigentlichen Ordner gehen und in den Eigenschaften taucht eine neue Karteikarte "Agenten" auf. Hier können Sie dann das Skript einstellen.

Im Beispiel habe ich noch das alte HTML2TXT Script, welches aus jeder eingehenden HTML-Mail eine Textmail gemacht hat. Dies ist seit Outlook 2003 nicht mehr notwendig und in Outlook 2002 kann ein Registrierungsschlüssel die Anzeige von HTML-Nachrichten verhindern.

Jedes Script benötigt einen Namen und die Einstellung, wann es aktiviert wird. Es kann regelmäßig (Zeitplanereignis) oder bei neuen Objekten, Änderungen oder Löschungen aktiviert werden. Wobei Sie immer bedenken müssen, dass Skripte "asynchron" ablaufen, d.h. mit Verzögerung gestartet werden.

Ein Skript hat folgenden grundsätzlichen Aufbau, den ihnen Outlook beim Start von "Skript bearbeiten" gleich in Notepad anzeigt. Sie müssen eigentlich nur noch die gewünschte Funktion mit Leben füllen.

Sie müssen natürlich nicht mit NOTEPAD entwickeln. Jedes andere VBScript Programm ist ebenso geeignet, solange Sie am Ende den Code einfach in das geöffnete Notepad kopieren. Outlook importiert diese temporäre Datei dann in den Systemordner.

Debugging von Skripten

Weil bei so einem Skript einiges schief gegen kann und das ganze Skript auch noch auf dem Server abläuft und damit in interaktives Debuggen unmöglich ist, müssen andere Wege her.

  • Fehlersuche mit Outlook
    Ein Skript, welches nicht sauber läuft, hinterlässt einen Fehler. Und genau diesen können Sie in Outlook einfach anzeigen lassen. Dazu nutzen Sie einfach den Button "Protokolle".
    In Notepad wird die letzte Fehlermeldung ausgegeben:

  • Fehlersuche mit Eventlog
    Weiterhin schreibt der EventService eine Meldung ins Eventlog, wenn ein Skript ein Problem verursacht hat.
    Wichtig: Exchange startet das Skript nicht mehr, bis Sie das Skript einmal geändert haben. In der Zwischenzeit eintreffende Nachrichten werden nicht mehr nachträglich bearbeitet
  • Eventservice als Kommandozeilenanwendung
    Den Event Service können Sie auch einfach interaktiv starten

Siehe auch.

  • Q190705 XADM: How to Set Diagnostic Logging Levels für the Event Service

Skripte auf anderen Server verschieben

Senn Sie Server deinstallieren wollen, dann müssen Sie auch dafür sorgen, dass die Skript vom Event Service auf einem anderen Server ausgeführt werden.

Die Skripte liegen in einem Systemordner, den Sie eigentlich nicht sehen (Event_CONFIG_Servername). Allerdings kommen Sie mit Outlook an diesen Ordner heran. Genauso wie Sie das Skript weiter oben auf dieser Seite eingerichtet haben, können Sie das Skript auch wieder bearbeiten und kopieren. Dies macht Outlook für Sie aber automatisch, wenn Sie den Skriptserver ändern. Und das ist das, was wie wirklich tun müssen:

öffnen Sie die Eigenschaften des Ordners und auf der Karteikarte "Agenten" sehen Sie alle Skripte. Am unteren Rand ist eine Auswahlbox, welcher Server dieses Skript ausführt.

Die Replizierung des Ordners "Event_CONFIG_Server1" vom alten auf den neuen Server ist nicht ausreichend und auch nicht hilfreich. Wenn der neue Server deinstalliert ist, dann können See dessen Eventsink-Ordner löschen. Kontrollieren Sie vorher über die Ordner Ressourcen, dass der Ordner wirklich leer ist. Nur dann können Sie sicher sein, dass alle Skripte auch umkonfiguriert sind. Es ist hilfreich das Diagnoseprotokoll auf dem Exchange Server zu aktivieren. Nach einem Neustart des EventService auf dem Server wird im Eventlog protokolliert, welche Ordner der EventService überwacht.

Client Scripte

Neben den Skripten, die die Exchange 5.5 Skript Engine bzw. Exchange 2000 auf dem Server ausführt, sind auch mit Outlook umfangreiche Skripte möglich. Allerdings laufen diese Skripte natürlich nur, wenn Outlook aktiv ist. Ist kein Outlook gestartet, dann kann auch kein Skript ablaufen. Insofern eignen sich diese Skripte nur, wenn Outlook permanent läuft oder die Ausführung nur notwendig ist, wenn der Anwender aktiv angemeldet ist.

Hier ein Beispielskript, um eingehende Mails von HTML nach TEXT zu konvertieren. Das Programm funktioniert nur mit Outlook 2002. Starten Sie einfach den Outlook Skript Editor  (ALT-F11) und fügen Sie das Programm ein:

Private Sub Application_NewMail()
  Dim objNameSpace As NameSpace
  Dim objInbox As MAPIFolder
  Dim objNachricht As Object

  Set objNameSpace = Application.GetNamespace("MAPI")
  Set objInbox = objNameSpace.GetDefaultFolder(olFolderInbox)

  ActiveExplorer.ShowPane olPreview, False für Each objNachricht In objInbox.Items
  If objNachricht.UnRead = True _
    and objNachricht.GetInspector.EditorType = olEditorHTML Then
  objNachricht.BodyFormat = olFormatPlain
  objNachricht.Save
  End If
Next

ActiveExplorer.ShowPane olPreview, True
End Sub

Events per OWA

Eine nette und hilfreiche Funktion zur Kontrolle der aktuellen Events bietet auch OWA. Über die besondere URL http://servername/public/non_ipm_subtree/ ist es möglich, in die Systemordner zu schauen. Ein Blick auf die Events Ordner zeigt dann folgendes Bild:

So kann man auch schnell mal nachsehen, welche Events auf einem Server hinterlegt sind.

Weitere Links