JMAP - אַן אָפֿן פּראָטאָקאָל וואָס וועט פאַרבייַטן IMAP ווען איר ויסבייַטן ימיילז

В начале месяца на Hacker News активно обсуждался протокол JMAP, разрабатываемый под руководством IETF. Мы решили поговорить о том, зачем он понадобился и как устроен.

JMAP - אַן אָפֿן פּראָטאָקאָל וואָס וועט פאַרבייַטן IMAP ווען איר ויסבייַטן ימיילז
/ סטאַקס /PD

Чем не угодил IMAP

פּראָטאָקאָל ימאַפּ был представлен в 1986 году. Многие вещи, описанные в стандарте, на сегодняшний день уже не актуальны. Например, протокол умеет возвращать количество строк письма и контрольные суммы מדקסנומקס — эта функциональность в современных почтовых клиентах практически не используется.

Другая проблема связана с потреблением трафика. В случае с IMAP электронные письма хранятся на сервере и периодически синхронизируются с локальными клиентами. Если по какой-то причине копия на устройстве пользователя «портится», приходится заново синхронизировать всю почту. В современном мире, когда к серверу могут быть подключены тысячи мобильных устройств, такой подход приводит к повышенному расходу трафика и вычислительных ресурсов.

Сложности возникают не только с самим протоколом, но и почтовыми клиентами, которые с ним работают. С момента создания IMAP многократно подвергался различным ревизиям — актуальной версией на сегодняшний день является IMAP4. При этом для него существует множество опциональных расширений — в сети ארויס девяносто RFC с дополнениями. Одним из самых свежих является RFC8514, представленный в 2019 году.

При этом многие компании предлагают собственные проприетарные решения, которые должны упростить работу с IMAP или вообще заменить его: Gmail, דערוואַרטונג, נילאַס. В результате получается так, что существующие почтовые клиенты поддерживают лишь некоторые из всех имеющихся функций. Подобное многообразие приводит к сегментации рынка.

«Более того, современный почтовый клиент должен не просто пересылать сообщения, но уметь работать с контактами и синхронизироваться с календарем, — говорит Сергей Белкин, начальник отдела развития IaaS-провайдера 1cloud.ru. — Сегодня для этих целей используют сторонние протоколы вроде לדאַפּ, קאַרדדאַוו и קאַלדאַוו. Такой подход усложняет настройку файрволов в корпоративных сетях и открывает новые векторы для кибератак».

Решить обозначенные проблемы призван JMAP. Его разрабатывают специалисты из FastMail под руководством Инженерного совета интернета (IETF). Протокол работает поверх HTTPS, использует JSON (по этой причине он подойдет не только для обмена электронными сообщениями, но и для решения ряда задач в облаке) и упрощает организацию работы с почтой в мобильных системах. Кроме обработки писем, в JMAP также предусмотрена возможность подключения расширений для работы с контактами и календарём-планировщиком.

Особенности нового протокола

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

Электронное письмо в JMAP представлено в формате JSON-структуры. Она содержит всю информацию из сообщения RFC5322 (Internet Message Format), которая может понадобиться почтовым приложениям. По словам разработчиков, такой подход должен упростить создание клиентов, так как за решение потенциальных сложностей (связанных с מימע, чтением заголовков и кодированием) будет отвечать сервер.

Для обращения к серверу клиент использует 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 Contacts и JMAP Calendars — они направлены на работу с календарями и списками контактов. По לויט авторов, Contacts и Calendars выделили в отдельные документы, чтобы их можно было дорабатывать и стандартизировать независимо от «ядра». Исходные коды для JMAP — в ריפּאַזאַטאָריז אויף GitHub.

JMAP - אַן אָפֿן פּראָטאָקאָל וואָס וועט פאַרבייַטן IMAP ווען איר ויסבייַטן ימיילז
/ סטאַקס /PD

פּראַספּעקס

Несмотря на то что официально работа над стандартом еще не завершена, его уже внедряют в продакшн-средах. Например, создатели открытого почтового сервера Cyrus IMAP реализовали его JMAP-версию. Разработчики из FastMail באפרייט серверный фреймворк для нового протокола на Perl, а авторы JMAP представили פראקסי סערווער.

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

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

אונדזער נאָך רעסורסן און רעסורסן:

JMAP - אַן אָפֿן פּראָטאָקאָל וואָס וועט פאַרבייַטן IMAP ווען איר ויסבייַטן ימיילז ווי צו קאָנטראָלירן קיכלעך פֿאַר GDPR העסקעם - אַ נייַע אָפֿן געצייַג וועט העלפֿן

JMAP - אַן אָפֿן פּראָטאָקאָל וואָס וועט פאַרבייַטן IMAP ווען איר ויסבייַטן ימיילז ווי צו ראַטעווען מיט אַ אַפּלאַקיישאַן פּראָגראַממינג צובינד
JMAP - אַן אָפֿן פּראָטאָקאָל וואָס וועט פאַרבייַטן IMAP ווען איר ויסבייַטן ימיילז DevOps אין אַ וואָלקן דינסט מיט דעם בייַשפּיל פון 1cloud.ru
JMAP - אַן אָפֿן פּראָטאָקאָל וואָס וועט פאַרבייַטן IMAP ווען איר ויסבייַטן ימיילז די עוואָלוציע פון ​​וואָלקן אַרקאַטעקטשער 1cloud

JMAP - אַן אָפֿן פּראָטאָקאָל וואָס וועט פאַרבייַטן IMAP ווען איר ויסבייַטן ימיילז Потенциальные атаки на HTTPS и способы защиты от них
JMAP - אַן אָפֿן פּראָטאָקאָל וואָס וועט פאַרבייַטן IMAP ווען איר ויסבייַטן ימיילז Как защитить сервер в интернете: опыт 1cloud.ru
JMAP - אַן אָפֿן פּראָטאָקאָל וואָס וועט פאַרבייַטן IMAP ווען איר ויסבייַטן ימיילז Короткий ликбез: что такое Continuous Integration

מקור: www.habr.com

לייגן אַ באַמערקונג