JMAP: A modern, open email protocol

Bron Gondwana

Neil Jenkins

6 May 2019

The new JMAP protocol addresses shortcomings of previous open protocols connecting email clients and servers were not designed for the modern age. JMAP is the result of efforts to address shortcomings, providing a modern, efficient, easy-to-use API, built on many years of experience and field testing.

Everybody uses email. However, the current open protocols connecting email clients and servers, such as IMAP, were not designed for the modern age. IMAP is resource hungry, difficult for developers to learn, and does not work well for network-constrained mobile devices. The combination of IMAP with other protocols, such as SMTP, CalDAV, and CardDAV, for a full email client experience with calendars and contacts is even more complicated for developers to learn and creates user difficulty with partial authentication failures.

The JMAP email protocol in use.

This environment has led to a stagnation in good email clients and limited innovation from email developers. Many new clients and extensions are just for selected large email providers. Proprietary protocols have become the alternative to IMAP, but they are walled gardens, limiting both users and developers. We feel an open solution is necessary.

JMAP is the result. It is a modern, efficient, easy-to-use API, built on many years of experience and field testing at FastMail, and refined with the collective expertise of many email developers at the IETF. Its robust data synchronization model is flexible enough to go beyond email, so we can standardize contacts and calendar sync via the same method in the future to fully match the capabilities of proprietary groupware protocols..

We believe this free and open standard will help developers around the world work together to make email better for everyone.

JMAP and IETF

The IETF process has made JMAP a better and more robust protocol more regular, more general, and more easily implemented in a wide range of existing servers. We appreciate all the effort that members of the JMAP working group have put into improving the protocol. To have it standardized properly gives us the stability and the support needed to build momentum and help us to bring it to others.

The collective industry representation of members of the IETF ensured that JMAP was refined to handle a wider collection of use cases beyond those that the initial authors had experience with. More consistent and in many ways simpler than the initial draft, we hope this gives it the power to truly replace IMAP.

We collaborated with developers who work on the Cyrus IMAP open-source email server, which we run ourselves. The Cyrus team has fully implemented JMAP as an open source server. The Perl developers at FastMail built a Perl JMAP server framework, and we created a simple implementation of a proxy server for the JMAP protocol.

We have also built a test framework for testing JMAP servers, and an initial set of tests which exercise many of the features in a standard JMAP server. This should assist developers in getting their own implementations right the first time.

Overcoming obstacles

A significant challenge was working out a structured JSON format for email that was easy for clients to work with, but flexible enough to represent RFC 5322 fully. The initial representation was great for common client functionality, but didnt provide access to all elements of an email without forcing the client to fetch and parse the raw message, which negated many of the benefits of the new protocol.

After brainstorming and experimenting with some ideas, we came up with a way where clients could request pseudo-properties. Pseudo-properties told the server which email header to fetch and how to parse it. Combined with aliases for common properties, this gave us a format that retained simplicity in the common case, but was flexible enough to do just about anything a client might need to do (while still avoiding a considerable amount of complex, error-prone parsing and decoding).

How JMAP benefits users

JMAP recognizes how mail clients should talk to services in the context of how people use email today. For web and mobile use, it can offer remote access to your entire, potentially massive email archive nearly as fast as if you had the whole dataset already on your device, making super-efficient use of the network.

On mobile, one of our most concrete examples is how fast an immediate push notification works with the JMAP-powered FastMail app. Instead of waiting for a refresh, users get instant notification on their phone when the server receives an email. Of course, notifications are optional, allowing users to choose whether they prioritize immediacy or would prefer to handle their email in batches.

The Internet is moving towards APIs and microservices. This allows new entrants to a market to build on top of existing services. JMAP makes it very easy to add a subset of information from a mailbox or a calendar to a new service.

As an email provider, were seeing more and more customers calling for greater transparency from big technology companies, and they are getting excited about open standards as a key to providing that good. Consumers are becoming more aware of the disadvantages of being locked into a single vendor. Discerning customers not only enjoy the features that JMAP provides, but they can also rally behind the importance of a healthy, open Internet. We look forward to continuing work in the IETF to build on the capabilities JMAP provides.

Neil Jenkins is the editor of the specification for JMAP, the new open email, calendar, and contacts synchronization protocol, and is an active contributor in the Internet Engineering Task Force (IETF). He is a Director and User Experience Architect at FastMail.

Bibliography

Internet Message Format

This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) ...

JSON Mail Access Protocol

Email mailstore and eXtensions To Revise or Amend

IMAP Extension for Object Identifiers

This document updates RFC 3501 (IMAP4rev1) with persistent identifiers on mailboxes and messages to allow clients to more efficiently reuse cached data when resources have changed location on the server.