This is a part 2 of my 3 part series on Mailbox Manager, please go here to read the part 1!
There is a task (CMBCleanTask) within MAD.EXE that runs every 15 minutes and figures out if the schedule information says it is now time to run. The schedule is controlled by the attributes msExchMailboxManagerActivationStyle and msExchMailboxManagerActivationSchedule on the server object in the DS.
The values for 'style' are:
0 = Never
1 = Schedule
2 = Always
3 = Custom
If we determine that we need to run, MAD starts the Clean Mailbox function to do the actual work. When this function is called, we first look in each of the databases on the server for mailboxes. Based on the mailboxes this process found, it then queries Active Directory to see what user has a Mailbox Manager Policy applied to them. Once the user's policies have been identified, we then, based on how that policy is configured, go in to each mailbox and clean them accordingly. Once a mailbox is processed, an email notification is sent to the end user, if configured. At the end of the process, we send the administrator report, whether it is a detailed or a summary report. This report beginning with Exchange 2000 SP3 and later is sent via an authenticated MAPI logon using LocalSystem. Versions prior to Exchange 2000 SP3 used CDO for sending this report and needed anonymous authentication on the SMTP Virtual Server to relay properly.
How do we calculate if we process a message?
This calculation is determined by the following three MAPI properties on a message. If any one of these properties is less than the limit set by the Mailbox Manager rules, then we will skip that message.
- PR_MESSAGE_DELIVERY_TIME
- PR_CLIENT_SUBMIT_TIME
- PR_LAST_MODIFICATION_TIME
For a message to be moved or deleted by Mailbox Manager, all three of the above properties need to exceed the limit that has been set on the policy. So if you have a policy that states that any message in your Inbox older than 30 days needs to get cleaned by the Mailbox Manager process, we check the above properties and if all are greater than 30 days, we go ahead and clean that message. For other message classes such as Appointments, Task, Journal items, etc., we perform additional checks and look at different MAPI properties during this cleaning process. More information regarding those other checks can be found at http://support.microsoft.com/?id=302804
When Mailbox Manager first came out back in Exchange 5.5, we based the above calculation different than what we do in Exchange 2000 or Exchange 2003. We used to base this on the PR_MESSAGE_DELIVERY_TIME of a message only. There are some instances where you would like to base the cleaning on this property alone. This can be modified by changing the value for msExchMailboxManagerAgeLimit on the Mailbox Manager policy to a value of 3. All possible modifications to this value can be found here.
Below is a listing of attributes associated with Mailbox Manager Policies:
Policy Attributes
msExchMailboxManagerAgeLimit
msExchMailboxManagerCustomMessage
msExchMailboxManagerFolderSettings
msExchMailboxManagerKeepMessageClasses
msExchMailboxManagerMode
msExchMailboxManagerSendUserNotificationMail
msExchMailboxManagerSizeLimit
msExchMailboxManagerSizeLimitEnabled
msExchMailboxManagerUserMessageBody
msExchMailboxManagerUserMessageFooter
msExchMailboxManagerUserMessageHeader
Server Attributes
msExchMailboxManagerActivationStyle
msExchMailboxManagerActivationSchedule
msExchMailboxManagerMode
msExchMailboxManagerReportRecipient
You Had Me at EHLO.