Managing Mailbox Size and Limit on Exchange Server 2016

One of the important tasks of an Exchange administrator is controlling mailbox sizes. It is very difficult to force users to voluntarily limit the size of their mailbox, so you have to use mail server quotas. Typically, mailbox quotas in Exchange Server are defined at the database level and apply to all mailboxes that are stored in this database. This is very convenient, since you know for sure that in a particular database all the boxes have the same data retention policy.

You can view the quota settings for the lonDB1 database with the command:

Get-MailboxDatabase -Identity lonDB1 | fl *quota

exchange 2016 mailbox size limit

As you can see, the mailbox has three levels of size restrictions:

  • IssueWarningQuota—if the mailbox size is equal to or greater than the specified value, a warning is sent to the user of this mailbox;
  • ProhibitSendQuota—if the mailbox size reaches the specified value or exceeds it, the mailbox user on the Exchange server won’t be allowed to send new emails, and an error message will be displayed;
  • ProhibitSendReceiveQuota—if this value is exceeded, the user won’t be allowed to send new emails, and no more messages will be delivered to this mailbox. Messages sent to this mailbox will be returned to the sender with an appropriate error message (NDR).

By default, quotas for a new mailbox database are not set. To change database quotas, you can run the following command:

Set-MailboxDatabase -Identity lonDB1 -IssueWarningQuota 1.8GB -ProhibitSendQuota 2GB -ProhibitSendReceiveQuota 2.3GB

exchange 2016 mailbox size

You can also configure mailbox quotas from the Exchange admin center (EAC) web interface. To do this, go to the section Servers > Databases > select the required database > Properties > set the necessary quotas on the Limits tab.

set mailbox quota exchange 2016 powershell

Database restrictions apply to all mailboxes that are in this database. But the standard quota values are not suitable for everyone, so the Exchange administrator periodically has to change the quota settings for the individual users. To change quota setting for the user jsmith use the following command:

Set-Mailbox -Identity jsmith -IssueWarningQuota 15GB -ProhibitSendQuota 18GB -ProhibitSendReceiveQuota 20GB -UseDatabaseQuotaDafaults $false

exchange 2016 mailbox quota

To display the current quota settings for the mailbox, run:

Get-Mailbox -Identity jsmith  | fl IssueWarningQuota,ProhibitSendQuota,ProhibitSendReceiveQuota,UseDatabaseQuotaDafaults

Mailbox quota settings can also be changed from EAC (Recipients > Mailboxes > Properties > Mailbox usage > Customize the quota settings for this mailbox).

increase mailbox size exchange 2016 powershell

Please note that in Exchange itself there are no technical restrictions on the size of the box. For Outlook, the size of the mailbox is limited to the maximum size of the data file and is 50GB by default, but you can change this value if necessary (see the article).

In order not to get confused in quotas on the mailboxes specified manually, it is recommended to use several databases with different quotas and, if necessary, to increase the user mailbox, simply migrate it to another database with large quotas.


Changing the quota per mailbox in Exchange 2016 is not immediately applied. You need to wait 2-3 hours or execute the Update-StoreMailboxState [UserName] command.

Also note that mailbox quotas are treated differently in Exchange Server 2013/2016 and Exchange Server 2010. In 2016, the quota includes all service information and deleted items, and in 2010 only the user information.

Periodically, it is necessary to perform an analysis of mailbox sizes: either simply to control the use of resources, or to revise the quota policy, or when preparing for the migration to a new system.

To analyze the current mailbox sizes in Exchange Server 2016, you can use the following PowerShell script:

$MBXs=Get-MailBox -ResultSize Unlimited | % { Get-MailboxStatistics $_.Identity} | Select  DisplayName,TotalItemSize  | Sort-Object -Property TotalItemSize -Descending

$MBXItem=$MBXs | % {«$($_.DisplayName),$($_.TotalItemSize.Value.ToBytes())«}

$MBXItem | Out-File c:\PS\MailboxLimits.csv

The resulting CSV file can be easily imported into Excel and analyzed.

I enjoy technology and developing websites. Since 2012 I'm running a few of my own websites, and share useful content on gadgets, PC administration and website promotion.
Latest posts by Cyril Kardashevsky (see all)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.