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 : http://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.0
Vos commentaires
# Le 7 décembre 2010 à 08:04, par Gil FOURGEAUD
En réponse à : SPIP-Listes-Cleaner
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
# Le 15 octobre 2010 à 14:28, par Julien Falconnet
En réponse à : SPIP-Listes-Cleaner
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à :
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...
# Le 15 octobre 2010 à 16:20, par livier
En réponse à : SPIP-Listes-Cleaner
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
# Le 14 juillet 2010 à 15:08, par joz
En réponse à : SPIP-Listes-Cleaner
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
# Le 1er septembre 2010 à 18:24, par bruno31
En réponse à : SPIP-Listes-Cleaner
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 ?
# Le 1er septembre 2010 à 18:44, par livier
En réponse à : SPIP-Listes-Cleaner
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 :
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 ;-)
# Le 1er septembre 2010 à 19:15, par bruno31
En réponse à : SPIP-Listes-Cleaner
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 :
# Le 1er septembre 2010 à 19:44, par livier
En réponse à : SPIP-Listes-Cleaner
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 ?
# Le 1er septembre 2010 à 19:52, par bruno31
En réponse à : SPIP-Listes-Cleaner
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
# Le 30 juin 2010 à 11:27, par Haqqtiviste
En réponse à : SPIP-Listes-Cleaner
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
# Le 14 mai 2010 à 19:15, par chris
En réponse à : SPIP-Listes-Cleaner
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
# Le 22 février 2010 à 13:03, par joz
En réponse à : SPIP-Listes-Cleaner
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
# Le 16 novembre 2009 à 12:45, par joz
En réponse à : vacances ?
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
# Le 5 juin 2009 à 04:51, par Pierre ROUSSET
En réponse à : SPIP-Listes-Cleaner
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).
=> Peu être un bug ? Je n’ai eu aucun problèmes de mon coté.
=> Je ne vois aucune solution viable à intégrer dans le plugin pour éviter cela. La 1ere 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).
=> 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.
=> 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.
=> Que penses tu si je rajoute une option avec le nombre de bounces mail minimum reçu avant de supprimer l’auteur ?
=> 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.
# Le 5 juin 2009 à 21:01, par livier
En réponse à : SPIP-Listes-Cleaner
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
# Le 13 novembre 2009 à 11:03, par pamillet
En réponse à : SPIP-Listes-Cleaner
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
# Le 5 juin 2009 à 04:03, par livier
En réponse à : SPIP-Listes-Cleaner
super réactif, bravo.
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 ...
Pour les courriels, avec l’option au moins on sait ce qu’on fait et c’est toujours mieux, sinon ce n’était qu’un probléme de compréhension. 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. On doit pouvoir l’éviter en faisant renvoyer les rebonds sur un comte courriel que l’on ne reléve pas automatiquement. C’est une question de config à notre niveau, mais un manuel détaillé devrait être fourni dans l’article. Si tu veux que j’y participe, met moi co-auteur de l’article.
J’ai pas encore pu tester l’option « la méthode de suppression des auteurs » on en reparlera au besoin.
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 ?
Mais j’arrives au plus important ...
- 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.
- 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 ... ?
// T’aurais pas du me dire « n’hésite pas à proposer des modifications » ;-) //
Répondre à ce message
# Le 4 juin 2009 à 06:23, par Pierre ROUSSET
En réponse à : SPIP-Listes-Cleaner
Passage en version 1.2 :
- Ajout de deux option :
1) supprimer ou non les mails du serveur mail.
2) la méthode de suppression des auteurs
- Correction d’un bug : maintenant la table spip_auteurs_elargis est aussi nettoyé
Répondre à ce message