Im ersten und zweiten Teil dieser Beitragsserie wurde bereits AD und DNS der Exchange Organisation installiert und konfiguriert. In Teil 2 wurde dann Exchange 2016 installiert. In diesem Teil geht es um die Exchange 2016 Konfiguration.
Um es etwas einfacher zu machen, hier noch einmal die Darstellung der Umgebung die installiert wird:
Vorwort
Bevor es mit der Konfiguration losgeht, müssen wir uns Gedanken über den Namespace machen. Das Active Directory in dieser Testumgebung hört auf den Namen frankysweb.org, der Exchange Server hört auf den Hostnamen „Exchange“. das ergibt folglich den FQDN exchange.frankysweb.org. Das hört sich doch schon einmal wie ein ordentlicher Name an. Trotzdem möchte ich gerne den Namen outlook.frankysweb.org für den Zugriff auf Exchange nutzen. Ich finde Outlook.frankysweb.org ist für die Benutzer einfacher zu merken, außerdem kommt irgendwann eine Migration und im Falle eines Releasewechsels möchten wir den Namen ja gerne beibehalten.
Also wird folgendes konfiguriert:
- OWA, Outlook, EWS, ActiveSync verbinden sich alle via outlook.frankysweb.org mit dem Exchange Server
- Autodiscover wird über den namen autodiscover.frankysweb.org veröffentlicht
Starten wir also mit der Konfiguration
Konfiguration der virtuellen Verzeichnisse
Damit der Zugriff via outlook.frankysweb.org (bzw Autodiscover via autodiscover.frankysweb.org) funktioniert, brauchen wir zuerst 2 DNS Einträge auf dem internen DC / DNS Server:
In der Zone frankysweb.org werden also die Host Einträge „outlook“ und „autodiscover“ jeweils mit der IP des Exchange Servers angelegt. In meinem Fall ist es die 172.16.100.13. Für die beiden Host-A Einträge muss der Haken bei „Verknüpften PTR-Eintrag erstellen“ entfernt werden. Gleiches gilt für „autodiscover“
Jetzt können auf dem Exchange Server die entsprechenden URLs konfiguriert werden. am einfachsten und schnellten funktioniert das via Exchange Management Shell mit den folgenden Befehlen:
Get-OwaVirtualDirectory -Server Exchange | Set-OwaVirtualDirectory -internalurl "https://outlook.frankysweb.org/owa" -externalurl "https://outlook.frankysweb.org/owa" Get-EcpVirtualDirectory -server Exchange | Set-EcpVirtualDirectory -internalurl "https://outlook.frankysweb.org/ecp" -externalurl "https://outlook.frankysweb.org/ecp" Get-WebServicesVirtualDirectory -server Exchange | Set-WebServicesVirtualDirectory -internalurl "https://outlook.frankysweb.org/EWS/Exchange.asmx" -externalurl "https://outlook.frankysweb.org/EWS/Exchange.asmx" Get-ActiveSyncVirtualDirectory -Server Exchange | Set-ActiveSyncVirtualDirectory -internalurl "https://outlook.frankysweb.org/Microsoft-Server-ActiveSync" -externalurl "https://outlook.frankysweb.org/Microsoft-Server-ActiveSync" Get-OabVirtualDirectory -Server Exchange | Set-OabVirtualDirectory -internalurl "https://outlook.frankysweb.org/OAB" -externalurl "https://outlook.frankysweb.org/OAB" Get-MapiVirtualDirectory -Server Exchange | Set-MapiVirtualDirectory -externalurl "https://outlook.frankysweb.org/mapi" -internalurl "https://outlook.frankysweb.org/mapi" Get-OutlookAnywhere -Server Exchange | Set-OutlookAnywhere -externalhostname outlook.frankysweb.org -internalhostname outlook.frankysweb.org -ExternalClientsRequireSsl:$true -InternalClientsRequireSsl:$true -ExternalClientAuthenticationMethod 'Negotiate' Get-ClientAccessService Exchange | Set-ClientAccessService -AutoDiscoverServiceInternalUri "https://autodiscover.frankysweb.org/Autodiscover/Autodiscover.xml"
Bei den Befehlen muss jeweils mur der Servername hinter dem Parameter „-Server“ entsprechend angepasst werden und die jeweilen URLs (-internalurl / –externalurl). Das sollte selbsterklärend sein.
Jetzt hört der Exchange Server auf die Namen outlook.frankysweb.org und autodiscover.frankysweb.org
Konfiguration Webmaster Postfach bei Strato
Dies ist ein kleiner Zwischenschritt, bevor es an die Konfiguration der Zertifikate geht. Damit später die Zertifikate ausgestellt werden können, ist eine E-Mail Adresse für Domainvalidierung erforderlich. Hierzu wird beim Webhoster (in meinem Fall Strato) ein Postfach mit der E-Mail Adresse webmaster@frankysweb.org angelegt.
Wichtig: Das Postfach wird beim Webhoster angelegt (noch nicht auf dem Exchange Server!
Bei Stro funktioniert das wie folgt. Im Kundenbereich, kann unter dem Punkt E-Mail ein neues Postfach erzeugt werden:
Adresse angeben und Passwort vergeben, fertig:
Auf dieses Postfach kann jetzt via Strato Webmail zugegriffen werden:
Hintergrund: Ich gehe davon aus, das es eine grüne Wiese ist. Im nächsten Schritt wird StartSSL als CA für das Zertifikat verwendet. StartSSL stellt Domain validierte Zertifikate aus. Dazu wird eine E-Mail an eine von mehreren vorgegebenen Adressen mit einem Code verschickt. Man muss also in der Lage sein, E-Mails an eine dieser Adressen (zum Beispiel webmaster@) zu empfangen um an den Code zu kommen.
Dieses Postfach dient also nur dazu an der Zertifikat für den nächsten Schritt zu kommen.
Anforderung Zertifikat mittels StartSSL
Hinweis: Die CA „StartSSL“ gibt es nicht mehr. Stattdessen kann Let’s Encrypt verwendet werden, siehe dazu Zertifikatsassistent für Let’s Encrypt
Natürlich brauchen wir für Exchange auch ein entsprechendes Zertifikat. ist aber nicht schwierig und kostet nix. In der Konfiguration der virtuellen Verzeichnisse haben wir die URLs festgelegt, über die auf Exchange zugegriffen werden soll (outlook.frankysweb.org und autodiscover.frankysweb.org) und nur diese beiden Namen werden auf dem Zertifikat benötigt.
Um an ein ordentliches Zertifikat zu kommen, kann StartCom (StartSSL) verwendet werden, hier gibt es Zertifikate mit 12 Monaten Laufzeit kostenlos. Ein Account kann hier kostenlos angelegt werden:
Nachdem ein Account angelegt wurde, muss die Domain validiert werden, dies geschieht über den Reiter „Validations Wizard“:
Im nächsten Schritt wird angegeben, an welche E-Mail Adresse der Verification Code geschickt werden soll (siehe oben „Webmaster Postfach“)
Nach kurzer Zeit kommt der Code beim Webmaster an, da unsere Exchange Umgebung noch nicht fertig ist, wird halt Strato Webmail genutzt:
Hinweis: Man könnte das Webmaster Postfach auch auf dem Exchange einrichten, ich werde aber den Teil Empfang / Versand von E-Mails in einem eigenen Artikel behandeln. Daher der Umweg über Strato Webmail etc. Es passt sonst thematisch schlecht in die Artikel.
Mit dem Code kann nun der Wizard abgeschlossen werden.
Jetzt kann eine Zertifikatsanforderung auf dem Exchange Server erstellt werden. das funktioniert wieder einfach per Shell:
New-ExchangeCertificate –Server "Exchange" –GenerateRequest –FriendlyName "StartSSL Exchange Cert" –PrivateKeyExportable $true –SubjectName "c=DE, s=NRW, l=Liemke, o=FrankysWeb, ou=IT, cn=outlook.frankysweb.org" –DomainName outlook.frankysweb.org,autodiscover.frankysweb.org –RequestFile "\\Exchange\C$\Anforderung.csr"
Der Befehl ist auch wieder selbsterklärend, falls nicht, hier gibt es eine entsprechende Erklärung:
https://www.frankysweb.de/kostenlose-san-zertifikate-auch-bei-startssl/
Die Zertifikatsanforderung kann nun direkt aus dem Shell Fenster kopiert werden:
Die Zertifikatsanforderung wird jetzt über den Punkt „Certificates Wizard bei StartSSL“ eingereicht:
Im Wizard selbst, werden jetzt die Domainnamen angegeben, also nur outlook.frankysweb.org und autodiscover.frankysweb.org, angegeben und die Zertifikatsanforderung hochgeladen.
In meinem Fall möchte mich StartSSL noch einmal überprüfen:
Normalerweise bekommt man das Zertifikat allerdings direkt als Download einer ZIP-Datei angeboten. Sobald das ZIP-Archiv mit den Zertifikaten vorhanden ist, kann es auf dem Exchange Server abgelegt werden.
Installation des Zertifikats
Das ausgestellte Zertifikat von StartSSL liegt in einem ZIP-Archiv in mehreren Formaten vor:
Im Ordner IISServer liegt das eigentliche Zertifikat und das Zertifikat der Zwischenzertifizierungsstelle (Intermediate):
Beide Zertifikate werden in einen Ordner entpackt (Als Beispiel C:\Cert). Das Zwischenzertifikat wird als Erstes installiert
Das Zertifikat muss im Zertifikatsspeicher des Computers gespeichert werden:
Als Speicherort wird „Zwischenzertifizierungsstellen“ angegeben:
Nachdem das Zertifikat installiert wurde, muss noch das Zertifikat für den Exchange Server installiert und aktiviert werden. Das Installieren funktioniert auch wieder einfach per Shell:
Import-ExchangeCertificate -FileData ([Byte[]]$(Get-Content -Path C:\Cert\2_outlook.frankysweb.org.crt -Encoding byte -ReadCount 0))
Der Befehl ist ebenfalls wieder selbsterklärend, es muss nur der Pfad angepasst werden. Nach dem Import wird auch der Thumbprint des Zertifikats angezeigt, dieser wird zum aktivieren des Zertifikats benötigt und kann direkt innerhalb der Shell verwendet werden:
Mit folgendem Befehl wird das Zertifikat aktiviert:
Enable-ExchangeCertificate -Thumbprint F109BC84E8A477902C8E021A4D4E5CBAD13EC596 -Services POP,IMAP,SMTP,IIS
So schlimm ist das Thema Zertifikat doch gar nicht…
Authentifizierung anpassen
Jetzt können wir zur Abwechslung auch mal die EAC benutzen, so lässt sich auch gleich das Zertifikat verifizieren:
Ausgestellt von StartCom, hat also alles geklappt. Der Internet Explorer wirft hier natürlich eine Zertifikatswarnung, da via https://localhost auf EAC zugegriffen wird.
Das eigentliche Ziel ist es allerdings, den Benutzern das Login mit Ihrer E-Mail Adresse zu erlauben. Dazu haben wir bereits alle notwendigen Voraussetzungen geschaffen (AD Name frankysweb.org):
UPN und E-Mail Adresse werden später frank@frankysweb.org sein, dazu muss die Authentifizierungsmethode für OWA umgestellt werden. Dies geschieht über die EAC. Server –> Virtuelle Verzeichnisse –> owa –> Authentifizierung –> Benutzerprinzipalname (UPN):
Abschließend ein iisreset:
Sendeconnector erstellen
Der Sendeconnector kann schon einmal erstellt werden, auch wenn die UTM noch garnicht darauf vorbereitet ist, Mails von von Exchange anzunehmen und entsprechend weiterzuleiten. Ich füge diesen Schritt hier ein, damit es thematisch zum Artikel passt. Damit also in Zukunft Mails versendet werden können, wird ein Sendeconnector benötigt, dieser lässt sich wieder schnell per Shell anlegen:
New-SendConnector -Internet -Name "UTM-Route-to-Internet" -AddressSpaces * -SmartHosts 172.16.100.254 -Fqdn outlook.frankysweb.org
Der Befehl muss nur wieder geringfügig angepasst werden, IP der UTM und FQDN entsprechend angeben, in meinen Fall also 172.16.100.254 (IP UTM) und outlook.frankysweb.org (FQDN für den wir ein gültiges Zertifikat haben)
Verschieben und Umbenennen der Datenbank
Zum Schluss wird noch die Mailbox Datenbank mit einem freundlichen Namen versehen und an einen anderen Speicherort verschoben. Ich habe meinen Exchange Server mit einer 200 GB Disk ausgestattet, auf der sowohl die Exchange Installation, als auch die Datenbank gespeichert wird. Für kleine Organisationen reicht es meist aus, auch die Trennung zwischen Datenbank und Logfiles nehme ich nicht vor. Es geht hier immerhin nur um eine kleine Umgebung. Wer es gerne anders mag, hat hier die Gelegenheit:
Get-MailboxDatabase -Server Exchange | Set-MailboxDatabase -Name "MailboxDB" Move-DatabasePath "MailboxDB" -EdbFilePath E:\MailboxDB\MailboxDB.edb -LogFolderPath e:\MailboxDB
Zusammenfassung
Wir haben jetzt einen entsprechend konfigurierten Exchange 2016 Server mit einem gültigen Zertifikat einer öffentlichen CA. Zwar ist es bisher noch nicht möglich Mails von extern zu empfangen oder zu versenden, dazu fehlt noch die Konfiguration der UTM, aber intern kann schon getestet werden. Hier einmal als Beispiel von einem Windows 10 Client:
OWA ohne Zertifikatswarnung und Login mit der E-Mail Adresse:
Outlook 2016 (Autodiscover und Login via E-Mail Adresse funktioniert auch ohne Domain Mitgliedschaft ohne Zertifikatswarnungen):
Alle Verbindungen laufen über outlook.frankysweb.org:
Im nächsten Teil ist dann die Konfiguration der UTM dran.
Hinweis:
Die CA StartCom bzw StartSSL gibt es nicht mehr. Der CA wurde das Vertrauen entzogen. Kostenlose Zertifikate gibt es stattdessen bei Let’s Encrypt. Diese lassen sich sogar automatisieren: