Follow me

Ab sofort werde ich meine Projekte und Gaming-Highlights auch auf Youtube stellen.

Wer möchte kann mir hier gerne Folgen:

youtube logo

Des Weiteren, da ich eh jeden Abend online Zocke, so habe ich mich auch hier entschieden auf Twitch zu streamen.

Fast täglich ab ca. 19 Uhr

twitch gameplay

 Instagram gefällig?

Instagram logo transparent PNG

Wir sehen uns 

top

Microsoft Exchange 2019 (Core): Recovery / Wiederherstellung

Falls Ihr die anderen Beiträge verfolgt habt, darin ging es darum, wie Ihr einen Exchange 2019 installiert und entsprechend (in der Basis) konfiguriert. Jetzt möchte ich einfach mal prüfen, ob ich aus einem minimalen Backup den Exchange wieder an den Start bekomme. Mir stehen nur die Datenbank und die Logs zur Verfügung. Wünscht mir Glück  

 

Step1: Backups prüfen!

Ihr benötig also die Datenbanken und Logs. Die habe ich mit einer Windows Serversicherung gesichert und erst einmal sauber abgelegt. Sinnig wäre natürlich noch das Zertifikat, ich tue jetzt aber mal so, wie wenn ich das vergessen hätte zu sichern.

Danach schalte ich den Exchange aus.

 

Step 2: Exchange Computerobjekt zurück setzen!

Es ist WICHTIG, dass Ihr VORHER das Computerobjekt zurück setzt bevor Ihr anfangt den Exchange zu installieren!

ms lab 379

 

Step 3: Vorbereitung der Maschine

  • nahezu gleiche Hardware
  • gleiches Betriebssystem
  • gleiche IP
  • gleicher Name
  • RDP aktivieren (macht es etwas einfacher)
  • Firewall off: netsh advfirewall set allprofiles state off (kein muss, macht es aber einfacher für den Anfang! Nach dem Domänenjoin habt ihr sicher dafür eine GPO!)
  • alle Updates installieren
  • Falls Ihr, wie ich ein weiteres Laufwerk für die DB hattet und auch auf Core den Echange installiert hattet, dann einfach mit "diskpart" arbeiten
    • diskpart
    • list disk
    • select disk
    • create partition primary
    • active
    • format fs=ntfs quick
    • assign letter=m
  • Maschine in die Domäne heben (Domainjoin)
  • Reboot

 

Step 4: Voraussetzungen installieren

Genau genommen ist es wie eine "frische" Installation und könntet euch "eigentlich" meiner Installations-Anleitung bedienen aber hier in der Kürze.

# Windows-Features

Install-WindowsFeature Server-Media-Foundation, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-PowerShell, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Metabase, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, RSAT-ADDS

 

 

 

# Benötigte Pakete

  • Visual C++ 2013 (einfach die EXE auf Console starten und via GUI durchklicken)
  • IIS URL Rewrite-Module (einfach die EXE auf Console starten und via GUI durchklicken)
  • Netframe 4.8 (muss ZWINGEND mit /q also silent instaliert werden! danach folgt ein automatischer Reboot, einfach warten!)
  • UCMA 4.0 (ist in der ISO vom Exchange vorhanden somit einfach auf der Powershell mit "Mount-DiskImage <Pfad zur Iso>" mounten und im Ordner ucmaredist die Setup.exe ausführen)

 

 

Step 5: Exchange installieren

Der Schritt ist "fast" so simpel wie die "frische" Installation nur dass Ihr folgende Parameter mit angebt: (vorausgesetzt, Ihr hatte den Exchange im Standardverzeichnis installiert)

.\Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /Mode:RecoverServer

 

 

Danach läuft die Installation durch, sofern Ihr alle Voraussetzungen installiert habt.

 

Wie zu sehen, ist alles sauber durchgelaufen und nun müssen wir neu starten!

 

Step 6: Datenbank mounten

Jetzt ist es an der Zeit, sofern nicht schon vorher geschehen die Datenbank und Logs aus eurem Backup zurück zu schubsen an Ihren Ursprungsort und die Datenbank mounten.

Schauen wir erst einmal, ob die DB schon gemountet ist (sofern Ihr das Backup vor der Installation zurück kopiert habt).

Get-MailboxDatabase -Status | Sort Name | Format-Table Name, Server, Mounted

Wie zu erkennen steht bei "Mounted" False.

 

Also müssen wir das "Filerestore" erlauben und können danach die DB mounten und sollte wie im Screenshot dann bei "Mounted" auf True stehen.

Get-MailboxDatabase -Server server2019ex | Set-MailboxDatabase -AllowFileRestore $true
Get-MailboxDatabase -Server server2019ex | Mount-Database
Get-MailboxDatabase -Status | Sort Name | Format-Table Name, Server, Mounted

 

Step 7: URLs prüfen

Mit 100%iger Sicherheit stimmen leider die URLs nicht mehr. Schauen wir uns zunächst die URLs z.B. vom ECP und OWA an mit:

Get-OWAVirtualDirectory | fl name,*url*,*auth*
Get-ecpVirtualDirectory | fl name,*url*,*auth*

 

Hier mache ich es mir einfach und bediene mich einfach eines Scriptes, mit welchem ich die URL schon bei der frischen Installation benutzt habe.

$servername = "server2019ex"
$internalhostname = "mail.pampersjoe.de"
$externalhostname = "mail.pampersjoe.de.de"
$autodiscoverhostname = "autodiscover.pampersjoe.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 -Confirm:$false
Get-EcpVirtualDirectory -server $servername | Set-EcpVirtualDirectory -internalurl $ecpinturl -externalurl $ecpexturl -Confirm:$false
Get-WebServicesVirtualDirectory -server $servername | Set-WebServicesVirtualDirectory -internalurl $ewsinturl -externalurl $ewsexturl -Confirm:$false
Get-ActiveSyncVirtualDirectory -Server $servername | Set-ActiveSyncVirtualDirectory -internalurl $easinturl -externalurl $easexturl -Confirm:$false
Get-OabVirtualDirectory -Server $servername | Set-OabVirtualDirectory -internalurl $oabinturl -externalurl $oabexturl -Confirm:$false
Get-MapiVirtualDirectory -Server $servername | Set-MapiVirtualDirectory -externalurl $mapiexturl -internalurl $mapiinturl -Confirm:$false
Get-OutlookAnywhere -Server $servername | Set-OutlookAnywhere -externalhostname $externalhostname -internalhostname $internalhostname -ExternalClientsRequireSsl:$true -InternalClientsRequireSsl:$true -ExternalClientAuthenticationMethod 'Negotiate' -Confirm:$false
Get-ClientAccessService $servername | Set-ClientAccessService -AutoDiscoverServiceInternalUri $aduri -Confirm:$false
Get-OwaVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-EcpVirtualDirectory -server $servername | fl server,externalurl,internalurl
Get-WebServicesVirtualDirectory -server $servername | fl server,externalurl,internalurl
Get-ActiveSyncVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-OabVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-MapiVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-OutlookAnywhere -Server $servername | fl servername,ExternalHostname,InternalHostname
Get-ClientAccessService $servername | fl name,AutoDiscoverServiceInternalUri

 

Step 8: Zertifikat erstellen / zurück spielen

Rein thoeretisch sind wir fast durch, fehlt noch das Zertifikat. In sämtlichen Anleitungen heißt es, dass man das Zertifikat übers ECP wieder zurück spielen kann. Leider funktionierte bei mir das ECP jedoch NICHT!

Zunächst einmal hatte ich "nur Benutzer" für die Anmeldung hinterlegt, wie man hier erkennen kann, ist das nicht mehr so, sondern muss die Domäne vorne dran hängen:

 

Danach kam leider das hier!

 

Grund hierfür ist leider das fehlende Zertikat! Selbst wenn ich jetzt eines gehabt hätte, wäre ich "so" nicht ans ECP gekommen, daher müssten wir erst einmal FBA (FormsbasedAuthentication) deaktivieren und aktiviere Windowsauthentication.

Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -FormsAuthentication $false -BasicAuthentication $True -windowsauthentication $true
Get-EcpVirtualDirectory | Set-EcpVirtualDirectory -FormsAuthentication $false -BasicAuthentication $true -windowsauthentication $true
iisreset

 

Jetzt habt ihr dadurch zwar nicht mehr diese schöne blau/weiße Seite und bekommt stattdessen diese Anmeldemaske, ABER Ihr seid wieder handlungsfähig!  

 

Somit geht das ECP auch wieder sowie OWA.

 

 

Rein praktisch würden die Clients wie Outlook auch wieder funktionieren ALLERDINGS mit einer Zertifikatswarnung!

 

Da ich kein Zertifikat hatte, muss ich mir eines erstellen, doch bevor ich das tue, möchte ich noch auf etwas hinweisen. Da der Exchange die UTC Zeit nutzt, wird man schnell diesen Unterschied erkennen. 

 

 

Man kann hier gut +2 erkennen, sprich 2h Zeitversatz. D.h. aber auch im Umkehrschluss, dass wenn Ihr ein Zertifikat erstellt, dass es erst in zwei Stunden gültig ist! Entweder Ihr müsstet einfach warten oder die UTC Zeit temporär runter setzen und nach dem erstellen des Zertifikats ändern.

Da ich Zeit habe, mache ich es auf dem regulären weg und erstelle mir nun das Zertifikat.

# Zertifikat erstellen

- New-ExchangeCertificate -KeySize 2048 -PrivateKeyExportable $true -SubjectName "cn=MSExchange Auth Certificate" -FriendlyName "MSExchange Auth Certificate" -DomainName mail.pampersjoe.de

# Zertifikat anwenden

- Set-AuthConfig -NewCertificateThumbprint <thumbprint des gerade erstellten Zertifikats> -NewCertificateEffectiveDate (Get-Date)
- Set-AuthConfig -PublishCertificate
- Set-AuthConfig -ClearPreviousCertificate

# Service + IIS ToDos

- Restart-Service MSExchangeServiceHost
- Restart-WebAppPool MSExchangeOWAAppPool
- Restart-WebAppPool MSExchangeECPAppPool
- iisreset /restart

 

Nachdem bei mir die zwei Stunden rum sind, melde ich mich im ECP an und stelle alles wieder so ein wie es war (FormsbasedAuthentication) mit "nur" Benutzeranmeldung.

 

WICHTIG. ECP muss unbedingt genauso einstellt werden.

 

Nun funktioniert auch wieder die Anmeldung via blau/weißer Anmeldeseite und "nur" mit Benutzer

 

Prüfen wir noch einmal gegen, wie die Authentifizierungsmethoden sind (da wir sie ja oben geändert haben)

Jep... auch wieder wie es war!

 

Letzter Step: Clients testen

Der leichteste Part ist eigentlich jetzt nur noch die Clients zu prüfen und starten einmal Outlook

 

 

"Verbunden mit Microsoft Exchange" klingt doch gut oder? 

Und wie schauts damit aus? Perfekt, die URLS passen auch. 

 

 

Und nun viel Spaß beim Wiederherstellen. Bzw. hoffen wir einfach, dass Ihr nie in diese Situation kommt! 

 

Kommentare / Erfahrungsaustausch bitte hier!

Ihr habt eine Frage oder wollt eure Erfahrungen teilen, nutze einfach unseren Discord top (einfach unten rechts auf "Connect")

Einfach mal DANKE sagen!

Auch wenn ich oft etwas länger brauche um neue Beiträge zu verfassen, Videos zu drehen etc. So freut mich es immer wieder ein positives Feedback von euch zu bekommen bzw. neue Follower, daher liegt es mir sehr nahe ein besonderes Dankeschön an euch da draußen zu senden.

Ihr seid super top

Thats me!

Name: Mike
Nickname: Pampersjoe / LuMp
Bj.: 1981
Hobbys: (eindeutig zu viele)

  • Online Zocken
  • IT/EDV
  • Handwerk (eigentlich egal was)

Contact me!

Kontakt


discord logo png 7635 Telegram
discord logo png 7635 Discord

 

Streams


discord logo png 7635 Twitch
discord logo png 7635 YouTube

Rechtliches