¿Qué es una Dirección de Rebote?
Una dirección de rebote, también llamada ruta de retorno o remitente de envolvente, es la dirección de correo electrónico que recibe informes de no entrega (NDR) cuando un correo no se puede entregar. Esta dirección es separada de la dirección "De" visible al destinatario y se usa exclusivamente para notificaciones de entrega automatizadas.
Cómo Funcionan las Direcciones de Rebote
La transmisión de correo usa dos conjuntos de direcciones:
From del Encabezado (visible al destinatario):From: John Doe <john@example.com>
From del Envolvente (nivel SMTP, usado para rebotes):
MAIL FROM: <bounces@example.com>
Cuando falla la entrega, el servidor receptor envía el rebote al remitente de envolvente, no a la dirección From del encabezado.
Ejemplo de Conversación SMTP
Cliente: MAIL FROM: <bounces@example.com>
Servidor: 250 OK
Cliente: RCPT TO: <invalid@recipient.com>
Servidor: 550 Usuario no existe aquí
Cliente: QUIT
# Más tarde, servidor envía rebote a bounces@example.com
Tipos de Rebotes de Correo
Rebotes Duros
Fallos de entrega permanentes:
- Usuario no existe: 550 Usuario no existe
- Dominio no existe: 550 Dominio no encontrado
- Rechazado por política: 550 Spam bloqueado
Rebotes Suaves
Fallos temporales:
- Buzón lleno: 452 Almacenamiento de sistema insuficiente
- Servidor temporalmente no disponible: 421 Servicio no disponible
- Mensaje demasiado grande: 552 Tamaño de mensaje excede límite
Rebotes de Bloqueo
Problemas de capacidad de entrega:
- IP en lista negra: 554 Servicio no disponible; IP del remitente bloqueada
- Contenido filtrado como spam: 550 Puntuación de spam demasiado alta
- Limitación de velocidad: 450 Demasiados correos
Configuración de Dirección de Rebote
Establecer Ruta de Retorno en Encabezados de Correo
PHP (función mail):$to = "recipient@example.com";
$subject = "Email de Prueba";
$message = "Cuerpo del correo";
$headers = [
"From: sender@example.com",
"Return-Path: bounces@example.com",
];
mail($to, $subject, $message, implode(PHP_EOL, $headers), "-f bounces@example.com");
PHPMailer:
$mail = new PHPMailer();
$mail->From = "sender@example.com";
$mail->Sender = "bounces@example.com"; // Ruta de retorno
$mail->addAddress("recipient@example.com");
$mail->Subject = "Email de Prueba";
$mail->send();
Postfix (SMTP):
# /etc/postfix/main.cf
sender_canonical_maps = hash:/etc/postfix/sender_canonical
# /etc/postfix/sender_canonical
@example.com bounces@example.com
# Aplica cambios
postmap /etc/postfix/sender_canonical
systemctl reload postfix
Servicios Dedicados de Gestión de Rebotes
La mayoría de proveedores de servicios de correo ofrecen gestión de rebotes:
Amazon SES:{
"Message": {
"Subject": "Prueba",
"From": "sender@example.com",
"ReturnPath": "bounces@example.com"
}
}
SendGrid:
const msg = {
to: 'recipient@example.com',
from: 'sender@example.com',
replyTo: 'reply@example.com',
return_path: 'bounces@example.com',
subject: 'Email de Prueba',
text: 'Cuerpo del correo'
};
Convenciones de Nombres de Dirección de Rebote
Enfoque de Subdominio
bounces@example.com # Rebotes generales
no-reply@example.com # Correos sin respuesta
returns@example.com # Retornos/recibos
Específico de Campaña
Rastrear rebotes por campaña:
bounces-newsletter@example.com
bounces-campaign-123@example.com
bounces-transaction@example.com
Ruta de Envolvente de Retorno Variable (VERP)
Codifica destinatario en dirección de rebote:
Envío a: user@recipient.com
Ruta de retorno: bounces+user=recipient.com@example.com
Cuando rebote llega a bounces+*, analiza para identificar destinatario fallido
Procesamiento de Mensajes de Rebote
Análisis Automatizado de Rebote
Ejemplo en Python:import email
from email import policy
def parse_bounce(raw_email):
msg = email.message_from_string(raw_email, policy=policy.default)
# Extrae tipo de rebote
if "550" in msg.get_payload():
return "hard_bounce"
elif "452" in msg.get_payload():
return "soft_bounce"
# Extrae destinatario fallido
for part in msg.walk():
if part.get_content_type() == "message/delivery-status":
# Analiza estado de entrega
pass
return bounce_info
# Integra con lista de correo para eliminar rebotes duros
Gestión de Rebotes Basada en Webhook
Los proveedores de servicios de correo modernos proporcionan webhooks:
Webhook de SendGrid:POST /bounce-webhook
{
"email": "recipient@example.com",
"event": "bounce",
"reason": "550 5.1.1 Usuario desconocido",
"type": "blocked",
"status": "5.0.0"
}
Acción: Actualiza base de datos para marcar correo como rebotado.
SPF y Direcciones de Rebote
Las comprobaciones SPF verifican el remitente de envolvente (dirección de rebote), no el encabezado From:
Mensaje:
From: newsletter@example.com (encabezado)
Return-Path: bounces@mail-server.com (envolvente)
Comprobación SPF:
Consulta: registro TXT de mail-server.com (no example.com)
Debe incluir IP de envío en SPF de mail-server.com
Configuración de SPF del Dominio de Rebote
bounces.example.com. IN TXT "v=spf1 include:_spf.sendgrid.net ~all"
Asegúrate de que tu subdominio de rebote tenga registros SPF apropiados para tu infraestructura de envío.
Mejores Prácticas de Dirección de Rebote
Usa una Dirección de Rebote Dedicada
Nunca uses tu correo principal para rebotes:
# Malo
Return-Path: info@example.com
# Bueno
Return-Path: bounces@example.com
Monitorea Tasas de Rebote
| Tasa de Rebote | Evaluación | Acción |
|---|---|---|
| < 2% | Saludable | Continúa monitoreando |
| 2-5% | Preocupante | Audita calidad de lista de correo |
| 5-10% | Pobre | Limpieza inmediata de lista necesaria |
| > 10% | Crítico | Capacidad de entrega en riesgo |
Implementa Procesamiento de Rebote
Automatiza eliminación de rebotes duros:
-- Marca correos con rebotes duros
UPDATE mailing_list
SET status = 'bounced', bounce_count = bounce_count + 1
WHERE email IN (SELECT email FROM recent_hard_bounces);
-- Elimina después de 3 rebotes duros
DELETE FROM mailing_list
WHERE bounce_count >= 3;
Separa Rebotes Transaccionales y de Marketing
transactional-bounces@example.com # Confirmaciones de pedido, recibos
marketing-bounces@example.com # Boletines, campañas
Se esperan diferentes tasas de rebote para cada tipo.
Configura Automatización de Procesamiento de Rebote
Ejemplo de Tarea Cron:#!/bin/bash
# Procesa rebotes cada hora
# Obtiene rebotes de IMAP
fetchmail -c /etc/fetchmailrc
# Analiza y actualiza base de datos
/usr/local/bin/process-bounces.py
# Limpia rebotes procesados más antiguos que 30 días
find /var/mail/bounces -mtime +30 -delete
Backscatter y Seguridad de Rebote
Problema de Backscatter
Cuando tu servidor acepta spam y luego lo rebota, estás enviando a direcciones falsificadas:
1. Spammer envía correo con From falsificado
2. Tu servidor lo acepta
3. Tu servidor realiza que es spam/inválido
4. Tu servidor rebota a From falsificado
5. Parte inocente recibe rebote (backscatter)
Solución: Rechaza en tiempo SMTP, no aceptes luego rebotes:
# Postfix: Rechaza usuarios desconocidos en tiempo SMTP
smtpd_recipient_restrictions = reject_unauth_destination
local_recipient_maps = hash:/etc/postfix/local_recipients
Falsificación de Rebote
Los atacantes pueden falsificar mensajes de rebote para:
- Cosechar direcciones válidas
- Entregar spam disfrazado de rebotes
- Hacer phishing de credenciales vía informes de entrega falsos
- Comprueba que rebote proviene de servidor MX
- Verifica rebote es para correo que realmente enviaste
- Analiza encabezados de estado de entrega cuidadosamente
Escenarios Comunes de Rebote
Escenario 1: Todos los Correos Rebotan
Causa: Fallo de SPF, IP en lista negra, o reputación de servidor Comprueba: Registros SPF, reputación de IP de remitente, informes DMARCEscenario 2: Rebotes No Recibidos
Causa: Dirección de rebote mal configurada o no existe Comprueba: Registros MX para dominio de rebote, buzón existeEscenario 3: Alta Tasa de Rebote Suave
Causa: Servidores receptores sobrecargados, limitación de velocidad, mensajes grandes Comprueba: Velocidad de envío, tamaño de mensaje, errores de servidor receptorEscenario 4: Bucles de Rebote
Causa: Dirección de rebote dispara respuesta automática, que dispara otro rebote Comprueba: Deshabilita respuestas automáticas en direcciones de rebotePrueba de Gestión de Rebote
Envía correo de prueba con destinatario inválido:# Prueba rebote a dirección inválida
swaks --to invalid-user@test-domain.com --from bounces@example.com --server mx.test-domain.com
# Comprueba si rebote llega a bounces@example.com
Verifica SPF para dominio de rebote:
dig bounces.example.com TXT
# Debería mostrar registro SPF con remitentes autorizados
La gestión apropiada de dirección de rebote es crítica para mantener reputación de remitente, higiene de lista y capacidad de entrega.