Skip to main content
New SPF lookups must resolve in milliseconds — why a DMARC tool's add-on isn't enough Learn Why → →

Assinatura DKIM

Uma assinatura DKIM é uma assinatura criptográfica adicionada aos cabeçalhos de um e-mail (o cabeçalho DKIM-Signature) que permite aos receptores verificar que a mensagem foi autorizada pelo domínio de envio e não foi alterada em trânsito. As tags principais incluem d (domínio), s (seletor), b (assinatura) e bh (hash do corpo).

Este guia faz parte do nosso guia completo sobre DKIM. Relacionado: o registro DKIM e por que o DKIM falha.

Uma assinatura DKIM é uma assinatura criptográfica adicionada aos cabeçalhos de um e-mail — transportada no cabeçalho DKIM-Signature — que permite a um servidor receptor verificar que a mensagem foi autorizada pelo domínio de envio e não foi alterada em trânsito. A assinatura é gerada com uma chave privada mantida pelo remetente e verificada contra uma chave pública correspondente publicada no DNS.

Como é o cabeçalho DKIM-Signature

A assinatura viaja como um único campo de cabeçalho anexado à frente da mensagem. Ela reúne tudo o que um receptor precisa — o domínio de assinatura, o seletor, quais cabeçalhos foram assinados, um hash do corpo e a própria assinatura — em uma série de pares tag=value separados por ponto e vírgula.

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
    d=example.com; s=selector1; t=1700000000;
    h=from:to:subject:date;
    bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
    b=Cg5Xje8kY0m5xT1pW2qL4vN8rH6dF3aZ9cU7bE0iQoR2sT4uV6wX8yZ1
    aB3cD5eF7gH9jK2lM4nP6qR8sT0uV2wX4yZ6aB8cD0eF2gH4jK6l=

O cabeçalho é inserido pelo servidor de e-mail do remetente antes de a mensagem sair do domínio. As quebras de linha e a indentação servem apenas para dobramento — o valor é logicamente uma única string contínua.

As tags em uma assinatura DKIM

Cada tag carrega uma peça do quebra-cabeça de verificação. O signatário escolhe esses valores; o verificador os lê de volta para reconstruir e checar a assinatura.

TagNomePropósito
vVersãoVersão do DKIM. Sempre 1.
aAlgoritmoAlgoritmo de hash e de assinatura, por exemplo rsa-sha256 ou ed25519-sha256.
dDomínioO domínio de assinatura — a identidade que o DKIM autentica.
sSeletorNomeia qual chave pública buscar no DNS do domínio.
hCabeçalhos assinadosLista separada por dois-pontos dos campos de cabeçalho cobertos pela assinatura.
bhHash do corpoHash do corpo (canonicalizado) da mensagem.
bAssinaturaA assinatura criptográfica em si, codificada em base64.
cCanonicalizaçãoComo cabeçalhos/corpo são normalizados antes do hash, por exemplo relaxed/relaxed.
t / xTimestampst é quando a mensagem foi assinada; x é quando a assinatura expira.

Como funciona a assinatura (ao enviar)

Quando uma mensagem sai do servidor de envio, o DKIM faz duas coisas. Primeiro, ele canonicaliza o corpo e faz o seu hash, armazenando o resultado em bh. Depois, ele canonicaliza os cabeçalhos nomeados em h — junto com o próprio cabeçalho DKIM-Signature (com um b vazio) — faz o hash desse bloco e assina o hash com a chave privada do domínio. A assinatura resultante torna-se o valor b. Como a chave privada nunca sai do remetente, apenas o verdadeiro proprietário do domínio pode produzir uma assinatura que será validada.

Como funciona a verificação (ao receber)

O servidor receptor lê o cabeçalho DKIM-Signature para descobrir o domínio (d) e o seletor. Ele consulta o DNS em <selector>._domainkey.<domain> para buscar a chave pública no registro DKIM. Em seguida, ele repete o trabalho do remetente: canonicaliza e faz o hash do corpo, compara-o com bh, canonicaliza e faz o hash dos cabeçalhos assinados, e usa a chave pública para checar b contra esse hash de cabeçalho. Se tanto o hash do corpo corresponder quanto a assinatura verificar, o DKIM passa. A verificação de bh é o que detecta qualquer adulteração no corpo da mensagem — até mesmo um único caractere alterado produz um hash diferente e falha na verificação.

Quando as assinaturas falham

Uma assinatura DKIM falha sempre que a mensagem que o receptor vê não corresponde mais ao que o remetente assinou. As causas mais comuns são:

  • Modificação em trânsito — listas de discussão, encaminhadores e alguns gateways reescrevem assuntos, anexam rodapés ou recodificam o corpo, o que quebra o hash do corpo.
  • Incompatibilidade de hash do corpo — qualquer alteração na parte assinada do corpo muda bh, então a verificação falha mesmo que a chave esteja correta.
  • Chave errada ou ausente — o seletor aponta para um registro DNS que está ausente, expirado ou contém a chave pública errada.

Para uma explicação mais completa das causas e correções, consulte por que o DKIM falha, e use a ferramenta gratuita de consulta DKIM para confirmar que a chave pública de um seletor está publicada e bem formada.

Perguntas Frequentes

O que é uma assinatura DKIM?

Uma assinatura DKIM é uma assinatura criptográfica adicionada aos cabeçalhos de um e-mail no campo DKIM-Signature. O remetente a gera com uma chave privada sobre cabeçalhos selecionados e um hash do corpo. Os receptores a verificam contra uma chave pública no DNS, provando que a mensagem veio do domínio e não foi alterada.

O que significa a tag b= em uma assinatura DKIM?

A tag b= contém a assinatura em si: um valor codificado em base64 produzido ao assinar um hash dos cabeçalhos assinados canonicalizados com a chave privada do domínio de envio. O receptor a decodifica e a verifica contra a chave pública buscada no DNS. Se os cabeçalhos assinados foram alterados em trânsito, a verificação de b= falha.

Por que uma assinatura DKIM falha após o encaminhamento?

Encaminhadores e listas de discussão frequentemente modificam a mensagem — anexando rodapés, reescrevendo o assunto ou recodificando o corpo. Como o DKIM assina o corpo exato e os cabeçalhos selecionados, qualquer alteração desse tipo modifica o hash calculado de modo que ele não corresponde mais ao bh assinado ou ao hash do cabeçalho. A assinatura então falha na verificação, mesmo que a original fosse válida.

O que é o hash do corpo (bh) no DKIM?

A tag bh= é um hash do corpo da mensagem após a canonicalização, calculado com o algoritmo nomeado em a. Ao receber, o verificador recalcula o hash do corpo e o compara com bh. Uma incompatibilidade significa que o corpo foi alterado em trânsito, então a assinatura é rejeitada antes mesmo de a assinatura criptográfica em b= ser checada.

Rated 5/5 on G2 · Trusted since 2018

Trusted by 50,000+ domains

"AutoSPF Flattens SPF Records Seamlessly & Keeps Changes Logged - I am quite pleased with the product"

It does what it promises to do, and does it very well. I appreciate that it keeps a log of changes made, which prevents many mistakes. A client's SPF record would have way too many lookups, but AutoSPF makes that problem go away. The length of the SPF record is typically not the issue; it's the amount of lookups in the record that are. AutoSPF "flattens" the record, automatically expanding the defined lookups to IP addresses or ranges. And it auto-updates the record when the un-flattened lookups change.
PJ

Peter J.

President · Small-Business (50 or fewer emp.)

"Helped us go beyond capacity"

AutoSPF did exactly as described, it helped us get past our 10 lookup limit. Afterwards, we hit another limit regarding overall capacity and when contacted, they quickly provided us with a new solution to eliminate capacity issues entirely going forward, so now we can add as many SPF records as needed. They also provided us with a personalized support video explaining their new method in its entirety using our instance as the example.
VU

Verified User

Financial Services · Mid-Market (51-1000 emp.)

"Great service and great support"

AutoSPF was easy to initially set up on our own and a great cost effective entry into spf flattening. Needed our first support assistance today and got great response including a video demonstrating the issue I was trying to solve, a quick fix, and more detailed followup.
GF

Greg F.

Mid-Market (51-1000 emp.)