Exchange 2007 RUS - English

Diese Information ist auch auf Deutsch verfügbar. Siehe E2K7:RUS

 

 

Hello, the most pages of these web are german and many administrators are using google translation to get a machine translated version of the content. But a few pages are important and interesting. So i take some minutes to translate them manually. If you are native english speaking and want to correct it, your feedback is welcome.

 

 

 

 

 

Wie sie auf Exchange RUS und E2K7 Empfängermanagement sicher schon gelesen haben, gibt es seit Exchange 2007 keinen RUS mehr. Während Sie also früher einfach per LDAP ein paar Felder gefüllt haben (z.B. Mailnickname, HomeMDB und Mail) und der RUS auf dem Server dann die restlichen Felder nach einiger Zeit ergänzt hat, so müssen Sie bei Exchange 2007 nu komplett selbst dafür sorgen, die Felder alle richtig zu setzen. Natürlich helfen ihnen dabei die Powershell Commandlets zu Exchange und auch die Exchange 2007 Management Shell macht alles richtig, aber was ist mit all den anderen Tools ?

Achtung:
Beim ersten Durchlauf verarbeitet alle Benutzer auf Exchange 2007. Das ist eigentlich kein Problem., da die Durchsetzung der Richtlinien schon erfolgt ist. Es kann aber trotzdem sein, dass die Proxy-Adressen der Personen wieder "korrigiert" werden.
Lösung: Entweder die Adressen sichern oder E2K7RUS im "Single Step"-Mode laufen lassen. Hierbei stoppt das Skript, wenn es eine Änderung der Proxy-Addressen erkannt hat. Sie können dann Abbrechen, die Konfiguration anpassen und die Einstellung wieder zurück setzen. Oder die Adressen vorher exportieren (153028 XADM: How to Export Multiple (Secondary) E-mail Addresses und 922258 How to use a VBScript to write proxy addresses to an Ldifde.exe-compatible import file in Exchange Server 2003)

Das Problem

Wenn Sie heute z.B. eine Provisioning Anwendung haben, die ohne Rücksicht auf Exchange 2007 einfach per LDAP die Felder beschreibt, dann kann das zu ernsthaften Problemen führen. Auch die Konfiguration von Empfängern über die Exchange 2003 Snapins der MMC hinterlassen manchmal unvollständige Objekte. Nutzen sie doch einfach mal CheckExObjects um "defekte" oder unvollständige Objekte zu finden. Sie werden erstaunt sein.

Bislang war die Antwort von Microsoft hier recht einfach: Der Administrator sollte einfach folgendes Befehle immer mal wieder ausführen:

Get-EmailAddressPolicy | Update-EmailAddressPolicy
Get-AddressList | Update-AddressList
Get-GlobalAddressList | Update-GlobalAddressList

Diese Commandlets holen sich nacheinander alle Adresslisten, Empfängerrichtlinien und globale Adresslisten und starten einen vollständigen Durchlauf der Empfängerprüfung und Korrektur. Diese Verfahren mag funktionieren, aber hat doch einige Einschränkungen. die drei größten Probleme sind:

Mit Exchange 2007 SP1 hat Microsoft aber das "SET-MAILBOX"- Commandlet erweitert. Darauf setzt das folgende Skript auf.

Allerdings werden somit nur die Konten bearbeitet, die wirklich auch auf Exchange 2007 sind. In einer gemischten Umgebung muss der Exchange 2000/2003 RUS also weiter aktiv bleiben. E2K/RUS kann also den Exchange 2000/2003 RUS nicht komplett ersetzen.

Eine weitere Fragestellung kann mit E2K7RUS gleich mit erschlagen werden. Viele Firmen hätten gerne nach dem Anlegen eines Benutzers gleich einige weitere Parameter gesetzt. Über einen einfachen SET-MAILBOX können diese Änderungen ebenfalls anwenden z.B.

Sie können an dieser Stelle quasi alle eigenen Erweiterungen addieren, um Benutzer korrekt zu konfigurieren, selbst wenn ein Operator den Benutzer mit den alten MMC-Tools oder Drittprodukten anlegt. Allerdings sind diese Funktionen noch nicht im Code vorhanden und müssten entsprechend entwickelt bzw. eingebunden werden.

Die Lösung und die Funktionsweise

Das Comandelt "SET-MAILBOX" hat mit Exchange 2007 SP1 den neuen Parameter "-ApplyMandatoryProperties" bekommen. Damit kann der Administrator eine einzelne Mailbox gezielt "updaten". Das Problem hierbei ist nur, dass auch dieses Comandlet keine Ahnung hat, welche Objekte nun neu oder geändert wurden.

Genau diese Logik liefert nun E2K7RUS.PS1 mit. An der Endung erkennen Sie schon, dass es sich um ein Powershell Skript handelt, welches man z.B. auf einem Server mit den Exchange 2007 Management Tools in der Exchange Laufzeitumgebung starten muss. Grob lässt sich folgendes Bild als Flussdiagramm zeichnen:

Flussdiagramm

Die Funktion ist als ganz einfach umschrieben. Ein konfiguriertes AD-Objekt wird als Speicher für die zuletzt verarbeitete USN genutzt, um beim folgenden Aufruf einfach per Filter nur die Objekte zu verarbeiten, die neuer sind. Das Skript selbst wird aktuell per Windows Taskplaner regelmäßig mit einem Konto gestartet, der sowohl Schreibrechte auf das Hilfsobjekt hat, als auch "Exchange Recipient Administrator" ist, damit er alle für Exchange relevanten Attribute pflegen kann.

Fehlerverarbeitung
Das Skript E2K7RUS bleibt im Gegensatz zum Exchange 2000/2003 RUS nicht bei Fehlern am Objekt hängen. Fehler werden im Eventlog protokolliert und Sie müssen sich selbst darum kümmern. E2K7RUS verarbeitet diese Objekte erst wieder, wenn die USN sich geändert hat.

Wenn Sie daher Exchange 2007 im Einsatz haben und mit einer fremden Anwendung die Exchange Empfänger in ihrer Organisation pflegen, dann reicht für die Neuanlage eines neuen Benutzers das Füllen der folgenden Werte:

  1. AD-Benutzer per LDAP, MMC o.ä. anlegen
  2. ExchangeHomeServer mit dem DN des Postfachservers füllen
  3. HomeMDB mit dem DN der Datenbank füllen
  4. MailNickname entsprechend der Namenskonvention anlegen
  5. ExchangeMailboxGUID mit einer zufälligen GUID füllen.

Der erste Durchlauf von "SET-MAILBOX -ApplyMandantoryProperties" erledigt dann den Rest, um einen vollwertigen Benutzer daraus zu machen. Natürlich können Sie auch weitere Einstellungen (POP3, OWA, Quota etc.) vornehmen.

Download und Konfiguration

E2K7RUS ist ein Skript, welches nur in ganz speziellen Umgebungen sinnvoll eingesetzt werden kann. Es ist kein Skript für jede Umgebung und kann auch großen Schaden anrichten. Daher überzeuge ich mich lieber selbst von dem geplanten Einsatzzweck.
Informationen, warum diese Skripte nicht öffentlich sind, finden Sie auf nicht public.

Analog zum Exchange 2000/2003 RUS muss natürlich auch ein Skript, welches einen RUS nachbildet, konfiguriert werden. Leider sind die in Exchange 2000/2003 vorhandenen Konfigurationscontainer in einer reinen Exchange 2007 Umgebung nicht mehr vorhanden. Aber irgendwo muss ich mir ja speicher, was die letzte USN für eine Domain war und was liegt näher als das im Active Directory zu hinterlegen.

Die Konfiguration erfolgt über eine XML-Datei, die als Parameter in der Kommandozeile mit angegeben werden muss

<e2k7rus>
	<mode>confirm</mode>
	<dc>e2007</dc>
	<domain>dc=e2k7,dc=msxfaq,dc=net</domain>
	<lastusn>0</lastusn>
	<laststart></laststart>
	<lastend></lastend>
</e2k7rus>

Die Parameter bedeuten im einzelnen

Sie können also problemlos mehrere XML-Dateien anlegen und mit eigenen Zeitplänen aufrufen.

Aufruf: Einmal Update bitte

Starten Sie das Skript unbedingt in einer Powershell MIT Exchange Erweiterungen, Also über die Exchange Management Shell.

Der Aufruf muss dann mit einem Benutzer erfolgen, der zumindest "Exchange recipient Admin" ist. Er muss zudem auf die Exchange Server zugreifen können, da auch Exchange 2007 immer noch auf den MSExchangeAL auf dem Server zugreift.

Hier sieht man den Aufruf von E2K7RUS auf meiner Testumgebung, bei der der Benutzer "Test" anscheinend eine nicht konforme Proxy-Adresse hat. Das Skript liest zuerst die USN des letzten Durchlaufs aus und sucht dann alle neueren Objekte. Für diese Objekte startet es den "SET-MAILBOX" um die Daten zu aktualisieren. 

E2K7 Rus Durchlauf

Das Skript wurde "interaktiv" in der Betriebsart "confirm" aufgerufen. Daher gibt es mir die alten ProxyAddresses und die neuen Adressen untereinander aus und fragt mich, ab es mit den anderen Benutzern weiter machen darf.

Den aktuelle Benutzer hat SET-MAILBOX aber schon geändert. Wen dies also "falsch" wäre, dann müsste ich nun inne halten und die Änderungen manuell wieder Rückgängig machen. Leider gibt "SET-MAILBOX -WhatIf" nicht aus, was es tun würde. man muss also SET-MAILBOX erst wirken lassen und danach die Änderungen vergleichen. Denkbar wäre aber, dass man die Änderungen natürlich gleich wieder zurückschreibt.

In der Betriebsart "confirm" kann der Administrator beim ersten Lauf Benutzer für Benutzer durchgehen und bekommt für Benutzer, die geändert werden (also vorher nicht mit den Richtlinien konform waren) die Rückfrage und kann eingreifen.

Protokollierung

Natürlich protokolliert E2K7RUS jede Aktion, die er tut. Über die Funktion "Start-Transcript" wird jede Aktion, die auf der Console landet, zusätzlich in eine Datei abgespeichert. 

Verzeichnisinhalt

Interessanter ist aber die Funktion des "Changelog", in dem E2K7RUS die Objekte protokolliert, welche beim Verarbeiten auch geändert wurden

Changelog

Im Skript selbst ist der Name der Datei als Konstante hinterlegt. Es ist also problemlos möglich, alles in eine Datei zu schreiben. Mit wenig Aufwand könnte man diese Meldungen sogar per SYSLOG an ein Meldungssystem senden.

Überwachung und Monitoring - Eventlog

Programme und Skripte im Hintergrund werden schnell vergessen. Daher hat es sich unter Windows eingebürgert, dass solche Programme Fehler und Warnungen aber auch Erfolgsmeldungen einfach im Eventlog hinterlassen. Mit der Powershell ist dies sehr einfach möglich, wobei im Gegensatz zu VBScript sogar die Quelle selbst definiert werden kann. Entsprechend schreibt das Skript abhängig von den Debug-Level den Fortschritt in das Eventlog, so dass eine zentrale Überwachung möglich ist.

Eventlog Einträge

Folgende EventIDs kommen dabei zum Einsatz (Source ist immer E2K7RUS, Category ist immer "keine")

Typ ID text Beschreibung
Information 0 E2K7RUS gestartet Zeigt den Start des Skripts an. Das Fehlen des Events kann z.B.: überwacht werden.
Information 1 E2K7RUS beendet Zeigt das Ende des Skripts an.
Error 2 XML not loaded Konnte XML-Datei nicht laden
Error 3 XML not saved Konnte XML-Datei mit letztem USN nicht speichern
Information 102 LastUSN=$lastUSN Zeigt an, welche LastUSN genutzt wird.
Information 103 Search done. Objects found $total Suche hat angegebene Anzahl neuer Objekte zurück gegeben.
Information 200 Processing Object:$adspath Anzeige des aktuell in Bearbeitung befindliches Objekt
Information 201 Start set-mailbox with: $nickname Prüfpunkt vor dem Aufruf von "Set-Mailbox"
Error 202 Error bei set-mailbox User: $nickname Error:$error Set-mailbox hat einen Fehler zurück gemeldet. Dies ist "normal", wenn es sich um eine Systemmailbox handelt. Ansonsten sollten Sie die Eventlog Meldung prüfen.
Information 203 set-mailbox executed with no error Aktualisierung des Objekts ist anscheinend ohne Fehler durchgelaufen
Information 204 New ProxyAddress $proxy2 Ausgabe der neu vergebenen ProxyAdressen
Information 300 Confirmation requested Wenn die Betriebsart "confirm" aktiv ist, dann zeigt dieser Eintrag an, dass der Administrator gefragt wurde, ob die Änderungen OK sind
Error 301 Confirmation rejected. - Stop processing Der Administrator hat die Verarbeitung abgebrochen
Information 302 Confirmation acceptet - continue processing Der Administrator hat die Verarbeitung fortgesetzt.

So können Sie die Funktion von E2K7RUS einfach mit handelsüblichen Überwachungsprogrammen (z.B.: MOM2005 etc. überprüfen.

Debugging

Wer noch mehr Debugging möchte, kann in der Powershell weitere Steuerungen einstellen. Per Default sind alle Debugoptionen aktiv. Suchen Sie nach folgenden Zeilen im Powershell Skript:

Start-Transcript -Path e2k7rus-$starttime.log -Append

$ErrorActionPreference = "Continue"
$verbosepreference = "Continue"
$DebugPreference = "Continue"

Stop-Transcript

Diese Zeilen sind nach der Prüfung an die örtlichen Gegebenheiten anzupassen:

Zukünftige Planungen

Weitere Links

Keywords:E2K7 RUS Set-Mailbox ApplyMandantoryProperties