DKIM (correio identificado por DomainKeys)

E-mail e segurança
Um método de autenticação de e-mail que adiciona uma assinatura digital aos e-mails enviados, permitindo que os destinatários verifiquem se a mensagem não foi alterada.
← Voltar ao Glossário

O que é DKIM?

DKIM (DomainKeys Identified Mail) é um método de autenticação de email que permite que o servidor remetente assine digitalmente mensagens de saída. O servidor receptor pode então verificar essa assinatura usando uma chave pública publicada em DNS, confirmando que o email não foi modificado em trânsito e realmente originou do domínio reclamado.

Como DKIM Funciona

1. Geração de Chave: Proprietário de domínio gera um par de chaves pública/privada

2. Publicação de DNS: Chave pública é publicada como um registro TXT

3. Assinatura de Mensagem: Emails de saída são assinados com a chave privada

4. Verificação de Assinatura: Servidor receptor recupera chave pública e verifica assinatura

O Processo de Assinatura

Quando um email é enviado:

1. Mail server calculates a hash of message headers and body

2. Hash is encrypted with the private key (creating the signature)

3. Signature is added as a DKIM-Signature header

4. Email is transmitted

O Processo de Verificação

Quando um email é recebido:

1. Server extracts the DKIM-Signature header

2. Finds selector and domain (s=selector; d=domain.com)

3. Queries DNS for selector._domainkey.domain.com TXT record

4. Uses public key to decrypt the signature

5. Calculates its own hash of the message

6. Compares: match = pass, mismatch = fail

Formato de Registro DKIM

Registros DKIM são registros TXT em um subdomínio específico:

selector._domainkey.example.com.    IN    TXT    "v=DKIM1; k=rsa; p=MIGfMA0..."

Componentes de Registro

TagDescriçãoExemplo
vVersãov=DKIM1
kTipo de chavek=rsa
pChave pública (base64)p=MIGfMA0GCSqG...
tFlags (opcional)t=y (modo testing)
hAlgoritmos hashh=sha256

Seletores

Seletores permitem múltiplas chaves DKIM por domínio:

google._domainkey.example.com       # Google Workspace

s1._domainkey.example.com # Sendgrid

mailchimp._domainkey.example.com # Mailchimp

Cada serviço de email fornece seu próprio seletor e chave.

Header de Assinatura DKIM

Uma assinatura DKIM parece:

DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=google;

c=relaxed/relaxed; q=dns/txt;

h=from:to:subject:date:message-id;

bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;

b=AuUoFEfDxTDkHlLXSZEpZj79...

Campos principais:

Configurando DKIM

Para Google Workspace

1. Vá para Admin Console → Apps → Gmail → Authenticate email

2. Gere chave DKIM (2048-bit recomendado)

3. Adicione registro TXT fornecido pelo Google

4. Ative assinatura DKIM

Para Serviços de Terceiros

A maioria dos serviços de email (SendGrid, Mailchimp, etc.) fornece:

1. Um registro CNAME para adicionar (para sua chave gerenciada)

2. Ou um registro TXT com a chave pública

Exemplo (SendGrid):

s1._domainkey.example.com    CNAME    s1.domainkey.sendgrid.net

Verificando DKIM

Envie um email de teste para um serviço que mostra headers (Gmail mostra resultados de autenticação). Usando linha de comando:
dig google._domainkey.example.com TXT
Usando DomScan:
curl "https://domscan.net/v1/health?domain=example.com"

# Reports DKIM status based on common selectors

Melhores Práticas de DKIM

Use Chaves de 2048-bits

Chaves mais antigas de 1024-bits são cada vez mais vulneráveis. A maioria dos provedores agora padrão para 2048-bits.

Rotacione Chaves Periodicamente

Rotacione chaves DKIM anualmente ou após incidentes de segurança. Publique nova chave com novo seletor antes de mudar.

Assine Headers Importantes

Garanta que From, To, Subject, Date e Message-ID estejam inclusos em assinaturas.

Não Modifique Mensagens Assinadas

Serviços de mailing list ou encaminhamento que modificam conteúdo quebram DKIM. Use ARC (Authenticated Received Chain) para emails encaminhados.

Limitações de DKIM

DKIM sozinho não previne spoofing—apenas prova que uma mensagem não foi alterada. Um domínio pode ter DKIM válido enquanto atacantes enviam email falsificado não assinado. DMARC resolve isto especificando o que fazer com mensagens não assinadas.

Coloque este Conhecimento em Prática

Use a API DomScan para verificar disponibilidade de domínio, saúde e muito mais.