pressione ⌘K para trocar de ferramenta
EMAIL AUTH

Analisador de Cabeçalhos de E-mail

Analisa cabeçalhos de e-mail e rastreia rotas de entrega.

local
message-header
§01 SOBRE ESTA FERRAMENTA

Visão geral

Todo servidor de e-mail que manipula uma mensagem acrescenta um cabeçalho Received no início dela. Lidos em ordem, esses cabeçalhos são o caminho de entrega: qual host passou a mensagem para qual, e quando. Lidos junto com os resultados de autenticação, eles dizem se a mensagem vem mesmo de onde afirma vir.

Esta ferramenta desdobra os cabeçalhos, reconstrói o caminho como uma lista numerada de saltos com o atraso de cada um, e traz os cabeçalhos de autenticação em separado, para que você não precise garimpá-los no meio do ruído.

Como usar

  1. No seu cliente de e-mail, abra o original ou o código-fonte bruto da mensagem. No Gmail isso é Mostrar original; no Outlook, Propriedades → Cabeçalhos da Internet; no Apple Mail, Visualizar → Mensagem → Código-fonte bruto.
  2. Cole tudo, do topo da mensagem até a primeira linha em branco. O corpo não é necessário.
  3. Leia a lista de saltos de cima para baixo — o salto 1 é a origem.
  4. Leia os resultados de autenticação logo abaixo dela.

Lendo a lista de saltos

Cada linha mostra o host remetente (from), o host receptor (by) e o atraso desde o salto anterior. Uma entrega normal são dois a cinco saltos concluídos em poucos segundos.

A direção importa. Os relays acrescentam no início, e não no fim, então os cabeçalhos brutos vêm do mais novo para o mais antigo; a lista aqui está invertida para que se leia na direção em que a mensagem viajou. Quando você comparar com o código-fonte bruto, lembre-se de que os dois estão de cabeça para baixo um em relação ao outro.

Os atrasos vêm da data em cada cabeçalho Received, e essas datas são escritas por máquinas diferentes, com relógios ajustados de forma independente. Uma discrepância de um ou dois segundos, inclusive negativa, é desvio de relógio e não evidência de nada. Uma lacuna de minutos ou horas é real, e quase sempre significa que o servidor receptor colocou a mensagem em fila — greylisting, que deliberadamente adia um remetente de primeira viagem, é de longe a causa mais comum.

Lendo os resultados de autenticação

Quatro cabeçalhos importam, e eles respondem a perguntas diferentes:

  • Received-SPF — o IP que se conectou estava autorizado a enviar pelo domínio do remetente de envelope? O SPF verifica o envelope (MAIL FROM), que não é o cabeçalho From: que o seu destinatário vê. Uma mensagem pode passar no SPF e ainda assim exibir um remetente forjado.
  • DKIM-Signature — uma assinatura criptográfica sobre cabeçalhos selecionados e sobre o corpo, verificável contra uma chave pública no DNS do domínio que assinou. O d= é o domínio que assinou e o s= é o seletor, e juntos eles localizam a chave em <seletor>._domainkey.<domínio>.
  • Authentication-Results — o veredicto do próprio servidor receptor, combinando SPF, DKIM e DMARC. É esta a linha para ler primeiro, porque foi escrita pela única máquina da cadeia em que você tem motivo para confiar.
  • ARC-Authentication-Results — o veredicto registrado por um intermediário antes de ele modificar a mensagem. Listas de discussão reescrevem cabeçalhos e quebram o DKIM por natureza, e o ARC existe para que o resultado original sobreviva a isso.

O DMARC é o que determina o que os destinatários de fato fazem. Ele exige que o SPF ou o DKIM passe e que esteja alinhado — o domínio que passou tem de bater com o domínio do cabeçalho From: visível. O alinhamento é o motivo pelo qual uma mensagem pode mostrar spf=pass e dkim=pass e ainda assim falhar no DMARC: os dois passaram, para o domínio errado.

Exemplos

  • «Nossos e-mails caem no spam». Leia o Authentication-Results de uma mensagem que você mandou para si mesmo em outro provedor. Se o DKIM passa mas o DMARC falha, o problema é alinhamento, não assinatura.
  • Uma mensagem de phishing convincente. Compare o from do salto 1 com o domínio do cabeçalho From: visível. Forjar o nome de exibição é trivial; forjar um primeiro salto que corresponda à infraestrutura real do domínio alegado não é.
  • Uma entrega que leva vinte minutos. Encontre o salto com o atraso. Se for o primeiro servidor de entrada do destinatário, greylisting é a resposta provável e se resolve sozinha na nova tentativa.
  • E-mails que pararam de chegar depois de uma mudança de DNS. Confira o SPF nos resultados. Dois registros SPF em um mesmo domínio, ou um registro que excede o limite de dez consultas, produzem uma falha permanente que parece um mistério.
  • Uma lista de discussão quebrando a sua assinatura. Procure cabeçalhos ARC. A presença deles diz que um intermediário modificou a mensagem e registrou o veredicto anterior.

Observações

As linhas de continuação são desdobradas antes da interpretação. Cabeçalhos longos são quebrados em várias linhas com espaço em branco à esquerda, e um parser que lê linha por linha sem juntá-las vai truncar exatamente os cabeçalhos que mais importam.

Os valores de from e by são lidos apenas do início de uma cláusula. Um cabeçalho Received sem cláusula from muitas vezes contém a string envelope-from dentro de um comentário, e tratar isso como o host que se conectou exibiria um endereço fornecido pelo atacante como origem da mensagem — justamente o fato que você veio aqui verificar.

Tudo aqui descreve o que os cabeçalhos dizem. Cabeçalhos escritos antes da primeira máquina que você controla podem ser fabricados por inteiro, então a cadeia é evidência sobre a sua própria infraestrutura e uma alegação sobre tudo o que vem antes dela.

Para inspecionar uma mensagem salva em vez dos cabeçalhos dela, use o visualizador EML.

FAQ
Os cabeçalhos que eu colo são enviados para algum lugar?
Não. Os cabeçalhos são desdobrados e interpretados dentro da própria página; não existe requisição de rede. Isso importa aqui porque cabeçalhos completos contêm endereços de destinatários, hostnames internos e ids de mensagem.
Por que a lista de saltos está na ordem inversa dos cabeçalhos brutos?
Porque cada relay coloca a própria linha Received no início, então a ordem bruta é do mais novo para o mais antigo. A lista é invertida para que o salto 1 seja o remetente original e o último salto seja a sua caixa de entrada — a direção em que a mensagem realmente viajou.
Posso confiar nos primeiros saltos?
Só a partir do primeiro servidor que você controla, para dentro. Tudo o que vem antes disso foi escrito por máquinas que você não opera e pode ser fabricado por inteiro. Leia a cadeia de baixo para cima e pare de confiar nela na fronteira da sua própria infraestrutura.
Um salto mostra um traço em vez de um host remetente. Isso é problema?
Não. Relays internos muitas vezes registram apenas uma cláusula `by`, sem `from`, o que é normal em entrega local, repasse por LMTP e filtragem com sieve. Um traço significa que o cabeçalho genuinamente não tinha cláusula from, não que a interpretação falhou.
O que significa um atraso longo em um salto?
Normalmente greylisting ou uma fila no servidor receptor. Os atrasos são calculados a partir das datas em cabeçalhos Received consecutivos, e esses relógios pertencem a máquinas diferentes, então um atraso pequeno e negativo, ou zero, é desvio de relógio e não viagem no tempo.