Apache2 als Reverse Proxy für Exchange 2010 2013 2016 2019 inklusive Outlook Anywhere RPC over http
Aus znilwiki
Nachfolgend beschreibe ich wie
- ein Webserver mit
- mehreren Servern dahinter
- sich eine externe IP teilen und
- je nach DNS-Name / Subdomain die Anfragen zu den einzelnen Servern weiter geleitet werden
- inklusive eines Exchange-Server mit OWA, ActiveSync und(!) Outlook Anywhere (RPC over http)
ChangeLog:
- 20.11.2014: Eintrag in Konfigurationsdatei hinzugefügt damit AutoDiscover funktioniert - hatte Probleme bei der Authentifizierung
- 20.11.2014: Expectation Failed Apache 417 - Fehler behoben! Der Remote Connectivity Analyzer meldet keine Fehler bei AutoDiscover und ActiveSync mehr!!!
- 20.11.2014: Und noch den letzten Fehler gefunden - der Zugriff auf den /ews Teil scheiterte an der Authentifizierungsmethode NTLM - geht durch den Apache nicht Fehlerfrei durch, Workaoround gebaut
- 21.11.2014: Text zu den notwendigen Subdomains und den Zertifikaten noch etwas weiter ausgeführt
- 18.12.2014:
a2enmod headers
hinzugefügt, ist nicht unbedingt ab Werk aktiv - 17.12.2015: Ergänzungen zum OAB Modul (Offline Address Book) - Dank an T. Andreas
- 21.04.2016: Ergänzung zum Anhang versenden per Active Sync - Danke an RWambacher
- 24.03.2019: Anpassung des Artikels an Ubuntu 18.04 und Exchange 2016
- 24.04.2019: Neue Version mit Exchange 2016
- 08.05.2019: aktive Konfiguration wie ich diese zur Zeit im Live-Betrieb habe
- 10.12.2020: Lösung die ohne Änderung an der IIS Security auskommt von Marco Maus ( marco.maus@mit-system.eu ) übernommen
- 02.04.2021: Sicherheitsproblem im Zusammenhang mit dem mpm_prefork - Modul und nicht Outlook-Clients behoben
Ausgangslage
Ich habe einen ESXi-Server im Internet stehen. Auf diesem laufen
- pfSense als zentrale Firewall
- ein WEBSERVER mit dieser und anderen Webseiten (Ubuntu 18.04.x LTS / Apache2 / MySQL) mit ISPConfig zur Verwaltung
- ein ZABBIX Server (Zabbix 5.0.x auf Ubuntu 20.04.x LTS / Apache2 / MariaDB)
- ein SEAFILE Server (Seafile 7.2.1 auf Ubuntu 20.04.x LTS / Apache2 / MySQL)
- zwei EXCHANGE Server (Exchange 2016 auf Windows Server 2016)
Diesen Server habe ich bei Kimsufi SoYouStart OVH gemietet - die sind sehr günstig - aber bieten auch nur eine einzige externe IP-Adresse.
Die IPv4 liegt an der pfSense Firewall extern an. Nun wollte ich das je nach Subdomain die entsprechende Webseite bzw. der entsprechende Server angesprochen wird.
Die Schwierigkeit lag nun darin das ich diverse Domänen haben - und hinter diesen verschieden Subdomains, teils mit http, teils mit https
Trotzdem sollte sich alles eine gemeinsame externe IP-Adresse teilen. Ich hätte ja auch nur den Port 443 an den Exchange weiterleiten (NAT) können - aber dann hätte ich keine anderen
Webseiten mit https absichern können ... und das in der heutigen Zeit
Bei Webseiten ist dies nicht weiter schwierig - je nachdem mit welchem DNS-Namen man von extern kommt serviert Apache die entsprechende Webseite.
Dies habe ich mit einer Apache-VirtualHost (vhost) Konfiguration gelöst: http://httpd.apache.org/docs/2.4/vhosts/examples.html
Da es einfacher zu verwalten ist nutze ich ISPConfig ( http://www.ispconfig.de/ ) zur Konfiguration.
Im Verzeichnis
/etc/apache2/sites-available
liegt dazu für jede Webseite / Subdomain eine passende Datei mit der Konfiguration eben dieser Domain / Subdomain.
# ls -l /etc/apache2/sites-available drwxr-xr-x 2 root root 4096 Okt 31 19:34 ./ drwxr-xr-x 8 root root 4096 Okt 14 23:35 ../ -rw-r--r-- 1 root root 6437 Jan 7 2014 default-ssl.conf -rw-r--r-- 1 root root 1622 Okt 31 08:44 ispconfig.conf -rw-r--r-- 1 root root 2023 Okt 31 08:44 ispconfig.vhost -rw-r--r-- 1 root root 3601 Nov 2 12:09 mail.linz.email.vhost -rw-r--r-- 1 root root 922 Okt 31 19:57 seafile.znil.net.vhost -rw-r--r-- 1 root root 3357 Okt 25 20:57 support.znil.net.vhost -rw-r--r-- 1 root root 945 Okt 25 22:57 zabbix.znil.net.vhost -rw-r--r-- 1 root root 3361 Okt 24 23:58 znil.de.vhost -rw-r--r-- 1 root root 2923 Okt 25 00:01 znil.net.vhost
usw.
Jede Datei besitzt einen symbolischen link in das Verzeichnis
/etc/apache2/sites-enabled
es ist also beides die jeweils gleiche Datei.
Durch direktes Bearbeiten dieser Dateien kann man nun steuern wo etwas landen soll. Habt Ihr keine vhost Konfiguration und gibt es nur eine Datei in diesen Verzeichnissen so müsst Ihr einfach eine neue Datei anlegen. In diesem Fall aktiviert Ihr die Datei mit
a2ensite [name_der_datei]
Die Datei wird dann nach
/etc/apache2/sites-enabled
verlinkt (und was Apache sonst noch machen muss).
Apache Module nachinstallieren / aktiviern
Um den Apache auch als Reverse Proxy nutzen zu können brauch es ein paar Module die erst noch aktiviert werden müssen:
a2enmod headers a2enmod rewrite a2enmod proxy_http a2enmod ssl
Im Anschluss ein
systemctl restart apache2.service
und es kann losgehen.
Domänen / Subdomains anlegen
Ihr müsst bei eurem Provider / Hoster der Domänen die folgenden Subdomains anlegen:
- wenn eure Domäne
linz.email
heisst dann die Subdomainsmail.znil.org
<- da lassen wir den MX-Record drauf zeigenautodiscover.mail.znil.org
<- brauchen wir damit Autodiscover funktioniert
Beide Einträge sollten dann auf die externe IP-Adresse eures Apache-Servers zeigen.
Diese Domänen brauchen wir dann auch auf eurem Server mit Apache. Falls ihr ISPConfig nutzt legt bitte nur die mail.domäne.suffix dort an - die andere Subdomain autodiscover.domäne.suffix schreiben wir direkt in die Konfigurationsdatei.
Wenn Ihr das von Hand machen wollt legt eine Datei im Verzeichnis /etc/apache2/sites-available
, das kann auch gleich die weiter unten aufgeführte Datei sein.
Port Weiterleitung / Port Forwarding / NAT
Egal ob wie hier eine pfSense-Maschine oder eine Fritzbox - leitet die externen Ports
80 443
an euren internen Webserver weiter (also den Server auf dem der Apache Reverse Proxy läuft).
Brauchen eure anderen Server noch weitere Ports wie bei mir (siehe Zeichnung oben) so leitet die entsprechenden Ports dann direkt an die jeweiligen Server weiter,
bei mir z.B. den Port 25 für SMTP an den Exchange Server oder den Port 10051 an den Zabbix-Server.
Apache Reverse Proxy
Nachdem wir die Domänen angelegt haben und es für jede dieser Domänen eine eigene .vhost Datei unter
/etc/apache2/sites-available
und deren Verlinkung unter
/etc/apache2/sites-enabled
gibt bearbeiten wir diese für die verschiedenen Subdomains.
Bearbeitet immer die Version unter sites-available
.
Zabbix-Server (zum Aufwärmen)
Bevor wir mit der "dicken" Konfigurationsdatei für Exchange anfangen eine kleinere, leichtere zum Einstieg und zum Verständnis.
Mein Zabbix-Server soll extern über die Subdomain
zabbix.znil.net
erreichbar sein.
In ISPConfig habe ich diese Subdomäne als Host angelegt und habe somit auch eine Datei
/etc/apache2/sites-available/zabbix.znil.net.vhost
Intern hat der Zabbix-Server die IP-Adresse
192.168.200.20
Wir bearbeiten nun also die Datei:
nano /etc/apache2/sites-available/zabbix.znil.net.vhost
Löschen den gesamten Inhalt (bei nano mal F9 probieren!) und ersetzen diesen durch den folgenden:
<VirtualHost 192.168.200.10:80> ServerName zabbix.znil.net ServerAdmin webmaster@znil.net ProxyPass / http://192.168.200.20/ ProxyPassReverse / http://192.168.200.20/ </VirtualHost> <VirtualHost 192.168.200.10:443> ServerName zabbix.znil.net ServerAdmin webmaster@znil.net SSLEngine on SSLCertificateFile /var/www/zabbix.znil.net/ssl/zabbix.znil.net.crt SSLCertificateKeyFile /var/www/zabbix.znil.net/ssl/zabbix.znil.net.key ProxyPass / http://192.168.200.20/ ProxyPassReverse / http://192.168.200.20/ </VirtualHost>
Wie Ihr seht gibt es jeweils eine http (Port 80) und https (Port 443) Konfiguration. Braucht ihr eines von beiden nicht so lasst es weg.
Erklärungen:
<VirtualHost 192.168.200.10:80> : Die 192.168.200.10 ist die interne IP-Adresse unseres Webservers. Auf diese IP werden per NAT von extern die Ports 80 und 443 weiter geleitet. Steht euer Webserver direkt im Internet wäre dies die öffentliche IP des Servers Der Port ist hier 80 (hhtp) oder 443 (https) ServerName zabbix.znil.net : Die Subdomäne / Domäne für welche die Einstellungen gelten sollen ServerAdmin webmaster@znil.net : Email-Adresse an die sich bei Problemen gewandt werden soll ProxyPass / http://192.168.200.20/ : leitet alle Anfragen an die Subdomain an diese (interne) IP-Adresse weiter. Man könnte auch einen DNS-Namen nehmen ProxyPassReverse / http://192.168.200.20/ : Der Rückweg zur vorherigen Regel
Bei der SSL Konfiguration steht zusätzlich noch
SSLEngine on SSLCertificateFile /var/www/zabbix.znil.net/ssl/zabbix.znil.net.crt SSLCertificateKeyFile /var/www/zabbix.znil.net/ssl/zabbix.znil.net.key
Hier wird also ein SSL Zertifikat verwendet - die Kommunikation nach extern(!) findet also verschlüsselt statt! Intern ist die Weiterleitung aber per http:, intern wird also unverschlüsselt Kommuniziert.
Soll/Muss intern der Datenverkehr auch verschlüsselt stattfinden so gebt einfach die https-Adressen an.
Man kann auch noch "Rewrite" Regeln angeben - das ist eine Text-Ersetzung die stattfindet.
Wenn Ihr im Teil für Port 80 so ändert:
<VirtualHost 192.168.200.10:80> ServerName zabbix.znil.net ServerAdmin webmaster@znil.net RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </VirtualHost>
Würde ein http: Aufruf auf https: umgeleitet.
Von den Rewrites macht gleich die Exchange-Lösung massiv gebrauch.
Exchange-Server
Die Exchange-Version ist etwas umfangreicher ...
Outlook Anywhere Unterstützung nachinstallieren
Seit Ubuntu 14.04 geht das einfach mit
apt install libapache2-mod-proxy-msrpc
Nach der Installation funktioniert der Eintrag
OutlookAnywherePassthrough On
ohne Installation wird Apache meckern und nicht starten.
KeepAlive Einstellung des Apache prüfen
Unter Ubuntu 20.04 / 18.04 ist diese Einstellung normalerweise schon ab Werk aktiv, wir prüfen das zur Sicherheit aber einmal:
nano /etc/apache2/apache2.conf
und dort die Zeile
KeepAlive On
suchen - diese sollte nicht aus kommentiert sein und auf On stehen.
Dieser Hinweis stammt von Marco Maus und ist wichtig damit die Authentifizierung per NTLM funktioniert.
Apache2 Module prüfen
Auch diese Einstellungen sind unter Ubuntu 20.04 bereits ab Werk deaktiviert und aktiviert (war bei mir zumindest so), aber es schadet nicht sicher zu gehen
a2dismod mpm_event a2enmod mpm_prefork systemctl apache2.service restart
Dieser Hinweis stammt von Marco Maus und ist wichtig damit die Authentifizierung per NTLM funktioniert.
Zertifikate
Im Moment nutze ich für den Apache2 ein Lets Encrypt Zertifikat welches immer automatisch erneuert wird.
In der nachfolgenden Konfiguration wird ein Zertifikat für
mail.znil.org autodiscover.znil.org
benötigt. Das könnt Ihr auf dem Linux-Server wie folgt anfordern:
systemctl stop apache2 certbot certonly --standalone --preferred-challenges http --rsa-key-size 4096 -d mail.znil.org -d autodiscover.znil.org systemctl start apache2
Damit wird der Apache-Webserver gestoppt, das Zertifikat angefordert und der Apache wieder gestartet.
Werden weitere DNS-Namen benötigt so fügt einfach weitere -d
Einträge hinzu - und unten in der Konfiguration weitere ServerAlias
-Einträge
So ein Lets Encrypt Zertifikat läuft nach 3 Monaten ab und muss dann erneuert werden.
Die Erneuerung funktioniert nach dieser Methode:
Lets Encrypt Zertifikate erneuern mit Apache Reverse Proxy
Dabei halte ich den Apache Dienst im Falle einer Erneuerung immer kurz an. Da dieses nur selten vorkommt (bei meinen 30 Subdomänen so alle 3 Tage mal für eine Minute) kann ich damit gut leben.
Auf dem Exchange 2016 nutze ich eine selbstsigniertes Zertifikat welches ich einfach über das Management erstellt habe
Server => Zertifikate => +
Dieses ist 5 Jahre gültig bei mir - sollte erst einmal ausreichen. Auch in diesem Zertifikat sollten aber alle DNS-Namen vorhandenen sein die genutzt werden (und das Lets Encrypt Zertifikat hat)
In der Apache2 Konfiguration oben sind alle Prüfungen ausgeschaltet - solange also nur über den Apache-Proxy zugegriffen wird gibt es keine Probleme.
Zusammengefasst:
- nach extern wird ein kostenloses "Lets Encrypt" Zertifikat genutzt und automatisch erneuert
- intern nutzt der Exchange-Server ein selbst signiertes Zertifikat welches länger gültig ist und deshalb nicht erneuert werden muss.
Konfigurationsdatei
Die nachfolgende Version funktioniert bei mir Einwandfrei mit Exchange 2019 auf Windows Server 2019.
# Tipp von Bernd Krumböck wegen Sicherheitsproblemen mit dem MPM Modul und NTLM Authentifizierung # Clients welche EWS verwenden (z.B. AquaMail) bekommen E-Mails anderer Sitzungen synchronisiert # ServerLimit und MaxRequestWorkers ggf. an die Anzahl der vorhandenen Clients anpassen #ServerLimit 300 #MaxRequestWorkers 300 MaxConnectionsPerChild 1 <VirtualHost 10.100.12.10:80> ServerName mail.znil.org ServerAlias autodiscover.znil.org ServerAdmin webmaster@znil.org ErrorLog /var/log/apache2/error.log # Nachfolgende Zeile loggt jeden Zugriff, alternativ den Zeile darunter verwenden, dann werden die Logs verworfen CustomLog /var/log/apache2/access.log combined #CustomLog /dev/null common Header always set X-Frame-Options SAMEORIGIN Header set Server Apache RequestHeader unset Expect early Header unset X-AspNet-Version Header unset X-OWA-Version Header unset X-Powered-By ProxyRequests Off RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/owa(.*) https://mail.znil.org/owa$1 [R,L] RewriteRule ^/ecp(.*) https://mail.znil.org/ecp$1 [R,L] RewriteRule ^/Microsoft-Server-ActiveSync(.*) https://mail.znil.org/Microsoft-Server-ActiveSync$1 [R,L] DocumentRoot /var/www/mail.znil.org/web <Directory /> Order deny,allow Deny from all </Directory> <Directory /var/www/mail.znil.org/web> DirectoryIndex index.php index.html Options -Indexes +FollowSymLinks Order allow,deny Allow from all </Directory> <Proxy *> Order deny,allow Allow from all </Proxy> </VirtualHost> <VirtualHost 10.100.12.10:443> DocumentRoot /var/www/mail.znil.org/web ServerName mail.znil.org ServerAlias autodiscover.znil.org ServerAdmin webmaster@znil.org ErrorLog /var/log/apache2/error.log # Nachfolgende Zeile loggt jeden Zugriff, alternativ den Zeile darunter verwenden, dann werden die Logs verworfen CustomLog /var/log/apache2/access.log combined #CustomLog /dev/null common Header always set X-Frame-Options SAMEORIGIN Header set Server Apache Header unset X-AspNet-Version Header unset X-OWA-Version Header unset X-Powered-By RequestHeader unset Expect early SetEnvIf User-Agent ".*MSIE.*" value BrowserMSIE # 10.12.2020: Nachfolgende Zeilen würden eine Standardauthentifizierung erzwingen, ist nun nicht mehr Notwendig # Tipp von Marco Maus, Fragen an marco.maus@mit-system.eu # Header unset WWW-Authenticate # Header add WWW-Authenticate "Basic realm=mail.znil.org" ProxyRequests Off ProxyPreserveHost On #abgeschaut von https://github.com/phr0gz/Apache-reverse-proxy-for-Exchange-2010-2013-2016/blob/master/webmail.conf ProxyVia Full RequestHeader edit Transfer-Encoding Chunked chunked early RequestHeader unset Accept-Encoding TimeOut 1800 # Ende abgeschaut SSLProxyEngine On # Problemen mit Kommunikation zwischen Apache-Proxy und Exchange-Server aus dem Wege gehen # Alle SSL Prüfungen werden damit ausgeschaltet. So kann z.B. auch intern ein Selbstsigniertes Zertifikat verwendet werden SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off SSLProxyCheckPeerExpire off #Nachfolgende Zeile bewirkt das ein Aufruf von nur https://sub.name.suffix auf https://sub.name.suffix/owa weiter geleitet wird. Redirect / /owa/ # owa ProxyPass /owa https://10.100.12.81/owa ProxyPassReverse /owa https://10.100.12.81/owa ProxyPass /OWA https://10.100.12.81/OWA ProxyPassReverse /OWA https://10.100.12.81/OWA ProxyPass /Owa https://10.100.12.81/Owa ProxyPassReverse /Owa https://10.100.12.81/Owa # ecp = Adminoberfläche - falls Zugriff nicht gewünscht einfach auskommentieren! ProxyPass /ecp https://10.100.12.81/ecp ProxyPassReverse /ecp https://10.100.12.81/ecp ProxyPass /ECP https://10.100.12.81/ECP ProxyPassReverse /ECP https://10.100.12.81/ECP ProxyPass /Ecp https://10.100.12.81/Ecp ProxyPassReverse /Ecp https://10.100.12.81/Ecp # mapi ProxyPass /mapi https://10.100.12.81/mapi ProxyPassReverse /mapi https://10.100.12.81/mapi # ews -> Exchange Web Services ProxyPass /ews https://10.100.12.81/ews ProxyPassReverse /ews https://10.100.12.81/ews ProxyPass /EWS https://10.100.12.81/EWS ProxyPassReverse /EWS https://10.100.12.81/EWS ProxyPass /Ews https://10.100.12.81/Ews ProxyPassReverse /Ews https://10.100.12.81/Ews ProxyPass /exchange https://10.100.12.81/exchange ProxyPassReverse /exchange https://10.100.12.81/exchange ProxyPass /Exchange https://10.100.12.81/Exchange ProxyPassReverse /Exchange https://10.100.12.81/Exchange ProxyPass /exchweb https://10.100.12.81/exchweb ProxyPassReverse /exchweb https://10.100.12.81/exchweb ProxyPass /public https://10.100.12.81/public ProxyPassReverse /public https://10.100.12.81/public # oab (Offline Address Book) ProxyPass /oab https://10.100.12.81/oab ProxyPassReverse /oab https://10.100.12.81/oab ProxyPass /OAB https://10.100.12.81/OAB ProxyPassReverse /OAB https://10.100.12.81/OAB # RPC over http(s) / Outlook Anywhere OutlookAnywherePassthrough On ProxyPass /rpc https://10.100.12.81/rpc ProxyPassReverse /rpc https://10.100.12.81/rpc ProxyPass /Rpc https://10.100.12.81/Rpc ProxyPassReverse /Rpc https://10.100.12.81/Rpc # Microsoft-Server-ActiveSync ProxyPass /Microsoft-Server-ActiveSync https://10.100.12.81/Microsoft-Server-ActiveSync connectiontimeout=900 ProxyPassReverse /Microsoft-Server-ActiveSync https://10.100.12.81/Microsoft-Server-ActiveSync # Problem mit dem Versenden von Dateianhängen > 128KByte per ActiceSync umgehen (neuer Wert 30MByte) <Directory /Microsoft-Server-ActiveSync> SSLRenegBufferSize 31457280 </Directory> # AutoDiscover -> Autodiscover for non-AD integrated Clients (Mac, eg.) ProxyPass /autodiscover https://10.100.12.81/autodiscover ProxyPassReverse /autodiscover https://10.100.12.81/autodiscover ProxyPass /Autodiscover https://10.100.12.81/Autodiscover ProxyPassReverse /Autodiscover https://10.100.12.81/Autodiscover ProxyPass /AutoDiscover https://10.100.12.81/AutoDiscover ProxyPassReverse /AutoDiscover https://10.100.12.81/AutoDiscover # Zeichensatz spezifieren fuer Umlaute AddDefaultCharset ISO-8859-1 <Directory /> Order deny,allow Deny from all </Directory> <Directory /var/www/mail.znil.org/web> DirectoryIndex index.php index.html Options -Indexes +FollowSymLinks Order allow,deny Allow from all </Directory> <Proxy *> # 10.12.2020: Nachfolgende 2 Zeilen sind nicht mehr Notwendig # Tipp von Marco Maus, Fragen an marco.maus@mit-system.eu # SetEnv proxy-nokeepalive 1 # SetEnv force-proxy-request-1.0 1 Order deny,allow Allow from all </Proxy> # Nach extern ein Lets Encrypt Zertifikat nutzen: SSLEngine on SSLProtocol All -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCertificateFile /etc/letsencrypt/live/mail.znil.org/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/mail.znil.org/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/mail.znil.org/chain.pem BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost>
Der Port 80 Teil ist nicht viel mehr als eine http zu https Umleitung.
Ihr müsst alle folgenden Einträge mindestens anpassen
- IP-Adresse 10.100.12.10 an eure IP-Adresse des Webservers
- IP-Adresse 10.100.12.81 an eure IP-Adresse des Exchange-Server
- mail.znil.org ändern zu eurem externen DNS-Namen
- autodiscover.znil.org ändern zu eurem externen DNS-Namen.
Ausserdem müsst Ihr ein externes Zertifikat erstellen und angeben - das kann das vom Exchange-Server exportierte sein - oder aber ein anderes, selbst erstelltes.
Wie man das vom Exchange-Server verwendet steht im nächsten Abschnitt.
Vergesst nicht den Apache neu zu starten nach Änderungen in der Datei!
systemctl restart apache2.service
Basic Auth / Standardauthentifizierung für Exchange aktivieren
Diesen Abschnitt hier bräuchtet Ihr nur wenn Ihr in der Apache2 Konfiguration die Standard-Authentifizierung erzwingt. Dazu müsstet Ihr die 4 Zeilen die mit Kommentaren
# 10.12.2020: xxxxxxxxx # Tipp von Marco Maus, Fragen an marco.maus@mit-system.eu
gekennzeichnet sind wieder aktivieren. Stand heute ist es nicht mehr notwendig!
Damit auch das Programm Outlook funktioniert müsst Ihr für Outlook Anywhere die Standardauthentifizierung aktivieren:
Wenn Ihr bis hierhin gekommen seit läuft schon mal vieles scheinbar schön schnucklig.
Das Autodiscover funktioniert - sofern es die Subdomain "autodiscover.euredomain.suffix" gibt und ihr diese brav als Alias mit in der Apache-Konfig Datei habt.
Wenn Ihr wie ich Outlook Anywhere nutzt wird euch aber nach einer Weile auffallen das der Abwesenheitsassistent z.B. nicht funktioniert.
Und bei jeder neuen Email steht oben eine Hinweis:
Nach einigen Stunden(!) Tests - in denen ich mich langsam an das Problem herangetastet habe - fand ich endlich den Grund des Übels:
Die Verbindung dafür geht über
https://externe-adresse-exchange/ews
und an dieser Stelle scheitert die Authentifizierung - weil hier nur NTLM zugelassen ist.
NTLM geht aber durch den Apache nicht sauber durch.
Deshalb gibt es in der Konfig oben die Zeilen:
Header unset WWW-Authenticate Header add WWW-Authenticate "Basic realm=mail.znil.org"
Welche auf die Basic Auth umschalten - dadurch funktioniert dann nämlich Autodiscover.
Nun akptzeptiert aber der /ews Pfad Basic Auth bzw. Standardauthentifizierung nicht.
Das müssen wir auf dem Exchange-Server ändern das er dies auch dafür zulässt:
Öffnet auf dem Exchange-Server den
Internetinformationsdienste (IIS)-Manager
den Ihr in der Verwaltung findet.
Navigiert euch durch bis Ihr links EWS
markiert habt und klickt dann rechts auf Authentifizierung
:
Markiert in der neuen Auswahl den Eintrag Standardauthentifizierung
und dann oben rechts auf Aktivieren
:
Und schon klappt es auch mit dem Abwesenheitsassistenten etc. und es gibt keine Warnungen mehr beim Email-Schreiben.
Bleibt noch das Offline Address Buch, hier gibt es das gleiche Problem, also noch mal das gleiche:
Ergebnisse des "Microsoft Remote Connectivity Analyzer"
Findet Ihr unter: https://testconnectivity.microsoft.com/
Ergebnisse gemäß den vorstehenden Konfigurationsschritte bei mir: (Bilder anklicken zum vergrößern)
Exchange-Webdienste: Synchronisierung, Benachrichtigung, Verfügbarkeit und automatische Antworten:
Exchange ActiveSync-AutoErmittlung:
Exchange ActiveSync: