JMAP – otwarty protokół, który zastąpi IMAP podczas wymiany e-maili

Na początku tego miesiąca w Hacker News była aktywnie dyskutowana Protokół JMAP opracowany pod kierunkiem IETF. Postanowiliśmy porozmawiać o tym, dlaczego jest to potrzebne i jak to działa.

JMAP – otwarty protokół, który zastąpi IMAP podczas wymiany e-maili
/ PxHere /PD

Co mi się nie podobało w IMAP

Protokół IMAP został wprowadzony w 1986 roku. Wiele rzeczy opisanych w normie nie jest już dziś aktualnych. Na przykład protokół może zwrócić liczbę wierszy litery i sumy kontrolne MD5 - ta funkcjonalność praktycznie nie jest wykorzystywana we współczesnych klientach pocztowych.

Kolejnym problemem jest zużycie ruchu. Dzięki protokołowi IMAP wiadomości e-mail są przechowywane na serwerze i okresowo synchronizowane z klientami lokalnymi. Jeśli z jakiegoś powodu kopia na urządzeniu użytkownika zostanie uszkodzona, całą pocztę należy ponownie zsynchronizować. We współczesnym świecie, kiedy do serwera można podłączyć tysiące urządzeń mobilnych, takie podejście prowadzi do zwiększonego zużycia ruchu i zasobów obliczeniowych.

Trudności pojawiają się nie tylko z samym protokołem, ale także z klientami poczty elektronicznej, którzy z nim współpracują. Od momentu powstania protokół IMAP był wielokrotnie poddawany różnym zmianom - obecna wersja to IMAP4. Jednocześnie istnieje wiele opcjonalnych rozszerzeń - w sieci opublikowane dziewięćdziesiąt RFC z dodatkami. Jednym z najnowszych jest RFC8514wprowadzony w 2019 roku.

Jednocześnie wiele firm oferuje własne, autorskie rozwiązania, które powinny ułatwić pracę z protokołem IMAP lub wręcz go zastąpić: gmail, Outlook, nylas. W rezultacie istniejące programy poczty e-mail obsługują tylko niektóre z dostępnych funkcji. Taka różnorodność prowadzi do segmentacji rynku.

„Co więcej, nowoczesny klient poczty e-mail powinien nie tylko przekazywać wiadomości, ale także móc pracować z kontaktami i synchronizować się z kalendarzem” – mówi Siergiej Belkin, szef rozwoju dostawcy IaaS 1cloud.ru. — Obecnie protokoły stron trzecich, takie jak LDAP, CardDAV и CalDAV. Takie podejście komplikuje konfigurację zapór sieciowych w sieciach korporacyjnych i otwiera nowe wektory cyberataków”.

JMAP został zaprojektowany, aby rozwiązać te problemy. Jest rozwijany przez ekspertów FastMail pod kierunkiem Internet Engineering Task Force (IETF). Protokół działa na bazie HTTPS, wykorzystuje JSON (z tego powodu nadaje się nie tylko do wymiany wiadomości elektronicznych, ale także do rozwiązywania szeregu zadań w chmurze) i upraszcza organizację pracy z pocztą w systemach mobilnych. Oprócz przetwarzania listów JMAP zapewnia także możliwość podłączenia rozszerzeń do pracy z kontaktami i harmonogramu kalendarza.

Funkcje nowego protokołu

JMAP jest protokół bezstanowy (bezstanowy) i nie wymaga stałego połączenia z serwerem pocztowym. Ta funkcja upraszcza pracę w niestabilnych sieciach komórkowych i oszczędza energię baterii w urządzeniach.

Wiadomość e-mail w JMAP jest reprezentowana w formacie struktury JSON. Zawiera wszystkie informacje z wiadomości RFC5322 (Internet Message Format), który może być potrzebny aplikacjom pocztowym. Według twórców takie podejście powinno uprościć tworzenie klientów, ponieważ rozwiązywanie potencjalnych trudności (związanych z MIM, czytanie nagłówków i kodowanie), serwer odpowie.

Klient wykorzystuje API do kontaktu z serwerem. W tym celu generuje uwierzytelnione żądanie POST, którego właściwości są opisane w obiekcie sesji JMAP. Żądanie ma format aplikacji/json i składa się z pojedynczego obiektu żądania JSON. Serwer generuje również jeden obiekt odpowiedzi.

В specyfikacje (pkt 3) autorzy wraz z żądaniem podają następujący przykład:

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

Poniżej znajduje się przykład odpowiedzi, którą wygeneruje serwer:

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

Pełną specyfikację JMAP z przykładowymi implementacjami można znaleźć pod adresem Oficjalna strona projekt. Autorzy zamieścili tam także opis specyfikacji dot Kontakty JMAP и Kalendarze JMAP — są przeznaczone do pracy z kalendarzami i listami kontaktów. Przez zgodnie z autorów, Kontakty i Kalendarze zostały rozdzielone na osobne dokumenty, aby można je było dalej rozwijać i ujednolicać niezależnie od „rdzenia”. Kody źródłowe dla JMAP - w repozytoria na GitHubie.

JMAP – otwarty protokół, który zastąpi IMAP podczas wymiany e-maili
/ PxHere /PD

Perspektywy

Pomimo tego, że prace nad standardem nie zostały jeszcze oficjalnie zakończone, jest on już wdrażany w środowiskach produkcyjnych. Na przykład twórcy otwartego serwera pocztowego Cyrus IMAP zaimplementował swoją wersję JMAP. Programiści z FastMail wydany framework serwerowy dla nowego protokołu w Perlu oraz autorzy JMAP zaprezentowali Serwer proxy.

Można się spodziewać, że w przyszłości projektów opartych na JMAP będzie coraz więcej. Przykładowo, istnieje pewne prawdopodobieństwo, że programiści z Open-Xchange, którzy tworzą serwer IMAP dla systemów Linux, przejdą na nowy protokół. Bardzo im odmawiaj IMAP – pytają członkowie społeczności, utworzone wokół narzędzi firmy.

Programiści z IETF i FastMail twierdzą, że coraz więcej użytkowników widzi potrzebę stworzenia nowego, otwartego standardu przesyłania wiadomości. Autorzy JMAP mają nadzieję, że w przyszłości więcej firm zacznie wdrażać ten protokół.

Nasze dodatkowe zasoby i źródła:

JMAP – otwarty protokół, który zastąpi IMAP podczas wymiany e-maili Jak sprawdzić zgodność plików cookies z RODO – pomoże w tym nowe, otwarte narzędzie

JMAP – otwarty protokół, który zastąpi IMAP podczas wymiany e-maili Jak oszczędzać za pomocą interfejsu programowania aplikacji
JMAP – otwarty protokół, który zastąpi IMAP podczas wymiany e-maili DevOps w usłudze chmurowej na przykładzie 1cloud.ru
JMAP – otwarty protokół, który zastąpi IMAP podczas wymiany e-maili Ewolucja architektury chmury 1cloud

JMAP – otwarty protokół, który zastąpi IMAP podczas wymiany e-maili Potencjalne ataki na HTTPS i sposoby ochrony przed nimi
JMAP – otwarty protokół, który zastąpi IMAP podczas wymiany e-maili Jak chronić serwer w Internecie: doświadczenie 1cloud.ru
JMAP – otwarty protokół, który zastąpi IMAP podczas wymiany e-maili Krótki program edukacyjny: czym jest Ciągła Integracja

Źródło: www.habr.com

Dodaj komentarz