OpenChangeSim

OpenChangeSim implements a simulator able to reproduce the behavior of thousands of Outlook clients talking to an Exchange server at the same time. This project primary focuses on e-mail communications between an Outlook 2007 client and an Exchange 2003 server.

OpenChangeSim is open source and released under the terms of the GNU General Public License v3 or later (GPL).

HowTo Guide Series

OpenchangeSim

Related

Developer documentation

Requirements

The OpenChange project has limitations that need to be addressed for the Outlook simulator project to perfectly mimic Outlook 2007 – Exchange 2003 communications.

Exchange 2003 IDL Implementation

Outlook 2003 and 2007 versions communicate by default with Exchange 2003 server and above (2007, 2010) using a new version of the EMSMDB RPC pipe (MAPI).
These new functions do not introduce any semantic changes to the ExchangeRPC protocols but use either LZXPRESS compression or obfuscation for the MAPI data blob.

OpenChange has already addressed this decoding issue into its MAPI wireshark dissector. However, this change and related API modifications have not been propagated yet to libmapi client library. This change was not of immediate importance to OpenChange for the moment due to our native compatibility with Exchange 2010. It is however required for openchangesim to perfectly mimic Outlook 2007 to Exchange 2003 communications.

Packed MAPI calls

Outlook is using packed MAPI calls in some circumstances to save bandwidth and limit the number of network transactions. These packed calls are generally generated when a transaction deals with the same object and when all operations are subsequently related one to each other. OpenChange implements a 1 MAPI call / 1 packet transaction model. Offering the ability to move from the existing model to the Outlook default one is however doable within a very reasonable amount of time and few more API calls.

Thread support for concurrent flows

OpenChange client side libraries are able to deal with concurrent connections and its model is compliant with threaded application. A pending patch is available on the list and requires a review before integration. This feature is required to efficiently generate any number of parallel MAPI data flows within a given authenticated user context.

Cached mode and FXICS implementation

When Outlook is configured with cached mode enabled, it retrieves email and updates its local PST/OST files using FXICS. It is a Fast Transfer Buffer used in Incremental Synchronization Changes. Depending if clients are using online mode (which is preferable for security and in critical environment) or use cached mode for better local performances, this scenario may be of interest. This part of the Exchange protocol is the last OpenChange doesn’t yet implement.

Roadmap