← RFC Reference

RFC 8058: Cancelación de suscripción con un clic para correo electrónico

Required by Gmail/Yahoo Mailing Lists & Header Fields Published March 2026
ELI5: RFC 2369 le dio al correo electrónico una URL para darse de baja, pero hacer clic en ella abría una página web que podría solicitar confirmación, un inicio de sesión o incluso ser una trampa de phishing. RFC 8058 añade un nuevo encabezado que le dice al cliente de correo "puedes darte de baja enviando un único POST HTTP a esta URL — sin navegador necesario, sin página de confirmación, simplemente hecho."

Por Qué Existe

El encabezado List-Unsubscribe de RFC 2369 tenía un problema fundamental: los clientes de correo no podían actuar de forma segura en la URL automáticamente. Una URL HTTPS podría llevar a una página con CAPTCHA, un formulario de inicio de sesión, un paso de confirmación, o incluso un sitio malicioso. Los clientes tenían que abrir un navegador y dejar que el usuario lo manejara — añadiendo fricción que desalentaba su uso.

RFC 8058 resuelve esto introduciendo el encabezado List-Unsubscribe-Post. Cuando está presente junto a una URL List-Unsubscribe HTTPS, señala que el cliente de correo puede enviar una solicitud HTTP POST directamente para desuscribir al usuario — sin navegador, sin confirmación, un clic.

Desde febrero de 2024, Gmail y Yahoo requieren cumplimiento con RFC 8058 para remitentes masivos (aquellos que envían más de 5,000 mensajes por día a sus usuarios). Esto ya no es opcional para correo comercial.

Cómo Funciona

El mecanismo requiere dos encabezados trabajando juntos:

Encabezados Requeridos

List-Unsubscribe: <https://example.com/unsub?id=abc123>,
    <mailto:unsub-abc123@example.com>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

Cuando el cliente de correo ve ambos encabezados:

  1. Muestra un botón "Desuscribirse" prominente en la interfaz.
  2. Cuando el usuario lo hace clic, el cliente envía un HTTP POST a la URL HTTPS de List-Unsubscribe.
  3. El cuerpo POST es exactamente: List-Unsubscribe=One-Click
  4. El servidor del remitente procesa el POST y desuscribe al usuario.

La Solicitud HTTP POST

POST /unsub?id=abc123 HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 26

List-Unsubscribe=One-Click

La Respuesta del Servidor

El servidor debe devolver un estado 200 OK para confirmar que la desuscripción fue exitosa. Cualquier respuesta 2xx indica éxito. El cuerpo de la respuesta no se muestra al usuario, por lo que puede estar vacío o contener una confirmación simple.

Detalles Técnicos Clave

Requisitos de Encabezado

Requisito DKIM

El mensaje debe pasar autenticación DKIM, y la firma DKIM debe cubrir ambos encabezados List-Unsubscribe y List-Unsubscribe-Post. Esto previene que atacantes inyecten o modifiquen URLs de desuscripción en tránsito. Gmail verifica esto explícitamente.

Implementación del Endpoint

; Manejador del servidor mínimo (pseudocódigo)
function handleUnsubscribe(request):
    if request.method != "POST":
        return 405 Method Not Allowed

    if request.body != "List-Unsubscribe=One-Click":
        return 400 Bad Request

    subscriberId = request.queryParams["id"]
    suppressRecipient(subscriberId)
    return 200 OK

Ejemplo de Encabezados de Mensaje Completo

From: newsletter@example.com
To: user@gmail.com
Subject: Your Weekly Update
MIME-Version: 1.0
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=sel1;
    h=from:to:subject:list-unsubscribe:list-unsubscribe-post;
    b=...
List-Unsubscribe: <https://example.com/unsub?id=abc123>,
    <mailto:unsub-abc123@example.com>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
Content-Type: text/html; charset=utf-8

Errores Comunes

Impacto en Entrega

Related RFCs