Anfang des Monats wurde auf Hacker News das JMAP-Protokoll, . Wir beschlossen, darĂŒber zu sprechen, warum es notwendig war und wie es funktioniert.
/ / PD
Was stimmte nicht mit IMAP
Protokoll wurde 1986 eingefĂŒhrt. Viele Dinge, die im Standard beschrieben werden, sind heute nicht mehr relevant. Zum Beispiel kann das Protokoll die Anzahl der Zeilen in einer E-Mail und PrĂŒfziffern zurĂŒckgeben, â diese FunktionalitĂ€t wird in modernen E-Mail-Clients praktisch nicht mehr verwendet.
Ein weiteres Problem betrifft den Datenverbrauch. Im Fall von IMAP werden E-Mails auf dem Server gespeichert und regelmĂ€Ăig mit lokalen Clients synchronisiert. Wenn aus irgendeinem Grund die Kopie auf dem EndgerĂ€t des Benutzers âbeschĂ€digtâ wird, muss die gesamte E-Mail erneut synchronisiert werden. In der heutigen Welt, in der Tausende von MobilgerĂ€ten mit dem Server verbunden sein können, fĂŒhrt dieser Ansatz zu einem erhöhten Datenverbrauch und Ressourcenaufwand.
Die Schwierigkeiten ergeben sich nicht nur aus dem Protokoll selbst, sondern auch aus den E-Mail-Clients, die damit arbeiten. Seit der EinfĂŒhrung von IMAP wurde es mehrfach verschiedenen Revisionen unterzogen â die aktuelle Version ist IMAP4. AuĂerdem gibt es viele optionale Erweiterungen dafĂŒr â im Netz gibt es neunzig RFCs mit ErgĂ€nzungen. Eine der neuesten ist , die 2019 vorgestellt wurde.
Viele Unternehmen bieten gleichzeitig eigene proprietĂ€re Lösungen an, die die Arbeit mit IMAP vereinfachen oder es sogar vollstĂ€ndig ersetzen sollen: , , . In der Folge stellen bestehende E-Mail-Clients nur einige der verfĂŒgbaren Funktionen bereit. Diese Vielfalt fĂŒhrt zu einer Marktsegmentierung.
âDarĂŒber hinaus sollte ein moderner E-Mail-Client nicht nur Nachrichten weiterleiten, sondern auch mit Kontakten arbeiten und sich mit dem Kalender synchronisieren könnenâ, sagt Sergey Belkin, Leiter der Entwicklungsabteilung des IaaS-Anbieters . âHeute werden zu diesen Zwecken externe Protokolle wie , und verwendet. Dieser Ansatz erschwert die Konfiguration von Firewalls in Unternehmensnetzwerken und eröffnet neue Angriffsvektoren fĂŒr Cyberangriffeâ.
Die angesprochenen Probleme sollen durch JMAP gelöst werden. Es wird von Fachleuten von FastMail unter der Leitung des Internet Engineering Steering Group (IETF) entwickelt. Das Protokoll funktioniert ĂŒber HTTPS, verwendet JSON (aus diesem Grund eignet es sich nicht nur fĂŒr den Austausch von E-Mails, sondern auch zur Lösung einer Reihe von Aufgaben in der Cloud) und vereinfacht die Organisation der Arbeit mit E-Mails in mobilen Systemen. Neben der Verarbeitung von E-Mails bietet JMAP auch die Möglichkeit, Erweiterungen fĂŒr den Umgang mit Kontakten und einem Kalenderplaner zu integrieren.
Eigenschaften des neuen Protokolls
JMAP ist und erfordert keine stÀndige Verbindung zum E-Mail-Server. Diese Besonderheit vereinfacht die Arbeit in instabilen mobilen Netzwerken und ermöglicht eine Einsparung der Akkulaufzeit der GerÀte.
Eine E-Mail in JMAP wird im JSON-Strukturformat dargestellt. Es enthĂ€lt alle Informationen aus der Nachricht (Internet Message Format), die fĂŒr E-Mail-Anwendungen erforderlich sein kann. Laut den Entwicklern sollte dieser Ansatz die Erstellung von Clients vereinfachen, da der Server fĂŒr die Lösung potenzieller Probleme (im Zusammenhang mit , dem Lesen von Headern und der Kodierung) verantwortlich ist.
Um auf den Server zuzugreifen, verwendet der Client eine API. Dazu stellt er eine authentifizierte POST-Anfrage zusammen, deren Eigenschaften im Sitzungsobjekt JMAP beschrieben sind. Die Anfrage hat das Format application/json und besteht aus einem einzigen JSON-Anfrageobjekt. Der Server generiert ebenfalls ein Antwortobjekt.
Im (Abschnitt 3) Die Autoren geben folgendes Beispiel fĂŒr eine Anfrage an:
{
"using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
"methodCalls": [
[ "method1", {
"arg1": "arg1data",
"arg2": "arg2data"
}, "c1" ],
[ "method2", {
"arg1": "arg1data"
}, "c2" ],
[ "method3", {}, "c3" ]
]
}
Unten finden Sie ein Beispiel fĂŒr eine Antwort, die der Server generiert:
{
"methodResponses": [
[ "method1", {
"arg1": 3,
"arg2": "foo"
}, "c1" ],
[ "method2", {
"isBlah": true
}, "c2" ],
[ "anotherResponseFromMethod2", {
"data": 10,
"yetmoredata": "Hello"
}, "c2"],
[ "error", {
"type":"unknownMethod"
}, "c3" ]
],
"sessionState": "75128aab4b1b"
}
Die vollstĂ€ndige JMAP-Spezifikation mit Umsetzungsbeispielen finden Sie auf Projekt. Dort haben die Autoren auch die Spezifikationen fĂŒr und â sie sind auf die Arbeit mit Kalendern und Kontaktlisten ausgerichtet. Laut den Autoren wurden Contacts und Calendars in separate Dokumente ausgegliedert, damit sie unabhĂ€ngig vom âKernâ weiterentwickelt und standardisiert werden können. Die Quellcodes fĂŒr JMAP befinden sich in .

/ / PD
Aussichten
Obwohl die offizielle Arbeit am Standard noch nicht abgeschlossen ist, wird er bereits in Produktionsumgebungen implementiert. Zum Beispiel haben die Entwickler des offenen Mailservers seine JMAP-Version umgesetzt. Die Entwickler von FastMail prĂ€sentierten den Server-Framework fĂŒr das neue Protokoll in Perl, wĂ€hrend die Autoren von JMAP .
erwarten, dass in Zukunft immer mehr Projekte auf Basis von JMAP entstehen werden. Zum Beispiel gibt es eine gewisse Wahrscheinlichkeit, dass die Entwickler von Open-Xchange, die einen IMAP-Server fĂŒr Linux-Systeme erstellen, auf das neue Protokoll umsteigen. Die Community-Mitglieder bitten sie dringend, von IMAP abzulassen. , die sich um die Werkzeuge des Unternehmens gebildet hat.
Die Entwickler von IETF und FastMail berichten, dass immer mehr Nutzer die Notwendigkeit eines neuen offenen Standards fĂŒr den Nachrichtenaustausch erkennen. Die Autoren von JMAP hoffen, dass in Zukunft mehr Unternehmen dieses Protokoll ĂŒbernehmen werden.
Unsere zusÀtzlichen Ressourcen und Quellen:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Quelle: habr.com
