Howto Qmail avec spamassassin

Par Sylvestre Ledru June 2003
Version anglaise
Retourner à la page linux

(02/04/2002), petit bug corrigé :
Je viens de corriger un petit bug pour certains OS qui enleve le +x sur le fichier qmail-queue (la méthode avec qmail-scanner n'est pas concernée).
(01/11/2003), Qmail-scanner :
J'ai ajouté une autre manière d'appeller le client spamassassin utilisant qmail-scanner.
(23/07/2003), Preferences :
Matthew Francis m'a envoye un bon howto expliquant comment mettre en place des preferences pour les utilistaures avec spamassassin. C'est disponible ici (desole, seulement en anglais pour le moment) : here.
(08/06/2003), Localisation :
Si vous voulez changer la langue dans laquelle apparait le rapport de spam (c'est-a-dire pourquoi l'email a été considéré comme spam), changez juste les locales pour la langue voulue (par exemple fr_FR pour le francais) avec la commande dpkg-reconfigure locales sous debian) et installez gettext si c'est pas déjà fait (apt-get install gettext) et vous aurez la bonne version (francais for example)...
(11/03/2005), Mise à jour :
Après presque deux ans sans mise à jour, mon autre howto sur qmail étant bien plus complet et mis à jour, je nettoye celui ci :
- première méthode déconseillée
- nouvelle version de spamassassin 3.0.X
- utilisation de netqmail au lieu de qmail
- nouvelle version de qmail-scanner avec le patch q-s-st (activation de Spamassassin juste sur un domaine)

Si vous aimez cet howto et que vous voulez me remercier pour mon travail : voici ma wishlist sur Amazon - France ou celle sur Amazon US :)



Si vous voulez plus d'informations propos de l'installation de qmail , j'ai ecris un long howto (en Anglais) sur ce sujet.
J'ai écris cet howto parce qu'il y a un manque de documentation concernant l'utilisation de qmail avec Spamassassin.

Ce howto a été écris pour etre utilisé avec qmail/vpopmail mais ça devrait marcher sans de grosses modifications avec quelque chose d'autre que vpopmail.

Spamassassin est un programme très puissant qui vérifie si les emails reçus sont un spam ou non. L'analyse est basée sur une suite de notes. Si la somme de toutes les notes dépasse un nombre spécifié (par exemple 5), le sujet de l'email va etre taggé avec un ****SPAM****.
Avec ceci, il est très facile de créer une règle qui va déplacer tous les emails dans un dossier spécifique (par exemple, la corbeille).

Si vous voulez linker qmail avec spamassassin, c'est assez facile :
Premierement, installez spamassassin et razor ou pyzor si vous les voulez.

Avec debian :

apt-get install spamassassin Vous devriez utiliser la version testing ou unstable de spamassassin sous debian qui, la plus part du temps, trouve plus de Spam.


Avec un autre systeme (Redhat, Suse, Solaris ...) :
La dernière version de Spamassassin à cette date est la version 3.0.2. La procédure d'installation est à peu près la même. Quelques directives ont par contre changées.

wget http://useast.spamassassin.org/released/Mail-SpamAssassin-2.55.tar.gz
tar -zxvf Mail-SpamAssassin-2.55.tar.gz
cd Mail-SpamAssassin-2.55
perl Makefile.PL
make
make install
cp spamd/debian-rc-script.sh /etc/init.d/spamassassin

Vous pouvez remplacer debian par redhat, solaris, netbsd, suse ...

chmod +x /etc/init.d/spamassassin


Puis, modifiez /etc/spamassassin/local.cf
Version 2.5X :

required_hits 6.0
rewrite_subject 1
report_header 1
use_terse_report 1
defang_mime 1
dns_available yes
dcc_add_header 1
use_pyzor 1 (Seulement si vous avez installé pyzor)
use_razor2 (Seulement si vous avez installé razor2)
use_dcc 1

Version 3 :

#Nombre de points pour le mail soit taggé spam required_hits 5.0 # Ajouter le résultat dans les headers always_add_headers 1 # Changer le sujet rewrite_subject 1 report_safe 1 use_terse_report 1 # utiliser le filtre bayse # Verifications dns => attention, probleme de lenteur potentielle dns_available yes dcc_add_header 0 # Don't skip the relay black list skip_rbl_checks 0 use_dcc 1 dcc_timeout 10 # Verification tier use_pyzor 1 pyzor_timeout 10 pyzor_add_header 1 # Learn from the previous results auto_learn 1 # utiliser le filtre bayse use_bayes 1 # Ou spamassasin doit conserver ses fichiers bayes_path /var/qmail/spamassassin/ # Ou spamassassin conserve les resultats des verifications auto_whitelist_path /var/qmail/spamassassin/auto_whitelist

Si vous voulez avoir des informations détaillées sur le traitement de spamassassin, ajoutez la ligne dans le fichier local.cf : timelog_path /var/log/spamassassin, lancez le daemon avec l'option -D (donc à spécifier dans le fichier /etc/default/spamassassin sous debian), créez ce répertoire avec les droits adéquats (ça devrait etre vpopmail). Dans ce répertoire, vous devriez avoir pour chaque email un fichier contenant ces informations (c'est une option de debug !).

Perso, j'utilise ces régles. Changez comme vous l'entendez ! La documentation est disponible ici : perldoc Mail::SpamAssassin::Conf

Dans /etc/default/spamassassin (si ce fichier n'existe pas, cree le)
Changez ENABLED pour 1, puis ajoutez ces options : - "-m 10 -v --auto-whitelist" pour la version 2.5X.
- "-v -m 10 -u vpopmail --nouser-config" pour la version 3
Avec ces trucs, vous pouvez lancer spamd qui est un daemon ce qui permet d'augmenter sensiblement les performances.
-m 10 => 10 process fils
-v => Configuration vpopmail
--auto-whitelist => Utilise la whitelist (liste amie) - par defaut dans la version 2.3
Au lieu de spamassassin, utilisez spamc pour vérifier les emails.
Il y a quelques options "-c -u vpopmail" qui activent l'utilisation de préférences pour un domaine ou pour un utilisateur mais malheureusement, ca ne marche pas très bien pour moi.
/etc/init.d/spamassassin start


Ensuite, la modification de qmail dans le but de vérifier les emails :
En fait, il existe 2 types de configuration pour qmail :
- la manière plus facile/rapide est de changer qmail-queue dans le but d'introdure la vérification de spamassassin. Deconseillée
- la méthode la plus propre est d'utiliser qmail-scanner.

Changer le programme qmail-queue

cp /var/qmail/bin/qmail-queue /var/qmail/bin/qmail-queue.orig
chown qmailq:qmail qmail-queue
chown qmailq:qmail qmail-queue.orig
chmod u+s qmail-queue.orig
chmod o+r,+x qmail-queue.orig qmail-queue Pas fondamental mais des fois, necessaire pour certains systemes ...

mkdir /home/vpopmail/.spamassassin
cd /home/vpopmail
chmod 777 /home/vpopmail/.spamassassin

chown -R qmailq:qmail .spamassassin
chmod u=rwx,g=rx,o= /home/vpopmail/.spamassassin

Maintenant, supprimez le contenu de l'exécutable qui gére la queue.

echo -n > /var/qmail/bin/qmail-queue

Puis, éditez le fichier qmail-queue et ajoutez dedans :

#!/bin/sh
/usr/bin/spamc | /var/qmail/bin/qmail-queue.orig

Je suis d'accord que cette solution est dégueulasse. Elle engendre des problèmes dans l'inejction des bounces (retour) dans la queue. (Qmail-queue n'étant pas prévu pour ce genre d'opération).

Avec qmail-scanner - Visitez http://sylvestre.ledru.info/howt\o/howto_qmail_vpopmail.php pour plus d'informations

Premièrement, vous devez patcher qmail avec qmailqueue-patch ou utiliser netqmail qui intègre directement ce patch.
Avec qmail et le patch :

wget http://qmail.agarik.com/qmail-1.03.tar.gz
tar -zxvf qmail-1.03.tar.gz
cd qmail-1.03
wget http://qmail.mirrored.ca/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch
wget http://sylvestre.ledru.info/howto/qmail/qmailqueue-patch
patch -p1 < qmail-1.03.errno.patch
patch -p1 < qmailqueue-patch

Avec netqmail :

wget http://qmail.agarik.com/netqmail-1.05.tar.gz
tar -zxvf netqmail-1.05.tar.gz
cd netqmail-1.05/
./collate.sh
cd netqmail-1.05

Ajouter le paramètre QMAILQUEUE au fichier /etc/tcp.smtp :

127.0.0.1:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
198.168.1.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"

Reloader tcpserver :

/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp.cdb

Et ensuite, installer qmail-scanner avec qmail-scanner-st :
qmail-scanner-st est une version patchée de qmail-scanner qui permet de founir des supers fonctionnalitées comme l'auto suppression/rejecct/quarantaine de spam au dessus d'un score donné, mais aussi de choisir quel scanners seront utilisé pour un domaine et/ou même pour un utilisateur. Il est donc possible d'activer spamassassin juste pour un domaine.

wget http://unc.dl.sourceforge.net/sourceforge/qmail-scanner/qmail-scanner-1.25.tgz wget http://xoomer.virgilio.it/j.toribio/qmail-scanner/download/q-s-1.25st-20050207.patch.gz
gunzip q-s-1.25st-20050207.patch.gz
tar -zxvf qmail-scanner-1.25.tgz
cd qmail-scanner-1.25/
patch -p1 < ../q-s-1.25st-20050207.patch
groupadd qscand
useradd -c "Qmail-Scanner Account" -g qscand -s /bin/false qscand
./configure --qs-user qscand --qs-group qscand --spooldir /var/spool/qmailscan --qmaildir /var/qmail --bindir /var/qmail/bin --qmail-queue-binary /var/qmail/bin/qmail-queue --admin-fromname "Mail admin" --admin postmaster --domain vladimir.avence.info --notify sender,admin,recips --local-domains `cat /var/qmail/control/rcpthosts | tr "\n" " "` --silent-viruses auto --unzip 1 --add-dscr-hdrs 1 --archive 0 --redundant yes --log-crypto 0 --scanners "fast_spamassassin" --scanners-per-domain yes --sa-subject "*****SPAM*****" --sa-delete 5 --install 1

Après l'installation, si vous voulez changer vos préférences, vous devez modifier le ficher /var/qmail/bin/qmail-scanner-queue.pl. Dans ce fichier, vous pouvez aussi ajouter des options au client spamassassin.
Si vous voulez activer/desactiver certains scanners, editez le fichier /var/spool/qmailscan/scanners_per_domain.txt
Pour lancer la prise en compte de ce fichier : /var/qmail/bin/qmail-scanner-queue.pl -p
Pour rehash la liste des fichiers en quarantaine : /var/qmail/bin/qmail-scanner-queue.pl -g

trunks.ecranbleu.org:sa,ps,clamdscan_scanner

# sa = spamassassin
# ps = perl scanner

Ceci devrait etre suffisant pour utiliser spamassassin sur le système entier.
Todo : Trouver comment lier vpopmail avec spamasssin pour pouvoir créer et gérer les préférences par domaine ou par utilisateur (si quelqu'un connait la solution : sylvestre@ecranbleu.org

Problème :
- lien avec vpopmail
Ce howto est inspire et corrigé de :
http://www.euronet.nl/users/erhnam/linux/qmail/qmail.htm.

Author : phrawzty (frosty_at_tbp.mb.ca) poste le 12/12/2003 11:54
Comment :
merci pour l'instructions!:)

- phrawzty (canada!)
Reply to this comment

Author : Xavier (tozaz_at_cheztozaz.org) poste le 11/02/2004 15:24
Comment :
Bonjour,

Le tuto est super merci, mais il semble que j'ai quelques problemes :

Je suis sous debian testing, voici mon /var/log/syslog lorsque j'envoie un mail depuis mon reseaux local vers l'exterieur

Feb 11 16:17:30 kurius vpopmail[3975]: vchkpw: login success postmaster@cheztozaz.org:192.168.0.2
Feb 11 16:17:42 kurius spamd[3924]: connection from localhost [127.0.0.1] at port 33029
Feb 11 16:17:42 kurius spamd[3980]: Use of uninitialized value in string ne at /usr/sbin/spamd line 1123, line 2.
Feb 11 16:17:42 kurius spamd[3980]: Use of uninitialized value in numeric gt (>) at /usr/sbin/spamd line 1145, line 2.
Feb 11 16:17:42 kurius spamd[3980]: Use of uninitialized value in hash element at /usr/sbin/spamd line 1152, line 20.
Feb 11 16:17:42 kurius spamd[3980]: Use of uninitialized value in hash element at /usr/sbin/spamd line 1152, line 20.
Feb 11 16:17:42 kurius spamd[3980]: Use of uninitialized value in string ne at /usr/sbin/spamd line 1130.
Feb 11 16:17:42 kurius spamd[3980]: processing message <000c01c3f0b2$320acf40$0200a8c0@tozaz> for qmaild:0.
Feb 11 16:17:42 kurius spamd[3980]: Failed to run DNS_FROM_RFCI_DSN RBL SpamAssassin test, skipping: ^I(Can't call method "bgsend" on an undefined value at /usr/share/perl5/Mail/SpamAssassin/Dns.pm line 145, line 44. )
Feb 11 16:17:42 kurius spamd[3980]: Failed to run NO_DNS_FOR_FROM SpamAssassin test, skipping: ^I(Undefined subroutine &Net::DNS::mx called at /usr/share/perl5/Mail/SpamAssassin/EvalTests.pm line 108, line 44. )
Feb 11 16:17:42 kurius spamd[3980]: clean message (0.0/6.0) for qmaild:0 in 0.4 seconds, 1252 bytes.
Feb 11 16:17:42 kurius qmail: 1076512662.465908 new msg 1502
Feb 11 16:17:42 kurius qmail: 1076512662.466030 info msg 1502: bytes 1522 from qp 3979 uid 64011
Feb 11 16:17:42 kurius qmail: 1076512662.478954 starting delivery 53: msg 1502 to remote xrosenfeld@nerim.net
Feb 11 16:17:42 kurius qmail: 1076512662.479049 status: local 0/10 remote 1/20
Feb 11 16:17:43 kurius vpopmail[3984]: vchkpw: login success postmaster@cheztozaz.org:192.168.0.2
Feb 11 16:17:45 kurius vpopmail[3986]: vchkpw: login success postmaster@cheztozaz.org:192.168.0.2
Feb 11 16:17:48 kurius qmail: 1076512668.412869 delivery 53: success: 62.4.16.71_accepted_message./Remote_host_said:_250_2.0.0_i1BFHjSO077038_Message_accepted_for_delivery/
Feb 11 16:17:48 kurius qmail: 1076512668.412964 status: local 0/10 remote 0/20
Feb 11 16:17:48 kurius qmail: 1076512668.412981 end msg 1502

Merci beaucoup
Reply to this comment

Author : Xavier (tozaz_at_cheztozaz.org) poste le 12/02/2004 17:20
Comment :
C bon j'ai demarrer spamassassin en mod debug et j'ai reglé le probleme, ca fonctionne nikel, je content lol, merci
Reply to this comment

Author : Greg (greginou_at_hotmail.com) poste le 26/02/2004 15:52
Comment :
C'etait quoi ton soucis, j'ai le meme et pour mapart je ne trouve pas de solution.....

Merci
Reply to this comment
Author : Yvan (--) poste le 15/06/2004 17:30
Comment :
Il te faut installer Net::DNS, à trouver sur CPAN.
Commande :
perl -MCPAN -e shell
puis une fois que t'as la main, tu tape : install Net::DNS

Good Luck :o)
Reply to this comment


Author : Shogin (aouicher_at_cobalt.fr) poste le 12/03/2004 09:07
Comment :
Bonjour,

Tout d'abord merci pour ce How to. Il est génial. Mais j'ai un souci au niveau de l'install de qmail scanner.

Voici ce que ca me dit.

--------------------------

Something like the SpamAssassin spamc is present, but not working
(didn't include a "X-Spam-Status" line in output) - ignoring...



/usr/bin/uudecode works as expected on system...



**************************

Cannot find unzip on your system!

As this is probably a virus scanning package, there's not much point
in trying to detect PC-type viruses when you can't even unpack the
primary file type they arrive in...


**************************


Je comprend pas pkoi et je ne vois pas du tout comment faire, merci de me donner un coup de main si tu peux.
Reply to this comment

Author : tozaz (tozaz_at_cheztozaz.org) poste le 03/04/2004 14:48
Comment :
il faut que spamassassin soit lancé sinon qmailscanner peux pas le trouver apparament

Bonne chance...
Reply to this comment

Author : () poste le 27/04/2004 02:00
Comment :
Reply to this comment

Author : () poste le 15/05/2004 06:25
Comment :
Reply to this comment
Author : () poste le 15/05/2004 06:25
Comment :
Reply to this comment


Author : () poste le 09/06/2004 09:00
Comment :
Reply to this comment

Author : effisk (effisk_chez_hotmail) poste le 11/06/2004 09:10
Comment :
Huhu celui-là m'a bien fait rigoler!
____________________________________
Cannot find unzip on your system!

As this is probably a virus scanning package, there's not much point
in trying to detect PC-type viruses when you can't even unpack the
primary file type they arrive in...
____________________________________
Reply to this comment

Author : cyril@cym.fr (cyril_at_cym.fr) poste le 18/06/2004 14:53
Comment :
Géniale l'astuce pour diriger vers spamc OU vers l'ancien qmail-queue.orig !

Bravo et merci, on a un spam-c qui marche maintenant.

C.MARION
Ateliers CYM
Reply to this comment

Author : grosset (pgrosset-at-interufr-point-dauphine-point-fr) poste le 25/06/2004 13:27
Comment :
Quelqun sait il ou telecharger des filtres specifiques aux spams francais?

Et eventuellement, si vous avez une regle pour dire de combien augmenter le required_hits en fonction des filtres que l'on ajoute?
(ex: si la note max cumulee des filtres ajoutés est x, ajoutez x/10 au required_hits)

Merci d'avance pour ces informations bien utiles.

Pascal Grosset
Université Dauphine

Reply to this comment

Author : grosset (pgrosset-at-interufr-point-dauphine-point-fr) poste le 25/06/2004 13:45
Comment :
Bah, j ai deja trouvé une adresse de download, avec un lien pour les spams francophones.
http://wiki.apache.org/spamassassin/CustomRulesets

Par contre, ya pas d indication concernant les modifs eventuelles de required_hits.

Pascal Grosset
Université Dauphine
Reply to this comment

Author : grosset (pgrosset-at-interufr-point-dauphine-point-fr) poste le 25/06/2004 16:14
Comment :
Bah, j ai deja trouvé une adresse de download, avec un lien pour les spams francophones.
http://wiki.apache.org/spamassassin/CustomRulesets

Par contre, ya pas d indication concernant les modifs eventuelles de required_hits.

Pascal Grosset
Université Dauphine
Reply to this comment

Author : florian trincal (florian.trincal_at_laposte.net) poste le 27/06/2005 09:04
Comment :
bonjour lors de la configuration de qmail scanner voila ce ke g a la fin est ce que qmail scanner va fonctionnait quand meme? merci d'avance


This script must be run as root so it can detect problems with setuid
perl scripts!

invalid option: admin --admin postmaster --domain vladimir.avence.info --notify sender,admin,recips --local-domains email.test.com --silent-viruses auto --unzip 1 --add-dscr-hdrs 1 --archive 0 --redundant yes --log-crypto 0 --scanners fast_spamassassin --scanners-per-domain yes --sa-subject *****SPAM*** [ --help is a valid option ;-) ]

See above for the valid options
Reply to this comment

Author : Eric () poste le 30/06/2005 07:41
Comment :
Non ca ne fonctionnera pas, il te dis que tu as des options invalides (et pour info, le domain est a changer, la tu le configures pas pour ton serveur ^^ " --domain vladimir.avence.info ")
Y avait écrit quoi en dessous du message ?

Sinon merci pour le tuto tres bien réalisé :)
Reply to this comment

Author : Lionel (lionel_at_vocation-backup.fr) poste le 09/02/2006 14:50
Comment :
Bonjour,

une petite question sur spamassassin, un point qui me parait obscur.
j'utilise spamassassin 2.55 (disons SA ca ira plus vite) sur mon serveur de mail, et je lui apprend regulierement du spam via sa-learn. cet apprentissage va se mettredans le rep home de l'utilisateur (root en l'occurence).
question: ets ce que cet aprpentissage est valable pour tout les utilisateur de la machine, donc est ce que la basse bayes de root est utilisé pour checker n'importe quel mails?
sinon comment faire pour que cela soit valable pour tout les utilisateurs? ( un lien symbolique sur le rep .spamassassin du root pour chaque home? une option a mettre dans le local.cf?)
Merci de vos reponses.
Reply to this comment


Comment closed because of the spam