Jason Nelson has an interesting article up on the EHLO blog discussing MAPI named properties in Exchange. Specifically, he covers the history and reasons behind x-headers, how they’ve been handled in the past, and how we’ll be handling them in an upcoming rollup for Exchange 2007, and later, in Exchange 14.
Addressing a couple of the comments to his article:
Q: Is there any reason why the properties couldn't be at a per-message (or equivalent) level? Perhaps not as efficient, but if you're going to redesign it, why not allow 32K props per message?
A: Because this would break everything. Every client that ever connects to Exchange would be broken.
Q: Or why not store all the unknown x-headers in a text field that is always attached to PropID 0xFFFF?
A: They always have been – they’re in PR_TRANSPORT_MESSAGE_HEADERS, which any app is free to parse. No data is being lost here.