Email transaccional vs marketing: por qué separar los streams
Por qué separar el email transaccional del de marketing en streams, IPs y subdominios distintos, cómo clasificar cada mensaje y errores habituales al hacerlo.
5 min de lectura
Qué es VERP, cómo codificar el destinatario en el Return-Path, cómo parsear DSN según RFC 3464 y cómo distinguir rebotes de autorespuestas sin errores.
Equipo PidgelyPublicado el 5 min de lecturaVersión en Markdown

VERP (Variable Envelope Return Path) consiste en usar una dirección de Return-Path única por mensaje y destinatario, como b-7f3a9c@bounces.example.com, para que cualquier rebote que vuelva identifique exactamente a quién y qué envío corresponde. Combinado con el parseo de DSN según RFC 3464, permite automatizar la gestión de rebotes de forma fiable: suprimir direcciones inválidas, contar fallos temporales y descartar autorespuestas que no son rebotes.
Cuando un servidor no puede entregar un mensaje que ya aceptó, envía una notificación al Return-Path (la dirección del MAIL FROM del sobre). En teoría esa notificación es un DSN estructurado. En la práctica encontrarás:
multipart/report.ana@example.es → ana.lopez@example.net).Si tu Return-Path es fijo (bounces@example.com), tienes que adivinar a quién se refiere cada rebote leyendo el contenido. Con VERP no necesitas adivinar.
La forma clásica, propuesta por D. J. Bernstein, codifica la dirección del destinatario en el local-part:
MAIL FROM:<bounces+ana=example.es@bounces.example.com>
RCPT TO:<ana@example.es>Hoy es más habitual usar un token opaco en lugar de la dirección en claro:
MAIL FROM:<b-01HZX4K7Q2.f3a9@bounces.example.com>El token apunta a un registro interno: ID del mensaje, destinatario, cuenta, stream. Ventajas del token frente a la dirección en claro:
El servidor MX de bounces.example.com acepta cualquier local-part con el prefijo esperado, extrae el token, lo valida y asocia el rebote al envío original.
bounces.example.com. IN MX 10 mx-bounces.example.com.
bounces.example.com. IN TXT "v=spf1 ip4:203.0.113.0/28 -all"Como el dominio del Return-Path es un subdominio de example.com, SPF queda alineado con DMARC en modo relajado.
Un DSN bien formado es un mensaje multipart/report (RFC 6522) con tres partes:
From: Mail Delivery System <MAILER-DAEMON@mx.example.es>
To: b-01HZX4K7Q2.f3a9@bounces.example.com
Subject: Undelivered Mail Returned to Sender
Content-Type: multipart/report; report-type=delivery-status;
boundary="XYZ"
--XYZ
Content-Type: text/plain; charset=utf-8
No se pudo entregar su mensaje a ana@example.es.
--XYZ
Content-Type: message/delivery-status
Reporting-MTA: dns; mx.example.es
Arrival-Date: Mon, 12 Oct 2026 10:15:02 +0200
Final-Recipient: rfc822; ana@example.es
Original-Recipient: rfc822; ana@example.es
Action: failed
Status: 5.1.1
Remote-MTA: dns; buzones.example.es
Diagnostic-Code: smtp; 550 5.1.1 <ana@example.es>: User unknown
--XYZ
Content-Type: text/rfc822-headers
Message-ID: <01HZX4K7Q2@example.com>
...
--XYZ--Campos clave por destinatario:
Action: failed (definitivo), delayed (sigue en cola), delivered, relayed o expanded. Solo failed cuenta como rebote.Status: enhanced status code (RFC 3463), como 5.1.1 o 4.2.2.Diagnostic-Code: la respuesta SMTP original, si existe.Final-Recipient: puede no coincidir con tu destinatario si hubo reenvío. Por eso VERP es más fiable que este campo.Los DSN se envían con remitente nulo (MAIL FROM:<>), para que un DSN que falle no genere otro DSN en bucle.
Tu buzón de rebotes recibirá también mensajes que no son fallos de entrega:
RFC 3834 recomienda que las respuestas automáticas se envíen al Return-Path, así que llegan a tu infraestructura de rebotes. Cómo distinguirlas:
| Señal | DSN (rebote) | Autorespuesta |
|---|---|---|
Content-Type | multipart/report; report-type=delivery-status | text/plain o multipart/alternative |
| Remitente del sobre | Nulo <> | Normalmente no nulo |
Auto-Submitted | Puede ser auto-replied o ausente | auto-replied (RFC 3834) |
Parte message/delivery-status | Sí | No |
| Headers típicos | — | X-Autoreply, Precedence: auto_reply |
Un orden de clasificación robusto:
message/delivery-status? → Parsear como DSN.report-type=feedback-report)? → Es una queja, no un rebote.Auto-Submitted: auto-replied o headers de autorespuesta? → Autorespuesta: registrar, no suprimir.VERP resuelve los rebotes asíncronos. Pero muchos rechazos ocurren durante la sesión SMTP, y tu MTA los recibe en el momento:
RCPT TO:<ana@example.es>
550 5.1.1 <ana@example.es>: Recipient address rejected: User unknownTu sistema debe tratar ambos caminos con la misma lógica de clasificación, para que un 5.1.1 síncrono y un Status: 5.1.1 en un DSN produzcan la misma supresión.
Si tu MX de rebotes acepta cualquier mensaje, alguien puede enviarte DSN falsos para suprimir direcciones legítimas. Defensas:
Action: delayed, que solo es un aviso.multipart/report con message/delivery-status.Action: failed y enhanced status code.Pidgely usa VERP con tokens firmados en un subdominio de return-path alineado, parsea DSN según RFC 3464, separa las autorespuestas y unifica la clasificación de rebotes síncronos y asíncronos antes de actualizar la lista de supresión.
Variable Envelope Return Path: una técnica que pone en el Return-Path de cada mensaje una dirección única que identifica al destinatario y al envío. Así, cualquier rebote se asocia sin ambigüedad a su origen.
Porque muchos rebotes no siguen el formato DSN, vienen de reenvíos con otra dirección o están en otro idioma. VERP identifica al destinatario aunque el contenido del rebote sea ilegible.
Los DSN tienen Content-Type multipart/report con report-type=delivery-status y se envían con remitente vacío. Las autorespuestas suelen llevar Auto-Submitted: auto-replied según RFC 3834 y no son fallos de entrega.
No, si el dominio del Return-Path tiene su registro SPF y está alineado con el From, por ejemplo usando un subdominio como bounces.example.com.
Equipo Pidgely
Publicado el
Construimos Pidgely, la API de email que te lleva a la bandeja de entrada. Escribimos sobre lo que aprendemos entregando emails, citando los estándares y las pautas de los proveedores detrás de cada afirmación.
Por qué separar el email transaccional del de marketing en streams, IPs y subdominios distintos, cómo clasificar cada mensaje y errores habituales al hacerlo.
5 min de lectura
IP compartida o dedicada para enviar email: reputación, volumen necesario, warm-up, control y riesgos, con criterios claros para elegir la opción adecuada.
5 min de lectura
Comparativa entre operar tu propio MTA y usar una API de email: costos reales, control de la entrega, riesgos de vendor lock-in y cómo mantener la portabilidad.
5 min de lectura