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.

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

Enable conversation support

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
  • Authentication
    • JMAP authentication is implemented and enabled by default for the /jmap endpoint. SASL authentication, including HTTP Basic Authentication (RFC 7617), can be enabled in addition to JMAP authentication.

Not yet implemented

  • Multi-user accounts

    All the current JMAP method operate with the account currently authenticated to Cyrus httpd. That is, the accountId property in JMAP requests is not supported.

  • Remote mailboxes

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