← RFC Reference

RFC 8058 : Désinscription en un clic pour les e-mails

Requis par Gmail/Yahoo Listes de diffusion et champs d'en-tête Published March 2026
ELI5: RFC 2369 a donné aux e-mails une URL de désinscription, mais cliquer dessus ouvrait une page web qui pouvait demander une confirmation, une connexion, ou même être un piège d'hameçonnage. RFC 8058 ajoute un nouvel en-tête qui indique au client e-mail « vous pouvez vous désinscrire en envoyant une simple requête HTTP POST à cette URL — aucun navigateur nécessaire, aucune page de confirmation, c'est fait. »

Pourquoi cela existe

L'en-tête List-Unsubscribe de la RFC 2369 avait un problème fondamental : les clients de messagerie ne pouvaient pas agir en toute sécurité sur l'URL automatiquement. Une URL HTTPS pourrait mener à une page avec un CAPTCHA, un formulaire de connexion, une étape de confirmation, ou même un site malveillant. Les clients devaient ouvrir un navigateur et laisser l'utilisateur gérer — ajoutant une friction qui décourageait l'utilisation.

La RFC 8058 résout cela en introduisant l'en-tête List-Unsubscribe-Post. Quand il est présent aux côtés d'une URL List-Unsubscribe HTTPS, il signale que le client de messagerie peut envoyer une requête HTTP POST directement pour désabonner l'utilisateur — pas de navigateur, pas de confirmation, un clic.

Depuis février 2024, Gmail et Yahoo exigent la conformité RFC 8058 pour les expéditeurs en masse (ceux qui envoient plus de 5 000 messages par jour à leurs utilisateurs). Ce n'est plus optionnel pour les emails commerciaux.

Comment cela fonctionne

Le mécanisme nécessite deux en-têtes fonctionnant ensemble :

En-têtes requis

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

Quand le client de messagerie voit les deux en-têtes :

  1. Il affiche un bouton « Se désabonner » proéminent dans l'interface utilisateur.
  2. Quand l'utilisateur clique dessus, le client envoie une requête HTTP POST à l'URL HTTPS de List-Unsubscribe.
  3. Le corps du POST est exactement : List-Unsubscribe=One-Click
  4. Le serveur de l'expéditeur traite le POST et désabonne l'utilisateur.

La requête 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 réponse du serveur

Le serveur doit retourner un statut 200 OK pour confirmer que le désabonnement a réussi. Toute réponse 2xx indique le succès. Le corps de la réponse n'est pas affiché à l'utilisateur, il peut donc être vide ou contenir une simple confirmation.

Détails techniques clés

Exigences des en-têtes

Exigence DKIM

Le message doit passer l'authentification DKIM, et la signature DKIM doit couvrir les deux en-têtes List-Unsubscribe et List-Unsubscribe-Post. Cela empêche les attaquants d'injecter ou de modifier les URL de désabonnement en transit. Gmail vérifie explicitement cela.

Implémentation du point de terminaison

; Gestionnaire côté serveur minimal (pseudocode)
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

Exemple d'en-têtes de message complet

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

Erreurs courantes

Impact sur la livrabilité

Related RFCs