JMAP - адкрыты пратакол заменіць IMAP пры абмене электроннымі лістамі

У пачатку месяца на Hacker News актыўна абмяркоўваўся пратакол JMAP, які распрацоўваецца пад кіраўніцтвам IETF. Мы вырашылі пагаварыць аб тым, навошта ён спатрэбіўся і як уладкованы.

JMAP - адкрыты пратакол заменіць IMAP пры абмене электроннымі лістамі
/ PxТут / PD

Чым не дагадзіў IMAP

пратакол IMAP быў прадстаўлены ў 1986 годзе. Многія рэчы, апісаныя ў стандарце, на сённяшні дзень ужо не актуальныя. Напрыклад, пратакол умее вяртаць колькасць радкоў ліста і кантрольныя сумы. MD5 - Гэтая функцыянальнасць у сучасных паштовых кліентах практычна не выкарыстоўваецца.

Іншая праблема звязана са спажываннем трафіку. У выпадку з IMAP электронныя лісты захоўваюцца на серверы і перыядычна сінхранізуюцца з лакальнымі кліентамі. Калі па нейкай прычыне копія на прыладзе карыстальніка "псуецца", даводзіцца зноўку сінхранізаваць усю пошту. У сучасным свеце, калі да сервера могуць быць падлучаны тысячы мабільных прылад, такі падыход прыводзіць да падвышанага выдатку трафіку і вылічальных рэсурсаў.

Цяжкасці ўзнікаюць не толькі з самім пратаколам, але і паштовымі кліентамі, якія з ім працуюць. З моманту стварэння IMAP шматкроць падвяргаўся розным рэвізіям – актуальнай версіяй на сённяшні дзень з'яўляецца IMAP4. Пры гэтым для яго існуе мноства апцыянальных пашырэнняў – у сетцы апублікаваныя XNUMX 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

Дадаць каментар