Installation Exchange Server 2019

Windows Features per Admin Powershell:
Install-WindowsFeature Server-Media-Foundation, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, 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-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation, RSAT-ADDS, Server-Media-Foundation

Windows Updates

PreReq installieren:
Visual C++: https://www.microsoft.com/de-DE/download/details.aspx?id=40784
UC Runtime: https://www.microsoft.com/en-us/download/details.aspx?id=34992
Dot Net 4.8: https://support.microsoft.com/de-ch/help/4503548/microsoft-net-framework-4-8-offline-installer-for-windows

Reboot neuer Exchange Server


ISO File öffnen und AD vorbereiten:
CMD Als Administrator:
E:\Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataON /PrepareSchema
DC replizieren lassen
E:\Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataON /PrepareAD
DCs replizieren lassen
E:\Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataON /PrepareAllDomains
DCs replizieren lassen
Exchange Setup ausführen aus Admin CMD.

URLs Konfigurieren über Admin Exchange Management Shell:
https://github.com/cunninghamp/ConfigureExchangeURLs.ps1

Pfad zum Download Folder
URLs überprüfen vorher oder auch alter Exchange Server:
.\Get-ExchangeURLs.ps1 -Server sydex1

URLs setzen:
.\ConfigureExchangeURLs.ps1 -Server sydex1 -InternalURL mail.exchangeserverpro.net -ExternalURL mail.exchangeserverpro.net -AutodiscoverSCP autodiscover.exchangeserverpro.net

URLs überprüfen:
.\Get-ExchangeURLs.ps1 -Server sydex1


Zertifikate aus dem Exchange 2013 Server exportieren inkl. Private Key
certlm.msc und Export mit allen Infos und Private Key

Import auf dem neuen Exchange Server via Exchange Management Shell
Import-ExchangeCertificate -Server «EX01-2016» -FileName «\ex01-2016\certs\ExchangeCert.pfx» -PrivateKeyExportable:$true -Password (ConvertTo-SecureString -String «P@ssw0rd1» -AsPlainText -Force)

Zertifikat aktivieren auf neuem Exchange Server:
ECP Webseite aktivieren

Exchange Server neu starten:
– Zertifikat überprüfen

Rename DB:
Set-MailboxDatabase «Mailbox Database 2544738424» -Name «EX19DB»

Move DB und Log Files:
Move-DatabasePath -Identity «EX19DB» -EdbFilePath «E:\DB\EX19DB\EX19DB.edb» -LogFolderPath «E:\Logs\EX19DB»

OWA Login vielleicht ohne Domain voraus setzen Im ECP über Virtual Directories setzen auf owa

Internet Connector erstellen/Modifizieren / Sendconnectoren bearbeiten
überprüfen Accepted Domains
überprüfen AdressPolicy setzen

Scheduled Task einrichten um die Log Files automatisch zu löschen (Tage im Script anpassen):
https://gallery.technet.microsoft.com/office/Clear-Exchange-2013-Log-71abba44
Neuer Basic Task Programm: PowerShell.exe und als Argument Pfad zum Script eintragen
Nicht als Local Service ausführen, aber es geht mit dem Benutzer welcher den Task erstellt hat ohne Passwort und Hidden mit höchster Berechtigung.

Hybrid Wizard Link HCW:
https://aka.ms/HybridWizard

ECP Link für Exchange 2019:
https://localhost/ecp/?ExchClientVer=15.2

Systemmailboxen anzeigen:

Get-Mailbox -Monitoring
Get-Mailbox -AuditLog
Get-Mailbox -Arbitration
Get-Mailbox -Archive
Get-Mailbox -RemoteArchive
Get-Mailbox -PublicFolder
Get-Mailbox -AuxAuditLog
Get-Mailbox -GroupMailbox

Neuer Receive Connector für Relay erstellen:

New-ReceiveConnector -Server "SRVEXCH01" -Name "RelayConnector" -TransportRole FrontendTransport -Custom -Bindings 0.0.0.0:25 -RemoteIpRanges 192.168.30.140

Set-ReceiveConnector "SRVEXCH01\RelayConnector" -PermissionGroups AnonymousUsers

Get-ReceiveConnector "SRVEXCH01\RelayConnector" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"

Oder Deutsch
Get-ReceiveConnector "SRVEXCH01\RelayConnector" | Add-ADPermission -User "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"

Zertifikat auf Receiveconnector setzen für TLS Unterstützung

$TLSCert = Get-ExchangeCertificate -Thumbprint
$TLSCertName = "$($TLSCert.Issuer)$($TLSCert.Subject)"
Set-ReceiveConnector -Identity "SRVEXCH01\RelayConnector" -TlsCertificateName $tlscertName


Wenn es nicht funktioniert wie oben beschrieben können folgende Befehle helfen
$cert = Get-ExchangeCertificate -Thumbprint <thumbprint>
$tlscertificatename = "<i>$($cert.Issuer)<s>$($cert.Subject)"
Set-SendConnector "<SendConnector>" -TlsCertificateName $tlscertificatename


iisreset nicht vergessen!

Benachrichtigungen im Exchange Server löschen

Get-Mailbox -Arbitration | Search-Mailbox -DeleteContent


Outlook Autodiscover Tuning:

  • Verwenden von ExcludeLastKnownGoodUrl , um zu verhindern, dass Outlook die letzte als funktionierend bekannte Auto Ermittlungs-URL
    verwendet HKEY_CURRENT_USER\Software\Microsoft\Office\x.0\Outlook\Autodiscover
    DWORD: ExcludeLastKnownGoodUrl
    Wert: 1

    Oder

    HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\x.0\Outlook\Autodiscover
    DWORD: ExcludeLastKnownGoodUrl
    Wert: 1
  • Verwenden von ExcludeHttpsRootDomain , um zu verhindern, dass Outlook die HTTPS-Stammdomäne
    verwendet HKEY_CURRENT_USER\Software\Microsoft\Office\x.0\Outlook\Autodiscover
    DWORD: ExcludeHttpsRootDomain
    Wert: 1

    Oder

    HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\x.0\Outlook\Autodiscover
    DWORD: ExcludeHttpsRootDomain
    Wert: 1
  • Verwenden von ExcludeSrvRecord , um zu verhindern, dass Outlook die HTTPS-Stammdomäne
    verwendet HKEY_CURRENT_USER\Software\Microsoft\Office\x.0\Outlook\Autodiscover
    DWORD: ExcludeSrvRecord
    Wert: 1

    Oder

    HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\x.0\Outlook\Autodiscover
    DWORD: ExcludeSrvRecord
    Wert: 1

Neuer Exchange Base64 Zertifikatsrequest per Powershell erstellen:

$txtrequest = New-ExchangeCertificate -GenerateRequest -FriendlyName "%FRIENDLYNAME%" -PrivateKeyExportable $true -SubjectName "c=CH,o=%COMPANYNAME%,cn=%COMMONNAME%,ou=IT,l=%ORT%" -DomainName autodiscover.%DOMAINNAME%,mail.%DOMAINNAME%,%MOREALTERNATIVEDOMAINNAMES%

[System.IO.File]::WriteAllBytes('\\localhost\c$\Temp\20240131kvz-schule.chRequest.req', [System.Text.Encoding]::Unicode.GetBytes($txtrequest))