Olá, pessoal!
Hoje quero discutir um tópico que parece simples, mas que esconde uma complexidade enorme: a validação de endereços de e-mail.
Se você trabalha com desenvolvimento, provavelmente já precisou validar um campo de e-mail. E qual é a primeira solução que vem à mente? Uma bela expressão regular (Regex), certo? A gente busca no Stack Overflow, copia, cola e pronto. Mas e se eu te disser que essa abordagem, na maioria das vezes, está errada?
Em 2021, um artigo chamado "Your E-Mail Validation Logic is Wrong" de Jan Schaumann, do blog Netmeister, me deixou surpreso. Ele demonstrou, com base nas RFCs (os documentos que padronizam a internet), uma série de casos extremos e sintaxes válidas de e-mail que 99% das expressões regulares rejeitariam. O artigo é um grande alerta sobre como a nossa intuição sobre o que é um e-mail válido pode estar completamente desalinhada com os padrões oficiais.
Então, qual é a única forma 100% garantida de validar um e-mail? Enviando uma mensagem para ele.
É o que fazemos em fluxos de cadastro: o usuário informa o e-mail e nós enviamos um link de confirmação. Simples e eficaz.
O problema das listas de e-mail existentes
A situação muda quando uma organização possui uma base de dados antiga, com milhares de e-mails coletados ao longo dos anos, sem o devido cuidado na validação. Enviar uma campanha para essa lista "suja" é um convite para altas taxas de bounce (devolução), reclamações de spam e, consequentemente, um dano terrível à reputação do seu domínio.
Mesmo que um endereço seja tecnicamente válido, fatores como caixa de entrada cheia, filtros de spam agressivos ou problemas temporários no servidor do destinatário podem impedir a entrega. E, claro, nem vou entrar no mérito da compra de listas de e-mail. Isso é uma prática péssima e deve ser evitada a todo custo.
Se a validação com Regex não é confiável e enviar um e-mail para cada contato não é uma opção viável, como podemos limpar essa base de contatos? A resposta está em analisar as duas partes que compõem um endereço: a parte local (antes do @
) e o domínio (depois do @
).
Validando o Domínio com DNS
A primeira e mais importante verificação é no domínio. Uma simples consulta DNS nos diz muito sobre a capacidade dele de receber e-mails.
Registro NS (Name Server): A primeira coisa a fazer é verificar se o domínio realmente existe e está registrado em algum lugar. Uma consulta pelo registro NS nos dá essa resposta. Se não houver registro NS, o domínio é inválido.
Registro MX (Mail Exchange): Este é o registro crucial. Ele lista quais servidores de e-mail são responsáveis por receber mensagens para aquele domínio. Se um domínio não possui registros MX, seus e-mails não chegarão a lugar nenhum. Para ser ainda mais assertivo, você pode fazer uma consulta DNS dos registros A/AAAA de cada servidor listado no MX para garantir que eles também existam.
No meu artigo anterior, "DoH: como funciona a consulta DNS no Clear Address?", eu mostro como é possível fazer essas consultas usando uma API pública, o que facilita a automação desse processo.
Cuidado com os domínios temporários ou descartáveis
Além de verificar a existência dos registros DNS, precisamos ter cuidado com um tipo especial de serviço: os E-mails Descartáveis. Serviços como Temp Mail ou 10 Minute Mail oferecem endereços temporários. Usuários os utilizam para se cadastrar em serviços sem revelar seu e-mail principal, evitando spam. Para as empresas, enviar campanhas para esses endereços é jogar dinheiro fora. O e-mail deixará de existir em minutos ou horas, poluindo sua lista, piorando seu engajamento e prejudicando sua reputação. Existem dezenas de repositórios no GitHub com listas atualizadas desses domínios, que precisam ser constantemente monitoradas, pois novos serviços surgem a todo momento.
Existem dezenas de repositórios no Github com listas de domínios atualizadas constantemente, contendo os domínios desses serviços. As listas precisam mesmo ser atualizadas com frequência, pois esses serviços mudam de nome, ou de domínio, com frequência. Comparar o domínio com essas listas pode ajudar a eliminar muitos endereços que, apesar de serem corretos, não servem para nada.
Quando mais de uma pessoa cuida de uma conta
Outra coisa a cuidar são os Endereços Funcionais (Role-Based). Endereços como vendas@
, contato@
ou suporte@
são genéricos e pertencem a uma função, não a um indivíduo. O envio de marketing para esses e-mails é problemático. A pessoa que se cadastrou pode não fazer mais parte da equipe, e o novo responsável, ao receber uma comunicação que nunca solicitou, tem uma grande chance de marcar sua mensagem como spam.
Conclusão
A abordagem que apresentei aqui não garante que a caixa de e-mail existe, que a parte local (usuario
) está correta ou que a conta pode receber novas mensagens.
No entanto, ela aumenta drasticamente a probabilidade de um endereço estar bem estruturado e apontando para um domínio legítimo e capaz de receber e-mails. Essa validação é extremamente útil para a higiene de listas, pois permite:
- Reduzir taxas de devolução causadas por erros de digitação ou domínios inexistentes.
- Identificar e remover endereços descartáveis que apenas geram custo.
- Segmentar ou remover endereços funcionais que podem gerar reclamações de spam.
Shameless plug
Para facilitar esse processo, desenvolvi uma ferramenta gratuita chamada Clear Address. Falei dela em um Pitch essa semana. Com uma única chamada de API, você pode realizar todas essas verificações.
Por exemplo, uma simples requisição GET
para a API https://clear-address.rda.run/v1/contato@temp-mail.org
irá te informar que o domínio pertence a um serviço descartável e que a parte local é um endereço funcional.
Fica o convite para testarem a ferramenta.
E você? Como valida seus e-mails?
Como você lida com a validação e limpeza de e-mails nas suas empresa?
Top comments (0)