Ir para o conteudo 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 registro SPF inválido e provoca a rejeição dos seus e-mails
  • As 6 causas: exceder 10 DNS lookups, registros 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, 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

Seu monitoramento DMARC exibe de repente centenas de resultados permerror para o seu domínio. Seus e-mails legítimos são rejeitados pelo Gmail, Outlook e Yahoo. No entanto, você 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 seu registro é 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 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, seção 2.6.7 define o resultado permerror como um erro permanente na avaliação SPF. Esse resultado é retornado quando o registro 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 registro, não na autorização do remetente. O registro está quebrado e nenhuma decisão de autorização pode ser tomada.

Diferença entre PermError e TempError

ResultadoTipoCausaAção
PermErrorErro permanenteRegistro 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 registro 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 registros SPF no mesmo domínio

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

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

# CORRETO: um único registro 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 registro fornecido pelo provedor, 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 registro 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, seçã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:ancien-service.captaindns.com include:service-supprime.captaindns.com include:_spf.google.com ~all

Se ancien-service.captaindns.com e service-supprime.captaindns.com retornam NXDOMAIN, você 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 registro SPF, o resultado é permerror.

# INCORRETO: domínio de destino sem registro 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 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 registros SPF

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

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

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 seu SPF utiliza redirect=, verifique se o domínio de destino possui um registro SPF válido.

Etapa 6: Procurar loops

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

Como corrigir cada tipo de PermError?

Registros múltiplos: unificar

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

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

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

Crie seu registro unificado com nosso SPF Generator.

Erros de sintaxe: reescrever

Compare seu registro 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 você não utiliza mais
  2. Substituir por IPs diretos: para 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 registro DNS válido.

Redirect inválido: publicar o SPF de destino

Certifique-se de que o domínio utilizado com redirect= possui um registro 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 seus relatórios DMARC mostram taxas de falha crescentes. No dia em que você 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 seu próprio método de correção
  3. Teste antes de publicar: valide seu novo registro em uma ferramenta de diagnóstico antes de modificar sua zona DNS
  4. Verifique o impacto no DMARC: após a correção, confirme que seus relatórios DMARC não mostram mais PermError
  5. Implemente um monitoramento: monitore seu registro SPF mensalmente para detectar regressões

FAQ

O que é um SPF PermError?

Um SPF PermError é um erro permanente retornado quando um registro SPF não pode ser corretamente avaliado pelo servidor de recebimento. Diferentemente de um TempError (transitório), o PermError persiste enquanto o registro 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 registros 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 seu registro 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 registro 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 se resolve 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: registros 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 registro 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 seu registro SPF agora: utilize nosso SPF Record Check para diagnosticar os erros e corrigir seu SPF antes que ele afete sua entregabilidade.


📚 Guias de SPF relacionados

Fontes

Artigos relacionados