На початку місяця на Hacker News протокол JMAP, . Ми вирішили поговорити про те, навіщо він знадобився і як улаштований.
/ / PD
Чим не потрапив IMAP
протокол був представлений у 1986 році. Багато речей, описаних у стандарті, на сьогоднішній день вже не актуальні. Наприклад, протокол вміє повертати кількість рядків листа та контрольні суми - Ця функціональність у сучасних поштових клієнтах практично не використовується.
Інша проблема пов'язана із споживанням трафіку. У випадку з IMAP електронні листи зберігаються на сервері та періодично синхронізуються з локальними клієнтами. Якщо з якоїсь причини копія на пристрої користувача "псується", доводиться знову синхронізувати всю пошту. У сучасному світі, коли до сервера можуть бути підключені тисячі мобільних пристроїв, такий підхід призводить до підвищеної витрати трафіку та обчислювальних ресурсів.
Складнощі виникають не лише з самим протоколом, а й поштовими клієнтами, які з ним працюють. З моменту створення IMAP багаторазово піддавався різним ревізіям – актуальною версією на сьогоднішній день є IMAP4. При цьому для нього існує безліч опціональних розширень – у мережі дев'яносто RFC з додатками. Одним із найсвіжіших є , представлений у 2019 році.
При цьому багато компаній пропонують власні пропрієтарні рішення, які мають спростити роботу з IMAP або взагалі замінити його: , , . В результаті виходить так, що існуючі поштові клієнти підтримують лише деякі з усіх функцій. Подібне різноманіття призводить до сегментації ринку.
«Більш того, сучасний поштовий клієнт має не просто пересилати повідомлення, але вміти працювати з контактами та синхронізуватися з календарем, — каже Сергій Бєлкін, начальник відділу розвитку IaaS-провайдера . — Сьогодні для цього використовують сторонні протоколи начебто , и . Такий підхід ускладнює налаштування файрволів у корпоративних мережах та відкриває нові вектори для кібератак».
Вирішити зазначені проблеми покликаний JMAP. Його розробляють спеціалісти з FastMail під керівництвом Інженерної ради інтернету (IETF). Протокол працює поверх HTTPS, використовує JSON (з цієї причини він підійде не тільки для обміну електронними повідомленнями, але і для вирішення низки завдань у хмарі) та спрощує організацію роботи з поштою в мобільних системах. Крім обробки листів, JMAP також передбачає можливість підключення розширень для роботи з контактами і календарем-планувальником.
Особливості нового протоколу
JMAP є (stateless) та не вимагає постійного з'єднання з поштовим сервером. Ця особливість полегшує роботу в нестабільних мобільних мережах і дозволяє заощаджувати заряд батареї пристроїв.
Електронний лист JMAP представлений у форматі JSON-структури. Вона містить всю інформацію з повідомлення (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 з прикладами реалізації можна знайти на проекту. Там же автори розмістили опис специфікацій для и — вони спрямовані на роботу з календарями та списками контактів. за авторів, Contacts та Calendars виділили в окремі документи, щоб їх можна було доопрацьовувати та стандартизувати незалежно від «ядра». Вихідні коди для JMAP - в .

/ / PD
Перспективи
Незважаючи на те, що офіційно роботу над стандартом ще не завершено, його вже впроваджують у продакшн-середовищах. Наприклад, творці відкритого поштового сервера реалізували його JMAP-версію. Розробники з FastMail серверний фреймворк для нового протоколу Perl, а автори JMAP представили .
Очікується, що в майбутньому проектів на базі JMAP ставатиме дедалі більше. Наприклад, є певна ймовірність, що на новий протокол перейдуть розробники з Open-Xchange, які створюють IMAP-сервер для Linux-Сістем. Відмовитися від IMAP їх дуже , що сформувався навколо інструментів компанії.
Розробники з IETF і FastMail говорять, що все більше користувачів бачать необхідність нового відкритого стандарту для обміну повідомленнями. Автори JMAP сподіваються, що в майбутньому більше компаній почне впроваджувати цей протокол.
Наші додаткові ресурси та джерела:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Джерело: habr.com
