La începutul lunii, pe Hacker News protocolul JMAP, . Am decis să discutăm despre ce anume este nevoie de el și cum funcționează.
/ / PD
Ce nu a deranjat IMAP
Protocolul a fost prezentat în 1986. Multe lucruri descrise în standard nu mai sunt relevante astăzi. De exemplu, protocolul poate returna numărul de linii dintr-un mesaj și sumele de control — această funcționalitate nu mai este folosită aproape deloc în clienții de email moderni.
O altă problemă este legată de consumul de trafic. În cazul IMAP, mesajele de email sunt stocate pe server și sincronizate periodic cu clienții locali. Dacă dintr-un anumit motiv copia de pe dispozitivul utilizatorului "se strică", este necesară resyncornizarea întregii poștă. În lumea modernă, în care la server pot fi conectate mii de dispozitive mobile, această abordare duce la un consum crescut de trafic și resurse de calcul.
Dificultăți apar nu doar cu protocolul în sine, ci și cu clienții de email care lucrează cu el. De la crearea sa, IMAP a fost supus multor revizuiri — versiunea actuală este IMAP4. Totodată, există multe extensii opționale pentru acesta — pe internet nouăzeci RFC-uri cu completări. Una dintre cele mai recente este , prezentată în 2019.
În acest context, multe companii oferă soluții proprietare care ar trebui să simplifice lucrul cu IMAP sau să-l înlocuiască complet: , , . Ca rezultat, clienții de email existenți suportă doar unele dintre funcțiile disponibile. Această diversitate duce la segmentarea pieței.
„Mai mult, un client de email modern nu trebuie doar să trimită mesaje, ci trebuie să poată lucra cu contacte și să se sincronizeze cu calendarul,” spune Sergey Belkin, șeful departamentului de dezvoltare al providerului IaaS . — Astăzi, pentru aceste scopuri, se folosesc protocoale externe precum , și . Această abordare complică configurarea firewall-urilor în rețelele corporative și deschide noi vectori pentru atacuri cibernetice.”
Problemele menționate sunt abordate de JMAP. Acesta este dezvoltat de specialiștii de la FastMail sub conducerea Consiliului Inginerilor Internetului (IETF). Protocolul funcționează deasupra HTTPS, utilizează JSON (din această cauză se potrivește nu doar pentru schimbul de mesaje electronice, ci și pentru rezolvarea unor probleme în cloud) și simplifică organizarea muncii cu email-urile în sistemele mobile. Pe lângă procesarea mesajelor, JMAP prevede și posibilitatea conectării extensiilor pentru gestionarea contactelor și a calendarului-planner.
Caracteristicile noului protocol
JMAP este (stateless) și nu necesită o conexiune permanentă cu serverul de email. Această caracteristică simplifică funcționarea în rețele mobile instabile și permite economisirea energiei bateriilor dispozitivelor.
Un mesaj electronic în JMAP este reprezentat sub formă de structură JSON. Aceasta conține toată informația din mesaj (Internet Message Format), care poate fi necesară aplicațiilor de email. Potrivit dezvoltatorilor, această abordare ar trebui să simplifice crearea clienților, deoarece serverul va gestiona soluționarea potențialelor dificultăți (legate de , citirea anteturilor și codificarea).
Pentru a comunica cu serverul, clientul folosește API. Acesta formulează o solicitare POST autentificată, proprietățile căreia sunt descrise în obiectul de sesiune JMAP. Solicitarea are formatul application/json și constă într-un singur obiect JSON de solicitare. Serverul generează, de asemenea, un singur obiect de răspuns.
În (punctul 3) autorii oferă următorul exemplu cu o solicitare:
{
"using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
"methodCalls": [
[ "method1", {
"arg1": "arg1data",
"arg2": "arg2data"
}, "c1" ],
[ "method2", {
"arg1": "arg1data"
}, "c2" ],
[ "method3", {}, "c3" ]
]
}
Mai jos se află un exemplu de răspuns generat de server:
{
"methodResponses": [
[ "method1", {
"arg1": 3,
"arg2": "foo"
}, "c1" ],
[ "method2", {
"isBlah": true
}, "c2" ],
[ "anotherResponseFromMethod2", {
"data": 10,
"yetmoredata": "Hello"
}, "c2"],
[ "error", {
"type":"unknownMethod"
}, "c3" ]
],
"sessionState": "75128aab4b1b"
}
Specificația completă a JMAP, cu exemple de implementare, poate fi găsită pe proiect. De asemenea, autorii au publicat o descriere a specificațiilor pentru și — acestea sunt destinate gestionării calendarelor și listelor de contacte. Potrivit autorilor, Contacts și Calendars au fost separate în documente distincte pentru a putea fi dezvoltate și standardizate independent de „nucleu”. Codurile sursă pentru JMAP sunt disponibile în .

/ / PD
Perspective
Deși oficial lucrările la standard nu sunt încă finalizate, acesta este deja implementat în medii de producție. De exemplu, creatorii serverului de email deschis au realizat versiunea sa JMAP. Dezvoltatorii de la FastMail un framework server pentru noul protocol pe Perl, iar autorii JMAP au prezentat .
Se așteaptă ca în viitor proiectele bazate pe JMAP să devină tot mai numeroase. De exemplu, există o anumită probabilitate ca dezvoltatorii de la Open-Xchange, care creează un server IMAP pentru sistemele Linux, să adopte noul protocol. Participanții comunității le cer cu insistență , formându-se în jurul instrumentelor companiei.
Dezvoltatorii de la IETF și FastMail afirmă că din ce în ce mai mulți utilizatori văd necesitatea unui nou standard deschis pentru schimbul de mesaje. Autorii JMAP speră că în viitor mai multe companii vor începe să implementeze acest protocol.
Resursele și sursele noastre suplimentare:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Sursa: habr.com
