JMAP — otwarty protokół zastąpi IMAP w wymianie wiadomości e-mail

Na początku miesiąca na Hacker News aktywnie dyskutowano o protokole JMAP, opracowywanym pod kierownictwem IETF. Postanowiliśmy porozmawiać o tym, dlaczego był potrzebny i jak działa.

JMAP — otwarty protokół zastąpi IMAP w wymianie wiadomości e-mail
/ PxHere / PD

Czym IMAP zawiódł

Protokół IMAP został przedstawiony w 1986 roku. Wiele rzeczy opisanych w standardzie jest już dziś nieaktualnych. Na przykład, protokół potrafi zwracać liczbę wierszy wiadomości i sumy kontrolne MD5 — ta funkcjonalność w nowoczesnych klientach pocztowych jest praktycznie nieużywana.

Inny problem wiąże się z zużyciem danych. W przypadku IMAP e-maile są przechowywane na serwerze i okresowo synchronizowane z lokalnymi klientami. Jeśli z jakiegoś powodu kopia na urządzeniu użytkownika „psuje się”, trzeba ponownie zsynchronizować całą pocztę. W nowoczesnym świecie, kiedy do serwera może być podłączonych tysiące urządzeń mobilnych, takie podejście prowadzi do zwiększonego zużycia danych i zasobów obliczeniowych.

Problemy występują nie tylko z samym protokołem, ale i z klientami pocztowymi, które z nim współpracują. Od momentu powstania, IMAP był wielokrotnie poddawany rewizjom — aktualną wersją jest IMAP4. Przypisano mu wiele opcjonalnych rozszerzeń — w sieci opublikowane jest dziewięćdziesiąt RFC z dodatkami. Jednym z najnowszych jest RFC8514, przedstawione w 2019 roku.

Wiele firm oferuje własne rozwiązania własnościowe, które mają uprościć pracę z IMAP lub wręcz go zastąpić: Gmail, Outlook, Nylas. W rezultacie istniejące klienci pocztowi obsługują tylko niektóre z dostępnych funkcji. Taka różnorodność prowadzi do segmentacji rynku.

„Co więcej, nowoczesny klient pocztowy powinien nie tylko przesyłać wiadomości, ale także potrafić pracować z kontaktami i synchronizować się z kalendarzem, — mówi Sergey Belkin, kierownik działu rozwoju dostawcy IaaS 1cloud.pl. — Dziś w tym celu wykorzystuje się zewnętrzne protokoły takie jak LDAP, CardDAV i CalDAV. Takie podejście komplikuje konfigurację zapór w sieciach korporacyjnych i otwiera nowe wektory dla cyberataków.

Rozwiązywaniem wskazanych problemów zajmuje się JMAP. Opracowywany jest przez specjalistów z FastMail pod kierunkiem Inżynieryjnej Rady Internetu (IETF). Protokół pracuje na bazie HTTPS, wykorzystuje JSON (dlatego nadaje się nie tylko do wymiany wiadomości e-mail, ale również do realizacji szeregu zadań w chmurze) i upraszcza organizację pracy z pocztą w mobilnych systemach. Oprócz przetwarzania e-maili, JMAP przewiduje również możliwość podłączenia rozszerzeń do pracy z kontaktami i kalendarzem.

Cechy nowego protokołu

JMAP jest protokół bezstanowy (stateless) i nie wymaga stałego połączenia z serwerem pocztowym. Ta cecha upraszcza pracę w niestabilnych sieciach mobilnych i pozwala oszczędzać energię baterii urządzeń.

Wiadomość e-mail w JMAP jest reprezentowana w formacie struktury JSON. Zawiera wszystkie informacje z wiadomości RFC5322 (Internet Message Format), które mogą być potrzebne aplikacjom pocztowym. Według twórców, takie podejście powinno ułatwić tworzenie klientów, ponieważ rozwiązaniem potencjalnych trudności (związanych z MIME, odczytywaniem nagłówków i kodowaniem) zajmie się serwer.

Aby skontaktować się z serwerem, klient wykorzystuje API. W tym celu formułuje uwierzytelnione zapytanie POST, którego właściwości są opisane w obiekcie sesji JMAP. Zapytanie ma format application/json i składa się z jednego obiektu zapytania JSON. Serwer generuje także jeden obiekt odpowiedzi.

W specyfikacji (punkt 3) autorzy podają następujący przykład z zapytaniem:

{
  "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ładami implementacji można znaleźć na oficjalnej stronie projekcie. Tam również autorzy umieścili opis specyfikacji dla JMAP Contacts i JMAP Calendars — są one skierowane do pracy z kalendarzami i listami kontaktów. Według autorów, Contacts i Calendars wydzielono w osobne dokumenty, aby można je było rozwijać i standaryzować niezależnie od „rdzenia”. Źródła kodu dla JMAP — w słowami autorów, Kontakty i Kalendarze zostały wydzielone do osobnych dokumentów, aby można je było rozwijać i standaryzować niezależnie od "jądra". Kody źródłowe dla JMAP — w repozytorium na GitHubie.

JMAP — otwarty protokół zastąpi IMAP w wymianie wiadomości e-mail
/ PxHere / PD

Perspektywy

Mimo że oficjalna praca nad standardem nie została jeszcze zakończona, jest on już wdrażany w środowiskach produkcyjnych. Na przykład, twórcy otwartego serwera pocztowego Cyrus IMAP wdrożyli jego wersję JMAP. Programiści z FastMail wydali stworzyli serwerowy framework dla nowego protokołu w Perl, a autorzy JMAP przedstawili proxy-serwer.

Można oczekiwać, że w przyszłości będzie coraz więcej projektów opartych na JMAP. Na przykład, jest pewne prawdopodobieństwo, że nowy protokół przyjmą programiści z Open-Xchange, tworzący serwer IMAP dla systemów Linux. Ich bardzo proszą uczestnicy społeczności, która uformowała się wokół narzędzi firmy.

Programiści z IETF i FastMail mówią, że coraz więcej użytkowników dostrzega potrzebę nowego otwartego standardu do wymiany 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ół zastąpi IMAP w wymianie wiadomości e-mail Jak sprawdzić pliki cookie pod kątem zgodności z RODO — pomoże nowe otwarte narzędzie

JMAP — otwarty protokół zastąpi IMAP w wymianie wiadomości e-mail Jak zaoszczędzić dzięki interfejsowi API
JMAP — otwarty protokół zastąpi IMAP w wymianie wiadomości e-mail DevOps w chmurze na przykładzie 1cloud.ru
JMAP — otwarty protokół zastąpi IMAP w wymianie wiadomości e-mail Ewolucja architektury chmury 1cloud

JMAP — otwarty protokół zastąpi IMAP w wymianie wiadomości e-mail Potencjalne ataki na HTTPS i sposoby ochrony przed nimi
JMAP — otwarty protokół zastąpi IMAP w wymianie wiadomości e-mail Jak zabezpieczyć serwer w internecie: doświadczenia 1cloud.ru
JMAP — otwarty protokół zastąpi IMAP w wymianie wiadomości e-mail Krótki kurs: czym jest Continuous Integration

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster