La respuesta rápida#
Cada vez que un servidor de correo habla con otro, responde a cada comando con
un código de tres dígitos. El primer dígito te indica la categoría — 2xx éxito,
4xx fallo temporal, 5xx fallo permanente — y ese primer dígito es
prácticamente toda la historia en lo que a entregabilidad se refiere. Un verificador de email lee estos mismos
códigos durante su sondeo, sin llegar a enviar ningún mensaje, para decidir si un
buzón es entregable, no entregable o indeterminable. Esta es la guía práctica
de los códigos con los que te vas a encontrar de verdad, y del veredicto que produce cada uno.
Cómo leer un código de respuesta#
Los códigos SMTP tienen una gramática coherente. El primer dígito es la clase del resultado:
2xx— éxito. El comando funcionó.250(«acción solicitada completada») es el que quieres ver.4xx— fallo transitorio. Algo salió mal, pero podría funcionar si lo vuelves a intentar más tarde. Esto es un aplazamiento, no un rechazo.5xx— fallo permanente. El servidor rechaza la entrega, y reintentar no servirá de nada.
Muchos servidores también envían un código de estado ampliado — un segundo número con puntos,
como 5.1.1 — definido por el RFC 3463. Su dígito central acota el motivo:
x.1.x es sobre la dirección, x.2.x sobre el buzón, x.7.x sobre
seguridad o política. Esa clase x.7.x es la forma en que un verificador puede distinguir un
bloqueo por reputación («te estamos rechazando a ti») de un simple buzón inexistente, incluso
cuando el texto legible por humanos es ambiguo.
Para la verificación, la correspondencia es refrescantemente clara:
| Respuesta a RCPT TO | Significado | Veredicto de Qualisend |
|---|---|---|
250 / 251 | Destinatario aceptado | deliverable / accepted_email |
4xx | Aplazamiento temporal (greylisting, límite de tasa) | reintento, luego unknown / timeout |
452 / 552 | Buzón por encima de la cuota | risky / low_deliverability |
Clase 550 | Rechazo permanente, usuario inexistente | undeliverable / rejected_email |
| Timeout / sin respuesta | El servidor nunca respondió de forma concluyente | unknown / unavailable_smtp |
Los códigos que verás de verdad#
250 — OK#
El destinatario fue aceptado. En un sondeo de verificación esta es la señal
positiva más fuerte, pero léela en su contexto: en un
dominio catch-all el servidor devuelve 250
para todas las direcciones, existan o no, así que un 250 ahí solo tiene sentido cuando un
sondeo paralelo de una dirección sin sentido es rechazado.
421 — Servicio no disponible#
El servidor está cerrando la conexión, a menudo porque está sobrecargado o
te está limitando. Transitorio por clase: un verificador lo trata como un aplazamiento y
reintenta, y luego informa de unknown si persiste.
450 / 451 — Buzón no disponible / error local, inténtalo de nuevo#
Las respuestas clásicas de greylisting. El servidor está
rechazando temporalmente a un remitente desconocido e invitando a reintentar. Un servidor de correo
real reintenta automáticamente; un verificador reintenta dentro de su presupuesto de tiempo y
recurre a unknown si el aplazamiento se prolonga más de la cuenta. El 451 con frecuencia lleva
«greylisted, please try again later» en su texto.
452 — Almacenamiento del sistema insuficiente / demasiados destinatarios#
A menudo significa que el buzón está lleno. El buzón existe, y por eso Qualisend
trata una señal de buzón lleno como risky (low_deliverability) en lugar de
no entregable: puede que el correo rebote ahora, pero la dirección no está muerta, y los buzones
llenos suelen recuperarse.
550 — Buzón no disponible / usuario desconocido#
El rechazo de andar por casa. La dirección no existe, o el servidor rechaza
la entrega de forma permanente. Veredicto: undeliverable / rejected_email. Si el
código ampliado es 5.1.1, significa específicamente «buzón de destino incorrecto»: un
«no existe ese usuario» limpio e inequívoco.
551 / 553 — Usuario no local / nombre de buzón no permitido#
Rechazos permanentes menos habituales: el servidor no reenviará para ese destinatario,
o la forma de la dirección es inaceptable. Ambos son undeliverable.
554 — Transacción fallida#
Un fallo permanente comodín, usado con frecuencia para bloqueos por política: «transaction
failed», «message refused» o un rechazo antispam. Cuando va acompañado de un
código ampliado 5.7.x o de palabras clave de listas de bloqueo, indica que el servidor rechaza
a tu remitente, no que esté juzgando el buzón, una distinción que un buen verificador registra
por separado para que un problema de reputación no se malinterprete como una dirección muerta.
El resto de la conversación#
La respuesta al RCPT TO es la que lleva el veredicto, pero un sondeo de verificación lee
varios otros códigos por el camino, y reconocerlos ayuda cuando estás
mirando fijamente un registro SMTP en bruto o un mensaje de rebote:
220— servicio listo. El saludo que envía el servidor cuando te conectas. La ausencia de220significa que nunca llegaste a entrar por la puerta, a menudo un bloqueo a nivel de conexión, que un verificador registra comounavailable_smtp.250trasHELO/EHLOyMAIL FROM. Cada paso del handshake recibe su propio250. Un rechazo antes delRCPT TO— en elMAIL FROM, por ejemplo — suele ser el servidor rechazando a tu remitente, no juzgando al destinatario.354— comienza la entrada del mensaje. El servidor invitándote a enviar el cuerpo del mensaje. Un verificador nunca llega hasta aquí a propósito: se detiene en elRCPTy se desconecta, así que el mensaje nunca se transmite.221— cerrando conexión. La despedida cortés después delQUIT.501/502/503— errores de sintaxis o de secuencia. Los comandos llegaron mal formados o en orden incorrecto. Estos tienen que ver con la conversación, no con la dirección, y un verificador robusto los gestiona sin malinterpretarlos como un veredicto sobre el buzón.
La conclusión práctica: no todo lo que no es 250 es un buzón muerto. Un rechazo en el
paso equivocado de la conversación suele tener que ver con tu remitente o la
conexión, y leer qué paso falló es la forma en que un verificador evita culpar al
destinatario por el mal humor del servidor.
Permanente, transitorio y el honesto «desconocido»#
La decisión más trascendental que toma un verificador es cómo trata los
4xx. Un 5xx permanente es fácil: la dirección es mala, suprímela. Un 250 es
fácil: es entregable (dejando aparte las salvedades de catch-all). Pero un 4xx es el servidor
declinando explícitamente responder todavía, y la respuesta honesta es reintentar,
luego informar de unknown si el aplazamiento persiste, nunca adivinar.
Por eso también la misma dirección puede devolver veredictos distintos en ejecuciones
diferentes sin que ninguna herramienta mienta: el buzón es determinista, pero el código que
produce depende del humor del servidor: greylisting en el primer intento,
250 en el reintento. Los códigos son una conversación en vivo, no una consulta a una base de datos.
Dónde lee la verificación estos códigos#
En el pipeline de verificación, los códigos de respuesta
son la materia prima de la etapa 6, el sondeo del buzón por SMTP. El verificador
ejecuta la conversación de entrega — HELO, MAIL FROM, RCPT TO — lee el
código del RCPT y se desconecta antes del DATA, de modo que el dueño del buzón nunca
recibe nada. Todo lo anterior explica cómo ese único código del RCPT se convierte en un
estado sobre el que puedes actuar.
Preguntas frecuentes#
¿Cuál es la diferencia entre un rebote 4xx y uno 5xx?#
El 4xx es temporal: el servidor está aplazando la entrega y un reintento puede funcionar, así que
la infraestructura de envío sigue intentándolo durante un tiempo (un «rebote suave»). El 5xx es
permanente: el servidor rechaza de plano, así que el mensaje es un «rebote
duro» y los intentos posteriores fallarán de la misma manera. Para mantener limpia tu lista, las direcciones 5xx
deberían suprimirse; las direcciones 4xx deberían reintentarse o marcarse como
desconocidas — construir un clasificador de rebotes
convierte precisamente esta regla en código.
¿Un 550 significa siempre que la dirección no es válida?#
Casi siempre significa «no existe ese usuario», pero el 550 también se usa para rechazos por
política: el servidor bloqueando a tu remitente en lugar de juzgar el buzón.
El código de estado ampliado lo desambigua: 5.1.1 es un buzón genuinamente incorrecto,
mientras que 5.7.x indica un bloqueo por seguridad o reputación. Un verificador que lea
el código ampliado no archivará por error un problema de reputación como una dirección muerta.
¿Qué es un código de estado ampliado?#
El segundo número opcional de una respuesta, como 5.1.1 o 4.7.1, definido por el
RFC 3463. Los tres campos son clase (2/4/5, que coincide con el código básico), asunto
(sobre qué trata el código: dirección, buzón, red, política) y detalle. Aportan
una precisión legible por máquina que el mensaje de texto libre a menudo no tiene.
¿Puedo fiarme por completo de un 250?#
Solo si el dominio no es catch-all. Un 250 de un servidor normal que rechaza
destinatarios desconocidos es una señal positiva sólida; un 250 de un
dominio catch-all no significa nada, porque
ese servidor devuelve 250 para cualquier dirección posible. Justo por eso la
verificación sondea una dirección sin sentido en paralelo.