Pular para o conteúdo
Todos os conceitos

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 como smtp.mailfrom). O dono desse domínio publica no DNS quais servidores podem enviar por ele. spf=pass prova: o servidor que entregou estava autorizado por disparo-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=pass prova: disparo-facil.example assinou, e a mensagem não mudou no caminho. Qualquer um pode escrever d= 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 do From estiver alinhado (mesmo domínio registrado) com um SPF ou DKIM que passou. Aqui pampamarket.test não é disparo-facil.example, então dmarc=fail. O dono do domínio do From ainda diz o que fazer quando falha: p=none (só observar), p=quarantine (mandar para o spam) ou p=reject (recusar).
o mesmo e-mail, três remetentes Return-Path (envelope) SPF disparo-facil.example pass assinatura DKIM (d=) DKIM disparo-facil.example pass From: o que você vê DMARC pampamarket.test fail compara pass confirma um domínio, não a honestidade de quem enviou
Cada verificação olha um remetente: o SPF olha o Return-Path, o DKIM olha o domínio d= da assinatura, e o DMARC compara o domínio do From com os que passaram.
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.

Aparece nestes desafios