写点什么

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

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

关注

评论

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

Thanos 架构剖析(四)数据存储和运维工具

耳东@Erdong

store tools Thanos 签约计划第二季

手把手快速入门Spring Boot实战系列

小阿杰

SpringBoot 2 内容合集 签约计划第二季

实验 | OSPF HMAC-SHA 扩展身份验证

Ethereal

OSPF 网络技术 HMAC-SHA 扩展身份验证

【docker 总结】第三篇 - Container 容器

Brave

,docker 12月日更

Thanos 架构剖析(三)如何选择 Sidecar 和 Receiver

耳东@Erdong

Thanos 签约计划第二季 Sidecar Receiver

精彩回顾 | Serverless Developer Meetup 12.04 深圳站

阿里巴巴云原生

阿里云 开发者 云原生 severless 线下活动

元宇宙100讲-0x004

hackstoic

KubeDL 0.4.0 - Kubernetes AI 模型版本管理与追踪

阿里巴巴云原生

阿里云 AI Kubernetes 云原生

Thanos 架构剖析(一)Thanos 架构总览

耳东@Erdong

架构 Thanos 签约计划第二季

问题远比答案珍贵

mtfelix

28天写作

如何在 Linux 中更改主机名?运维工程师应该都知道吧!

Ethereal

Linux 运维

14 位大咖导师集结完毕,阿里云云原生加速器就等你来

阿里巴巴云原生

阿里云 云原生 加速器 招募活动

精髓 一文带你了解VMware vSphere 网络、vSwitch、端口组!

Ethereal

底层逻辑的生命力

卢卡多多

28天写作 12月日更

国产分布式数据库StarDB核心技术大揭秘一:内核分解之数据分片

京东科技开发者

完善跨境金融区块链服务平台,支持区域开放创新和特殊区域建设

CECBC

言简意赅!什么是工业交换机?

Ethereal

【分布式技术专题】「OSS中间件系列」从0到1的介绍一下开源对象存储MinIO技术架构

洛神灬殇

OSS Minio Minio 集群 文件服务器 12月日更

为什么人们不喜欢 PHP?

Ethereal

Go 语言快速入门指南:第二篇 变量与常量

宇宙之一粟

golang 常量 变量 签约计划第二季 12月日更

Dubbo3 Triple 协议简介与选型思考

阿里巴巴云原生

阿里云 云原生 dubbo HTTP 协议

Thanos 架构剖析(二)统一的查询入口

耳东@Erdong

Thanos query 签约计划第二季 Query Frontend

改变生物学研究进程:AI模型打开生命信息密码

脑极体

9倍转让,外网疯抢:科技儿童汽车的前景与“钱景”

脑极体

2020年净利暴涨1288%,遨森电商携手DataPipeline构建实时数据融合体系跑出加速度!

DataPipeline数见科技

数据库 大数据 中间件 数据融合 数据管理

用户增长模型:AARRR

石云升

AARRR 28天写作 增长黑客 12月日更

5分钟详解什么是Redis?

Ethereal

数据库 nosql redis

RingCentral铃盛技术干货精选合集

RingCentral铃盛

敏捷 前端 框架 技术专题合集

【教程直播第4期】揭秘数据迁移之 OceanBase CDC & OMS 社区版能力

OceanBase 数据库

数据库 开源 直播 课程 oceanbase

微信朋友圈高性能复杂度

ren

架构师训练营 4 期

重新定义分析 - EventBridge实时事件分析平台发布

阿里巴巴云原生

阿里云 云原生 EventBridge

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