In Part 2 I showed some details about Mailbox Rule corruptions that can disturb Mailbox Moves.

For this part the topic is Mailbox size, which can be an important factor in deciding which mailboxes you want to move first.

In my case the mailbox size was important because we agreed to move smaller mailboxes during the day but larger mailboxes only outside working hours.

For Exchange 2010 mailboxes it’s very easy to obtain the size using PowerShell.

Example:

DisplayNameItemCountTotalItemSize
Remko Weijnen31334.87 MB (36,564,183 bytes

But how can we get the Mailbox Size for Exchange 2003 mailboxes?

 

Using OutlookSpy we can see where this information can be read programmatically.

Select the Inbox and click IMAPIFolder, then inspect the PR_MESSAGE_SIZE property:

image

There is one problem however, the type of this property is PT_LONG which is a 4 byte Integer. The maximum value it can hold is 2147483647 (2 GigaByte) after which it will overflow to -1.

With Outlook 2003 SP1 and higher we can use the PR_MESSAGE_SIZE_EXTENDED property which is a 64 bit Integer.

I wrote a PowerShell function (requires Redemption) that creates a dynamic MAPI profile, logs on to the desired Mailbox and returns the Mailbox Size: