Autenticação de e-mail: SPF, DKIM e DMARC
Um pass quer dizer que algum domínio assumiu a mensagem, não que ela é honesta. O que importa é qual domínio passou e se ele é o do From.
Quando um e-mail chega, o provedor de quem recebe faz três verificações e anota o resultado num cabeçalho Authentication-Results. Um exemplo:
From: "Pampa Market" <[email protected]>
Return-Path: <[email protected]>
Authentication-Results: mx.provedor.test;
spf=pass [email protected];
dkim=pass header.d=disparo-facil.example;
dmarc=fail header.from=pampamarket.test
Um e-mail carrega três "remetentes", e cada verificação olha um deles:
- SPF olha o remetente do envelope (o
Return-Path, que aparece comosmtp.mailfrom). O dono desse domínio publica no DNS quais servidores podem enviar por ele.spf=passprova: o servidor que entregou estava autorizado pordisparo-facil.example. - DKIM olha a assinatura. O servidor assina partes da mensagem com uma chave secreta, e a chave pública fica no DNS do domínio
d=.dkim=passprova:disparo-facil.exampleassinou, e a mensagem não mudou no caminho. Qualquer um pode escreverd=com o domínio de outro, mas aí a assinatura não confere e dáfail. - DMARC liga tudo ao
From, o endereço que você vê. Passa só se o domínio doFromestiver alinhado (mesmo domínio registrado) com um SPF ou DKIM que passou. Aquipampamarket.testnão édisparo-facil.example, entãodmarc=fail. O dono do domínio doFromainda diz o que fazer quando falha:p=none(só observar),p=quarantine(mandar para o spam) oup=reject(recusar).
| Resultado | Prova | Não prova |
|---|---|---|
spf=pass |
o servidor estava autorizado pelo domínio do envelope | nada sobre o From |
dkim=pass |
o domínio d= assinou e o texto não mudou |
nada sobre o From, se d= for outro |
dmarc=pass |
o domínio do From é o mesmo que passou |
que esse domínio é de quem diz ser |
O que nenhuma das três prova é honestidade. Um golpista registra pampamarket-ofertas.example, configura SPF, DKIM e DMARC e tira pass em tudo, para o domínio dele. Por isso, leia sempre qual domínio passou e compare com o domínio que você esperava. E confie só no Authentication-Results escrito pelo seu provedor (com o nome dele no começo): um cabeçalho que já veio pronto de fora pode ter sido escrito pelo golpista.