🔥 Prepare-se para a Black Friday, a Cyber Monday... 20% de desconto* com o código BF26 👉🏻 Inscrever-me

O subdomínio marthastewart.msn.com apontava, através de um CNAME, para msnmarthastewartsweeps.com, um domínio que ficou 21 anos sem dono. Em setembro de 2022, alguém comprou-o. Passou a controlar as respostas DNS desse subdomínio, SPF incluído, e os seus servidores puderam enviar correio autenticado em nome de marthastewart.msn.com. A Guardio Labs documentou este caso a 26 de fevereiro de 2024, no relatório SubdoMailing.

Um registo CNAME (Canonical Name) é um alias DNS: o nome que o contém remete para outro nome, e o resolvedor reaproveita as respostas deste último. Serve para ligar um subdomínio a um serviço externo, por exemplo um ESP, sem copiar os seus endereços IP. Cria-se com poucas linhas na zona DNS e controla-se com dig. Esquecido depois de cancelar o serviço, torna-se uma porta de entrada.

O que é um registo CNAME?

Um CNAME é um alias DNS: um nome que remete para outro nome. Está definido na RFC 1034 (secção 3.6.2), publicada em novembro de 1987. Declara o seu titular como alias e coloca o nome canónico nos dados do registo. No exemplo da RFC (USC-ISIC.ARPA em CNAME para C.ISI.EDU), quando um servidor de nomes não encontra o tipo pedido num nome que tem um CNAME, devolve o CNAME e repete a consulta sobre o destino. Só uma consulta do tipo CNAME não é repetida.

Numa zona DNS, um registo escreve-se assim: links.seudominio.pt. 3600 IN CNAME destino.esp-exemplo.net. O ponto final marca um nome completo e 3600 é o TTL, ou seja 3600 segundos. A RFC 2181 (julho de 1997) fixa o vocabulário: a etiqueta que tem o CNAME é o alias, o valor é o nome canónico.

O destino pode ser, por sua vez, um CNAME. A RFC 1034 pede que o software siga estas cadeias e trate os ciclos como erro. Cada elo custa mais uma consulta.

CNAME ou registo A: como escolher

Escolha um CNAME quando o serviço lhe dá um nome (CDN, SaaS, ESP) e um A ou AAAA quando dispõe de um endereço IP. A RFC 2181 (secção 10.1) enuncia a regra de fundo: para um dado nome, ou existe apenas um CNAME, ou existem registos de outros tipos, ou o nome está vazio. Um CNAME exclui, portanto, qualquer vizinho nesse nome.

Diferenças entre um registo A ou AAAA e um registo CNAME
Critério A / AAAA CNAME
Valor Um endereço IPv4 (A) ou IPv6 (AAAA) Um nome de domínio
O fornecedor muda de endereço IP Altera o registo Nada a fazer, o nome de destino acompanha
Outros tipos ao lado (MX, TXT) Possíveis Excluídos
Domínio raiz (apex) Sim Não, em DNS padrão
Consultas DNS Uma Pelo menos mais uma

O CNAME cobre IPv4 e IPv6 de uma só vez, enquanto é preciso um A (IPv4) e um AAAA (IPv6): o destino fornece os seus próprios A e AAAA e fica uma única linha para manter. Convém quando uma CDN ou uma plataforma SaaS publica um nome em vez de um endereço. Num domínio personalizado nesse tipo de serviço, o CNAME não transporta certificado nenhum: o serviço tem de emitir um certificado TLS para o seu nome, caso contrário o navegador mostra um erro.

CNAME no domínio raiz e em www

No domínio raiz não é possível. O apex de uma zona tem sempre registos SOA e NS, o que exclui o CNAME pela regra anterior. A maioria dos domínios acrescenta-lhe também os seus registos MX. A RFC 2181 (secção 10.3, julho de 1997) proíbe, aliás, que um MX ou um NS aponte para um alias: o valor deve conter diretamente endereços.

O lugar habitual de um CNAME é o www. Escreve-se www.seudominio.pt em CNAME para o serviço; a raiz remete para o www com um redirecionamento HTTP.

Alguns fornecedores de DNS contornam o limite. A documentação da Cloudflare indica que o CNAME flattening permite um CNAME na raiz: a Cloudflare resolve o destino, mesmo através de vários CNAME, e devolve o endereço IP final em vez do CNAME. A função ativa-se por defeito em todos os planos quando a raiz é um CNAME.

Para que serve um CNAME no envio de emails?

Um CNAME publica as suas chaves DKIM junto do fornecedor, põe o seu nome nos links de clique e isola um subdomínio de envio. A autenticação do domínio condiciona a entregabilidade de email. Na Brevo, é obrigatória desde 1 de fevereiro de 2024, com as exigências do Gmail e do Yahoo. As três plataformas da tabela pedem CNAME sob o seu domínio, com variantes.

CNAME pedidos por três plataformas de envio, segundo a respetiva documentação
Plataforma CNAME pedidos Função
Twilio SendGrid 1 CNAME para o domínio de envio e 2 CNAME de link branding SPF e DKIM no primeiro, acompanhamento de cliques e aberturas nos outros dois
Microsoft 365 2 CNAME de seletor DKIM (selector1._domainkey e selector2._domainkey) Apontar para as chaves públicas DKIM
Brevo 2 CNAME DKIM ou 1 registo TXT, consoante a conta Assinar as mensagens em nome do seu domínio

No DKIM, o CNAME deixa a chave pública no fornecedor: publica o ponteiro e ele mantém o controlo da chave. O Microsoft 365 gere dois pares de chaves, daí os dois CNAME de seletor. A assinatura leva então o seu domínio na etiqueta d=. O pormenor conta para o DMARC: a Microsoft precisa que o DKIM só valida o DMARC se o domínio assinante estiver alinhado com o domínio do endereço do remetente. O mecanismo está detalhado no artigo sobre a assinatura DKIM.

Um domínio de tracking personalizado substitui o domínio genérico do fornecedor nos links de clique. Com um domínio genérico, os links de todos os clientes do fornecedor partilham o mesmo domínio. Com o seu, a reputação dos links é sua. Os passos do lado do remetente estão descritos no artigo sobre a personalização dos DNS de envio.

O CNAME serve ainda para isolar a reputação. A Microsoft aconselha um subdomínio para os envios em massa que não controla (por exemplo marketing.contoso.com). A escolha do endereço IP é distinta: IP partilhado ou dedicado. Um subdomínio novo parte sem histórico, e por isso convém o aquecimento gradual antes de aumentar o volume. O limite do método discute-se no artigo sobre os subdomínios de envio. O domínio de retorno dos rejeitados (o Return-Path) e os envios de confirmação (emails transacionais) acertam-se com o mesmo princípio.

Configurar um CNAME passo a passo

É preciso ter acesso à zona DNS, alojada no seu registrar ou num fornecedor dedicado.

  1. Na plataforma de envio ou de alojamento, abra a página de autenticação do domínio (na Brevo: Settings > Senders, Domains, IPs > Domains > Authenticate) e copie cada par nome + valor sem o modificar.
  2. Abra a zona DNS do domínio e procure o nome a criar. Confirme que não existe mais nenhum registo nele (A, AAAA, TXT, MX). Se já existir um, a regra da RFC 2181 impede a criação.
  3. Adicione o registo: tipo CNAME, nome (apenas o subdomínio na maioria das interfaces, por exemplo links ou s1._domainkey), destino (o nome fornecido, com ponto final se a interface o pedir).
  4. Deixe o TTL por defeito na primeira tentativa. Reduza-o para alguns minutos só se tencionar alterar o registo.
  5. Na Cloudflare, ponha o registo em «DNS only» (nuvem cinzenta). Mantenha desativada a opção que aplana todos os CNAME, sob pena de falhar no passo seguinte.
  6. Verifique com dig ou nslookup (secção seguinte) e inicie depois a validação a partir da interface do fornecedor.

Se o seu serviço de DNS recusar sublinhados no nome de um CNAME, não conseguirá publicar os seletores DKIM («_domainkey»). A Twilio assinala este caso para a sua função de segurança automatizada. Nessa situação, contacte o suporte da plataforma ou o do serviço de DNS.

Verificar um CNAME com dig e nslookup

Execute «dig links.seudominio.pt CNAME +short». A resposta mostra o destino, com o ponto final. Uma resposta vazia significa que nenhum CNAME é visível a partir do seu resolvedor.

A cadeia completa aparece com «dig links.seudominio.pt A». A secção ANSWER lista o CNAME e depois os endereços do destino. No Windows, o nslookup vem instalado com o TCP/IP: «nslookup -type=CNAME links.seudominio.pt 8.8.8.8» interroga o resolvedor público da Google e mostra uma linha «canonical name =».

O resolvedor local pode guardar em cache a resposta antiga. Para interrogar a origem, obtenha os servidores de nomes com «dig seudominio.pt NS +short» e execute depois «dig @ns1.exemplo.net links.seudominio.pt CNAME» (substituindo ns1.exemplo.net por um deles). Se o servidor autoritativo responder bem, o registo está publicado.

TTL e propagação: quanto tempo esperar

O TTL é o tempo, em segundos, durante o qual um resolvedor guarda uma resposta antes de a revalidar. Na Cloudflare, o valor Auto de um registo com proxy corresponde a 300 segundos. Uma resposta colocada em cache antes da sua alteração continua a ser servida até o TTL expirar.

Numa substituição, a duração depende do TTL do registo antigo. A Twilio indica que as alterações de DNS podem demorar até 48 horas: repita a verificação passado esse prazo. Baixe o TTL na véspera de uma migração.

Erros que fazem falhar um CNAME

  • Um registo TXT, A ou MX já presente no mesmo nome: um nome que tem um CNAME não pode ter mais nada.
  • O domínio escrito duas vezes: algumas interfaces acrescentam o domínio sozinhas e links.seudominio.pt passa a links.seudominio.pt.seudominio.pt.
  • Um CNAME com proxy ou aplanado na Cloudflare: o resolvedor recebe endereços IP em vez do CNAME esperado, e o fornecedor de envio não reconhece o registo. A documentação da Cloudflare avisa que aplanar todos os CNAME pode fazer falhar a verificação de um domínio por um serviço externo.
  • Um destino que já não resolve: após o aplanamento, a Cloudflare devolve uma resposta vazia (NODATA), que parece falta de propagação quando o destino é que está avariado.
  • Um nome fora dos limites: uma etiqueta tem no máximo 63 caracteres e o nome completo 253, segundo a documentação da Cloudflare.
  • Uma verificação que continua a falhar passadas 48 horas: a Twilio SendGrid convida então a contactar o seu suporte, porque o prazo de propagação foi ultrapassado.
  • Um MX que aponta para um nome que é ele próprio um CNAME, proibido pela RFC 2181.

O que é um CNAME órfão e como evitar o subdomain takeover?

Um CNAME órfão (dangling) aponta para um recurso que já não existe. A Microsoft descreve o cenário: cria greatapp.contoso.com em CNAME para uma aplicação alojada, elimina a aplicação mas não o CNAME. Um terceiro recria um recurso com um nome idêntico e o seu subdomínio passa a servir o conteúdo dele. A Microsoft refere duas consequências: os cookies recuperados nos subdomínios e um certificado TLS válido obtido para o subdomínio desviado.

No email, o subdomínio herda os registos do destino, SPF incluído, como mostra o caso da MSN. A Guardio contava mais de 8000 domínios afetados no relatório de fevereiro de 2024, entre eles marcas como eBay, VMware ou McAfee.

Audite a sua zona: para cada CNAME exportado, consulte o destino com dig e procure respostas «NXDOMAIN» ou páginas de «recurso não encontrado» do serviço. Elimine o CNAME assim que cancelar uma ferramenta, antes de fechar a conta.

Perguntas frequentes

Um CNAME pode apontar para um endereço IP?

Não. Os dados de um CNAME são um nome de domínio. Para um endereço IP, use um A (IPv4) ou um AAAA (IPv6).

Pode haver dois CNAME no mesmo nome?

Também não. A RFC 2181 (secção 10.1) prevê um único nome canónico por alias. Se dois serviços reclamarem esse alias, dê a cada um um subdomínio distinto.

CNAME ou redirecionamento 301?

O CNAME resolve um nome em DNS e deixa o URL inalterado. O redirecionamento 301 é uma resposta HTTP que muda o URL apresentado e avisa a Google de que a página mudou de sítio. Para uma mudança de endereço do site, use o redirecionamento.

Validar a lista antes do próximo envio

Um DNS limpo não retira da sua lista os endereços inexistentes: o hard bounce acontece seja qual for o CNAME. A CaptainVerify classifica cada endereço em seis estados (válido, inválido, desconhecido, gratuito, de risco, descartável) e oferece 100 créditos de email na criação de uma conta. Teste a sua próxima lista antes do envio.

Adicionar Captain Verify às fontes preferidas no Google
Nicolas Forni
Author

Fundador da Captain Verify, trabalho na verificação de emails e números de telemóvel desde 2015. Neste blog escrevo sobre entregabilidade, higiene das bases de contactos, regras dos fornecedores de correio e SMS marketing. Artigos concretos, pensados para as equipas de marketing que enviam todas as semanas.