JSON Meta Application Protocol

JSON Meta Application Protocol (JMAP)
International standard
  • Core: RFC 8620
  • Mail: RFC 8621
  • WebSocket: RFC 8887
  • MDN: RFC 9007
  • S/MIME: RFC 9219
  • Blobs: RFC 9404
  • Quotas: RFC 9425
Developed by
IntroducedJuly 18, 2019; 5 years ago (2019-07-18)
IndustryNetwork communications
Websitejmap.io

The JSON Meta Application Protocol (JMAP) is a set of related open Internet Standard protocols for handling email. JMAP is implemented using JSON APIs over HTTP and has been developed as an alternative to IMAP/SMTP and proprietary email APIs such as Google's Gmail and Microsoft's MAPI (used by Outlook).[1] Additional protocols and data models being built on top of the core of JMAP for handling contacts and calendar synchronization are meant to be potential replacements for CardDAV and CalDAV, and other support is currently in the works.[2]

Motivation

[edit]

Developers Bron Gondwana and Neil Jenkins wrote on the Internet Engineering Task Force (IETF) news site that "the current open protocols connecting email clients and servers, such as IMAP, were not designed for the modern age." They cited IMAP's complexity, high resource use, poor adaptability to the network constraints of modern mobile devices, and complex interactions with other protocols like SMTP, CalDAV, and CardDAV.[3] They believe this has resulted in a stagnation in the quality of (especially free) email clients, and the creation of proprietary protocols to overcome these limitations, for instance MAPI, used by Microsoft's Exchange Server and Outlook email products.[1]

Design

[edit]

Gondwana and Jenkins wrote, "JMAP is the result of efforts to address shortcomings [in existing protocols], providing a modern, efficient, easy-to-use API, built on many years of experience and field testing."[3]

The protocol was developed with the intention of providing a modern open, reliable, and easy-to-use solution, and as a result it relies heavily upon the commonly-implemented JSON (JavaScript Object Notation). According to Gondwana of Fastmail—which has been a leading developer of the protocol -- "The use of JSON and HTTP as the basis of JMAP was always a key point — it means that people wanting to build something on top of email don’t have to re-implement complex parsers or find a software library in order to get started."[4]

After atmail decided to implement JMAP, CEO Dave Richards wrote in 2018 that "the complexities required to implement IMAP in both user and server side software has resulted in user difficulties and a lack of software options, along with a rigid user experience...The new JMAP protocol solves the existing issues and is modular enough to take advantage of future technology. JMAP makes email better."[5]

Development

[edit]

JMAP started around 2014 as an internal development project by the Australian-based email provider Fastmail.[6] Starting in 2017 a working group at the IETF has been leading the development and standardization process.[7] The core protocol and mail specifications were published in July and August 2019 by Neil Jenkins of Fastmail and Chris Newman of Oracle, as RFC 8620 and RFC 8621.[4][8][9] The WebSocket specification was later published in August 2020 as RFC 8887, and Message Disposition Notification (return receipts) in March 2021 as RFC 9007.[10][11]

Other ongoing JMAP drafts at IETF are for dealing with calendars, contacts, tasks, and Sieve mail filtering. [2] The working group originally set milestones for these to be finalised by the end of 2020;[7] as of November 2023, two further JMAP extensions have been submitted to the IESG as proposed standards: blob management (RFC 9404), and Quotas (RFC 9425).

Implementations

[edit]
  • As of version 3.8.1 Apache Software Foundation’s free mail-server Apache James has "experimental" support for JMAP.[12][13] The OpenPaas collaboration platform provides a webmail implementation supporting James and JMAP.[14]
  • Cyrus IMAP provisionally supports the JMAP protocol standards as of version 3.8.3, released in May 2024, when built with this functionality.[15]
  • Mailtemi is a JMAP/MS Graph/IMAP email app for iOS and Android. It supports multiple email accounts, contacts, and calendars.[16]
  • Ltt.rs is a proof of concept email client for Android that supports only JMAP.[17]
  • Stalwart JMAP server is a scalable open-source JMAP server written in Rust with full JMAP Core, JMAP Mail, JMAP over WebSocket at IMAP4rev2 support.[18]

See also

[edit]

References

[edit]
  1. ^ a b "JSON Meta Application Protocol Specification (JMAP)". jmap.io. Fastmail. Retrieved 2020-05-03.
  2. ^ a b "Jmap Status Pages". IETF Tools. Internet Engineering Task Force.
  3. ^ a b Gondwana, Bron; Jenkins, Neil (6 May 2019). "JMAP: A modern, open email protocol". IETF Blog. Internet Engineering Task Force. Retrieved 25 September 2020.
  4. ^ a b Gondwana, Bron (27 December 2018). "JMAP is on the home straight". Fastmail Blog. Fastmail. Archived from the original on 30 September 2020. Retrieved 25 September 2020.
  5. ^ "Dear Mr Laguna, IMAP is Not the Right Protocol for Chat". atmail blog. 20 April 2018.
  6. ^ "FOSDEM 2019: IMAP, JMAP, and the Future of Open Email Standards". Peer tube. Retrieved 2019-02-16.
  7. ^ a b "JSON Mail Access Protocol (jmap)". IETF Datatracker. Internet Engineering Task Force. Retrieved 25 September 2020.
  8. ^ N. Jenkins; C. Newman (July 2019). The JSON Meta Application Protocol (JMAP). IETF. doi:10.17487/RFC8620. ISSN 2070-1721. RFC 8620. Proposed Standard. Updated by RFC 9404, 9670.
  9. ^ N. Jenkins; C. Newman (August 2019). The JSON Meta Application Protocol (JMAP) for Mail. IETF. doi:10.17487/RFC8621. ISSN 2070-1721. RFC 8621. Proposed Standard. Updates RFC 5788
  10. ^ K. Murchison (August 2020). A JSON Meta Application Protocol (JMAP) Subprotocol for WebSocket. Internet Engineering Task Force (IETF). doi:10.17487/RFC8887. ISSN 2070-1721. RFC 8887. Proposed Standard.
  11. ^ R. Ouazana, ed. (March 2021). Handling Message Disposition Notification with the JSON Meta Application Protocol (JMAP). IETF. doi:10.17487/RFC9007. ISSN 2070-1721. RFC 9007. Proposed Standard.
  12. ^ "Apache James Project – Apache James Server 3 - Release Notes". Retrieved 2024-06-19.
  13. ^ "Apache James Enterprise Mail Server Features".
  14. ^ "OpenPaaS Documentation".
  15. ^ "Cyrus IMAP Features". Cyrus IMAP server.
  16. ^ "Mailtemi - JMAP/MS Graph/IMAP Email App".
  17. ^ "Ltt.rs for Android Codeberg repository". Codeberg.
  18. ^ "Stalwart JMAP Server Github repository". GitHub.