Microsoft has announced that Office 365 (Exchange Online) now supports up to 150MB email messages. This is quite a large increase from the previous limit of 25MB (actually 35MB, I’ll explain why shortly) and no doubt will be a welcome change for many customers.

The previous limits were a deployment blocker for some customers that I’ve worked with who either had a higher limit for their general user population (often more like 50MB) or who had a few specific mailboxes that needed to receive very large emails (often a system-monitored mailbox). While I am generally of the opinion that email is a poor transport mechanism for large files I can understand how the modern era of fast networks, cheap storage capacity, and the convenience of email all come together to create the situation where large email attachments become a requirement.

Before we go any further let me point out that just because you can set a message size limit of 150MB, it doesn’t mean you necessarily should. By all means increase the message size limit to suit your business, but don’t just crank it right up to 150MB for the sake of it. Consider the impacts this will have on your network bandwidth, client performance, on-premises infrastructure (if you’re running a Hybrid configuration), journalling, and the fact that you’ll more often than not find that other companies you’re emailing support a far smaller message size limit. All of this may actually lead to a poor experience for your users, and an increase in support requests for you.

I suspect the new 150MB limit is not due to Microsoft endorsing the use of email for sending big files. The more likely reason in my view is that it is large enough number to completely silence any customer complaints (and therefore remove the burden of those support calls) about the previous limits.

With that said, let’s look at how you can configure the message size limit in Exchange Online.

Comparisons with On-Premises Exchange Server

As many of you already know there are multiple places that message size limits can be applied for an on-premises Exchange Server environment. These include:

Organization-wide transport config

Send/receive connectors

AD site links

Individual recipients

As a general rule organizations tend to apply a consistent limit across all of those settings, however the capability is certainly there to customize the configuration to suit nearly any scenario that arises (for example, preventing large email messages from being sent to very large distribution groups).

With Exchange Online we get far less administrative control as the customer than we do for on-premises Exchange. There’s no access to send/receive connectors or AD site links. And although we can see the transport configuration (which has unlimited max send/receive limits) we can’t make any changes to those settings.

PS C:\Scripts> Get-TransportConfig | fl maxreceivesize,maxsendsize MaxReceiveSize : Unlimited MaxSendSize : Unlimited 1 2 3 4 PS C : \ Scripts > Get - TransportConfig | fl maxreceivesize , maxsendsize MaxReceiveSize : Unlimited MaxSendSize : Unlimited

This is why, as Microsoft explained in their announcement, we need to configure the message size limits on a per-mailbox basis.

Using Mailbox Plans to Configure a Default Max Message Size Limit

The settings applied to new mailboxes that we create in Exchange Online come from the mailbox plan. When you connect to Exchange Online with PowerShell you can see the mailbox plans for your tenant.

PS C:\Scripts> Get-MailboxPlan | fl name,maxsendsize,maxreceivesize,isdefault Name : ExchangeOnlineDeskless-f941c750-22ce-401e-8c1a-9c64bd2cff41 MaxSendSize : 35 MB (36,700,160 bytes) MaxReceiveSize : 36 MB (37,748,736 bytes) IsDefault : False Name : ExchangeOnline-39e6f97b-82c8-4b18-9d0a-eb6e24418584 MaxSendSize : 35 MB (36,700,160 bytes) MaxReceiveSize : 36 MB (37,748,736 bytes) IsDefault : False Name : ExchangeOnlineEnterprise-f32821d4-90a3-4c6b-ab75-56f35adb3bfb MaxSendSize : 35 MB (36,700,160 bytes) MaxReceiveSize : 36 MB (37,748,736 bytes) IsDefault : True 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 PS C : \ Scripts > Get - MailboxPlan | fl name , maxsendsize , maxreceivesize , isdefault Name : ExchangeOnlineDeskless - f941c750 - 22ce - 401e - 8c1a - 9c64bd2cff41 MaxSendSize : 35 MB ( 36 , 700 , 160 bytes ) MaxReceiveSize : 36 MB ( 37 , 748 , 736 bytes ) IsDefault : False Name : ExchangeOnline - 39e6f97b - 82c8 - 4b18 - 9d0a - eb6e24418584 MaxSendSize : 35 MB ( 36 , 700 , 160 bytes ) MaxReceiveSize : 36 MB ( 37 , 748 , 736 bytes ) IsDefault : False Name : ExchangeOnlineEnterprise - f32821d4 - 90a3 - 4c6b - ab75 - 56f35adb3bfb MaxSendSize : 35 MB ( 36 , 700 , 160 bytes ) MaxReceiveSize : 36 MB ( 37 , 748 , 736 bytes ) IsDefault : True

Notice that one of the plans is the default, and will be applied to new mailbox users when they are created.

Another way to look at this is to group mailboxes by mailbox plan.

PS C:\Scripts> Get-Mailbox | Group-Object -Property:MailboxPlan | Select Name,Count | ft -auto Name Count ---- ----- ExchangeOnlineEnterprise-f32821d4-90a3-4c6b-ab75-56f35adb3bfb 25 1 1 2 3 4 5 6 PS C : \ Scripts > Get - Mailbox | Group - Object - Property : MailboxPlan | Select Name , Count | ft - auto Name Count -- -- -- -- - ExchangeOnlineEnterprise - f32821d4 - 90a3 - 4c6b - ab75 - 56f35adb3bfb 25 1

Interestingly I seem to have one mailbox there with no mailbox plan. As it turns out that is the discovery search mailbox, so we don’t need to worry about that one.

PS C:\Scripts> get-mailbox | where {$_.mailboxplan -eq $null} Name Alias ServerName ProhibitSendQuota ---- ----- ---------- ----------------- DiscoverySearchMailbox... DiscoverySearchMa... sixpr04mb015 50 GB (53,687,091,200 bytes) 1 2 3 4 5 PS C : \ Scripts > get - mailbox | where { $ _ . mailboxplan - eq $ null } Name Alias ServerName ProhibitSendQuota -- -- -- -- - -- -- -- -- -- -- -- -- -- -- -- -- -- - DiscoverySearchMailbox . . . DiscoverySearchMa . . . sixpr04mb015 50 GB ( 53 , 687 , 091 , 200 bytes )

So, let’s say that I want to set a send/receive message size limit of 55MB for new mailboxes when they are created. The mailbox plan can be updated with that new setting as follows.

PS C:\Scripts> Set-MailboxPlan ExchangeOnlineEnterprise-f32821d4-90a3-4c6b-ab75-56f35adb3bfb -MaxSendSize 55MB -MaxReceiveSize 55MB 1 PS C : \ Scripts > Set - MailboxPlan ExchangeOnlineEnterprise - f32821d4 - 90a3 - 4c6b - ab75 - 56f35adb3bfb - MaxSendSize 55MB - MaxReceiveSize 55MB

Remember, you’ll need to determine the exact name of your mailbox plan when you run that command.

Managing Message Size Limits for Existing Mailboxes

Although I’ve updated my mailbox plan above, existing mailboxes still have the previous settings applied. A change to the mailbox plan has no impact on existing mailboxes.

PS C:\Scripts> Get-Mailbox Alan.Reid | fl mailboxplan,maxsendsize,maxreceivesize MailboxPlan : ExchangeOnlineEnterprise-f32821d4-90a3-4c6b-ab75-56f35adb3bfb MaxSendSize : 35 MB (36,700,160 bytes) MaxReceiveSize : 36 MB (37,748,736 bytes) 1 2 3 4 5 PS C : \ Scripts > Get - Mailbox Alan . Reid | fl mailboxplan , maxsendsize , maxreceivesize MailboxPlan : ExchangeOnlineEnterprise - f32821d4 - 90a3 - 4c6b - ab75 - 56f35adb3bfb MaxSendSize : 35 MB ( 36 , 700 , 160 bytes ) MaxReceiveSize : 36 MB ( 37 , 748 , 736 bytes )

To modify a single mailbox we can simply run Set-Mailbox as follows.

PS C:\Scripts> Set-Mailbox Alan.Reid -MaxReceiveSize 55MB -MaxSendSize 55MB 1 PS C : \ Scripts > Set - Mailbox Alan . Reid - MaxReceiveSize 55MB - MaxSendSize 55MB

If you need to modify all of your mailboxes you can pipe Get-Mailbox into Set-Mailbox as follows.

PS C:\Scripts> Get-Mailbox -Resultsize Unlimited | Set-Mailbox -MaxReceiveSize 55MB -MaxSendSize 55MB 1 PS C : \ Scripts > Get - Mailbox - Resultsize Unlimited | Set - Mailbox - MaxReceiveSize 55MB - MaxSendSize 55MB

Naturally that means you can update any subset of your users by filtering the output of Get-Mailbox first. If you’re not sure, just run your Get-Mailbox command first and make sure it is only returning the mailboxes you want to modify before you start piping it into Set-Mailbox.

Message Size Limits != Attachment Size Limits

As always you need to be aware that this setting controls the maximum message size, not the maximum attachment size. An email message is bigger than just the files that are attached to it, thanks to the message content itself as well as other data that is piled on. Or as Microsoft describes it, “overhead needed for encoding, encapsulation, compression and decompression of larger messages.”

This is why the previous Exchange Online message size limit of 25MB was actually implemented as a 35MB limit. 25MB was advertised on the Exchange Online service description, but the extra 10MB of growth allowance was added for growth allowance.

In your career as an email administrator you’ll have many conversations with an end users about this. Just remember to include that growth allowance when configuring the maximum message size, because whatever you tell your users will inevitably be interpreted by them as the maximum attachment size.

Additional Notes

Microsoft limits our administrative control in Exchange Online in many interesting ways. For example, we can use Set-MailboxPlan to modify the max send/receive message sizes, but many of the other mailbox plan settings can’t be modified.

Also, Microsoft limits the values that we can set for max send/receive message size. For example, if I try to set the limit to 200MB I get this error.

PS C:\Scripts> Set-MailboxPlan ExchangeOnlineEnterprise-f32821d4-90a3-4c6b-ab75-56f35adb3bfb -MaxSendSize 160MB The operation on mailbox "ExchangeOnlineEnterprise-f32821d4-90a3-4c6b-ab75-56f35adb3bfb" failed because it's out of the current user's write scope. The value of property 'MaxSendSize' cannot exceed the limit of 150 MB. 1 2 3 PS C : \ Scripts > Set - MailboxPlan ExchangeOnlineEnterprise - f32821d4 - 90a3 - 4c6b - ab75 - 56f35adb3bfb - MaxSendSize 160MB The operation on mailbox "ExchangeOnlineEnterprise-f32821d4-90a3-4c6b-ab75-56f35adb3bfb" failed because it 's out of the current user' s write scope . The value of property 'MaxSendSize' cannot exceed the limit of 150 MB .

Not particularly relevant, I just find it interesting. Mailbox plans are very useful, I would like to see them come to on-premises Exchange Server in future, as I know many customers who have had to write extensive custom scripts to handle customizations to the default settings of mailboxes when they are being provisioned, and maintaining them over the life of the mailbox.

Summary

Microsoft has listened to their Office 365 customers and increased the message size limits in Exchange Online. As you can see configuring the new settings is quite simple both for existing mailboxes and for those configured in future. However, I do recommend you proceed with caution and avoid causing more problems than you solve by increasing the limit too much for your environment.