No início deste mês no Hacker News Protocolo JMAP . Decidimos conversar sobre por que isso era necessário e como funciona.
/ /DP
O que eu não gostei no IMAP
Protocolo foi introduzido em 1986. Muitas coisas descritas na norma não são mais relevantes hoje. Por exemplo, o protocolo pode retornar o número de linhas de uma carta e somas de verificação - esta funcionalidade praticamente não é usada em clientes de e-mail modernos.
Outro problema está relacionado ao consumo de tráfego. Com o IMAP, os emails são armazenados no servidor e sincronizados periodicamente com clientes locais. Se por algum motivo a cópia no dispositivo do usuário for corrompida, todos os e-mails deverão ser sincronizados novamente. No mundo moderno, quando milhares de dispositivos móveis podem ser conectados ao servidor, esta abordagem leva ao aumento do consumo de tráfego e recursos computacionais.
As dificuldades surgem não apenas com o protocolo em si, mas também com os clientes de e-mail que trabalham com ele. Desde a sua criação, o IMAP foi sujeito a diversas revisões diversas vezes - a versão atual hoje é IMAP4. Ao mesmo tempo, existem muitas extensões opcionais para isso - na rede noventa RFCs com acréscimos. Um dos mais recentes é introduzido em 2019.
Ao mesmo tempo, muitas empresas oferecem suas próprias soluções proprietárias que devem simplificar o trabalho com IMAP ou até mesmo substituí-lo: , , . O resultado é que os clientes de e-mail existentes suportam apenas alguns dos recursos 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 ser capaz de trabalhar com contatos e sincronizar com o calendário”, diz Sergei Belkin, chefe de desenvolvimento do provedor IaaS . — Hoje, protocolos de terceiros como , и . Esta abordagem complica a configuração de firewalls em redes corporativas e abre novos vetores para ataques cibernéticos.”
O JMAP foi projetado para resolver esses problemas. Ele está sendo desenvolvido por especialistas do FastMail sob a orientação da Internet Engineering Task Force (IETF). O protocolo funciona sobre HTTPS, utiliza JSON (por isso é adequado não só para troca de mensagens eletrônicas, mas também para resolver uma série de tarefas na nuvem) e simplifica a organização do trabalho com correio em sistemas móveis. Além de processar cartas, o JMAP também oferece a capacidade de conectar extensões para trabalhar com contatos e um agendador de calendário.
Recursos do novo protocolo
JMAP é (sem estado) e não requer uma conexão permanente com o servidor de e-mail. Esse recurso simplifica o trabalho em redes móveis instáveis e economiza bateria dos dispositivos.
Um email no JMAP é representado em um formato de estrutura JSON. Ele contém todas as informações da mensagem (Formato de mensagem da Internet), que pode ser necessário para aplicativos de e-mail. Segundo os promotores, esta abordagem deverá simplificar a criação de clientes, uma vez que a resolução de potenciais dificuldades (associadas a , lendo cabeçalhos e codificação) o servidor responderá.
O cliente usa a API para entrar em contato com o servidor. Para fazer isso, ele gera uma solicitação POST autenticada, cujas propriedades são descritas no objeto de sessão JMAP. A solicitação está no formato application/json e consiste em um único objeto de solicitação JSON. O servidor também gera um objeto de resposta.
В (ponto 3) os autores fornecem o seguinte exemplo com uma solicitação:
{
"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 da 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 JMAP completa com exemplos de implementações pode ser encontrada em projeto. Lá os autores também postaram uma descrição das especificações para и — destinam-se a trabalhar com calendários e listas de contatos. Por autores, Contatos e Calendários foram separados em documentos separados para que pudessem ser desenvolvidos e padronizados independentemente do “núcleo”. Códigos-fonte para JMAP - em .

/ /DP
Perspectivas
Apesar de o trabalho no padrão ainda não ter sido oficialmente concluído, ele já está sendo implementado em ambientes de produção. Por exemplo, os criadores do servidor de correio aberto implementou sua versão JMAP. Desenvolvedores do FastMail estrutura de servidor para o novo protocolo em Perl, e os autores do JMAP apresentaram .
Podemos esperar cada vez mais projetos baseados em JMAP no futuro. Por exemplo, existe a possibilidade de que os desenvolvedores do Open-Xchange, que estão criando um servidor IMAP para Linux-sistemas. É muito difícil abandonar o IMAP. , formado em torno das ferramentas da empresa.
Os desenvolvedores do IETF e do FastMail dizem que cada vez mais usuários estão vendo a necessidade de um novo padrão aberto para mensagens. Os autores do JMAP esperam que no futuro mais empresas comecem a implementar este protocolo.
Nossos recursos e fontes adicionais:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Fonte: habr.com
