JMAP — um protocolo aberto que substituirá o IMAP na troca de e-mails

No início do mês, no Hacker News foi amplamente discutido o protocolo JMAP, desenvolvido sob a supervisão da IETF. Decidimos conversar sobre a sua necessidade e como ele funciona.

JMAP — um protocolo aberto que substituirá o IMAP na troca de e-mails
/ PxHere / PD

O que não agrada no IMAP

Protocolo IMAP foi introduzido em 1986. Muitas coisas descritas no padrão já não são relevantes hoje em dia. Por exemplo, o protocolo consegue retornar a quantidade de linhas de um e-mail e somas de verificação MD5 — essa funcionalidade praticamente não é utilizada nos clientes de e-mail modernos.

Outro problema está relacionado ao consumo de tráfego. No caso do IMAP, os e-mails são armazenados no servidor e periodicamente sincronizados com os clientes locais. Se, por algum motivo, a cópia no dispositivo do usuário 'se corrompe', é necessário sincronizar todo o e-mail novamente. No mundo moderno, onde milhares de dispositivos móveis podem estar conectados ao servidor, essa abordagem leva a um aumento no consumo de tráfego e recursos computacionais.

Dificuldades surgem não apenas com o próprio protocolo, mas também com os clientes de e-mail que trabalham com ele. Desde a criação do IMAP, ele passou por várias revisões — a versão atual hoje é o IMAP4. Além disso, existem muitas extensões opcionais para ele — na internet foram publicados noventa RFCs com adições. Um dos mais recentes é RFC8514, apresentado em 2019.

Ao mesmo tempo, muitas empresas oferecem suas próprias soluções proprietárias que devem facilitar o trabalho com o IMAP ou até mesmo substituí-lo: Gmail, Outlook, Nylas. Como resultado, os clientes de e-mail existentes suportam apenas algumas das funções disponíveis. Essa diversidade leva à segmentação do mercado.

Além disso, um cliente de e-mail moderno não deve apenas encaminhar mensagens, mas também deve conseguir trabalhar com contatos e sincronizar com o calendário, — diz Sergey Belkin, chefe do departamento de desenvolvimento de um provedor IaaS 1cloud.ru. — Hoje, para esses fins, utiliza-se protocolos externos como LDAP, CardDAV e CalDAV. Essa abordagem complica a configuração de firewalls em redes corporativas e abre novos vetores para ciberataques.

O JMAP foi projetado para resolver os problemas mencionados. Ele está sendo desenvolvido por especialistas da FastMail sob a supervisão do Conselho de Engenharia da Internet (IETF). O protocolo opera sobre HTTPS, utiliza JSON (por essa razão, ele é adequado não apenas para troca de mensagens, mas também para resolver uma série de tarefas em nuvem) e simplifica a organização do trabalho com e-mails em sistemas móveis. Além do processamento de e-mails, o JMAP também prevê a possibilidade de conectar extensões para trabalhar com contatos e calendários.

Características do novo protocolo

O JMAP é um protocolo sem estado (stateless) e não requer uma conexão permanente com o servidor de e-mail. Essa característica simplifica o trabalho em redes móveis instáveis e permite economizar a carga da bateria dos dispositivos.

Um e-mail no JMAP é apresentado no formato de estrutura JSON. Ela contém todas as informações da mensagem RFC5322 (Formato de Mensagem da Internet), que pode ser necessária para aplicativos de e-mail. Segundo os desenvolvedores, essa abordagem deve facilitar a criação de clientes, já que a resolução de potenciais dificuldades (relacionadas a MIME, leitura de cabeçalhos e codificação) ficará a cargo do servidor.

Para se comunicar com o servidor, o cliente utiliza uma API. Para isso, ele forma um pedido POST autenticado, cujas propriedades estão descritas no objeto de sessão JMAP. O pedido tem o formato application/json e consiste em um único objeto de pedido JSON. O servidor também gera um único objeto de resposta.

Em especificações (ponto 3) os autores apresentam o seguinte exemplo de pedido:

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

Abaixo está um exemplo de resposta que o servidor irá gerar:

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

A especificação completa do JMAP com exemplos de implementação pode ser encontrada em site oficial do projeto. Lá, os autores também disponibilizaram uma descrição das especificações para JMAP Contacts e JMAP Calendars — que são direcionadas ao trabalho com calendários e listas de contatos. Segundo palavras os autores, Contacts e Calendars foram divididos em documentos separados para que possam ser desenvolvidos e padronizados independentemente do "núcleo". Os códigos fonte para o JMAP estão em repositório no GitHub.

JMAP — um protocolo aberto que substituirá o IMAP na troca de e-mails
/ PxHere / PD

Perspectivas

Embora o trabalho oficial sobre o padrão ainda não tenha sido concluído, ele já está sendo implementado em ambientes de produção. Por exemplo, os criadores do servidor de e-mail aberto Cyrus IMAP implementaram sua versão JMAP. Desenvolvedores da FastMail lançamos um framework de servidor para o novo protocolo em Perl, e os autores do JMAP apresentaram proxy.

Pode-se esperar que no futuro haja cada vez mais projetos baseados em JMAP. Por exemplo, há uma certa probabilidade de que desenvolvedores da Open-Xchange, que criam um servidor IMAP para sistemas Linux, migrem para o novo protocolo. Eles são fortemente solicitados pelos membros da comunidade, que se formou em torno das ferramentas da empresa.

Os desenvolvedores do IETF e da FastMail dizem que cada vez mais usuários veem a necessidade de um novo padrão aberto para troca de mensagens. Os autores do JMAP esperam que mais empresas adotem esse protocolo no futuro.

Nossos recursos e fontes adicionais:

JMAP — um protocolo aberto que substituirá o IMAP na troca de e-mails Como verificar cookies de acordo com o GDPR — um novo instrumento aberto pode ajudar

JMAP — um protocolo aberto que substituirá o IMAP na troca de e-mails Como economizar usando uma interface de programação de aplicativos
JMAP — um protocolo aberto que substituirá o IMAP na troca de e-mails DevOps em serviços de nuvem com o exemplo do 1cloud.ru
JMAP — um protocolo aberto que substituirá o IMAP na troca de e-mails A evolução da arquitetura em nuvem da 1cloud

JMAP — um protocolo aberto que substituirá o IMAP na troca de e-mails Ataques potenciais ao HTTPS e formas de proteção contra eles
JMAP — um protocolo aberto que substituirá o IMAP na troca de e-mails Como proteger um servidor na internet: a experiência da 1cloud.ru
JMAP — um protocolo aberto que substituirá o IMAP na troca de e-mails Um breve guia: o que é Continuous Integration

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster