Internet DRAFT - draft-gondwana-jmap-imapdata

draft-gondwana-jmap-imapdata







JMAP                                                    B. Gondwana, Ed.
Internet-Draft                                                  FastMail
Intended status: Standards Track                          March 19, 2018
Expires: September 20, 2018


                      JMAP Extension for imap data
                    draft-gondwana-jmap-imapdata-00

Abstract

   This document adds additional properties to the JMAP Email and
   Mailbox objects so that servers which also support IMAP can expose
   metadata about the IMAP Mailstore via JMAP.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on September 20, 2018.

Copyright Notice

   Copyright (c) 2018 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.





Gondwana               Expires September 20, 2018               [Page 1]

Internet-Draft                JMAP IMAPData                   March 2018


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Conventions Used In This Document . . . . . . . . . . . . . .   2
   3.  Email Object properties . . . . . . . . . . . . . . . . . . .   2
     3.1.  ImapData Object . . . . . . . . . . . . . . . . . . . . .   3
   4.  Mailbox Object properties . . . . . . . . . . . . . . . . . .   3
     4.1.  ImapStatus Object . . . . . . . . . . . . . . . . . . . .   3
   5.  Implementation considerations . . . . . . . . . . . . . . . .   4
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   4
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .   4
   8.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .   4
   9.  Normative References  . . . . . . . . . . . . . . . . . . . .   4
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   5

1.  Introduction

   [I-D.ietf-jmap-mail] JMAP datastores may be built in such a way that
   they also allow [RFC3501] IMAP access to the underlying data.

   IMAP mailboxes have some STATUS data which is not required for JMAP
   and hence not exposed by default.  This document provides a way to
   access those values via JMAP.

   IMAP mailboxes contain individual messages by UID, and those can have
   properties which specific to the individual message.  If the server
   supports multiple IMAP messages collapsed into a single JMAP message
   (due to identical Email/id or [I-D.gondwana-imap-uniqueid] MSGID)
   then it can be useful to expose the underlying IMAP data via JMAP.

2.  Conventions Used In This Document

   In examples, "C:" indicates data sent by a client that is connected
   to a server.  "S:" indicates data sent by the server to the client.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119] when they
   appear in ALL CAPS.  These words may also appear in this document in
   lower case as plain English words, absent their normative meanings.

3.  Email Object properties

   This extension adds a single property to the Email object:

   o  *imapdata*: String[Interger[ImapData]] This is a map of mailbox id
      to a map of uid to ImapData Object




Gondwana               Expires September 20, 2018               [Page 2]

Internet-Draft                JMAP IMAPData                   March 2018


3.1.  ImapData Object

   The ImapData Object has the following properties:

   o  *internaldate*: Date This is the date at which the message was
      created.  This may be the same as the JMAP createdAt value, or
      different if the underlying store has different internaldates for
      different messages.

   o  *keywords*: String[Boolean] This is identical to the "keywords"
      fetch item at the top level, but contains the set of keywords on
      each individual IMAP message.  This may be the same for all
      messages, depending on the underlying storage mechanics.

   o  *modseq*: Integer|null This is the modseq of the individual
      message within the IMAP store, or null if the server doesn't
      support [RFC7162].

   o  *savedate*: Date|null This is the date at which the message was
      added to this mailbox, or null if the server doesn't support
      [I-D.ietf-extra-imap-savedate].

4.  Mailbox Object properties

   This extension adds a single property to the Mailbox object:

   o  *imapstatus*: ImapStatus|null

   If the mailbox is not accessible via IMAP (e.g. a virtual mailbox)
   then it MUST have a null ImapStatus.

4.1.  ImapStatus Object

   The ImapStatus Object has the following properties:

   o  *imapname*: String The name of the mailbox in modified UTF7.
      "SELECT {imapname}" via IMAP would work if given this name.

   o  *highestmodseq*: Integer|null The HIGHESTMODSEQ of the mailbox, or
      null if the mailbox does not support [RFC7162].

   o  *messages*: Integer The MESSAGES status item (number of messages
      in mailbox) as defined in [RFC3501] for the underlying mailbox.

   o  *uidvalidity*: Integer The UIDVALIDITY as defined in [RFC3501] for
      the underlying mailbox.





Gondwana               Expires September 20, 2018               [Page 3]

Internet-Draft                JMAP IMAPData                   March 2018


   o  *uidnext*: Integer The UIDNEXT as defined in [RFC3501] for the
      underlying mailbox.

5.  Implementation considerations

   If the same message occurs multiple times in an IMAP store with
   different keywords, the combined keyword contents might be best
   calculated in different ways for different keywords, for example:

   o  $flagged should be set if any IMAP record has $flagged set

   o  $seen should only be set if ALL messages have $seen set (because
      users are generally actually interested in "unseen")

6.  IANA Considerations

   There will be a registration of an ID, but there's not yet a JMAP
   registry to add the it into.  Maybe something like
   "ietf:jmap:imapdata".

7.  Security Considerations

   All this data is visible via IMAP already for users with the same
   authentication rights, however implementations must ensure that if a
   message is both in mailboxes where the user has the [RFC4314] READ
   ACL and other mailboxes where the use does not have read access, that
   the imapdata response is filtered to avoid leaking information about
   non-visible mailboxes.

8.  Acknowledgments

   TBD.

9.  Normative References

   [I-D.gondwana-imap-uniqueid]
              Gondwana, B., "IMAP Extension for unique identifiers",
              draft-gondwana-imap-uniqueid-00 (work in progress), March
              2018.

   [I-D.ietf-extra-imap-savedate]
              Bosch, S., "Internet Message Access Protocol (IMAP) -
              SAVEDATE Extension", draft-ietf-extra-imap-savedate-00
              (work in progress), March 2018.

   [I-D.ietf-jmap-mail]
              Jenkins, N., "JMAP for Mail", draft-ietf-jmap-mail-04
              (work in progress), March 2018.



Gondwana               Expires September 20, 2018               [Page 4]

Internet-Draft                JMAP IMAPData                   March 2018


   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3501]  Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
              4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003,
              <https://www.rfc-editor.org/info/rfc3501>.

   [RFC4314]  Melnikov, A., "IMAP4 Access Control List (ACL) Extension",
              RFC 4314, DOI 10.17487/RFC4314, December 2005,
              <https://www.rfc-editor.org/info/rfc4314>.

   [RFC7162]  Melnikov, A. and D. Cridland, "IMAP Extensions: Quick Flag
              Changes Resynchronization (CONDSTORE) and Quick Mailbox
              Resynchronization (QRESYNC)", RFC 7162,
              DOI 10.17487/RFC7162, May 2014,
              <https://www.rfc-editor.org/info/rfc7162>.

Author's Address

   Bron Gondwana (editor)
   FastMail
   Level 2, 114 William St
   Melbourne  VIC 3000
   Australia

   Email: brong@fastmailteam.com
   URI:   https://www.fastmail.com






















Gondwana               Expires September 20, 2018               [Page 5]