O DKIM resolve um problema que o SPF não consegue: verificar que o conteúdo do e-mail não foi alterado após o envio, e que ele realmente veio do servidor que diz ser o remetente. Para isso, usa criptografia assimétrica — o mesmo mecanismo que protege conexões HTTPS.
O servidor de envio mantém uma chave privada que assina matematicamente cada mensagem antes de enviá-la. A chave pública correspondente fica publicada no DNS. Qualquer servidor receptor pode buscar essa chave e verificar a assinatura — mas sem a chave privada, é impossível forjá-la.
Seletores: múltiplas chaves para múltiplos serviços
A chave pública DKIM é publicada em um subdomínio especial usando um seletor:
google._domainkey.seudominio.com
Os seletores permitem que um domínio tenha várias chaves DKIM ativas ao mesmo tempo — uma para o servidor de e-mail corporativo, outra para a ferramenta de marketing, outra para o CRM. Cada relay usa seu próprio par de chaves, e todos ficam identificáveis pelo seletor.
O RazTec Analyzer testa automaticamente os seletores mais comuns:
default,
google,
mail,
selector1 e outros 9 mais.
Caso o seu seletor seja personalizado, use o campo "Seletor DKIM" na análise.
Tamanho de chave: por que 2048 bits?
A chave pública
DKIM é armazenada em Base64
na tag p=
do registro TXT.
Chaves RSA de 1024 bits são consideradas inseguras pelos padrões atuais —
podem ser fatoradas com hardware moderno. O recomendado é 2048 bits,
e contextos de alta segurança já começam a adotar 4096 bits.
Revogação e NXDOMAIN
Quando uma chave privada
é comprometida, a forma correta de revogar o seletor é publicar um registro com
p=
vazio. Isso sinaliza a qualquer servidor receptor que e-mails assinados com aquele
seletor devem ser rejeitados.
Se o registro simplesmente não existe, o DNS retorna NXDOMAIN — o seletor nunca foi configurado. Nesse caso, o servidor receptor trata o e-mail como se o DKIM não estivesse presente, e a verificação DMARC pode falhar.