Checagem SMTP com telnet

Um guia prático para testar um servidor de e-mail manualmente. Aprenda o que cada comando SMTP faz, como o servidor responde e como executar uma sessão de verificação completa com telnet ou openssl.

SMTP (Simple Mail Transfer Protocol) é um protocolo de texto puro, baseado em linhas. Isso significa que você pode conversar com um servidor de e-mail diretamente de um terminal e ler exatamente o que ele responde — sem necessidade de software especial. Esta é a maneira mais transparente de verificar se uma caixa de correio existe, se um servidor está acessível e como ele está configurado.

1. Conectando-se a um servidor de e-mail

Primeiro encontre o servidor de e-mail (host MX) do domínio, depois abra uma conexão TCP com sua porta SMTP. A porta clássica é a 25. As portas de submissão 587 e 2525 são usadas com STARTTLS; a porta 465 é TLS implícito (SMTPS).

Conexão simples (porta 25):

telnet mail.example.com 25

Porta STARTTLS (587 ou 25) — o telnet não faz TLS, use o openssl:

openssl s_client -connect mail.example.com:587 -starttls smtp -crlf

Porta TLS implícito (465):

openssl s_client -connect mail.example.com:465 -crlf

Observação: muitos provedores de internet residencial e móvel bloqueiam a porta 25 de saída para combater spam. Se telnet ... 25 apenas travar, geralmente é o seu provedor, e não o servidor de e-mail. Teste a partir de um servidor/VPS onde a porta 25 esteja aberta, ou use as portas de submissão.

2. Comandos SMTP explicados

Você digita comandos (não diferenciam maiúsculas de minúsculas); o servidor responde com um código de 3 dígitos e um texto. Termine cada comando com Enter (CRLF).

ComandoO que faz
HELO domainSaudação legada. Identifica o host de origem pelo nome. O servidor responde 250.
EHLO domainSaudação moderna (HELO Estendido). Igual ao HELO, mas o servidor também lista as extensões suportadas (STARTTLS, AUTH, SIZE, PIPELINING…).
MAIL FROM:<addr>Inicia uma nova mensagem e define o remetente do envelope (o “caminho de retorno”). Resposta 250 se aceito.
RCPT TO:<addr>O comando-chave para a verificação. Pede ao servidor que aceite um destinatário. 250 = a caixa de correio é aceita; 550 = usuário inexistente; 4xx = tente mais tarde (por exemplo, greylisting).
DATAInicia o corpo da mensagem. O servidor responde 354; você envia os cabeçalhos + corpo e finaliza com um único ponto . em uma linha própria. (Em uma verificação você nunca chega a esta etapa.)
RSETReinicia a transação atual (esquece MAIL FROM / RCPT TO) sem encerrar a conexão.
VRFY userPede ao servidor que verifique um nome de usuário/endereço. Projetado exatamente para isso, mas quase sempre desativado hoje em dia (retorna 252 ou 502) porque revela endereços válidos a spammers.
EXPN listPede ao servidor que expanda uma lista de distribuição em seus membros. Assim como o VRFY, desativado em quase todos os lugares pela mesma razão de privacidade.
STARTTLSAtualiza uma conexão simples para TLS criptografado (nas portas 25/587). Oferecido apenas se listado na resposta ao EHLO.
AUTH LOGIN / PLAINAutentica um usuário (necessário para enviar mensagens pelas portas de submissão, não para a verificação).
NOOPNão faz nada; o servidor responde 250. Útil para manter uma conexão ativa ou testar a capacidade de resposta.
HELPPede ao servidor que liste os comandos que ele suporta.
QUITEncerra a sessão educadamente. O servidor responde 221 e fecha a conexão.

3. Códigos de resposta

O primeiro dígito indica a categoria, de modo que você consegue ler qualquer resposta mesmo sem conhecer o código exato:

  • 2xx — sucesso (comando aceito).
  • 3xx — intermediário, o servidor quer mais entrada (por exemplo, 354 após o DATA).
  • 4xx — falha temporária: tente novamente mais tarde. O endereço ainda pode ser válido.
  • 5xx — falha permanente: o comando ou endereço foi rejeitado.
CódigoSignificado
220Serviço pronto (a faixa de saudação).
221Encerrando a conexão (resposta ao QUIT).
250OK — comando aceito (a resposta que você quer após o RCPT TO).
251 / 252Usuário não local mas será encaminhado / não é possível verificar mas tentará entregar.
354Comece a enviar o corpo da mensagem (após o DATA).
421Serviço indisponível, encerrando — frequentemente limitação de taxa.
450 / 451 / 452Problema temporário (caixa de correio ocupada, erro local, pouco armazenamento). O greylisting aparece com frequência aqui.
502Comando não implementado (resposta típica ao VRFY / EXPN).
550Caixa de correio indisponível / usuário inexistente — o endereço não existe.
551 / 552 / 553 / 554Usuário não local / cota excedida / nome de caixa de correio inválido / transação falhou.

4. Um exemplo completo na prática

Verificando se john@example.com existe. As linhas que você digita são marcadas com >; todo o resto é o servidor:

$ telnet mail.example.com 25 220 mail.example.com ESMTP ready > EHLO checkemail.test 250-mail.example.com Hello checkemail.test 250-STARTTLS 250-SIZE 52428800 250 PIPELINING > MAIL FROM:<probe@checkemail.test> 250 2.1.0 Ok > RCPT TO:<john@example.com> 250 2.1.5 Ok ← a caixa de correio EXISTE > RSET 250 2.0.0 Ok > QUIT 221 2.0.0 Bye

Se, em vez disso, o destinatário não existir, você veria algo como:

> RCPT TO:<nosuchuser@example.com> 550 5.1.1 <nosuchuser@example.com>: Recipient address rejected: User unknown

5. Fatores que tornam os resultados incertos

  • Greylisting — o servidor retorna um 4xx temporário na primeira tentativa de propósito, pedindo que você volte mais tarde. Um 4xx não significa que o endereço é inválido.
  • Domínios catch-all — alguns servidores aceitam todos os destinatários com 250 e resolvem isso depois. Nesse caso, o RCPT TO não consegue provar que uma caixa de correio específica existe. Para detectar um catch-all, teste um endereço claramente aleatório: se ele também for aceito, o domínio é catch-all.
  • Defesas antiabuso — os servidores podem atrasar, ocultar o status real ou bloquear sondagens repetidas de um mesmo IP. Teste com educação e não sobrecarregue um servidor.
  • VRFY / EXPN desativados — não confie neles; o RCPT TO é o sinal prático.

Quer isso feito automaticamente, incluindo consulta MX, detecção de catch-all e um veredicto claro? Use nosso Verificador de E-mail na página inicial.