Grp2Quota

Grp2Quota ist ein VBScript, welches regelmäßig gestartet werden sollte und die Quota-Einstellungen von Exchange Mailboxen anhand von Gruppenmitgliedschaften setzt. So ist eine einfache Policy-ähnliche Konfiguration möglich.

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 instanziieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird, welcher unter C:\Windows\SysWOW64\cscript.exe liegt.

Version 2.0 arbeitet komplett anders als 1.0. Bei Version 1.0 waren die Gruppennamen selbst Teil der Konfiguration, was es aber einem OU-Admin erlaubt hätte, sich eigene Gruppen anzulegen und eigene Limits zu definieren. Version 2.0 nutzt nur die Gruppen, die im Skript selbst gepflegt werden.

Das Skript funktioniert auch mit Exchange 2007/2010, weil die Felder und deren Bedeutung die gleichen sind. Schicker währe hier natürlich eine Pflege per PowerShell. Siehe dazu auch Dynamische Quotaeinstellungen

Die Mailboxgrenzwerte von Exchange erlauben es dem Betreiber, dem unbegrenzten Wachstum von Postfächern Grenzen aufzuzeigen. Mailboxgrenzwerte können dazu an mehreren Stellen eingestellt werden:

  • Mailbox individuell
    Wie können auf der Mailbox einstellen, dass nicht die Defaults des Mailboxstore gelten, sondern abweichende Einstellungen für diese eine Mailbox. Diese Einstellung überschreibt alle anderen Einstellungen
  • Mailboxstore direkt
    Wenn alle Benutzer einer Mailboxdatenbank die gleichen Einstellungen nutzen sollen, dann kann die Einstellung auch auf dem Mailboxstore erfolgen
  • Mailboxstore per Richtlinie
    Wenn die mehrere Mailboxdatenbanken "gleich" behandeln wollen, dann ist eine Serverrichtlinie in Exchange ein Weg, alle Server "gleich" zu behandeln.

Die Einstellungen auf der Mailboxdatenbank ist daher ein idealer Weg einen "Default" für alle darin enthaltenen Mailboxen vorzugeben und dann pro Benutzer eventuell abweichende Einstellungen durchzuführen.

Eine flexible Vergabe von Grenzwerten über Gruppen oder anhand von LDAP-Filtern ist von Hause aus nicht möglich. Genau das ist aber eine Anforderung von Firmen, die auf einem Exchange Server in der gleichen Datenbank verschiedene Benutzerprofile haben und andererseits nicht bei jedem Benutzer manuell die Einstellungen durchführen wollen. Hierbei hilft Grp2Quota.

Wie arbeitet Grp2ExInet ?

Grp2ExInet verbindet sich mit dem Active Directory um eine Liste der Exchange Benutzer zu erhalten. Nur für die sind die Quota-Einstellungen relevant. für jeden Benutzer wird dann die Liste der Gruppenmitgliedschaften ausgelesen und mit der Liste der definierten Quota-Einstellungen je Gruppe verglichen.

arrQuotagroup  = array (array("cn=GRP2Quota-0,ou=GRP2Quota,dc=msxfaq,dc=local","IGNORE","IGNORE","IGNORE"),_
                        array("cn=GRP2Quota-1,ou=GRP2Quota,dc=msxfaq,dc=local","200000","250000","300000"),_
                        array("cn=GRP2Quota-2,ou=GRP2Quota,dc=msxfaq,dc=local","300000","350000","400000"),_
                        array("cn=GRP2Quota-3,ou=GRP2Quota,dc=msxfaq,dc=local","500000","550000","600000"))

Ist der Benutzer Mitglied einer Gruppe in der Liste, dann werden die dort hinterlegten Grenzen angewendet. Ist der Benutzer in keiner Gruppe Mitglied, dann werden die Default-Werte für diese Mailbox eingetragen. Effektiv sind dann wieder die Grenzwerte der Mailboxdatenbank aktiv. Über die Gruppe mit den dreimal "IGNORE" kann man Personen von einer Behandlung durch GRP2QUOTA ausschließen.

In welcher OU die Gruppen liegen ist dabei irrelevant, solange die Gruppe als "MemberOf" beim Benutzer aufgelistet wird. Beachten Sie, dass das Feld "MemberOf" nicht immer alle Gruppen enthält. So werden hier keine lokale Gruppen vertrauter Domänen aufgeführt. Nutzen Sie für die Steuerung daher am besten universelle Gruppen oder Verteiler. In Inhalt von "MemberOf" können Sie einfach per LDAP überprüfen. LDIFDE, Softerra LDAP-Browser, ADSIEDIT)

GRP2QUOTA wendet die erste gefundene Einstellung an, wenn ein Anwender in mehreren Gruppen enthalten sein sollte.

Grp2Quota überprüft vorher nicht, ob das Postfach größer ist sondern wendet die Einstellungen ohne weitere Rückfrage an. Grp2Quota überschreibt ohne weitere Rückfrage eventuell manuell gesetzte Einstellungen !

Download und Anpassungen

Um Grp2Quota in ihrem Netzwerk einzusetzen müssen Sie daher folgende Schritte durchführen:

Eintragungen im Active Directory

  • Entsprechende Gruppen anlegen.
    Legen Sie für die verschiedenen Grenzwertkonfigurationen entsprechende Gruppen an. Wenn Sie ein delegiertes Administrationsmodell haben, könnte es durchaus sein, dass Sie diese Gruppen in einer "geschätzten" OU anlegen, so dass nur ausgewählte Personen diese Mitgliedschaften pflegen können.
  • Benutzer in die entsprechenden Gruppen aufnehmen
    Nehmen Sie die Mitarbeiter in die gewünschte Gruppe auf. Bei einer Mitgliedschaft in mehreren Gruppen wird erste im Skript definierte Gruppe angewendet.
  • Optional Default Policies auf den Mailboxstores setzen.
    Alle Mitarbeiter, die in keiner Quota-Gruppe enthalten sind, erhalten die "Default Einstellungen". Daher sollten Sie auf jedem Mailboxstore zumindest diese Quota-Einstellungen auf sinnvolle Standardwerte setzen. Der Betrieb eines Servers ohne Grenzwerte kann ich nicht empfehlen, da so ein Anwender (Absichtlich oder unabsichtlich, z.B. Schleifen, Viren etc.) den ganzen Serverbetrieb gefährden kann)

Download

Der Download legt eine TXT-Datei an, die Sie nach VBS umbenennen müssen.

Das Skript funktioniert auch mit Exchange 2007/2010, weil die Felder und deren Bedeutung die gleichen sind. Schicker währe hier Natürlich eine Pflege per PowerShell.

grp2quota.2.1.vbs.txt
Herunterladen und die Erweiterung in VBS ändern und nach den Anpassungen mit CSCRIPT starten

Starten Sie das Skript nicht ohne die nachfolgenden Anpassungen

Anpassungen im Skript

  • Default Domain konfigurieren
    Aufgrund der "schreibenden Funktion" des Skripts erwartet das Skript die Definition der Basisdomain bzw. OU, ab der die Suche stattfinden soll. Editieren Sie daher die folgende Zeile im Skript. Ein paar Muster sind als Kommentare schon vorhanden.

Const conDNSDomain = "dc=ihredomain,dc=ihretld"
' Const conDNSDomain = "dc=msxfaq,dc=local"
' Const conDNSDomain = "ou=GRP2Quota,dc=msxfaq,dc=local"

  • Quota-Gruppen Eintragen
    Tragen Sie alle Quota-Gruppen mit den entsprechenden Einstellungen im Script analog zu den Beispielen ein.
  • Grp2Quota "Write"-aktivieren
    Das Skript ist mit einem Schreibschutz versehen. Sie müssen am Anfang die Konstante "action" auf "write" stellen, damit das Skript die Werte auch tatsächlich zurück schreibt. So können Sie das Skript gefahrlos starten und die Ergebnisse in der XML-Datei kontrollieren, ehe Sie das Skript dann als regelmäßige Aufgabe einrichten. Wenn die erwarteten Einstellungen durchgeführt werden, dann kommentieren Sie bitte einfach die Zeilen entsprechend um.

Const action = "readonly"
' Const action = "write"

Damit diese "Richtlinien" regelmäßig ablaufen, sollten Sie das Skript z.B. mit dem Windows Taskplaner regelmäßig ausführen lassen. Gesonderte Funktionen zur Überwachung (Eventlog, etc.) sind nicht realisiert.

Exchange 2007/2010 Version

In Exchange 2007/2010 gibt es durch die PowerShell sehr leistungsfähige Möglichkeiten, solche Aktionen auszuführen. passende Befehle dazu sind.

  • get-group
  • Get-DistributionGroupMember
  • Set-Mailbox -Identity user -IssueWarningQuota xxx -ProhibitSendQuota yyy -ProhibitSendReceiveQuota zzz -UseDatabaseQuotaDefaults $false

Mit diesen Befehlen können Sie Natürlich auch einfach über eine Verkettung die Mitglieder einer Gruppe ermitteln und diese an Set-Mailbox zu übergeben.

Weitere Links