JMAP
****


About JMAP
==========

JMAP is an alternate mechanism for synchronising a mail client with a
mail server, intended as a replacement for IMAP. It is a transport-
agnostic, stateless JSON-based API, aiming to be compatible with the
IMAP data model, but with reduced data usage and more efficient
synchronisation.


Configuration
=============

JMAP support needs to be compiled in to the server using additional
compile flags. Depending on your distribution, your package provider
may have already done so. If not, check the JMAP developer guide for
instructions on how to do so manually, assuming you have the source.


JMAP configuration
^^^^^^^^^^^^^^^^^^

   *This shows the default value: change it in imapd.conf to suit your
   needs.*

   "conversations:" 0

      Enable the XCONVERSATIONS extensions.  Extract conversation
      tracking information from incoming messages and track them in
      per-user databases.



   "conversations_db:" skiplist

      The cyrusdb backend to use for the per-user conversations
      database.

      Allowed values: *skiplist*, *sql*, *twoskip*, *zeroskip*

Once it’s compiled, JMAP needs to be enabled in imapd.conf(5).

Enable conversation support

   * In imapd.conf(5), set "conversations: 1", "conversations_db:
     twoskip"

   * Create a conversations.db for each user using
     ctl_conversationsdb(8): "ctl_conversationsdb -b -r"


JMAP clients
============

The official JMAP website maintains a list of known clients with JMAP
support.

The Cyrus JMAP developer guide has information on using the sample
test clients.


JMAP implementation status
==========================

The JMAP implementation in Cyrus is at various stages of maturity.


Working
-------

* **Contacts**

     * All JMAP methods are implemented. JMAP blobs are not
       supported.

* **Calendars**

     * All JMAP methods are implemented. JMAP blobs are not
       supported.

* **Messages**

     * Most JMAP methods are implemented. The following methods are
       not planned for implementation:

       * copyMessages

       * reportMessages

       * getVacationResponse

       * setVacationResponse

       * getIdentityUpdates

       * setIdentities


Not yet implemented
-------------------

* **Remote mailboxes**

* **Events**

     * Changes on mailbox entries trigger notifications. However,
       the JMAP event service is not implemented.
