TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

JSON Mail Access Protocol Specification (JMAP)

98 pointsby alfiejohn_over 11 years ago

15 comments

bodyfourover 11 years ago
Unfortunately it includes my biggest gripe about IMAP -- the requirement that messages are given a server-side message number. Maybe breaking with IMAP on this would make interop too hard though.<p>This requirement is convenient for the client but makes implementing robust servers harder than it need be. If instead each message was identified by a {timestamp,UUID} tuple then multiple MX servers could do final delivery to an eventually-consistent shared store. The requirement for strict, durable message ordering is the one thing that forces hard synchronization among multiple machines doing delivery.<p>POP3 actually made a step this direction with the common &quot;UIDL&quot; extension; IMAP4 felt like going backwards on this.<p>While I&#x27;m on the subject, another less-common POP3 extension I liked was &quot;XTND XMIT&quot;. This gave a simple way for the POP3 client to send mail; sadly it never really caught on in favor of just using SMTP submission. Originally though this only worked OK because SMTP was open-relay. Once spam put an end to that it became complicated to send a message when accessing your mail remotely. Then to solve <i>that</i> problem we had to graft an auth layer on top of the existing SMTP protocol and upgrade all of the clients and servers to support it. If only &quot;XTND XMIT&quot; had won in the beginning everybody would be submitting outgoing mail over that already-authenticated channel and so much work could have been avoided.<p>So anyway, those are my two requests for any &quot;IMAP killer&quot;: allow the server to use unique (but non-sequential) IDs for messages and provide a way to submit outgoing messages over the same channel.
评论 #7142241 未加载
评论 #7142528 未加载
评论 #7143274 未加载
评论 #7142678 未加载
cromwellianover 11 years ago
HTTP itself has an overhead, I&#x27;m skeptical changing a persistent IMAP connection into a request&#x2F;response model with a different serialization format is going to be more efficient, especially given compression (like COMPRESS=DEFLATE)<p>IMAP4rev1 is one thing, but there are many extensions supported in modern imap servers to speed up syncing and mailing, like CATENATE&#x2F;BURL&#x2F;CONDSTORE&#x2F;MULTIAPPEND&#x2F;MOVE&#x2F;etc<p>Granted, the IMAP protocol is pretty hairy and difficult to work with. On the other hand, there&#x27;s a huge ginormous deployment of it on the client and server, and the IETF WG behind it. I doubt JMAP will replace it anytime soon unless the WG itself takes up the issue. And given the neckbeards there ;-), some of whom have been working in IMAP for decades, you face the same opposition to change as those trying to legalize drugs or gay marriage. ;-)<p>We&#x27;re still trying to get IPv6 deployed!
评论 #7141920 未加载
评论 #7141748 未加载
评论 #7142329 未加载
评论 #7142272 未加载
brongondwanaover 11 years ago
This is similar to what we&#x27;re using at FastMail for our web interface, but simplified and made a bit more generic based on our experiences over the past year.<p>Our plan is to port our web interface across to this spec and implement both a direct backed in Cyrus IMAPd and a standalone implementation which can proxy for existing IMAP servers.
评论 #7142346 未加载
micheljansenover 11 years ago
Interesting step, but the decisions taken around concurrency seem to assume small-scale, single-user use cases only. I would be the first to admit I haven&#x27;t given this enough thought yet, but to me it seems that a global lock and MODSEQ make distributed usage etc. very difficult. Isn&#x27;t this a step backwards?
评论 #7143253 未加载
jmspringover 11 years ago
Call me curmudgeonly, why replace a protocol that works...instead roll up a library to provide the functionality...<p>Those things called standards generally find their way through bodies like the IETF. Maybe I missed it while reading on my phone, but I don&#x27;t see this submitted as an IETF draft...
评论 #7142417 未加载
评论 #7143126 未加载
评论 #7142624 未加载
评论 #7142390 未加载
评论 #7142327 未加载
评论 #7143407 未加载
advisedwangover 11 years ago
Does JMAP have an equivalent to IMAP IDLE? I.e. the ability for the server to notify the client when an email arrives. This means client&#x27;s don&#x27;t need to poll, and messages are seen instantly.<p>For me instant notification of inbound message is a must-have.
评论 #7142212 未加载
mercurialover 11 years ago
Interesting. What is the reason for grouping method calls together? Is this to reduce the number of requests sent to the server? If not, is there no way of providing a higher level operation instead of bundled discrete operations?<p>In any case, I think you could have something a lot closer to REST, even if you carry on with grouping calls together.<p>Something like:<p><pre><code> [ [ &quot;GET&quot;, &quot;&#x2F;messages&quot;, { &quot;search&quot;: &quot;foo&quot; }], [ &quot;GET&quot;, &quot;&#x2F;mailboxes&quot;, { &quot;etag&quot;: &quot;bar&quot; }] ] </code></pre> Obviously, you&#x27;re not limited to HTTP verbs if you do it like this, but it&#x27;s a familiar metaphor.
评论 #7143258 未加载
bjourneover 11 years ago
IMAP is mostly slow as hell when dealing with large mailboxes. For example fetching the 10 most recently updated threads (for a sane definition of what a thread&#x2F;conversation is, which imap doesn&#x27;t deal with at all) is insanely slow. It entails scanning the whole mailbox trying to figure out what the threads are and when someone last posted to them. Not fast when you can have millions of mails in a mailbox. Is that the kind of problems JMAP might solve?<p>Also interested in hearing if you know anything about GMail&#x27;s json api? Surely they must have something similar to JMAP which their web client is using even if it the api is proprietary?
cursorkover 11 years ago
I&#x27;m a big proponent of everything-behind-http because of the way it introduces a common language for integrating disparate services.<p>However! as someone who has had to debug some particularly gnarly email issues in the past I really do quite like the ability to telnet into an IMAP server to dig around. I also have an appreciation of some of the more horrific things that can go wrong...<p>So my point is that I&#x27;m not sure I agree with &quot;generally much easier to work with than IMAP&quot; - there&#x27;s two types of &quot;working with&quot;. One is building a new client&#x2F;server from scratch - I&#x27;d agree this might be easier, but not something that is done <i>that</i> often. The other is being able to quickly investigate issues with hand-crafted queries, and unfortunately I&#x27;d say a simple plain text question-answer interface is better - and here IMAP wins.<p>Maybe I&#x27;m just getting old - it&#x27;s probably true that almost everyone is happier with HTTP than &quot;telnet-able&quot; protocols (SMTP, IMAP, Redis, etc.) nowadays.
jbb555over 11 years ago
Lets reinvent everything badly in javascript.
tedivmover 11 years ago
I maintain an imap client library for PHP ( <a href="https://github.com/tedivm/Fetch" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;tedivm&#x2F;Fetch</a> ), which is far more painful than it really should be. I really am happy to see attempts at a more modern approach.
torranceover 11 years ago
As a complete aside, what is the language used under the section &quot;getMessageList&quot;?
评论 #7141751 未加载
jorangreefover 11 years ago
Any new access protocol for mail should be designed to work over persistent secure socket, not over HTTP. Additionally, there should be a minimum of work imposed on the server by the client.
评论 #7142633 未加载
compareover 11 years ago
I swear I was also thinking of inventing a JSON-based replacement for the IMAP just last week.
eitanyover 11 years ago
Looks very useful.