Exchange protocol documentation now available

Per the announcement on Tuesday (08 Apr), Microsoft has released a lot of new documentation for various Exchange and Outlook-Exchange protocols. This is some cool stuff -- just check out the list of what's available. However, as the web site warns, it's preliminary documentation. If you don't believe them, when you download the files (available in PDF format) the big fat "PRELIMINARY" watermark (in very bold font) will help remind you.[1]

I can already hear some of you out there: "So Microsoft released documentation on obscure or unimportant Exchange protocols. Big deal. I bet they've saved all the good stuff for licensing!" Well, I'm not going to deny that this is a complete set of documentation for every Exchange protocol you might ever want to know about -- after all, Microsoft is a company who believes in the value of intellectual property. They've kinda built a business plan around it, and it's both foolish and naive to somehow assume that they're just going to toss all of that overboard overnight. It's not even reasonable to expect them to completely abandon that position; it's an arguable proposition that Open Source principles work best in conjunction with an IP scheme that permits open licensing when the developers feel invested in doing so, alongside more restrictive licensing schemes. But that's a religious argument for another day.

This will be a long post. I'm going to split it into three sections: Appetizers, Main Course, and What's Missing.

Section 1: Appetizers

First, we have some housekeeping and overview documents and protocols:

Name Description
MS-CAB Cabinet File Format
MS-MCI MCI Compression and Decompression
MS-OXDOCO Outlook-Exchange Protocol Document Roadmap
MS-OXGLOS Office Exchange Protocols Master Glossary
MS-OXPROTO Office Exchange Protocols Overview
MS-OXREF Office Exchange Protocols Master Reference
MS-PATCH LZX DELTA Compression and Decompression

You may have noticed that these documents include a few things that aren't strictly Exchange or Outlook-specific, such as the CAB file format and various compression protocols. Just remember that the Exchange protocol documentation is part of a wider set of Interoperability Principles, and so it depends on technologies that are part of the more generic set of Windows technologies.

Section 2: Main Course

Okay, with roadmaps and preliminaries out of the way, let's take a look at the meat:

Name Description
MS-NSPI Name Service Provider Interface (NSPI) Protocol Specification
MS-OXABREF Address Book Name Service Provider Interface (NSPI) Referral Protocol Specification
MS-OXBBODY Best Body Retrieval Protocol Specification
MS-OXCDATA Data Structures Protocol Specification
MS-OXCETF Enriched Text Format (ETF) Message Body Conversion Protocol Specification
MS-OXCFOLD Folder Object Protocol Specification
MS-OXCFXICS Bulk Data Transfer Protocol Specification
MS-OXCICAL iCalendar to Appointment Object Conversion Protocol Specification
MS-OXCMAIL RFC2822 and MIME to E-mail Object Conversion Protocol Specification
MS-OXCMSG Message and Attachment Object Protocol Specification
MS-OXCNOTIF Core Notifications Protocol Specification
MS-OXCPERM Exchange Access and Operation Permissions Specification
MS-OXCPRPT Property and Stream Object Protocol Specification
MS-OXCROPS Remote Operations (ROP) List and Encoding Protocol Specification
MS-OXCRPC Wire Format Protocol Specification
MS-OXCSPAM Spam Confidence Level, Allow and Block Lists Protocol Specification
MS-OXCSTOR Store Object Protocol Specification
MS-OXCSYNC Mailbox Synchronization Protocol Specification
MS-OXCTABL Table Object Protocol Specification
MS-OXDISCO Autodiscover HTTP Service Protocol Specification
MS-OXDSCLI Autodiscover Publishing and Lookup Protocol Specification
MS-OXIMAP4 Internet Message Access Protocol Version 4 (IMAP4) Extensions Specification
MS-OXLDAP Lightweight Directory Access Protocol (LDAP) Version 3 Extensions Specification
MS-OXMSG .MSG File Format Specification
MS-OXMVMBX Mailbox Migration Protocol Specification
MS-OXOAB Offline Address Book (OAB) Format and Schema Protocol Specification
MS-OXOABK Address Book Object Protocol Specification
MS-OXOABKT Address Book User Interface Templates Protocol Specification
MS-OXOCAL Appointment and Meeting Object Protocol Specification
MS-OXOCFG Configuration Information Protocol Specification
MS-OXOCNTC Contact Object Protocol Specification
MS-OXODLGT Delegate Access Configuration Protocol Specification
MS-OXODOC Document Object Protocol Specification
MS-OXOFLAG Informational Flagging Protocol Specification
MS-OXOJRNL Journal Object Protocol Specification
MS-OXOMSG E-mail Object Protocol Specification
MS-OXONOTE Note Object Protocol Specification
MS-OXOPFFB Public Folder Based Free/Busy Protocol Specification
MS-OXOPOST Post Object Protocol Specification
MS-OXORMDR Reminder Settings Protocol Specification
MS-OXORMMS Rights-Managed E-mail Object Protocol Specification
MS-OXORSS RSS Object Protocol Specification
MS-OXORULE E-mail Rules Protocol Specification
MS-OXOSFLD Special Folders Protocol Specification
MS-OXOSMIME S/MIME E-mail Object Protocol Specification
MS-OXOSMMS SMS and MMS Object Protocol Specification
MS-OXOSRCH Search Folder List Configuration Protocol Specification
MS-OXOTASK Task-Related Objects Protocol Specification
MS-OXOUM Voice Mail and Fax Objects Protocol Specification
MS-OXPFOAB Offline Address Book (OAB) Public Folder Retrieval Protocol Specification
MS-OXPHISH Phishing Warning Protocol Specification
MS-OXPOP3 Post Office Protocol Version 3 (POP3) Extensions Specification
MS-OXPROPS Office Exchange Protocols Master Property List Specification
MS-OXPSVAL E-mail Postmark Validation Protocol Specification
MS-OXRTFCP Rich Text Format (RTF) Compression Protocol Specification
MS-OXRTFEX Rich Text Format (RTF) Extensions Specification
MS-OXSHARE Sharing Message Object Protocol Specification
MS-OXSMTP Simple Mail Transfer Protocol (STMP) Mail Submission Extensions Specification
MS-OXTNEF Transport Neutral Encapsulation Format (TNEF) Protocol Specification
MS-OXWAVLS Availability Web Service Protocol Specification
MS-OXWOAB Offline Address Book (OAB) Retrieval Protocol Specification
MS-OXWOOF Out of Office (OOF) Web Service Protocol Specification
MS-OXWUMS Voice Mail Settings Web Service Protocol Specification
MS-XJRNL Journal Record Message Format Protocol Specification
MS-XLOGIN SMTP Protocol AUTH LOGIN Extension Specification
MS-XWDVSEC Web Distributed Authoring and Versioning (WebDAV) Protocol Security Descriptor Extensions Specification

On first glance, that's an impressive list. NSPIs, S/MIME, SMTP and POP3 extensions, RTF extensions, TNEF -- the list goes on. There's a lot of seriously crunchy material here. The question of the moment, though, is "just how detailed is all this documentation?"

Good question.

I haven't had time to look through it all in a lot of detail. To be honest, I suspect that a lot of it is in areas that I wouldn't be able to catch any glaring omissions or discrepancies (sorry, readers, I'm just not up on the latest specs for RTF). However, I did take a quick look through MS-XLOGIN, "SMTP Protocol AUTH LOGIN Extension Specification"[2], since I'm reasonably familiar with SMTP.

Let me skip to the chase: yup, this is preliminary work. On whole, it does a good job of documenting the flow of the LOGIN extension (which people have already mostly figured out how it works through years of careful protocol analysis). The most complicated part of it is that you're using Base64 to encode the credentials being passed -- not rocket science. However, there are some gaps in this straightforward documentation:

  • Nowhere did I find any guidance on what the user and passwords challenges are supposed to be computed on (only that they are to be Base64 encoded). This makes it more difficult to properly code a LOGIN implementation.
  • The samples they gave look like valid Base64, but according to my quick conversion tests in PowerShell, they aren't. I can't get any of the sample values to match what they should. Again, this means I can't work backwards to get the missing data.

I really hope this is the kind of stuff they're going to fix between this release and the final release, because without it, this documentation isn't nearly as useful as it could be. Some would even accuse it of being provided merely to give the appearance of interoperability while still keeping enough implementation details close to the chest to keep it from really happening. I, however, subscribe to the philosophy that one should never initially ascribe to malice what can be explained through other possibilities -- and I've done enough work on these sorts of projects to know that getting the right level of detail in a document like this is far from a no-brainer, especially if you're dealing with contractors or are having to generate the documentation after the fact. (I don't know that either of these possibilities are involved, but I'm guessing.)

Section 3: What's Missing

There are three obvious protocols missing in all of the above: MAPI, MAPI over RPC over HTTP, and Exchange ActiveSync. I can hear the screams now...but this is where I go back to the point that Microsoft still makes money from intellectual property. Microsoft's Web site offers a searchable IP Catalog that shows you exactly which protocols they offer for a licensing fee, and both MAPI (aka the Outlook Exchange Transport Protocol) and Exchange ActiveSync are on it, as well as several other important protocols for Unified Communications. Microsoft is under no obligation to make every single protocol available for free -- but the fact that they're finding value in doing it with the above protocols is pretty cool and interesting. [3]

[1] If the watermark bugs you, try seeing if your PDF client will allow you to view or print the document without annotations. Using Foxit Reader, I was able to make the watermark go away and actually read some of the text it obscured.

[2] SMTP Protocol? Seriously? Is that like PIN number or ATM machine? Attention, Microsoft technical writers: P stands for Protocol.

[3] You're free to speculate on what value they get, but not here, please. That's another religious discussion.

Print | posted on Thursday, April 10, 2008 7:21 PM

Comments have been closed on this topic.