Módulo 4 · 4.4
DKIM: a assinatura por baixo do seu e-mail
Módulo 4: Registos para e-mail · Tempo de leitura: 8 minutos
Objetivo de aprendizagem: Depois desta lição, consegue explicar como funciona o DKIM, encontrar e verificar um registo DKIM e colocar corretamente um registo DKIM de um serviço externo (como TXT ou como CNAME).
Conceitos-chave: DKIM, assinatura digital, chave privada e chave pública, selector, _domainkey, d= e s=, v=DKIM1; k=rsa; p=, DKIM via CNAME, rotação de chaves
Um selo em cada e-mail
O SPF (lição 4.3) verifica de que servidor vem um e-mail. O DKIM (DomainKeys Identified Mail, RFC 6376) funciona de forma diferente: coloca uma assinatura digital no próprio e-mail.
Funciona assim:
- O servidor de e-mail que envia tem uma chave privada secreta. Com ela, cria para cada e-mail uma assinatura sobre as partes mais importantes: o remetente, o assunto, a data e o conteúdo.
- Essa assinatura segue numa linha de cabeçalho do e-mail:
DKIM-Signature. - A chave pública correspondente está no DNS do domínio, num registo TXT.
- O destinatário obtém essa chave pública e verifica a assinatura. Se estiver correta, sabe duas coisas: o e-mail foi realmente assinado por alguém que administra o DNS desse domínio, e o e-mail não foi alterado durante o percurso.
O que há de interessante: o DKIM continua a funcionar quando um e-mail é reencaminhado, desde que o conteúdo não seja alterado. É algo com que o SPF tem dificuldade.
Onde está a chave? O selector
Um domínio pode ter várias chaves DKIM: uma do seu próprio servidor de e-mail, uma do Microsoft 365, uma do seu serviço de newsletter. Para as distinguir, cada chave tem um nome, o selector.
Na assinatura constam dois campos importantes:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=mail2026; ...d=example.com: o domínio que assina.s=mail2026: o selector.
O destinatário procura então a chave com este nome:
<selector>._domainkey.<domínio>
mail2026._domainkey.example.comA parte _domainkey é fixa. O registo tem, por exemplo, este aspeto:
mail2026._domainkey.example.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOC..."| Elemento | Significado |
|---|---|
v=DKIM1 | Isto é uma chave DKIM. |
k=rsa | O tipo de chave. RSA é o mais comum; o ed25519 também existe (RFC 8463). |
p=... | A própria chave pública, uma longa sequência de letras e números. Se p= estiver vazio, a chave foi revogada. |
Uma chave RSA de 2048 bits é a escolha habitual; 1024 bits é o mínimo (RFC 8301). Uma chave destas é mais longa do que 255 caracteres, pelo que o registo é composto por vários trechos de texto (lição 4.2). A maioria dos painéis trata disso automaticamente.
A sua própria chave DKIM, e as dos serviços externos
O seu pacote de alojamento ou servidor de e-mail. Em muitos servidores, o DKIM está ativado por predefinição e o painel coloca o registo diretamente no DNS. Verá então um registo TXT com um nome como x._domainkey ou default._domainkey.
Se o DNS do seu domínio estiver junto de outra entidade (por exemplo, Cloudflare ou o seu registrar), o seu servidor de e-mail não pode colocar o registo aí diretamente. Nesse caso, copia o nome e o valor completo do seu painel de alojamento e cria, junto da sua entidade de DNS, um registo TXT com exatamente esse nome e valor. É algo que muitas vezes se esquece ao mudar de servidores de nomes: o e-mail passa então a ir mais frequentemente para o spam.
Serviços externos. O Microsoft 365, o Google Workspace e os serviços de newsletter assinam com a sua própria chave. Receberão deles um ou mais registos:
- Como TXT, por exemplo Google Workspace: nome
google._domainkey, valorv=DKIM1; k=rsa; p=seguido da chave longa. - Como CNAME, por exemplo Microsoft 365 (
selector1._domainkeyeselector2._domainkey) ou Mailchimp (k2._domainkeyek3._domainkey). Um CNAME aponta para uma chave gerida pelo próprio serviço. Vantagem: o serviço pode substituir a sua chave sem que tenha de fazer nada.
Todos estes registos têm o seu próprio selector, pelo que não interferem uns com os outros. Não remova o registo DKIM do seu próprio servidor de e-mail ao adicionar um serviço.
Porquê dois selectores?
Serviços como o Microsoft 365 pedem dois registos CNAME, selector1 e selector2. Assinam com uma chave de cada vez e mudam periodicamente para a outra (rotação de chaves). Se colocar apenas selector1, funciona até à primeira mudança, e a partir daí o DKIM falha de repente. Coloque, por isso, sempre todos os registos indicados pelo serviço.
Erros frequentes
- Nome de domínio duplicado. Escreve
k2._domainkey.example.comnum painel que acrescenta ele próprio o nome de domínio. Resultado:k2._domainkey.example.com.example.com. Escreva apenask2._domainkey. - TXT em vez de CNAME (ou vice-versa). Utilize exatamente o tipo indicado pelo serviço.
- Falta o ponto final num destino CNAME. Nos painéis que o exigem:
dkim2.mcsv.net.com ponto. - Chave cortada. Ao copiar, falta o último trecho de
p=. Compare o início e o fim com o original. - DKIM ativado no painel do serviço, mas registos não colocados, ou vice-versa. Na maioria dos serviços, tem primeiro de colocar os registos e só depois ativar o DKIM no respetivo ecrã de gestão.
Verificar se o DKIM funciona
Envie um e-mail para um endereço de um grande fornecedor (por exemplo, Gmail) e veja o original (Mostrar original ou Ver origem). Procure dkim=pass e veja que domínio aparece associado. Ou envie um e-mail para um serviço de teste como o mail-tester.com. Também pode consultar o registo diretamente com uma ferramenta de DNS: peça o registo TXT de <selector>._domainkey.<domínio>.
Na prática: como se apresenta num painel
Neste exemplo, utilizamos o DirectAdmin. Em Administração de DNS está um registo TXT com o nome x._domainkey; o valor começa por v=DKIM1; k=rsa; p=. Em Gerenciamento de e-mail, Contas de e-mail, há um botão para ativar ou desativar o DKIM. Um CNAME de um serviço cria-se através de Adicionar registro, tipo CNAME, nome k2._domainkey, valor com um ponto no final.
Noutros painéis, o DKIM aparece por vezes em "Autenticação de e-mail" ou "Segurança de e-mail", mas o registo no DNS é igual em todo o lado.
Resumo
- O DKIM coloca uma assinatura digital em cada e-mail; a chave pública está no DNS.
- A chave está em
<selector>._domainkey.<domínio>. O selector consta da assinatura (s=), bem como o domínio (d=). - Cada serviço tem o seu próprio selector; os registos de diferentes serviços coexistem lado a lado.
- Os serviços usam frequentemente registos CNAME e vários selectores. Coloque-os todos, com exatamente o tipo indicado.
- Se o seu DNS estiver junto de outra entidade, tem de colocar aí, você mesmo, a chave DKIM do seu próprio servidor de e-mail.
Quiz
Exercício
Exercício Z4.4: Procurar o DKIM. Abra um e-mail que tenha recebido de uma empresa ou organização e veja o original. Procure na linha de cabeçalho DKIM-Signature o domínio (d=) e o selector (s=). Preencha ambos. A verificação procura a chave correspondente.
Exercício O4.4: Configurar na sua zona de treino. Na zona de treino utiliza um serviço fictício; no seu domínio real, utiliza a chave verdadeira ou o CNAME fornecido pelo seu servidor de e-mail ou serviço. No exercício receberá uma chave de treino (o valor após p=). Essa chave é longa: cole-a na íntegra, sem omitir nada. Na sua zona de treino , crie:<code>.dnspractice.eu
- um registo TXT em
cursus._domainkeycom o valorv=DKIM1; k=rsa; p=<chave de treino>; - um registo CNAME em
k2._domainkeyque aponte paradkim.newsletter-demo.dnspractice.eu.(com o ponto no final, se o seu painel o exigir).
Exercício O4.4
Este exercício é feito na sua própria zona de treino: uma zona DNS real nos servidores de nomes da WebOké, só para si. Registe-se com o seu endereço de email. Recebe uma ligação de acesso por email e, de seguida, volta a esta lição. Utilizamos o seu endereço apenas para a finalidade do curso.
Para saber mais
Os passos destes artigos aplicam-se aos painéis da WebOké; noutros painéis o processo é semelhante.
- Manual DirectAdmin 5.8: Ativar e verificar o DKIM
- Configurar o DKIM quando o DNS está num servidor externo
- Manual DirectAdmin 5.4: Registos CNAME e o ponto final
- Manual do WebOké 6.7: O cartão Configurar e-mail (MX, SPF, DKIM, DMARC)
- RFC 6376 (DKIM), RFC 8301 (comprimento da chave), RFC 8463 (Ed25519)
