Changes

Jump to: navigation, search

Gaia/Email/ActiveSync

2,517 bytes added, 18:50, 16 May 2012
Created page with "== Needs == * Phase 1: A WBXML parser ** WBXML Parser ([http://www.w3.org/TR/wbxml/ spec]) * Phase 2: Base activesync support. It's an HTTP protocol, but additional work is req..."
== Needs ==

* Phase 1: A WBXML parser
** WBXML Parser ([http://www.w3.org/TR/wbxml/ spec])
* Phase 2: Base activesync support. It's an HTTP protocol, but additional work is required to deal with determining the protocol version, agreeing with the server about the device's capabilities, keepalive pings (when desired), etc.
* Phase 3: Simple application protocol support (with no real state). Be able to connect to the server and issue simple requests. Our logic should not perform any complicated state tracking; SyncKey management should be handled by the caller.
** E-mail protocol support (in order of importance)
*** folder list sync (we can be inefficient about this if it's simpler)
*** Ask about messages received in the last few days
*** Retrieve information on a message (envelope, subject, body without attachments, attachment names/info)
*** Receive updated flags for known messages
*** Modify simple message state (read/unread, flagged)
*** Delete messages
*** Send a message
*** Save a draft
*** Simple server-side search
** Calendar protocol support.
*** Ask James Lal :)
* Phase 3.5: Autodiscovery/autoconfiguration assistance. From Android's EasSyncService, it looks like there is some special exchange logic for picking a server that it would be beneficial for us to have too.
* Phase 4: Higher level sync logic. Use the protocol support to hook things up to our backends we have already created for IMAP/CalDAV. Ideally we can use thin adapters or otherwise port the logic.

== Prior Art ==

Android has an Apache-licensed ActiveSync stack (implemented in Java):

git clone https://android.googlesource.com/platform/packages/apps/Exchange

Notable bits:

* parser: src/com/android/exchange/adapter/Parser.java
** code page / tag defs: src/com/android/exchange/adapter/Tags.js
* core sync/protocol logic: src/com/android/exchange/EasSyncService.java
* email
** main sync logic: src/com/android/exchange/adapter/EmailSyncAdapter.java
** search logic: src/com/android/exchange/adapter/Search.java

Its WBXML parser uses a pull-parser idiom. Because

== Documentation ==

Microsoft provides reasonably extensive protocol documentation:
* [http://msdn.microsoft.com/en-us/library/cc425499%28EXCHG.80%29.aspx Exchange Server Protocol Docs]
** [http://msdn.microsoft.com/en-us/library/dd299442%28v=exchg.80%29 MS-ASWBXML] Defines the code pages, their tags, and the tokens used to represent the tags.
** [http://msdn.microsoft.com/en-us/library/dd299457%28v=exchg.80%29 MS-ASEMAIL] Email stuff.
Confirm
360
edits

Navigation menu