Tools: Group2ExInternet

Alle Skripte sind Muster ohne jede Gewährleistung oder Funktionsgarantie. Für Schäden bin ich nicht verantwortlich. Achten Sie auf Zeilenumbrüche bei der Übernahme.

VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur instanzieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird, welcher unter C:\Windows\SysWOW64\cscript.exe liegt.

Version 4.0
Mit der Version 4.0 wird auch Exchange 2003 SP2 berücksichtigt, so dass Sie allein über Gruppenmitgliedschaften steuern können, wer nicht per MAPI oder wer nur per CachedMode arbeiten darf.

Exchange 2007/2010 erlaubt selbst per Powershell sehr viele Änderungen.
Beachten Sie dazu auch GRP2CAS und die Informationen am Ende dieser Seite

Mit der Installation von Exchange 2000/2003 können die Anwender auch weiterhin mit POP3, IMAP4 aber per OWA und OMA auf den Exchange Server zugreifen. Sehr häufig ist aber genau dies nicht gewünscht, dass Anwender per POP3 unverschlüsselt auf ihr Postfach zugreifen.

Die Lösung klingt erst mal einfach: Deaktivieren Sie einfach beim Benutzer die Erlaubnis für POP3. Leider ist dies aber nicht über Gruppenmitgliedschaften, Berechtigungen oder Gruppenrichtlinien zu regeln, sondern eine Einstellung pro Benutzer.

Die Konfigration steht dabei in den beiden Feldern

Natürlich ist auch ein globales Abschalten auf dem Exchange Server (virtuellen POP3 Server beendet, IP-Restrictions pflegen etc.) möglich. Aber dies ist oft nicht gewünscht,  da bestimmte Dienste z.B.: per POP3 ihre Systemnachrichten abholen.

Was macht GRP2ExInet ?

Das Skript "grp2exInet" macht nichts anderes, als alle Exchange Postfächer der aktuellen Domäne sequentiell abzuarbeiten und zu prüfen, ob das jeweilige Benutzerobjekt in den angegebenen Gruppen enthalten ist. Es gibt vier Gruppen, die im Skript als Konstanten hinterlegt sind.

Wenn der Benutzer in der Gruppe enthalten ist, werden die Eigenschaften auf den einen Wert gesetzt, ansonsten eben auf den anderen Wert.

Gruppe Aktionen für Mitglieder Aktionen für nicht Mitglieder
conPOP3GRP Benutzer erhält POP3-Berechtigung Kein Zugriff über POP3 möglich
conIMAP4GRP Benutzer erhält IMAP4-Berechtigung Kein Zugriff über IMA4 möglich
conOWAGRP Benutzer erhält OWA-Berechtigung Kein Zugriff über OWA möglich
conOMAGRP Benutzer erhält OMA-Berechtigung Kein Zugriff über OMA möglich
conNoMapiGRP Überhaupt kein MAPI-Zugriff. Aber RPC over HTTP möglich Mapi abhängig von der Gruppe vonMapiCacheOnlyGRP möglich
vonMapiCacheOnlyGRP Cached Mode wird erzwungen !!
wenn nicht Mitglied in conNoMapiGRP
Gewohnter MAPI-Zugriff ohne Einschränkungen
wenn nicht Mitglied in conNoMapiGRP

Damit aus dieser Logik eine Art "Richtlinie" wird, müssen Sie natürlich das Skript regelmäßig starten.

Achtung: Das Script bearbeitet ALLE Exchange Postfächer. Benutzer, die nicht in der Gruppe enthalten sind, wird das Rechte entzogen.

Achtung
Das Skript prüft nur direkt,  ob der Benutzer Mitglied der Gruppe ist. Eine Verschachtelung von Gruppen wird nicht berücksichtigt, d.h. wer z.B. nur in einer Gruppe Mitglied ist, die ihrerseits in der POP3-Gruppe enthalten ist, erhält trotzdem keine POP3-Berechtigungen, sondern bekommt diese entzogen.

Fokus: Eine Domäne
Das Script beschränkt sich auf eine Domäne. Eine Bearbeitung von Benutzern in mehreren Domänen des gleichen Forest ist mit diesem Skript nicht möglich.

Download und Anpassung

Zuerst benötigen Sie das VBScript. Der Download legt eine TXT-Datei an, die Sie nach VBS umbenennen müssen.

grp2exinet.4.0.vbs.txt
Bitte Downloaden und die Erweiterung auf VBS umändern.

In meinen Testumgebungen und bei Kunden hat dieses Script bislang problemlos funktioniert. Trotzdem kann es sein, dass das Script unerwartet abbricht. Dies liegt oft an Sonderzeichen oder Inhalten im AD, die ich noch nicht abgefangen habe. Bitte setzen Sie dann das Debugging auf 6 und senden Sie mir die letzten Zeilen der Protokolldatei und die Zeilennummer des Fehlers des Scripting Hosts. -> Kontakt

Ehe Sie nun das VBS direkt aufrufen, sollten Sie die Parameter und Voraussetzungen kennen. Wesentliche Einstellungen sind als Konstanten im Code hinterlegt und entsprechend zu ändern.  Das Skript benötigt den Namen der Gruppe, die anzupassen ist. Nur die Mitglieder dieser Gruppe haben danach noch die Berechtigung, Exchange über die Internet Protokolle zu erreichen. Alle anderen Postfächer können weder POP3, IMAP, OWA, OMA noch ActiveSync nutzen.

Da VBScript aber als Sourcecode vorliegt ist es problemlos möglich, das Skript an eigene Bedürfnisse anzupassen. Dies ist auch erforderlich. Die folgenden Zeilen müssen Sie anpassen:

Const conPOP3GRP = "cn=pop3group,ou=groups,dc=msxfaq,dc=local"
Const conIMAP4GRP = "cn=imap4group,ou=groups,dc=msxfaq,dc=local"
Const conOWAGRP = "cn=owagroup,ou=groups,dc=msxfaq,dc=local"
Const conOMAGRP = "cn=omagroup,ou=groups,dc=msxfaq,dc=local"
Const conNOMAPIGRP = "cn=nomapigroup,ou=groups,dc=msxfaq,dc=local"
Const conMAPICACHEONLYGRP = "cn=mapicacheonlygroup,ou=groups,dc=msxfaq,dc=local"
const conDNSDomain = "dc=msxfaq,dc=local"

Sie müssen hier die Gruppen eintragen, deren Mitglieder für die entsprechenden Protokolle frei geschaltet werden und die Zieldomäne für die Änderungen.

Aufruf und Ausgabe

Damit nicht durch einen versehentlichen Aufruf des Skripts ein Schaden entsteht, gibt es einen Parameter "action", der per Default auf "readonly" steht. Wenn Sie so das Script aufrufen, dann erhalten Sie meist eine Fehlermeldung, dass ein Objekt nicht zu finden ist. Sie haben dann vergessen, die Gruppen in den Konstanten zu definieren.

Wenn Sie dies durchgeführt haben, dann startet GRP2EXINET nur im "ReadOnly" Mode, d.h. das Skript tut alles, außer in das AD zurück zu schreiben. Sie können aber die Ausgabe problemlos anzeigen.

Wenn Sie dies dann wirklich aktivieren wollen, müssen Sie auch die Action aktivieren:

const action = "write"

Erst dann werden die Änderungen auch bei den Benutzern zurück geschrieben.

Sie starten das Script am besten auf einer Kommandozeile mit:

cscript grp2exinet.3.0.vbs

Das Skript schreibt ein Protokoll seit Version 3.0 in eine XML-Datei mit einem passenden XSL-Stylesheet im aktuellen Verzeichnis. Den Pfad können Sie im Skript anpassen. Denkbar ist z.B. auch eine Überwachung mit Programmen wie MOM2005 etc. Die Ausgabe selbst können Sie als XML-Datei mit jedem Editor oder dank des mit generierten Stylesheets z.B. mit dem Internet Explorer anzeigen.

Um vorherige Protokolldateien nicht zu überschreiben, wird an den Dateinamen ein Zeitstempel addiert. Stellen Sie daher sicher, dass Sie die letzte XML-Datei öffnen. Die farbliche Codierung erlaubt ihnen eine einfache Erkennung, welche Parameter bei diesem Durchlauf geändert wurden (gelb). Die grünen Felder zeigen alle unveränderten aktiven Einstellungen und grauen Felder alle unverändert deaktivierten Optionen. Alle Objekte, bei denen das Feld "ProtocolSettings" zurück geschrieben wurden werden rechts dann noch einmal gelb aufgelistet.

Änderungen mit ADMODIFY

Wenn Sie keine Zeit oder Muße haben, diese Berechtigungen mit Gruppen und einem Script zu ändern, dann ist ADModify.NET das Richtige für sie:

Details finden Sie auf Tools ADModify.NET.

Einschränkungen und Hinweise

Das Script hat einige Entwicklungsphasen durchlaufen. Ursprünglich war nur eine Gruppe vorhanden, die global den Zugriff auf die Internet Protokolle POP3, IMAP4, OWA, OMA und ActiveSync gesteuert hat. Das war aber zu unflexibel. Da aber alle Objekte kontrolliert werden müssen und eine LDAP-Abfrage auf das Feld "protocolSettings" aufgrund der Mehrwertigkeit nicht möglich ist, dauert der Durchlauf des Skripts einige Zeit.

Der untere Teil des Skripts mag etwas komisch aussehen, aber ich versuche über diverse Abfragen sicherzustellen, dass das Skript nur dann eine Einstellung zurück schreibt, wenn sich diese auch geändert hat. Das ist bei einem einzeiligen Feld wie "msExchOmaAdminWirelessEnable" noch sehr einfach. Aber das Feld "protocolSettings" ist ein Array und je nach dem, ob das Feld nicht da ist, nur eine Zeile oder mehrere Zeilen Enthält müssen verschiedene Abfragen die übliche "Typen sind unverträglich" Fehlermeldung von VBScript abfangen. Zudem kann das Skript zwar das Feld "ProtocolSettings" schreiben, aber bei einem erneuten Lesen kann die Reihenfolge der Inhalte verdreht sein, Daher scheitert ein einfaches "Join" um aus zwei ARRAYS einfach zu vergleichen.

Ich behaupte nicht, dass mein Code perfekt und schön ist, aber bei mir und meinen Kunden funktionieren die Skripte. Sie sind gerne eingeladen, mir Verbesserungen und Hinweise zu senden.

Exchange 2007

Die meisten Funktionen dieses Skripte funktionieren auch mit Exchange 2007. Aber Exchange 2007 kann noch viel mehr und durch die Nutzung der Powershell werden sogar offizielle APIs genutzt. Hier ein paar Beispiele.

get-mailbox -OrganizationalUnit "dc=msxfaq,dc=de" -RecipientTypeDetails usermailbox | set-casmailbox -OWAEnabled $false -ImapEnabled $false -PopEnabled $false

Die Werte der Protokolle POP3, IMAP4 etc. stehen weiterhin unter "ProtocolSettings". Die Individualeinstellungen, welche Ordner z.B. in OWA erreichbar sind, sind allerdings in einem Feld namens "msExchMailboxFolderSet" gewandert, welches als Bitmaske die Funktionen aktiviert oder deaktiviert.

Bit OWA Funktionalität Dezimal Hexadecimal value
0 Messaging 1 1
1 Calendar 2 2
2 Contacts 4 4
3 Tasks 8 8
4 Journal 16 10
5 Sticky notes 32 20
6 Public folders 64 40
7 Reminders 128 80
8 New mail notification 256 100
9 Rich client 512 200
10 Spelling checker 1024 400
11 S/MIME 2048 800
12 Search folders 4096 1000
13 Signature 8192 2000
14 Rules 16384 4000
15 Themes 32768 8000
16 Junk e-mail 65536 10000
17 Exchange 2007 Feature    
18 Exchange 2007 Feature    
XX All features 4294967295 FFFFFFFF

Aktuell habe ich keine Pläne diese Funktion in das Skript mit zu integrieren, da die Powershell schon entsprechende Wege anbietet. (Diese Feld gab es bei Exchange 2003 schon im Webserver aber wohl noch nicht bei den Anwendern

Es gibt eine einfache Powershell-Version zum Steuern von CAS-Funktionen über Gruppenmitgliedschaften auf GRP2CAS

ISA als Reverse Proxy

Wenn Sie einen ISA-Server zwischen das Internet und Exchange geschaltet haben, dann kann auch schon dieser Server die Authentifizierung der Anwender übernehmen. Der ISA kann dabei sogar auch anhand von Windows Gruppen bestimmen, welcher Personenkreis auf bestimmte URLs zugreifen darf. So können Sie zumindest für OWA ebenfalls eine Steuerung auf Berechtigungsgruppen realisieren, ohne mit GRP2EXINET zu arbeiten.

Weitere Links

Keywords:QBDG Querybased VBScript Tools Gruppen