Na początku miesiąca na Hacker News protokole JMAP, . Postanowiliśmy porozmawiać o tym, dlaczego był potrzebny i jak działa.
/ / PD
Czym IMAP zawiódł
Protokół 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 — 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 jest dziewięćdziesiąt RFC z dodatkami. Jednym z najnowszych jest , 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ć: , , . 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 . — Dziś w tym celu wykorzystuje się zewnętrzne protokoły takie jak , i . 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 (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 (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 , 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 (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 projekcie. Tam również autorzy umieścili opis specyfikacji dla i — 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 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 .

/ / 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 wdrożyli jego wersję JMAP. Programiści z FastMail stworzyli serwerowy framework dla nowego protokołu w Perl, a autorzy JMAP przedstawili .
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 , 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:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Źródło: habr.com
