Ir para o conteúdo principal

SPF PermError: o guia completo para entender, diagnosticar e corrigir esse erro

Por CaptainDNS
Publicado em 4 de março de 2026

Diagrama das 6 causas de um SPF PermError com árvore de diagnóstico e indicadores de erro
TL;DR
  • Um SPF PermError é um erro permanente que torna seu registo SPF inválido e provoca a rejeição dos seus e-mails
  • As 6 causas: exceder 10 DNS lookups, registos SPF múltiplos, erros de sintaxe, void lookups > 2, redirect inválido, includes circulares
  • O PermError faz o DMARC falhar em cascata: se o DKIM também falhar, os seus e-mails são rejeitados ou enviados para spam
  • Diagnóstico em 6 etapas: verificar duplicatas, a sintaxe, o contador de lookups, os void lookups, o redirect e os loops
  • Cada causa tem uma correção específica: fusão, reescrita, flattening, remoção de mecanismos inválidos

A sua monitorização DMARC exibe de repente centenas de resultados permerror para o seu domínio. Os seus e-mails legítimos são rejeitados pelo Gmail, Outlook e Yahoo. No entanto, não alterou nada recentemente na configuração SPF.

O SPF PermError é um dos erros mais comuns e mais mal compreendidos da autenticação de e-mail. Diferentemente de uma simples falha SPF (fail ou softfail), o PermError significa que o seu registo é estruturalmente inválido: os servidores de recebimento não conseguem sequer avaliá-lo. E as causas são múltiplas, desde o excesso do limite de 10 lookups até um simples erro de sintaxe.

Este guia detalha as 6 causas possíveis de um SPF PermError, explica como identificar com precisão qual delas afeta o seu domínio e fornece as correções adequadas para cada situação.

O que é um SPF PermError?

Definição conforme a RFC 7208

A RFC 7208, secção 2.6.7 define o resultado permerror como um erro permanente na avaliação SPF. Esse resultado é retornado quando o registo SPF não pode ser corretamente interpretado pelo servidor de recebimento.

Diferentemente dos outros resultados SPF (pass, fail, softfail, neutral), o PermError indica um problema na estrutura do registo, não na autorização do remetente. O registo está quebrado e nenhuma decisão de autorização pode ser tomada.

Diferença entre PermError e TempError

ResultadoTipoCausaAção
PermErrorErro permanenteRegisto SPF inválidoCorreção obrigatória pelo administrador
TempErrorErro temporárioTimeout DNS, servidor indisponívelResolução automática, nova tentativa
failResultado normalIP não autorizadoVerificar o remetente
softfailResultado normalIP não autorizado (modo permissivo)Aceito com marcação

O TempError é transitório: um servidor DNS momentaneamente indisponível pode provocá-lo. O PermError, por sua vez, persiste enquanto o registo não for corrigido. Cada e-mail enviado a partir do seu domínio gera o mesmo erro.

As 6 causas de um SPF PermError

Causa 1: Exceder o limite de 10 DNS lookups

Esta é a causa mais frequente. A RFC 7208 limita a 10 o número de consultas DNS durante a avaliação SPF. Os mecanismos include:, a, mx, redirect e exists contam cada um como um lookup. No 11o lookup, o servidor retorna imediatamente permerror.

# Exemplo: 12 lookups (permerror)
v=spf1 include:_spf.google.com include:sendgrid.net include:servers.mcsv.net include:spf.brevo.com include:spf.protection.outlook.com mx ~all

Com Google Workspace (4 lookups), SendGrid (2), Mailchimp (1), Brevo (2), Microsoft 365 (2) e um MX (1), o total chega a 12. O primeiro guia desta série detalha os métodos para resolver esse problema específico.

Causa 2: Vários registos SPF no mesmo domínio

A RFC 7208 exige que um domínio publique um único registo TXT começando por v=spf1. Se a sua zona DNS contém dois registos SPF, o resultado é sistematicamente permerror.

# INCORRETO: dois registos SPF (permerror)
captaindns.com.  TXT  "v=spf1 include:_spf.google.com ~all"
captaindns.com.  TXT  "v=spf1 include:sendgrid.net ~all"

# CORRETO: um único registo unificado
captaindns.com.  TXT  "v=spf1 include:_spf.google.com include:sendgrid.net ~all"

Esse erro acontece frequentemente quando um novo serviço é adicionado por copiar e colar o registo fornecido pelo fornecedor, sem unificar com o existente.

Causa 3: Erros de sintaxe

Um erro de digitação, um espaço a mais ou um mecanismo mal escrito tornam o registo inválido:

ErroExemploCorreção
Prefixo ausenteinclude:_spf.google.com ~allAdicionar v=spf1 no início
Mecanismo inválidov=spf1 include _spf.google.com ~allSubstituir espaço por :
IP mal formatadov=spf1 ip4:192.168.1 ~allCorrigir para ip4:192.168.1.0/24
Mecanismo ptrv=spf1 ptr:captaindns.com ~allRemover (descontinuado RFC 7208)
Duplo allv=spf1 include:_spf.google.com ~all -allManter apenas um all

Causa 4: Void lookups (limite de 2)

A RFC 7208, secção 11.1, impõe um segundo limite frequentemente ignorado: 2 void lookups no máximo. Um void lookup ocorre quando um mecanismo DNS retorna uma resposta vazia (NXDOMAIN ou nenhum resultado).

# Exemplo: includes apontando para domínios inexistentes
v=spf1 include:servico-antigo.captaindns.com include:servico-eliminado.captaindns.com include:_spf.google.com ~all

Se servico-antigo.captaindns.com e servico-eliminado.captaindns.com retornam NXDOMAIN, atinge 2 void lookups. Um terceiro include inválido acionaria o PermError.

Causa 5: Redirect para um domínio sem SPF

O mecanismo redirect= redireciona a avaliação SPF para outro domínio. Se esse domínio não possui um registo SPF, o resultado é permerror.

# INCORRETO: domínio de destino sem registo SPF
v=spf1 redirect=_spf.captaindns.com
# (se _spf.captaindns.com não possui TXT v=spf1 → permerror)

# CORRETO: domínio de destino com SPF válido
v=spf1 redirect=_spf.captaindns.com
# (com _spf.captaindns.com : "v=spf1 ip4:203.0.113.0/24 ~all")

Causa 6: Includes circulares ou irresolvíveis

Se o seu SPF contém uma cadeia de includes que forma um loop, a avaliação falha:

# Loop circular (permerror)
# captaindns.com       → v=spf1 include:_spf.captaindns.com ~all
# _spf.captaindns.com  → v=spf1 include:captaindns.com ~all

Esse caso é raro, mas ocorre durante reconfigurações DNS mal coordenadas.

Como diagnosticar um SPF PermError?

Árvore de diagnóstico SPF PermError: 6 verificações para identificar a causa exata do erro

Siga estas etapas na ordem para identificar a causa exata:

Etapa 1: Verificar o número de registos SPF

dig +short TXT captaindns.com | grep "v=spf1"

Se o comando retornar mais de uma linha, é a causa 2. Unifique os registos.

Etapa 2: Verificar a sintaxe

Cada mecanismo deve estar corretamente formatado: include:domínio, ip4:endereço/máscara, mx, a. Os erros mais comuns: espaço em vez de :, prefixo v=spf1 ausente, duplo all.

Etapa 3: Contar os DNS lookups

Resolva recursivamente cada include:, a, mx, redirect e exists. O total não deve ultrapassar 10.

Etapa 4: Verificar os void lookups

Teste cada domínio referenciado por include: e redirect=. Se mais de 2 retornam NXDOMAIN ou uma resposta vazia, é a causa 4.

Etapa 5: Testar o redirect

Se o seu SPF utiliza redirect=, verifique se o domínio de destino possui um registo SPF válido.

Etapa 6: Procurar loops

Siga a cadeia de includes manualmente para detetar possíveis ciclos.

Como corrigir cada tipo de PermError?

Registos múltiplos: unificar

Recupere os mecanismos de cada registo SPF e combine-os em um único:

# Antes: 2 registos (permerror)
"v=spf1 include:_spf.google.com ~all"
"v=spf1 include:sendgrid.net ~all"

# Depois: 1 único registo
"v=spf1 include:_spf.google.com include:sendgrid.net ~all"

Crie o seu registo unificado com nosso SPF Generator.

Erros de sintaxe: reescrever

Compare o seu registo com a sintaxe oficial da RFC 7208. Os pontos a verificar:

  • O prefixo v=spf1 é obrigatório e deve estar na primeira posição
  • Cada mecanismo é separado por um único espaço
  • Os mecanismos include: e redirect= são seguidos de um domínio válido
  • Um único mecanismo all na última posição
  • O mecanismo ptr é descontinuado, remova-o

DNS lookups: reduzir para menos de 10

Três abordagens para reduzir o número de lookups:

  1. Eliminar includes desnecessários: remova os serviços que não utiliza mais
  2. Substituir por IPs diretos: para os seus próprios servidores, use ip4: e ip6: no lugar de include:
  3. SPF flattening: resolva automaticamente todos os includes em endereços IP com nosso SPF Flattener

Void lookups: limpar referências inválidas

Remova ou corrija cada include: que aponta para um domínio inexistente. Verifique se todos os domínios referenciados possuem um registo DNS válido.

Redirect inválido: publicar o SPF de destino

Certifique-se de que o domínio utilizado com redirect= possui um registo TXT v=spf1 ... válido.

SPF PermError e DMARC: o efeito dominó

Cascata de erros: um SPF PermError provoca a falha do DMARC se o DKIM também falhar

Um SPF PermError não fica isolado. O DMARC verifica dois mecanismos de autenticação: SPF e DKIM. Quando o SPF retorna permerror, o DMARC considera o alinhamento SPF como falho. Se o DKIM também falhar (chave expirada, cabeçalho modificado, assinatura inválida), os dois pilares do DMARC caem.

A cascata é direta:

  1. SPF PermError: o DMARC não consegue validar o alinhamento SPF
  2. Se o DKIM também falhar: o DMARC falha totalmente
  3. Com p=reject: o e-mail é rejeitado pelo servidor de recebimento
  4. Com p=quarantine: o e-mail é colocado no spam

O problema é particularmente traiçoeiro com uma política DMARC p=none: os e-mails passam, mas os seus relatórios DMARC mostram taxas de falha crescentes. No dia em que mudar para p=reject, todos os e-mails cujo SPF está em PermError serão rejeitados.

Plano de ação recomendado

  1. Diagnostique a causa exata: use as 6 etapas de verificação para identificar o tipo de PermError
  2. Aplique a correção específica: cada causa tem o seu próprio método de correção
  3. Teste antes de publicar: valide o seu novo registo em uma ferramenta de diagnóstico antes de modificar a sua zona DNS
  4. Verifique o impacto no DMARC: após a correção, confirme que os seus relatórios DMARC não mostram mais PermError
  5. Implemente uma monitorização: monitorize o seu registo SPF mensalmente para detetar regressões

FAQ

O que é um SPF PermError?

Um SPF PermError é um erro permanente retornado quando um registo SPF não pode ser corretamente avaliado pelo servidor de recebimento. Diferentemente de um TempError (transitório), o PermError persiste enquanto o registo não for corrigido pelo administrador DNS.

Quais são as causas mais frequentes de um SPF PermError?

As 6 causas principais são: o excesso do limite de 10 DNS lookups, a presença de vários registos SPF no mesmo domínio, erros de sintaxe, o excesso de 2 void lookups, um redirect para um domínio sem SPF e includes circulares.

Um SPF PermError faz o DMARC falhar?

Sim. O DMARC considera um SPF PermError como uma falha no alinhamento SPF. Se o DKIM também falhar, o DMARC falha totalmente. Com uma política p=reject, os e-mails são então rejeitados pelo servidor de recebimento.

Como saber se meu SPF tem um PermError?

Utilize uma ferramenta de diagnóstico SPF que avalia o seu registo em tempo real. Os relatórios DMARC agregados (formato RUA) também indicam os resultados SPF para cada fonte de envio, incluindo os PermError.

Qual é a diferença entre PermError e TempError?

O PermError é um erro permanente causado por um registo SPF inválido (sintaxe, lookups, estrutura). O TempError é um erro temporário causado por um problema DNS transitório (timeout, servidor indisponível). O TempError geralmente resolve-se sozinho, o PermError requer intervenção manual.

O que é um void lookup?

Um void lookup ocorre quando um mecanismo DNS no seu SPF retorna uma resposta vazia (NXDOMAIN ou nenhum resultado). A RFC 7208 limita os void lookups a 2 por avaliação SPF. Acima disso, o resultado é PermError, mesmo que o total de lookups permaneça inferior a 10.

É possível ter um PermError com menos de 10 lookups?

Sim. O PermError pode ser acionado por outras causas além do excesso de 10 lookups: registos SPF múltiplos, erros de sintaxe, void lookups superiores a 2, redirect inválido ou includes circulares. O contador de lookups é apenas uma das 6 verificações necessárias.

Glossário

  • PermError: erro permanente retornado quando um registo SPF é estruturalmente inválido e não pode ser avaliado pelo servidor de recebimento.
  • TempError: erro temporário retornado quando um problema DNS transitório impede a avaliação SPF. Geralmente se resolve automaticamente.
  • Void lookup: consulta DNS que retorna uma resposta vazia (NXDOMAIN ou nenhum resultado). Limitado a 2 por avaliação SPF conforme a RFC 7208.
  • DMARC: protocolo de autenticação de e-mail que verifica o alinhamento SPF e DKIM para decidir o tratamento das mensagens (aceitar, enviar para spam, rejeitar).
  • RFC 7208: especificação oficial do protocolo SPF (Sender Policy Framework) que define as regras de avaliação, os limites de lookups e os resultados possíveis.

Verifique o seu registo SPF agora: utilize nosso SPF Record Check para diagnosticar os erros e corrigir o seu SPF antes que ele afete a sua entregabilidade.


📚 Guias de SPF relacionados

Fontes

Artigos relacionados