JMAP - un protocol deschis care va înlocui IMAP la schimbul de e-mailuri

В начале месяца на Hacker News a fost discutat activ протокол JMAP, dezvoltat sub conducerea IETF. Мы решили поговорить о том, зачем он понадобился и как устроен.

JMAP - un protocol deschis care va înlocui IMAP la schimbul de e-mailuri
/ PxAici /PD

Ce nu mi-a plăcut la IMAP

protocol IMAP был представлен в 1986 году. Многие вещи, описанные в стандарте, на сегодняшний день уже не актуальны. Например, протокол умеет возвращать количество строк письма и контрольные суммы MD5 — эта функциональность в современных почтовых клиентах практически не используется.

O altă problemă este legată de consumul de trafic. Cu IMAP, e-mailurile sunt stocate pe server și sincronizate periodic cu clienții locali. Dacă dintr-un motiv oarecare copia de pe dispozitivul utilizatorului este coruptă, toate e-mailurile trebuie să fie sincronizate din nou. În lumea modernă, când mii de dispozitive mobile pot fi conectate la server, această abordare duce la un consum crescut de trafic și resurse de calcul.

Сложности возникают не только с самим протоколом, но и почтовыми клиентами, которые с ним работают. С момента создания IMAP многократно подвергался различным ревизиям — актуальной версией на сегодняшний день является IMAP4. При этом для него существует множество опциональных расширений — в сети publicat nouăzeci de RFC-uri cu adăugiri. Una dintre cele mai recente este RFC8514, introdus în 2019.

При этом многие компании предлагают собственные проприетарные решения, которые должны упростить работу с IMAP или вообще заменить его: Gmail, Perspectivă, nylas. В результате получается так, что существующие почтовые клиенты поддерживают лишь некоторые из всех имеющихся функций. Подобное многообразие приводит к сегментации рынка.

«Более того, современный почтовый клиент должен не просто пересылать сообщения, но уметь работать с контактами и синхронизироваться с календарем, — говорит Сергей Белкин, начальник отдела развития IaaS-провайдера 1cloud.ru. — Сегодня для этих целей используют сторонние протоколы вроде LDAP, CardDAV и CalDAV. Такой подход усложняет настройку файрволов в корпоративных сетях и открывает новые векторы для кибератак».

JMAP este conceput pentru a rezolva aceste probleme. Este dezvoltat de experții FastMail sub îndrumarea Internet Engineering Task Force (IETF). Protocolul rulează pe HTTPS, folosește JSON (din acest motiv este potrivit nu numai pentru schimbul de mesaje electronice, ci și pentru rezolvarea unui număr de sarcini în cloud) și simplifică organizarea lucrului cu e-mailul în sistemele mobile. Pe lângă procesarea scrisorilor, JMAP oferă și posibilitatea de a conecta extensii pentru a lucra cu contacte și un planificator de calendar.

Caracteristicile noului protocol

JMAP este protocol apatrid (stateless) и не требует постоянного соединения с почтовым сервером. Эта особенность упрощает работу в нестабильных мобильных сетях и позволяет экономить заряд батареи устройств.

Электронное письмо в JMAP представлено в формате JSON-структуры. Она содержит всю информацию из сообщения RFC5322 (Internet Message Format), которая может понадобиться почтовым приложениям. По словам разработчиков, такой подход должен упростить создание клиентов, так как за решение потенциальных сложностей (связанных с MIMA, citirea antetelor și codificarea) serverul va răspunde.

Для обращения к серверу клиент использует API. Для этого он формирует аутентифицированный POST-запрос, свойства которого описаны в сессионном объекте JMAP. Запрос имеет формат application/json и состоит из одного объекта запроса JSON. Сервер также генерирует один объект ответа.

В specificații (punctul 3) autorii furnizează următorul exemplu cu o solicitare:

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

Mai jos este un exemplu de răspuns pe care serverul îl va genera:

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

Specificația completă JMAP cu exemple de implementare poate fi găsită la site-ul oficial проекта. Там же авторы разместили описание спецификаций для Contacte JMAP и Calendare JMAP — au ca scop lucrul cu calendare și liste de contacte. De conform авторов, Contacts и Calendars выделили в отдельные документы, чтобы их можно было дорабатывать и стандартизировать независимо от «ядра». Исходные коды для JMAP — в depozite pe GitHub.

JMAP - un protocol deschis care va înlocui IMAP la schimbul de e-mailuri
/ PxAici /PD

Perspective

Несмотря на то что официально работа над стандартом еще не завершена, его уже внедряют в продакшн-средах. Например, создатели открытого почтового сервера Cyrus IMAP a implementat versiunea sa JMAP. Dezvoltatori de la FastMail eliberată cadru de server pentru noul protocol în Perl, și autorii JMAP au prezentat server proxy.

Можно ожидать, что в будущем проектов на базе JMAP будет становиться все больше. Например, есть некоторая вероятность, что на новый протокол перейдут разработчики из Open-Xchange, создающие IMAP-сервер для Linux-систем. Отказаться от IMAP их очень întreabă membrii comunității, сформировавшегося вокруг инструментов компании.

Разработчики из IETF и FastMail говорят, что все больше пользователей видят необходимость в новом открытом стандарте для обмена сообщениями. Авторы JMAP надеются, что в будущем больше компаний начнет внедрять у себя этот протокол.

Наши дополнительные ресурсы и источники:

JMAP - un protocol deschis care va înlocui IMAP la schimbul de e-mailuri Cum să verificați cookie-urile pentru conformitatea cu GDPR - un nou instrument deschis vă va ajuta

JMAP - un protocol deschis care va înlocui IMAP la schimbul de e-mailuri Cum să salvați cu o interfață de programare a aplicației
JMAP - un protocol deschis care va înlocui IMAP la schimbul de e-mailuri DevOps într-un serviciu cloud folosind exemplul 1cloud.ru
JMAP - un protocol deschis care va înlocui IMAP la schimbul de e-mailuri Evoluția arhitecturii 1cloud cloud

JMAP - un protocol deschis care va înlocui IMAP la schimbul de e-mailuri Потенциальные атаки на HTTPS и способы защиты от них
JMAP - un protocol deschis care va înlocui IMAP la schimbul de e-mailuri Cum să protejați un server pe Internet: experiența 1cloud.ru
JMAP - un protocol deschis care va înlocui IMAP la schimbul de e-mailuri Un scurt program educațional: ce este integrarea continuă

Sursa: www.habr.com

Adauga un comentariu