Exchange Online "mailbox full" but the online archive isn't helping
The ticket says: "Outlook says my mailbox is full. IT turned on the archive last month. It's still full."
This is one of the most common Exchange Online tickets, and "turn on the archive" is rarely the whole fix. Enabling an archive gives mail somewhere to go. It doesn't move anything by itself. Something has to tell Exchange what to move and when, and something has to actually run.
This guide goes in the order that finds the cause fastest. Sections 1 to 4 only read. Section 5 lists the changes, which go through your normal change process. Quotas, licensing, and defaults change over time, so check current Microsoft docs for your plans.
1. Confirm what's actually full
"Full" can mean three different things:
- The primary mailbox has hit its quota.
- The Recoverable Items folder (deleted items that are still kept) has hit its own quota.
- Outlook's local data file (the OST in cached mode) has hit a local size limit, while the cloud mailbox is fine.
Connect with a read-only role and look at the numbers:
Connect-ExchangeOnline -UserPrincipalName auditor@contoso.com -ShowBanner:$false
$u = 'user@contoso.com'
Get-EXOMailbox -Identity $u -Properties IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota,
RecoverableItemsQuota, RecoverableItemsWarningQuota |
Select-Object DisplayName, IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota,
RecoverableItemsWarningQuota, RecoverableItemsQuota
Get-EXOMailboxStatistics -Identity $u |
Select-Object DisplayName, TotalItemSize, TotalDeletedItemSize, ItemCount, LastLogonTime
-
TotalItemSizenearProhibitSendQuotameans the primary mailbox is full. -
TotalDeletedItemSizenearRecoverableItemsQuotapoints to Recoverable Items. That's common on mailboxes under a hold. - If both are well under quota but Outlook still complains, look at the local OST and Outlook's cached mode settings, not Exchange.
Quota sizes depend on the license. Business plans and E3/E5 have different primary and archive limits, so look up the current numbers for the plans you actually own.
2. Is the archive really enabled?
Get-EXOMailbox -Identity $u -Properties ArchiveGuid, ArchiveName, ArchiveStatus, ArchiveQuota,
AutoExpandingArchiveEnabled, RetentionPolicy, RetentionHoldEnabled, ElcProcessingDisabled,
LitigationHoldEnabled |
Select-Object DisplayName, ArchiveGuid, ArchiveName, ArchiveStatus, ArchiveQuota,
AutoExpandingArchiveEnabled, RetentionPolicy, RetentionHoldEnabled,
ElcProcessingDisabled, LitigationHoldEnabled
What to check:
-
ArchiveGuidis not all zeros, andArchiveNamehas a value. That's the reliable sign the archive exists.ArchiveStatusalone can be misleading for cloud mailboxes. -
AutoExpandingArchiveEnabledtells you whether the archive can grow past its base size (licensing dependent). - The three fields at the end matter most. See section 3.
If an archive exists, read its size too:
Get-EXOMailboxStatistics -Identity $u -Archive |
Select-Object DisplayName, TotalItemSize, ItemCount
An archive with almost nothing in it, next to a full primary mailbox, means nothing is moving mail. That's the most common finding.
3. Why nothing moves: retention tags and the Managed Folder Assistant
Mail moves to the archive because of a retention policy (the Exchange MRM kind) with a Move to Archive tag, processed by the Managed Folder Assistant (MFA).
Three things commonly stop it:
a) The policy only moves old mail. The built-in Default MRM Policy includes a default tag that moves items to the archive after 2 years. If the user's mailbox is full of mail from the last 18 months, the default policy won't move any of it. This is the single most common cause.
Check the policy and its tags:
$policyName = (Get-EXOMailbox -Identity $u -Properties RetentionPolicy).RetentionPolicy
(Get-RetentionPolicy -Identity $policyName).RetentionPolicyTagLinks
Get-RetentionPolicyTag |
Where-Object { $_.RetentionAction -eq 'MoveToArchive' } |
Select-Object Name, Type, AgeLimitForRetention, RetentionEnabled
b) Processing is switched off for this mailbox. RetentionHoldEnabled = True pauses retention processing (often set for someone on leave and never turned back). ElcProcessingDisabled = True stops the MFA from processing the mailbox at all. Either one means no moves.
c) The assistant hasn't run yet. The MFA processes mailboxes on a work cycle, not immediately. A policy assigned this morning may not have done anything yet. Wait a cycle before deciding it's broken.
4. Recoverable Items and holds
If section 1 showed the Recoverable Items folder near its quota, look inside it:
Get-EXOMailboxFolderStatistics -Identity $u -FolderScope RecoverableItems |
Select-Object Name, FolderSize, ItemsInFolder
On mailboxes under Litigation Hold or a Microsoft Purview retention policy, deleted items are kept rather than purged, so this folder grows. Holds raise the Recoverable Items quota, and the archive can take some of the load, but if a mailbox is under a legal or compliance hold, talk to whoever owns that hold before changing anything. "The user is out of space" is never a reason to quietly lift a hold.
5. The fixes (these are changes)
Each of these changes the mailbox or org config. Put them through change control, and test on one mailbox first.
| Finding | Change |
|---|---|
| Archive doesn't exist |
Enable-Mailbox -Identity $u -Archive (needs a license that includes archiving) |
| Only the 2-year default tag applies | Create a shorter Move to Archive tag, add it to a retention policy, and assign that policy with Set-Mailbox -RetentionPolicy
|
RetentionHoldEnabled is True and no longer needed |
Set-Mailbox -Identity $u -RetentionHoldEnabled $false |
| Archive itself is filling up | Consider auto-expanding archiving. Microsoft documents it as one-way: once enabled, it can't be turned off. Check licensing first |
| Want to see results sooner after a change |
Start-ManagedFolderAssistant -Identity $u asks the assistant to process the mailbox. It doesn't guarantee an instant move |
A shorter tag looks like this (example values, adjust to your policy):
New-RetentionPolicyTag -Name 'Move to Archive - 1 year' -Type All `
-RetentionAction MoveToArchive -AgeLimitForRetention 365 -RetentionEnabled $true
After a change, check Get-EXOMailboxStatistics -Archive over the next few days. The archive size should grow as the primary shrinks.
6. Common mistakes
| Mistake | What happens | Fix |
|---|---|---|
| Enabling the archive and closing the ticket | Primary stays full | Check which tags apply and how old the mail is |
| Ignoring Recoverable Items | "Full" mailbox with an empty-looking inbox | Read TotalDeletedItemSize and folder stats |
| Lifting a hold to free space | Compliance and legal exposure | Talk to the hold owner first |
| Leaving Retention Hold on after leave | Nothing moves for months | Add Retention Hold to your return-from-leave checklist |
| Expecting instant moves | Re-tickets the next day | Allow for the assistant's work cycle |
| Turning on auto-expanding without reading the docs | Can't be undone | Decide deliberately, document it |
Want the Exchange Online checklists?
The Exchange Online Admin Hygiene Pack ($29) from Admin Pack Studio is a set of Markdown playbooks: shared vs user vs group mailbox guidance, a permissions and external-forward audit with a findings worksheet, five mail-flow triage cards, a monthly Exchange Online hygiene checklist, and admin break/fix cards. It's docs only, with no scripts and nothing that changes your tenant.
Archive and retention aren't backup. The M365 Backup Awareness & Restore Runbook ($19) covers what Microsoft 365 can restore natively and a quarterly restore drill: https://cashflow4375.gumroad.com/l/m365-backup-awareness-restore-runbook
Admin Pack Studio. Not affiliated with Microsoft. Exchange Online, Outlook, Microsoft 365, and Microsoft Purview are Microsoft products. Operational guidance for admins authorized to manage their tenant. Quotas, licensing, cmdlets, and defaults change, so check current Microsoft documentation. Examples use placeholder names.
Top comments (0)