Letzte Aktualisierung am 22.09.2019, 12:09:08 Uhr
In den letzten Tagen stand die Veröffentlichung einiger Dienste eines Microsoft Exchange Server 2010 auf dem Plan. Es ging dabei primär um Outlook Anywhere in Verbindung mit Autodiscover. Die Herausforderung dabei ist noch das Exchange 2010 mit hilfe von RPC over https kommunziert. Damit kommt leider nicht jeder Reverse Proxy klar. Der Lösungsansatz ist eine virtuelle Maschine unter Ubuntu 14.04 LTS mit dem Webserver nginx. Dieser benötigt im Vergleich zu Apache kaum Ressourcen und ist somit auf schwachen Systemen leistungsstark. Des Weiteren entstehen keine Lizenz- und Wartungskosten.
Die Installation von Ubuntu und die Konfiguration von Outlook Anywhere erspare ich mir hier.
Es geht direkt los mit der Installation von Nginx inkl. Tools:
apt-get update apt-get upgrade apt-get install nginx nginx-extras
Die Installation von Nginx über das Repository des Entwicklers und die Tools aus dem Ubuntu-Archiv funktioniert nicht fehlerfrei! Die Tools sind erforderlich, damit Parameter wie more_set_input_headers genutzt werden können.
Zuerst muss eine neue Nginx-Konfiguration erstellt werden. Es existiert nach der Installation zwar eine Default Konfiguration, aber diese soll unberührt bleiben.
vi /etc/nginx/sites-available/autodiscover.domain.de
Nachfolgend meine Konfiguration als Vorlage:
server { listen 80 spdy; listen [::]:80; # redirect from htttp to https server_name autodiscover.domain.de; return 301 https://$server_name$request_uri; } server { listen 443 ssl; listen [::]:443 ssl spdy; server_name autodiscover.domain.de; #Enable SSL ssl on; ssl_certificate /etc/nginx/ssl/domain.de.pem; ssl_certificate_key /etc/nginx/ssl/domain.de.key; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:AES256+EDH; ssl_protocols TLSv1.2 TLSv1.1 TLSv1; ssl_session_cache shared:SSL:10m; ssl_prefer_server_ciphers on; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; proxy_http_version 1.1; proxy_pass_request_headers on; proxy_pass_header Date; proxy_pass_header Server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; more_set_input_headers 'Authorization: $http_authorization'; proxy_set_header Accept-Encoding ""; more_set_headers -s 401 'WWW-Authenticate: Basic realm="exchange.domain.de"'; # Required for Outlook 2013 location /autodiscover { proxy_pass https://10.20.18.7/Autodiscover; } # Required for Microsoft Remote Connectivity Analyzer location /Autodiscover { proxy_pass https://10.20.18.7/autodiscover; } }
Den Wert domain durch ist ein Platzhalter.
Der Wert Basic realm=“exchange.domain.de“ muss der Outlook Anywhere Adresse entsprechen.
Die IP-Adresse 10.20.18.7 ist durch eure Exchange Server Adresse zu ersetzen.
Mit :wq wird die Konfiguration abspeichert und geschlossen. Damit der Webserver die neue Konfiguration bei einem Reload einliest, muss noch ein symbolischer Link erstellt werden.
ln -s /etc/nginx/sites-available/autodiscover.domain.de /etc/nginx/sites-enable/autodiscover.domain.de
Die Datei /etc/ssl/certs/dhparam.pem könnt ihr mit folgenden Befehl generieren lassen:
cd /etc/ssl/certs openssl dhparam -out dhparam.pem 4096
Zum Abschluss die Konfiguration auf Fehler prüfen lassen und in den Webserver einlesen lassen:
service nginx configtest service nginx reload
Hi @all
steh vor folgendem Problem :
Nginx auf Exchange extern läuft ohne Problem dank der obigen Anleitung perfekt…
Mein Problem liegt im Zugriff innerhalb des lokalen Lan…
Da geht der Zugriff ja nicht über den Nginx sondern direkt auf den Exchange via internem DNS vom Windows Server…
Dort bekomm ich immer eine Zertifikatswarnung, von wegen ungültig..(Ist klar, ist ja auch das „selbstausgestellte“ vom Exchange…
Wie habt Ihr das gelöst ??
Danke für nen Tip..
Grüße
Sunny, ebenfalls Schwabenland
Hallo Sunny,
das Stichwort heißt „Split DNS“. Sprich du konfigurierst auf dem DNS des Windows Servers den selben Namensraum mit dem auch der Exchange bzw. Nginx von außerhalb des Intenets erreichbar ist. Damit das hinterher funktioniert, muss du selbstverständlich das SSL-Zertfikat, welches du auf dem Nginx konfiguriert hast, auch auf den Exchange Server installieren und den Diensten zuweisen. Nicht zu vergessen, die internen und externen Adressen von ECP, OWA, Autodiscover, etc… anzupassen. Die Konfiguration ist an einem halben Tag erledigt, es sind eben viele Kleinigkeiten zu beachten. Lesestoff gibt es dazu inzwischen genügend.
Gruß,
Dani
Hei, leider bekomme ich im Nginx Log immer nur folgende Meldung wenn Outlook versucht sich via Outlook Anywhere zu verbinden =( Getestet mit einem Outlook 2010, Outlook Anywhere ohne Nginx Proxy funktioniert jedoch ohne Probleme. Einer eine Idee was mein der Fehler ist? Auf dem Exchange Server sind folgende Einstellungen gesetzt: – IIS „Standardauthentifizierung –> Aktiviert –> HTTP 401 – Abfrage“ aktiviert (alle anderen deaktiviert) – NTLM für Outlook Anywhere Authentifizierung ist deaktiviert und nur BASIC erlaubt. jedoch sehe ich unter „outlook /rpcdiag“ dennoch das Outlook versucht NTLM für die Authentifizierung zu verwenden. Folgende Einträge erhalte ich im Nginx Log:… Weiterlesen »
In der error log vom Nginx steht ebenfalls das selbe wie bei @Krüger
[error] 1623#1623: *14 upstream timed out (110: Connection timed out) while reading upstream, client: x.x.x.x, server: mail.test.de, request: „RPC_OUT_DATA /rpc/rpcproxy.dll?srv-ex01.lab.local:6004 HTTP/1.1“, upstream: „https://mail.test.de:443/rpc/rpcproxy.dll?srv-ex01.lab.local:6004“, host: „mail.mail.test.de“
Guten Morgen Uli,
die selbe Frage an dich wie an @Krüger. Welche Exchange und Outlookversion setzt du ein? Beides auf dem neusten Patchlevel? Welche Version von nginx kommt zum Einsatz?
Steht der Server mit Nginx in einer DMZ oder in selben Subnetz wie der Exchange Server? Könnte evtl. die Firewall zwischen DMZ und lokalen LAN evtl. Pakete filtern?
Hallo DW,
Exchange 2010 SP3 UR18 und Outlook 2010 Pro x86 mit allen aktuellen Updates (Stand 01.11.17)
der NGINX steht in der DMZ ist jedoch über Firewall entsprechend freigeschaltet, OWA läuft bereits über NGINX Proxy
Firewall Freigabe:
DMZ_NGINX –> LAN_Exchange –> 80/tcp,443/tcp
Nachtrag:
nginx/1.10.9 läuft auf einem debian9 mit standart arp repos
Moin!
welche Authentifizierungsmethode hast du für Outlook Anywhere konfiguriert? In den meisten Fällen wird NTLM verwendet. Kannst du entweder per Powershell (Get-OutlookAnywhere -Server Servername |fl oder über die Management Konsole überprüfen und korrigieren.
Hei, hier der Auszug aus der PowerShell, scheint für mich eigentlich soweit richtig? [PS] C:Windowssystem32>Get-OutlookAnywhere -Server srv-ex01 |fl RunspaceId : xxxxx-xxxxx-xxxxx-xxxxx-xxxxx ServerName : SRV-EX01 SSLOffloading : False ExternalHostname : mail.example.org ClientAuthenticationMethod : Basic IISAuthenticationMethods : {Basic} XropUrl : MetabasePath : IIS://srv-ex01.lab.local/W3SVC/1/ROOT/Rpc Path : C:WindowsSystem32RpcProxy ExtendedProtectionTokenChecking : None ExtendedProtectionFlags : {} ExtendedProtectionSPNList : {} Server : SRV-EX01 AdminDisplayName : ExchangeVersion : 0.10 (14.0.100.0) Name : Rpc (Default Web Site) DistinguishedName : CN=Rpc (Default Web Site),CN=HTTP,CN=Protocols,CN=SRV-EX01,CN=Servers,CN=Exchange Adm inistrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=LAB,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=lab,DC=local Identity : SRV-EX01Rpc (Default Web Site) Guid : xxxxx-xxxxx-xxxxx-xxxxx-xxxxx ObjectCategory : lab.local/Configuration/Schema/ms-Exch-Rpc-Http-Virtual-Directory ObjectClass : {top, msExchVirtualDirectory, msExchRpcHttpVirtualDirectory} WhenChanged : 01.11.2017… Weiterlesen »
Funktioniert Outlook Anywhere wenn du das Port Forwarding direkt auf den Exchange-Server einrichtest? Somit kannst du erstmal die Exchange Konfiugration gegenprüfen.
Outlook Anywhere funktioniert bei direktem Port Forwarding auf Exchange ohne Probleme.
Ich habe irgendwas im Hinterkopf das RPC over HTTP(s) vom NGINX nicht geproxyt werden kann?
@DW kannst du da eventuell etwas zu sagen?
Selbst habe ich eine ähnliche konfiguration mit einem Exchange 2016 am laufen.
Da hier Exchange 2016 jedoch für OutlookAnywhare MAPI anstell von RPC verwendet, gab es hier auch keine unerwarteten Probleme.
Guten Abend Kevin,
grundsätzlich unterstützt nginx (egal welche Version) Exchange Server mit RPC nicht. In meiner Anleitung wird deshalb noch das Paket „nginx-extras“ nachinstalliert, welches das Problem behebt.
Gruß
Hallo,
ich habe alles wie in der Anleitung beschrieben umgesetzt, erhalte aber auf dem Reverse Proxy (nginx) folgende Fehlermeldung im Log:
[error] client intended to send too large body: 1073741824 bytes, client: xxxx.xxxx.xxxx.xxxx, server: test.example.org, request: „RPC_IN_DATA /rpc/rpcproxy.dll?MSX.example.local:6004 HTTP/1.1“, host: „test.example.org“
Ohne den Reverse Proxy funktioniert Outlook Anywhere. Eine Idee woran es liegen könnte?
Moin!
Welche Exchange und Outlookversion setzt du ein? Beides auf dem neusten Patchlevel? Welche Version von nginx kommt zum Einsatz?
Hat jemand schon Skype for Business mit NGINX als Reverse Proxy implementiert?
Das Problem welches ich habe, dass ich für das Autodiscover resp. Outlook anywhere Basic Authentisierung forcieren muss, jedoch der Skype for Business Client (welcher ebenfalls Bestandteile vom Exchange benötigt) nur NTLM Authentisierung kann und ohne diesen Teil die Integration des Exchange nicht möglich ist….!
Bin für alle Tips Dankbar.