JMAP: un protocolo abierto reemplaza a IMAP al intercambiar correos electrónicos

A principios de este mes , el protocolo JMAP, desarrollado bajo la dirección del IETF , se discutió activamente en Hacker News. Decidimos hablar sobre por qué era necesario y cómo funciona.


/ PxHere / PD

Lo que no complació a IMAP


IMAP se introdujo en 1986. Muchas de las cosas descritas en el estándar ya no son relevantes hoy en día. Por ejemplo, el protocolo puede devolver el número de líneas de mensaje y sumas de verificación MD5 ; esta funcionalidad prácticamente no se usa en los clientes de correo modernos.

Otro problema es el consumo de tráfico. En el caso de IMAP, los correos electrónicos se almacenan en el servidor y se sincronizan periódicamente con los clientes locales. Si por alguna razón la copia en el dispositivo del usuario se "estropea", debe volver a sincronizar todo el correo. En el mundo moderno, cuando se pueden conectar miles de dispositivos móviles al servidor, este enfoque conduce a un mayor consumo de tráfico y recursos informáticos.

Las dificultades surgen no solo con el protocolo en sí, sino también con los clientes de correo electrónico que trabajan con él. Desde su inicio, IMAP ha sufrido varias revisiones muchas veces: la versión actual es IMAP4 hoy. Además, hay muchas extensiones opcionales para él: noventa RFC con adiciones se publican en la red. Uno de los más recientes es el RFC8514 , presentado en 2019.

Además, muchas compañías ofrecen sus propias soluciones patentadas que deberían simplificar el trabajo con IMAP o incluso reemplazarlo: Gmail , Outlook , Nylas . El resultado es que los clientes de correo electrónico existentes solo admiten algunas de las funciones disponibles. Tal diversidad conduce a la segmentación del mercado.

"Además, un cliente de correo electrónico moderno no solo debe reenviar mensajes, sino también poder trabajar con contactos y sincronizarse con el calendario", dice Sergey Belkin, jefe de desarrollo del proveedor de IaaS 1cloud.ru . - Hoy, los protocolos de terceros como LDAP , CardDAV y CalDAV se utilizan para estos fines. Este enfoque complica la configuración de los firewalls en las redes corporativas y abre nuevos vectores para los ataques cibernéticos ”.

Se llama a JMAP para resolver los problemas designados. Está desarrollado por expertos de FastMail bajo el liderazgo del Consejo de Ingeniería de Internet (IETF). El protocolo se ejecuta sobre HTTPS, utiliza JSON (por esta razón, es adecuado no solo para intercambiar mensajes electrónicos, sino también para resolver una serie de tareas en la nube) y simplifica la organización del trabajo con el correo en sistemas móviles. Además de procesar cartas, JMAP también proporciona la capacidad de conectar extensiones para trabajar con contactos y el planificador de calendario.

Características del nuevo protocolo.


JMAP es un protocolo sin estado y no requiere una conexión permanente al servidor de correo. Esta característica simplifica el trabajo en redes móviles inestables y ahorra batería.

El correo electrónico en JMAP se presenta en el formato de una estructura JSON. Contiene toda la información del mensaje RFC5322 (Formato de mensaje de Internet) que pueden necesitar las aplicaciones de correo. Según los desarrolladores, este enfoque debería simplificar la creación de clientes, ya que el servidor será responsable de resolver las posibles dificultades (relacionadas con MIME , lectura de encabezados y codificación).

El cliente usa la API para acceder al servidor. Para hacer esto, genera una solicitud POST autenticada, cuyas propiedades se describen en el objeto de sesión JMAP. La solicitud está en formato application / json y consta de un único objeto de solicitud JSON. El servidor también genera un único objeto de respuesta.

En la especificación (párrafo 3), los autores dan el siguiente ejemplo con una solicitud:

{ "using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ], "methodCalls": [ [ "method1", { "arg1": "arg1data", "arg2": "arg2data" }, "c1" ], [ "method2", { "arg1": "arg1data" }, "c2" ], [ "method3", {}, "c3" ] ] } 

A continuación se muestra un ejemplo de la respuesta que formará el servidor:

 { "methodResponses": [ [ "method1", { "arg1": 3, "arg2": "foo" }, "c1" ], [ "method2", { "isBlah": true }, "c2" ], [ "anotherResponseFromMethod2", { "data": 10, "yetmoredata": "Hello" }, "c2"], [ "error", { "type":"unknownMethod" }, "c3" ] ], "sessionState": "75128aab4b1b" } 

La especificación completa de JMAP con ejemplos de implementación se puede encontrar en el sitio web oficial del proyecto. En el mismo lugar, los autores publicaron una descripción de las especificaciones para los Contactos JMAP y los Calendarios JMAP : están destinados a trabajar con calendarios y listas de contactos. Según los autores, los contactos y calendarios se separaron en documentos separados para que pudieran desarrollarse y estandarizarse aún más independientemente del "núcleo". El código fuente de JMAP está en el repositorio en GitHub .


/ PxHere / PD

Perspectivas


A pesar de que oficialmente el trabajo sobre el estándar aún no se ha completado, ya se está implementando en entornos de producción. Por ejemplo, los creadores del servidor de correo abierto IMAP Cyrus implementaron su versión JMAP. Los desarrolladores de FastMail lanzaron un marco de servidor para el nuevo protocolo Perl, mientras que los autores de JMAP introdujeron un servidor proxy .

Se puede esperar que en el futuro habrá más y más proyectos basados ​​en JMAP. Por ejemplo, existe la posibilidad de que los desarrolladores de Open-Xchange creen un nuevo protocolo y creen un servidor IMAP para sistemas Linux. Para rechazar el IMAP, los miembros de la comunidad que se han formado alrededor de las herramientas de la compañía les piden mucho.

Los desarrolladores de IETF y FastMail dicen que cada vez más usuarios ven la necesidad de un nuevo estándar abierto para la mensajería. Los autores de JMAP esperan que en el futuro más compañías comiencen a implementar este protocolo.

Nuestros recursos y fuentes adicionales:

Cómo verificar las cookies para el cumplimiento de GDPR: una nueva herramienta abierta ayudará

Cómo ahorrar dinero usando la interfaz de programación de aplicaciones
DevOps en un servicio en la nube usando 1cloud.ru como ejemplo
1cloud Cloud Architecture Evolution

Posibles ataques a HTTPS y formas de protección contra ellos.
Cómo proteger un servidor en Internet: experiencia 1cloud.ru
Programa educativo corto: qué es la integración continua

Source: https://habr.com/ru/post/452958/


All Articles