BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

FastMail开源多个JMAP项目,助力邮件服务器和客户端开发

| 作者 谢丽 关注 9 他的粉丝 发布于 2015年8月14日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

去年12月,FastMail宣布了JMAP项目,旨在开发一种新协议取代IMAP,用于同步邮件、日历和联系人,并减少数据使用,提高同步效率。JMAP提供了一种传输层无关的、基于JSON的无状态API,兼容IMAP数据模型,很容易在支持IMAP的服务器上实现。

据FastMail介绍,JMAP有许多优点,包括:

  • JMAP是移动设备友好的:JMAP可以在一个HTTP请求中处理多个命令,并且拥有一种高效的更新机制,减少了无线通信,延长了电池使用时间。
  • JMAP是服务器友好的:JMAP是无状态协议,服务器无需像IMAP那样维护一个与当前状态不同步的邮箱视图版本。
  • JMAP是网络友好的:IMAP可以发送的主动更新数量不受限制,但在JMAP中,更新包含限制,如果更新过多,就会返回错误,客户端将需要重新加载视图。
  • JMAP是多客户端友好的:在IMAP中,如果用户重命名一个文件夹或者移动消息,那么做出动作的客户端能够更新其本地缓存,但其它客户端需要重新获取所有数据。而JMAP使用唯一ID标识消息,没有变化的数据可以一直缓存。

从发布以来,FastMail就一直不断地修订JMAP规范,也有其他公司加入进来与FastMail一起构建电子邮件的未来。例如,Atmail使用JMAP助力下一代移动应用开发;世界上最流行的开源Webmail Roundcube的下一个版本也将基于JMAP构建。现在,FastMail已经到了客户端和服务器开发阶段。为此,他们遵循MIT协议开源了几个新的JMAP项目:

  • JMAP代理:该代理可以置于任何IMAP服务器(最适合于支持CONDSTORE的服务器)、CardDAV和CalDAV服务器之前,向它们提供一个基本完整的JMAP接口。该代理已相当稳定,可以用于测试新的JMAP客户端实现。感兴趣的读者可以试用该代理的托管版本,或者下载源代码
  • JMAP JavaScript客户端库JS客户端库以下一代FastMail接口为基础,依赖于Overture库的一个子集,是JMAP邮箱、日历和联系人模型的一个完整实现。它支持本地异步修改和多级Undo/Redo,允许网络故障,可以在网络恢复时将修改同步回服务器。
  • JMAP Webmail演示程序:FastMail提供了一个基于JS客户端库和JMAP代理的Webmail演示程序,提供了如下功能:通过拖放在文件夹之间移动、即时动作、多级Undo/Redo、无需分页实现全邮箱访问、对话主题、简单的快捷键和一个简单的日历视图。按照FastMail的说法,他们后续不会继续增加更多功能,但欢迎他人创建分支,开发出更成熟的客户端。

除了这些项目外,他们正努力使JMAP成为开源Cyrus IMAP服务器的一部分。那将是第一个完全适用于生产环境的实现。而在FastMail内部,他们已经有一个Web UI版本运行在JMAP上。如果读者想要实现自己的客户端,那么可以从客户端开发指南入手,并参考JMAP规范实现建议。如果想参与JMAP项目,则可以加入JMAP邮件列表


感谢魏星对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT