OUTBOX: Understanding the Exchange store and CDO 1.21

This is from an email I send out this morning after a discussion about CDO 1.21 and the Exchange store structure in Exchange 2000/2003…


Understanding the Exchange store and messaging APIs


The following article gives a great overview of how MAPI and CDO 1.21 communicate with the Exchange store and Active Directory…

How Outlook, CDO, MAPI, and Providers Work Together


It is also very important to understand that in Exchange 2000 and 2003 there are two databases that our APIs work against.  WebDAV, CDOEX, and ExOLEDb are web store APIs and work against the streaming database file.  MAPI, CDO 1.21, and Outlook Object Model work against the MAPI database file.  It is important to understand that these APIs access different databases as well as implement their own varying levels of business logic to work with special item types like appointments, contacts, and tasks.


The following article explains the relationship between the two databases…




Understanding CDO 1.21


CDO 1.21 is a MAPI based COM API that implements business logic to handle contacts and appointments as well as regular mail items.  Outlook <= 2003 ships CDO 1.21, the later versions have shipped it as an optional install.  Exchange server installations and Exchange System Manager only installations also install CDO 1.21.  These are NOT the same dlls and are maintained (for the most part) independently by the different product teams.  Therefore they are product specific and are not to be copied manually to another machine and not to be mixed and matched by installing Outlook on top of Exchange or vice versa.


In Outlook 2000 SP 3 CDO 1.21 was “enhanced” to include security warning dialogs as was Outlook Object Model.  The Exchange version of CDO has no dialogs in it.  In Outlook 2003, the dynamic profile functionality (mmp files) was removed from CDO 1.21.  The Exchange server version however, continues to support dynamic profiles.  The Outlook version of CDO 1.21 supports Kerberos authentication which can get you around a double-hop scenario while the Exchange version does not.  This means that an ASP application running on a separate web server using Exchange’s CDO 1.21 will not pass credentials received from the client from the web server to the Exchange server.  Since Outlook’s CDO 1.21 supports Kerberos it might be a natural choice to run in this web server configuration but it is not since it can’t do dynamic profiles and relies on the HKCU for profile information as well as its potential to launch dialogs.


Here is a handy chart…

                                    Kerberos           MMP files         Dialogs

*Out CDO 1.21  ||           Yes                  No                    Yes

 Ex CDO 1.21    ||           No                    Yes                  No


* Here we are assuming Outlook 2003, prior to Outlook 2003 it would be Yes, Yes, Yes


In Outlook 2007, we no longer ship CDO 1.21.  It is available as a separate download only.  This download is based on the Exchange version of so see the above chart to understand what it is capable of.  In Exchange 2007 we neither ship MAPI nor CDO 1.21 with the server installs or management console installs.  We have a download available that will install MAPI and CDO 1.21 if you need it on your Exchange server or you can use this to install MAPI and CDO 1.21 on a machine that has neither Exchange nor Outlook installed on it.  This too is the Exchange version of MAPI and CDO 1.21, see the chart above.


Also read…

Differences between CDO, Simple MAPI, and Extended MAPI

Updated 1/22/2009 – Updated and fixed some links.

Comments (1)

  1. A couple notes from the field as we enter the window of time that is DST 2007… Due to the security