写点什么

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

  • 2015-08-13
  • 本文字数:1247 字

    阅读完需:约 4 分钟

去年 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 读者交流群)。

2015-08-13 03:492571
用户头像

发布了 1008 篇内容, 共 448.2 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

Java多线程知识点总结(思维导图+源码笔记),已整理成PDF版文档

Java架构之路

Java 程序员 面试 编程语言 多线程

解Bug之路-记一次对端机器宕机后的tcp行为

无毁的湖光

Linux TCP socket MQ Java 分布式

一分钟带你认识深度学习中的知识蒸馏

华为云开发者联盟

学习

一张图揭秘在阿里、腾讯、美团工作的区别

Java架构师迁哥

云图说 | 华为云应用服务网格,让你的应用治理智能化、可视化

华为云开发者联盟

网络I

Spring知识点总结!已整理成142页离线文档(源码笔记+思维导图)

Java架构之路

Java spring 程序员 面试 编程语言

网站审核提不了款维护的解决方法有哪些?

丛林里的余光

网站平台

快速了解前端开发HTML的正确姿势

华为云开发者联盟

CSS html

话题讨论 | 你的编程能力是如何突飞猛进的?

InfoQ写作社区官方

学习 写作平台 排行榜 代码

Android Native crash处理案例分享

阿里云金融线TAM SRE专家服务团队

android

Spring Cloud 微服务实践(5) - 认证中心

xiaoboey

微服务 Spring Cloud OAuth2 JWT

从基础到实践,一文带你看懂HashMap

华为云开发者联盟

Java hashmap

从零开始的机器学习:免费在线教科书

计算机与AI

学习

架构师第一期作业(第二周)

Cheer

课程作业

可以秒杀全场的SpringCloud微服务电商实战项目,文档贼全

Java架构之路

Java 程序员 编程语言 架构师 项目实战

一大波人气博主袭来,现场直播华为全联接2020!

华为云开发者联盟

开发者 华为云

架构师训练营第二周学习总结

邓昀垚

是的,我去封闭开发了

程序员与厨子

生活,随想 工作哲学 摄影 摄影征文

高难度对话读书笔记—情绪篇2

wo是一棵草

记一次"截图"功能的项目调研过程!

程序员 编程开发 项目实战 架构师技能

九、给小白看的第二篇Python基础教程

刘润森

Python

原来 8 张图,就可以搞懂「零拷贝」了

小林coding

Linux 计算机基础 高性能 零拷贝

有感-人工智能学习

superman

anyRTC无人机图传方案

anyRTC开发者

WebRTC 语音 直播 RTC 安卓

学习编程

InfoQ_34a83d636158

架构师训练营第二周作业

邓昀垚

大作业

李白

2020年9月编程语言排行榜TOP20:学习Java语言的前景

Java架构师迁哥

Spring Cloud 微服务实践(4) - OAuth2

xiaoboey

微服务 Spring Cloud OAuth2 JWT

Spring Cloud 微服务实践(6) - 资源服务器

xiaoboey

微服务 Spring Cloud OAuth2 JWT 权限控制

腾讯这份Java面试核心,开源半天就收到Git近10W点赞

小Q

Java 分布式 算法 JVM 多线程

FastMail开源多个JMAP项目,助力邮件服务器和客户端开发_语言 & 开发_谢丽_InfoQ精选文章