Exchange 2019 CU3 und Exchange 2016 CU14 sind verfügbar

Gestern hat Microsoft die nächsten kumalativen Updates für Exchange Server 2019 und 2016 veröffentlicht.

Hier der Blog Beitrag „September 2019 Quarterly Exchange Updates“ vom Exchange Team Blog: https://techcommunity.microsoft.com/t5/Exchange-Team-Blog/Released-September-2019-Quarterly-Exchange-Updates/ba-p/853699

Alternativ hier auch die Direktlinks zu den Microsoft Knowledge Base Artikel:

Viel Spaß beim Patchen :).

An dieser Stelle ein kleines Update und Obacht (24.09.2019): Ich hatte bei den ersten 10 Exchange 2016 CU14 Updates bereits viermal den Fall, dass das Setup abgebrochen ist. Im Exchange Setup Log (C:\ExchangeSetupLogs\ExchangeSetup.log) fanden sich folgende Einträge:

[09.22.2019 17:00:59.0598] [1] The following roles are installed: BridgeheadRole ClientAccessRole MailboxRole UnifiedMessagingRole FrontendTransportRole AdminToolsRole CafeRole
[09.22.2019 17:00:59.0608] [1] [ERROR] Die Datei „C:\Windows\Temp\ExchangeSetup\bin\EnterpriseServiceEndpointsConfig.xml“ konnte nicht gefunden werden.
[09.22.2019 17:00:59.0609] [1] [WARNING] An unexpected error has occurred and a Watson dump is being generated: Die Datei „C:\Windows\Temp\ExchangeSetup\bin\EnterpriseServiceEndpointsConfig.xml“ konnte nicht gefunden werden.
[09.22.2019 17:01:00.0606] [1] [ERROR] Die Datei „C:\Windows\Temp\ExchangeSetup\bin\EnterpriseServiceEndpointsConfig.xml“ konnte nicht gefunden werden.
[09.22.2019 17:01:00.0606] [1] [ERROR] Die Datei „C:\Windows\Temp\ExchangeSetup\bin\EnterpriseServiceEndpointsConfig.xml“ konnte nicht gefunden werden.
[09.22.2019 17:01:00.0632] [0] [ERROR] Ein Aufrufziel hat einen Ausnahmefehler verursacht.
[09.22.2019 17:01:00.0636] [0] [ERROR] Die Datei „C:\Windows\Temp\ExchangeSetup\bin\EnterpriseServiceEndpointsConfig.xml“ konnte nicht gefunden werden.
[09.22.2019 17:01:00.0636] [0] [ERROR] Die Datei „C:\Windows\Temp\ExchangeSetup\bin\EnterpriseServiceEndpointsConfig.xml“ konnte nicht gefunden werden.
[09.22.2019 17:01:00.0636] [0] CurrentResult SetupLauncherHelper.loadassembly:444: 1
[09.22.2019 17:01:00.0638] [0] Setup von Exchange Server wurde nicht abgeschlossen. Weitere Details finden Sie im Protokoll ‚ExchangeSetup.log‘ im Ordner ‚:\ExchangeSetupLogs‘.
[09.22.2019 17:01:00.0639] [0] CurrentResult main.run:235: 1
[09.22.2019 17:01:00.0639] [0] CurrentResult setupbase.maincore:396: 1
[09.22.2019 17:01:00.0641] [0] End of Setup

C:\ExchangeSetupLogs\ExchangeSetup.log

Bei einer manuellen Prüfung wurde im besagten Verzeichnis („C:\Windows\Temp\ExchangeSetup\bin\“) in der Tat keine „EnterpriseServiceEndpointsConfig.xml“ gefunden. An dieser Stelle aber der Hinweis – Don’t Panic – Das Setup einfach erneut starten und beenden. Zumindest hat das in meinen vier Fällen geholfen. Noch ein Hinweis: Die GUI erkennt ein „Unvollständiges Setup“ und setzt diese Fort. Das Fenster der GUI wird nach Abschluss allerdings ohne Meldung geschlossen. Hier lohnt sich dann ein erneuter Blick ins ExchangeSetup.log, um sicher zu gehen, dass alles funktioniert hat. Nach etwas Troubleshooting und weiterer Analyse stelle sich heraus, dass hier wohl die „Advanced Threat Control/Protection“ vom BitDefender AV die Finger im Spiel hatte. Ein reines Deaktivieren schaltete scheinbar den „Aktivschutz“ und „Verhaltensscan“ nicht aus, sodass dieser sich an den Dateien vergriffen hatte. Besserung brachte eine Ausnahme für „%SystemRoot%\Temp\ExchangeSetup“.

Ein weiteres Update bzw. Problem, welches mir untergekommen ist (01.10.2019): Beim Vorbereiten der Organisation bzw. genauer beim Vorbereiten des ActiveDirectorys (Setup.exe /IAcceptExchangeServerLicenseTerms /PrepareAD) bemängelte das Setup ein Fehlen des „Exchange Online-ApplicationAccount“ AD-Objektes. Ein späteres Anlegen des Objektes scheiterte mit dem Fehler „Das Objekt ist vorhanden.“ Bei einem Blick ins Active Directory-Benutzer und -Computer bestätigte dies.

[09.30.2019 10:39:37.0397] [2] Beginning processing Get-LinkedUser
[09.30.2019 10:39:37.0407] [2] Searching objects „Exchange Online-ApplicationAccount“ of type „ADUser“ under the root „$null“.
[09.30.2019 10:39:37.0426] [2] Previous operation run on domain controller ‚DOMAINCONTROLLER‘.
[09.30.2019 10:39:37.0426] [2] Previous operation run on domain controller ‚DOMAINCONTROLLER‘.
[09.30.2019 10:39:37.0426] [2] Preparing to output objects. The maximum size of the result set is „1000“.
[09.30.2019 10:39:37.0435] [2] The object „SUB.DOMAIN.TLD/Users/Exchange Online-ApplicationAccount“ has been retrieved, but it will not be output to the shell.
[09.30.2019 10:39:37.0439] [2] The operation couldn’t be performed because object ‚Exchange Online-ApplicationAccount‘ couldn’t be found on ‚DOMAINCONTROLLER‘.
[09.30.2019 10:39:37.0449] [2] The operation couldn’t be performed because object ‚Exchange Online-ApplicationAccount‘ couldn’t be found on ‚DOMAINCONTROLLER‘.
[09.30.2019 10:39:37.0456] [2] Ending processing Get-LinkedUser
[09.30.2019 10:39:37.0463] [2] Die Active Directory-Sitzungseinstellungen für ‚New-LinkedUser‘ lauten: Vollständige Gesamtstruktur anzeigen: ‚True‘, Konfigurationsdomänencontroller: ‚DOMAINCONTROLLER‘, Bevorzugter globaler Katalog: ‚DOMAINCONTROLLER‘, Bevorzugte Domänencontroller: ‚{ DOMAINCONTROLLER }‘
[09.30.2019 10:39:37.0463] [2] User specified parameters: -Name:’Exchange Online-ApplicationAccount‘ -UserPrincipalName:’Exchange_Online-ApplicationAccount@SUB.DOMAIN.TLD‘ -DomainController:’DOMAINCONTROLLER‘
[09.30.2019 10:39:37.0463] [2] Beginning processing New-LinkedUser
[09.30.2019 10:39:37.0477] [2] Searching objects „SUB.DOMAIN.TLD/Users“ of type „ExchangeOrganizationalUnit“ under the root „$null“.
[09.30.2019 10:39:37.0486] [2] Previous operation run on global catalog server ‚DOMAINCONTROLLER‘.
[09.30.2019 10:39:37.0488] [2] Getting the organization for organizational unit SUB.DOMAIN.TLD/Users.
[09.30.2019 10:39:37.0498] [2] Searching objects of type „ADRecipient“ with filter „(|((&((Id NotEqual SUB.DOMAIN.TLD/Users/Exchange Online-ApplicationAccount)(UserPrincipalName Equal Exchange_Online-ApplicationAccount@SUB.DOMAIN.TLD)))))“, scope „SubTree“ under the root „$null“.
[09.30.2019 10:39:37.0500] [2] Previous operation run on global catalog server ‚DOMAINCONTROLLER‘.
[09.30.2019 10:39:37.0501] [2] Processing object „SUB.DOMAIN.TLD/Users/Exchange Online-ApplicationAccount“.
[09.30.2019 10:39:37.0516] [2] The properties changed on the object ‚Exchange Online-ApplicationAccount‘ (CN=Exchange Online-ApplicationAccount,CN=Users,DC=SUB,DC=DOMAIN,DC=TLD) are: „{ UserPrincipalNameRaw[userPrincipalName]=’Exchange_Online-ApplicationAccount@SUB.DOMAIN.TLD‘, Id[distinguishedName]=’SUB.DOMAIN.TLD/Users/Exchange Online-ApplicationAccount‘, RecipientTypeDetailsValue[msExchRecipientTypeDetails]=’LinkedUser‘, RecipientDisplayTypeRaw[msExchRecipientDisplayType]=’LinkedUser‘, RecipientDisplayType[msExchRecipientDisplayType]=’LinkedUser‘, RawName[name]=’Exchange Online-ApplicationAccount‘, RecipientTypeDetails[mailNickname, msExchHomeServerName, proxyAddresses, objectClass, homeMDB, groupType, msExchRecipientTypeDetails, userAccountControl]=’LinkedUser‘, ObjectCategory[objectCategory]=’SUB.DOMAIN.TLD/Configuration/Schema/person‘, OrganizationId[msExchOURoot, msExchCU]=“ }“.
[09.30.2019 10:39:37.0517] [2] Saving object „SUB.DOMAIN.TLD/Users/Exchange Online-ApplicationAccount“ of type „ADUser“ and state „New“.
[09.30.2019 10:39:37.0522] [2] Previous operation run on domain controller ‚DOMAINCONTROLLER‘.
[09.30.2019 10:39:37.0545] [2] [ERROR] Active Directory operation failed on DOMAINCONTROLLER. The object ‚CN=Exchange Online-ApplicationAccount,CN=Users,DC=SUB,DC=DOMAIN,DC=TLD‘ already exists.
[09.30.2019 10:39:37.0545] [2] [ERROR] Das Objekt ist vorhanden.

ExchangeSetupLog

Ein erster Versuch, war das Verschieben des AD-Objektes in eine andere OU. Dabei änderte sich das Fehlerbild allerdings nur minimal. „Das Objekt ist vorhanden.“ wurde zu „The value „Exchange_Online-ApplicationAccount@SUB.DOMAIN.TLD“ of property „UserPrincipalName“ is used by another recipient object. Please specify a unique value.“

[09.29.2019 11:37:00.0768] [2] [ERROR] The value „Exchange_Online-ApplicationAccount@SUB.DOMAIN.TLD“ of property „UserPrincipalName“ is used by another recipient object. Please specify a unique value.
[09.29.2019 11:37:00.0769] [2] [ERROR] The value „Exchange_Online-ApplicationAccount@SUB.DOMAIN.TLD“ of property „UserPrincipalName“ is used by another recipient object. Please specify a unique value.

ExchangeSetupLog

Der Fehler konnte letztlich durch Umbennung des vorhandenen und warum auch immer nicht gefundenen AD-Objektes des “ Exchange Online-ApplicationAccount “ behoben werden. Dem Anzeigenamen und dem User Principal Name wurde lediglich eine „1“ angehangen. Nach erneutem Start des Setups konnte dieses dann erfolgreich abgeschlossen werden!

Exchange Online-ApplicationAccount

Neues vom Exchange Server

Exchange Server 2016 CU11 veröffentlicht, neues zum .Net Framework 4.7.2 sowie ein paar Infos zu Exchange 2019

Exchange Server 2019:

  • Nur auf Windows Server 2019 (Core oder GUI) freigegeben / Mangament Tools ebenfalls auf Windows 10 64 Bit
  • Mindestens den Active Directory Forest Functional Level „Windows Server 2012 R2“ (oder eben höher)
    Daraus ergibt sich, dass die Domain Controller zwangsweise mindestens Windows Server 2012 R2 oder neuer sein müssen
  • .Net Framework 4.7.2:
  • Visual C++ 2012 Runtime für alle Server-Rollen: https://www.microsoft.com/de-DE/download/details.aspx?id=30679
  • Visual C++ 2013 Runtime für die Mailbox-Server-Rolle: https://www.microsoft.com/de-DE/download/details.aspx?id=40784
  • Outlook Clients von 2013 bis 2019
  • Koexistenz mit nur mit Exchange Server 2013 CU21 sowie Exchange 2016 CU11 oder neuer

Exchange Server 2016:

  • Download des Kumulativen Update 11 für Exchange Server 2016: https://www.microsoft.com/de-DE/download/details.aspx?id=57388
  • Alle Exchange Server 2016 CU11 Rollen benötigen jetzt die Visual C++ 2012 Runtime (Link siehe oben)
    Der Exchange Team Blog rät dringendst dazu, die Visual C++ 2012 Runtime vor einem Update auf CU11 oder neuer von Hand zu installieren:

Important: To avoid a setup failure, it is necessary to install the Visual C++ 2012 runtime before installing Cumulative Update 11 or later for the first time on an existing server. The setup pre-requisite rule works as expected when using Cumulative Update 11 or later to install a new server using the Cumulative Update 11 or later package.

https://blogs.technet.microsoft.com/exchange/2018/10/16/released-october-2018-quarterly-exchange-updates/
  • Server mit dem CU11 und installierter Mailbox Rolle benötigen ebenfalls die Visual C++ 2013 Runtime (Link siehe oben)
  • Ebenfalls unterstützt Exchange 2016 CU11 jetzt auch das .Net Framework 4.7.2. Ebenfalls wird das .Net Framework 4.7.2 ab dem CU13 im Juni 2019 zur Vorraussetzung.

Exchange 2013:

  • Exchange Server 2013 CU21 hat im Nachgang ebenfalls Support für das .Net Framework 4.7.2 erhalten!

Für den fleißigen Exchange Admin, der zeitnah auf Exchange 2016 CU11 oder Exchange 2019 RTM geht, heißt es dann auch schon „Frohe Weihnachten“. Die nächsten geplanten Kumulativen Updates (CU12 für Exchange Server 2016) sowie das Exchange Server 2019 CU1 erscheinen erst im März 2019.

Exchange Server 2019 Preview verfügbar

Am 24.07.2018 wurde die Exchange Server 2019 Preview für die Allgemeinheit veröffentlicht.

Da es grade sehr heiß ist und in der Ferienzeit scheinbar alle im Urlaub sind, habe ich meine riesige Exchange Demoumgebung doch direkt einmal auf die Exchange Server 2019 Preview upgedatet. 🙂

Bei der Installation in die bestehende Exchange Organisation hat sich im Vergleich zu den letzten beiden Exchange Versionen eigentlich wenig getan. Die Vorraussetzungen sind ebenfalls nahezu geich geblieben und wären namentlich:

Eine kleine (ggfs. wichtige) Änderung betrifft das Forest Functional Level der Gesamtstruktur. Dieses muss mindestens auf das Forest Functionality Level Server 2012 R2 angehoben werden!

Getreu dem Dinner for one Motto „The same procedure as every year“ sieht das GUI Setup dem der alten Versionen ziemlich ähnlich. Damit alle beruhigt sind, bei der Installation per Commandline hat sich auch nichts getan.

Nach der Installation geht es ebenfalls ziemlich genau so weiter wie bei einer Migration von Exchange 2013 auf 2016:

#Auslesen der Exchange Server
$Exch2016 = Get-ExchangeServer | ? AdminDisplayVersion -match "Version 15.1"
$Exch2019 = Get-ExchangeServer | ? AdminDisplayVersion -match "Version 15.2"
#Auslesen des konfigurierten SplitDNS FQDNs
$vDirHost = $(Get-OwaVirtualDirectory -Server $Exch2016).InternalURL.Host
 
#Mailboxdatenbanken auf dem Exchange 2019 trennen
Get-MailboxDatabase -Server $Exch2019 | Dismount-Database -Confirm:$false
#Mailboxdatenbanken umbenennen, verschieben und einbinden
foreach ($DB in $(Get-MailboxDatabase -Server $Exch2019)) { $i = $i + 1; Set-MailboxDatabase -Identity $DB -Name Exch2019DB0$i; Move-Databasepath -Identity $DB -edbfilepath "D:\ExchangeDB\Exch2019DB0$i\Exch2019DB0$i.edb" -logfolderpath "D:\ExchangeLOG\Exch2019DB0$i" -confirm:$false; Mount-Database -Identity Exch2019DB0$i -confirm:$false }
 
#Neuen Receiveconnector "Internet" erstellen und in meinem Fall der Firewall erlauben anonym Mails einzuliefern
New-ReceiveConnector -Name "Internet" -Usage Custom  -TransportRole FrontendTransport -PermissionGroups AnonymousUsers -Bindings 0.0.0.0:25 -RemoteIpRanges $((Get-NetRoute -ifIndex $(Get-NetIPAddress -InterfaceAlias "LAN" -AddressFamily "IPv4").ifIndex | ? DestinationPrefix -eq "0.0.0.0/0").NextHop)
#Dem Sendeconnector "Internet" den neuen Exchange hinzufügen
Get-SendConnector -Identity "Internet" | Set-SendConnector -SourceTransportServers $Exch2016, $Exch2019
 
#IMAP und POP Zertifikats CN anpassen, da ich ein Wildcard Zertifikat nutze
Set-ImapSettings -Server $Exch2019 -X509CertificateName $vDirHost
Set-PopSettings -Server $Exch2019 -X509CertificateName $vDirHost
 
# IMAP und POP Dienste neu starten
Restart-Service MSExchangeIMAP4BE
Restart-Service MSExchangeImap4
Restart-Service MSExchangeIMAP4BE
Restart-Service MSExchangePop3
 
#Virtuelle Verzeichnisse konfigurieren
Get-OwaVirtualDirectory -Server $Exch2019 | Set-OwaVirtualDirectory -InternalUrl "https://$vDirHost/owa" -ExternalUrl "https://$vDirHost/owa"
Get-EcpVirtualDirectory -Server $Exch2019 | Set-EcpVirtualDirectory -InternalUrl "https://$vDirHost/ecp" -ExternalUrl "https://$vDirHost/ecp"
Get-OABVirtualDirectory -Server $Exch2019 | Set-OABVirtualDirectory -InternalURL "https://$vDirHost/OAB" -ExternalURL "https://$vDirHost/OAB"
Get-ActiveSyncVirtualDirectory -Server $Exch2019 | Set-ActiveSyncVirtualDirectory -InternalURL "https://$vDirHost/Microsoft-Server-ActiveSync" -ExternalURL "https://$vDirHost/Microsoft-Server-ActiveSync"
Get-WEbServicesVirtualDirectory -Server $Exch2019 | Set-WEbServicesVirtualDirectory -InternalURL "https://$vDirHost/EWS/Exchange.asmx" -ExternalURL "https://$vDirHost/EWS/Exchange.asmx"
Get-MapiVirtualDirectory -Server $Exch2019 | Set-MapiVirtualDirectory -InternalURL "https://$vDirHost/mapi" -ExternalURL "https://$vDirHost/mapi"
Get-ClientAccessService -Identity $Exch2019.Name | Set-ClientAccessService -AutodiscoverServiceInternalUri https://$vDirHost/autodiscover/autodiscover.xml
Get-OutlookAnywhere -Server $Exch2019 | Set-OutlookAnywhere -ExternalHostname $vDirHost -InternalHostname $vDirHost -ExternalClientsRequireSsl:$true -InternalClientsRequireSsl:$true -ExternalClientAuthenticationMethod "Ntlm"
 
#Zertifikatskette und eigentliches Wildcard Zertifikat aus C:\Install\Zertifikate einlesen
$Zertifikat = (Get-ChildItem -Path C:\Install\Zertifikate\1Comodo_RootCA.crt)
$Zertifikat | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root | Out-Null
$Zertifikat = (Get-ChildItem -Path C:\Install\Zertifikate\2Comodo_Intermediate_1.crt)
$Zertifikat | Import-Certificate -CertStoreLocation Cert:\LocalMachine\CA | Out-Null
$Zertifikat = (Get-ChildItem -Path C:\Install\Zertifikate\3Comodo_Intermediate_2.crt)
$Zertifikat | Import-Certificate -CertStoreLocation Cert:\LocalMachine\CA | Out-Null
$Zertifikat = Import-pfxCertificate -FilePath "C:\Install\Zertifikate\04Wildcard.pfx" -CertStoreLocation Cert:\LocalMachine\My -Password $(ConvertTo-SecureString "Kennwort1" -AsPlainText -Force)
Enable-ExchangeCertificate -Thumbprint $Zertifikat.Thumbprint -Services IIS, IMAP, POP, SMTP -Force -Confirm:$false
 
#An dieser Stelle wäre es Zeit die IP Adresse im DNS von $vDirHost auf den neuen Exchange Server zu schwenken
#Sowie den DNS Cache am Server sowie Client zu löschen
#Sowie einen heißen, schwarzen Kaffee zu trinken!
 
#Migrations Mailbox verschieben
#https://technet.microsoft.com/en-us/library/mt441791(v=exchg.150)
Get-Mailbox -Identity Migration* -Arbitration | New-MoveRequest -TargetDatabase Exch2019DB01
 
#Test User verschieben
New-MoveRequest Toni.Test -TargetDatabase Exch2019DB01
 
#Outlook testen... Outlook kann während dem gesamten Verschiebevorgang offen sein. Nach Abschluss ist ebenfalls kein Neustart mehr notwendig
 
#Arbitration Postfächer, alle anderen Postfächer und die öffentlichen Ordner Postfächer verschieben
Get-Mailbox -Server $Exch2016 -Arbitration | New-MoveRequest -TargetDatabase Exch2019DB01
Get-Mailbox -Server $Exch2016 | New-MoveRequest -TargetDatabase Exch2019DB01
Get-Mailbox -PublicFolder | New-MoveRequest -TargetDatabase Exch2019DB01
Get-Mailbox -AuditLog | New-MoveRequest -TargetDatabase Exch2019DB01
 
#Aufräumen
Get-MoveRequest | Remove-MoveRequest -Confirm:$false
 
#Exchange 2016 deinstallieren

Aufgrund des Hinweises von Sebastian Röhner im Kommentar, habe ich die Umgebung noch einmal neu aufgebaut und die Mailbox eines Testusers direkt verschoben ohne vorher das Migrationspostfach (Migration Mailbox) zu verschieben. Was soll ich sagen, es hat erneut ohne Probleme funktionert. Dennoch werde ich in Zukunft wohl den Microsoft-Weg, wie in https://technet.microsoft.com/en-us/library/mt441791(v=exchg.150) beschrieben gehen. Daher ist das Script auch ein wenig ergänzt worden.

Nochmals ein „Danke“ an Sebastian Röhner für den Hinweis!

MoveRequest MigrationMailbox
MoveRequest MigrationMailbox

Da bleibt ja eigenltich nur die Frage nach den Änderungen oder Neuerungen… Auf den ersten Blick wären da:

  • Support von Windows Server 2016 (2019 vermutlich auch?) Core
  • Einem in der Preview nicht funktionierenden SSD Cache
  • Indexierung nicht mehr im Dateisystem sondern in der Datenbnak
  • Unterstützung von 48 Prozessoren und 256GB RAM
  • Es gibt keine UM (Unified Messaging) Rolle mehr mit Exchange 2019