Skip to main content

Minutes IETF114: jmap: Thu 10:00

Meeting Minutes JSON Mail Access Protocol (jmap) WG
Date and time 2022-07-28 14:00
Title Minutes IETF114: jmap: Thu 10:00
State Active
Other versions markdown
Last updated 2022-07-28



2 hour session joint with EXTRA
Freedom G

10:00-12:00, Thurs July 29, 2022.


  • Intro and notewell by chairs 5m

JMAP Section

Current Drafts

  • blob 5m (Bron)
  • calendars 5m (Robert)
  • quotas 5m (René)
  • sharing 5m (Neil)
  • sieve 5m (Ken)
  • SMIME sender 5m (Alexey)
  • tasks 5m (Joris/Hans-Jörg)

Proposed Work

  • JMAP for Migration and Portability 10m (Joris)
  • JMAP Preferences (settings) 5m (Joris)

Milestone review 5m


EXTRA Section

Current Drafts

  • imap partial 10m (Alexey)
  • process imip 5m (Ken)
  • sieve registry 5m (Alexey/Ken)
  • sieve snooze 5m (Ken)

Proposed work

  • snooze and mailboxids 10m (Rik)
  • list return metadata 10m (Bron)

Milestone review 5m



JMAP section


Nothing exciting, Bron will do the final then WGLC


Rene: got a few more comments from Alexey, thank you for that.

Added a few more examples to make it more clear.

Ready for Working Group Last Call


Neil: spec looks good. Only bikeshed is renaming headerProtect to
something like smimeHeaderProtect to be consistent.

For decryption, probably do something with Email/parse, ran out of time
to do this round. Think this is the only thing left.

Should be ready for WGLC very soon.

Sachin? Question about decryption -> how would the server know the keys
to decrypt?

Alexey: since the extension already knows how to sign and encrypt, so it
already has the keys in some kind of directory where the key is.

So idea is -> that server has key? Yes. So the client doesn't have to

Alexey: in my implementation, keys are auto-generated, so automatically
done on the server.



Robert: for grouping, what should systems do if they get a JSTask that
includes properties that are in a group that they don't support? Reject?

  • e.g. a recurring task, what should something like Zimbra do if it
    doesn't support recurrences?
  • Joris: if you don't understand a capability as a server, can't
    remember what the spec says.
  • Robert: it would probably reject. Have to send the task along with
    the capabilities that the data contains.
  • Neil: think this is for client talking to server. The client will
    negotiate with the server to turn on features. If you're importing
    tasks, then the import tool needs to strip things that the server
    doesn't support.

Neil: there were more groups on the previous page. Are there things that
nobody uses?

  • Slide 6 has some capabilities that Slide 7 doesn't use. Maybe they
    got lost in the slides being added.
  • Joris: didn't look into those bits.

Sachin: should server be liberal in what it accepts? Neglect what it
doesn't know. Need to be broad minded in what it accepts.

  • Also: impact == priority. My thinking is that impact is "what
    impacts me as a person creating the tasks". Priority is my decision
    whether I want to do it!
  • Think that's a way to differentiate -> both the priority of the
    person requesting, and that of the person accepting

Alexey: regarding rejecting properties you don't understand. Would
prefer server to accept and store properties rather than just reject.

  • Joris: think that's a thing in the core spec. Not entirely sure but
    think it's defined like that.

Robert: Two remarks not related to grouping:

  • Estimated work: understand there's multiple scales for estimating
    work, but only a single numeric value. Would it make sense to add a
    property to define the scale it's stored in.
  • Joris: typically there's just a scale, but most systems don't have a
    unit. The common thing I found was the fibbonachi scale. Happy to
    say "this is just a value", depends on the team -> this is a 6, this
    is a 10, difficult to have an interoperable unit that different
    systems. Don't understand why fibbonachi should be mentioned.
  • Bron: at least a direction - is smaller larger, or bigger number?

Robert: Second thing, now that JMAP for Tasks defines updates to
JSCalendar. Question for chairs.

  • Bron: maybe cluster togeter, maybe put JSCalendar first.
  • Neil: this probably wants to go at the same time as JMAP Calendars
    as well.

Joris: getting feedback from vendors:

  • WeKan, 2Do, CalConnect.
  • Still some next steps before last call definitely.

Don't need anything from the working group.

Murray: can you create a milestone for this please!

calendars and sharing

Neil: calendars is waiting on resolving the jscalendar discussion in
calext right now, particularly around the participant correspondence.

  • Hopefully get that resolved soon, so hopefully can do that along
    with sharing and tasks.


Ken: no slides, only change since Vienna was tracking changes in spec.
Was just waiting for test method. Suggest pull it out and leave as
extension. Think with processimip, just remove test method from this

Think ready for WGLC after pulling test method.

Alexey: think maybe just leave it in? Can pull it out.

  • Ken: already has its own capability
  • Alexey: feels incomplete without it.
  • Ken: as a replacement for managesieve, test isn't necessary at all.
  • Ken: can take it to the list.
  • Alexey: don't feel strongly about it.
  • Alexey: see about extending imip action for it? See if there's a
    generic ability to extend it.
  • Ken: only fear is that without anybody implementing and using it,
    may be missing pieces! Hate to publish something that might now
  • Rik: for incompleteness, there's no capability that matches sieve
    script testing behaviour -> novel thing designed for it.
    • The reason it's not been done at Fastmail because we haven't
      figured out how to present it to the user.
    • As a replacement for managesieve, it's good to go.

Ken will remove and we'll do a WGLC.

jmap for migration and portability

Joris: could easily expose many things with this wrapper.

Would be nice to put in some public place.

Bron: was looking even a long way back at creating a REST style API to
access the same data.

Alexey: should definitely be a document on this, and Bron's idea makes

Joris: is there interest in having a document for this in this working
group? Does it fit charter.

Bron: publish a draft, we can call for adoption as informational.

jmap preferences

Joris: lots of different dimensions, scopes, etc.

Sangin: largely an implementation issue for implementations -> to get
the settings. Particular case.

  • Next steps, why should it be part of JMAP rather than known to
    specific implementation.
  • Think that the JMAP server might have specific configuration
    attributes rather than being part of the protocol specification.
  • Think it's out of scope for the protocol.
  • Joris: likewise think it's more of a best practice document than
    part of the protocol.

Neil: JMAP is the protocol, but this is stil data you want to

  • don't think there's any common enough subset that's worth making a
    standard datatype.
  • A best practices document for "this is what you should consider when
    creating a preferences object" -> we have a bunch of them at
    Fastmail but they're all quite specific.

Hans-Joerg: something that UIs and clients will use.

  • see several systems that do things in similar ways.
  • For migrations, this is always a problem because it's a lot of work
    to do a translation, so having a best practices for JMAP might help
    vendors to create similar things and help with migrations.
  • Don't know if it needs to be an RFC, but wouldn't rule out that it
    would be helpful to standardise parts of it.

Neil: regarding blocklists, would consider that a separate datatype.
Each item is a block (email address, name, etc) -> easier to resync
rather than just having a whole blob.

Hans-Joerg: Might make sense to work out some specific settings and see
if there's common ground on them. Might be an opportunity to work on



imap partial

Will go to WGLC.

process imip

In production at Fastmail, seems to do the job

Maybe WGLC will get reviews! With Ned gone, we're missing.

Neil: the doc references a calendarId, but from the draft there's no way
to know what a calendar ID is or where to get it from.

Ken: good point, I'll add some text for that.


Same, in production, works - have had some reviews

Will send to WGLC.

Alexey: should stagged documents so there's no more than 2 at the same

Barry: would say "give them extra time".

  • Alexey: will you review?
  • Barry: yes

sieve registry

Ken and Alexey think it's ready. Need reviews. To WGLC.

Slightly weird because it's more mechanical, but should double-check the

Ken: added an entry to the registry in snooze draft.

snooze via IMAP

Rik: snooze via IMAP present in a few clients and servers. Also in sieve
just now!

Basic proposed command: Based on JMAP Snooze semantics, which we haven't
done yet! Move into a snooze mailbox.

Rik: this is how Fastmail and other places work. If there's feedback,
we'll change it!

Flag changes! -> when you unsnooze a message, what do we do with the
awaken flags? Semantics here are that we clear them.

The \Snoozed mailbox is not the same.

Neil: doesn't look like there's any way to specify a folder to return to
other than implicitly. We do use both at Fastmail.

  • Rik: this started as "what's the simplest we could do"

PHB: have you considered the interaction of this with tasks? When I'm
using this capability it's normally because I want to create a reminder
for myself.

  • Rik: I can daydream about what I want!

Hans-Joerg: a couple of questions!

  • How does this interact with existing clients? What is the client
    expected to do?
  • Some clients expect to move things to the Snoozed mailbox? Might
    have to migrate messages in.

Rik: the client is simply expected to show the user that the message is
back in the awakened to mailbox. We use a flag to indicate that the
message has returned to the mailbox. Think that a convention would be
useful but not necessarily.

  • Definitely make it clear this is a SERVER initiated unsnooze, so it
    should happen without a specific client.
  • Migration: would do it via

Barry: haven't read a draft. (there isn't one)

  • Barry: use of special-use mailbox, having one that's read-only is
    unique. Don't have one that doesn't let you move things in and out.
  • Think some servers don't have this requirement yet.
  • Rik: have two options -> either have default behaviour if moved in,
    and if moved out it's implicitly awoken.
  • Option: require ACL support and have ACL control.

Alexey: Agree with Barry, magic mailboxes aren't a great idea. The other
thing is "not yet fully sold of new command" -> we need to review all
extensions that affect UID COPY and UID MOVE to make sure this is
handled in the same way.

  • Suspect from the reaction from people remote and in the room that
    there's enough interest in this.

Pete: as describing this, wondered "what's the use of the Snoozed
mailbox in the first place"? Implementation-wise, why not just add the
snoozing to the message wherever it might live? The move mailbox could
be removed from this, could still implement it that way. As a generic
thing, add a "defer" command.

  • Bron: yeah and a UID MOVE removes the old one.
  • Alexey: agree with Pete, can do it with removal of flags.

Sachin: agree, should just put all of this on each message.

Ken: should look at the sieve snooze draft. Should align them.

  • Pete: glad to review it, have no dog in this fight. Seems like a
    cool feature, just architecturally it seems useful to make it much
    more generic.

Neil: disagree about making it more generic. There's a common paradigm
implemented in a lot of places. Trying to make it more generic than this
will mean most people won't implement it.

  • Rik: tentatively, the more general feels like the "all things to all

Neil: then clients could implement however they want, which loses the
value that multiple clients can have the same view.

  • Pete: because that's the way the backend does it! The reason IMAP
    was so messy is because that's the way Mark's filesystem did it.
    Because client had to work out what the backend did.
  • Rik: more generally -> if what we want is to handle Snooze, we want
    a way to make this something that multiple clients.
  • Neil: approach was more "this is how it works as a product",
    consistency for users.

Bron: want to align JMAP, IMAP and SIEVE?

Alexey: roughtly two ways to do this:

  1. magic IMAP keywords that make it disppear from the client
  2. a magic mailbox
    • maybe once a draft is written, we'll discuss the approaches.
    • Also suggest that chairs put a limit on how long we'll discuss
      and then pick one approach. Advantages and disadvantages.

Neil: it has to be a mailbox, otherwise it won't work in clients that
don't support it.

Alexey: server can still hide it from view. Magic keyword. We'll take
this to the list.

Sachin: mailbox as a concept or a place on the filesystem (implemented
in database, whatever) - might need to think more about how it would
happen in the database.

the $new flag at Fastmail is useful (unsnoozed)

And the SAVEDATE extension is useful.

mailboxes as labels

Many clients let you see email with labels on it.

JMAP is built around the idea that an email is in multiple folders. If
we want to expose in IMAP, we need a way to do it.

Sachin: talking about things like Thunderbird on mulitple machines, best
place to put things like a Preferences object - have a way for clients
to store something. An object store at the server level, e.g. Outlook
does something that lets preferences go in the cloud.

  • Rik: Can definitely talk about JMAP being useful, but having a
    specific property "color" rather than other things. This bit is

list return metadata

Ken: this is the only way to get the information all at once, since when
METADATA was changed from ANNOTATION we remove the wildcard ability.
Adding this makes sense to me.


EAI document!

Barry: can we just kick it away to the future?

Alexey: there is a document! Somebody from OpenXChange wrote something,
the difficulty is that last time Ned looked at it and said we needed

Barry: push it a year?

Alexey: ask Stephan to refresh it, and adopt.

Bron to ask for an update.

Barry happy to take it over.


Sachin: Gmail has X-LABELS, but it uses names rather than IDs, similar
but worse!