Website-Icon Frankys Web

Exchange 2019: Die Basiskonfiguration

Nach einem kleinen Howto zur Exchange 2019 Installation folgt nun eine Anleitung zur Erstkonfiguration. Die Basiskonfiguration ist nahezu identisch mit der Konfiguration eines Exchange 2016 Servers. Wer also schon mit Exchange 2013/2016 gearbeitet hat, findet sich hier schnell zurecht.

Wenn Exchange 2019 auf Server 2019 Core installiert wurde, können die hier beschriebenen Schritte der in der Exchange Management Shell direkt auf dem Exchange Server ausgeführt werden. Die Exchange Management Shell lässt sich auf Server Core mit dem Befehl “LaunchEMS” starten.

Für dieses HowTo wurde Exchange 2019 auf einem Windows Server 2019 mit grafischer Benutzeroberfläche installiert, dieses Howto zur Basiskonfiguration gilt aber genauso für eine Installation auf Server Core.

Nach der Installation von Exchange habe ich es mir angewöhnt zuerst die Datenbank umzubenennen und an ihren Bestimmungsort zu verschieben, dies geschieht via Shell mit den folgenden Befehlen:

Get-MailboxDatabase -Server LABEX1 | Set-MailboxDatabase -Name MBXDB01
Move-DatabasePath MBXDB01 -EdbFilePath c:\MBXDB01\MBXDB01.edb -LogFolderPath c:\MBXDB01

Jetzt können die Domänen angegeben werden, für die Exchange zuständig ist. Als akzeptierte Domänen werden alle Domänen angegeben, über die zukünftig E-Mails empfangen oder versendet werden sollen. Für dieses Beispiel habe ich nur die Domain “frankysweb.de” hinzugefügt:

Damit Benutzer automatisch eine entsprechende E-Mail Adresse erhalten, kann eine E-Mail Adressrichtlinie konfiguriert werden. Die Adressrichtlinie kann nach den Vorgaben des Unternehmens erzeugt werden. Für dieses Beispiel habe ich den Alias (entspricht dem Benutzernamen) verwendet:

Nachdem die Adressrichtlinie erstellt wurde, muss die neue Richtlinie noch angewendet werden:

Damit E-Mails ins Internet verschickt werden können, wird ein Sendeconnector benötigt. Es muss mindestens einen Sendeconnector mit dem Adressraum “*” geben, über diesen Connector werden alle Mails versendet, für die Exchange nicht selbst zuständig ist. Für dieses Beispiel lege ich den Sendeconnector “Route-to-Internet” an:

Je nach Umgebung muss der Weg ausgewählt werden, wie Exchange die Mails weiterleiten soll. Dies kann entweder anhand der MX Records der Domänen erfolgen, oder über einen Smarthost (Provider, SPAMFilter, etc):

Hier wird nun der Adressraum des Connectors angegeben. Da dieser Connector alle Mails für die Exchange nicht selbst zuständig ist an einen Smarthost schicken soll, wird hier der Adressraum “*” angegeben:

Im letzten Schritt wird nun noch der (oder die) Exchange Server eingetragen, welche den Connector benutzen:

Der Sendeconnector ist nun angelegt. Zum Schluss müssen noch einmal die Eigenschaften des Connectors geöffnet werden.In den Eigenschaften des Sendeconnectors kann jetzt noch der HELO / EHLO Hostname konfiguriert werden:

Zu guter Letzt folgt noch die Konfiguration der virtuellen Verzeichnisse. Hier werden die URLs festgelegt die von den Clients benutzt werden. Die festgelegten URLs werden auch via Autodiscover direkt an die Clients verteilt. Die virtuellen Verzeichnisse enthalten also die URLs, die von den Clients / Benutzern später für den Zugriff auf Exchange benutzt werden. Alle konfigurierten Hostnamen müssen auch auf dem Zertifikat vorhanden sein, da es sonst zu Zertifikatswarnungen kommt.

Damit alle URLs in einem Schritt identisch konfiguriert werden können, kann das folgende kleine Script benutzt werden. Im Script müssen nur die ersten 4 Zeilen an die eigene Umgebung angepasst werden. Die Empfehlung ist internen ($internalhostname) und externen Hostnamen ($externalhostname) gleich zu lassen.

Den Autodiscover Hostname ($autodiscoverhostname) empfehle ich auf autodiscover.domain.tld zu belassen.

Es würde allerdings auch funktionieren, alle 3 Namen auf dem gleichen Hostname zu konfigurieren. In diesem Fall muss es der Hoster der Domain aber erlauben, dass DNS SRV Einträge gesetzt werden können, dies ist leider nicht immer der Fall.

Hinweis: Alle angegebenen Namen müssen auch für das Zertifikat konfiguriert werden.

Das folgende Script kann nach dem Ändern der ersten 4 Zeilen in der Exchange Management Shell ausgeführt werden:

$servername = "LABEX1"
$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 -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

Das Script kann entweder in eine PS1 Datei kopiert werden, oder direkt auf der EMS ausgeführt werden:

Das oben angegebene Script konfiguriert alle virtuellen Verzeichnisse gemäß der Vorgabe. Bei Bedarf lassen sich jetzt die Einstellungen anpassen:

Jetzt muss nur noch das Zertifikat konfiguriert werden. Das Zertifikat wird genauso wie bei Exchange 2013/2016 erstellt. Der Zertifikat muss gemäß dieses Beispiels die Namen “outlook.frankysweb.de” und “autodiscover.frankysweb.de” enthalten. Der Vorgang ist hier ausführlich beschrieben:

Für die Exchange 2019 RTM Version ist außerdem noch dieser Artikel zu beachten:

Für das Thema Exchange Autodiscover habe ich hier ein Whitepaper veröffentlicht, welches auch für Exchange 2019 gilt:

Die mobile Version verlassen