Porquê inspecionar um registo SPF publicado?
O registo SPF (Sender Policy Framework) publicado no seu DNS define quais servidores podem enviar emails pelo seu domínio. Mas uma vez publicado, pode mudar sem que saiba: fornecedores que modificam os seus includes, limites de lookups atingidos, propagação DNS incompleta.
Três casos de uso principais:
- Após a publicação -> Verifique que o DNS devolve o seu SPF e os includes se resolvem
- Diagnóstico de entregabilidade -> Identifique porque os destinatários veem SPF fail ou permerror
- Auditoria periódica -> Detete derivas (lookups a aumentar, includes obsoletos)
Inspetor SPF vs Validador de sintaxe
| Critério | Validador de sintaxe | Inspetor SPF |
|---|---|---|
| Quando usar | ANTES da publicação | APÓS a publicação |
| Fonte de dados | Texto colado manualmente | DNS em tempo real |
| Resolução de includes | Não (apenas sintaxe) | Sim (recursivo completo) |
| Contagem de lookups | Estimada | Real (com resolução) |
| Deteção de erros DNS | Não | Sim (NXDOMAIN, timeout, CNAME) |
Fluxo recomendado:
- Escreva o seu SPF
- Valide a sintaxe com o Validador SPF
- Publique no seu DNS
- Inspecione com esta ferramenta para confirmar a propagação e a contagem real
O que analisa exatamente o inspetor?
Resolução DNS em tempo real
O inspetor consulta o DNS para recuperar:
- Todos os registos TXT do domínio
- Filtragem de registos que começam por
v=spf1 - Deteção de anomalias (vários SPF, CNAME no caminho)
Expansão recursiva dos includes
Para cada include: encontrado, a ferramenta:
- Resolve o domínio de destino
- Recupera o seu registo SPF
- Conta o lookup no orçamento de 10
- Repete recursivamente até aos mecanismos finais
Exemplo de árvore de resolução:
captaindns.com
├── include:_spf.google.com (1 lookup)
│ ├── include:_netblocks.google.com (2 lookups)
│ ├── include:_netblocks2.google.com (3 lookups)
│ └── include:_netblocks3.google.com (4 lookups)
└── include:servers.mcsv.net (5 lookups)
└── ip4:205.201.128.0/20 (sem lookup)
Diagnósticos devolvidos
| Código | Descrição | Severidade |
|---|---|---|
lookup_no_spf | Nenhum registo SPF encontrado | Erro |
lookup_bad_rcode | Erro DNS (NXDOMAIN, SERVFAIL) | Erro |
lookup_multiple_spf | Vários registos SPF | Erro |
lookup_limit_exceeded | Mais de 10 lookups DNS | Erro |
lookup_cycle | Ciclo de referência detetado | Erro |
void_lookup_limit_exceeded | Mais de 2 respostas vazias | Erro |
permissive_all | Política +all (autoriza todos) | Aviso |
softfail_all | Política ~all sem endurecimento | Aviso |
Casos de uso concretos
Caso 1: Verificação pós-publicação
Situação: Acabou de publicar um novo SPF para captaindns.com.
Ação: Execute a inspeção para verificar:
- ✅ O registo está visível no DNS
- ✅ Todos os includes se resolvem corretamente
- ✅ O total de lookups está abaixo de 10
Caso 2: Diagnóstico de falha SPF
Sintoma: Os destinatários veem SPF fail nos seus emails.
Diagnóstico: O inspetor revela:
- O servidor de envio (IP 203.0.113.50) não está no SPF
- O include do fornecedor mudou sem notificação
Ação: Adicionar o IP ou atualizar o include.
Caso 3: Permerror misterioso
Sintoma: SPF permerror intermitente em alguns destinatários.
Diagnóstico: O inspetor conta 11 lookups:
captaindns.com: 11 lookups (limite: 10)
├── include:_spf.google.com (4 lookups)
├── include:spf.protection.outlook.com (3 lookups)
├── include:amazonses.com (2 lookups)
└── include:sendgrid.net (2 lookups)
Ação: Substituir alguns includes por ip4/ip6 diretos, usar um subdomínio dedicado ou achatar seu SPF com o SPF Flattener.
Caso 4: Auditoria de segurança periódica
Situação: Auditoria trimestral da configuração de email.
Verificação:
- O SPF usa
-all(hard fail) e não~all(soft fail) - Nenhum include para domínios abandonados
- Os intervalos IP correspondem aos servidores ativos
- O contador de lookups tem margem de segurança (≤8 recomendado)
FAQ - Perguntas frequentes
P: Qual é a diferença entre o inspetor SPF e o validador de sintaxe?
R: O validador de sintaxe verifica um registo SPF ANTES da publicação (offline, texto colado). O inspetor analisa um SPF JÁ PUBLICADO consultando o DNS em tempo real e resolvendo recursivamente todos os includes.
P: Quantos lookups DNS são permitidos para SPF?
R: A RFC 7208 limita a avaliação SPF a 10 lookups DNS. Cada include, a, mx, ptr e exists conta. O inspetor mostra o total real após a resolução recursiva.
P: Porque é que o meu SPF mostra "permerror"?
R: Um permerror ocorre quando:
- Mais de 10 lookups DNS
- Ciclo de referência (A inclui B que inclui A)
- Sintaxe inválida
- Mais de 2 respostas DNS vazias
O inspetor identifica a causa exata.
P: Como é que a ferramenta resolve os includes?
R: O inspetor segue cada include: recursivamente: recupera o SPF do domínio de destino, conta o lookup e repete até aos mecanismos finais (ip4, ip6) ou ao limite.
P: Posso testar com diferentes resolvers DNS?
R: Sim. Escolha Google (8.8.8.8), Cloudflare (1.1.1.1) ou um resolver personalizado para verificar a propagação e confirmar que todos os servidores veem a mesma política.
P: O que fazer se o inspetor não encontrar um SPF?
R: Verifique na sua interface DNS que:
- Existe um registo TXT
- Começa por
v=spf1 - Há apenas um SPF (vários = permerror)
- A propagação DNS está completa (pode demorar até 48h)
P: O inspetor também valida a sintaxe?
R: Sim, o inspetor valida a sintaxe de cada SPF encontrado. Mas para testar um rascunho ANTES da publicação, use o Validador de sintaxe SPF.
Ferramentas complementares
| Ferramenta | Utilidade |
|---|---|
| Gerador SPF | Criar um registro SPF com provedores pré-configurados |
| SPF Flattener | Achatar seu SPF para ficar dentro do limite de 10 DNS lookups |
| Validador sintaxe SPF | Testar sintaxe ANTES da publicação |
| Inspetor DKIM | Validar a sua assinatura DKIM |
| Inspetor DMARC | Configurar e testar a sua política DMARC |
| Analisador de cabeçalhos email | Diagnosticar SPF/DKIM/DMARC num email recebido |
Recursos úteis
- RFC 7208 - Sender Policy Framework (especificação oficial SPF)
- Google - Configurar SPF (guia Google Workspace)
- Microsoft - SPF para Microsoft 365 (guia Outlook/M365)