When you create a new mailbox in Exchange Online, that mailbox comes with specific settings, features, and protocols enabled. As an Office 365 administrator, you have the ability to go back and modify these settings later if - for instance - you don't want users to have their default mailbox size limit set at 100 GB, or if you want a specific retention policy applied to that mailbox.
If you'd like to take the next step with such customizations and have them automatically applied to mailboxes, then this is the blog post for you. The Office 365 roadmap shows that Microsoft is in the process of making enhancements to mailbox plans.
In this article, I am going to dive into mailbox plans as they currently exist in Exchange Online. While the specific information in this blog post may change with mailbox plan enhancements, by following the process I outline here, you will be able to explore and understand these features regardless of what changes are made.
What are mailbox plans?
Mailbox plans are configuration templates that apply to new Exchange Online mailboxes, but are not available in the on-premises version of Exchange.
Mailbox plans can be viewed and modified with a set of PowerShell commands. To find out what mailbox-plan-related cmdlets I had available in my Office 365 tenant, I ran the PowerShell cmdlet “Get-Command” as shown below.
As you can see, I have “Get-MailboxPlan” and “Set-MailboxPlan” available, but I also have two other PowerShell cmdlets “Get-CASMailboxPlan” and “Get-UMMailBoxPlan”, with no corresponding “Set-“ cmdlets. We'll get back to the CAS and UM versions of mailbox plans later in this post. For now, let's look at the regular mailbox plan cmdlets.
What can I do with Get-MailboxPlan and Set-MailboxPlan?
If you run the “Get-MailboxPlan” cmdlet in your Exchange Online PowerShell session, you will see that you have four mailbox plans set up. If you run “Get-MailboxPlan” for one of the plans listed and pipe the output to “Format-List”, you will get a lot of information, most of which you will not have access to modify.
To figure out what you can change in a mailbox plan, you need to look at the “Set-MailboxPlan” cmdlet. In the screenshot below, I ran “Get-Command” against “Set-MailboxPlan”, but only displayed the parameters to which I have access within that cmdlet.
Ignoring the standard parameters of this cmdlet, here are properties of a mailbox plan that I can modify:
In the screenshot below, I went back to “Get-MailboxPlan” to see what the default settings are for my mailbox (which is using the “ExchangeOnlineEnterprise” mailbox plan).
In the next screenshot, you can see I decided to set the "MaxSend" and "MaxReceive" parameters to 150 MB for the mailbox plan that I use.
Now, newly-created mailboxes in my tenant that utilize this mailbox plan can send and receive attachments up to 150 MB in size. Additionally, I can modify the mailbox quota or even the single-item retention period. The mailbox quota can only go down, but the single-item retention period can be turned up to a maximum of 30 days.
What is a CAS Mailbox Plan?
Like a mailbox plan, a CAS mailbox plan controls the settings that are applied to mailboxes on creation. The difference is what settings the CAS mailbox plan controls. There used to be a “Set-CASMailboxPlan” cmdlet in Exchange Online, but recent changes in the service have removed that cmdlet. That means these settings cannot be made on a universal level. There is still a cmdlet for “Get-CASMailboxPlan”, but I do not have a cmdlet for “Set-CASMailboxPlan” in my tenant.
The parameters for “Set-CASMailbox” are shown in the screenshot below.
This are several more parameters—meaning so more control—than the old “Set-CASMailboxPlan” cmdlet. Taking out the standard parameters, “Set-CASMailbox” allows you to modify the following properties of a mailbox:
That’s 30 parameters, as opposed to the four from “Set-CASMailboxPlan”. I won't go into detail for what each of these parameteres does, especially since most are self-describing anyway.
In the past, there was a CAS mailbox plan that had the matching GUIDs for the mailbox plans. They seemed to be assigned together, but I don’t really have a way to confirm how it used to work.
Now, running “Get-CASMailboxPlan” only has one plan set up in my tenant, and I unfortunately do not have PowerShell commands to add a second CAS mailbox plan.
Hopefully, Microsoft will add “Set-CASMailboxPlan” back into Exchange Online soon. Until then, the best option to control these settings on a tenant-wide basis is to run “Get-Mailbox” and pipe that cmdlet to “Set-CASMailbox” with the changes you wish to implement. This, however, will only work for mailboxes that already exist, so you will need to re-do that process as new mailboxes are created within your tenant.
What is a UM Mailbox Plan?
Like the CAS mailbox plan, UM mailbox plans do not currently have a "Set-" command in my tenant. The screenshot below shows the parameters of “Set-UMMailbox”.
Here is a list of actionable parameters:
Again, there is no “Set-UMMailboxPlan” cmdlet in my tenant, but there is a “Set-UMMailboxPolicy” cmdlet.
I am unsure of what Microsoft's long-term plans are here with these mailbox plan customizations... Maybe “Set-UMMailboxPolicy” will be replaced with “Set-UMMailboxPlan” eventually to keep the naming consistent. If I had to guess, I doubt that will happen as it seems the long-term plan for Unified Messaging is to move those features out of Exchange Online and into their own separate services.
It's a little hazy as to what enhancements Microsoft wishes to make with mailbox plans within Office 365. I do hope that “Set-CASMailboxPlan” will come back into the service with additional parameters and that perhaps “Set-UMMailboxPolicy” will change to “Set-UMMailboxPlan”.
The specifics of those cmdlets are not what’s important here. What is far more important is that we Office 365 administrators know how to investigate PowerShell cmdlets to really understand what functionality they provide.