We’ve all probably heard about mailbox quota limits in Exchange Online, but if you don’t know what they are, I recommend checking the following two sections in the Exchange Online Limits article:
- Mailbox storage limits (primary mailboxes and archive mailboxes quotas)
- Mailbox folder limits (Recoverable Items folder quotas)
How to check mailbox quotas and space used
By default, Primary and Archive Mailbox Quotas (mailbox storage limits for primary mailboxes and archives) have a max limit of ~100 GB, while Recoverable Items Quota (mailbox folder limits for Recoverable Items folders) is set to 30 GB for users not on hold (litigation hold, in-place holds, organizational holds or compliance policy holds), and ~100 GB for those who are on hold.
Even with Auto-Expanding Archiving – which can provide up to 1.5 TB of storage in an archive mailbox, this total storage of 1.5 TB is split and allocated across multiple archive mailboxes. This means that each individual archive mailbox will still have its max ~100 GB mailbox storage limit individually, so the ArchiveQuota value remains ~100 GB per individual archive mailbox. You will then have multiple archive mailboxes to contribute to the 1.5 TB total archive mailbox storage limit. Therefore, don't expect to see a single 1.5 TB ArchiveQuota when you enable Auto-Expanding Archive.
There are three primary types of mailbox quotas:
- ProhibitSendReceiveQuotas – this is the primary mailbox quota. When the primary mailbox of the user reaches this value, the user won’t be able to send and receive emails.
- ArchiveQuota – the archive mailbox quota. When the archive mailbox (or mailbox shard) of the user reaches this value, we cannot add more content to that specific archive mailbox (or shard). Note that with Auto-Expanding Archive, we can have multiple archive mailbox shards (each instance of a mailbox location is called a shard).
- RecoverableItemsQuota – the recoverable items quota. When recoverable items in the primary or archive mailbox shard (MainArchive or AuxArchive) reaches this value, the user won’t be able to delete from Deleted Items or move content to Recoverable Items folders.
Each of these quotas has a related warning quota, meant to warn users (or sometimes Exchange components or clients) about reaching these warning quotas and being one step closer to reaching the main (actual) quotas.
The warning quota values are lower than their corresponding actual quotas.
For example, if we run this Get-Mailbox <user> | FL alias, *Quota , we will see all these quotas and their values:
Here are all the definitions of each of these quotas, taken from Set-Mailbox (ExchangePowerShell) | Microsoft Learn:
- ArchiveQuota - specifies the maximum size for the user's archive mailbox. If the archive mailbox reaches or exceeds this size, it no longer accepts messages. The ArchiveQuota value must be greater than or equal to the ArchiveWarningQuota value.
- ArchiveWarningQuota - specifies the warning threshold for the size of the user's archive mailbox. If the archive mailbox reaches or exceeds this size, the user receives a descriptive warning message.
- RecoverableItemsQuota - specifies the maximum size for the Recoverable Items folder of the mailbox. If the Recoverable Items folder reaches or exceeds this size, it no longer accepts messages. The RecoverableItemsQuota value must be greater than or equal to the RecoverableItemsWarningQuota value.
- RecoverableItemsWarningQuota - specifies the warning threshold for the size of the Recoverable Items folder for the mailbox.
- ProhibitSendReceiveQuota - specifies a size limit for the mailbox. If the mailbox reaches or exceeds this size, the mailbox can't send or receive new messages. Messages sent to the mailbox are returned to the sender with a descriptive error message. This value effectively determines the maximum size of the mailbox. The value must be greater than or equal to the ProhibitSendQuota or IssueWarningQuota values.
- ProhibitSendQuota - specifies a size limit for the mailbox. If the mailbox reaches or exceeds this size, the mailbox can't send new messages, and the user receives a descriptive warning message. The ProhibitSendQuota value must be less than or equal to the ProhibitSendReceiveQuota value.
- IssueWarningQuota - specifies the warning threshold for the size of the mailbox. If the mailbox reaches or exceeds this size, the user receives a descriptive warning message. The IssueWarningQuota value must be less than or equal to the ProhibitSendReceiveQuota value.
There are 2 more quotas applied on the mailbox, but we won’t discuss these in the article:
- RulesQuota (no corresponding warning quota) - specifies the limit for the size of Inbox rules for the mailbox.
- CalendarLoggingQuota (no corresponding warning quota) - specifies the maximum size of the log in the Recoverable Items folder of the mailbox that stores changes to calendar items. When the log exceeds this size, calendar logging is disabled until messaging records management (MRM) removes older calendar logs to free up more space.
In Exchange Online, you can only set ProhibitSendQuota and ProhibitSendReceiveQuota, IssueWarningQuota and RulesQuota. You can lower or raise quota values, but you can't exceed the maximum value that's allowed by the subscription or license.
How to check these quotas and how much storage is used?
Primary Mailbox Quota
The maximum value of this depends on the mailbox plan or license assigned to the user. For example, a deskless user will be capped at 2 GB quota, an Exchange Online Plan 1 user at 50 GB and an Exchange Online Plan 2 user at 100 GB.
You will see this value in Get-Mailbox <user> | FL ProhibitSendReceiveQuota
To check the primary mailbox storage usage, run Get-MailboxStatistics on their primary mailbox and review the TotalItemSize value.
Then subtract the TotalItemSize from the ProhibitSendReceiveQuota value to find out the remaining available storage in the mailbox. In our example, 57.5 GB remains, because:
100 - 42.49 = 57.51
For primary mailbox stats, you can run the Get-MailboxStatistics command with the user’s identifier (UPN, Email Address, Alias) but you can achieve the same result by passing the MailboxGuid of the mailbox. In the example below, we have mailbox1 with both the primary Exchange Online mailbox (545e88f1-5bbe-45d5-bc99-599928eabbd7) and an archive mailbox (1c2d9561-0b6a-4f6a-9479-902f98b17546):
If you are curious of what type of data (folders) count against this TotalItemSize number, you can run Get-MailboxFolderStatistics and look at all the folders that have TargetQuota set to User.
Here are some commands to play with:
Get-MailboxFolderStatistics <user> |FT Name, FolderSize, ItemsInFolder, TargetQuota
Get-MailboxFolderStatistics mailbox1 | group TargetQuota | FT Name, Count
As an example, mailbox1 has 900 folders with TargetQuota User and this means their sizes will count against TotalItemSize.
Archive Mailbox Quota
Archive Mailbox Quota is 50 GB or 100 GB, depending on the mailbox plans / licenses. You can see the value with Get-Mailbox <user> |FL ArchiveQuota.
If you want to see how much storage is used by the user in the archive mailbox, you will run Get-MailboxStatistics -Archive or ArchiveGuid / MailboxGuid of MainArchive and look at TotalItemSize value.
And if you have the same curiosity related to the folders in archive mailbox that contribute to TotalItemSize, then you can pass -Archive switch in the Get-MailboxFolderStatistics or run it on the ArchiveGuid (recommended way when we have multiple archive mailboxes, aka auto-expanding archives) and check folders with TargetQuota set to User type.
Recoverable Items Quota
As mentioned earlier, this is 30 GB (for users not on hold) and 100 GB for users on hold. Since users on hold cannot completely purge the data, we need more storage for Recoverable Items, hence the 70 GB automatic increase by the service when the user is placed on litigation hold.
To view what value the RecoverableItemsQuota is set to, you will use Get-Mailbox <user> | FL RecoverableItemQuota
The recoverable items quota affects both the primary and the archive mailboxes. To view the storage used for recoverable items for the primary mailbox, run:
Get-MailboxStatistics <user> |FL TotalDeletedItemSize or Get-MailboxStatistics <Primary MailboxGuid> |FL TotalDeletedItemSize
To view the storage used for recoverable items for the archive mailbox, run:
Get-MailboxStatistics <user> -Archive |FL TotalDeletedItemSize or Get-MailboxStatistics <MainArchive MailboxGuid / ArchiveGuid> |FL TotalDeletedItemSize
A few words on Get-MailboxStatistics -Archive:
- It is prone to timeouts, or it might take a long time to run when we have multiple archive mailboxes (MainArchive + AuxArchive). To avoid this, pass the archive mailbox shard GUID, specifically, when calling Get-MailboxStatistics, instead of -Archive
- It will show aggregated statistics if we have multiple archive mailboxes. If you want to see individual sizes, pass the archive mailbox shard GUID.
Example below: shared1 mailbox has 307 MB in recoverable items folders in primary mailbox and 1 GB in recoverable items folders in the archive mailbox:
If you want to see the recoverable items folders and their sizes, which add up to recoverable items quota / total deleted item size, you can run these commands:
For primary mailbox recoverable items folders:
Get-MailboxFolderStatistics <user> -FolderScope RecoverableItems | FT Name, FolderSize, TargetQuota
For archive mailbox recoverable items folders:
Get-MailboxFolderStatistics <user> -Archive -FolderScope RecoverableItems | FT Name, FolderSize, TargetQuota
Continuing the example above with Get-MailboxStatistics, here is the output for Get-MailboxFolderStatistics. Both primary mailbox and archive mailbox have their recoverable items size well below the 30 GB quota:
Now let’s check some common scenarios where we can run into issues and what to do about them.
Cross-Tenant Mailbox Migrations (CTMM) using MRS
By default, the recoverable items quota of a Mail User is 30 GB but there are situations where the recoverable items quota of the source mailbox we want to migrate exceeds that size (usually because of some type of hold). If so, you can increase the recoverable items quota of the target tenant Mail User object up to 100 GB by enabling litigation hold, to avoid migration failures with a QuotaExceeded exception by running:
Set-MailUser <id> -EnableLitigationHoldForMigration
In the example below, this switch was used to increase the RecoverableItemsQuota from 30 GB to 100 GB on this Mail User object:
A few notes here:
- This also applies to directory synced mail users (IsDirSynced = True), not just cloud only mail users.
- Don’t use this procedure for hybrid migration users, where the source mailbox is hosted in Exchange on-premises and have corresponding mail users in the cloud. If you have an on-prem mailbox with – for example – 70 GB recoverable items and the mailbox is not on hold on-premises, then we recommend you enable litigation hold on-premises, for this on-premises mailbox. After directory sync, the litigation hold status on the corresponding mail user in the cloud will have the Recoverable Items Quota increased to 100 GB but most importantly, the litigation hold is enabled and preserved in cloud on the mail user object. By doing this, when you then migrate the on-premises mailbox to the cloud using a hybrid migration, the mail user honors the LitigationHold flag coming from on-premises and there will be no data loss post migration to Exchange Online, for the recoverable items, due to RetainDeletedItemsFor setting.
- In case you do use Set-MailUser -EnableLitigationHoldForMigration for hybrid migration users, please be aware that the litigation hold flag will be overwritten from on-premises AD at the next synchronization. Therefore, you might be thinking that the user is enabled for litigation hold since you ran the command, but this won’t “stay” if the on-premises mailbox is not placed on litigation hold while on-premises is the source of authority. The RecoverableItemsQuota won’t revert to 30 GB in this situation, but we want you to be mindful about the potential data loss after you migrate the mailbox to Exchange Online.
Litigation hold temporarily enabled:
Litigation hold automatically disabled after a synchronization:
For the target tenant mail user that is dirsynced and a mail user is also in on-premises AD, the litigation hold flag will not be overwritten at the next directory synchronization cycle:
There is no switch to disable litigation hold on a mail user object in Exchange Online, after you’ve enabled it for cross-tenant migration purposes. You can disable it after migration, after the user is mailbox enabled, using Set-Mailbox <user> -LitigationHoldEnabled $false, however be mindful of potential data loss from recoverable items folders, when removing the litigation hold.
Gmail and IMAP large mailbox migrations to Exchange Online
If the source mailbox is bigger than 100 GB and is hosted at Google or an IMAP source, we have a Large Mailbox Migration built-in option: Perform automated migration of large mailboxes from Google or IMAP to Microsoft 365 Exchange | Microsoft Learn.
Using this migration method, you don’t need to worry about the 100 GB mailbox limit or how to increase the ProhibitSendReceiveQuota (primary mailbox quota) in Exchange Online, as the service will automatically migrate the excess content to archive mailboxes.
As of now, Migration team is working on developing a solution for Hybrid migrations, like what we have today for Gmail and IMAP large mailbox migrations. At the time of the writing, this is estimated to be available approximately in March 2026 for large on-premises primary mailboxes (100 GB – 2 TB). The first phase of this work is designed for only primary large Exchange on-premises mailboxes (large archive mailboxes on-premises will come later).
Mailboxes hosted in Exchange Online, not related to migration scenarios
As an admin, you’ve probably dealt with scenarios where the primary mailbox, archive mailbox or Recoverable Items folder is full. The impact on the user would be:
- ProhibitSendReceiveQuota reached – user cannot send and receive emails in the primary mailbox
- ArchiveQuota reached – user cannot move data to the Archive Mailbox
- RecoverableItemsQuota reached – user cannot purge items in primary or archive mailbox because Recoverable Items folders are full. Users may also have issues with calendar invites, see: Recoverable Items folder not emptied for mailbox on litigation or retention hold - Exchange | Microsoft Learn.
It is recommended that admins periodically check mailbox usage. You can use this report in Microsoft 365 admin center to look for mailboxes reaching quotas: Microsoft 365 admin center mailbox usage reports - Microsoft 365 admin | Microsoft Learn.
When ProhibitSendReceiveQuota is reached, some of the options would be:
- Users must clean up mailbox space if possible (remove unnecessary emails, junk email or deleted items)
- Admins should enable an archive mailbox and create retention policy tags for moving data from primary mailbox to archive mailbox
- If the user currently has a license that provides lower amount of storage (for example Exchange Online P1, 50 GB), a license granting more storage could be assigned (Exchange Online P2, 100 GB).
When the main archive is full (ArchiveQuota is reached), and data must be persevered, an option would be to enable Auto-Expanding Archiving so that auxiliary archives (AuxArchive) are allocated and content will be automatically split between MainArchive and AuxArchive. You can also get an ArchiveQuota of 110 GB if a legal hold type was enabled and Auto-expanding enabled at mailbox level (read further).
When RecoverableItemsQuota is reached, we can either permanently delete the Recoverable Items, increase the RecoverableItemsQuota to the maximum we can, and/or enable Auto-Expanding to have the data split and moved to archive mailboxes. Speaking of Recoverable Items, note that Exchange Online service has a component called Dumpster Expiration Enforcer which will purge any data above the Recoverable Items Warning Quota using FIFO (first in, first out) order based on the modified date of the item. This provides additional space for the user if they need to delete additional data before the RetainDeletedItemsFor is reached. This is regardless of the Single Item Recovery setting, please see Recoverable Items folder in Exchange Online | Microsoft Learn.
Let’s walk through the scenario where we have a user mailbox initially with 30 GB Recoverable Items Quota and 100 GB ArchiveQuota, no archive mailbox and no litigation hold enabled. Just a reminder, in the following examples, I am using LitigationHold parameter for simplicity, but the RecoverableItemsQuota is increased for other types of holds as well.
Get-Mailbox <user> | FL Alias, ProhibitSendReceiveQuota, ArchiveQuota, RecoverableItemsQuota, LitigationHoldEnabled, ArchiveGuid, AutoExpandingArchiveEnabled
If I put the user on litigation hold, this action will increase RecoverableItemsQuota from 30 GB to 100 GB:
If I enable an archive mailbox as well, the RecoverableItemsQuota will be increased to 105 GB:
And if I enable auto-expanding archive at the mailbox level, then the RecoverableItemsQuota will be increased to 110 GB and ArchiveQuota to 110 GB as well.
Important: Once you enable auto-expanding archive, you won't be able to offboard the mailbox back to Exchange on-premises, perform a mailbox restore request or recover the mailbox back from an inactive state.
Additional resources
- Increase the Recoverable Items quota for mailboxes on hold | Microsoft Learn
- Learn about auto-expanding archiving | Microsoft Learn
- Enable auto-expanding archiving | Microsoft Learn
- Advancing Microsoft 365: New capabilities and pricing update | Microsoft 365 Blog
Thanks for reading this and hopefully you find this useful.
I would like to thank Nino Bilic and all the people that helped with this blog post and my knowledge.
Mirela Buruiana