Der Support für Exchange Server 2013 endet am 11.04.2023, ab diesen Datum wird es keine Sicherheitsupdates mehr für Exchange 2013 geben. Es ist daher höchste Zeit sich mit der Migration von Exchange 2013 zu Exchange 2019 zu befassen. Die Migration sollte keine großen Hürden darstellen und entspricht nahezu 1-zu-1 der Migration von Exchange 2013 zu Exchange 2016. Die Migration von Exchange 2013 zu Exchange 2016 macht allerdings wenig Sinn, da Exchange 2016 auch bereits im erweiterten Support befindet. Hier also eine kleines HowTo zur Migration von Exchange 2013 zu Exchange 2019.
Vorwort
Diese Anleitung beschreibt die Migration von Exchange 2013 zu Exchange 2019 und soll einen Überblick über die notwendigen Schritte verschaffen und ist daher bewusst einfach gehalten. Zertifikate und der Namespace sollen übernommen werden. Da sich Exchange 2013 und Exchange 2019 sehr stark ähneln, ist die Migration recht einfach und wird in den meisten Fällen wohl keine großen Probleme bereiten.
Eins noch vorweg: Dies ist keine allgemein gültige Migrationsanleitung, die sich auf jede Exchange 2013 Organisation anwenden lässt. Die Migration sollte daher in einer Testumgebung ausprobiert werden, um ein Gefühl dafür zu bekommen.
Umgebung
Die Testumgebung besteht aus 3 Windows Servern. Ein Domain Controller, ein Exchange 2013 Server und ein Exchange 2019 Server:
Exchange 2013 und Exchange 2019 sind bereits installiert.
Damit es während der Migration zu keinen Problemen kommt sollte die Exchange Organisation die aktuellen Updates installiert haben. Es sollte also das aktuelle CU23 und die aktuell verfügbaren Sicherheitsupdates für das Betriebssystem sowie Exchange Installiert sein. Der Download für das Exchange 2013 CU 23 findet sich hier:
Die Exchange 2019 Installation in einer bestehenden Exchange 2013 Organisation, unterscheidet sich nicht von der Installation in einer frischen Umgebung. Nur die Frage nach dem Organisationnamen entfällt. Ich spare mir daher die Installation von Exchange 2016 zu beschreiben, denn das habe ich bereits hier getan:
Exchange 2013 ist auf die folgenden URLs konfiguriert:
- Servername: EX2013EX1.frankysweblab.de
- Outlook: outlook.frankysweblab.de
- OWA, EWS, ActiveSync, OAB: outlook.frankysweblab.de
- Outlook Anywhere: outlook.frankysweblab.de
- Autodiscover: autodiscover.frankysweblab.de
Exchange 2016 soll die folgenden URLs benutzen:
- Servername: EX2013EX2.frankysweblab.de
- Outlook: outlook.frankysweblab.de
- OWA, EWS, ActiveSync OAB: outlook.frankysweblab.de
- Outlook Anywhere: outlook.frankysweblab.de
- MAPIoverHTTP: outlook.frankysweblab.de
- Autodiscover: autodiscover.frankysweblab.de
Der neue Exchange 2019 soll also die gleichen URLs benutzen wie Exchange 2013, so brauchen sich die Benutzer nicht umgewöhnen.
MAPIoverHTTP ist in der Testumgebung bereits aktiviert. Falls dies in der zu migrierenden Exchange 2013 Organisation noch nicht der Fall sein sollte, sollte MAPIoverHTTP vor der Migration aktiviert werden. Wie MAPIoverHTTP aktiviert wird, habe ich hier beschrieben:
Vorbereitung für die Migration
Wie bereits erwähnt ist Exchange 2019 in der Testumgebung bereits installiert, aber noch nicht konfiguriert. Daher werden zunächst die URLs konfiguriert, am einfachsten passiert das mittels Exchange Management Shell:
$servername = "EX2013EX2"
$internalhostname = "outlook.frankysweblab.de"
$externalhostname = "outlook.frankysweblab.de"
$autodiscoverhostname = "autodiscover.frankysweblab.de"
$owainturl = "https://" + "$internalhostname" + "/owa"
$owaexturl = "https://" + "$externalhostname" + "/owa"
$ecpinturl = "https://" + "$internalhostname" + "/ecp"
$ecpexturl = "https://" + "$externalhostname" + "/ecp"
$ewsinturl = "https://" + "$internalhostname" + "/EWS/Exchange.asmx"
$ewsexturl = "https://" + "$externalhostname" + "/EWS/Exchange.asmx"
$easinturl = "https://" + "$internalhostname" + "/Microsoft-Server-ActiveSync"
$easexturl = "https://" + "$externalhostname" + "/Microsoft-Server-ActiveSync"
$oabinturl = "https://" + "$internalhostname" + "/OAB"
$oabexturl = "https://" + "$externalhostname" + "/OAB"
$mapiinturl = "https://" + "$internalhostname" + "/mapi"
$mapiexturl = "https://" + "$externalhostname" + "/mapi"
$aduri = "https://" + "$autodiscoverhostname" + "/Autodiscover/Autodiscover.xml"
Get-OwaVirtualDirectory -Server $servername | Set-OwaVirtualDirectory -internalurl $owainturl -externalurl $owaexturl
Get-EcpVirtualDirectory -server $servername | Set-EcpVirtualDirectory -internalurl $ecpinturl -externalurl $ecpexturl
Get-WebServicesVirtualDirectory -server $servername | Set-WebServicesVirtualDirectory -internalurl $ewsinturl -externalurl $ewsexturl
Get-ActiveSyncVirtualDirectory -Server $servername | Set-ActiveSyncVirtualDirectory -internalurl $easinturl -externalurl $easexturl
Get-OabVirtualDirectory -Server $servername | Set-OabVirtualDirectory -internalurl $oabinturl -externalurl $oabexturl
Get-MapiVirtualDirectory -Server $servername | Set-MapiVirtualDirectory -externalurl $mapiexturl -internalurl $mapiinturl
Get-OutlookAnywhere -Server $servername | Set-OutlookAnywhere -externalhostname $externalhostname -internalhostname $internalhostname -ExternalClientsRequireSsl:$true -InternalClientsRequireSsl:$true -ExternalClientAuthenticationMethod 'Negotiate'
Get-ClientAccessService $servername | Set-ClientAccessService -AutoDiscoverServiceInternalUri $aduri
Wichtig: Nach der Installation von Exchange 2019 wird der Server auf Autodiscover Anfragen der Clients reagieren. Damit Clients keine Zertifikatswarnungen oder falsche URLs übermittelt bekommen, sollte der neue Exchange 2019 Server direkt nach der Installation mit den gleichen URLs und dem gleichen Zertifikat wie Exchange 2013 konfiguriert werden.
Das Zertifikat des Exchange 2013 Servers kann weiterverwendet werden, es ist nicht zwingend nötig ein neues Zertifikat zu kaufen oder durch die interne PKI auszustellen. Es macht keinen Unterschied, ob ein neues Zertifikat gekauft wird, oder das vorhandene weiter verwendet wird. Wichtig ist, dass die verwendeten DNS Namen auf dem Zertifikat vorhanden sind, in meinem Fall also outlook.frankysweblab.de und autodiscover.frankysweblab.de. Das Thema Zertifikate für Exchange Server ist ausführlich im Whitepaper beschrieben.
In meinem Fall exportiere ich das vorhandene Zertifikat via MMC vom Exchange 2013 Server und importiere es wieder auf dem Exchange 201 Server:
Wichtig ist, dass beim Import die Option „Mark this key as exportable“ angehakt wird:
Nach dem Import des Zertifikat, muss das Zertifikat noch für die Exchange Dienste aktiviert werden:
Wichtig: Alle Einstellungen im Exchange Admin Center werden auf den Exchange 2019 Server durchgeführt. Das Exchange 2013 Admin Center braucht man nicht mehr.
Zertifikat und URLs sind nun konfiguriert, fehlen noch die Authentifizierungseinstellungen der Exchange Protokolle. Hier kann man sich nach den Einstellungen des Exchange 2013 Servers richten und den Exchange 2019 Server entsprechend gleich konfigurieren. Hier einmal das Beispiel für Outlook Anywhere:
Gleiches gilt auch für die restlichen Exchange Protokolle beispielsweise EWS, MAPIoverHTTP oder OWA. Auch hier kann man sich für jedes Protokoll am Exchange 2013 Server orientieren und das Verzeichnis des Exchange 2019 Servers anpassen:
Um die Vorbereitungen abzuschließen, muss jetzt noch der neue Exchange 2019 Server als Quellserver für den Sendeconnector hinzugefügt werden:
Die Vorbereitungen sind nun soweit abgeschlossen. Der Exchange 2019 Server könnte nun auch schon Mails ins Internet schicken und wird auch schon innerhalb des Active Directory auf Autodiscover Anfragen der Clients reagieren.
Im zweiten Teil wird dann die eigentliche Migration der Daten durchgeführt.
Der Beitrag ist zwar schon alt, aber immer noch Gold wert. Trotzdem eine Anmerkung. Hier heisst es:
Wichtig: Nach der Installation von Exchange 2019 wird der Server auf Autodiscover Anfragen der Clients reagieren. Damit Clients keine Zertifikatswarnungen oder falsche URLs übermittelt bekommen, sollte der neue Exchange 2019 Server direkt nach der Installation mit den gleichen URLs und dem gleichen Zertifikat wie Exchange 2013 konfiguriert werden.
Das stimmt doch so nicht ganz, in einer produktiven Umgebung, wo EX2013 und EX2019 parallel laufen. Wenn ich dir URLs sofort auf die URLs des alten Servers ändere, können sich User nicht mehr per Outlook verbinden, deren Postfächer bereits auf den neuen EX umgezogen wurden, weil diese Clients ja dann auf den alten Server gehen, dort liegt aber das Postfach nicht mehr.
Selbst getestet :-)
Vielen lieben Dank für die tolle Anleitung und auch an die zahlreiche Kommentatoren, die ebenfalls noch Licht ins Dunkel gebracht haben.
Beachte: zum obigen Punkt „Wichtig: Alle Einstellungen im Exchange Admin Center werden auf den Exchange 2019 Server durchgeführt. Das Exchange 2013 Admin Center braucht man nicht mehr.“
In einem Hybridscenario, in dem ein Exchange2013 und Exchange2019 Server zusammen betreiben werden,
muss, so lange sich das Administrator Postfach noch auf dem Exchange2013 befindet, beim Zugriff auf das ECP des Exchange2019 zwingend folgender Querystring an die aufgerufene URL angehangen werden: https:///ecp/?ExchClientVer=15.2
sonst kommt es zu ungewöhnlichen Fehlermeldungen im Browser beim Versuch die Exchange2019 Datenbanken zu verwalten (Timeouts, „versuchen Sie es später nchmal“ oder HTTP 500 Fehler im rechten Frame)
Habe sehr lange nach der Ursache dieser merkwürdigen Fehler gesucht (Verdacht lag erst auf falsch konfigurierten Zertifikaten etc) und bin schlussendlich in den Troubleshooting FAQ von Microsoft fündig geworden.
Quelle: https://learn.microsoft.com/de-de/exchange/troubleshoot/administration/can't-manage-ex19-database-eac
Hintergrund: So lange sich das Administrator Postfach noch auf dem Exchange2013 befindet, werden die ECP Verbindungen alle mit der alten Exchange2013 Clientversion 15.0 aufgebaut.
Das führ beim Versuch Exchnage2019 Ressourcen zu verwalten zu fehlern.
Umgekehrt ist jedoch ein Zugriff auf Exchange2013 Ressourcen mit der ClientVersieon 15.2 jederzeit möglich, da abwärtskompatibel.
Sobald das Postfach des Nutzers „Administrator“ auf den Exchange2019 verschoben wurde, wird die imBrowser verwendete ClientVersion automatisch auf 15.2 umgestellt.
Aktuelles Setup Exchange2013 CU23 + Exchange2019 CU13 mit alles SU’s bis 06/2023
Evtl ist es ja hilfreich für jemanden, der ebenfalls auf diese Problematik stößt.
Im obigen Kommentar hat der Linkassistent zugeschlagen und in der Beispiel URL des ECP Aufrufs den Hostnamen entfernt.
Beispiel soll natürlich lauten: https://ex2019/ecp/?ExchClientVer=15.2
Hast du dazu inzwischen eine Lösung gefunden? Habe den gleichen Fehler…
Bei Benutzern mit mehreren Postfächern vom Exchange kommt beim Start von Outlook ein Zertifikatsfehler, da der interne Name verwendet wird (ich vermute beim autodiscover). Wie könnte mann das lösen, ohne bei jedem Bennutzer die zusätzlichen Postfächer erst zu entfernen und wieder einzubinden?
Hast du dazu inzwischen eine Lösung gefunden? Habe den gleichen Fehler…
Kann ich die Migration von Exchange 2013 auf 2019 im laufenden Betrieb machen, ohne das die Leute etwas merken? Mein Ziel wäre, dass ich gemütlich eine Woche lang die Postfächer von 2013 auf 2019 händisch verschiebe. Da wäre die Voraussetzung, dass alle Leute welche ihr Postfach noch am 2013er haben, Mails senden und empfangen können. Natürlich sollen parallel die Personen, von denen das Postfach bereits auf den 2019er migriert wurde, ebenso Mails senden und empfangen können. Ist so ein Parallelbetrieb mit dieser Anleitung möglich?
„Wichtig: Alle Einstellungen im Exchange Admin Center werden auf den Exchange 2019 Server durchgeführt. Das Exchange 2013 Admin Center braucht man nicht mehr.“
Ist das so, sobald man den ersten 2019er installiert hat ? Darf man dann das 2013 nicht mehr benutzen ?
Danke und Grüße,
MG
Guten Morgen,
danke für die tolle Anleitung, kann man das auch für Exchange 2016 auf 2019 nehmen?
Ja, alternativ eben die hier: https://www.frankysweb.de/migration-exchange-2016-zu-exchange-2019/
danke
Perfekt, danke schön.
Bald steht genau das für mich an…
Bin gespannt