JMAP – відкритий протокол замінить IMAP під час обміну електронними листами

На початку місяця на Hacker News активно обговорювався протокол JMAP, що розробляється під керівництвом IETF. Ми вирішили поговорити про те, навіщо він знадобився і як улаштований.

JMAP – відкритий протокол замінить IMAP під час обміну електронними листами
/ PxТут / PD

Чим не потрапив IMAP

протокол IMAP був представлений у 1986 році. Багато речей, описаних у стандарті, на сьогоднішній день вже не актуальні. Наприклад, протокол вміє повертати кількість рядків листа та контрольні суми MD5 - Ця функціональність у сучасних поштових клієнтах практично не використовується.

Інша проблема пов'язана із споживанням трафіку. У випадку з IMAP електронні листи зберігаються на сервері та періодично синхронізуються з локальними клієнтами. Якщо з якоїсь причини копія на пристрої користувача "псується", доводиться знову синхронізувати всю пошту. У сучасному світі, коли до сервера можуть бути підключені тисячі мобільних пристроїв, такий підхід призводить до підвищеної витрати трафіку та обчислювальних ресурсів.

Складнощі виникають не лише з самим протоколом, а й поштовими клієнтами, які з ним працюють. З моменту створення IMAP багаторазово піддавався різним ревізіям – актуальною версією на сьогоднішній день є IMAP4. При цьому для нього існує безліч опціональних розширень – у мережі опубліковано дев'яносто RFC з додатками. Одним із найсвіжіших є RFC8514, представлений у 2019 році.

При цьому багато компаній пропонують власні пропрієтарні рішення, які мають спростити роботу з IMAP або взагалі замінити його: Gmail, прогноз, Нілас. В результаті виходить так, що існуючі поштові клієнти підтримують лише деякі з усіх функцій. Подібне різноманіття призводить до сегментації ринку.

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

Вирішити зазначені проблеми покликаний JMAP. Його розробляють спеціалісти з FastMail під керівництвом Інженерної ради інтернету (IETF). Протокол працює поверх HTTPS, використовує JSON (з цієї причини він підійде не тільки для обміну електронними повідомленнями, але і для вирішення низки завдань у хмарі) та спрощує організацію роботи з поштою в мобільних системах. Крім обробки листів, JMAP також передбачає можливість підключення розширень для роботи з контактами і календарем-планувальником.

Особливості нового протоколу

JMAP є протоколом без збереження стану (stateless) та не вимагає постійного з'єднання з поштовим сервером. Ця особливість полегшує роботу в нестабільних мобільних мережах і дозволяє заощаджувати заряд батареї пристроїв.

Електронний лист JMAP представлений у форматі JSON-структури. Вона містить всю інформацію з повідомлення RFC5322 (Internet Message Format), яка може знадобитися поштовим програмам. За словами розробників, такий підхід має спростити створення клієнтів, оскільки за вирішення потенційних складнощів (пов'язаних з 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 Contacts и JMAP Calendars — вони спрямовані на роботу з календарями та списками контактів. за словами авторів, Contacts та Calendars виділили в окремі документи, щоб їх можна було доопрацьовувати та стандартизувати незалежно від «ядра». Вихідні коди для JMAP - в репозиторії на GitHub.

JMAP – відкритий протокол замінить IMAP під час обміну електронними листами
/ PxТут / PD

Перспективи

Незважаючи на те, що офіційно роботу над стандартом ще не завершено, його вже впроваджують у продакшн-середовищах. Наприклад, творці відкритого поштового сервера Cyrus IMAP реалізували його JMAP-версію. Розробники з FastMail випустили серверний фреймворк для нового протоколу Perl, а автори JMAP представили проксі-сервер.

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

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

Наші додаткові ресурси та джерела:

JMAP – відкритий протокол замінить IMAP під час обміну електронними листами Як перевірити cookies на відповідність GDPR - допоможе новий відкритий інструмент

JMAP – відкритий протокол замінить IMAP під час обміну електронними листами Як заощадити за допомогою прикладного програмного інтерфейсу
JMAP – відкритий протокол замінить IMAP під час обміну електронними листами DevOps у хмарному сервісі на прикладі 1cloud.ru
JMAP – відкритий протокол замінить IMAP під час обміну електронними листами Еволюція хмари архітектури 1cloud

JMAP – відкритий протокол замінить IMAP під час обміну електронними листами Потенційні атаки на HTTPS та способи захисту від них
JMAP – відкритий протокол замінить IMAP під час обміну електронними листами Як захистити сервер в інтернеті: досвід 1cloud.ru
JMAP – відкритий протокол замінить IMAP під час обміну електронними листами Короткий лікнеп: що таке Continuous Integration

Джерело: habr.com

Додати коментар або відгук