- Betrifft: Microsoft Exchange Server 2007
- System: Microsoft Windows Server 2003 R2 x64 Edition, Microsoft Windows Server 2008 x64 Edition, Microsoft Windows Server 2008 R2
- Problem: Der Versand von Emails mit Anhang über Exchange Server Konto bei mobilen Geräten (via ActiveSync) funktioniert nicht. Auf den mobilen Geräten erhält man nur eine allgemeine Fehlermeldung. Jedoch in den Logdateien beim Internet Information Service (IIS) sieht man den HTTP Fehler 413: Anforderungseinheit zu groß. Übertragung erfolgt via SSL verschlüsselt.
Hintergrund
Mobile Geräte, vor allem Smartphones können mit dem Microsoft Exchange Server über ActiveSync synchronisieren. Hierbei werden neben Kalender, Kontakte, Aufgaben auch Emails synchronisiert. Natürlich inklusive Anhang. Dementsprechend sollte natürlich auch der Versand von Anhang möglich sein.
Leider gibt es hierbei mit Android und Windows Phone manchmal so einige Probleme. Der Versand von Emails mit Anhang ist bei diesen Geräten nicht möglich. Dagegen wunderbar klappt das Ganze mit Windows Mobile bzw. bei allen mobilen Geräten wenn man keinen Anhang versendet. Die Geräte selbst liefern leider keine weiteren Hinweise. Man erhält wenn überhaupt nur einen "allgemeinen Fehler".
Dagegen kann man auf dem zugehörenden Webserver, nämlich den IIS manchmal eine weitaus interessantere Fehlermeldung finden:
Deutsch | Englisch |
HTTP-Fehler 413: Anforderungseinheit zu groß | HTTP Error 413: Request entity too large |
Damit wird angedeutet, dass die empfangene Anfrage durch das mobile Gerät zu groß ist – also zu viele Bytes benötigt. Genauer wurde eine Anfrage größer als 128 kB gesendet. Bei einem verschlüsseltem Zugriff muss dementsprechend auch die Anfrage über SSL erfolgen. Damit werden allein schon wegen der Verschlüsselung größere Zeichen verwendet. Die Grenze wird mit der ab IIS 6.0 eingefügten Variabel UploadReadAheadSize gesteuert.
Für die Behebung gibt es zwei Ansatzpunkte. Der erste ist die Erhöhung der zuvor genannten Variabel (sollte aber nicht zu großzügig gewählt werden) oder alternativ eine Änderung der SSL Einstellung am IIS, damit Clientzertifikate ignoriert werden.
Behebung, deaktivieren der Clientzertifikate
Es macht natürlich Sinn, die Einstellung nur für die mobilen Geräte zu ändern. Also den entsprechenden Pfad für "Microsoft-Server-ActiveSync" aufrufen.
Bei IIS 6.0 muss man mittels Rechtklick in die "Eigenschaften", dann auf das Register "Verzeichnissicherheit" und bei "Sichere Kommunikation" auf "Bearbeiten" und im neu erscheinenden Fenster bei "Clientzertifikate" die Option "Clientzertifikate ignorieren" auswählen. Danach alle Fenster mit "Ok" schließen.
Bei IIS 7.x ist es etwas anders. Sobald man hier ebenfalls den korrekten Ordner gefunden hat einfach diesen markieren und im Hauptfenster die Option "SSL-Einstellungen" aufrufen.
Danach einfach wieder bei "Clientzertifikate" die Option "Ignorieren" wählen und auf "Übernehmen" klicken.
Damit sollten sofort ohne Neustart alle mobilen Geräte Emails mit Anhang versenden können.
Behebung, Erhöhung von UploadReadAheadSize
Bei IIS 6.0 benötigt man das Skript "adsutil.vbs". Der Wert wird in Byte angegeben. Manchmal steht im Internet mit Kilobytes, aber ist falsch. Für die Änderung auf 200 kB und der Website ID 1 benötigt man folgenden Befehl im Konsolenfenster. Natürlich muss zuvor der korrekte Pfad zum Skript aufgerufen werden:
cscript adsutil.vbs set w3svc/1/uploadreadaheadsize 204800 |
Ab IIS 7.x gibt es nicht mehr das Skript "adsutil.vbs". Dafür aber die Datei "applicationHost.config". Für die Änderung empfehlt sich die Anwendung "appcmd.exe", die man im Pfad "\Windows\system32\inetsrv" findet. Also erneut das Konsolenfenster öffnen und in den korrekten Pfad wechseln.
appcmd.exe set config -section:system.webserver/serverruntime/uploadreadaheadsize:"204800" /commit:apphost |
Guten tag
Ich habe eine Frage: Kann dieser Befehl (appcmd.exe set config -section:system.webserver/serverruntime/uploadreadaheadsize:”204800″ /commit:apphost) auch nur spezifisch für EAS angewendet werden? Das Problem ist sehr drängend, ich sollte heute noch eine Lösung haben.
Vielen Dank und viele Grüsse
Kaspar Brönnimann
Hi,
Also UploadReadAheadSize ist eine Servereinstellung. Mir ist nicht bekannt, dass man dies nur für eine Anwendung bzw. Verzeichnis verstellen könnte. Es gibt zwar für andere Variablen diese Unterteilung, aber hier in diesem Fall gilt es für die ISAPI Erweiterung.
So nebenbei: Durch die Erhöhung des Wertes kommt es nicht wirklich zu einer Erhöhung eines Sicherheitsrisiko – zumindest lt. meinen jüngsten Recherchen. Die Last für den Server sollte ebenso gleich bleiben.