Porque é que o email precisa disto
Aqui vai a verdade incómoda sobre o email: foi desenhado no início dos anos 80 para uma pequena rede de pessoas que confiavam umas nas outras. Tal como vem de origem, qualquer pessoa pode enviar um email a dizer que é de [email protected]. Não há nada no protocolo básico que o impeça.
O SPF, o DKIM e o DMARC foram acrescentados mais tarde para resolver isso. Juntos, permitem que quem recebe o email, como o Gmail, o Outlook ou o Yahoo, responda a uma pergunta: este email vem mesmo do domínio que diz? Se a resposta for não, o email vai para o spam ou é rejeitado. E se o seu próprio domínio não os tiver configurados, os seus emails verdadeiros podem ser tratados como falsos.
Uma comparação rápida ajuda:
- SPF é a lista de convidados: que servidores podem enviar email em nome do seu domínio.
- DKIM é o selo de lacre: uma assinatura que prova que o email não foi alterado pelo caminho.
- DMARC são as instruções para o segurança da porta: o que fazer quando um email falha as verificações e a quem avisar.
SPF: a lista de convidados
O SPF (Sender Policy Framework) é uma única linha de texto que você publica no DNS do seu domínio. Lista os servidores e serviços autorizados a enviar email em seu nome. Quando o Gmail recebe um email do seu domínio, consulta essa lista e verifica se o servidor que o enviou está lá.
Um registo SPF típico tem este aspeto:
v=spf1 include:_spf.google.com include:sendgrid.net ~allLendo da esquerda para a direita:
v=spf1: "isto é um registo SPF".include:_spf.google.com: o Google Workspace pode enviar em meu nome.include:sendgrid.net: o SendGrid também (por exemplo, para os emails da minha app).~all: tudo o resto provavelmente não sou eu, por isso desconfie. (-allsignifica "de certeza que não sou eu, rejeite".)
Há ainda um limite de 10 consultas DNS dentro de um registo SPF. Cada include: conta, e os includes que estão dentro deles também. Se usar muitos serviços, pode ultrapassar o limite sem dar por isso, e aí o SPF falha para toda a gente.
DKIM: o selo de lacre
O SPF verifica de onde veio um email. O DKIM (DomainKeys Identified Mail) verifica se o próprio email não foi adulterado. O seu serviço de email assina cada mensagem enviada com uma chave privada que só ele conhece. Você publica a chave pública correspondente no seu DNS, e o servidor que recebe o email usa essa chave pública para verificar a assinatura.
Se alguém alterou o email pelo caminho, nem que seja uma única palavra no corpo, a assinatura deixa de bater certo. É como o selo de lacre de uma carta antiga: se o selo estiver partido, sabe que alguém a abriu.
Um registo DKIM é publicado num nome especial, por exemplo google._domainkey.yourdomain.com, e o seu valor é mais ou menos assim:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1...A boa notícia: nunca é você que escreve isto. O seu fornecedor de email gera-o e você só tem de o copiar para o DNS. A palavra antes de ._domainkey (aqui google) chama-se seletor. Serve simplesmente para poder ter várias chaves, uma por serviço.
DMARC: as instruções para o segurança da porta
O SPF e o DKIM dão factos ao servidor que recebe o email. O DMARC (Domain-based Message Authentication, Reporting and Conformance) diz-lhe o que fazer com esses factos. Acrescenta ainda uma regra importante chamada alinhamento: o domínio que passa no SPF ou no DKIM tem de coincidir com o domínio que o leitor vê de facto na linha "De". Sem essa regra, um burlão podia passar no SPF com o próprio domínio enquanto mostrava o seu.
Um registo DMARC fica em _dmarc.yourdomain.com e tem este aspeto:
v=DMARC1; p=none; rua=mailto:[email protected]p=none: só observar, sem bloquear nada por enquanto. Perfeito para começar.p=quarantine: enviar para o spam os emails que falham.p=reject: recusar completamente os emails que falham. A proteção mais forte.rua=mailto:...: para onde os destinatários devem enviar os relatórios-resumo diários.
Esses relatórios são a joia escondida. Mostram todos os servidores que estão a enviar email com o seu domínio, incluindo serviços de que já se tinha esquecido e qualquer pessoa que esteja a tentar fazer-se passar por si.
Configurar tudo, passo a passo
Imagine que é dono de myshop.com, usa o Google Workspace para a caixa de correio e um serviço como o SendGrid ou o Mailgun para as confirmações de encomenda. Esta é a ordem pela qual eu faria as coisas:
- Liste tudo o que envia email com o seu domínio: o fornecedor da caixa de correio, o seu site ou app, a ferramenta de newsletters, o helpdesk, o software de faturação. É o passo que as pessoas saltam, e o que mais problemas causa depois.
- Crie um único registo SPF no seu DNS (um registo TXT em
myshop.com) que inclua todos, terminando em~all. - Ative o DKIM em cada serviço. Cada um dá-lhe um registo para copiar para o DNS. Depois carregue em "verificar" ou "começar a autenticar" nesse serviço.
- Adicione um registo DMARC com
p=nonee um endereço para os relatórios, em_dmarc.myshop.com. - Espere uma a duas semanas e leia os relatórios. Corrija tudo o que for legítimo e esteja a falhar.
- Aperte a política para
p=quarantinee, mais tarde, parap=reject, quando tiver a certeza de que todo o seu email verdadeiro passa.
Como verificá-los em qualquer email que receba
Não precisa de ferramentas nenhumas. A sua app de email já mostra os resultados:
- Gmail: abra o email, clique nos três pontos e depois em Mostrar original. No topo vai ver linhas como
SPF: PASS,DKIM: PASSeDMARC: PASS. - Outlook: abra a mensagem, depois View e View message details (ou Message source), e procure o cabeçalho
Authentication-Results. - Apple Mail: View, depois Message e por fim All Headers.
Um cabeçalho real é parecido com isto:
Authentication-Results: mx.google.com;
dkim=pass header.d=myshop.com;
spf=pass smtp.mailfrom=myshop.com;
dmarc=pass (p=QUARANTINE) header.from=myshop.comTrês "pass" e domínios que coincidem: esse email é verdadeiro. Se vir fail, ou se os domínios não coincidirem com o remetente que aparece, tenha cuidado. É um dos sinais de alerta de que falo em como identificar um email de phishing.
Se estiver a configurar o seu próprio domínio, uma forma rápida de testar é enviar um email para uma caixa de entrada temporária e para um endereço do Gmail, e depois verificar os cabeçalhos da cópia do Gmail. Demora dois minutos e mostra exatamente o que o resto do mundo vê.
Problemas comuns e soluções rápidas
- "SPF: softfail" ou "neutral": o servidor que enviou o email não está no seu registo SPF. Adicione o serviço com o
include:que ele lhe indicar. - "SPF permerror": normalmente são dois registos SPF ou mais de 10 consultas. Junte tudo num só registo e retire os serviços que já não usa.
- "DKIM: fail" depois de editar um modelo: algo reescreveu o email depois de ele ser assinado (alguns serviços de reencaminhamento e rodapés de email fazem isto). Envie diretamente e teste outra vez.
- O DMARC falha apesar de o SPF passar: é o alinhamento. O SPF passou para o domínio do seu serviço de envio, não para o seu. Ative o DKIM com o seu próprio domínio nesse serviço ou defina um domínio de return-path personalizado.
- Os emails continuam a ir para o spam com tudo a passar: a autenticação prova quem você é, não que as pessoas queiram os seus emails. O conteúdo, a reputação de envio e a taxa de queixas também contam. Escrevi mais sobre isso em porque é que os emails das apps vão parar ao spam.
Precisa mesmo dos três?
Sim. Desde 2024, o Gmail e o Yahoo exigem SPF, DKIM e um registo DMARC a quem envia email em grandes volumes, e até os remetentes pequenos têm uma entrega muito melhor com os três configurados. Mais importante ainda: o DMARC com p=reject é o que impede os burlões de enviarem emails falsos em seu nome aos seus próprios clientes.
A configuração leva uma tarde. Depois disso, protege o seu domínio discretamente, todos os dias. Se tem um domínio e anda a adiar isto, este é o seu sinal. Comece hoje com p=none. Pode apertar mais tarde.