Falls man ActiveSync und OWA anbieten will, sollte dies unbedingt über einen ReverseProxy gelöst werden. Diesen ReverseProxy für die Exchange-Dienste kann man auch mit dem Webserver NGINX auf Linux (in meinem fall Ubuntu Server) lösen. Da Microsoft den TMG eingestellt hat ist diese Kombination auch eine gute Alternative – wenn man auf OutlookAnywhere (RPC over HTTPS) verzichten kann. NGINX unterstützen kein RPCoverHTTPS – das neue MAPIoverHTTPS ist aber möglich – ActiveSync (DirectPush) und OWA funktionieren aber wunderbar.
Hier eine kleine Anleitung wie man dies implementiert.
Anleitung wurde am 30.03.2014 für Exchange 2013 und neue NGINX-Versionen angepasst
1) Vorraussetzungen
Einen Linux-Server – meine Wahl fällt hier auf Debian/Ubuntu. Dieser sollte in bestenfalls in der DMZ stehen.
Eine Zertifizierungsstelle (CA) zur Ausstellung des externen Zertifikats. Dies kann eine externe CA (Verisign, etc) oder eine interne CA (Unternehmens-CA) sein.
Eine Portweiterleitung von HTTPS (443) auf den ReverseProxy.
Ich beschreibe die Installation auf einem Ubuntu-Server und mit einer Zertifizierungsstelle unter Windows.
2) Installation von NGINX
Unter Debian/Ubuntu ist die Installation von NGINX kein Problem – die Paket werden bereitgestellt. Einfach mit
apt-get install nginx
installieren.
3) Zertifikat erstellen
Jetzt sollte das Zertifikat für die externe Domäne erzeugt werden. Als erstes erzeugen wir die Key-Datei:
openssl genrsa -out server.key 2048
Jetzt erstellen wir eine Zertifikatsanforderung:
openssl req -new -key server.key -out server.csr
Hier ein Beispiel:
Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-State]: Bayern
Locality Name (eg, city) []:Testhausen
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Testfirma
Organizational Unit Name (eg, section) []:EDV
Common Name (eg, YOUR name) []:mobile.test.extern
Email Address []:edv@test.extern
Please enter the following ‚extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Wichtig ist der Common Name -> das ist die externe Domain. Challenge Password und optional company name kann leer gelassen werden.
Danach hat man zwei Dateien – die server.key und die server.csr. Jetzt muss nur die Anforderung in die CA eingereicht werden. Ich mache dies immer über die Webschnittstelle der Zertifizierungsstelle. Über http(s)://cert-server/certsrv kann man die csr eingeben und ein Webserver-Zertifikat erstellen. Wichtig hierbei ist das man die csr-Datei nicht in Windows öffnet. Ich empfehle über einen SSH-Client wie Putty auf dem Linux-Server:
cat server.csr
auszuführen und die Ausgabe dann zu kopieren. So stellt man sicher das die Formatierung richtig ist. Ansonsten kann es zu Zertifikatsfehlern kommen. Die Ausgabe sieht dann so aus:
—–BEGIN CERTIFICATE REQUEST—–
MIIBzzCCATgCAQAwgY4xCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCYXllcm4xEzAR
BgNVBAcMClRlc3RoYXVzZW4xDTALBgNVBAoMBFRlc3QxDDAKBgNVBAsMA0VEVjEb
MBkGA1UEAwwSbW9iaWxlLnRlc3QuZXh0ZXJuMR8wHQYJKoZIhvcNAQkBFhB0ZXN0
QHRlc3QuZXh0ZXJuMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDn015lJMsY
N/KvYrV0wNjzZh+82wJY10xliBpg3p63JbUDA3bjL6bv5+Jcas2c0bgZwyNQl6oB
e/1y/fjDAaFXfpBLk/ZQyoJ/c2DFfOloZdoMEJN7veVzU+2m3I6306ADxx8y52MQ
+xD//0zPtasX2ZEdtghS4Arn+fsPQPS+UQIDAQABoAAwDQYJKoZIhvcNAQEFBQAD
gYEAyDDgPv1fTpweDk+N9JKEBgpdlONv2ZHJJ/upxXMW2aUMNXgLNR0IvNC6Q2/K
Bm1oGvtNyqiTDN0VqIfNvnzzSSlYZN85a3G0psHMdybc8TQ2N+RwIqz49+Rw3qrQ
W6c9kruyn17XFCgRC7rxgwIC/T1uWNOxyO28U00pNVJvgjc=
—–END CERTIFICATE REQUEST—–
Das so erstellt Webserver-Zertifikat (als BASE64/DER speichern) kopiert man dann auf den ReverseProxy – z.B. per SCP mit WinSCP. Am Besten ins HomeDirectory des Root-Users – denn dort liegen auch die beiden anderen Dateien (die key- und die csr-Datei).
Ich erstelle jetzt noch im NGINX-Ordner einen Ablageort für die Zertifikate.
mkdir /etc/nginx/certs
und kopieren die cer- und die key-Dateien dort hinein
cp server.cer /etc/nginx/certs/mobile.test.extern.cer
cp server.key /etc/nginx/certs/mobile.test.extern.key
4) NGINX konfigurieren
Wir wechseln in das sites-available-Verzeichnis des NGINX und legen dort eine Konfigurationsdatei an.
cd /etc/nginx/sites-available
vi exchange
dort schreiben wir die Konfiguration des ReverseProxy rein
#Abschnitt 1 server { listen 80; server_name mobile.test.extern; # Redirect any HTTP request to HTTPS return 301 https://$server_name$request_uri; error_log /var/log/nginx/exchange-error.log; access_log /var/log/nginx/exchange-access.log; } #Abschnitt 2 server { listen 443; server_name mobile.test.extern; # Redirect from "/" to "/owa" by default location / {return 301 https://mobile.test.extern/owa;} # Enable SSL ssl on; ssl_certificate /etc/nginx/certs/mobile.test.extern.cer; ssl_certificate_key /etc/nginx/certs/mobile.test.extern.key; ssl_session_timeout 5m; # Set global proxy settings proxy_read_timeout 360; 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; proxy_set_header Accept-Encoding ""; location /owa { proxy_pass https://exch2013.test.local/owa; } location /ews { proxy_pass https://exch2013.test.local/ews; } location /Microsoft-Server-ActiveSync { proxy_pass https://exch2013.test.local/Microsoft-Server-ActiveSync; } error_log /var/log/nginx/exchange-ssl-error.log; access_log /var/log/nginx/exchange-ssl-access.log; }
Der exch2013.test.local ist hier der lokale Exchange-Server.In dieser Konfiguration sind sowohl die Pfade für Exchange 2003 und Exchange 2007/2010/2013 abgedeckt. Falls man noch einen Exchange 2003 im Einsatz hat kann die Zeile
location /exchange { proxy_pass https://exch2010.test.local/exchange; }
zu den anderen Zeilen hinzugefügt werden werden.
Unter Umständen muss der lokale Exchange Server noch in die hosts-Datei eingetragen werden, damit die Namensauflösung funktioniert.
vi /etc/hosts
und dort die Zeile für die IP-Adresse des lokalen Exchange ergänzen:
10.10.10.10 exch2013.test.local
zum Testen kann man einen Ping auf dem Fully-Qualified Domain Name (FQDN) des Exchange absetzten:
ping exch2013.test.local
Jetzt muss nur noch die Konfigurationsdatei „scharf“ geschaltet werden.
Dazu löschen wir die Default-Konfiguration
rm /etc/nginx/sites-enabled/default
und linken unsere Exchange-Konfiguration in den sites-enabled-Ordner
ln -s /etc/nginx/sites-available/exchange /etc/nginx/sites-enabled/exchange
Jetzt muss nur noch der NGINX-Dienst neugestartet zu werden:
service nginx restart
fertig 🙂
5) Testen
Unter https://www.testexchangeconnectivity.com kann man die ActiveSync-Funktion testen.
Hi, ich bekomme immer die Meldung: 2014/03/25 10:35:24 [error] 11655#0: *1 upstream prematurely closed connection while reading respons
e header from upstream. Dementsprechend kann ich auch nciht auf owa oder ActiveSync zugreifen. Muss ich noch irgenwdwas zusätzliches beachten?
Hallo,
füge doch mal in der Konfig-File
proxy_connect_timeout 360;
nach proxy_read_timeout 360;
ein. Klappt es dann?
Ist zwar schon älter. Aber vielleicht hilft es jemanden.
Die Fehlermeldung kam bei mir, weil im Exchange in den Active Sync Settings „allow client certificates“ ausgewählt war. Mit „ignore client certificates“ ging active sync sofort.
Eine Lösung seitens Nginx habe ich nicht gefunden.
Hintergrund: https://emg.johnshopkins.edu/?p=815
Danke für die Info!
Hey, danke für deine Antwort! Also, meine Konfiguration sieht so aus: https://gist.github.com/wiesson/c2d8a30a68d40c0d8e1f
Es klappt leider noch nicht – warum auch immer. Ich weiß auch nicht wo ich den Fehler suchen kann – ob es nun an nginx liegt oder doch an der Einstellung vom exchange server. Das Access log verzeichnet, dass ich /owa aufrufe, jedoch resultiert es immer in dem vorherigen Fehler und ich weiß nicht so genau was ich da machen kann.
Vom CentOS Rechner kann ich per curl auf https://test.test.local/owa zugreifen und erhalte eine Weiterleitung als Rückmeldung (auf https://test.test.local:443/owa/auth/logon.apsx) Demnach glaube ich, dies funktioniert.
hey, … hmm auf Anhieb sehe ich da jetzt nix falsches… Was für ein Exchange ist da dahinter?
Ich würde es dann die Tage dann mal nachstellen und zu sehen ob ich was finde….
Hey, wir verwenden hier den Exchange 2013 mit Windows Server 2012. Der NGINX Server funktioniert – ich habe ohne Probleme u.a. Owncloud darüber laufen. Sonst weitere Infos, CentOS 65, neuste NGINX Version, Firewall (iptables) testweise ausgeschaltet, SSL Zertifikat für die Domain von startssl.com.
Aufbau: Internet -> Router -> Unix-Server -> Windows-Server
Hallo noch mal. Mittlerweile funktioniert es teilweise – SSL muss im II8 für OWA deaktiviert sein, sonst geht es nicht. Aber da SSL ja durch NGINX gegeben ist, msste es passen. Jetzt fehlen nur noch passende Rewrite Methoden, hier komme ich leider nicht weiter. Der IIS will immer wieder auf http umleiten. Gibt es da einen Trick? (das einfach alle Links (mit https) übernommen werden?)
Hi,
habe den Beitrag aktualisiert -> bei meinem (frisch installierten) Exchange 2013 funktioniert diese Konfiguration ohne Probleme.
Anpassungen am Exchange 2013 bzw. am IIS waren nicht nötig….
Viel Erfolg!
Hallo,
das mit dem Timeout ist designbedingt.
ActiveSync arbeitet mit einer bewusst zu lange offen gehaltenen TCP-Verbindung um die Push-Funktionalität bereit zu stellen. Da die nur gegen den Proxy-Server läuft wird die irgendwann terminiert und dann vom Handy neu aufgebaut. Das sieht man sehr gut daran das jedes Drehen am Timeout nur diese Meldung verzögert.
Zum Thema HTTPS auf HTTP: In die Config muss folgende Zeile damit bei der Antwort http: wieder auf https; umgeschrieben wird:
location /Microsoft-Server-ActiveSync {
proxy_set_header X-Forwarded-Proto https;
…….
}
Hallo,
Danke für den Tipp – werde es die Tage mal mit einem Exchange 2013 testen.
schönes Wochenende!
Frage: Braucht jemand bei deinem Setup EWS etwa mit Apple Mail?
Mit Exchange 2010 und einem Apache mit mod_proxy habe ich das nie zuverlässig hinbekommen. – Abstürze von Mail.app waren das eine, schlimmer aber das nach einem Absurz User manchmal auch eine Mailbox eines anderen Users zu gesucht bekamen (ehe Mail wieder abschmierte).
Nach diesen Erfahrungen habe ich /EWS auf dem Proxy ausgetragen, das war mir für die Produktion zu heiss.
Hallo,
Hab es nur Apple Mail auch am laufen -> funktioniert. Nur unter Mavericks ist es ein bischen zickig ( Updatet nicht immer sofort ) – hab das gleiche Problem aber auch mit einem internen Exchange (gibt auch Einträge um Support Forum bei Apple mit Leuten mit dem gleichen Problem)
Ich habe das mit Excange 2010 versucht, leider bekomme ich eine Fehler
HTTP Error 400. The request is badly formed.
Was könnte da falsch sein
Hi,
beim OWA? Von intern funktioniert der Aufruf?
I have the same problem. HTTP Error 400. The request is badly formed. A request directly to the Exchange 2010 server works fine, I get a login screen. Via nginx I get the 400 error. Any clue?
I tried adding
large_client_header_buffers 4 16k;
Even tried 32k, but no success.
Hi, try this: replace the FQDN with the IP of the Exchange. This should work…
Hi, thanks for your reply, but I already tried that. Unfortunately it doesn’t make a difference
Just to give you an update: I’ve been trying and tweaking for 2 weeks to make OWA work with Nginx. No success so far. I switched to Apache for reverse proxiing and it works perfectly with OWA. It’s not as fast as Nginx is, but at least it works. And it’s not thaaaaaaat slow 🙂
@Hartmut
Ich hatte denselben Fehler, hab das jetzt mit Andreas Hilfe umgestellt und es geht.
Ersetz einfach mal die FQDN in den Location Mappings durch die IP des Exchange.
Danke für die Anleitung, aber was für ein SSL zertifikat hast du dann für die SSL Verbindung zwischen proxy und Exchange Server hergenommen? Einfach ein selbstsigniertes mit Common Name auf exch2013.test.local?
Hi, ich hab in den meisten Umgebungen eine eigene Unternehmens-CA – dort stelle ich dann für den Exchange ein eigenes Zertifikat aus – hier zum Beispiel auf exch2013.test.local (dann nerven auch die internen Outlook-Clients nicht mit Zertifkatswarnungen 😉 ). Rein technisch kannst aber auch das selbstsignierte nehmen. Dem ReverseProxy ist das schlicht egal…
Funktioniert wunderbar! 🙂
Ist nginx immer noch nicht kompatibel für den Einsatz als Reverseproxy für ActiveSync (z.B. mit iPhone)?
Gruß Marco
Verstehe ich richtige das ActiveSync != OutlookAnywhere? Nginx also bestens mit externen iPhone läuft?
Genau – ActiveSync != OutlookAnywhere!
ActiveSync kannst du wunderbar damit betreiben – auch OWA und ECP, etc. Läuft wunderbar 🙂
OutlookAnywhere macht aber RPCoverHTTPS und das geht nicht – geht nur mit irgendeiner Version eines uralten Apaches mit einem Modul das nicht mehr gepflegt wird und dann auch nicht richtig..
Mit Exchange 2013 und Outook 2013 kann man allerdings das Outlook über die ActiveSync-Schnittstelle an den Exchange anbinden – und das geht mit dem Nginx auch wunderbar 🙂
Habe hier einen Interessanten Artikel über Pound gefunden:
http://blog.loetzimmer.de/2012/07/outlook-rpc-over-http-reverse-proxy.html
könnte auch auf ner Firewall Distribution laufen (z.B. ipfire), klingt für mich interessant, man müsste es nur noch testen 🙂
Klingt interessant – danke für den Tipp 🙂
Jau! Hab eben in 30 Minuten nen Server nach deiner Anleitung eingerichtet. Und läuft. Super!
Freut mich 🙂
Hi,
ich habe deine Anleitung genutz um unseren Exchange abzusichern. Erst mal TOP !!!
OWA im Explorer klappt wunderbar. Nur die IPAD/Iphone bekomme ich nicht angebunden. Es popt immer wieder die Eingabe des Passwortes auf.
Eine Idee? ?
Hi,
was sagt den der https://www.testexchangeconnectivity.com/ Test?
Hallo, das kann an der Nginx Version liegen.
Die iOS Geräte rufen ActiveSync nicht mit domain.de//Microsoft-Server-ActiveSync auf sondern nutzen die HTTP-Options Methode. Das können alte Nginx Versionen nicht.
Hi
Test läuft bis auf den letzten sauber durch.
Folgende Meldung für den letzten Step
Es wird versucht, eine ActiveSync-Sitzung mit dem Server zu starten.
Beim Testen der Exchange ActiveSync-Sitzung sind Fehler aufgetreten.
Weitere Details
Verstrichene Zeit: 23542 ms.
Testschritte
Es wird versucht, einen OPTIONS-Befehl an den Server zu senden.
Fehler beim Testen des OPTIONS-Befehls. Weitere Informationen finden Sie in den zusätzlichen Angaben.
Weitere Details
Es ist eine Webausnahme aufgrund des Empfangs der Antwort „HTTP 400 – BadRequest“ von IIS7 aufgetreten.
HTTP-Antwortkopfzeilen:
request-id: 9a7830ea-19e5-4479-943a-8dfb80029486
X-TargetBEServer: exs13.home.local
X-DiagInfo: EXS13
X-FEServer: EXS13
Content-Length: 4949
Cache-Control: private
Content-Type: text/html; charset=utf-8
Date: Wed, 17 Dec 2014 17:37:14 GMT
Set-Cookie: X-BackEndCookie=S-1-5-21-3903834631-4017066637-1857585635-1135=u56Lnp2ejJqBmpnOzJvNnM/Sm8nOztLLy8/L0p2dycjSmsrPysbJmpnHmpvGgYHOzdDOyNDNz87L38rFy8jFzsvfr7I=; expires=Wed, 17-Dec-2014 17:47:14 GMT; path=/Microsoft-Server-ActiveSync; secure; HttpOnly
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Verstrichene Zeit: 23542 ms.
PS: Danke dür die Hilfe!!!
Hi, hast du das schon mal gecheckt: http://blog.friedlandreas.net/2011/07/nach-exchange-migration-funktioniert-directpush-activesync-nicht-mehr/ ?
Hi,
ja das habe ich bereits nachgesehen. Haken ist gesetzt.
Im Moment schaue ich mir die logs auf dem Exchange an. Vielleicht finde ich da was….
Hi, hast du mal deine IIS-Einstellungen gecheckt: http://technet.microsoft.com/de-DE/library/gg247612(v=exchg.150).aspx
Kannst du lokal auf dem Server die AktiveSync-Seite (https://localhost/Microsoft-Server-ActiveSync) aufrufen und dich anmelden?
Hi,
habe gerade die Änderungen am IIS geändert. Hatte da noch zusätzliche aktiv. Anmelden geht, bekommen aber eine leere Seite ? ?
Hi, es müsste sowas wie „HTTP-Version wird nicht unterstützt“ oder so kommen – das wäre aber dann richtig. Welche Exchange-Version eigentlich?
So nun kommt auch dein erwähnter Fehler…und das auch Extern über Internet !!!
HTTP Error 505.0 – Http Version Not Supported
The page cannot be displayed because the HTTP version is not supported.
Detailed Error Information
Module ManagedPipelineHandler
Notification ExecuteRequestHandler
Handler AirSyncHandler
Error Code 0x00000000
Requested URL https://exs13.home.local:444/Microsoft-Server-ActiveSync/Proxy/default.eas
Physical Path C:Program FilesMicrosoftExchange ServerV15ClientAccesssyncProxydefault.eas
Logon Method Basic
Logon User S-1-5-21-3903834631-4017066637-1857585635-1137
Most likely causes:
The server does not support the HTTP version requested by the client.
Things you can try:
Verify that the client is requesting an invalid or unsupported HTTP version.
Links and More Information This error occurs when a client is requesting an invalid HTTP version. This can occur if the client is requesting an older, unsupported HTTP version. You can create a network trace to troubleshoot this issue.
View more information »
Hi, Wieso auch immer gab es Problme beim Abgleich mit der AD. Ich habe den Exchange nun deinstalliert und nun auf einen neuen Server installiert. Nun klappt alles.
Danke für deinen Einsatz!!!!
Hi, super 🙂 Bitte schön – viel Spaß damit 🙂
Hallo!
ich bin kein Linux Freak und habe dazu eine kleine Verständnisfrage:
Laut Anleitung erzeugt der Befehl „openssl req -new -key server.key -out server.csr“ die beiden Dateien server.key und server.csr.
Später werden die beiden Dateien kopier mit
cp mobile.test.extern.cer /etc/nginx/certs/mobile.test.extern.cer
cp server.key /etc/nginx/certs/mobile.test.extern.key
Müsste der erste Befehl dann nicht so heißen
cp server.cer /etc/nginx/certs/mobile.test.extern.cer ?!
Weil die Datei die erzeugt worden ist ja Server.cer heißt und nicht mobile.test.extern.cer
Danke für die Anleitung
Hi, es kommt natürlich drauf an mit welchem Dateinamen du das Zertifikat an deiner CA erstellst – aber du hast natürlich Recht – Habe ich für eine bessere Anschaulichkeit geändert . Danke für den Hinweis!
Danke fürs tut, klappt alles soweit ganz gut.
Bis auf den Part mit dem Login und logout.
Die Loginsite (webform) wird nicht angezeigt sondern nur eine Eingabe aufforderung des browsers für benutzername und password.
Login klappt damit aber auch, natürlich für den produktiv einsatz eher unwünschenswert.
Das wirkliche problem ist nur das logout, der wird nur durchgeführt wenn ich die richtige url von hand übergebe (kann man sicher in der nginx config was drehen)
allerdings sagt er mir ich wäre erfolgreich ausgelogt, aber sobald ich die site wieder aufrufe bin ich eingeloggt. Das ist natürlich untragbar, daher meine Frage ob es hier für nen walkaround gibt.
Das system hier ist ein exchange 2007 im moment wird die webgui von nem iss zur verfügung gestellt und der soll halt durch den reverse proxy endlich abgelöst werden.
Hi, klingt komisch… Denke eher das hier das Problem bei den IIS-Einstellungen liegt. Der nginx wie hier verwendet übernimmt keine Authentifizierungs-Funktion – das macht alles der IIS. Du kannst hier mal schauen – da sind die Default-Einstellungen des IIS für deinem Exchange aufgelistet…
Pingback:Apache2 als ReverseProxy für EAS (Exchange ActiveSync),OWA (OutlookWebApp) und auch OutlookAnywhere (RPCoverHTTP) | blog.friedlandreas.net
Pingback:Nginx Reverse Proxy: IP-Ausnahmen bei Authentisierung mit Clientzertifikaten | blog.friedlandreas.net
Hi,
super Artikel, ich habe alles eingerichet, der Proxy an sich funktioniert auch. Ich komme auf die OWA Oberfläche. Sobald ich aber versuche auf das ECP zu kommen werde ich einfach wieder auf die OWA Oberfläche umgeleitet, auch wenn ich mich im OWA Anmelde als Admin und dann versuche die Optionen zu öffnen. User können ebenfalls nicht auf die ECP bzw. Optionen zugreifen.
Jemand eine Idee? Wäre super!!
Gruß,
Olli
Hi, einen location-Eintrag für ECP hast du angelegt? Also:
location /ecp { proxy_pass https://exch2013.test.local/ecp; }
Die Freigabe für ECP halte ich aber an sich für sehr gefährlich – außer die wird mit Client-Zertifikate oder ähnliches abgesichert (kann auch der NGINX machen)…
Hi,
danke für die Rückmeldung! Jetzt läuft auch alles soweit. Ich habe jetzt jedoch noch ein Problem. Outlook Anywhere funktioniert ja nicht mit der Config. Also habe ich meinen Exchange auf MAPI umgestellt. Und diesen Teil in der Config hinzugefügt:
https://blog.kempkens.io/posts/exchange-reverse-proxy-using-nginx/
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=“your.mail.host“‚;
#proxy_pass https://your.mail.host;
Außer den Proxy Pass sonst startet der nginx nicht. Soweit so gut.
Ich habe dann noch eine location /mapi { proxy_pass https://exch2013.test.local/ecp; } erzeugt. Damit kann ich mich nun auch in Outlook Verbindunen. Jedoch habe ich in Outlook z.B. nicht die Möglichkeit Abwesenheits Notizen zu erstellen oder auch wenn ich eine neue E-Mail schreibe erhalte ich die Info keine E-Mail Infos verfügbar!
Wie richte ich NGINX am besten ein wenn ich Outlook Clients darüber laufen lassen möchte? Kann mir da jemand eine Beispiel Config geben die ich so verwenden kann? Die Outlook Clients müssen ab Outlook 2016 alles per Autodiscover sich verbinden. Das klappt auch der Autodiscover wird erkannt und User Daten werden abgefragt nachdem ich das MAPI eingerichetet habe.
Muss ich noch etwas im Exchange einstellen?
Hier mal meine vollständige Config, ich hoffe jemand kann mir da schnell Helfen es ärgert sehr das der Exchange nicht läuft das wäre einfach super!
nginx.conf:
server {
listen 80;
server_name externedomain.de autodiscover.externedomain.de;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
server_name externedomain.de autodiscover.externedomain.de;
# Redirect from „/“ to „/owa“ by default
location / {return 301 https://externedomain.de/owa;}
ssl on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_protocols TLSv1.1 TLSv1.2;
##ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP;
###ssl_ciphers ‚EECDH+AESGCM EDH+AESGCM !aNULL !eNULL !EXPORT !LOW !MEDIUM !DES !3DES !RC4 !SEED !CAMELLIA !MD5 !PSK !DSS‘;
ssl_ciphers ‚ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA‘;
#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+EXP;
ssl_prefer_server_ciphers on;
ssl_certificate /etc/ssl/chain.pem;
ssl_certificate_key /etc/ssl/chain.pem;
# Set global proxy settings
proxy_read_timeout 360;
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=“192.168.10.20″‚;
#proxy_pass
more_set_input_headers ‚Authorization: $http_authorization‘;
location /owa { proxy_pass https://192.168.10.20/owa; }
location /ecp { proxy_pass https://192.168.10.20/ecp; }
location /Microsoft-Server-ActiveSync { proxy_pass https://192.168.10.20/Microsoft-Server-ActiveSync; }
location ~* ^/Autodiscover { proxy_pass https://192.168.10.20; }
location ~* ^/rpc { proxy_pass https://192.168.10.20; }
location ~* ^/mapi { proxy_pass https://192.168.10.20; }
error_log /var/log/nginx/exchange-ssl-error.log;
access_log /var/log/nginx/exchange-ssl-access.log;
}
In Exchange habe ich folgende Einstellungen:
http://prnt.sc/b2u81c
Es wäre echt Klasse wenn mir jemand einen Tipp geben könnte wie ich diese letzen Fehler auch noch beseitige!
Danke und Gruß,
Olli
Hi,
du musst ja auch den Exchange für MapiOverHTTP konfigurieren – hier eine kurze Anleitung: https://www.frankysweb.de/exchange-2013-mapioverhttp/
Hi,
Danke für die schnelle Antwort. Genau diese Anleitung habe ich auch genutzt. MAPI ist eingeschaltet. Ich kann mich ja auch anmelden usw. Nur leider kann ich z.b. Keine Abwesenheits Notiz in Outlook einstellen erhalte ich den Fehler Server nicht verfügbar.
Und wenn ich eine neue Mail schreibe steht oberhalb der E-Mail der Fehler das keine E-Mail Informationen angezeigt werden können.
Ist meine Config denn richtig? Oder hast du oder jemand anderes nen Tipp für mich?
Ich möchte es nur bewerkstelligen das sich die Outlook kleins Problemlos verbinden. Wenn ich die Config von oben hier das dem Blog nehem klappt MAPI nicht oder hat das jemand am laufen?
Es wäre super wenn mir jemand sagen könnte wo mein Fehler liegt. Noch bessere wäre es wenn jemand weiß wie man den Proxy ideal für MAPI einrichtet.
Active Sync ist mit der Config gar kein Problem, Handys können sich so verbinden.
Meine aktuelle Config habe ich gepostet inkl. Eines Screenshots von der Exchange Einstellung!
Danke für jeden Tipp und Hilfe,
Oliver
Hier hab ich mal eine funktionierende Konfiguration beschrieben: https://blog.friedlandreas.net/2016/05/nginx-reverseproxy-fuer-mapi-over-http-eas-und-owa/
Pingback:NGINX: ReverseProxy für MAPI over HTTP, EAS und OWA | blog.friedlandreas.net