No início deste mês
, o protocolo JMAP,
desenvolvido sob a direção da IETF ,
foi discutido ativamente no Hacker News. Decidimos conversar sobre por que era necessário e como funciona.
/ PxHere / PDO que não agradou ao IMAP
O IMAP foi introduzido em 1986. Muitas das coisas descritas na norma não são mais relevantes hoje. Por exemplo, o protocolo pode retornar o número de linhas de mensagens e
somas de verificação MD5 - essa funcionalidade praticamente não é usada em clientes de email modernos.
Outro problema é o consumo de tráfego. No caso do IMAP, os emails são armazenados no servidor e periodicamente sincronizados com os clientes locais. Se, por algum motivo, a cópia no dispositivo do usuário "estragar", você precisará sincronizar novamente todo o correio. No mundo moderno, quando milhares de dispositivos móveis podem ser conectados ao servidor, essa abordagem leva ao aumento do consumo de tráfego e recursos de computação.
As dificuldades surgem não apenas com o próprio protocolo, mas também com os clientes de email que trabalham com ele. Desde a sua criação, o IMAP passou por várias revisões várias vezes - a versão atual é o IMAP4 hoje. Além disso, existem muitas extensões opcionais para ele - noventa RFCs com acréscimos são
publicados na rede. Um dos mais
recentes é o
RFC8514 , lançado em 2019.
Além disso, muitas empresas oferecem soluções próprias que devem simplificar o trabalho com o IMAP ou até substituí-lo:
Gmail ,
Outlook ,
Nylas . O resultado é que os clientes de email existentes suportam apenas alguns de todos os recursos disponíveis. Essa diversidade leva à segmentação do mercado.
"Além disso, um cliente de email moderno deve não apenas encaminhar mensagens, mas também poder trabalhar com contatos e sincronizar com o calendário", diz Sergey Belkin, chefe de desenvolvimento do provedor de IaaS 1cloud.ru . - Hoje, protocolos de terceiros como LDAP , CardDAV e CalDAV são usados para esses fins. Essa abordagem complica a configuração de firewalls em redes corporativas e abre novos vetores para ataques cibernéticos. ”
O JMAP é chamado para resolver os problemas designados. É desenvolvido por especialistas da FastMail, sob a liderança do Internet Engineering Council (IETF). O protocolo é executado sobre HTTPS, usa JSON (por esse motivo, é adequado não apenas para troca de mensagens eletrônicas, mas também para resolver várias tarefas na nuvem) e simplifica a organização do trabalho com o 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 o planejador de calendário.
Recursos do novo protocolo
O JMAP é
um protocolo sem estado e não requer uma conexão permanente com o servidor de correio. Esse recurso simplifica o trabalho em redes móveis instáveis e economiza dispositivos de energia da bateria.
O email no JMAP é apresentado no formato de uma estrutura JSON. Ele contém todas as informações da mensagem
RFC5322 (Internet Message Format) necessárias para os aplicativos de correio. Segundo os desenvolvedores, essa abordagem deve simplificar a criação de clientes, pois o servidor será responsável por solucionar possíveis dificuldades (relacionadas ao
MIME , ler cabeçalhos e codificação).
O cliente usa a API para acessar 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 único objeto de resposta.
Na
especificação (parágrafo 3), os autores dão 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 formará:
{ "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 no
site oficial do projeto. No mesmo local, os autores publicaram uma descrição das especificações dos
Contatos JMAP e
Calendários JMAP - eles visam trabalhar com calendários e listas de contatos. Segundo
os autores, os Contatos e os Calendários foram separados em documentos separados para que pudessem ser desenvolvidos e padronizados independentemente do "núcleo". O código fonte do JMAP está no
repositório no GitHub .
/ PxHere / PDPerspectivas
Apesar de oficialmente o trabalho no padrão ainda não ter sido concluído, ele já está sendo implementado em ambientes de produção. Por exemplo, os criadores do servidor de correio aberto
Cyrus IMAP implementaram sua versão JMAP. Os desenvolvedores do FastMail
lançaram uma estrutura de servidor para o novo protocolo Perl, enquanto os autores do JMAP introduziram um
servidor proxy .
Pode-se esperar que, no futuro, haverá mais e mais projetos baseados em JMAP. Por exemplo, há alguma probabilidade de que os desenvolvedores do Open-Xchange criem um novo protocolo e criem um servidor IMAP para sistemas Linux. Para recusar o IMAP, eles são muito
solicitados pelos membros da comunidade que se formou em torno das ferramentas da empresa.
Os desenvolvedores de IETF e FastMail dizem que cada vez mais usuários veem a necessidade de um novo padrão aberto para mensagens. Os autores do JMAP esperam que, no futuro, mais empresas comecem a implementar esse protocolo.
Nossos recursos e fontes adicionais:
Como verificar os cookies quanto à conformidade com o GDPR - nova ferramenta aberta ajudará
Como economizar dinheiro usando a interface de programação de aplicativos
DevOps em um serviço de nuvem usando 1cloud.ru como exemplo
1cloud Cloud Architecture Evolution
Ataques potenciais ao HTTPS e maneiras de se proteger contra eles
Como proteger um servidor na Internet: experiência 1cloud.ru
Programa educacional curto: o que é integração contínua