IMAP Spam Begone (isbg) v0.98 est sorti

Posté par (page perso) . Modéré par Mouns.
Tags :
12
30
nov.
2009
Ligne de commande
Plus de 6 ans après sa dernière version, IMAP Spam Begone (isbg), le script de filtrage déporté de spams, est de retour avec une nouvelle fonctionnalité et des mises à jours de compatibilité.

Cette version propose une nouvelle fonctionnalité d'entraînement de SpamAssassin par l'utilisation de répertoires IMAP dédiés à l'apprentissage des hams ou des spams. Le script a été mis à jour de façon à assurer la compatibilité avec python de la version 2.4 à 2.6.

NdM: La licence sous laquelle est distribuée le script est un peu particulière puisqu'il est indiqué que "You may use isbg under any OSI approved open source license such as those listed at http://opensource.org/licenses/alphabetical.". isbg est un script python, destiné à être utilisé en cronjob, qui permet de soumettre les messages d'une boite IMAP à une instance de SpamAssassin ne résidant pas forcément sur le serveur IMAP, résolvant l'urticant problème de disposer d'un filtre à spams efficace tout en conservant ses messages chez un fournisseur « populaire » comme laposte.net ou free.fr.

Avec la fonctionnalité d'entraînement de SpamAssassin, vous pouvez entraîner ce dernier lorsqu'il rate un spam ou remonte un faux positif en déplaçant le message concerné vers un répertoire spécifique, configurable à votre discrétion.

Le script a été écrit initialement par Roger Binns, qui ne l'utilisait plus depuis quelques années. Il l'a donné à la communauté au début du mois de novembre 2009.
  • # Imap pour apprendre uniquement ?

    Posté par . Évalué à 6.

    Peut-on l'utiliser uniquement pour apprendre les spams et hams ?
    Et garder le scan sur SMTP ?
    J'ai peur que sur de grosses boites (3Go), isbg ne prenne trop de ressources à tout scanner à la recherche de spam.

    Auto réponse après analyse du code:
    - Oui on peut-l'utiliser pour apprendre uniquement

    Comme il n'y a plus d'objectifs fixés pour le futur j'en donne de nouveaux. :p

    Le programme semble pas mal du tout, ce qui serait bien, c'est d'en faire une API ou un module. Bref utiliser des classes, pour facilement l'intégrer dans une application plus grosse. ;) Pour l'instant tout le code est linéaire, sauf l'implantation de l'IMAPS)
    Exemple d'utilisation en API:
    from isbg import isbg
    imap_learn = isbg()
    imap_learn.learn(server_url, user, pwd, mailbox)

    Autre suggestion, à la création de la première version à mon avis cela n'existait pas, mais pourquoi ne pas réutiliser une implantation IMAPS déjà existante ? Par exemple:
    http://twistedmatrix.com/trac/wiki/TwistedMail comme cela plus besoins de maintenir la partie IMAPS bas niveau.

    Encore un petite suggestion, pour la gestion des paramètres d'entrées, je suggère d'utiliser OptParse, http://docs.python.org/library/optparse.html
    Qui est assez bullet proof et extensible.

    Et encore une, permettre de scanner pour apprentissage toutes les boîtes principales accessibles par un utilisateur. Exemple: Un utilisateur postmaster qui à accès à toutes les boîtes emails, et qui les scannerait toutes d'un coup.

    Encore bravo pour le projet, je vais pouvoir jeter le script Perl que j'utilisais pour l'apprentissage du Spam, Hams via Cyrus.
    • [^] # Re: Imap pour apprendre uniquement ?

      Posté par (page perso) . Évalué à 2.

      L'option --teachonly est explicité: elle court-circuite le process de parcours des mails entrants pour se contenter de consulter les mails à apprendre (ham/spam).

      isbg tient à jour un index des UID des messages qu'il a déjà parcouru: le premier run prend du temps (surtout s'il y a 3Go de mails dans inbox…) mais ensuite, sur la base d'un run toutes les 15min par cronjob, c'est très rapide.

      Hum… ne jamais répondre en lisant un commentaire, la réponse devient inutile :)

      Bonne idée pour l'utilisation d'IMAPS existante, si ce n'est que je ne suis pas un fan inconditionnel des dépendances.

      Pour la modularisation, ce serait vraiment chouette, mais je ne suis absolument pas « pythoneux » mais rubyste… Du coup je serais plus à l'aise en le réécrivant (je me suis aperçu que réécrire isbg en ruby m'aurait pris moins de temps que de le mettre à jour).

      Des objections à une réécriture?

      Sinon… je vois l'intérêt de l'apprentissage global, mais à ce niveau là, c'est plutôt à un plugin sur serveur IMAP de faire cela.
      Merci pour le feedback.
      • [^] # Re: Imap pour apprendre uniquement ?

        Posté par . Évalué à 1.

        Pour le passage en Ruby, c'est dommage (je ne connais pas encore Ruby :p) car cela empêche d'en faire un module réutilisable en Python, mais par contre sûrement réutilisable en Ruby.

        Pour l'instant, je suis dans ma période Python. Après le Basic, le Pascal, l'ASM, C/C++, PHP, Javascript, Perl, Java, j'en oublie sûrement...

        Après un aperçu rapide du Ruby, Il a quelques avantages sur Python:
        - le 'super' d'une classe n'a pas besoins de rappeler tous les arguments.
        - tout est object, même les nombres. a.abs (en python: abs(a) est moins trivial je trouve)

        Désavantage par rapport à Python:
        - Il faut mettre un 'end' pour la fin de chaque bloc. (Pourquoi allonger le code pour rien ?)
        - Le 'tout est vrai' dans l'évaluation de valeur est ennuyant. En python un 'if a:' est très pratique à l'usage. Exemple en Ruby 0 => true , [] => true
        - le nommage des constructeur de classe, 'initialize'. Cela fait un mot réservé en plus (encore une source de problème en plus lors du débogage)... En Python c'est '__init__'

        Bref les désavantages, ne me motive pas pour l'instant à migrer vers ce langage, ce malgré toutes les louanges de RoR que l'on retrouve partout.
        • [^] # Re: Imap pour apprendre uniquement ?

          Posté par (page perso) . Évalué à 1.

          Euh, tous les types sont des objets en python, les entiers/floats inclus, il faut juste utiliser les parenthèses pour accéder aux attributs d'une forme littérale.

          >>> (-1).__abs__()
          1


          :-)

Suivre le flux des commentaires

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