Exchange 2019: Größenbeschränkung für Mails konfigurieren

Auf einem Exchange Server lassen sich an verschiedenen Stellen eine Größenbeschränkung für E-Mails konfigurieren. Dabei lassen sich die Limits sehr granular, beispielsweise auf Postfach oder Protokoll Ebene konfigurieren. Welche Möglichkeiten es gibt, listet dieser Artikel auf.

Dieser Artikel gilt auch für Exchange 2016.

TransportConfig: Globale Größenbeschränkung

In der TransportConfig werden die globalen Limits für E-Mails festgelegt. Die Limits in der TransportConfig gelten für alle Exchange Server in der Organisation. In der Standardeinstellung dürfen gesendete und empfangene Mails nicht größer als 10MB sein. Die Einstellungen lassen sich mit dem folgenden Befehl prüfen:

Get-TransportConfig | fl MaxReceiveSize,MaxSendSize
TransportConfig: Globale Größenbeschränkung

Um beispielsweise 20MB große E-Mails zu erlauben, kann der folgende Befehl genutzt werden:

Set-TransportConfig -MaxReceiveSize 20MB -MaxSendSize 20MB

Die Limits der Transportconfig lassen sich bei Bedarf auf Mailbox Ebene überschreiben.

Mailbox: Granulare Limits für E-Mails

Die Limits der TransportConfig lassen sich auf Mailbox Ebene überschreiben, auf diesem Weg lässt sich granular auf jeder Mailbox die maximale E-Mail Größe festlegen. In der Standardeinstellung haben alle Benutzerpostfächer den Wert „Unlimited“, dies bedeutet aber nicht, dass es keine Größenbeschräkung gibt, sondern das in diesem Fall das globale Limit der TransportConfig gilt. Die Mailbox Limits lassen sich mit folgendem Befehl prüfen:

get-mailbox | ft name,MaxSendSize,MaxReceiveSize
Mailbox: Granulare Limits für E-Mails

Um das Limit auf einem Postfach zu verändern kann der folgende Befehl verwendet werden:

set-mailbox administrator -MaxSendSize 30MB -MaxReceiveSize 30MB

Das Limit der Mailbox überschreibt das Limit der TransportConfig. Sind in der TransportConfig 10MB festgelegt, auf Mailbox Ebene aber 20MB erlaubt, darf der Benutzer 20MB große Mails empfangen oder senden. Die Größenbeschränkung gilt dann nur für die konfigurierten Postfächer, ein Benutzer mit TransportConfig Limit (MaxSendSize) von 10MB darf also keine 15MB Mail an einen Benutzer mit Mailbox Limit (MaxReceiveSize) von 20MB senden.

Sende- und Empfangsconnectoren

Auch auf Sende- und Empfangsconnectoren lässt sich die Größenbeschränkung für E-Mails festlegen. In der Standardeinstellung sind 36MB für die Empfangsconnectoren und 35MB für die Sendeconnectoren konfiguriert. Mit dem folgenden Befehl lassen sich die Werte anzeigen:

Get-ReceiveConnector | ft name,maxmessagesize
Get-sendConnector | ft name,maxmessagesize
Sende- und Empfangsconnectoren

Mit den folgenden Befehlen lassen sich die Werte anpassen:

Get-ReceiveConnector | Set-ReceiveConnector -MaxMessageSize 50MB
Get-sendConnector | Set-SendConnector -MaxMessageSize 50MB

ActiveSync: Größenbeschränkung für Smartphones

Für Verbindungen via ActiveSync Protokoll sind in der Standardeinstellung 10MB große Mails erlaubt. Die tatsächliche maximale Größe ist jedoch geringer, da die Base64 Kodierung die Mails ca. 33% größer werden lässt. Bei einem Limit von 10MB lassen sich also ca. 7MB große Mails via ActiveSync übertragen. Leider lassen sich die Limits nicht direkt über CMDLet’s der Exchange Management Shell festlegen, sondern müssen in die web.config des vDirs geschrieben werden. Die folgenden Befehle können für die ActiveSync Limits verwendet werden:

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/Microsoft-Server-ActiveSync/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:30000000
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/Microsoft-Server-ActiveSync/" -section:system.web/httpRuntime /maxRequestLength:10240
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/Microsoft-Server-ActiveSync/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:30000000
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/Microsoft-Server-ActiveSync/" -section:system.web/httpRuntime /maxRequestLength:10240
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/Microsoft-Server-ActiveSync/" -section:appSettings /[key='MaxDocumentDataSize'].value:10240000

Bei den Befehlen muss man etwas aufpassen, manche Werte werden in Bytes, andere in KiloBytes angegeben. In dem Beispiel von oben sind die kleinen Zahlen in KiloBytes, die großen Zahlen in Bytes. Zur Vereinfachung hier einmal die Rechenschritte für Bytes und KiloBytes inkl. 33% Overhead durch die Base64 Kodierung (Als Beispiel 50MB als Maximalgröße):

  • KiloByte: 50 x 1,33 x 1024 = 68096 KB
  • Byte: 50 x 1,33 x 1024 x 1024 = 69730304 Byte

Wichtiger Hinweis: CUs ersetzen die web.config der vDirs. Nach einem Update des Exchange Servers, müssen die ActiveSync Limits neu konfiguriert werden, da diese nach der Installation eines CUs nicht übernommen werden.

Für das Aufführen der Befehle wird die normale CMD anstatt der Exchange Management Shell verwendet:

ActiveSync: Größenbeschränkung für Smartphones

Exchange Web Services (EWS)

Für Verbindungen via Exchange Web Services (EWS) sind in der Standardeinstellung 64MB große Mails erlaubt. Die Limits werden, wie bei ActiveSync auch, in der web.config gespeichert. Alle Limits sind hier in Bytes angegeben, das Base64 Encoding muss hier nicht beachtet werden. Mit den folgenden Befehlen lassen sich die Limits für EWS ändern:

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/ews/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSAnonymousHttpsBinding'].httpsTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSAnonymousHttpBinding'].httpTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSBasicHttpsBinding'].httpsTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSBasicHttpBinding'].httpTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSNegotiateHttpsBinding'].httpsTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSNegotiateHttpBinding'].httpTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityHttpsBinding'].httpsTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityHttpBinding'].httpTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecuritySymmetricKeyHttpsBinding'].httpsTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecuritySymmetricKeyHttpBinding'].httpTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityX509CertHttpsBinding'].httpsTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityX509CertHttpBinding'].httpTransport.maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /webHttpBinding.[name='EWSStreamingNegotiateHttpsBinding'].maxReceivedMessageSize:104857600
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /webHttpBinding.[name='EWSStreamingNegotiateHttpBinding'].maxReceivedMessageSize:104857600

Hier noch der Rechenweg für die EWS Limits (100MB als Beispiel):

  • Byte: 100 x 1024 x 1024 = 104857600 Byte

Für das Ausführen der Befehle wird die CMD verwendet, nicht die Exchange Management Shell:

Exchange Web Services (EWS)

OWA

Auch für OWA lassen sich die Limits festlegen, in der Standardeinstellung erlaubt OWA 35MB große E-Mails. Wie auch bei EWS und ActiveSync werden die Limits in der web.config gespeichert, gehen also bei der Installation eines CUs verloren und müssen neu gesetzt werden. Die folgenden Befehle können für die Anpassung des Limits benutzt werden, auch hier gibt es wieder Werte in Byte und KiloByte:

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/owa/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:52428800
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/owa/" -section:system.web/httpRuntime /maxRequestLength:51200
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:52428800
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.web/httpRuntime /maxRequestLength:51200
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpsBinding'].maxReceivedMessageSize:52428800
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpBinding'].maxReceivedMessageSize:52428800
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpsBinding'].readerQuotas.maxStringContentLength:52428800
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpBinding'].readerQuotas.maxStringContentLength:52428800

Hier noch der Rechenweg für die OWA Limits (50MB als Beispiel):

  • Byte: 50 x 1024 x 1024 = 52428800 Byte
  • KiloByte: 50 x 1024 = 51200 KiloByte

Für das Ausführen der Befehle wird auch hier die normale CMD verwendet:

OWA

7 thoughts on “Exchange 2019: Größenbeschränkung für Mails konfigurieren”

  1. Hallo Franky,
    vielen Dank für die Pflege dieser Info-Sammlung.
    Wir hatten seit gestern ein Problem mit einem Exchange 2019, von dem Smartphones keine Attachement > 10 MB mehr laden wollten, obwohl in den oben beschriebenen Sektionen Werte für effektiv ca. 75 MB Attachement eingetragen waren. Ich habe das zigmal kontrolliert, sogar den Server während des Tages neu gestartet, aber kein Erfolg. Erst nachdem auf den Hauptknoten dies hier eingetragen wurde ging es nach „iisreset /restart“ endlich:
    :: Default Web Site + Exchange Back End
    %windir%\system32\inetsrv\appcmd.exe set config „Default Web Site/“ -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:104857600
    %windir%\system32\inetsrv\appcmd.exe set config „Exchange Back End/“ -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:104857600

    Gruß
    Guido

    Reply
  2. Frage dazu:

    Ist der Hinweis
    „CUs ersetzen die web.config der vDirs.“ seit dem CU13 noch korrekt?

    Das hat ja das Configuration Backup und Restore eingeführt.

    Ich fände das gut, wenn das hier platziert werden würde

    Reply
  3. Vielen Dank, ich habe das schon länger versucht und bin (auch dank meiner EDGE Konfiguration) immer gescheitert, irgendwo war in der Konfig immer ein Flaschenhals (10MB) und den habe ich jetzt gefunden

    Reply
  4. Leider inhaltlich völlig falsch!

    so wie Christina schreibt: TransportConfig gibt den Grenzwert vor, der von einer Mailbox nicht überschrieben werden kann.

    Ausnahmen für ein Postfach gehen nur dann, wenn man die TransportConfig und die Connectors hoch schraubt, dann alle Postfächer limitiert und manche auf „unlimited“ setzt, damit die Organisationsgrenzen greifen …

    Reply
  5. Hallo Franky,
    vielen Dank für die Anleitung. Ich bin ein großer Fan deiner Seite und du hast uns schon oft das Leben gerettet :-)

    Aber leider funktioniert diese Anleitung bei uns nicht. Die Ablehnung bei größeren Mails nach extern, trotz eingestellter Größe (z.B. 100 MB) auf den Connectoren und dem speziellen Postfach (z.B. 100 MB) wird die Mail schon vom interne Exchange abgelehnt und verweist auf die Größe in der globalen TransportConfig. Das kann man deutlich im Rückläufer sehen.
    Wie kann man also sicherstellen, dass dann wirklich nur ein Postfach höher senden und empfangen darf, wenn die TransportConfig doch wieder greift. Stelle ich die TransportConfig hoch ein, können zumindest intern alle größere Mails empfangen und senden, was aber nicht gewünscht ist.
    Falls hier noch jemand eine Idee hat? :-)

    Lieben Dank
    Christina

    Reply
  6. Danke (!) Frank fürs Aufgreifen dieses Themas.
    Mir fehlt zum besseren Verständnis der Microsoft-Server-ActiveSync Einstellungen, dass Zusammenspiel der Werte „maxAllowedContentLength“ und „maxRequestLength“.

    -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:30000000
    -section:system.web/httpRuntime /maxRequestLength:10240

    Bisher habe ich das so verstanden, dass die maximale Länge der httpRuntime Anfrage Teil der maximalen Länge des Inhaltes ist, der über den Anfragefilter läuft. Mit dieser Ansicht würde ich davon ausgehen, dass der max. Wert der httpRuntime Anfrage nicht angepasst werden muss, wenn nur größere Anlagen bei deinem EAS Clientzugriff zu versenden sind.

    Verstehe ich das richtig so?

    Kannst Du mir helfen, dass besser zu begreifen?

    Reply

Leave a Comment