Exchange Online Message Rate Grenzen

Große Postfächer in der Cloud verführen natürlich dazu, diese Postfächer auch für automatische Prozesse zu nutzen. Allerdings sollten Sie die Grenzen kennen, die Microsoft für Exchange Online durchsetzt.

Konfigurierte Limits

Ein Blick in die Microsoft Dokumente ist daher angebracht. Genau genommen sind diese Beschreibungen ja Bestandteil des Vertrags und sollten ihnen schon vor dem Kauf der Office 365 Lizenzen bekannt gewesen sein. Auf der anderen Seite weiß ich natürlich auch, dass kaum jemand so tief in die Beschreibungen schaut. Die Grenzen sind auch so gewählt, dass ein durchschnittlicher Anwender diese nie erreichen wird. Aber ich spreche hier ja nicht von Anwendern

Die Seite beschreibt umfangreich die Dienste, die in Exchange Online so alles enthalten sind, z.B. dass auch ein Zugriff per POP3/IMAP4 möglich ist und viele andere technische Aspekte. Noch wichtiger finde ich aber die Daten auf der folgenden Seite:

Hier werden die Grenzwerte beschrieben wie z.B. Postfachgrößen der verschiedenen Pläne. Beide Seiten sind daher wichtig um auch Exchange Online Pläne zu vergleichen. Die meisten Grenzwerte sind bekannt und werden auch beworben wie z.B. die Postfachgrößen F1=2G, E1=50GB, E3= 100GB/Unlimited). Andere Werte sind aber nicht so prominent im Marketing aber betreffen diverse Dienste, auf die ich später noch eingehe. Exemplarisch betrachte ich die Sende- und Empfangslimits

Eingehende Mails

Exchange Online limitiert die Anzahl der Mail, die ein Empfänger pro Stunde erhalten kann. Wird das Limit erreicht, dann lehnt Exchange jede weitere Mail auf dem SMTP-Level ab. Der absendende Server wird also nicht gebeten es etwas später noch mal zu versuchen sondern der Sender bekommt einen NDR. Dies kann speziell bei automatisch versendeten Mails ein Problem sein, wenn diese NDRs nicht verarbeitet werden.

Die Message hat dann den Wortlaut (Auszug)

554 5.2.122 The recipient has exceeded their limit for the number of messages they can receive per hour.
For more information go to http://go.microsoft.com/fwlink/?LinkId=526653. (S71732)

Versenden von Mails

Auch in beim Versand unterliegen authentifizierte Sender verschiedenen Beschränkungen. Hier sind die Limits sogar noch niedriger.

Die meisten Menschen werden sicher nicht die Rate von 30 Mails/Minute erreichen, es sei denn es ist ein Serienbrief mit Word zu Weihnachten, der viele einzelne individualisierte Mails versendet. Hier wird dann Outlook die Mails langsam in Exchange einfüttern.

Leider habe ich bislang noch nichts gefunden, solche Limits bei einer On-Premises Installation umzusetzen. Anscheinend gibt es diese Logik nur im Exchange Online Protection Stack.

Auch andere Dienste haben solche Limits.

Migration von Mails

Ein drittes Limit kann Sie bei Migrationen per EWS von anderen Mailsystem treffen.

Dieses Limit trifft meines wissens nicht zu, wenn Sie Mails mit einem RemoteMoveRequest und dem MRSProxy übertragen.

Auch wenn auf dem Transport ein Limits von 150 MB eingestellt ist, haben die Exchange Online Postfächer ein geringeres Limits von ca. 36 MB pro Mail. Diese Größe bezieht sich auf die komplette Mail mit Header, Body, Anlage und Base64-Codiert. Die maximale Größe einer Mail mit Anlagen liegt daher eher um die 25MB. Microsoft spricht von ca. 33% Mehrverbrauch durch die BASE64-Codierug.

Mit der Exchange Online PowerShell ist dies schnell zu prüfen :

PS C:\> Connect-ExchangeONline
PS C:\> Get-Mailbox  |ft displayname,MaxReceiveSize

DisplayName              MaxReceiveSize
-----------              --------------
Discovery Search Mailbox 100 MB (104,857,600 bytes)
Frank Carius             36 MB (37,748,736 bytes)
Frank Carius DEV         36 MB (37,748,736 bytes)
User1      e             36 MB (37,748,736 bytes)
Raum1                    36 MB (37,748,736 bytes)
Shared1                  36 MB (37,748,736 bytes)

Die Werte für reguläre Postfächer aber auch Räume, Ressourcen und gemeinsam genutzte Postfächer sind gleich und können Sie für bestehende Postfächer sehr einfach ändern:

PS C:\> Get-Mailbox | Set-Mailbox -MaxReceiveSize 150MB

In Exchange Online ist das Limit bei 150MB (Stand Dez 2023). Die Angabe eines höheren Werts oder gar "unlimited" wird mit einem Fehler quittiert:

PS C:\> Set-Mailbox "Frank Carius" -MaxReceiveSize unlimited
Set-Mailbox: |System.InvalidOperationException|Fehler bei Vorgang für Postfach "frank.carius", da es außerhalb des Schreibbereichs
für den aktuellen Benutzer liegt. Der Wert der Eigenschaft "MaxReceiveSize" kann den Grenzwert von 150 MB nicht überschreiten.

Für neue Postfächer gilt aber wieder der alte Standard von 36MB, solange sie den "Mailboxplan" nicht ändert. Ist geht aber auch recht einfach für den "Default Mailboxplan" ändern.

PS C:\> Get-MailboxPlan -Filter {isdefault -eq $true} | Set-MailboxPlan -MaxReceiveSize 150MB

Es kann sein, dass ihr Tenant mehrere Mailboxpläne hat, da diese je Lizenz angelegt werden, d.h. Ein Benutzer mit einem Kiosk/F3-Plan hat eine andere Einstellung als ein Benutzer mit E1 (Exchange Plan1) oder E3/E5 ยด(enthält Exchange Plan 2).

Passen Sie ihre Einstellungen entsprechend an, dass auch alle neuen Postfächer das gewünschte Limit erhalten.

Es ist immer ratsam, alle Postfächer nach einem gleichen Schema zu konfigurieren, damit ein spätere Fehlersuche schneller erfolgen kann.

Benachrichtigung

Es ist gar nicht so einfach, diese Grenzen als "normaler Benutzer" zu überschreiten. Aber wenn Sie es schaffen, dann bekommen Sie als Postfach-Besitzer eine Nachricht:

Dies ist die Meldung, wenn eine Sender-Empfänger-Paarung über die Grenze hinausgeht:


Quelle: https://docs.microsoft.com/en-us/office365/servicedescriptions/exchange-online-service-description/exchange-online-limits#receiving-limits

Die 33% sind natürlich einfach zu erreichen, wenn ein Admin-Postfach sowieso ganz wenige Mails bekommt und dann ein Skript z.B. viele Meldungen sendet. Die anderen Grenzwerte sind da schon deutlich schwerer im Regelbetrieb zu erreichen.

Betroffene Dienste

Abseits der normalen Postfächer ist Exchange aber auch durchaus Informationsdrehscheibe für jede Art von Nachrichten. Ohne die Grenzen einer lokalen Installation funktioniert das auch aber mit Exchange Online können Sie sich schon mal umschauen, welche Prozesse nach einer Migration beeinträchtigt sein könnten. Hier ein paar Beispiele:

Postfach Beschreibung

Journalpostfach

Exchange On-Prem kann z.B. über ein Transportjournal oder Datenbankjournal eine revisionsfeste Kopie jeder Mail in ein Postfach ablegen. Archivprodukte sollten das Postfach natürlich zeitnah leeren. In Exchange Online ist ein solcher "Missbrauch" eines Postfachs nicht erlaubt aber wird auch nicht verhindern. Aber mit den Message-Rate Limits wird es auch nicht funktionieren. Da muss Microsoft gar nicht erst etwas untersagen.

Exchange Online doesn't support delivering journal reports to an Exchange Online mailbox. You must specify the email address of an On-Premises archiving system or a third-party archiving service as the journaling mailbox.
Quelle: https://docs.microsoft.com/de-de/exchange/security-and-compliance/journaling/configure-journaling

Support

Auch eine zentrale Support-Adresse mit einem Postfach oder einer Shared Mailbox kann an Grenzen stoßen, wenn die Firma größer ist. Auch wenn 1 Mail/Sek bei vielen Firmen reicht, könnte z.B. eine automatische Bestätigung beim Versand ein Limit sein. Das Problem ist auch existent, wenn die ein Helpdesk-System haben, was die Support-Mailbox abruft.

DMARC-Rücklauf

Wenn Firmen ihre Mails per SPF und DKIM qualifizieren, dann können Sie über den DMARC-Eintrag eine Mailadresse für die Report und forensischen Berichte anlegen. Wenn ein Spammer richtige umfangreich ihre Domain stören will, dann kommen hier natürlich auch einige Reports rein und könnte das Empfangslimit überschreiten.

Benachrichtigungsversand

Früher ist es gerne mal passiert, dass ein automatischer Prozess keine Mails mehr verwenden konnte, weil sein eigenes Postfach voll von NDRs war und Exchange irgendwann dann eben auch den Versand gestoppt hat. Aber in der Cloud sind 30 Mails per Minute zwar viel aber für eine Software zur Meldung von Störungen oder neue Aufgaben im ERP-System o.ä. schnell erreicht.

Mailinglisten

Mailing-Listen sind weitere Kandidaten, die mit dem Versende-Limit gestört werden können. Sie verteilen ja eine Mail eines Absenders an alle eingeschriebenen Mitglieder.

Edifact (M2M)

E-Mail ist nicht nur für die Kommunikation zwischen Menschen sondern wird auch zum automatischen Austausch von Daten verwendet. Edifact ist hier ein geläufiger Begriff. Aber acuh Energieversorger senden beim Wechsel eines Kunden per Mail diese Wechselbestätigung an den abgebenden Stromerzeuger

Spam Quarantäne

Es ist eher selten aber es gibt durchaus Spamfilter die keine eigene Quarantäne verwalten sondern die Mails an ein eigens dazu eingerichtetes Postfach senden.

Die Liste kann nur ein Denkanstoß darstellen, welche verschiedenen Dienste hier an Grenzen kommen könnten.

Auswerten

Bei der Auswertung müssen Sie einmal die Analyse der Mails vor der Einführung von Office 365 betrachten als auch das Erkennen im Betrieb mit Office 365

  • Vorab-Analyse
    Über das Message-Tracking können Sie schon heute relativ einfach ermitteln, wer Mails wohin sendet. Allerdings habe ich noch kein "fertiges Skript" erstellt, das genau auf unser Ziel ausgerichtet sind und allein die Mails pro Mailadresse und Zeiteinheit ermitteln. Aber es gibt einige Skripte im Internet, auf die ich verlinke
  • Office 365 Betrieb
    Hier könnten Sie sich erst einmal stumm stellen und darauf warten, dass ein Anwender sich meldet. Das ist nur unschön, wenn gar kein Anwender involviert ist sondern ein Skript arbeitet und der Programmierer den Fehler nicht abgefangen hat. Bei der Überschreitung der Limits erstellt aber Exchange Online auf jeden Fall einen NDR, den Sie im Message-Tracking erfassen können.

Es ist ehe eine gute Idee, die NDRs regelmäßig zu prüfen, denn in einer idealen Umgebung gibt es keine NDRs, es sei denn Anwender vertippen sich manuell bei internen Empfängern.

Lösungen

Wenn ein Exchange Online Postfach nicht als Empfänger und Sender in diesen Fällen genutzt werden kann, dann bleibt wohl oder übel nur der Betrieb eines eigenen SMTP-Service, der die Mails annimmt und versendet. Da der MX-Record einer Domäne aber nicht nach Empfängern unterscheiden kann, müssen Sie eine andere Domäne nutzen.

Die meisten Firmen nutzen dann Subdomains, die auf den Dienst ausgerichtet sind, z.B. monitoring@nagios.example.com oder info@newsletter.example.com". Durch diesen Tick können Sie nun diese Domains per MX-Record zu einem anderen Mailsystem leiten, welche Sie selbst kontrollieren und Limits setzen können. Allerdings müssen Sie dann natürlich auch einen eigenen Server hierfür betreiben oder die Dienstleistung bei einem anderen Hoster einkaufen.

Der Betrieb eines eigenen Mailservers in Azure ist nicht einfach, da Microsoft per Default keine ausgehenden Verbindungen auf Port 25 zulässt. Schließlich möchte Microsoft nicht, dass die IP-Adressen von Azure in Blocklisten u.a. auftauchen.

Ein anderer Weg wäre eine Weiterleitung einer Mailadresse anstatt eines Postfachs über einen MailContact oder MailUser. Wenn Sie die Beschreibung wörtlich nehmen, dann beziehen sich die Grenzwerte auf Postfächer und authentifizierte Benutzer. Aber nur weil Weiterleitungen nicht explizit beschrieben sind, bedeutet das nicht, dass diese nicht ähnlichen Grenzen unterliegen. Den Versand von vielen Mails ins Internet können Sie natürlich an Exchange Online vorbei über einen anderen Versand-Dienstleister leiten.

Ich konnte noch nicht testen, ob Weiterleitungen unter die Drosselung fallen und Mails im Hybrid-Umfeld ebenfalls gedrosselt werden.

On-Premises

Office 365 hat entsprechenden eingerichtet und auch dokumentiert. Vielleicht ist das ein guter Moment über eine ähnliche Regelung für ihre On-Premises Server nachzudenken. Über Throttling Policies gibt es Möglichkeiten hier etwas einzugreifen.

The Microsoft Exchange Throttling service tracks resource settings for specific uses and caches the information in memory. Mail flow throttling settings are also known as a budget. Restarting the Microsoft Exchange Throttling service resets the mail flow throttling budgets.
Quelle: https://docs.microsoft.com/de-de/exchange/mail-flow/message-rate-limits?view=exchserver-2019#message-throttling-on-receive-connectors

Allerdings ist das nicht mit Exchange Online vergleichbar. Hier scheint das System pro Empfänger einen Eintrag in einer Datenbank zu pflegen und alle Transport-Rollen fragen wohl bei jeder Mail kurz ab, ob das Budget dies noch erlaubt. Bei Exchange On-Premises erfolgt dies pro Server, um hier eine Überlastung zu vermeiden. Es gibt vielleicht mit dem Parameter "MesssageRateLimit" einen Wert, der in die Richtung geht:

-MessageRateLimit
The MessageRateLimit parameter specifies the number of messages per minute that can be submitted to transport by POP3 or IMAP4 clients that use SMTP.
Quelle: https://docs.microsoft.com/en-us/powershell/module/exchange/server-health-and-performance/New-ThrottlingPolicy

Das dürfte sich aber nur auf authentifizierte Benutzer beim Versand per SMTP beziehen aber nicht auf eingehende Verbindungen.

Wenn Sie mit "Get-ThrottlingPolicy" sich die Werte einmal anzeigen lassen, dann finden Sie hier nicht direkte solche Counter für Mails/Zeiteinheit/Richtung.

[PS] C:\>Get-ThrottlingPolicy -ThrottlingPolicyScope global |fl

ThrottlingPolicyScope                       : Global
IsServiceAccount                            : False
AnonymousMaxConcurrency                     : 1
AnonymousMaxBurst                           : 120000
AnonymousRechargeRate                       : 420000
AnonymousCutoffBalance                      : 720000
AnonymousCostThreshold                      :
BookingSelfServiceMaxConcurrency            : 10
BookingSelfServiceMaxBurst                  : 500000
BookingSelfServiceRechargeRate              : 1800000
BookingSelfServiceCutoffBalance             : 3000000
ConsensusMaxConcurrency                     : 10
ConsensusMaxBurst                           : 500000
ConsensusRechargeRate                       : 1800000
ConsensusCutoffBalance                      : 3000000
SchedulesMaxConcurrency                     : 5
SchedulesMaxBurst                           : 500000
SchedulesRechargeRate                       : 1800000
SchedulesCutoffBalance                      : 3000000
EasMaxConcurrency                           : 10
EasMaxBurst                                 : 480000
EasRechargeRate                             : 1800000
EasCutoffBalance                            : 600000
EasMaxDevices                               : 100
EasMaxDeviceDeletesPerMonth                 : Unlimited
EasMaxInactivityForDeviceCleanup            : Unlimited
EwsCostThreshold                            : 50
EwsMaxConcurrency                           : 27
EwsMaxBurst                                 : 300000
EwsRechargeRate                             : 1800000
EwsCutoffBalance                            : 0
EwsMaxSubscriptions                         : 5000
ImapMaxConcurrency                          : Unlimited
ImapMaxBurst                                : 3600000
ImapRechargeRate                            : 600000
ImapCutoffBalance                           : Unlimited
OutlookServiceMaxConcurrency                : 27
OutlookServiceMaxBurst                      : 300000
OutlookServiceRechargeRate                  : 900000
OutlookServiceCutoffBalance                 : 3000000
OutlookServiceMaxSubscriptions              : 5000
OutlookServiceMaxSocketConnectionsPerDevice : 9
OutlookServiceMaxSocketConnectionsPerUser   : 12
OwaMaxConcurrency                           : 20
OwaMaxBurst                                 : 480000
OwaRechargeRate                             : 1800000
OwaCutoffBalance                            : 0
OwaVoiceMaxConcurrency                      : 3
OwaVoiceMaxBurst                            : 75000
OwaVoiceRechargeRate                        : 375000
OwaVoiceCutoffBalance                       : 525000
PopMaxConcurrency                           : 20
PopMaxBurst                                 : 3600000
PopRechargeRate                             : 600000
PopCutoffBalance                            : Unlimited
PowerShellMaxConcurrency                    : 18
PowerShellMaxBurst                          : Unlimited
PowerShellRechargeRate                      : Unlimited
PowerShellCutoffBalance                     : Unlimited
PowerShellMaxTenantConcurrency              : Unlimited
PowerShellMaxOperations                     : Unlimited
PowerShellMaxCmdletsTimePeriod              : Unlimited
ExchangeMaxCmdlets                          : Unlimited
PowerShellMaxCmdletQueueDepth               : Unlimited
PowerShellMaxDestructiveCmdlets             : Unlimited
PowerShellMaxDestructiveCmdletsTimePeriod   : Unlimited
PowerShellMaxCmdlets                        : Unlimited
PowerShellMaxRunspaces                      : Unlimited
PowerShellMaxTenantRunspaces                : Unlimited
PowerShellMaxRunspacesTimePeriod            : Unlimited
PswsMaxConcurrency                          : 18
PswsMaxRequest                              : Unlimited
PswsMaxRequestTimePeriod                    : Unlimited
RcaMaxConcurrency                           : 40
RcaMaxBurst                                 : 150000
RcaRechargeRate                             : 900000
RcaCutoffBalance                            : Unlimited
CpaMaxConcurrency                           : 20
CpaMaxBurst                                 : Unlimited
CpaRechargeRate                             : Unlimited
CpaCutoffBalance                            : Unlimited
RcaSharedMaxConcurrency                     : Unlimited
RcaSharedMaxBurst                           : 600000
RcaSharedRechargeRate                       : 3600000
RcaSharedCutoffBalance                      : Unlimited
MessageRateLimit                            : Unlimited
RecipientRateLimit                          : Unlimited
ForwardeeLimit                              : Unlimited
DiscoveryMaxConcurrency                     : 2
DiscoveryMaxMailboxes                       : 5000
DiscoveryMaxKeywords                        : 500
DiscoveryMaxPreviewSearchMailboxes          : 5000
DiscoveryMaxStatsSearchMailboxes            : 100
DiscoveryPreviewSearchResultsPageSize       : 200
DiscoveryMaxKeywordsPerPage                 : 25
DiscoveryMaxRefinerResults                  : 10
DiscoveryMaxSearchQueueDepth                : 32
DiscoverySearchTimeoutPeriod                : 10
PushNotificationMaxConcurrency              : 20
PushNotificationMaxBurst                    : Unlimited
PushNotificationRechargeRate                : Unlimited
PushNotificationCutoffBalance               : Unlimited
PushNotificationMaxBurstPerDevice           : 10
PushNotificationRechargeRatePerDevice       : 6
PushNotificationSamplingPeriodPerDevice     : 600000
EncryptionSenderMaxConcurrency              : 200
EncryptionSenderMaxBurst                    : 4800000
EncryptionSenderRechargeRate                : 18000000
EncryptionSenderCutoffBalance               : Unlimited
EncryptionRecipientMaxConcurrency           : 20
EncryptionRecipientMaxBurst                 : 480000
EncryptionRecipientRechargeRate             : 1800000
EncryptionRecipientCutoffBalance            : Unlimited
ComplianceMaxExpansionDGRecipients          : 10000
ComplianceMaxExpansionNestedDGs             : 25
SuiteMaxConcurrency                         : 20
SuiteMaxBurst                               : 480000
SuiteRechargeRate                           : 1800000
SuiteCutoffBalance                          : Unlimited
IsLegacyDefault                             : False
Diagnostics                                 :
AdminDisplayName                            :
ExchangeVersion                             : 0.20 (15.0.0.0)
Id                                          : GlobalThrottlingPolicy_<guid>

Ich habe diese globalen Werte nie verändert. Wenn für Dienstkonten oder andere Sonderkonten eine abweichende Konfiguration erforderlich war, dann habe ich eine neue Policy angelegt, die Werte angepasst und der Mailbox zugewiesen.

Weitere Links