InboxProcessor
Achtung
Dieses VBSkript ist nicht "Cloud-fähig und viele Jahre alt. Ich habe noch keinen "Nachfolger" aber wenn, dann würde
der sicherlich in Powershell unter Nutznug der EWS-API entstehen. Zudem kann Exchange 2013 und neuer sehr viele Dinge über Server-Regeln.
VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur
instanziieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird,
welcher unter C:\Windows\SysWOW64\cscript.exe liegt.
E-Mails werden heutzutage nicht nur für die Kommunikation zwischen Menschen genutzt sondern dienen auch zur Übertragung von Systemnachrichten an an andere Prozesse. Auch Exchange kann hierfür genutzt werden, wenn man weiß, wie man an solch einen Posteingang per Skript kommt. Dazu gibt es gleich viele Wege zu Exchange:
- MAPI/CDO
Alte klassische aber einfacher Zugriff auf Postfächer - WebDav/WebService
Diese Schnittstelle sollten Sie für zukünftige Projekte bevorzugen. - ExOLEDB
Der Zugriff über diese datenbankähnliche Schnittstelle erfordert, dass das Programm direkt auf dem Exchange Server gestartet wird. - StoreSink
Erlaubt die "sofortige" Verarbeitung eingegangener Mails, aber ist nicht einfach zu entwickeln. - POP3/IMAP4
Gerade in gemischten Umgebungen gibt es auch diese Schnittstellen, um automatisiert ein Postfach zu lesen und zu leeren. Besonders wenn Fremdsysteme (UNIX) Daten abholen müssen, wird POP3 immer noch gerne genutzt, wenn eine direkte Zustellung per SMTP nicht möglich ist.
Der einfachste und zugleich ungefährlichste ist Natürlich ein Programm, welches den Posteingang regelmäßig öffnet, liest und die neuen Mails entsprechend verarbeitet. Die Logik in diesem Skript ist in mehreren anderen Tools der MSXFAQ schon vorhanden, z.B. in End2End-SMTPflow. Da es aber nicht jeder einen bestehenden Code einfach anpassen kann, haben ich hier ein Skript bereit gestellt, welches über Konstanten am Anfang ganz einfach konfiguriert werden kann und ein vorgegebenes Postfach öffnet und die Mails von einem Absender liest und die Anlagen in ein Verzeichnis abspeichert. Das Skript ist sicher verbesserungsfähig. So muss es per Taskplaner immer wieder gestartet werden, da es kein "Dienst" ist und der Zugriff per CDO ist Natürlich nicht zukunftssicher.
Vielleicht schaffe ich es mal zu späterer Zeit dieses Skript in einer .NET-Sprache als Dienst zu schreiben und die neuen Zugriffswege von Exchange (WebDav bzw. WebService) zu nutzen. Aktuell ist es ein einfaches VBScript. Hier schon mal ein par Links:
- Inbox management and EWS in Exchange
https://msdn.microsoft.com/en-us/library/office/dn481312(v=exchg.150).aspx - Working with Inbox rules by using the
EWS Managed API 2.0
https://msdn.microsoft.com/en-us/library/office/ff597937(v=exchg.80).aspx - How to: Manage Inbox rules by using EWS
in Exchange
https://msdn.microsoft.com/en-us/library/office/dn481313(v=exchg.150).aspx - Vorgehensweise: Verwalten von
Posteingangsregeln mithilfe von EWS in
Exchange
https://msdn.microsoft.com/de-de/library/office/dn481313(v=exchg.150).aspx
Oder Sie schauen sich verschiedene Drittprodukte an. Hier eine Auswahl (ohne Bewertung)
- Mit Outlook empfangene E-Mails und
E-Mail-Anhänge nach individuellen Regeln
automatisch verarbeiten
https://www.gillmeister-software.de/produkte/automatic-email-processor/start.aspx - Globales Regelsystem für Exchange Server
nutzen, Vorgänge automatisieren
https://www.jam-software.de/exchange_server_toolbox/regelsystem_exchange_server.shtml - MailReRouting Agent 2.6
http://www.gangl.de/cms/automatisierung.html?product=OLXSK_MailReRouting
Download und Konfiguration
Für den Einsatz sind ein paar Voraussetzungen zu schaffen:
- AD-Benutzer mit Exchange Postfach
Sie müssen Natürlich einen aktiven Active Directory Benutzer anlegen, damit Sie das Postfach in Exchange 2000/2003/2007 auch konfigurieren können. Idealerweise nutzen Sie dann diese Anmeldedaten auch zur Ausführung des Skripts. - Skript Downloaden
- Skript konfigurieren
Nach dem Download sollten Sie das Skript in einem leeren Verzeichnis ablegen und mit einem Editor die entsprechenden Konfigurationseinstellungen vornehmen. Die entsprechenden Verzeichnisse muss es Natürlich auch geben.
Const STRHOMESERVER = "srv01" ' homeserver of the test mailbox Const STRMAILBOX = "Administrator" ' Alias der Mailbox Const STRSENDER = "SenderAnzeigename" ' Filter für FROM-Addresses (Must be Displayname ) Const STRALERTMAIL = "frank.carius@msxfaq.local" ' Adresse um im Fehlerfall Alarme zu senden Const OUTCSVFILENAME = ".\InboxProcessor.csv" 'Pfad und Name der CSV-Protokolldatei" Const ATTACHMENTPATH = ".\" 'Pfad und Name für die abgetrennten Anlagen
- Skript ausführen lassen
Zuerst wird man sich Natürlich mit dem Benutzer selbst anmelden und das Skript einfach mal mit CSCRIPT starten und die Funktion prüfen. Das Skript schreibt ausführliche Protokolldateien. Wenn die Funktion gegeben ist, dann sollte man die Protokollierung Natürlich auf das notwendige Minimum reduzieren und z.B. bei Fehlern im Eventlog einen Eintrag hinterlassen, der dann von einem Überwachungsprogramm ausgewertet werden kann - Skript als Hintergrundprozess einbinden.
Solange das VBScript selbst kein Dienst ist, können Sie dieses per Taskplaner immer wieder starten lassen oder mit Tools wie SRVANY als Dienst starten. Sie müssen dann allerdings im VBScript noch eine Schleife einbauen, dass nach einer Wartezeit das Skript wieder von Vorne startet.
Wichtige Fakten
Auch wenn ein VBScript per CDO einfach in einem Postfach "arbeiten" kann, so sollten Sie folgende Faktoren klären:
- gleichnamige Anlagen
Das Skript hat aktuell keine Fehlerbehandlung für gleichnamige Anlagen. Sollte also mehrere Mails mit identischen Anlagen kommen, dann kommt es zu einem Konflikt. - fälschungen und Sicherheit
Das Skript verarbeitet nur Mails von einem bestimmten "Anzeigenamen". Es ist Natürlich möglich, dass jemand eben auch eine Mail an dieses Postfach mit dem gefälschten Absendernamen sendet. Sie sollten sich Gedanken über die Validierung der erhaltenen Informationen machen. - Irrläufer
Das Skript verarbeitet nur Mails von einem bestimmten "Anzeigenamen". Fakt ist aber auch, dass in diesem Postfach sicher irrtümlich Mails landen werden. Spam oder einfach ein Vertippen bei einer Mailadresse etc. kann dies auslösen. Das Skript kann solche Mails einfach löschen. Aktuell ist dieser Teil aus Sicherheitsgründen noch auskommentiert. Bitte aktivieren Sie den Eintrag entsprechend, wenn sicher ist, dass in dem Postfach keine anderen Mails liegen - Alarmüberwachung
Das Skript schreibt Logdateien und optional sogar Eventlog Einträge und Fehlermails. da so ein Skript ja "ohne weitere Überwachung" abläuft, sollte zumindest dieses Feedback ausgewertet werden - Funktionsüberwachung
Das Skript kann aber keinen Alarm schlagen, wenn es nicht läuft. Also sollte eine andere Instanz eben prüfen, ob das Skript sauber gelaufen ist (z.B.: indem es den Start und das saubere Ende anhand einer Eventlog-Meldung prüft.