Deliverability

O que é DKIM e como funciona a assinatura DKIM?

DKIM permite que os destinatários verifiquem qual domínio assinou um e-mail e se o conteúdo assinado foi alterado.

Uma mensagem assinada ainda pode ser spam. O domínio de assinatura também pode diferir do endereço exibido ao destinatário.

O que uma assinatura DKIM cobre?

Uma assinatura DKIM protege campos de cabeçalho selecionados e um hash do corpo.

A tag h= lista os campos de cabeçalho assinados. A tag bh= contém o hash do corpo. O servidor de envio produz a assinatura com sua chave privada. Os destinatários a verificam com a chave pública correspondente.

O destinatário recalcula o hash do corpo. Ele também verifica a assinatura sobre os cabeçalhos selecionados e o cabeçalho de assinatura, que contém esse hash.

A RFC 6376 exige a assinatura do cabeçalho From. Outros campos de cabeçalho podem permanecer sem assinatura. Adicionar um Reply-To não assinado pode, portanto, manter DKIM válido.

Cabeçalhos repetidos precisam de tratamento separado. O assinante pode listar um nome de cabeçalho mais vezes do que ele aparece para impedir que outra ocorrência seja adicionada sem detecção.

Onde o destinatário encontra a chave pública?

O destinatário localiza a chave pública usando o domínio de assinatura e o seletor, o nome que identifica essa chave. A tag d= fornece o domínio. A tag s= fornece o seletor.

Para d=example.com e s=foo.bar, o nome de consulta é foo.bar._domainkey.example.com. O seletor permite chaves diferentes sob o mesmo domínio de assinatura.

Durante a rotação, publique a chave substituta antes de assinar com ela. Mantenha a chave de verificação antiga disponível enquanto mensagens assinadas com ela ainda estiverem em trânsito. Removê-la prematuramente impede que os destinatários verifiquem essas mensagens.

Por que mudanças de formatação podem quebrar uma assinatura?

A canonicalização, a normalização aplicada antes da assinatura e da verificação, determina quais mudanças de formatação DKIM tolera.

A tag c= escolhe algoritmos separados para cabeçalho e corpo. No relaxed/relaxed, ambos usam normalização relaxed.

AlgoritmoComportamento do cabeçalhoComportamento do corpo
simplePreserva a formatação do cabeçalhoIgnora linhas vazias no final
relaxedNormaliza maiúsculas/minúsculas, dobramento e espaços em branco do nome do cabeçalhoNormaliza espaços em branco e linhas vazias finais

Um cabeçalho dobrado continua em outra linha. O processamento relaxed de cabeçalho tolera esse dobramento. O processamento simple pode falhar depois que um servidor redobra o mesmo cabeçalho.

Compare o conteúdo assinado antes e depois do relay que falhou, porque uma mudança de formatação invisível pode explicar o resultado.

Quais algoritmos de assinatura DKIM suporta?

DKIM suporta os algoritmos de assinatura RSA e Ed25519, ambos combinados com SHA-256.

O RSA tem um tamanho mínimo de chave de 1024 bits conforme a RFC 8301. Chaves menores oferecem resistência insuficiente ao comprometimento de chave.

O tamanho RSA recomendado é de pelo menos 2048 bits, oferecendo mais resistência ao comprometimento de chave. Escolha esse tamanho quando seu sistema de assinatura o suportar. A especificação proíbe rsa-sha1 para assinatura e verificação.

A RFC 8463 adiciona ed25519-sha256. Uma mensagem pode conter assinaturas RSA e Ed25519 para compatibilidade com destinatários que suportam algoritmos diferentes.

A orientação do Yahoo também exige uma chave DKIM de no mínimo 1024 bits.

O que acontece quando uma lista de e-mails edita a mensagem?

Uma edição pode invalidar DKIM quando altera conteúdo coberto pela assinatura.

O encaminhamento por si só não altera o conteúdo assinado. Uma assinatura intacta pode sobreviver a ele. Um rodapé anexado pode alterar o hash do corpo. Um Subject assinado que foi reescrito pode invalidar a assinatura do cabeçalho.

A tag opcional l= limita a cobertura do corpo a um número especificado de bytes. Com l=100, o conteúdo após os primeiros 100 bytes normalizados fica desprotegido. Anexar texto enganoso pode, portanto, manter a assinatura válida.

Evite esse limite quando precisar que todo o corpo esteja protegido. O ARC permite que intermediários preservem evidências assinadas de autenticação antes de suas edições.

Como você configura DKIM com Bird?

Você publica o registro DKIM retornado quando registra seu domínio de envio.

O campo dkim.mode de API tem como padrão txt. Com esse modo, publique a chave pública em um registro TXT. O schema também lista delegated. Esse valor retorna HTTP 422 quando você registra um domínio de envio, então use txt.

Bird cria uma chave e um seletor separados para cada organização que usa um domínio de envio. Organizações que usam o mesmo domínio não precisam compartilhar uma chave de assinatura.

O guia de autenticação explica o registro retornado.

Uma assinatura aprovada prova que a mensagem é segura?

Uma assinatura aprovada estabelece responsabilidade pelo conteúdo assinado. Ela não estabelece se a mensagem é desejada ou confiável.

Ela também não exige que o domínio de assinatura corresponda ao domínio From visível. DMARC fornece essa regra de correspondência por meio do alinhamento. A reputação do remetente, a avaliação que o destinatário faz do tráfego de um remetente, continua sendo uma consideração separada.

Em resumo

  1. Apenas o conteúdo selecionado é protegido.

    DKIM cobre os campos de cabeçalho listados e um hash do corpo. O conteúdo não protegido pode mudar sem invalidar a assinatura.

  2. Seletores localizam as chaves de verificação.

    O seletor e o domínio de assinatura identificam o registro DNS que contém a chave pública.

  3. A normalização afeta a verificação.

    Os algoritmos simple e relaxed tratam mudanças de formatação de maneiras diferentes.

  4. O encaminhamento não garante aprovação.

    Uma assinatura intacta pode sobreviver ao encaminhamento, mas alterações no conteúdo assinado podem quebrá-la.

Coloque em prática.

Continue com a documentação, guias e exemplos sobre este tópico. Os recursos estão em inglês.

Obtenha um resumo de implementação

Construa na mesma rede.

Uma chave de API de teste é sua imediatamente. A produção é desbloqueada quando adicionar um método de pagamento e verificar um remetente.

Sua próxima ideia.
Pronta para conectar.