JMAP - 一种开放协议,在交换电子邮件时将取代 IMAP

本月早些时候的《黑客新闻》 被积极讨论 JMAP协议 在 IETF 的指导下开发。我们决定讨论为什么需要它以及它是如何工作的。

JMAP - 一种开放协议,在交换电子邮件时将取代 IMAP
/ 摄影 /PD

我不喜欢 IMAP 的地方

协议 IMAP 于 1986 年推出。标准中描述的许多内容如今已不再适用。例如,协议可以返回字母的行数和校验和 MD5 - 现代电子邮件客户端实际上不使用此功能。

另一个问题与流量消耗有关。使用 IMAP,电子邮件存储在服务器上并定期与本地客户端同步。如果由于某种原因用户设备上的副本损坏,则必须再次同步所有邮件。在现代世界,当成千上万的移动设备可以连接到服务器时,这种方法会导致流量和计算资源的消耗增加。

困难不仅与协议本身有关,而且与使用该协议的电子邮件客户端有关。自创建以来,IMAP 已多次进行各种修订 - 目前的版本是 IMAP4。同时,它还有很多可选的扩展——网络上 发表 九十个 RFC 并添加了内容。最近的一项是 RFC8514,于 2019 年推出。

与此同时,许多公司提供了自己的专有解决方案,可以简化 IMAP 的使用,甚至取代它: Gmail的, Outlook, 尼拉斯。结果是现有的电子邮件客户端仅支持部分可用功能。这种多样性导致市场细分。

IaaS 提供商的开发主管 Sergei Belkin 表示:“此外,现代电子邮件客户端不仅应该转发消息,还应该能够处理联系人并与日历同步。” 1cloud.ru。 — 如今,第三方协议如 LDAP的, 卡DAV и 加州DAV。这种方法使企业网络中的防火墙配置变得复杂,并为网络攻击开辟了新的载体。”

JMAP就是为了解决这些问题而设计的。它是由 FastMail 专家在互联网工程任务组 (IETF) 的指导下开发的。该协议在 HTTPS 之上运行,使用 JSON(因此它不仅适用于交换电子消息,还适用于解决云中的许多任务)并简化了在移动系统中处理邮件的组织。除了处理信件之外,JMAP 还提供连接扩展以处理联系人和日历调度程序的功能。

新协议的特点

JMAP 是 无状态协议 (无状态)并且不需要与邮件服务器的永久连接。此功能简化了不稳定移动网络中的工作并节省了设备的电池电量。

JMAP 中的电子邮件以 JSON 结构格式表示。它包含消息中的所有信息 RFC5322 (互联网消息格式),电子邮件应用程序可能需要该格式。根据开发人员的说法,这种方法应该简化客户端的创建,因为解决了潜在的困难(与 MIME,读取标头和编码)服务器将响应。

客户端使用 API 来联系服务器。为此,它会生成经过身份验证的 POST 请求,其属性在 JMAP 会话对象中进行描述。该请求采用 application/json 格式,由单个 JSON 请求对象组成。服务器还生成一个响应对象。

В 规格 (第 3 点)作者提供了以下示例并提出请求:

{
  "using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
  "methodCalls": [
    [ "method1", {
      "arg1": "arg1data",
      "arg2": "arg2data"
    }, "c1" ],
    [ "method2", {
      "arg1": "arg1data"
    }, "c2" ],
    [ "method3", {}, "c3" ]
  ]
}

以下是服务器将生成的响应的示例:

{
  "methodResponses": [
    [ "method1", {
      "arg1": 3,
      "arg2": "foo"
    }, "c1" ],
    [ "method2", {
      "isBlah": true
    }, "c2" ],
    [ "anotherResponseFromMethod2", {
      "data": 10,
      "yetmoredata": "Hello"
    }, "c2"],
    [ "error", {
      "type":"unknownMethod"
    }, "c3" ]
  ],
  "sessionState": "75128aab4b1b"
}

完整的 JMAP 规范和示例实现可以在以下位置找到: 官方网站 项目。作者还在那里发布了规范的描述 JMAP 联系人 и JMAP 日历 — 它们旨在处理日历和联系人列表。经过 根据 作者、联系人和日历被分成单独的文档,以便它们可以独立于“核心”进一步开发和标准化。 JMAP 的源代码 - in GitHub 上的存储库.

JMAP - 一种开放协议,在交换电子邮件时将取代 IMAP
/ 摄影 /PD

前途

尽管该标准的工作尚未正式完成,但它已经在生产环境中实施。例如,开放邮件服务器的创建者 赛勒斯 IMAP 实施其 JMAP 版本。 FastMail 的开发人员 已发布 Perl 中新协议的服务器框架,以及 JMAP 的作者提出的 代理服务器.

可以预见,未来将会有越来越多的基于JMAP的项目。例如,正在为 Linux 系统创建 IMAP 服务器的 Open-Xchange 开发人员有可能会转向新协议。非常拒绝 IMAP 他们 社区成员询问,围绕公司的工具形成。

IETF 和 FastMail 的开发人员表示,越来越多的用户看到了对新的开放消息传递标准的需求。 JMAP 的作者希望将来有更多的公司开始实施该协议。

我们的额外资源和来源:

JMAP - 一种开放协议,在交换电子邮件时将取代 IMAP 如何检查 cookie 是否符合 GDPR - 一个新的开放工具将提供帮助

JMAP - 一种开放协议,在交换电子邮件时将取代 IMAP 如何使用应用程序编程接口进行保存
JMAP - 一种开放协议,在交换电子邮件时将取代 IMAP 使用 1cloud.ru 示例的云服务中的 DevOps
JMAP - 一种开放协议,在交换电子邮件时将取代 IMAP 云架构1cloud的演进

JMAP - 一种开放协议,在交换电子邮件时将取代 IMAP HTTPS 的潜在攻击以及如何防御
JMAP - 一种开放协议,在交换电子邮件时将取代 IMAP 如何保护互联网上的服务器:1cloud.ru 经验
JMAP - 一种开放协议,在交换电子邮件时将取代 IMAP 简短的教育计划:什么是持续集成

来源: habr.com

添加评论