Journal Script pour se désinscrire massivement des listes publicitaires

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
47
17
fév.
2020

Bonjour,

j’ai un compte de messagerie que je n’utilise plus beaucoup, entre autres choses parce qu’il est sévèrement spammé (typiquement 15 pourriels par jour). Je sais qu’il est conseillé de ne pas cliquer sur les liens de désinscription, mais pour ce compte je n’ai plus grand’chose à perdre. J’ai donc décidé d’expérimenter la chose à grande échelle (pas question de le faire à la main, je vais m’épuiser à ce rythme‑là).

Je ne suis bien sûr pas le seul à avoir le problème :
https://linuxfr.org/forums/general-cherche-logiciel/posts/desinscription-automatique-de-listes-de-diffusions-suite-a-un-deces
J’ai également cherché un greffon pour Thunderbird qui fasse ça automatiquement. J’ai bien trouvé un ou deux trucs, mais ils ne sont plus maintenus et ne marchent probablement plus sur le Thunderbird actuel.

En regardant l’en‑tête de ces pourriels, je me suis aperçu qu’ils contenaient quasiment tous un champ de ce type1, du moins pour les publicités en français (obligation légale ?) :
List-Unsubscribe: <mailto:bounce@email.fr?subject=Unsubscribe%03bla@link.fr>, <http://link.fr/p/u/DR_b26HNxgblabla>

Parfois, il n’y a qu’un lien <mailto:> mais la plupart du temps il y a aussi, ou à la place, un lien <http:>.

Les pourriels indésirables sont stockés par Thunderbird dans un fichier Junk dont le chemin est du type :
~/.thunderbird/rfjzi2xb.default/Mail/pop.aliceadsl.fr/Junk.

Ce fichier est au format texte, donc j’ai expérimenté avec grep. Un petit souci est que par nature grep cherche le motif dans les lignes, or le champ List-Unsubscribe: est parfois écrit sur deux lignes, avec par exemple le lien <http:> sur la seconde ligne. Après quelques recherches2, j’ai décidé d’utiliser l’option -A 1 pour afficher la ligne qui suit la ligne détectée, puis d’envoyer ça dans un second grep :
$ grep -A 1 "List-Unsubscribe: <" Junk | grep -o -E "http[^>]+"

Dans la pratique, ça fonctionne très bien. En toute rigueur, c’est critiquable car la ligne suivant le champ List‑Unsubscribe pourrait très bien contenir un autre champ avec également un lien (et pourquoi pas un champ List‑Subscribe !). Peut‑être qu’on pourrait faire mieux avec sed3 ? OK, on pourrait faire ça en Python, mais je voudrais rester en shell.

Le deuxième élément clef du script est qu’il faut ouvrir chaque lien. J’ai pensé à utiliser Firefox en ligne de commande, éventuellement avec l’option --headless pour travailler sans interface graphique, mais je craignais d’une part un problème de lourdeur si j’ouvre mille liens les uns après les autres dans des onglets, d’autre part d’éventuels problèmes de sécurité (page Web avec un script malveillant…). Finalement, je me suis aperçu que wget remplaçait très bien le navigateur sans les défauts évoqués : il se connecte, télécharge simplement la page HTML indiquant que la désinscription a été bien effectuée (ou non), et s’arrête. A priori, curl aurait aussi très bien pu faire l’affaire.

J’ai donc écrit le court script disponible ici : https://github.com/vmagnin/unsubscribe.
Je l’ai appliqué samedi après‑midi au fichier Junk du compte en question qui contenait environ 1 100 pourriels accumulés depuis octobre. Il y a eu quelques échecs soit à cause de l’absence d’un lien <http:>, soit parce que la page Web demande confirmation en cliquant sur un bouton. Mais c’est minoritaire : moins de 10 % des cas, je pense.

L’effet a été massif ! Depuis deux jours, le compte n’a reçu que quatre pourriels, à comparer aux trente reçus sur la même durée une semaine plus tôt. On verra sur une durée plus longue ce qu’il advient.

Que pensez‑vous de tout ça ? Avez‑vous des idées pour améliorer le script ?

  • # Maildir ?

    Posté par  . Évalué à 6.

    C'est grave chouette, mais j'utilise Maildir. Ce serait possible d'adapter le script pour gérer ça aussi ? Je ne suis pas certain d'en avoir les compétences.

    • [^] # Re: Maildir ?

      Posté par  (site web personnel) . Évalué à 7.

      Salut,

      si je comprends bien, Maildir stocke chaque message dans un fichier différent (https://fr.wikipedia.org/wiki/Maildir). Si les fichiers sont au format texte, en remplaçant ligne 25 la portion de code :
      grep -A 1 "List-Unsubscribe: <" "${fichier}"

      par grep -R -A 1 "List-Unsubscribe: <"

      ça devrait le faire ! Si tu ne mets pas de nom de fichier mais que tu ajoutes l'option -R, la commande grep fait une recherche récursive en partant du répertoire courant.

    • [^] # Re: Maildir ?

      Posté par  (site web personnel) . Évalué à 5.

      J'ai commité cette fonctionnalité :

      Lancez le script soit en lui fournissant un fichier :
      $ ./unsubscribe.sh ~/.thunderbird/rfjzi2xb.default/Mail/pop.aliceadsl.fr/Junk

      soit en lui fournissant un répertoire dont il analysera tous les fichiers, sous-répertoires inclus :
      $ ./unsubscribe.sh ~/.monlogicieldemail/Junk/

  • # Signal Spam

    Posté par  (site web personnel) . Évalué à 5.

    Tu nous feras un retour d'expérience? j'ai testé Signal Spam & je leur reporte encore un peu, mais grosse déception : on a beau leur signaler des dizaines de fois, rien ne change, et je troue des retours d'usagers similaires au mien.

    • [^] # Re: Signal Spam

      Posté par  (site web personnel) . Évalué à 3.

      Si c'est comme Bloctel pour le téléphone, ça ne m'étonne pas…

      Je posterai quelques statistiques la semaine prochaine. En tout cas, aujourd'hui je n'ai reçu que trois pourriels : à 00:03, 13:22 et 20:02. C'est un gros progrès. Je me demande juste comment ça va évoluer au fil des semaines. L'accalmie est-elle temporaire ? Ou pas ? J'avais déjà essayé d'agir à la main, mais c'est fastidieux, et on finit par abandonner car il y a trop de listes et d'agences de pub… On a l'impression que ça arrive aussi vite qu'on se désinscrit…

      Quand j'aurai accumulé suffisamment d'indésirables, je relancerai l'arme de destruction massive…

      Et j'ai un autre email qui reçoit une petite dizaine de spams par jour. J'attends encore un peu et je testerai dessus.

      Surtout ne videz pas votre dossier "Indésirables", laissez-le se remplir pour disposer d'un maximum de liens de désinscription…

    • [^] # Re: Signal Spam

      Posté par  . Évalué à 4.

      Il y a 7 ans Benjamin Sonntag donnait son avis sur Signal Spam.
      Ça donne pas envie de perdre son temps avec…

      • [^] # Re: Signal Spam

        Posté par  . Évalué à 3.

        Tu sais si l’initiative de Benjamin Sonntag pour "attaquer" les spammeurs a eu des suites ?
        Si l’outil spamker existe toujours ?

        • [^] # Re: Signal Spam

          Posté par  . Évalué à 1.

          Malheureusement je n'ai aucune info dessus. J'ai bien peur que spamker n'ait jamais vu le jour :(

    • [^] # Re: Signal Spam

      Posté par  (site web personnel, Mastodon) . Évalué à 8.

      J’utilise plutôt Spamcop, et j’ai une partie de mon procmail¹ qui leur transmet automatiquement les spams « certains », et une macro mutt pour transmettre manuellement ceux qui se retrouvent dans le dossier des courriers douteux. L’intérêt de Spamcop, c’est que ça permet de reboucler, en utilisant leur liste pour bloquer en entrée ceux qui y reviendraient.

      ¹: oui, je sais, et il faudra bien un jour que je me décide à migrer sur quelque chose de plus récent…

      • [^] # Re: Signal Spam

        Posté par  (site web personnel) . Évalué à 3.

        J'essaye aussi Spamcop depuis peu et même si je n'ai jamais de retour sur mes signalements je suis passé de 2-3 spam/jour à 0.

      • [^] # Re: Signal Spam

        Posté par  . Évalué à 3.

        ¹: oui, je sais, et il faudra bien un jour que je me décide à migrer sur quelque chose de plus récent…

        À quoi tu pense ? J'allais me monter un combot fetchmail/procmail/mutt, mais je connais pas vraiment d'alternative.

        https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • # Pas mal !

    Posté par  . Évalué à 4.

    Ca à l'air de pas trop mal fonctionner.

    Je vais essayer de l'adapter sur des exports de mails Gmail.

    Merci, chouette script.

    La majeure partie des morts l'était déjà de son vivant et le jour venu, ils n'ont pas senti la différence.

  • # Demande RGPD

    Posté par  (site web personnel) . Évalué à 10.

    Bonjour,

    Suite à un spam reçu récemment, j'ai envoyé un courrier à l'expéditeur demandant :

    • la copie des données qu'ils détiennent sur moi
    • sur quelle base légale ont-ils collecté et utilisent-ils mon adresse mail (qui est une donnée personnelle au sens du RGPD)
    • par quel biais ils ont obtenu mon adresse mail
    • et bien entendu, l'effacement des données me concernant

    Tout cela est prévu par le RGPD.

    Résultat, j'ai reçu un mail dans l'heure avec les données me concernant + un lien vers une page de la cnil précisant que les adresses mail pro peuvent être collectées sur la base de l'opt-out, mais pas de réponse sur le reste, le mail venant d'un acteur tiers que je ne connaissais pas (probablement le "data-broker" qui a revendu mon adresse à la boîte qui me sollicitait). J'ai renvoyé un mail rappelant mes demandes et demandant qui avait collecté cet email et à quel moment cet acteur m'avait mis en mesure de m'opposer à la réutilisation cette info, n'ayant aucun souvenir de ça.

    Résultat, j'ai été rappelé une demi-heure plus tard par une personne m'expliquant que ce qu'ils faisaient était légal et qu'il n'y avait pas de soucis, il me désinscrivait. Il avait l'air inquiet. Du coup, ça vaut le coup de tenter de temps en temps, comme mesure d'intimidation vis-à-vis de ces gens !

    • [^] # Re: Demande RGPD

      Posté par  . Évalué à 10.

      comme mesure d'intimidation vis-à-vis de ces gens !

      Ce n'est pas une mesure d'intimidation, tu demandes à faire respecter tes droits, point.

    • [^] # Re: Demande RGPD

      Posté par  . Évalué à 4.

      Ils devaient êtres inquiets parce-qu'ils ne sont pas conformes. Il y a des informations qu'ils n'ont pas pu/voulu te donner et a priori ils t'on simplement désinscris et pas entièrement effacé tes données…

    • [^] # Re: Demande RGPD

      Posté par  . Évalué à 5.

      superbe démarche ; si tu pouvais mettre un modèle de message sur le Wiki et l'argumentaire, ca pourrait aider.

      • [^] # Re: Demande RGPD

        Posté par  . Évalué à 2.

        J'avais mis la main sur un texte, sur mastodon.
        Je n'ai pas gardé l'origine (pour la licence) parce que je n'ai pensé qu'à mon usage perso (l'usage est libre, prévu par l'auteur). Ça doit dater de septembre 2019.

        Je l'ai utilisé une fois et je suis tombé sur un bon/mauvais spammeur. Un spammeur amateur (qui m'a pris pour un fou).
        Ça a plutôt marché.

        Je peux le mettre (où ?) mais il faudra trouver la source pour la licence.

      • [^] # Re: Demande RGPD - Liens d'informations

        Posté par  . Évalué à 3.

        Un modèle de courrier pour faire valoir ses droits, en Anglais : https://shipyourenemiesgdpr.com/

        Il me semble très complet, et permet de bien comprendre d'un côté : ses droits (en tant que client, employé …) et de l'autre côté (en tant que société, association) : quelles informations rassembler pour se préparer aux questions.

        A propos des campagnes d'emailing :
        "…Vous devez donc être en mesure de fournir les preuves [de consentement] pour tous vos contacts, y compris ceux dont le consentement a été recueilli avant cette date [avant mise en place du Rgpd]"

        Source : https://fr.mailjet.com/blog/news/creer-campagnes-emailing-conformes-rgpd/#un

      • [^] # Re: Demande RGPD

        Posté par  (site web personnel) . Évalué à 9.

        Le courrier que j'ai envoyé :

        Bonjour monsieur, madame

        Si cette adresse mail est professionnelle, c'est aussi une donnée personnelle selon la définition de l'article 4 de la réglementation générale sur protection des données, et à ce titre protégée par cette réglementation.
        Votre message consiste est ainsi un "traitement" (défini dans le même article) et témoigne de l'existence probable de plusieurs "traitements" préalables relatifs à des données personnelles me concernant (au moins nom et adresse e-mail).

        Dès lors, sauriez-vous m'indiquer :

        • les données sur ma personne que vous avez en main
        • les finalités du traitement automatisé de mes données
        • les conditions de licéité de ce traitement (conditions définies à l'article 6 de la réglementation) et les éléments vous permettant de juger qu'elles sont remplies
        • les destinataires ou catégories de destinataires auxquels mes données à caractère personnel ont été ou seront communiquées,
        • quelle source vous a transmis mes données personnelles

        Je vous demande en outre de supprimer toutes les données me concernant de votre base.

        Je vous remercie du soucis que vous accorderez à la protection de mes données et au respect des lois en vigueur.

  • # Se désinscrire

    Posté par  (site web personnel) . Évalué à 8.

    Je sais qu'il est conseillé de ne pas cliquer sur les liens de désinscription [..]

    Conseillé par qui ?

    Je pense que ça dépend pas mal du type de spam. Sur mon adresse boulot je reçois bcp de spam de démarchage pour des salons, newsletter pour décideurs, formations diverses. Pour ces trucs là, mon expérience c'est que les liens de désincription fonctionnent pas mal.

    Si c'est des boutiques de pilule, casino en ligne ou scam divers il vaut sans doute mieux faire le mort. Mais dans ces spams là, il y a rarement un lien pour se déinscrire…

  • # Technique ultime

    Posté par  . Évalué à 6.

    J'adorerais que mon service d'email préféré propose une fonctionnalité me permettant de générer un hard bounce dès qu'un email indésirable arrive. Ça permet de tout de suite être désinscris des listes (au pluriel) marketing à la noix.

    (je le sais car j'ai travaillé dans un business de ce genre… c'était pour l'argent, oui.)

    Mais depuis RGPD, je ne sais pas si les listes sont encore si partagées que ça.

  • # Scripts dans d'autres langages

    Posté par  (site web personnel) . Évalué à 2.

    Vous pouvez trouver sur GitHub des scripts de désinscription dans d'autres langages :
    - https://github.com/search?q=%22list-unsubscribe%22
    - https://github.com/search?q=list+unsubscribe

  • # Bilan au bout de deux semaines

    Posté par  (site web personnel) . Évalué à 1.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.