Migration der öffentlichen Ordner von Exchange 2010 zu 2016 mit getrennten Exchange Rollen
Das Supportende von Exchange Server 2010 rückt immer näher und langsam sollten die bestehenden Exchange 2010 Server aktualisiert werden. Der Support für Exchange 2010 sollte bereits Anfang des Jahres eingestellt werden, das Ablaufdatum wurde jedoch durch Microsoft auf den 13. Oktober 2020 verschoben.
Ein großes Hindernis bei der Aktualisierung ist die Migration der öffentlichen Ordner (Engl.: Public Folder). Daher wird in diesem Blogeintrag die Migration der öffentlichen Ordner und deren Verfügbarkeit während der Migration bei einer Exchange Umgebung mit getrennten Exchange Rollen behandelt. Damit eine Koexistenz für die Migration von Exchange 2010 auf 2016 überhaupt möglich ist, muss der Exchange 2010 Server SP3 mit Update Rollup 11 installiert haben.
Problematik der öffentlichen Ordner
Exchange Server 2010 Nutzer haben keine Möglichkeit auf öffentliche Ordner zuzugreifen, die sich auf Exchange Server 2016 befinden. Andersrum ist dies mit einem Workaround möglich, indem man mit Proxy Mailboxen arbeitet. Die Proxy Mailbox wird für die Migration von Nutzermailboxen oder öffentlichen Ordnern nicht benötigt, lediglich für die Verfügbarkeit der öffentlichen Ordner während der Migration ist diese von Nöten. Um das Proxying einrichten zu können, gilt eine Voraussetzung, dass sich die öffentlichen Ordner auf einem Server mit CAS Rolle befinden. Typischerweise ist dies in einer bestehenden Umgebungen mit getrennten Exchange Rollen Mailbox und Client Access Server nicht der Fall.
Für diesen Blogeintrag habe ich folgende Umgebung verwendet:
EX10-MBX: Exchange Server 2010 mit Mailboxrolle, welcher die Public Folder innehält
EX10-CAS: Exchange Server 2010 mit der CAS Rolle, auf welchem zusätzlich die Mailboxrolle installiert werden soll, um die Voraussetzungen zu erfüllen
EX16: Exchange Server 2016, auf welchem die Public Folder migriert werden sollen
Um die Voraussetzungen des Proxying zu schaffen, muss entweder die CAS- oder die Mailboxrolle nachinstalliert werden:
1. CAS-Rolle auf dem Exchange 2010 Mailbox Server (EX10-MBX) installieren:
Hierbei wird auf dem Mailbox Server die CAS Rolle installiert, dadurch übernimmt der Server auch die Abwicklung sämtlicher Client Verbindungen.
Vorteil:
Wenn die Installation fehlerfrei verläuft, ist es schneller die CAS-Rolle auf dem Exchange 2010 Mailbox-Server zu installieren, da hier der Schritt der Migration der öffentlichen Ordner von dem Mailbox-Server auf den CAS-Server wegfällt.
Nachteil:
Allerdings kann die Funktionalität des Mailverkehrs eingeschränkt werden, wenn es zu Fehlern während der CAS-Installation kommt, weil Nutzer dann evtl. nicht mehr auf ihr Postfach zugreifen können.
2. Mailbox-Rolle auf dem CAS-Server (EX10-CAS) installieren:
Hierbei wird auf dem Exchange 2010 Server, der die Rolle des Client Access Service innehat, zusätzlich die Mailbox-Rolle installiert und anschließend alle öffentlichen Ordner, die sich auf dem Exchange 2010 Server (EX10-MBX) befinden, mittels des Exchange Shell Skriptes MoveAllReplicas.ps1 auf den CAS Server migriert. Sie finden das Skript im Exchange Installationspfad unter C:\Program Files\Microsoft\Exchange Server\V14\Scripts.
Vorteil:
Die Installation der Mailbox-Rolle ist relativ schnell erledigt ist und es sind keine großen Änderungen an der Netzwerkstruktur erforderlich.
Nachteil:
Die Migration der öffentlichen Ordner nimmt je nach Größe der Daten einige Zeit in Anspruch.
Dieser Blogeintrag zeigt, wie Mailbox-Rolle auf einem CAS-Server (Methode 2) installiert und die öffentlichen Ordner auf den CAS-Server migriert werden. Die Mailboxrolle lässt sich über das Installationsmedium nachinstallieren. Den Umzug der öffentlichen Ordner zwischen zwei bestehenden Exchange Server 2010 erkläre ich nachfolgend.
Öffentliche Ordner innerhalb Exchange Server 2010 verschieben
Wenn auf dem CAS-Server (EX10-CAS) die Mailbox Rolle installiert wurde, muss zunächst eine öffentliche Ordner Datenbank erstellt werden. Dies kann über die Exchange Management Konsole durchgeführt werden:
Öffnen der Exchange Management Konsole
Unter Organisationskonfiguration/Postfach werden die bestehenden Datenbanken angezeigt
Auf der rechten Seite befindet sich das Action Center. Hier wird die Auswahl „neue Public Folder Datenbank“ getroffen
Im darauffolgenden Fenster wird der Name der Datenbank und der Server bestimmt
Der Datenbank-Pfad und der Pfad der Logs werden automatisch gesetzt
Durch Klick auf „Neu“ werden die Einstellungen übernommen und die Datenbank angelegt.
Anschließend kann zur Replikation der öffentlichen Ordner übergegangen werden:
Public Folder Management Konsole öffnen
Im mittleren Bereich die bestehenden öffentlichen Ordner auswählen und mittels Rechtsklick in die Eigenschaften navigieren
Unter dem Reiter Replication können die zu replizierenden Server hinzugefügt werden, in diesem Fall EX10-CAS mit der öffentlichen Ordner Datenbank PfDB_cas
Darauffolgend können alle Replikate mittels des Skriptes MoveAllReplicas.ps1, auf den Microsoft Exchange 2010 CAS Server in die neu erstellte Datenbank PfDB_cas verschoben werden.
.\MoveAllReplicas.ps1 -Server EX10-MBX -NewServer EX10-CAS
Anschließend kann mit der Einrichtung der Proxy Mailbox begonnen werden.
Einrichten der Proxy Mailbox
Die Proxy Mailbox sollte in einer separaten Datenbank, auf dem CAS-Server EX10-CAS, abgelegt werden. Dazu kann die Microsoft Exchange ECP genutzt oder auf folgende Befehle in der Microsoft Exchange Management Shell zurückgegriffen werden:
Hinweis: Jeder Server der öffentliche Ordner enthält benötigt eine Proxy Mailbox.
1. Neue Datenbank anlegen:
New-MailboxDatabase -Server EX10-CAS -Name PFProxyDB1 -IsExcludedFromProvisioning $true
Mit dem Parameter IsExcludedFromProvisioning wird verhindert, dass neue Mailboxen automatisch zu dieser Datenbank hinzugefügt werden.
2. Proxy Mailbox in der neuen Datenbank anlegen:
New-Mailbox -Name PfProxyMb1 -Database PFProxyDB1 -UserPrincipalName PfProxyMb1@domain.local
3. Die Proxy Mailbox sollte vom Adressbuch ausgeblendet werden:
Set-Mailbox -Identity PfProxyMb1 – HiddenFromAddressListsEnabled $true
4. Auf dem Exchange 2010 Server (EX10-CAS) muss es Autodiscover erlaubt werden, die Proxy Mailbox für öffentliche Ordner auszugeben:
Set-Mailboxdatabase PFProxyDB1 -RPCClientAccessServer EX10-CAS
Mit diesem Befehl wird es möglich gemacht, dass das Autodiscover die Datenbank ermitteln kann.
5. Nachdem die Proxy Datenbank und die Proxy Mailbox erzeugt wurden, kann der Zugriff eingeschalten werden. Dazu wird folgender Befehl auf einem Exchange Server 2016 (EX16) verwendet:
Set-OrganizationConfig -PublicFoldersEnabled Remote -RemotePublicFolderMailboxes PFproxyMb1
Unter RemotePublicFolderMailboxes sollten alle Proxy Mailboxen angegeben werden, die unter Punkt 2 erstellt wurden:
Set-OrganizationConfig -PublicFoldersEnabled Remote -RemotePublicFolderMailboxes PFproxyMb1, PFproxyMb2, PFproxyMb3
6. Anschließend kann die Datenbank der öffentlichen Ordner auf dem Exchange 2010 Mailbox -Server (EX10-MBX) gelöscht werden. Hierbei gilt zu beachten, dass die Standard öffentliche Ordner Datenbank auf Exchange 2016 Datenbanken nicht auf die öffentlichen Ordner, der Exchange 2010 Mailbox Server (EX10-MBX) verweist, sondern auf die öffentliche Ordner Datenbank des CAS-Servers (EX10-CAS). Mit folgendem Befehl kann die Standard öffentliche Ordner Datenbank geändert werden:
Get-MailboxDatabase | Set-MailboxDatabase -PublicFolderDatabase “PfDB_cas”
7. Nach kurzer Wartezeit und einem Neustart des CAS-Servers (EX10-CAS), sollten die öffentlichen Ordner, die sich auf dem Exchange 2010 Server befinden bei den Nutzern mit einem Exchange 2016 Postfach sichtbar sein.
Der Zugriff ist allerdings nur über Outlook und nicht über die OWA möglich.
Wenn im Outlook noch keine öffentlichen Ordner sichtbar sein sollten, kann es helfen, die Proxy Datenbank als öffentliche Ordner Datenbank der Exchange 2016 Datenbanken einzutragen. Dafür kann der folgende Befehl in der Exchange 2016 Shell ausgeführt werden:
Get-Mailboxdatabase | Set-MailboxDatabase -PublicfolderDatabase “PFProxyDB1”
Migration der öffentlichen Ordner
Die Migration der öffentlichen Ordner erfolgt typischerweise nach der Migration der Nutzerpostfächer. Daher sollte bereits folgendes konfiguriert sein:
Systempostfächer befinden sich auf Exchange Server 2016
Die DNS-Einträge sollten auf die Exchange Server 2016 Server umgestellt worden sein, da diese das Proxying übernehmen. Dies kann zur Sicherheit noch einmal mittels NsLookup überprüft werden.
Firewall und NLB wurden auf Exchange 2016 umgestellt
Es sollten sich auf dem Exchange 2010 Server (EX10-CAS) keine Postfächer außer der Proxy Mailbox befinden. Dies kann mittels Get-Mailbox überprüft werden.
Achtung: bei der Migration kommt es zu Ausfallzeiten im Zugriff auf die öffentliche Ordner.
Für die Migration werden die folgenden Skripte verwendet. Die sechs enthaltenen Dateien, drei Skripte und deren Definitionsdateien, werden auf dem Exchange 2010 Server (EX10-CAS) und Exchange Server 2016 abgelegt. Um die vorhandene Struktur, Anzahl der Elemente und Berechtigungen zu sichern, werden die folgenden drei Befehle auf dem Exchange 2010 (EX10-CAS) Server ausgeführt (ggf. müssen die Speicherpfade abgeändert werden):
Get-PublicFolder -Recurse | Export CliXML C:\PfMigration\Legacy_PFStructure.xml
Get-PublicFolderStatistics | Export-CliXML C:\PfMigration\Legacy_PFStatistics.xml
Get-PublicFolder -Recurse | Get-PublicFolderClientpermission | Select-Object Identity,User -ExpandProperty AccessRights |Export CliXML C:\PfMigration\Legacy_PfPerms.xml
Achtung: Im Namen des öffentlichen Ordners werden Backslashes und bestimmte Sonderzeichen nicht unterstützt. Diese müssen vor der Migration umbenannt werden. Zudem sollte überprüft werden, dass es keine vorherigen Migrationsversuche der öffentlichen Ordner gab, da es immer nur einen Migrationsbatch geben kann.
Mit dem folgenden Befehl wird überprüft, ob Back- oder Forwardslashes im Namen eines öffentlichen Ordners vorhanden sind:
Get-PublicFolderStatistics -ResultSize Unlimited | Where {($_.Name -like "*\*") -or ($_.Name -like "*/*") } | Format-List Name, Identity
Mit dem nachfolgenden Befehl wird der Name eines öffentlichen Ordners geändert.
Set-PublicFolder -Identity <public folder identity> -Name <new public folder name>
Die öffentlichen Ordner dürfen noch nicht für die Migration gesperrt worden sein. Dies kann über den folgenden Befehl überprüft werden:
Get-OrganizationConfig | Format-List PublicFoldersLockedforMigration, PublicFolderMigrationComplete
Sollte hierbei eine Ausgabe mit dem Wert True erfolgen, muss folgender Befehl genutzt werden, um diesen Wert auf False zu setzen:
Set-OrganizationConfig -PublicFoldersLockedforMigration $false -PublicFolderMigrationComplete $false
Anschließend kann es bis zu zwei Stunden dauern, bis die Änderungen wirksam sind. Empfehlenswert ist, sich zu speichern, welche öffentliche Ordner mail-enabled sind. Damit die mail-enabled öffentlichen Ordner angezeigt werden, kann auf folgenden Befehl zurückgegriffen werden:
Get-MailPublicFolder
Bevor es zur Migration der öffentlichen Ordner geht, muss sichergestellt werden, dass sich kein Migrationsbatch zu öffentlichen Ordnern auf dem Exchange 2016 Server befindet.
Zur Überprüfung kann folgender Befehl genutzt werden:
$batch = Get-MigrationBatch | ?{$_.MigrationType.ToString() -eq “PublicFolder”}
Mit dem folgenden Befehl werden die Migrationsbatches gelöscht:
$batch | Remove-MigrationBatch -Confirm:$false
Zudem dürfen sich keine öffentliche Ordner Mailboxen oder öffentliche Ordner auf dem Exchange Server 2016 befinden. Dies wird mittels der folgenden Befehle auf dem Exchange Server 2016 überprüft:
Get-Mailbox -PublicFolder
Get-PublicFolder
Sollten sich noch öffentliche Ordner auf dem Exchange Server 2016 befinden, können diese mit den folgenden Befehlen entfernt werden:
Get-Mailbox -PublicFolder | Where {$_.IsRootPublicFolderMailbox -eq $false} | Remove-Mailbox -PublicFolder -Force -Confirm:$false
Get-Mailbox -PublicFolder | Remove-Mailbox -PublicFolder -Force -Confirm:$false
Generierung der CSV-Dateien
In den nächsten Schritten müssen die benötigten CSV Dateien für die Migration bereitgestellt werden. Diese Dateien enthalten Informationen über die bestehende öffentliche Ordner Struktur, Namensgebung und Größe. Mit dem Export-PublicFolderStatistics.ps1 wird eine Zuordnungsdatei von Ordnernamen und Ordnergröße erstellt. Die Datei wird zwei Spalten enthalten: Ordnername und Ordnergröße in Byte.
Der Befehl wird auf dem Exchange Server 2010 abgesetzt:
.\Export-PublicFolderStatistics.ps1 FolderToSizeMap.csv Ex10-CAS.domain.local
Danach wird das Mapping von öffentlichen Ordnern zur öffentlichen Ordner Datenbank erstellt. Der Befehl wird ebenfalls auf dem Exchange Server 2010 abgesetzt:
.\PublicFolderToMailboxMapGenerator.ps1 42949650969 .\FolderToSizeMap.csv FolderToMailBoxMap.csv
Die Angabe 42949650969 entspricht 40GB und sagt aus, dass eine öffentliche Ordner Mailbox max. 40GB groß sein soll. Sollten die öffentlichen Ordner größer als 40 GB sein, muss die Zahl entsprechend angepasst werden. Auf Exchange Server 2016 werden Public Folder anhand der Namen der FolderToMailBoxMap.csv erstellt, typischerweise Public Folder Mailbox 1. Sollten andere Namen gewünscht werden, muss dies in der .csv geändert werden. Anschließend können auf dem Exchange 2016 (EX16) die entsprechenden Mailboxen für die öffentliche Ordner erstellt werden:
.\Create-PublicFolderMailboxesForMigration.ps1 -FolderMappingCsv Mapping.csv -EstimatedNumberOfConcurrentUsers:<estimate>
Im nächsten Schritt wird der Migrationsbatch für die öffentliche Ordner auf dem Exchange 2016 Server (EX16) angelegt und gestartet:
New-MigrationBatch -Name PfMigration -SourcePublicFolderDatabase (Get-PublicFolderDatabase -Server EX10-CAS) -CSVData (Get-Content \\EX10-CAS\C$\PFMigration\FoldertoMailBoxMap.csv -Encoding Byte)
Start-MigrationBatch PfMigration
Gegebenfalls muss die .csv Datei noch freigegeben werden. Mittels Get-MigrationBatch lässt sich der Status der Migration überprüfen. Nachdem die Migration den Status synchronisiert erreicht hat, ist ein Wartungsfenster nötig, da der Zugriff auf die öffentlichen Ordner zum Migrationsabschluss nicht möglich sein wird. Um die öffentlichen Ordner für den Benutzerzugriff während der Migration zu sperren, wird folgender Befehl auf dem Exchange 2010 Server (EX10-CAS) verwendet:
Set-OrganizationConfig -PublicFoldersLockedForMigration: $true
Mit folgenden Befehlen kann anschließend die Migration abgeschlossen werden:
Set-OrganizationConfig -PublicfolderEnabled Remote
Complete-MigrationBatch PfMigration
Sobald die Migration abgeschlossen ist, sollte die Ordnerhierarchie getestet werden. Mit folgendem Befehl wird das Standard öffentliche Ordner Postfach für einen Testnutzer auf eines der eben migrierte öffentliche Ordner Postfächer gesetzt:
Set-Mailbox Testuser -DefaultPublicFolderMailbox Mailbox1
Wenn der Test erfolgreich war, können die öffentlichen Ordner für alle Nutzer freigegeben werden. Dazu wird folgender Befehl auf dem Exchange 2016 Server genutzt:
Get-Mailbox -PublicFolder | Set-Mailbox -PublicFolder -IsExcludedFromServingHierarchy $false
Anschließend wird die Migration auf dem Exchange 2010 Server bestätigt:
Set-OrganizationConfig -PublicFolderMigrationComplete: $true
Und zum Schluss noch folgender Befehl auf dem Exchange 2016 Server durchgeführt:
Set-OrganizationConfig -PublicFoldersEnabled Local
Nun liegen alle Benutzerpostfächer und öffentliche Ordner auf dem Exchange 2016 Server und es kann mit den Aufräumarbeiten auf den Exchange 2010 Servern begonnen werden. Dazu gehören u.a. folgende Aufgaben: die Proxy Mailbox deaktivieren, alle Datenbanken entfernen, die Sendekonnektoren und DNS-Einträge anpassen sowie schließlich Exchange 2010 deinstallieren. Vor einer Deinstallation der Exchange 2010 Server empfehlen wir Ihnen, diese für einige Tage auszuschalten. Dadurch merken Sie evtl. noch andere Systeme, bei denen der alten Exchange 2010 Server mit dem FQDN eingetragen ist. Im Fehlerfall ist es schneller, den Exchange Server 2010 zu starten und die verweiste Einträge in Ruhe zu reparieren.
MEHR BLOG-KATEGORIEN
- ASP.NET
- Active Directory
- Administration Tools
- Allgemein
- Backup
- ChatBots
- Configuration Manager
- DNS
- Data Protection Manager
- Deployment
- Endpoint Protection
- Exchange Server
- Gruppenrichtlinien
- Hyper-V
- Intune
- Konferenz
- Künstliche Intelligenz
- Linux
- Microsoft Office
- Microsoft Teams
- Office 365
- Office Web App Server
- Powershell
- Remote Desktop Server
- Remote Server
- SQL Server
- Sharepoint Server
- Sicherheit
- System Center
- Training
- Verschlüsselung
- Virtual Machine Manager
- Visual Studio
- WSUS
- Windows 10
- Windows 8
- Windows Azure
- Windows Client
- Windows Server
- Windows Server 2012
- Windows Server 2012R2
- Windows Server 2016
- Windows Server 2019
- Windows Server 2022
- Zertifikate