Add-TargetMailbox
Zu dieser Seite sind TargetAddress, und Schattenpostfachmigration thematisch verwandt.
Vielleicht haben Sie schon die Beschreibung Schattenpostfachmigration gelesen, welche eine Migration aus einem Quellsystem nach Exchange beschreibt, wobei in Exchange von Anfang an echte Postfächer genutzt werden, die mit Hilfe der TargetAddress in das Zielpostfach weiter geleitet werden. Das PowerShell-Skript "Add-TargetMailbox" unterstützt nun bei der Anlage dieser Postfächer, indem es eine Liste (CSV-Datei) über die Pipe akzeptiert und die Postfächer entsprechend anlegt.
Funktionsweise
Für die Migration werden Postfächer im Ziel benötigt, die direkt eine Weiterleitung in das alte System erlauben. Damit die funktioniert, müssen drei Dinge erfüllt sein:
- Eingehendes Routing
Mails an die bereits migrierten Benutzer müssen auch in Exchange landen. Das kann man über Weiterleitungen des Altsystems an Exchange oder über einen generelle Posteingang über Exchange erreichen - Ausgehendes Routing
Exchange muss externe Mails korrekt in das Internet als auch Mails an nicht migrierte Benutzer an das Altsystem senden können. Entsprechend ist das Routing über Send-Connectoren/SMTP-Connectoren einzurichten. - Weiterleitung des Postfachs
Es muss im Active Directory einen Benutzer mit Exchange Postfach gehen, der neben den üblichen Inhalten in den Feldern ProxyAddresses, Mail etc. auch noch die richtige TargetAddress hat.
Das Skript hilft nun dabei, indem es aus einer Liste die Empfänger erhält und für all die Objekte, für die es in Exchange noch keinen Empfänger gibt, die erforderlichen Maßnahmen ergreift. Dabei muss das Skript natürlich Rücksicht auf die Umgebung nehmen. So muss es zuverlässig erkennen, wenn das Postfach schon irgendwo existiert, es vielleicht schon einen Kontakt mit der gleichen Adresse gibt oder nur ein bestehendes Active Directory Konto um die Postfacheigenschaften zu erweitern ist. fehlende Objekte muss das Skript entsprechend anlegen.
Das Skript wurde von mir bei Kunden eingesetzt und hat nach einigen Anpassungen klaglos seinen Dienst verrichtet. Allerdings lohnt sich der Aufwand nur, wenn sehr viele Mailboxen anzulegen sind. Erweiterungen auf mehrere Domains und Datenbanken sind in sehr großen Umgebungen noch erforderlich. für "kleine Firmen" ist es unterm Strich einfacher, einfach die Postfächer manuell einzurichten und auf eine lange Koexistenz zu verzichten.
Anpassungen
Achtung:
Das Skript ist kein Download, weil es umfangreiche Anpassungen an die
ZielUmgebung benötigt.
Die Anpassungen fangen mit den Konstanten an:
[string]$TargetDC="E2007" [string]$domain = "dc=e2k7,dc=msxfaq,dc=net" [string]$TargetOU = "ou=add-targetaddress,$domain" # new objects [string]$TargetDB = "E2007\First Storage Group\Mailbox Database" # default mailboxdb [string]$defaultPassword = "StartPassword!"
Das Skript sollte immer genau einen DC ansprechen, damit alle Änderungen der verschiedenen Schritte immer auf dem Server erfolgen. Auch muss man eine TargetOU für neu anzulegenden Platzhalterbenutzer und eine Default Datenbank für neue Postfächer vorgeben. Neue Benutzer müssen "aktiv" sein, damit Exchange diese aktivieren kann. Das Startkennwort muss entsprechend vorgegeben werden.
Aber das ist nur der einfache Teil. Im Code selbst gibt es zwei Bereiche die zu ändern sind:
- Programmlogik
Per Default nutzt das Programm den vorderen Teil der Mailadresse, um daraus den SamAccountName, den CN und den Namen abzuleiten und auch danach zu suchen. Das passt sicher nicht in allen Umgebungen und muss daher abgewandelt werden. Zudem können die Felder in dem übergebenen Objekt komplett anders heißen. - Feldzuweisungen
In der Quelle befinden sich vielleicht noch Zusatzinformationen wie Telefonnummer, Faxnummer, Abteilung etc, die in dem Zuge mit importiert werden können.
Dabei handelt es sich aber immer um das gleiche Active Directory, welches die Benutzer vielleicht schon zur Anmeldung nutzen. Es wäre sicher nicht gut, wenn durch einen Fehler deren Kennwort zurückgesetzt wird, ein zweiter Benutzer angelegt wird oder eine bestehende Mailbox bereits migrierter Benutzer wieder auf "Weiterleitung" gestellt würde. Daher ist mir einfach zu gefährlich, dieses Skript zum freien Download bereit zu stellen und hinterher beschimpft zu werden.
Inbetriebnahme
Schrittweises Vorgehen:
Bitte starten Sie das Skript nicht ohne die einzelnen Voraussetzungen umgesetzt und geprüft zu haben.
Bei falscher Anwendung kann das Skript mehr Schaden anrichten als nützlich sein. Ich habe mir dazu folgende Checkliste angelegt:
Prüfpunkt | erledigt |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Das Skript ist wirklich nur für einen einmaligen Durchlauf vorgesehen. Vermeiden Sie daher, dass Sie nach der Durchführung in der Quelle noch neue Postfächer anlegen. Es ist zwar problemlos möglich, durch weitere Durchläufe auch diese neu angelegten Postfächer zu übertragen, aber sinnvoller ist hier die direkte Anlage neuer Anwender in Exchange.
Fehler und deren Auswirkungen
Das Skript hat eigentlich keine umfangreiche Fehlerbehandlung, sondern Sie müssen schon selbst die Fehler nachkontrollieren. Passieren kann:
- Deaktivierte Konten
Wenn es bereits ein passendes Zielkonto gibt, dann versucht das Skript diese mit "Enable-Mailbox" mit einem Postfach zu versehen. Leider funktioniert das nicht, wenn das Konto deaktiviert ist. Einfach aktivieren und noch mal ausführen. - Ungültige Feldinhalte
Wenn Sie an das Skript Informationen wie Telefonnummer etc. übergeben, und dieses Feld "leer" ist, dann versucht das Skript eben "nichts" zu schreiben, was ADSI natürlich nicht mag und einen Fehler wirft. Das gilt auch, wenn die SMTP-Adresse natürlich von der Form her nicht gültig ist. - SMTP-Konflikt
Das Skript prüft, ob die SMTP-Adresse schon bei einem Objekt vorhanden ist (ProxyAddresses und TargetAddress). Konflikte werden natürlich ermittelt und gemeldet. Wenn es kein Postfach ist, dann wird der Eintrag übersprungen, aber sie müssen überlegen, wie sie "Platz" für das Postfach schaffen. Ein Postfach wird hingegen dann ohne Warnung übersprungen.
Das Skript ist eigentlich für den "einmaligen" Durchlauf gedacht, auch wenn man es sicher auch automatisiert periodisch starten kann. Allerdings ist umsicht und viel Verständnis für die Funktion erforderlich.