← RFC Reference

Comprensión de los rebotes de correo electrónico

Email Concepts Encyclopedia Published March 2026
ELI5: Un bounce es como un sello de "devolver al remitente" en una carta física. Un **hard bounce** significa que la dirección no existe — es permanente. Un **soft bounce** significa que el buzón está lleno o el servidor está ocupado — es temporal. La oficina de correos devuelve un formulario (DSN) explicando exactamente qué pasó, con un código como "5.1.1" que significa "ningún buzón así." Tu trabajo es leer estos códigos, dejar de enviar a direcciones muertas, y reintentar los temporales.

Rechazos duros, rechazos blandos, formato DSN, códigos de estado mejorados — y cómo manejarlos programáticamente sin destruir tu reputación de remitente.

Dos formas en que ocurren los rechazos

La entrega de correo electrónico puede fallar en dos puntos distintos, y el mecanismo difiere para cada uno:

Rechazo síncrono (durante la sesión SMTP)

El servidor receptor rechaza el mensaje en tiempo real, durante la conversación SMTP. Obtienes el error inmediatamente como un código de respuesta SMTP:

RCPT TO:<nonexistent@example.com>
550 5.1.1 The email account that you tried to reach does not exist.

Este es el tipo de rechazo más limpio. Tu servidor de envío sabe inmediatamente que la entrega falló y puede actuar en consecuencia.

Rechazo asíncrono (DSN después de la aceptación)

El servidor receptor acepta el mensaje (250 OK en DATA), pero luego descubre que no puede entregarlo — el buzón está lleno, el filtrado de contenido lo rechazó, o un relé interno falló. El servidor genera una Notificación de estado de entrega (DSN) y la envía de vuelta a la dirección del remitente de envío (dirección MAIL FROM).

Esta es la razón por la que la dirección MAIL FROM importa. Es la dirección que recibe notificaciones de rechazo. Para correo electrónico transaccional, esta suele ser una dirección de procesamiento de rechazo dedicada como bounces+tag@yourdomain.com.

Rechazos duros vs. Rechazos blandos

Rechazo duro Rechazo blando
Código SMTP 5xx (permanente) 4xx (temporal)
Significado La entrega nunca tendrá éxito La entrega puede tener éxito más tarde
Ejemplos Usuario desconocido, dominio no existe, dirección rechazada por política Buzón lleno, servidor ocupado, greylisting, limitación de velocidad
Acción Eliminar de la lista inmediatamente Reintentar con retroceso; suprimir después de fallos repetidos

La distinción es crítica. Continuar enviando a direcciones que rechazan duro daña tu reputación de remitente. Los proveedores de buzones rastrean tu tasa de rechazo — si supera aproximadamente el 2%, tu capacidad de entrega sufrirá en todos los ámbitos.

Códigos de estado mejorados

Los servidores SMTP modernos utilizan códigos de estado mejorados (RFC 3463, registro en RFC 5248) que proporcionan mucho más detalle que el código de tres dígitos. El formato es class.subject.detail:

Categorías de asunto

Asunto Categoría Descripción
X.0.X Otro/indefinido Comodín para estado sin categorizar
X.1.X Direccionamiento Problemas con el buzón o la dirección
X.2.X Buzón Estado del buzón (lleno, deshabilitado, etc.)
X.3.X Sistema de correo Problemas del sistema de correo de destino
X.4.X Red/enrutamiento Fallos de red o enrutamiento
X.5.X Protocolo de entrega de correo Problemas del protocolo SMTP
X.6.X Contenido del mensaje Problemas de contenido o medio
X.7.X Seguridad/política Violaciones de seguridad o política

Códigos de estado que verás más

Código Significado Acción
5.1.0 Otro estado de dirección Rechazo duro — eliminar
5.1.1 Dirección de buzón de destino incorrecta Rechazo duro — el buzón no existe. Eliminar inmediatamente.
5.1.2 Dirección del sistema de destino incorrecta Rechazo duro — el dominio en sí no es válido
5.1.3 Sintaxis de dirección de buzón de destino incorrecta Rechazo duro — dirección malformada
4.2.1 / 5.2.1 Buzón deshabilitado Cuenta suspendida o desactivada
4.2.2 / 5.2.2 Buzón lleno Fuera de cuota. Temporal si 4xx, permanente si 5xx.
5.2.3 Mensaje demasiado grande Reducir tamaño del mensaje o archivos adjuntos
4.4.1 Tiempo de conexión agotado Reintentar más tarde
4.4.2 Conexión caída Reintentar más tarde
5.7.1 Entrega no autorizada Rechazo de política — el mensaje o remitente está bloqueado
5.7.26 Fallo de DMARC Reparar registros de autenticación (SPF, DKIM, DMARC)
4.7.1 Greylisting / limitación de velocidad Reintentar después de un retraso

Formato DSN: Cómo se ve un mensaje de rechazo

Cuando un rechazo se genera de forma asíncrona, llega como un mensaje estructurado definido por RFC 3464, envuelto en el tipo MIME multipart/report de RFC 3462. Un DSN tiene tres partes:

Content-Type: multipart/report; report-type=delivery-status;
boundary="boundary42"

--boundary42
Content-Type: text/plain

Your message to bob@example.com could not be delivered.
The recipient's mailbox does not exist.

--boundary42
Content-Type: message/delivery-status

Reporting-MTA: dns; mx1.example.com
Arrival-Date: Tue, 11 Mar 2026 14:00:00 +0000

Final-Recipient: rfc822; bob@example.com
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 User unknown
Last-Attempt-Date: Tue, 11 Mar 2026 14:00:05 +0000

--boundary42
Content-Type: message/rfc822

[Original message headers included here]

--boundary42--

Las tres partes MIME:

  1. text/plain — Explicación legible por humanos
  2. message/delivery-status — Datos estructurados legibles por máquina con el código de estado, destinatario e información de diagnóstico
  3. message/rfc822 — Los encabezados del mensaje original (o mensaje completo), para que puedas identificar qué mensaje fue rechazado

Los campos clave para procesamiento programático:

Manejo de rechazos programáticamente

Usa VERP para identificación confiable

VERP (Variable Envelope Return Path) codifica la dirección del destinatario en el MAIL FROM, de modo que cuando llega un rechazo, puedes identificar exactamente qué destinatario fue rechazado sin analizar el cuerpo del DSN:

MAIL FROM:<bounces+bob=example.com@yourdomain.com>

Cuando bob@example.com falla, el DSN se entrega a bounces+bob=example.com@yourdomain.com. Analizas la parte local para extraer el destinatario original. Esto funciona incluso cuando el DSN está mal formado o no es estándar.

Lógica de procesamiento

Un procesador de rechazo confiable sigue esta lógica:

  1. Analiza el DSN — Extrae la parte message/delivery-status. Lee el campo Status:.
  2. Clasifica el rechazo:
    • El estado comienza con 5. → Rechazo duro. Suprime la dirección.
    • El estado comienza con 4. → Rechazo blando. Incrementa un contador.
  3. Aplica reglas de supresión:
    • 1 rechazo duro → suprime inmediatamente
    • N rechazos blandos dentro de una ventana (p. ej., 3 dentro de 7 días) → suprime como duro
  4. Identifica vía VERP si el análisis del DSN falla (muchos servidores envían rechazos no estándar)
  5. Registra todo — Registra el código de estado, diagnóstico, marca de tiempo e ID del mensaje original para depuración

Ten cuidado con los rechazos duros falsos

Algunos servidores devuelven incorrectamente 5xx para condiciones temporales (como limitación de velocidad). Si ves 5.7.1 con un mensaje sobre "demasiadas conexiones" o "intenta más tarde," trátalo como un rechazo blando a pesar de la clase 5xx. Usa el texto de diagnóstico como una señal secundaria.

Tasa de rechazo y reputación

Los proveedores de buzones monitorean tu tasa de rechazo como una señal de higiene de lista:

Para correo electrónico transaccional (restablecimiento de contraseña, recibos), las tasas de rechazo deben ser bien inferiores al 1%. Tasas altas de rechazo en correo transaccional sugieren que tu aplicación está aceptando direcciones inválidas en el registro. Agrega validación de correo electrónico antes de enviar nunca.

Qué puede salir mal

Ignorar rechazos completamente

El error más común. Si sigues enviando a direcciones que rechazan duro, los proveedores de buzones limitarán la velocidad y eventualmente bloquearán tu IP de envío. Tu capacidad de entrega se degradará para todos los destinatarios, no solo los inválidos.

Formatos de rechazo no estándar

No todos los MTA generan DSN compatibles con RFC. Algunos envían rechazos en texto plano sin parte message/delivery-status. Otros incluyen el código de estado solo en el texto legible por humanos. Tu analizador necesita manejar estos casos de forma elegante — por eso VERP es tan valioso como método de identificación alternativa.

Backscatter

Cuando un servidor acepta un mensaje de un remitente falsificado y luego genera un rechazo, ese rechazo va a la dirección MAIL FROM falsificada. El propietario del dominio inocente recibe mensajes de rechazo para correo que nunca envió. Esto se llama backscatter y es una forma de abuso. Los servidores modernos deberían rechazar durante la sesión SMTP (de forma síncrona) en lugar de aceptar y rebotar más tarde.

Bucles de rechazo

Si tu dirección de procesamiento de rechazo en sí rechaza (debido a una configuración incorrecta), puede crear un bucle. SMTP evita bucles infinitos requiriendo que los mensajes de rechazo (aquellos con MAIL FROM:<>) nunca sean rechazados ellos mismos — se descartan silenciosamente si la entrega falla.

Gestión de lista de supresión

Una vez que suprimes una dirección, necesitas un proceso para rehabilitarla. Las personas arreglan su buzón (limpian cuota, rehabilitan cuenta). Un patrón común: permite que los destinatarios se revaliden recibiendo exitosamente un correo de confirmación después de un período de enfriamiento (30-90 días).

Puntos clave

Lectura adicional

Related RFCs