Monday, December 20, 2004

Exchange Special Mailboxes Part 1 - System Mailbox

Evan Dodds has done a great job explaining in part 1 the System Mailbox.  For all those curious...

Every now and then, people ask about one (or all) of the system-related mailboxes on Exchange 2003 servers. There are actually three in particular that people frequently notice and confuse: SystemMailbox{guid}, System Attendant Mailbox, and SMTP (servername-{guid}) Mailbox. There are a bunch of common questions, which I will try to address in the next few posts.



What is it and what is it used for?


In the SystemMailbox{guid} mailbox you can find the following structure:


 Private Store - Schema-root Hierarchy


and, underneath “Top of Information Store”:


 Private Store - Store Events Hierarchy


The schema-root hierarchy of folders provide the structure for defining the schema (which is principally stored in the exchangeV1 folder). The StoreEvents hierarchy holds any ExOleDB (“store”) event sinks attached to this mailbox store. Note that MAPI public folder stores also have roughly this same set of folders – one schema-root per hierarchy and a StoreEvents folder for each public folder store, possibly explaining many of those extraneous folders you’ve seen in your NON_IPM_SUBTREE!


Where can it be found?


There are two parts to each SystemMailbox – the mailbox itself, and an associated directory object. The mailbox object is located in its respective mailbox store. The directory object is located in the Microsoft Exchange System Objects (MESO) folder of the AD, along with all the other public folder and system directory objects. You may have to turn on Advanced view in AD Users and Computers to see this folder at the root of the domain naming context.


What is the GUID?


The GUID in the SystemMailbox{guid} format is the “objectGUID” of the mailbox store with which this SystemMailbox object is associated. This can be useful to know if you have a couple of different SystemMailbox{guid} directory objects sitting in the MESO container and you want to know which one relates to a particular MDB store.


When does it get created?


Whenever you mount a mailbox store, one of the checks it runs through is whether or not a SystemMailbox{guid} object is in place. If it can’t find one, it looks in the directory for the SystemMailbox{guid} directory object within the MESO container, and then piggy-backs off that to create the SystemMailbox{guid} mailbox object within the mailbox store.


Can it be moved and/or how do I recreate it?


There shouldn’t be any need to move it – remember, each MDB has its own GUID associated with a particular instance of SystemMailbox{guid}.


Following the train of thought in the “When does it get created?” question, if the directory object is missing, this won’t work and the mailbox object will not be created. In that case, you may want to have a look at KB.316622 which will walk you through recreating this directory object.


What happens if I don’t have a proper SystemMailbox{guid}?


If you don’t have a fully functioning SystemMailbox{guid} in place, there’s a very good chance EXOLEDB event sinks will not function.

No comments: