A principios de mes, en Hacker News el protocolo JMAP, . Decidimos hablar sobre por qué es necesario y cómo funciona.
/ / PD
¿Qué le falta a IMAP?
Protocolo fue presentado en 1986. Muchas 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 un correo electrónico y las sumas de verificación, — esta funcionalidad no se utiliza prácticamente en los clientes de correo modernos.
Otro problema está relacionado con 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 daña", es necesario volver a sincronizar todo el correo. En el mundo moderno, donde miles de dispositivos móviles pueden estar conectados al servidor, este enfoque lleva a un mayor gasto de tráfico y recursos computacionales.
Las dificultades no solo surgen con el propio protocolo, sino también con los clientes de correo que trabajan con él. Desde la creación de IMAP, ha sido sometido a numerosas revisiones; la versión actual es IMAP4. A pesar de esto, existen numerosas extensiones opcionales para él — en línea hay noventa RFC con complementos. Uno de los más recientes es presentado en 2019.
Al mismo tiempo, muchas empresas ofrecen soluciones propietarias que deberían simplificar el trabajo con IMAP o reemplazarlo por completo: , , Como resultado, los clientes de correo existentes solo admiten algunas de las funciones disponibles. Esta diversidad conduce a la segmentación del mercado.
«Además, un cliente de correo moderno no solo debe reenviar mensajes, sino también trabajar con contactos y sincronizar con el calendario», dice Sergey Belkin, jefe del departamento de desarrollo del proveedor de IaaS. «Hoy en día, para estos fines se utilizan protocolos externos como , y Este enfoque complica la configuración de firewalls en redes corporativas y abre nuevos vectores para ciberataques».
JMAP se creó para resolver los problemas mencionados. Está siendo desarrollado por especialistas de FastMail bajo la supervisión del Consejo de Ingeniería de Internet (IETF). El protocolo funciona sobre HTTPS, utiliza JSON (por esta razón, es adecuado no solo para intercambiar correos electrónicos, sino también para abordar una serie de tareas en la nube) y simplifica la organización del trabajo con correos en sistemas móviles. Además del procesamiento de correos, JMAP también permite la conexión de extensiones para trabajar con contactos y calendarios.
Características del nuevo protocolo
JMAP es (stateless) que no requiere una conexión constante con el servidor de correo. Esta característica simplifica el trabajo en redes móviles inestables y permite ahorrar batería en los dispositivos.
Un correo electrónico en JMAP se presenta en formato de estructura JSON. Esta contiene toda la información del mensaje (Formato de Mensaje de Internet), que puede ser necesaria para las aplicaciones de correo. Según los desarrolladores, este enfoque debería simplificar la creación de clientes, ya que el servidor se encargará de resolver las posibles complejidades (relacionadas con , la lectura de encabezados y la codificación).
Para comunicarse con el servidor, el cliente utiliza la API. Para ello, forma una solicitud POST autenticada, cuyas propiedades están descritas en el objeto de sesión de JMAP. La solicitud tiene un formato application/json y consiste en un solo objeto de solicitud JSON. El servidor también genera un objeto de respuesta.
En (punto 3) Los autores presentan el siguiente ejemplo de 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, un ejemplo de respuesta que generará 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 proyecto. Allí, los autores también han incluido la descripción de las especificaciones para y — están dirigidas a trabajar con calendarios y listas de contactos. Según los autores, Contacts y Calendars se han separado en documentos individuales para poder desarrollarlos y estandarizarlos de manera independiente al 'núcleo'. El código fuente de JMAP está en .

/ / PD
Perspectivas
A pesar de que oficialmente el trabajo en el estándar aún no ha concluido, ya se está implementando en entornos de producción. Por ejemplo, los creadores del servidor de correo abierto han implementado su versión JMAP. Los desarrolladores de FastMail un marco de servidor para el nuevo protocolo en Perl, y los autores de JMAP presentaron .
Se puede esperar que en el futuro haya más proyectos basados en JMAP. Por ejemplo, hay una cierta probabilidad de que los desarrolladores de Open-Xchange, que crean un servidor IMAP para sistemas Linux, adopten el nuevo protocolo. Los miembros de la comunidad , que se ha formado en torno a las herramientas de la empresa.
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 empresas comiencen a implementar este protocolo.
Nuestros recursos y fuentes adicionales:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Fuente: habr.com
