SPIP-Listes-Cleaner

SPIP-Listes-Cleaner est un plugin qui permet de nettoyer la base de donnée de SPIP-Listes en supprimant les emails non valide des mailing listes.

Il se connecte sur un compte pop ou imap et récupère les « failure delivery email », identifie l’email du destinataire et le supprime de la table spip_auteur_liste ainsi que de la table spip_auteur si il est en statut ’6forum’.

NÉCESSITE :
-  un hébergement avec php-imap d’activé.
-  le plugin CFG
-  le plugin SPIP-Listes
-  SPIP supérieur à 2.0.0

Le plugin peut être utilisé soit par SPIP-CRON (toutes les heures) soit par l’appel de la fonction action : spiplistescleaner (?action=spiplistescleaner).


SPIP-Listes-Cleaner is a plugin that allows you to clean the database SPIP-Listes removing invalid email mailing lists.

It connects to a POP or IMAP account and gets the « mail delivery failure », identifies the recipient’s email and removes it from spip_auteur_liste table and from spip_auteur table if it is status ’forum6’.

REQUIRES :
-  Hosting with the php-imap enabled.
-  CFG plugin
-  SPIP-Listes plugin
-  SPIP 2.0.0 or above

The plugin can be used by SPIP-CRON (called every hours) or by calling the function action : spiplistescleaner (?action=spiplistescleaner).


-  TRAC : https://zone.spip.org/trac/spip-zone/browser/_plugins_/spip-listes-cleaner
-  SVN : svn ://zone.spip.org/spip-zone/_plugins_/spip-listes-cleaner


SPIP-Listes-Cleaner v1.2
SPIP-Listes-Cleaner v1.1
SPIP-Listes-Cleaner v1.0

Discussion

14 discussions

  • 1

    Bonjour,
    Ce plugin me paraît partir d’une excellente idée, mais comme il a déjà fait la remarque, un peu dangereux.
    Vu les divers problèmes évoqués dans ce forum, quelqu’un l’a-t-il récemment expérimenté ?
    Les versions ont-elles évolué suite aux remarques ?
    N’y a-t-il pas moyen de le changer un peu, en ne supprimant pas les mails dans les bases mais, par exemple :
    -  en modifiant l’auteur en « à la poubelle », qui ne le supprime pas de la base mais lui met simplement le statut poubelle,
    -  en envoyant un mail à l’expéditeur (que l’on renseigne dans SPIP listes), pour lui indiquer qu’il y a un problème avec tel ou tel mail. Au moins qu’il y a un problème, et le nec plus ultra sera de renvoyer le quel.
    Le dépannage du patron transformé est bien, mais quand on n’utilise pas de patron mais qu’on met un texte tel que ?
    Merci pour votre aide et le travail que vous donnez à la communauté :)

    Répondre à ce message

  • 3

    Bonjour,

    J’ai testé ce plugin sur mon site création entreprise qio est toujours en version 1.8.2 car mon hébergeur OVH refuse l’envoi de mes newsletter car mes adresses abonnés sont erronées à plus de 5%. Or après balayage par ce plugin, le résultat reste le même. Quelqu’un aurait une idée de l’origine du problème ?

    Merci d’avance.

    Répondre à ce message

  • Gil FOURGEAUD

    Bonjour,

    J’ai le message suivant :

    "Certificate failure for mail.monnomdedomaine.fr : self signed certificate : /C=US/ST=Virginia/L=Herndon/O=Parallels/OU=Plesk/CN=plesk/emailAddress=info@plesk.com

    Et je n’utilise pas ssl ..

    Merci de m’aider si vous le pouvez (et si vous le voulez)

    Répondre à ce message

  • 1

    Voilà un plugin qui est très prometteur, et qui l’énorme avantage d’exister.
    Effectivement, s’il a trop de faux positifs c’est une catastrophe (qui a envie de perdre des clients qui existent réellement ?), mais d’expérience c’est inévitable, dès que l’on veut automatiser et vue la variabilité des réponses des serveurs.

    Pour la question que tout le monde se pose : Quels sont les mails qui provoquent la suppression d’un mail ?
    J’ai jeté un coup d’oeil sur le code (qui est très propre au passage, merci pour la lisibilité), et il semble que tout ce passe là :

    if (stristr($header, "report-type=delivery-status;") || 
                stristr($header, "Subject: failure notice") ||
                stristr($header, "Failed-Recipient") ||
                stristr($header, "X-Failed-Recipient")) {

    Ce petit test sur le header va permettre de récupérer les emails qui vont servir de base à la suprression.

    Ensuite l’algo s’organise comme suit :
    -  récupération de l’adresse email
    -  récupération de l’utilisateur SPIP correspondant à cette adresse
    -  suppression de la table auteur_liste
    -  suppression de la table auteur_elargis.
    Selon lecritere $config[’option_delete_row’]
    -  soit on élimine l’auteur de la base (spip_auteur)
    -  soit on bascule l’auteur en statut 5poubelle s’il est en statut 6forum

    En conclusion
    Effectivement j’ai bien peur que ce plugin ne dégage TOUS les retours que ce soit des soft ou des hard bounce, c’est à dire aussi bien les adresse inexistantes que des quota dépassé ou des indications de spam ou des absences pour congé.

    Donc en l’état il me parait dangereux. Mais comme j’en ai besoin (et qu’il est en GPL), je vais devoir le modifier, si ça tente quelqu’un de m’accompagner.

    Par contre, est ce que quelqu’un aurait une bonne culture de la gestion des soft/hard bounce mail dans l’assemblée ? La mienne date un peu...

    • Merci de vouloir te pencher sur l’amélioration de ce plugin, inutilisable en l’état.
      voir la solution que j’ai adapté :
      http://www.spip-contrib.net/SPIP-Listes-Cleaner#forum433870

      Pour répondre à ta question (de mémoire) :
      Mailman met des points en cas de retour de courriel avec erreur : 1 point pour erreur définitive et 0.5 pour des erreurs temporaires. Lorsqu’un correspondant arrive à un certain nombre de points (configurable) il peut être suspendu ou supprimé de la base. Au bout d’un certain temps (configurable) sans retour en erreur, le nombre de points d’un correspondant est remis à zéro (parce qu’il a recommencé à ouvrir ces courriels après les vacances par exemple). Il me semble qu’il y a encore un autre paramètre de configuration qui échappe présentement à ma mémoire.

      Proposition :
      Au moins dans un premier temps ou en option, rendre tout ceci manuel.
      Enregistrer les retours en erreurs dans une table en attribuant des points celon la cause
      Faire une page qui affiche la liste des « auteurs » ayant des points de retour d’erreur, permettre de consulter les enregistrements indiquant la cause de chaque et donner un lien rapide vers les différentes actions à envisager (suppression de la table, mise de l’auteur à la poubelle, désinscription des listes de diffusion, intervention pour corriger les courriel de l’auteur ou ses autres informations.
      Il faudrait aussi que cette page permette de gérer (voir et entreprendre des actions) les auteurs qui ... /n’ont pas de format de réception/ ont tel format de réception/ n’ont pas d’inscription sur une liste/ ont tel ou tel statut ...

      Avec cette page on aurais plus à gérer nos retours d’erreurs après chaque envoi sur la liste et nos actions manuelles seraient faciles à décider et à faire.

      Pour automatiser cela il pourrait être programmable que telle action
      (annulation du format de l’envoi, désinscription des listes, mise de l’auteur à la poubelle ou suppression de la base [ au choix]) soie entreprise automatiquement à l’atteinte d’un certain nombre de points (en dedans d’une certaine période, paramétrable aussi).

      J’espère que ma proposition est claire et raisonnablement facile à coder (pas pour moi en tout cas). Questions acceptée ici ou en privé.
      Encore merci aux codeurs qui mettent tout cela en ordre de fonctionnement et vive la GPL qui permet ces enrichissements ;-)

    Répondre à ce message

  • 5

    Bonjour,

    je déconseil l’installation de ce plugin, il désactive beaucoup trop de souscriptions de newsletter. A mon avis il ne rempli pas bien sa tâche.

    joz

    • Bonjour

      Apparemment, l’auteur de ce plugin ne répond plus ?
      Et il n’y aurait aucune documentation sur les spécifications ?

      Comme beaucoup d’autres, je me pose des questions :
      -  Ce plugin ne va t’il pas supprimer des inscrits partis en vacances ?
      -  ou qui n’ont pas eu le temps de vider leur BAL ?
      -  ou dont le serveur de messagerie est temporairement HS ?

      Un utilisateur de ce plugin pourrait-il fournir ces quelques infos ?

    • Au début du plugin j’avais contacté l’auteur parceque je n’arrivais pas à le faire fonctionner.
      Il semble qu’il aie développé cela pour un besoin spécifique sans faire un système de gestion des rebonds sophistiqué comme mailman par exemple. Le risque de désinscription excessivement massive est don bien réel, vous êtes prévenus.

      Solution perso :

      J’ai introduit le code suivant dans le squelette du patron de spiplistes :

      <a href="http://monsite.tld/ecrire/?exec=auteur_infos&id_auteur=_AUTEUR_ID_AUTEUR_&edit=oui"> . </a>

      Quand un serveur me renvoie un message d’erreur en renvoyant une copie du message (cas général) cela me donne un lien discret vers la page de gestion de l’inscrit concerné.

      Toute autre idée ou approche bienvenue ;-)

    • Bonjour livier

      Merci pour cette astuce. C’est pas automatique mais simple et efficace.

      Je ne comprends pas comment fonctionne : _AUTEUR_ID_AUTEUR_
      C’est une balise propre au patron ?

      Moi, j’ai mis :

      <a href="#URL_SITE_SPIP/spip.php?page=abonnement&d=#ENV{cookie_oubli}"> . </a>
    • Les patrons de spip-listes ont une syntaxe particulière pour certaines variables

      _AUTEUR_ID_AUTEUR_ est une inspirée de ce que j’ai vu dans les patrons de spip-listes ... cela semble adapté à la situation car cela marche ;-)

      As tu testé et confirmé le fonctionnement ce que tu as mis toi même ?

    • J’ai testé ta solution avec _AUTEUR_ID_AUTEUR_ et cela n’a pas marché.

      Ma solution semble fonctionner. Mais je n’en suis pas sûr à 100%.
      Je confirmerai dans quelques jours après l’envoi de ma lettre d’infos.

    Répondre à ce message

  • Haqqtiviste

    bonjour

    avec spip 2.1 et Zpip, ça ne fonctionne pas, j’indique un imap à gmail sur lequel je reçois les messages d’erreur

    le plugin (avec ?action...) mouline 3 jours puis rien...
    merci

    Répondre à ce message

  • Bonjour,

    J’ai bien installé le plug, paramétré avec CFG, mais comment je fais pour lancer l’opération de nettoyage ?
    J’ai cherché des infos sur SPIP CRON, mais que dois-je faire avec cette balise, ou comment faire pour lancer la fonction spiplistescleaner (?action=spiplistescleaner).

    merci de votre aide

    Répondre à ce message

  • Bonjour,

    j’ai installé votre plugin, mais malheureusement je recois un erreur :

    TLS/SSL failure for pop.monserveur.com : SSL negotiation failed

    j’ai configuré dans cfg comme dans mon thunderbird (où l’adresse fonctionne), avec
    Securité : none
    Option de sécurité : no valdate certificat

    Est-ce que vous savez pourquoi je recois cet erreur ? Puisque je n’employe pas TLS ni SSL ..

    Des idées qu’est-ce qui coince ?
    Merci pour vos lumières

    joz

    Répondre à ce message

  • Bonjour,

    avant d’installer ce plugin je voudrais bien savoir comment le Listes-Cleaner traite les réponses automatiques genre « je ne reçois pas votre message car je suis abtent du bureau pour 2 semaines ». Est ce que Listes-Cleaner distinge ce genre de réponse d’un réponse « failure notice » ou « Delivery Status Notification (Failure) » ?

    Je ne veux pas risque que mes abonnés ne peuvent pas partir tranquillement en vacances sans risquer d’être irradié de la mailing liste ;-)

    merci pour l’éclaircissement
    joz

    Répondre à ce message

  • 2

    Voilà tu es co-auteur de l’article, c’est avec grand plaisir que j’accepte ton aide. Par contre étant donné que j’ai développé ce plugin pour une boite Australienne dans laquelle je travail actuellement, il est important d’essayer d’avoir une copie exacte de la doc en Anglais (j’espère que cela n’est pas trop une grosse contrainte pour toi).

    Au moment ou j’écris le chargement automatique du plugin n’est pas passé à la version 1.2, Je reverrai cela demain ou la semaine prochaine ...

    => Peu être un bug ? Je n’ai eu aucun problèmes de mon coté.

    Le risque que les messages soient relevés par notre logiciel de messagerie avant d’avoir été traités par ton plugin existe toujours il me semble.

    => Je ne vois aucune solution viable à intégrer dans le plugin pour éviter cela. La 1re solution comme tu l’as dit est de faire un compte rebond dédié à cela. La deuxième est de paramétrer le client pop pour qu’il laisse les mails sur le serveur en attendant qu’ils soient supprimé sur le client (option disponible dans thunderbird par exemple).

    J’ai pas encore pu tester l’option « la méthode de suppression des auteurs » on en reparlera au besoin.

    => dans les deux méthodes les tables spip_auteurs_listes et spip_auteurs_elargis sont nettoyé, la seul différence est dans spip_auteurs où les enregistrements ne sont pas supprimé mais marqué « 5poubelle » en statu.

    Ton nettoyage de la table spip_auteurs_elargis va t’il aussi enlever les scories qui y sont actuellement ou juste pour les prochains nettoyages ?

    => Le nettoyage de la table spip_auteurs_elargis supprime bêtement les enregistrements lié a l’id d’un auteur. Mais j’ai peur de ne pas avoir compris ta question.

    L’utilisation du plugin pour nous est sur le long terme. Le « once shot » qui a motivé son développement initial ne correspond pas au besoin de maintenir une base d’abonnés sur le long terme. Le principe de la riposte graduée est préférable, Mailman offre une approche exemplaire sur cette question, tu peux t’en inspirer.

    => Que penses tu si je rajoute une option avec le nombre de bounces mail minimum reçu avant de supprimer l’auteur ?

    Mais le pire c,est que j’ai pas détecté si il m’avait bien fait le travail suite à mon dernier envoi. Je sais pas trop ou controler quoi pour savoir ce qui a coinçé. Pourrait il y avoir des points de contrôle ? un déroulement étape par étape du processus, un documentation plus précise pour que l’on s’y retrouve ... ?

    => Le plugin est sensé écrire dans les logs de spip mais j’ai remarqué que cela ne fonctionnait que quand SPIP-Listes-Cleaner est appelé par le CRON. Comment vois-tu l’implémentation de cette fonctionnalité ? Écrire le résultat de chaque étapes en html lors de l’appel de la fonction action serrait-elle suffisante ? Je n’ai malheureusement pas beaucoup de temps pour écrire de la documentation, je surf sur plein de projet en même temps, mais je reste ouvert à toutes évolutions.

    • Réponse rapide pour te permettre d’avancer, je n’aurai pas plus de temps avant la semaine prochaine.

      1.2 SVN [28993] = version maintenant installée automatiquement.

      Dans la page / ?exec=cfg&cfg=spiplistescleaner
      je ne vois pas les nouvelles options.

      Oui, il faut bien faire attention et configurer très bien au niveau du serveur de courriel pour que ça marche. >> mode d’emploi à rédiger.

      Y a t’il une possibilité de supprimer tous les auteurs absents de la table spip_auteurs et encore présents dans spip_auteurs_élargis ?

      C,est peut être pas mal de boulot, mais si on pouvait déclencher manuellement ton plugin puis suivre les étapes de son foctionnement, cela aiderais à le comprendre et à débugger des config qui dépendent de la config plugin/serveur. Idéalement on pourrait voir :
      -  l’établissement de la connexion avec le serveur
      -  les courriels qu’il y trouve
      -  ceux qu’il identifie comme étant à traiter
      -  l’action qu’il propose d’entreprendre ...
      -  la validation de ces actions pourrait être manuelle en période de test, automatisée ensuite.
      ce suivi serait bien placé dans les pages de gestion du plugin.

      Chaque bounce identifié pourrait donner des points, (idéalement plus de points si l’adresse est inconnue du serveur que la boite pleine). Si un courriel arrive avant ce maximum atteint, réduction ou remise à zéro des points. A un certain nombre de points, adresse supprimée ou mise à la corbeille (avec idication de la date et de la cause de la mise au panier).

      Il manque plus qu’une bonne page de suivi des auteurs pour identifier les auteurs bannis, donner la possibilité de les récupérer ou de les jetter, vérifier ceux qui ont des points de bannissement ....

      Mais j’imagines que c’est plus facile à demander qu’a programmer

      Je te reviens la semaine prochaine
      Merci pour le boulot

    • pour la cohérence entre auteurs et auteurs_élargis, problème que j’ai rencontré aussi...

      je ne suis pas un pro de sql, mais un truc du genre

      delete * from spip_auteurs where not in (select * from spipcont.spip_auteurs_élargis where...)

      devrait marcher...

      c’est ce que j’ai fait une fois, mais je ne suis pas sûr de la syntaxe exacte...

      pam

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom