Guias

Como bloquear e-mails descartáveis no cadastro

Três jeitos de pegar e-mails temporários no formulário de cadastro, de uma lista fixa a uma API, com código, e os erros que bloqueiam usuários reais.

7 min de leitura · Atualizado em 2026-10-31 · Attrelix

O que conta como e-mail descartável

Um endereço descartável (ou temporário) vem de um serviço que entrega caixas de entrada sem cadastro, geralmente por minutos ou horas. Mailinator, Guerrilla Mail, 10 Minute Mail e milhares de domínios menos conhecidos funcionam assim. São úteis para quem quer fugir de newsletters, e igualmente úteis para quem cria muitas contas.

Três categorias vizinhas costumam ser confundidas com eles e pedem tratamento diferente:

  • Relays de privacidade como o privaterelay.appleid.com do Entrar com a Apple, o duck.com do DuckDuckGo ou o Firefox Relay encaminham para uma caixa real e duradoura. Bloqueá-los prejudica clientes preocupados com privacidade. Trate-os no máximo como um sinal de risco pequeno.
  • Provedores gratuitos como Gmail, Outlook.com ou Yahoo não são descartáveis. O padrão de abuso deles é outro: aliases de uma mesma caixa, tratados no nosso guia sobre aliases do Gmail.
  • Domínios que nem recebem e-mail — erros como gmial.com ou domínios inventados. Também vale pegá-los, porque ninguém consegue confirmar uma conta ali.

Opção 1: uma lista fixa no seu código

Listas abertas de domínios descartáveis são mantidas no GitHub e têm dezenas de milhares de entradas. O jeito mais simples é carregar uma num conjunto e checar o domínio no cadastro:

# Python
DISPOSABLE = set(open("disposable_domains.txt").read().split())

def is_disposable(email: str) -> bool:
    domain = email.rsplit("@", 1)[-1].strip().lower().rstrip(".")
    parts = domain.split(".")
    # pega subdomínios também: mail.tempdomain.com -> tempdomain.com
    return any(".".join(parts[i:]) in DISPOSABLE for i in range(len(parts) - 1))

Não custa nada e não adiciona latência. Os problemas:

  • Ela envelhece. Domínios descartáveis novos aparecem o tempo todo, e muitos serviços trocam de domínio justamente para escapar das listas. Uma lista copiada há seis meses perde os mais novos, que são exatamente os que os abusadores usam.
  • As listas discordam. Listas diferentes incluem domínios diferentes, e algumas têm erros. Juntar várias dá mais cobertura, mas mais manutenção.
  • Você precisa de um job de atualização e de um deploy (ou recarga) a cada mudança.

Opção 2: checar o servidor de e-mail (MX)

Uma consulta DNS dos registros MX do domínio diz se ele consegue receber e-mail. Isso pega erros de digitação e domínios inventados que nenhuma lista contém:

# Python, com dnspython
import dns.resolver

def can_receive_mail(domain: str) -> bool:
    try:
        return len(dns.resolver.resolve(domain, "MX", lifetime=2)) > 0
    except dns.resolver.NXDOMAIN:
        return False
    except Exception:
        return True  # problema de DNS não é culpa do usuário: libere

Guarde o resultado em cache por domínio, use um timeout curto e nunca recuse um cadastro porque o seu resolvedor DNS teve um momento ruim. Repare que a checagem de MX não pega serviços descartáveis — eles recebem e-mail perfeitamente, é o trabalho deles.

Opção 3: uma API que faz as duas coisas e se mantém atualizada

Uma API tira a manutenção da lista e as consultas MX do seu código. O Attrelix junta várias listas públicas, atualiza todo dia, registra quando cada domínio foi visto pela primeira vez, checa o servidor de e-mail e normaliza aliases do Gmail na mesma chamada — e também pontua rede e dispositivo, então você recebe uma decisão por cadastro e não só um veredito sobre o e-mail. Dá para testar a consulta de domínio de graça no verificador de e-mail descartável.

curl https://attrelix.com/v1/check \
  -H "Authorization: Bearer $ATTRELIX_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"email":"someone@mailinator.com","ip":"203.0.113.9"}'

A resposta inclui email.disposable, email.relay, email.mx e o endereço normalizado, junto com a decisão geral e os motivos.

Erros que bloqueiam usuários reais

  • Bloquear relays. O relay privado da Apple é usado por muitos usuários de iPhone que entram com a Apple. Bloqueá-lo bloqueia essas pessoas.
  • Bloquear por erro de DNS. Um timeout não prova que o domínio é falso.
  • Listas amplas demais. Algumas listas comunitárias incluem pequenos provedores legítimos ou domínios de empresas. Se um cliente reclamar, libere o domínio em vez de discutir.
  • Mensagem de erro sem saída. “E-mail inválido” confunde uma pessoa real que digitou um endereço real. Diga que caixas temporárias não são aceitas e peça outro endereço.

O que a checagem de descartáveis não pega

Bloquear domínios descartáveis aumenta um pouco o custo do abuso: o abusador passa para o Gmail. Daí em diante, o abuso aparece como muitas contas por trás de uma caixa ou de um dispositivo. É aí que entra detectar contas múltiplas.

Resumo

  • Separe domínios descartáveis, relays de privacidade, provedores gratuitos e domínios mortos.
  • Uma lista fixa é um bom começo, mas envelhece; atualize ou use uma API.
  • Use checagem de MX para domínios mortos e libere em caso de problema de DNS.
  • Espere que os abusadores passem para aliases do Gmail e normalize os endereços.

Mais guias