No início do mês, no Hacker News o protocolo JMAP, . Decidimos conversar sobre a sua necessidade e como ele funciona.
/ / PD
O que não agrada no IMAP
Protocolo 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 — 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 noventa RFCs com adições. Um dos mais recentes é , 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: , , . 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 . — Hoje, para esses fins, utiliza-se protocolos externos como , e . 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 é (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 (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 , 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 (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 do projeto. Lá, os autores também disponibilizaram uma descrição das especificações para e — que são direcionadas ao trabalho com calendários e listas de contatos. Segundo 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 .

/ / 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 implementaram sua versão JMAP. Desenvolvedores da FastMail um framework de servidor para o novo protocolo em Perl, e os autores do JMAP apresentaram .
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 , 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:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Fonte: habr.com
