Skip to content

Syncing Exchange with SyncML Server

In theory SyncEvolution on Linux (or BSD, or whatever you bother to compile Evolution and SyncEvolution for…) could be used to synchronize contacts, events, and tasks stored in a Microsoft Exchange server: the Evolution Exchange Connector provides the data via the same APIs that SyncEvolution normally uses to synchronize such data.


In practice it failed for contacts because of multiple bugs in the Connector.

I fixed those and prepared a patch, but it will take a while before there will be an official Evolution release which contains the fix. 2.22.3 was just released and there are no plans to do further maintenance updates before 2.24. If you care about this problem, then perhaps report the problem to you Linux distribution maintainers and (kindly!) ask for an update via the distribution.

With the patch the SyncEvolution test suite runs almost without errors. The remaining problems are related to not quite storing the test contacts as Evolution normally does. For example, the different name components (first/second/middle name, title) are modified slightly. This most likely is a limitation of Exchange and doesn’t look like it’ll affect normal names. Sometimes extra line breaks are added at the end of strings.


With calendars there were other problems. Updating existing events consistently failed with 0.8 beta 2. I turned out that the code introduced in the betas for detached recurrences tries to use the Evolution calendar API in a way which is not implemented (or supported) by the Exchange backend (e_cal_modify_object(CALOBJ_MOD_THIS) without a recurrence ID doesn’t work). It worked with the file backend, but I suspect that I have used the API in a way that it wasn’t meant to be used. I solved this problem by rewriting the code slightly. SyncEvolution 0.7 and (once it is released) 0.8 should both work.

In general the Evolution Exchange Connector was not particularly stable. I had to add a five second delay between simulated syncs or it would return inconsistent data for the previous run. There are e-cal.c:319: Unexpected response warnings: they are printed directly by the Evolution library, so SyncEvolution cannot suppress them. They don’t seem to indicate any real problem, so just ignore them. The Connector also crashed frequently when accessing calendars for the first time. What worked best for me is to start Evolution, check my calendars and if I get a message that the backend crashed, try again. Your mileage may vary…


Exchange databases can be selected just like normal Evolution databases: use their name for the evolutionsource property.

In addition to that, the evolutionpassword property must also be set for each source to the Exchange password! The user name is not needed.

{ 2 } Comments

  1. Thomas Novin | September 11, 2008 at 5:31 pm | Permalink

    About the connection, you are talking about the evolution-exchange connector which uses OWA, right? This only works up until Exchange 2003.

    There is a new MAPI conncetor being written but it isn’t done yet.

    Ps. You can get rid of comment-spam without captcha with Akismet.

  2. Patrick Ohly | September 11, 2008 at 8:48 pm | Permalink

    Yes, this post is about the traditional Exchange Connector based on OWA. I also tried the MAPI backend two weeks ago, but it was still very incomplete so that I didn’t test SyncEvolution with it.

    I’m using both Akismet and reCaptcha. I don’t know how effective Akismet would be if I were to try it alone and unless it is a real nuisance, I’d rather leave reCaptcha enabled.

Post a Comment

Your email is never published nor shared. Required fields are marked *