RFC 8058 : Désinscription en un clic pour les e-mails
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 :
- Il affiche un bouton « Se désabonner » proéminent dans l'interface utilisateur.
- Quand l'utilisateur clique dessus, le client envoie une requête HTTP POST à l'URL HTTPS de
List-Unsubscribe. - Le corps du POST est exactement :
List-Unsubscribe=One-Click - 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
- La valeur de l'en-tête
List-Unsubscribe-Postdoit être exactementList-Unsubscribe=One-Click— pas de variations. - L'en-tête
List-Unsubscribedoit inclure au moins une URL HTTPS (pas HTTP). L'URI mailto est optionnel mais recommandé comme secours. - Les deux en-têtes doivent être présents sur le même message.
List-Unsubscribe-PostsansList-Unsubscriben'a pas de sens.
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
-
Utiliser HTTP au lieu de HTTPS. L'URL dans
List-Unsubscribedoit utiliser HTTPS. Les clients de messagerie n'enverront pas de requêtes POST à des points de terminaison HTTP simples. - Exiger une confirmation après le POST. Le point du clic unique est un seul clic. Le POST seul doit compléter le désabonnement. N'envoyez pas un e-mail de confirmation demandant à l'utilisateur de « cliquer pour confirmer » — cela va à l'encontre de l'objectif.
-
Ne pas couvrir les en-têtes dans la signature DKIM. Si votre signature DKIM n'inclut pas
list-unsubscribeetlist-unsubscribe-postdans la baliseh=, Gmail ne fera pas confiance aux en-têtes et n'affichera pas le bouton de clic unique. - Retourner des erreurs ou des redirections. Le point de terminaison doit retourner un code de statut 2xx. Retourner des redirections 301/302, 403 Forbidden, ou 500 erreurs causera l'échec du désabonnement et pourrait déclencher l'utilisateur à signaler le spam.
- Expiration de l'URL. Certains expéditeurs utilisent des URL signées avec des temps d'expiration courts. Si l'URL expire avant que l'utilisateur clique sur « Se désabonner » (ce qui pourrait être des semaines après la réception du message), le désabonnement échoue. Utilisez des jetons durables ou non-expirants.
- Désabonnement basé sur GET. Le point de terminaison doit gérer POST, pas GET. Une URL de désabonnement basée sur GET peut être déclenchée par des scanners de liens de messagerie, des bots d'aperçu, ou des outils de sécurité — désabonnant les utilisateurs qui n'ont jamais rien cliqué.
-
Omettre le secours mailto. Bien que l'URL HTTPS gère le clic unique, un URI
mailto:fournit un secours pour les clients de messagerie qui ne prennent pas en charge la RFC 8058. Incluez les deux.
Impact sur la livrabilité
- Mandat Gmail/Yahoo. Les expéditeurs en masse (5 000+ messages/jour) doivent implémenter la RFC 8058. La non-conformité entraîne un filtrage accru du spam et un rejet potentiel. C'est la seule exigence de livrabilité la plus impactante introduite ces dernières années.
- Plaintes de spam réduites. Le désabonnement en un clic fournit une alternative sans friction à « Signaler le spam ». Les utilisateurs qui peuvent facilement se désabonner n'ont pas besoin de se plaindre, ce qui réduit directement votre taux de plaintes.
- Signal de réputation positive. Une désabonnement en un clic correctement implémenté dit aux fournisseurs de boîtes aux lettres que vous êtes un expéditeur responsable qui respecte les préférences de l'utilisateur. Cela contribue à une réputation d'expéditeur positive.
- Expérience utilisateur. Les destinataires voient un lien « Se désabonner » clair et proéminent dans Gmail, Yahoo Mail et Apple Mail. Cela renforce la confiance — les utilisateurs sont plus susceptibles de s'engager avec les e-mails quand ils savent qu'ils peuvent facilement l'arrêter.
- La vitesse de traitement compte. Gmail peut vérifier que le point de terminaison POST fonctionne réellement en le testant. Si votre point de terminaison est lent ou peu fiable, le bouton de clic unique peut ne pas apparaître. Maintenez les temps de réponse sous 1 seconde.