RFC 8058 · Enforcement Gmail & Yahoo · Implementación PowerMTA

El encabezado List-Unsubscribe es vital para la entregabilidad

Cuando el suscriptor no encuentra el enlace de baja, pulsa el botón de spam en su lugar. Las quejas de spam destruyen la reputación de un sender más rápido que casi cualquier otra señal. El header List-Unsubscribe fue la solución educada en 2010. En febrero de 2024 se convirtió en requisito duro.

El botón de baja es un mecanismo de entregabilidad

Cuando un destinatario quiere salir de una lista y el proceso de baja es demasiado complejo — enterrado en el footer, requiere login, pide reseteo de contraseña, lo lleva a un 404 — el suscriptor pulsa el botón de spam en su lugar. Desde la perspectiva del destinatario, "Reportar spam" logra el mismo resultado que "Darse de baja" con un solo tap. Desde la perspectiva del sender, la diferencia es catastrófica.

Una queja de spam se registra como señal de reputación negativa fuerte. Gmail, Yahoo y Microsoft rastrean las tasas de queja como input principal de las decisiones de placement en bandeja de entrada. Crúce 0.3% de tasa de queja en Gmail y su placement cae en cuestión de horas. Manténgalo por encima sostenido y va a pasar semanas reconstruyendo lo que tomó meses ganar. Una baja se registra como nada — el destinatario simplemente sale de la lista.

El header List-Unsubscribe es el mecanismo técnico que permite a los proveedores de buzón ofrecer al destinatario una salida de un solo clic, eliminando la fricción que lo empuja al botón de spam. Es, por amplio margen, el cambio técnico de mayor efecto sobre las tasas de queja — y el cambio que se puede desplegar sin tocar el contenido del email, la audiencia o la frecuencia.

Enforcement de febrero 2024

Gmail y Yahoo anunciaron nuevos requisitos para senders bulk en octubre de 2023 que entraron en vigor el 1 de febrero de 2024. Los senders de más de 5,000 correos al día a cualquiera de los dos proveedores deben implementar baja con un clic del RFC 8058 vía el header List-Unsubscribe-Post, más DMARC con política mínima p=none, más origen del mensaje autenticado (SPF o DKIM alineado). El correo no conforme de senders grandes cada vez se rechaza más directamente, no solo se va a spam.

Cómo funciona el header a nivel de protocolo

List-Unsubscribe es un header SMTP definido en el RFC 2369 (publicado en 1998). Lleva una o más URIs que el agente de correo del receptor puede llamar para dar de baja al destinatario. El header soporta dos esquemas URI:

  • mailto: — una dirección de correo que, cuando recibe cualquier mensaje, procesa la baja. El cliente de correo envía un mensaje vacío a la dirección; el MTA del sender lo entrega a un script que actualiza la lista de supresión.
  • https:// — una URL HTTPS que, al ser llamada, procesa la baja. Con RFC 8058 (añadido en 2017), la llamada es un POST con body List-Unsubscribe=One-Click — ninguna interacción adicional requerida.

El formato espera URIs envueltas en corchetes angulares, separadas por comas cuando ambas están presentes:

# Formato correcto con mailto y HTTPS, más baja con un clic del RFC 8058
List-Unsubscribe: <mailto:unsub-7f2a91@list.example.com>, <https://example.com/u/7f2a91>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

# Solo mailto (formato más antiguo, todavía válido para algunos receivers)
List-Unsubscribe: <mailto:unsub-7f2a91@list.example.com>

# Solo HTTPS (aceptable, pero mailto da mejor cobertura cross-provider)
List-Unsubscribe: <https://example.com/u/7f2a91>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

Qué hace cada proveedor de buzón importante con el header

Proveedor Comportamiento Requerido del sender
Gmail Renderiza un enlace "Cancelar suscripción" junto al nombre del sender en la previsualización de la bandeja. Llama al endpoint HTTPS vía POST cuando se hace clic (RFC 8058). Cuando el usuario reporta como spam, también dispara un mail vacío a la dirección mailto: como señal blanda de baja. Tanto mailto: como https:// + List-Unsubscribe-Post para senders > 5,000/día.
Yahoo Surface el enlace de baja de manera prominente. Mismo enforcement RFC 8058 que Gmail desde febrero de 2024. Tanto mailto: como https:// + List-Unsubscribe-Post para senders > 5,000/día.
Outlook / Hotmail Lee primariamente la variante mailto:. Si está ausente cuando el usuario hace clic en "Unsubscribe" de Outlook, el correo nuevo del sender suele rutearse a Junk sin que se exponga una queja JMRP explícita. Microsoft ha ido apretando el enforcement durante 2025. mailto: requerido. https:// + List-Unsubscribe-Post fuertemente recomendado.
Apple Mail / iCloud Renderiza la opción de baja dentro del header del mensaje en iOS Mail y macOS Mail. Usa el endpoint HTTPS cuando está presente. Tanto mailto: como https://. List-Unsubscribe-Post recomendado.
ISPs europeos (GMX, web.de, T-Online, Libero, Orange) Leen la variante mailto:. Surfacing UI menos consistente, pero el header se consume. mailto: requerido.
ISPs en LATAM (Terra, UOL, Movistar) La mayoría de cuentas se mueve a Gmail/Outlook. Lo que queda lee mailto: con surfacing UI mínimo pero el header se procesa internamente. mailto: requerido.
Chinos / Coreanos (qq.com, naver.com) Leen la variante mailto:. El comportamiento varía más que en proveedores occidentales. mailto: requerido.

La conclusión: incluya siempre los dos — un mailto: y una https:// URL. El mailto: cubre la cola larga de proveedores que no han implementado RFC 8058. El https:// + List-Unsubscribe-Post cubre el requisito de enforcement de Gmail y Yahoo. La combinación es lo que despliegan los senders en producción.

Checklist de implementación

  • Genere un token único por destinatario. No use el correo del destinatario como token directamente — eso expone direcciones en headers y crea un problema de privacidad. Use un hash o un identificador respaldado por base de datos.
  • Inyecte ambas URIs en el header al construir el mensaje. Formato: List-Unsubscribe: <mailto:...>, <https://...>
  • Añada el header List-Unsubscribe-Post. Exactamente: List-Unsubscribe-Post: List-Unsubscribe=One-Click
  • El endpoint HTTPS acepta POST. Devuelve 200 OK tras procesar. Sin redirect, sin login, sin página de confirmación. El body contiene List-Unsubscribe=One-Click.
  • La dirección mailto: enrutada a un procesador. El MTA entrante recibe correo en la dirección de baja, parsea la parte local para extraer el token, busca al destinatario, lo marca como dado de baja y suprime envíos futuros.
  • La supresión hace efecto en cuestión de minutos. Si el job de supresión se ejecuta en batch nocturno, va a seguir enviando hasta 24 horas a gente que ya se dio de baja, y la tasa de quejas se va a disparar. La supresión real-time o casi-real-time es el estándar.
  • Parte local de mailto: ≤ 64 octetos. Restricción del RFC 5321. Tokens largos pueden ser rechazados por MTAs estrictos.
  • URL HTTPS idealmente < 1,024 caracteres. Sin límite formal pero algunos MTAs intermedios pueden truncar.
  • Enlace de baja visible en el cuerpo del email todavía requerido. El header sirve a los proveedores; el enlace en el cuerpo sirve a los destinatarios que usan webmail sin integración de surface. Tanto la CAN-SPAM como el GDPR esperan un mecanismo de baja claro en el contenido.

Implementación específica en PowerMTA

PowerMTA por sí mismo no genera headers List-Unsubscribe. El header tiene que estar presente en el mensaje en el momento de la submission SMTP. Eso significa que la aplicación de email (MailWizz, Acelle, código custom, plataforma de marketing automation) debe inyectarlo.

Para el procesamiento entrante de bajas mailto:, la pipe queue de PowerMTA es el hook correcto. Configure un transport de dominio que pipee el correo destinado a la dirección de baja a un script:

# /etc/pmta/config snippet para pipe queue de unsubscribe
<domain unsub.example.com>
  smtp-source-ip 0.0.0.0
  queue-to /usr/local/bin/unsubmail-handler.sh
</domain>

CSE construyó y opera un programa webhook llamado unsubmail que maneja esto punta a punta. Recibe mensajes desde la pipe queue de PowerMTA, parsea la parte local de la dirección mailto: para extraer el token del destinatario, llama al webhook del cliente con un payload limpio de baja, y le confirma el mensaje a PowerMTA. Para nuestros clientes de PMTA gestionado, esto es parte de la configuración estándar. Los clientes auto-gestionados pueden implementar lógica equivalente en cualquier lenguaje de scripting; el surface del protocolo es pequeño.

Para la implementación del endpoint HTTPS, el patrón es aún más simple: un endpoint POST público en su aplicación que acepte el body, valide el token y escriba la baja en su almacén de datos. El endpoint debería devolver 200 dentro de un par de segundos; los proveedores de buzón reintentarán ante timeout, pero lo registran como experiencia degradada.

Cómo se ven el "antes y después" en la práctica

Los senders que añaden un header List-Unsubscribe correctamente formado a un programa previamente no conforme suelen ver bajadas de la tasa de queja del 40–70% en dos semanas. El número exacto depende de la calidad de la lista y del contenido; la mejora direccional es consistente porque está quitando fricción a la gente que iba a salirse de todos modos.

Un patrón concreto de uno de nuestros clientes: una lista B2C de marketing de unos 4 millones de direcciones tenía 0.42% de tasa de quejas en Gmail (por encima del umbral 0.3%, con la consiguiente degradación de placement). Añadieron RFC 8058 con un clic a finales de 2024. En tres semanas la tasa de quejas era 0.14%. El placement de Gmail recuperó baseline en cinco semanas. Sin cambios en contenido, frecuencia o audiencia — solo el header.

El caso opuesto es más dramático. Un sender con List-Unsubscribe configurado pero con el endpoint HTTPS roto (devolviendo 500) fue penalizado más fuerte de lo que habría sido sin el header: Gmail y Yahoo reintentan, y los fallos repetidos se acumulan como señal de calidad contra el sender. El header tiene que funcionar de verdad.

Errores comunes de implementación

  • Endpoint HTTPS devuelve redirect 302 a una página de confirmación. Rompe el one-click. RFC 8058 espera que el POST complete la baja en un solo round-trip.
  • El endpoint requiere autenticación. El proveedor que hace POST no está autenticado como el destinatario. El token en la URL es la autenticación.
  • Pedir confirmación. Las páginas de "¿Está seguro de que quiere darse de baja?" están explícitamente prohibidas por RFC 8058. La acción debe procesarse sin más input del usuario.
  • Tokens distintos para mailto: y https://. El mismo destinatario debe ser direccionable por las dos vías. Elija un token canónico por destinatario.
  • Header List-Unsubscribe-Post ausente. Sin él, Gmail no va a tratar su URL https:// como endpoint RFC 8058. El header debe ser exactamente List-Unsubscribe-Post: List-Unsubscribe=One-Click — sensible a mayúsculas en el valor.
  • Lista de supresión actualizada en batch diario en lugar de real-time. El usuario se da de baja el lunes por la mañana, recibe otra campaña el martes, pulsa spam. Procese las bajas en cuestión de minutos.
  • Endpoint HTTPS bloqueado por WAF. Algunos web application firewalls bloquean peticiones sin headers de navegador estándar. El POST de baja no va a parecer una petición de browser. Whiteliste el endpoint.

Más allá del header: higiene de tasa de queja

List-Unsubscribe reduce la fricción al usuario que activamente busca una salida. No aborda las causas upstream que lo hicieron querer salirse. Si las tasas de queja siguen elevadas tras implementar el header correctamente, el problema está en el programa, no en el protocolo:

  • Envío a direcciones que no hicieron opt-in explícito.
  • Frecuencia que excede lo que el destinatario aceptó.
  • Asuntos (subject lines) que tergiversan el contenido.
  • Suscriptores inactivos largo tiempo (sin aperturas en 12+ meses) re-engagados a volumen completo.
  • Contenido que no concuerda con la marca a la que el destinatario se suscribió.

Para una vista completa de cómo conecta el mecanismo de baja con el trabajo de reputación general del sender, vea nuestros planes de PowerMTA gestionado y la guía de auditoría de entregabilidad, más las notas operativas sobre manejo de bounces y quejas.

¿Necesita List-Unsubscribe correctamente implementado?

Nuestros planes PowerMTA gestionado incluyen unsubmail, supresión real-time y configuración del endpoint RFC 8058. Si está chocando con umbrales de tasa de queja, podemos auditar su setup actual.