ReverseProxy für EAS (Exchange ActiveSync) und OWA (OutlookWebApp) mit NGINX

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.

55 Kommentare

  1. 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?

    1. 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

  2. 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.

  3. 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

  4. 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?)

    1. 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!

  5. 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;
    …….
    }

  6. 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.

    1. 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)

  7. 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

    1. 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.

          1. 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 🙂

  8. @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.

  9. 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?

    1. 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…

      1. 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 🙂

  10. 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? ?

    1. 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.

  11. 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!!!

  12. 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….

  13. 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 »

  14. 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!!!!

  15. 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

    1. 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!

  16. 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.

    1. 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…

  17. 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

  18. 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

  19. 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

Kommentar verfassen