A resposta rápida#
Toda vez que um servidor de e-mail conversa com outro, ele responde cada
comando com um código de três dígitos. O primeiro dígito indica a categoria —
2xx sucesso, 4xx falha temporária, 5xx falha permanente — e esse primeiro
dígito já conta quase toda a história quando o assunto é entregabilidade. Um
verificador de e-mail interpreta esses mesmos códigos durante a sua sondagem,
sem nunca enviar uma mensagem, para decidir se uma caixa postal é entregável,
não entregável ou impossível de determinar. Este é o guia prático dos códigos
que você realmente vai encontrar e do veredito que cada um produz.
Como interpretar um código de resposta#
Os códigos SMTP têm uma gramática consistente. O primeiro dígito é a classe do resultado:
2xx— sucesso. O comando funcionou.250("ação solicitada concluída") é o que você quer ver.4xx— falha transitória. Algo deu errado, mas pode dar certo se você tentar de novo mais tarde. Isso é um adiamento, não uma rejeição.5xx— falha permanente. O servidor está recusando, e repetir a tentativa não vai adiantar.
Muitos servidores também enviam um código de status estendido — um segundo
número, separado por pontos, como 5.1.1 — definido pela RFC 3463. O dígito do
meio afunila o motivo: x.1.x é sobre o endereço, x.2.x sobre a caixa
postal, x.7.x sobre segurança ou política. Essa classe x.7.x é como um
verificador consegue distinguir um bloqueio de reputação ("estamos recusando
você") de uma caixa postal simplesmente inexistente, mesmo quando o texto
legível para humanos é vago.
Para a verificação, o mapeamento é revigorantemente simples:
| Resposta ao RCPT TO | Significado | Veredito da Qualisend |
|---|---|---|
250 / 251 | Destinatário aceito | deliverable / accepted_email |
4xx | Adiamento temporário (greylisting, limite de taxa) | repetir, depois unknown / timeout |
452 / 552 | Caixa postal acima da cota | risky / low_deliverability |
classe 550 | Rejeição permanente, usuário inexistente | undeliverable / rejected_email |
| Timeout / sem resposta | O servidor nunca respondeu de forma conclusiva | unknown / unavailable_smtp |
Os códigos que você realmente vai encontrar#
250 — OK#
O destinatário foi aceito. Em uma sondagem de verificação, este é o sinal
positivo mais forte — mas interprete-o em contexto: em um
domínio catch-all o servidor retorna 250
para todo endereço, real ou não, então um 250 ali só tem valor quando uma
sondagem paralela de um endereço sem sentido é rejeitada.
421 — Serviço não disponível#
O servidor está fechando a conexão, muitas vezes porque está sobrecarregado ou
limitando o seu tráfego. Transitório por classe — um verificador o trata como
um adiamento e repete a tentativa, depois reporta unknown se persistir.
450 / 451 — Caixa postal indisponível / erro local, tente de novo#
As respostas clássicas de greylisting. O servidor
está recusando temporariamente um remetente desconhecido e convidando a uma
nova tentativa. Um servidor de e-mail de verdade repete automaticamente; um
verificador repete dentro do seu orçamento de tempo e recorre a unknown se o
adiamento durar mais do que ele consegue esperar. O 451 frequentemente carrega
"greylisted, please try again later" no seu texto.
452 — Armazenamento de sistema insuficiente / destinatários demais#
Muitas vezes significa que a caixa postal está cheia. A caixa postal existe —
por isso a Qualisend trata um sinal de caixa cheia como risky
(low_deliverability) em vez de não entregável: a mensagem pode voltar agora,
mas o endereço não está morto, e caixas postais cheias frequentemente se
recuperam.
550 — Caixa postal indisponível / usuário desconhecido#
A rejeição cavalo de batalha. O endereço não existe, ou o servidor está
recusando a entrega permanentemente. Veredito: undeliverable /
rejected_email. Se o código estendido for 5.1.1, é especificamente "caixa
postal de destino inválida" — um "usuário inexistente" limpo e inequívoco.
551 / 553 — Usuário não local / nome de caixa postal não permitido#
Rejeições permanentes menos comuns — o servidor não faz relay para aquele
destinatário, ou o formato do endereço é inaceitável. Ambas são undeliverable.
554 — Transação falhou#
Uma falha permanente genérica, frequentemente usada para bloqueios por política:
"transaction failed", "message refused" ou uma rejeição antispam. Quando
acompanhada de um código estendido 5.7.x ou de palavras-chave de blocklist,
ela sinaliza que o servidor está recusando o seu remetente, não julgando a
caixa postal — uma distinção que um bom verificador registra separadamente para
que um problema de reputação não seja lido erroneamente como um endereço morto.
O resto da conversa#
A resposta ao RCPT TO carrega o veredito, mas uma sondagem de verificação
interpreta vários outros códigos no caminho até lá, e reconhecê-los ajuda quando
você está encarando um log SMTP bruto ou uma mensagem de bounce:
220— serviço pronto. A saudação que o servidor envia quando você se conecta. Nenhum220significa que você nem passou da porta — muitas vezes um bloqueio no nível da conexão, que um verificador registra comounavailable_smtp.250depois deHELO/EHLOeMAIL FROM. Cada etapa do handshake recebe o seu próprio250. Uma rejeição antes doRCPT TO— noMAIL FROM, por exemplo — geralmente é o servidor recusando o seu remetente, não julgando o destinatário.354— inicie a entrada da mensagem. O servidor convidando você a enviar o corpo da mensagem. Um verificador nunca chega aqui de propósito: ele para noRCPTe desconecta, então a mensagem nunca é transmitida.221— encerrando a conexão. O adeus educado depois doQUIT.501/502/503— erros de sintaxe ou de sequência. Os comandos chegaram malformados ou fora de ordem. Estes são sobre a conversa, não sobre o endereço, e um verificador robusto lida com eles sem lê-los erroneamente como um veredito da caixa postal.
O ponto prático: nem todo não-250 é uma caixa postal morta. Uma rejeição na
etapa errada da conversa geralmente é sobre o seu remetente ou sobre a
conexão, e interpretar qual etapa falhou é como um verificador evita culpar o
destinatário pelo humor do servidor.
Permanente, transitório e o honesto desconhecido#
A decisão de maior consequência que um verificador toma é como ele trata o
4xx. Um 5xx permanente é fácil: o endereço é ruim, suprima-o. Um 250 é
fácil: é entregável (ressalvas de catch-all à parte). Mas um 4xx é o servidor
declinando explicitamente de responder ainda — e a resposta honesta é repetir
a tentativa, depois reportar unknown se o adiamento persistir, nunca chutar.
É também por isso que o mesmo endereço pode retornar vereditos diferentes em
execuções diferentes sem que nenhuma ferramenta esteja mentindo: a caixa postal
é determinística, mas o código que ela produz depende do humor do servidor —
greylisting na primeira tentativa, 250 na repetição. Os códigos são uma
conversa ao vivo, não uma consulta a banco de dados.
Onde a verificação interpreta esses códigos#
No pipeline de verificação, os códigos de
resposta são a matéria-prima da etapa 6, a sondagem SMTP da caixa postal. O
verificador conduz a conversa de entrega — HELO, MAIL FROM, RCPT TO —
interpreta o código do RCPT e desconecta antes do DATA, de modo que o dono
da caixa postal nunca recebe nada. Tudo o que está acima é como esse único
código de RCPT se torna um status sobre o qual você pode agir.
Perguntas frequentes#
Qual é a diferença entre um bounce 4xx e um 5xx?#
4xx é temporário — o servidor está adiando e uma nova tentativa pode dar
certo, então a infraestrutura de envio continua tentando por um tempo (um "soft
bounce"). 5xx é permanente — o servidor está recusando de vez, então a
mensagem é um "hard bounce" e novas tentativas vão falhar da mesma forma. Para a
higiene da lista, os endereços 5xx devem ser suprimidos; os endereços 4xx
devem ter a tentativa repetida ou ser marcados como desconhecidos —
construir um classificador de bounces
transforma exatamente essa regra em código.
Um 550 sempre significa que o endereço é inválido?#
Quase sempre significa "usuário inexistente", mas o 550 também é usado para
rejeições por política — o servidor bloqueando o seu remetente em vez de julgar
a caixa postal. O código de status estendido tira a ambiguidade: 5.1.1 é uma
caixa postal genuinamente inválida, enquanto 5.7.x sinaliza um bloqueio de
segurança ou de reputação. Um verificador que interpreta o código estendido não
vai arquivar erroneamente um problema de reputação como um endereço morto.
O que é um código de status estendido?#
É o segundo número opcional em uma resposta, como 5.1.1 ou 4.7.1, definido
pela RFC 3463. Os três campos são classe (2/4/5, igual ao código básico),
assunto (sobre o que o código trata — endereço, caixa postal, rede, política) e
detalhe. Eles dão uma precisão legível por máquina que a mensagem em texto livre
muitas vezes não tem.
Posso confiar totalmente em um 250?#
Só se o domínio não for catch-all. Um 250 de um servidor normal que rejeita
destinatários inexistentes é um forte sinal positivo; um 250 de um
domínio catch-all não significa nada, porque
esse servidor retorna 250 para qualquer endereço possível. É exatamente por
isso que a verificação sonda um endereço sem sentido em paralelo.