Counting mailboxes

I’m sure that everyone admired the warm glow of achievement that broke out around Mountain View when Google reported that Gmail now has 425 million users at their annual Google I/O conference on June 28. I know that I did.

Some seconds later, after I had digested the content of the news report, my mind wandered to consider two other pertinent questions. First, how did Google count so many mailboxes (for it is surely mailboxes rather than users that they mean – and a person can have many mailboxes)? And second, how many of these mailboxes are actually used? After all, my family of five has five Gmail mailboxes, but only one is used on any consistent basis. The others are used for other purposes, such as a convenient email address to provide to the many annoying web sites that insist on gathering email addresses before they allow access. The resulting spam can then be safely ignored as it accumulates in Gmail.

Administrators of email servers will understand the need to know about mailbox data because similar questions have been asked ever since mailboxes were assigned on the earliest email systems. Of course, way back before the dawn of Internet time (in the 1980s), there was a very good reason to be concerned about mailbox numbers and their usage. System resources were so scarce and expensive that mailboxes were only allocated to the most essential users (otherwise known in most companies as the most senior management) and their mailbox access was monitored to ensure that the resource was appropriately used.


For example, the first email server I ever managed was a VAX 11/750 (above) equipped with 4MB of memory and 512MB of 2 x RM05 disks in 1982. This server supported 20 interactive users of CP/OSS, a predecessor of Digital’s successful ALL-IN-1 application, and cost some $500,000 list. When you added on expensive software and annual support, each mailbox probably cost $32,000 or more each. That was a lot of money in 1982!

Despite the 30 years that have elapsed since, today’s email servers are not particularly intelligent at informing administrators about the number of mailboxes that they support, how much data the mailboxes contain, and how often the mailboxes are accessed. Since the advent of true database portability via the Database Availability Group (DAG) in Exchange 2010, Exchange now associates mailboxes to databases rather than servers, so that’s probably the right way to frame the issue now.

It would be nice if the Microsoft developers had built a little reporting node for essential system configuration data into the Exchange Management Console (EMC) or the Exchange Control Panel (ECP). Sure, you can play around with EMC to display mailboxes in a certain order and save that data to a temporary file, but that’s not really convenient. Some reporting elements do exist, such as the much-maligned and sometimes inaccurate Client Access License (CAL) report in EMC or the mailbox and administrative audit log reporting option in ECP, but no great thought seems to have ever been given to providing administrators with an easy-to-use method to extract and print standard usage reports. Given that Exchange is now approaching twenty years of development, it’s probably a forlorn hope to anticipate that anything will change now. After all, the developers have no time as they have to do the work to give Exchange administration a Metro-style interface that’s bound to appear in Exchange 2013 given that every other Microsoft UI is being transformed in this manner.

Perhaps the lack of integral reporting is a cunning plan to make administrators engage with PowerShell. After all, you can do anything with PowerShell, can’t you? A one-liner such as the one shown below is an excellent start. The magic is in piping a collection of mailboxes (that could be filtered via server or database to make it smaller) into the Get-MailboxStatistics cmdlet and then sorting and reporting three relevant fields (mailbox display name, total size of items in the mailbox, and the last time the user logged onto the mailbox):

Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Sort-Object TotalItemSize, -Descending | Format-Table DisplayName, TotalItemSize, LastLogonTime

The code above works for both on-premises Exchange (2007 and 2010) as well as Exchange Online in Office 365. I wrote about some useful scripts that have helped me to report mailbox data for Office 365 tenant domains on May 22 but overlooked the opportunity at that time to point to a very nice script that does a really good job of reporting mailbox data extracted from on-premises Exchange 2010 servers. The script was written by Paul Cunningham, who does a great job of sharing the knowledge that he gains from his day-to-day work as an Exchange administrator on his site. Paul has just been recognized for the first time as an Exchange MVP, which is richly deserved.

I should also recognize Steve Goodman, another of the batch of new Exchange MVPs. No doubt Microsoft recognized Steve in part because of the publication of his recent book “iPhone with Exchange Server 2010 – Business Integration and Deployment”. Although the title doesn’t trip off the tongue, the book is very worthwhile if you need to manage iPhones and iPads that access Exchange 2010 mailboxes through ActiveSync.

Well done to the new Exchange MVPs and those who have been recognized again. And to those who didn’t make the grade this year, keep on plugging away to work your way back.

Follow Tony @12Knocksinna

Hide comments


  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.