写点什么

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:492281
用户头像

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

关注

评论

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

房产|1月全国70城房价出炉!疫情放开后你关心的城市房价有何变化

前嗅大数据

大数据 数据分析 房产

接口调试时如何请求一个需要登录才能访问的接口

代码没有BUG

接口调试 API测试 apipost

一款好的低代码开发平台应该是什么样?

YonBuilder低代码开发平台

2023-02-17:sdl是跨平台的多媒体开发库,请问用go语言如何调用?

福大大架构师每日一题

golang 音视频 SDL 流媒体 福大大

2023年中国直播电商发展洞察

易观分析

零售 直播 电商

CleanMyMac2023电脑版免费下载教程

茶色酒

CleanMyMac X2023

6 理解业务概念和业务组件

涛哥 数字产品和业务架构

企业架构 业务架构

阿里内部消息中间件合集:MQ+Kafka+体系图+笔记

Java kafka MQ 消息队列 消息中间件

Teradata退出中国背后:云数仓成为行业主流发展趋势

酷克数据HashData

StudioOne6免费试用版下载及版本功能介绍

茶色酒

StudioOne6 StudioOne

云原生的基建:我理解的可观测性和OpenTelemetry

agnostic

可观测性 OpenTelemetry

Java高手速成 | Java web 实训之投票系统

TiAmo

Java Java web

Guitar Pro8吉他软件最新版安装下载教程

茶色酒

Guitar Pro8

CleanMyMac2023测试版功能介绍

茶色酒

CleanMyMac X CleanMyMac X2023

SpringBoot 容器刷新前回调ApplicationContextInitializer

Java spring Spring Boot

华为游戏中心花瓣游戏开发者服务持续升级,赋能高效研运

最新动态

Pandoc API 上手指南

面向工资Coding

嵌入式ARM设计编程(五) 实现信号的FIR滤波操作

timerring

arm

CorelDRAW Graphics Suite2023最新版本号

茶色酒

CorelDRAW 2022 CorelDraw2023

冰河指南AI技术社区基于ChatGPT正式启动运营

冰河

人工智能 程序员 AI 架构师 ChatGPT

聊聊如何利用redis实现多级缓存同步

Java redis 缓存 多级缓存

今年很火的AI绘画怎么玩

得物技术

嵌入式ARM设计编程(四) ARM启动过程控制

timerring

FPGA

chatGPT:探讨如何实现自动化测试场景

夏兮。

自动化测试 selenium ChatGPT

户外交通信息led显示屏有以下特点才正规

Dylan

安装 LED显示屏 户外LED显示屏

架构实战营模块9作业

张建闯

架构实战营

LeetCode题解:1237. 找出给定方程的正整数解,枚举,详细注释

Lee Chen

算法 LeetCode

追光进行时:沿着全光运力的新航道,加速驶向算力时代

脑极体

算力

「 Java基础-对象 」一篇文章讲清楚Java开发中如何更优雅的创建对象

小刘学编程

Java Builder 序列化 对象创建 new

HashMap每次扩容时,为什么都必须是2的N次方?

LeetCode题解:1237. 找出给定方程的正整数解,二分查找,详细注释

Lee Chen

JavaScript 算法 LeetCode 二分查找

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