Spamassassin : se créer une règle de détection spécifique

closeCet article a été publié il y a 16 ans 3 mois , il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Malgré des règles assez sympathiques (voyez ma doc Debian (encore ? oui oui) pour les mettre en place), il arrive que certains spams ne soient pas reconnus. Si vous avez envie d’écrire une règle hyper compliquée ou simplement une petite règle car vous avez détecté qu’un serveur relai bien moisi était à l’origine de cela, voici une mini-introduction pour le faire.

Tout d’abord, lisez la doc officielle de SpamAssassin sur le sujet, c’est la bible. Ensuite, voici un cas simple, concret, basé sur un header particulier, le champ "Received". Je cherche à voir si le mail spammeux non détecté est passé par le serveur « gaoland.net », apparement un « problème connu » (voyez sur Google).

J’ai donc créé un fichier /etc/spamassassin/mes_regles.cf contenant :

header   PERSO_GAOLAND Received =~ /gaoland\.net/i
describe PERSO_GAOLAND Relaye par gaoland.net, on soupçonne fortement
score    PERSO_GAOLAND 4.0

J’ai simplement fait ajouter 4 points car ce spam non reconnu marquait déjà 4.5 ou 4.9 – je ne sais plus – pour motif « Bayesian spam probability is 99 to 100% », mon seuil de détection étant à 5.

Pour faire un test de votre configuration, vous pouvez vous créer une règle de ce genre :

body     MESREGLES_TEST   /je teste mon spam/
score    MESREGLES_TEST   5.1

…et vous envoyer un e-mail depuis une adresse non whitelistée (oui oui j’ai fait cette erreur 😉 contenant dans le corps du message (BODY) la phrase « je teste mon spam ». Vous devriez alors voir un joli :

Spam detection software, running on the system "monserveur.com", has
identified this incoming email as possible spam.  The original message
has been attached to this so you can view it (if it isn't spam) or label
similar future email.  If you have any questions, see
the administrator of that system for details.

Content preview:  bliblablo je teste mon spam blabslqj [...] 

Content analysis details:   (5.1 points, 5.0 required)

 pts rule name              description
---- ---------------------- --------------------------------------------------
 5.1 MESREGLES_TEST             BODY: MESREGLES_TEST
 0.0 BAYES_50               BODY: Bayesian spam probability is 40 to 60%
                            [score: 0.4978]
 0.0 AWL                    AWL: From: address is in the auto white-list

Et voilou

6 comments

  1. Tiens au fait, gaoland = Neuf Telecom
    Donc :
    1) creer cette règle aura comme travers d’être très méfiant envers les expéditeurs légitimes @neuf.fr
    2) ils doivent avoir un nombre d’abonnés spammeurs-zombies au-delà de la normale pour qu’ils ressortent aussi nettement dans des statistiques de greylisting : http://michauko.org/blog/2008/03/05/statistiques-de-greylisting/
    (on les voit une fois dans un extrait de logs, mais ils sont trèèèès souvent greylistés.

    Bilan, ça doit être bien naze neuf telecom….

  2. Bonjour,

    En surfant sur le net afin de trouver réponse à ma problématique je suis tombé sur votre blog. Je vous sollicite à tout hasard afin de savoir si vous auriez une idée pour solutionner mon interrogation.

    J’expose les faits :
    Je souhaite apporter quelques modifications à la configuration de mon serveur de messagerie qui se compose de : postfix, dovecot et spamassassin.
    J’administre les comptes mails via postfixadmin.

    Je souhaiterai effectuer la chose suivante :
    Quand un spam est envoyé à une adresse reconnue par le serveur de messagerie, ce dernier est tagué avec l’en-tête « ***SPAM*** » ; jusque là pas de problème. 🙂

    Mon désire est que lorsqu’un spam est envoyé à une adresse NON reconnue par le serveur de messagerie (exemple : abcdefghijkl@mnopqrst.uvw), ce dernier ne renvoie pas de message « Undelivered Mail Returned to Sender » et que le mail de spam soit directement supprimé ; pas mis en queue.

    Après quelques recherches je pense que cela est possible en ajoutant quelques règles dans le fichier « local.cf » mais je sais pas du tout comment y parvenir…

    Cordialement,
    MaT

    1. Salut,
      Perso, je l’aurais fait avec amavis (voir mon article assez récent sur la mise en place d’amavis) : genre avec les paramètres $final_*
      Sinon, je chercherais plutôt du côté de postfix que de spamassassin. On n’est pas encore au niveau spam là, juste réception.
      Des paramètres comme « soft_bounce » ? sinon google avec postfix + bounce, ça finira par donner le bon

      Mais bon, je mieux, à mon avis, c’est de laisser l’orchestration de tout ça à amavis

  3. Merci pour votre réponse rapide.

    J’ai déjà installé la même plateforme avec Amavis mais je ne vois pas non plus comment procéder avec cet outil.
    Je vais me renseigner avec postfix et le bounce bien que j’avais déjà fait des recherches auparavant dessus.

    Bonne continuation 🙂

  4. Là non ?
    srv:/etc/amavis/conf.d# grep -i bounce *
    20-debian_defaults:# Use D_BOUNCE to generate local bounces by amavisd-new
    20-debian_defaults:# Use D_REJECT to generate local or remote bounces by the calling MTA
    20-debian_defaults:# mail to your account. Use D_BOUNCE instead, otherwise you are delegating
    20-debian_defaults:# the bounce work to your friendly forwarders, which might not like it at all.
    20-debian_defaults:# MTA generate the bounce message. Test it first.
    20-debian_defaults:$final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA
    20-debian_defaults:$final_spam_destiny = D_BOUNCE;
    20-debian_defaults: ‘amavis-user-bounces@lists.sourceforge.net’ => -3.0,

    Sinon, mon approche est différente : la plupart des mails genre lqskjdlskqd@qsljdhqsd.com sont des saloperies envoyées par des PC infectés. Injoignable en retour. Donc le greylisting fait son boulot et on ne perd pas trop de temps

  5. Bah le truc c’est que je veux si possible ne pas passer par amavis…
    Je pense que c’est possible de faire ce que je souhaite avec seulement postfix et spamassassin
    Je continue de me renseigner…
    PS : j’avais déjà vu avec amavis comment faire (D_BOUNCE, D_REJECT, …) mais ça répondra pas à ma question qui est de supprimer seulement les mails de spam à destination d’une adresse inconnue par le système

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.