Anfang dieses Monats
wurde das
unter der Leitung der IETF entwickelte JMAP-Protokoll bei Hacker News
aktiv diskutiert . Wir beschlossen, darüber zu sprechen, warum es benötigt wurde und wie es funktioniert.
/ PxHere / PDWas gefiel IMAP nicht
IMAP wurde 1986 eingeführt. Viele der in der Norm beschriebenen Dinge sind heute nicht mehr relevant. Beispielsweise kann das Protokoll die Anzahl der Nachrichtenzeilen und
MD5-Prüfsummen zurückgeben - diese Funktionalität wird in modernen Mail-Clients praktisch nicht verwendet.
Ein weiteres Problem ist der Verkehrsverbrauch. Bei IMAP werden E-Mails auf dem Server gespeichert und regelmäßig mit lokalen Clients synchronisiert. Wenn die Kopie auf dem Gerät des Benutzers aus irgendeinem Grund "verderbt", müssen Sie alle E-Mails neu synchronisieren. In der modernen Welt führt dieser Ansatz zu einem erhöhten Verbrauch von Datenverkehr und Rechenressourcen, wenn Tausende von Mobilgeräten mit dem Server verbunden werden können.
Schwierigkeiten treten nicht nur beim Protokoll selbst auf, sondern auch bei den E-Mail-Clients, die damit arbeiten. Seit seiner Gründung wurde IMAP mehrfach überarbeitet - die aktuelle Version ist heute IMAP4. Darüber hinaus gibt es viele optionale Erweiterungen für ihn - neunzig RFCs mit Ergänzungen werden im Netzwerk veröffentlicht. Eines der frischesten ist
RFC8514 , das 2019 eingeführt wurde.
Darüber hinaus bieten viele Unternehmen eigene proprietäre Lösungen an, die die Arbeit mit IMAP vereinfachen oder sogar ersetzen sollen:
Google Mail ,
Outlook ,
Nylas . Das Ergebnis ist, dass vorhandene E-Mail-Clients nur einige der verfügbaren Funktionen unterstützen. 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 mit dem Kalender synchronisieren können“, sagt Sergey Belkin, Entwicklungsleiter des IaaS-Anbieters 1cloud.ru . - Heute werden für diese Zwecke Protokolle von Drittanbietern wie LDAP , CardDAV und CalDAV verwendet. Dieser Ansatz verkompliziert die Konfiguration von Firewalls in Unternehmensnetzwerken und eröffnet neue Vektoren für Cyber-Angriffe. “
JMAP wird aufgerufen, um die angegebenen Probleme zu lösen. Es wird von Experten von FastMail unter der Leitung des Internet Engineering Council (IETF) entwickelt. Das Protokoll läuft auf HTTPS, verwendet JSON (aus diesem Grund eignet es sich nicht nur zum Austausch elektronischer Nachrichten, sondern auch zum Lösen einer Reihe von Aufgaben in der Cloud) und vereinfacht die Organisation der Arbeit mit E-Mails in mobilen Systemen. Neben der Verarbeitung von Briefen bietet JMAP auch die Möglichkeit, Nebenstellen für die Arbeit mit Kontakten und dem Kalenderplaner zu verbinden.
Merkmale des neuen Protokolls
JMAP ist
ein zustandsloses Protokoll und erfordert keine permanente Verbindung zum Mailserver. Diese Funktion vereinfacht die Arbeit in instabilen Mobilfunknetzen und spart Batteriestromgeräte.
Die E-Mail in JMAP wird im Format einer JSON-Struktur dargestellt. Es enthält alle Informationen aus der
RFC5322- Nachricht (Internet Message Format), die E-Mail-Anwendungen möglicherweise benötigen. Laut den Entwicklern sollte dieser Ansatz die Erstellung von Clients vereinfachen, da der Server für die Lösung potenzieller Schwierigkeiten (im Zusammenhang mit
MIME , Lesen von Headern und Codierung) verantwortlich ist.
Der Client verwendet die API, um auf den Server zuzugreifen. Zu diesem Zweck wird eine authentifizierte POST-Anforderung generiert, deren Eigenschaften im JMAP-Sitzungsobjekt beschrieben werden. Die Anforderung hat das Format application / json und besteht aus einem einzelnen JSON-Anforderungsobjekt. Der Server generiert auch ein einzelnes Antwortobjekt.
In der
Spezifikation (Absatz 3) geben die Autoren das folgende Beispiel mit einer 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 die Antwort, die der Server bilden wird:
{ "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 Implementierungsbeispielen finden Sie auf
der offiziellen Website des Projekts. An derselben Stelle veröffentlichten die Autoren eine Beschreibung der Spezifikationen für
JMAP-Kontakte und
JMAP-Kalender - sie zielen darauf ab, mit Kalendern und Kontaktlisten zu arbeiten. Nach
Angaben der Autoren wurden Kontakte und Kalender in separate Dokumente unterteilt, damit sie unabhängig vom „Kern“ weiterentwickelt und standardisiert werden konnten. Der Quellcode für JMAP befindet sich im
Repository auf GitHub .
/ PxHere / PDPerspektiven
Obwohl die Arbeiten am Standard offiziell noch nicht abgeschlossen sind, werden sie bereits in Produktionsumgebungen implementiert. Beispielsweise haben die Ersteller des
Cyrus IMAP Open Mail-Servers seine JMAP-Version implementiert. FastMail-Entwickler haben
ein Server-Framework für das neue Perl-Protokoll veröffentlicht, während JMAP-Autoren einen
Proxyserver eingeführt haben.
Es ist zu erwarten, dass es in Zukunft immer mehr JMAP-basierte Projekte geben wird. Beispielsweise besteht eine gewisse Wahrscheinlichkeit, dass Entwickler von Open-Xchange ein neues Protokoll erstellen und einen IMAP-Server für Linux-Systeme erstellen. Um IMAP abzulehnen, werden sie
von Mitgliedern der Community , die sich um die Tools des Unternehmens gebildet hat, sehr
gebeten .
Laut IETF- und FastMail-Entwicklern sehen immer mehr Benutzer die Notwendigkeit eines neuen offenen Standards für Messaging. Die Autoren von JMAP hoffen, dass in Zukunft mehr Unternehmen mit der Implementierung dieses Protokolls beginnen werden.
Unsere zusätzlichen Ressourcen und Quellen:
So überprüfen Sie Cookies auf Einhaltung der DSGVO - ein neues offenes Tool hilft dabei
So sparen Sie Geld mit der Anwendungsprogrammierschnittstelle
DevOps in einem Cloud-Dienst am Beispiel von 1cloud.ru
1cloud Cloud Architecture Evolution
Mögliche Angriffe auf HTTPS und Möglichkeiten zum Schutz vor HTTPS
So schützen Sie einen Server im Internet: 1cloud.ru Erfahrung
Kurzes Bildungsprogramm: Was ist kontinuierliche Integration?