Módulo 4 · 4.3
SPF: quem pode enviar e-mails em nome do seu domínio?
Módulo 4: Registos para e-mail · Tempo de leitura: 10 minutos
Objetivo de aprendizagem: No final desta lição conseguirá ler um registo SPF, adicionar corretamente um serviço e evitar os três erros mais conhecidos de SPF: dois registos, +all e mais de dez pesquisas.
Conceitos-chave: SPF, v=spf1, mecanismo (a, mx, ip4, ip6, include), qualificador (+ - ~ ?), all, um único registo SPF, limite de 10 pesquisas DNS, remetente de envelope (Return-Path)
O problema: qualquer um pode usar o seu nome
O e-mail foi concebido nos anos oitenta para uma internet pequena e amigável. Qualquer servidor de e-mail pode enviar uma mensagem com o remetente info@example.com, mesmo que esse servidor não tenha absolutamente nada a ver com example.com. Os burlões aproveitam-se disso.
O SPF (Sender Policy Framework, RFC 7208) é um primeiro passo para evitar isso. Num registo SPF indica quais os servidores autorizados a enviar e-mail em nome do seu domínio. Um servidor de e-mail recetor verifica, em cada mensagem recebida: esta mensagem vem de um servidor que consta da lista?
Pense nisto como uma lista de convidados à porta. O porteiro (o servidor de e-mail recetor) consulta a lista do seu domínio e verifica se o visitante (o servidor que envia) consta dela.
Como é composto um registo SPF?
Um registo SPF é um registo TXT no seu domínio que começa por v=spf1:
example.com. 3600 IN TXT "v=spf1 mx ip4:192.0.2.25 include:spf.mailer.example ~all"Lê-se da esquerda para a direita. O destinatário percorre os elementos um a um e para no primeiro que corresponda.
| Elemento | Significado |
|---|---|
v=spf1 | Isto é um registo SPF. Tem de estar no início. |
a | O(s) servidor(es) para onde aponta o registo A/AAAA do seu domínio podem enviar e-mail. |
mx | Os servidores indicados nos seus registos MX podem enviar e-mail. |
ip4:192.0.2.25 | Este endereço IPv4 pode enviar e-mail. Também pode ser um intervalo: ip4:192.0.2.0/24. |
ip6:2001:db8::25 | O mesmo para IPv6. |
include:spf.mailer.example | Todos os servidores que constam do registo SPF de spf.mailer.example também são permitidos. É assim que adiciona um serviço externo. |
~all | Todos os outros servidores: suspeitos. Está sempre no fim. |
O final: ~all, -all, ?all ou +all
Antes de cada elemento pode existir um símbolo que indica o que acontece quando há correspondência. No caso de all (que corresponde sempre), esse símbolo faz toda a diferença:
| Final | Nome | Significado |
|---|---|---|
-all | fail | Outros servidores não são permitidos. Os destinatários podem recusar a mensagem. |
~all | softfail | Outros servidores são suspeitos. A mensagem é normalmente aceite, mas mais facilmente classificada como spam. |
?all | neutral | Nenhuma indicação. Praticamente inútil. |
+all | pass | Qualquer servidor do mundo pode enviar e-mail em seu nome. Nunca utilizar. |
Se não houver símbolo, aplica-se +. Assim, mx significa +mx.
Qual escolher? ~all é uma opção segura por defeito. -all é mais rigoroso e indicado se tiver a certeza de que todos os seus remetentes constam do registo. Se utilizar DMARC (lição 4.5), é a política de DMARC que acaba por determinar o que acontece; muitos administradores optam então por ~all.
Erro 1: dois registos SPF
Só pode existir um registo SPF por domínio. Se o destinatário encontrar dois, o resultado é um erro (permerror) e o seu SPF deixa de contar por completo. Isso é pior do que não ter SPF nenhum.
Na prática, isto acontece com frequência. Um serviço de newsletter ou o Microsoft 365 diz "adicione este registo SPF", e de repente surge um segundo registo v=spf1 ao lado do antigo. A solução: adicione o novo serviço ao registo já existente.
Errado:
"v=spf1 mx include:spf.oldhost.example ~all"
"v=spf1 include:spf.protection.outlook.com -all"Correto:
"v=spf1 mx include:spf.oldhost.example include:spf.protection.outlook.com ~all"Atenção: ao juntar os registos, não remova os servidores que ainda utiliza. Se o seu website enviar e-mail através do servidor da sua empresa de alojamento, este tem de permanecer no registo, mesmo que o seu e-mail normal passe a ir para o Microsoft 365. Um pacote de alojamento tem frequentemente já um SPF padrão com um include da empresa de alojamento (na WebOké, por exemplo, include:webawere.nl); mantenha-o enquanto o seu website ou formulários enviarem e-mail através desse servidor.
Erro 2: +all ou um registo demasiado amplo
+all no fim, ou um intervalo enorme como ip4:0.0.0.0/0, significa que todos têm permissão. Nesse caso, o seu SPF deixa de proteger seja o que for, e os filtros de spam encaram isso como um mau sinal.
Erro 3: mais de dez pesquisas
Para verificar um registo SPF, o destinatário por vezes tem de fazer pesquisas DNS adicionais. Cada include, a, mx, exists, ptr e redirect custa uma pesquisa, e um include conta também todas as pesquisas do registo para o qual remete. Segundo a RFC 7208, o total não pode ultrapassar dez. Se isso acontecer, o resultado é permerror e o SPF falha.
ip4 e ip6 não custam nenhuma pesquisa. all também não.
Além disso, no máximo duas pesquisas podem voltar "vazias" (um nome que não existe ou sem resposta). Um include para um serviço que já não utiliza e que removeu o seu registo também pode, por isso, causar problemas.
Se utilizar muitos serviços, faça as contas com uma ferramenta de verificação de SPF (lição 8.3) e remova os serviços que já não utiliza.
O que o SPF não faz
O SPF verifica o remetente de envelope: o endereço técnico de remetente (Return-Path) que os servidores de e-mail usam entre si. Isto nem sempre é o mesmo endereço que o campo "De:" que vê no seu programa de e-mail. Um serviço de newsletter envia frequentemente com o seu próprio Return-Path. Por si só, o SPF não impede todos os remetentes falsificados. Para isso existem o DKIM (lição 4.4) e o DMARC (lição 4.5).
O SPF também falha no reencaminhamento: se reencaminhar o e-mail automaticamente para outro endereço, a mensagem chega ao destinatário final vinda de um servidor que não consta do seu SPF.
Porque é que isto importa
Os grandes fornecedores de e-mail tornaram-se mais rigorosos. Desde fevereiro de 2024, o Gmail e o Yahoo exigem que quem envia e-mail tenha, no mínimo, SPF ou DKIM, e que quem envia muito e-mail (mais de cerca de 5.000 mensagens por dia) tenha SPF, DKIM e DMARC. A Microsoft aplica desde maio de 2025 a mesma exigência para o Outlook.com, Hotmail e Live.com. Mesmo que envie pouco e-mail, um bom registo SPF ajuda a evitar a pasta de spam.
Na prática: como se apresenta num painel
Neste exemplo utilizamos o DirectAdmin. Em Administração de DNS, clica no lápis junto ao registo TXT que começa por v=spf1. O DirectAdmin abre um assistente de SPF: em Incluir domínio introduz o domínio do serviço (sem include:), em Modo escolhe SoftFail (~all) ou Falha (-all). Em baixo vê o registo completo. O meu WebOké tem um assistente de SPF semelhante no separador DNS.
Outros painéis nem sempre têm um assistente assim. Nesse caso, edita o registo TXT como texto simples; o conteúdo é exatamente o mesmo.
Resumo
- O SPF é um registo TXT com
v=spf1que indica quais os servidores autorizados a enviar e-mail em nome do seu domínio. - Exatamente um registo SPF por domínio. Novo serviço? Complete o registo existente.
- Termine com
~allou-all, nunca com+all. - Máximo de dez pesquisas DNS (
include,a,mx,exists,ptr,redirect);ip4/ip6não contam. - O SPF verifica o remetente de envelope; para uma proteção real também precisa de DKIM e DMARC.
Quiz
Exercício
Exercício Z4.3: Pesquisar SPF. Pesquise o registo SPF de google.com (ou do seu próprio domínio). Cole o registo completo e indique com que termina (~all, -all, ?all ou +all). No caso do seu próprio domínio, o exercício também verifica se tem exatamente um registo SPF.
Exercício O4.3: Configurar na sua zona de treino. Na zona de treino utiliza um serviço fictício; no seu domínio real utiliza o include verdadeiro que o seu fornecedor de e-mail indicar (por exemplo, include:_spf.google.com). Na sua zona de treino , crie um registo SPF que permita: os servidores MX da zona (<code>.dnspractice.eumx), o endereço 192.0.2.25 e o serviço de treino _spf.mailsuite-demo.dnspractice.eu. Os restantes servidores são suspeitos ou não permitidos, pelo que o registo termina em ~all ou -all.
Exercício O4.3
Este exercício é feito na sua própria zona de treino: uma zona DNS real nos servidores de nomes da WebOké, só para si. Registe-se com o seu endereço de email. Recebe uma ligação de acesso por email e, de seguida, volta a esta lição. Utilizamos o seu endereço apenas para a finalidade do curso.
Para saber mais
Os passos descritos nestes artigos aplicam-se aos painéis da WebOké; noutros painéis o funcionamento é semelhante.
- Manual DirectAdmin 5.7: Configurar e complementar o SPF
- Como funciona o registo SPF no DNS?
- Adicionar ou alterar um registo SPF no DirectAdmin
- Manual do WebOké 5.5: Assistentes de DNS: MX, SPF, DMARC, CAA e SRV
- RFC 7208 (SPF), em particular o parágrafo 4.6.4 (limite de dez pesquisas e duas pesquisas vazias)
