Inhalt

The case of the... MapiExceptionShutoffQuotaExceeded

The case of the...

In dieser Kategorie veröffentliche ich Blogeinträge, in denen ich ein Problem, die Lösung und den Weg dorthin erläutere.

Der Name ist Homage an “The Case of the Unexplained” von Mark Russinovich.

Der Fehler

Einige Exchange Online Benutzer erhalten beim Erstellen von neuen Besprechungen folgende Fehlermeldung für eine oder mehrere eingeladene Mailboxen.

Warnung

Fehler bei der Nachrichtenzustellung an folgende Empfänger oder Gruppen:

John Doe (john.doe@bader.cloud)
Es liegt ein Problem mit dem Postfach des Empfängers vor. Versuchen Sie, die Nachricht noch mal zu senden. Wenn das Problem weiterhin besteht, wenden Sie sich an Ihren E-Mail-Administrator.

Diagnoseinformationen für Administratoren:

Generating server: VI1PR02MBnnnn.eurprd02.prod.outlook.com

john.doe@bader.cloud
Remote Server returned ‘554 5.2.0 STOREDRV.Deliver.Exception:QuotaExceededException.MapiExceptionShutoffQuotaExceeded; Failed to process message due to a permanent exception with message Move/Copy messages failed. […]’

Die Analyse

Die in der Fehlermeldung angegebene Ursache MapiExceptionShutoffQuotaExceeded lässt vermuten, dass die Empfänger-Mailbox voll ist und keine neuen Elemente aufnehmen kann. Die Ursache wird mit großer Wahrscheinlichkeit nicht in der Mailbox des Absenders zu finden sein.

Auswertung des betroffenen Postfachs

Der erste Blick geht daher direkt auf die Postfachgröße der Empfänger-Mailbox. Diese ist aber in diesem Fall bei weitem nicht bei Ihrem Limit von 100 GB.

Get-MailboxStatistics -Identity "$ExchangeGUID" | Select *TotalItemSize*

/the-case-of-mapiexceptionshutoffquotaexceeded/images/TotalItemSize.png

Hold Konfiguration

In der betroffenen Umgebung wurde allen Mailboxen eine Microsoft Retention Policy zugewiesen. Je nach Konfiguration ist dies auf Postfachebene oder auf Organisationsebene erkennbar.

Get-Mailbox -Identity "$ExchangeGUID" | Select LitigationHoldEnabled,InPlaceholds

/the-case-of-mapiexceptionshutoffquotaexceeded/images/Holds.png

Der Präfix mbx identifiziert den Hold Typ als Microsoft 365 Retention Policy.

Ist eine oder mehrere Richtlinien der gesamten Exchange Organisation zugewiesen, können diese in der Organisationskonfiguration des Exchange Tenants angezeigt werden.

Get-OrganizationConfig | FL InPlaceHolds

/the-case-of-mapiexceptionshutoffquotaexceeded/images/OrganizationHolds.png

Hold Typen

In diesem Fall ist der Mailbox, sowie der gesamten Organisation eine Richtlinie zugewiesen. Diese unterscheiden sich jedoch durch die Zahl hinter dem Doppelpunkt.

Wert Beschreibung
1 Deletion Policy - Daten werden nach einer bestimmten Zeit gelöscht
2 Hold Policy - Daten werden für eine bestimmte Zeit aufbewahrt
3 Hold und Delete Policy - Daten werden für eine bestimmte Zeit aufbewahrt und dann gelöscht

Der persönlichen Mailbox ist in diesem Fall eine “Deletion Policy” zugewiesen. Der gesamten Organisation eine Deletion und eine separate Hold Policy, somit auch der Mailbox.

Andere betroffene Mailboxen hatten keine direkt zugewiesene Richtlinie, weswegen dies als mögliche Ursache ausscheidet.

Retention Policy analysieren

Im nächsten Schritt werde ich daher die Hold Retention Policy, die der Organisation zugewiesen ist, genauer unter die Lupe nehmen. Neben der schon bestehenden PSRemoting Verbindung zu Exchange Online muss dazu noch eine zusätzliche Verbindung zum Security & Compliance Center aufgebaut werden. Die notwendigen cmdlets sind im ExchangeOnlineManagement Modul enthalten.

Die Policy Id muss ohne den Präfix angegeben werden.

Connect-IPPSSession
Get-RetentionComplianceRule -Policy d4606a08bd3343d8afced3b2a697ba8c | Select Name, RetentionComplianceAction,RetentionDuration,RetentionDurationDisplayHint

/the-case-of-mapiexceptionshutoffquotaexceeded/images/RetentionPolicy.png

In diesem Fall ist die Aufbewahrungsfrist auf 10 Jahre konfiguriert. Damit aber die Mailbox nicht vollläuft wurden zusätzlich noch MRM Policy Rules erstellt, die die Elemente in der Mailbox nach 3 Jahren in das Online Archiv verschieben und die RecoverableItems nach 30 Tagen in das Online Archiv verschieben.

Get-RetentionPolicyTag | ? RetentionAction -eq "MoveToArchive" | ft -AutoSize

/the-case-of-mapiexceptionshutoffquotaexceeded/images/RetentionPolicyTag.png

Diesen Vorgang übernimmt der Managed Folder Assistant automatisch im Hintergrund.

Archiv prüfen

Soweit sieht mit der Mailbox alles okay aus. Als nächstes muss nun das Archiv geprüft werden. Sollte es hier Probleme geben oder dieses nicht aktiviert sein, würden die definierten MRM Policy Rules nicht angewendet werden können.

Get-Mailbox -Identity "$ExchangeGUID" | Select ArchiveName,ArchiveStatus,ArchiveState

/the-case-of-mapiexceptionshutoffquotaexceeded/images/Archive.png

Das Online Archiv ist aktiv und es ist soweit kein Fehler erkennbar.

RecoverableItems prüfen

Nun prüfen wir die Größe der einzelnen Ordner und in diesem Fall mit einem besonderen Augenmerk auf den Folder Scope RecoverableItems. Hier werden nicht die “normalen” Ordner angezeigt, sondern alles was mit Holds, Versionierung, gelöschten Elementen, etc. zu tun hat.

$ExchangeGUID = Get-Mailbox john.doe@bader.cloud | Select-Object -ExpandProperty ExchangeGUID
Get-MailboxFolderStatistics -Identity "$ExchangeGUID" -IncludeAnalysis -FolderScope RecoverableItems | Format-Table Name,ItemsInFolder,FolderSize,*Subject*

/the-case-of-mapiexceptionshutoffquotaexceeded/images/SizeBefore.png

Problem gefunden!

Der Ordner DiscoveryHolds hat eine Größe von fast 100 GB und bringt damit die Mailbox an Ihr Limit. Für den Benutzer ist dies nicht ersichtlich und sie erhält auch keine Information über ein zu volles Postfach.

Da man sich direkt auch das TopSubject mit ausgeben lassen kann, erhält man auch die Information welches Element den Fehler höchstwahrscheinlich verursacht. In diesem Fall ist es ein Kalendereintrag, erkennbar an der Spalte TopSubjectClass und dem Typ IPM.Appointment.

Die Ursache

Leider konnte ich die Ursache für dieses Verhalten in diesem Fall nicht analysieren. Auch der eingeschaltete Microsoft Support konnte keine Fehler an der versendeten Einladung finden.

Es handelte sich um einen täglich stattfindenen Termin, der als Microsoft Teams Event konfiguriert war. Ob hierdurch regelmäßige Aktualisierungen stattgefunden haben und dadurch der Managed Folder Assistant das Element nicht ins Online Archiv verschieben konnte, bleibt leider ungeklärt.

Der Managed Folder Assistant war auf jeden Fall nicht in der Lage das Element aus dem Recoverable Items Bereich der Mailbox in das Online Archiv zu verschieben.
Im Normalfall sollte der Ordner durch den MFA automatisch bereinigt werden, wenn die Quota Warnung erreicht wird. Dieser Aufräumvorgang erfolgt nach dem Prinzip first-in-first-out.

Dieser Schwellwert ist bei Exchange Online, mit aktivierter Retention Hold Policy, bei 90GB (soft) bzw. 100GB (hard). Ohne eine Hold Policy oder ein Litigation Hold liegt der Wert bei 20 bzw. 30 GB.

Die Lösung

Aber das erkannte Problem ermöglichte es eine Lösung für das Problem zu finden.

  • Die Funktion Single Item Recovery muss für das betroffene Postfach (Empfänger) deaktiviert werden
  • Anschließend das betroffene Element komplett löschen
  • Ein manueller Lauf des Managed Folder Assistant muss gestartet werden um die Mailbox aufzuräumen
  • Und abschließend kann Single Item Recovery wieder aktiviert werden
Info
Der Mailbox Hold Status wird bei dieser Lösung nicht verändert.
Die Microsoft 365 Retention Policy ist die ganze Zeit aktiv.

Single Item Recovery deaktivieren

Dieser Schritt ist notwendig um das fehlerhafte Objekt durch den Benutzer aus dem Ordner entfernen lassen zu können.

$ExchangeGUID = Get-Mailbox john.doe@bader.cloud | Select-Object -ExpandProperty ExchangeGUID
Set-Mailbox -Identity "$ExchangeGUID" -SingleItemRecoveryEnabled $false

Betroffenes Item löschen

Diesen Schritt habe ich nicht über PowerShell automatisiert, da ein schreibender Zugriff auf das Postfach des Anwenders nicht gewünscht war.

Daher muss der betroffene Anwender, das entsprechende Element komplett zu löschen.

  • Aus dem Kalender löschen
  • Aus dem Papierkorb löschen
  • Aus den Recoverable Items löschen

/the-case-of-mapiexceptionshutoffquotaexceeded/images/DeleteRecoverableItems-de.png

Dieser Vorgang lässt sich ansonsten auch mittels New-ComplianceSearchAction automatisieren.

Managed Folder Assistant (MFA) starten

Um den Aufräumprozess in Exchange Online anschließend zu beschleunigen, kann der Managed Folder Assistant (MFA) manuell gestartet werden. Dabei ist es wichtig den Parameter HoldCleanup anzugeben.

$ExchangeGUID = Get-Mailbox john.doe@bader.cloud | Select-Object -ExpandProperty ExchangeGUID
Start-ManagedFolderAssistant -Identity "$ExchangeGUID" -HoldCleanup

Prüfung

Ob der MFA gelaufen ist, kann mittels des cmdlets Export-MailboxDiagnosticLogs geprüft werden. Die zurückgelieferten Daten sind im XML Format und müssen daher noch entsprechend formatiert werden.

$log = Export-MailboxDiagnosticLogs -Identity john.doe@bader.cloud -ExtendedProperties
$xml = [xml]($Log.MailboxLog)
$xml.Properties.MailboxTable.Property | ? {$_.Name -like "ELC*"}

/the-case-of-mapiexceptionshutoffquotaexceeded/images/MailboxDiagnosticLogs.png

Nun kann auch die Mailboxgröße geprüft werden.
Der Ordner DiscoveryHolds sollte stark geschrumpft und die Mailbox somit wieder sauber sein.

$ExchangeGUID = Get-Mailbox john.doe@bader.cloud | Select-Object -ExpandProperty ExchangeGUID
Get-MailboxFolderStatistics -Identity "$ExchangeGUID" -IncludeAnalysis -FolderScope RecoverableItems | Format-Table Name,ItemsInFolder,FolderSize,*Subject*

/the-case-of-mapiexceptionshutoffquotaexceeded/images/SizeAfter.png

Wichtig
Am Schluss nicht vergessen das Feature Single Item Recovery wieder zu aktivieren.

Single Item Recovery aktivieren

$ExchangeGUID = Get-Mailbox john.doe@bader.cloud | Select-Object -ExpandProperty ExchangeGUID
Set-Mailbox -Identity "$ExchangeGUID" -SingleItemRecoveryEnabled $true