O Que é um Registro DKIM?
O DKIM (DomainKeys Identified Mail, RFC 6376) adiciona uma assinatura digital a cada mensagem que o seu servidor envia. A assinatura é feita com uma chave privada que fica no servidor. A chave pública correspondente é publicada no DNS como registro TXT em selector._domainkey.yourdomain.com, e os destinatários a buscam para verificar se a mensagem realmente veio do seu domínio e não foi alterada no caminho.
O seletor (selector) é apenas um rótulo que você escolhe, como default ou s1. Ele permite que um domínio publique várias chaves ao mesmo tempo, uma por serviço ou por geração de chave. Uma assinatura DKIM válida do seu próprio domínio também é o que permite que o email passe no DMARC quando o SPF não consegue se alinhar, por exemplo depois de um encaminhamento.

Você Precisa Gerar a Sua Própria Chave DKIM?
Muitas vezes, não. O Google Workspace cria a chave para você (Console do administrador, Apps, Google Workspace, Gmail, Autenticar e-mail), e o Microsoft 365 usa dois registros CNAME, selector1._domainkey e selector2._domainkey, que apontam para chaves gerenciadas pela Microsoft. A maioria dos serviços de newsletter e de email transacional também fornece os próprios registros.
Você precisa do seu próprio par de chaves quando você administra o servidor de email, por exemplo Postfix com OpenDKIM ou rspamd, ou Exim, ou quando um app ou relay pede que você envie uma chave privada. É para isso que serve este gerador.
Advertisement
Como Gerar Chaves DKIM e Publicar o Registro
O seletor pode ser qualquer nome feito de letras, dígitos e hifens. Um baseado em data, como s2026, facilita acompanhar a rotação de chaves.
RSA de 2048 bits é a escolha certa para quase todo mundo. O par de chaves é criado no seu navegador assim que a página carrega, e de novo quando você muda o tipo.
Baixe-a e instale-a no seu servidor de email. Ela não fica guardada em lugar nenhum, então, se você perdê-la, vai precisar de um novo par.
Adicione um registro TXT com host selector._domainkey e o valor gerado, envie uma mensagem para você mesmo e verifique com o Verificador DKIM.
Sintaxe do Registro DKIM
Um registro de chave DKIM é uma lista de pares tag=valor separados por ponto e vírgula. Só p= é obrigatório, mas publique v e k também.
Identifica o registro como uma chave DKIM. Se estiver presente, precisa vir primeiro.
O algoritmo da chave. rsa é o padrão se a tag estiver ausente.
A chave pública em base64. Um p= vazio significa que a chave foi revogada e as assinaturas feitas com ela falham.
Pede aos destinatários que tratem o domínio como em teste de DKIM. Remova quando as assinaturas forem verificadas.
Modo estrito: a identidade i= de uma assinatura precisa usar exatamente o domínio d=, não um subdomínio dele.
Limitam os algoritmos de hash (h=sha256) ou o serviço a que a chave se destina (s=email). A maioria dos registros não os inclui.
Advertisement
RSA 2048 vs 1024 vs 4096 vs Ed25519
RSA de 2048 bits: o tamanho recomendado. A RFC 8301 diz que os assinantes devem usar pelo menos 2048 bits. O valor TXT tem cerca de 410 caracteres.
RSA de 1024 bits: ainda é verificado, e é o mínimo que os destinatários aceitam, mas é fraco para os padrões atuais. Assinaturas de chaves menores não contam como válidas. Use só se o seu provedor de DNS não conseguir armazenar um valor mais longo.
RSA de 4096 bits: os destinatários precisam verificar chaves de até 4096 bits, mas o valor tem cerca de 750 caracteres, e alguns painéis de DNS e sistemas mais antigos lidam mal com ele. Acrescenta pouco em relação ao 2048.
Ed25519: uma chave moderna e muito mais curta (o registro inteiro tem cerca de 66 caracteres, RFC 8463). Nem todo destinatário a verifica ainda, então assine também com uma chave RSA, em um segundo seletor.
Por Que Meu Registro DKIM Está Dividido em Várias Strings?
Uma única string TXT comporta no máximo 255 caracteres, e um valor DKIM de 2048 bits é mais longo. O DNS resolve isso armazenando o valor como várias strings entre aspas que os destinatários juntam de novo.
A maioria dos painéis de DNS aceita o valor longo como está e o divide para você. O Amazon Route 53 e os arquivos de zona do BIND exigem que você mesmo insira a forma dividida, que é o que o botão de arquivo de zona fornece (no Route 53, cole apenas as strings entre aspas, em uma linha). Não adicione espaços nem quebras de linha dentro da chave e não coloque cada metade em um registro separado.
Advertisement
Configure a Chave no Seu Servidor de Email
Salve a chave privada como default.private (com o seu próprio seletor), deixe-a legível apenas pelo serviço de assinatura e aponte o assinador para ela. Um exemplo do OpenDKIM para example.com com o seletor default:
sudo mkdir -p /etc/opendkim/keys/example.com
sudo mv default.private /etc/opendkim/keys/example.com/
sudo chown opendkim:opendkim /etc/opendkim/keys/example.com/default.private
sudo chmod 600 /etc/opendkim/keys/example.com/default.privatedefault._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private*@example.com default._domainkey.example.comopenssl genrsa -out default.private 2048
openssl rsa -in default.private -pubout -out default.publicopendkim-genkey -b 2048 -d example.com -s defaultComo Fazer a Rotação de Chaves DKIM
Gere um novo par de chaves com um novo seletor, por exemplo s2027.
Publique o novo registro TXT e espere até que ele resolva em todo lugar.
Configure o servidor de email para assinar com o novo seletor.
Mantenha o registro antigo por mais ou menos uma semana, até que o email assinado com ele tenha sido entregue e verificado.
Depois apague o registro antigo, ou publique-o com um
p=vazio para revogá-lo.
Advertisement
Mais Ferramentas de Autenticação de Email
O DKIM é um dos três registros que os destinatários verificam. Complete o conjunto:
Consulte uma chave publicada pelo seletor e verifique a sintaxe e o tamanho.
Monte um registro SPF para os seus provedores com contagem de consultas ao vivo.
Crie uma política DMARC que usa seus resultados de SPF e DKIM.
Veja se uma mensagem real passou no DKIM, no SPF e no DMARC.