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 DeutschGet-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öschenGet-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))