Journal Exim, spammassassin, fetchmail ( très mini ) howto

Posté par  (Mastodon) .
Étiquettes :
0
14
juil.
2003
Spamassassin est un programme très éfficasse pour marquer les spams, son probleme principal est qu'il demande "beaucoup" de resource. J'ai donc voulu isolé ce programme sur une machine dédiée.

Dans ce "mini howto", je vais expliquer comment utiliser une machine exclusivement pour triller le spam.

La distribution est une Débian Woody 3 et la machine, un vieux serveur Compaq 150Mhz et 128Mo de RAM.

INSTALLATION

Je commence par installer les outils.

Je vais utiliser :
-exim,
-spammassin,
-fetchmail pour relever le courrier sur les comptes pop3
-et enfin un serveur pop3 de votre choix


Premièrement, je commence a ajouter une source dans mon /etc/apt/sources.list afin d'avoir un spamassassin à jour. J'y ajoute donc :

-->>
#Backport spamassassin
deb http://people.debian.org/~aurel32/BACKPORTS stable main
<<--

Au passage, vérifié que vous avez bien une ligne pour les mises a jour de sécurité :

deb http://security.debian.org/ stable/updates main

en suite, j'actualise l'index des packages :

apt-get update

enfin, j'install les programmes utiles :

apt-get install exim spamassin fetchmail

je peux lancer les services :


EXIM :


Maintenant, je vais configurer exim afin qu'il filtre les courriers, j'édite donc son fichier de conf ( /etc/exim/exim.conf )
Je précise, que j'avait déjà configuré exim lors de son installation pour le reste.

Au début de la section TRANSPORTS CONFIGURATION j'ajoute :
-->>
spamcheck:
driver = pipe

command = /usr/sbin/exim -oMr spam-scanned -bS
transport_filter = /usr/bin/spamc

bsmtp = all

home_directory = "/tmp"
current_directory = "/tmp"

# must use a privileged user to set $received_protocol on the way back in!
user = mail
group = mail

return_path_add = false

log_output = true
return_fail_output = true

prefix =
suffix =

<<--

Et au début de la section DIRECTORS CONFIGURATION

-->>

spamcheck_director:

# do not use this director when verifying a local-part at SMTP-time
no_verify

# When to scan a message :
# - it isn't already flagged as spam
# - it isn't already scanned
# - it didn't originate locally (as long as I don't harbor spammers :-))
condition = "${if and { {!def:h_X-Spam-Flag:} {!eq {$received_protocol}{spam-scanned}} {!eq {$received_protocol}{local}} } {1}{0}}"
driver = smartuser
transport = spamcheck

real_local:
prefix = real-
driver = localuser
transport = local_delivery

<<--

Voila, exim est configuré, je peux le relancer :

/etc/init.d/exim restart

et regarder les logs pour voir si il y a des problemes :

tail -f -n 30 /var/log/syslog

SPAMASSASSIN :

Maintenant, je doit regler un peu plus proprement spamassin, j'édite la configuration de spamassassin ( /etc/spamassassin/local.cf ).

Voici la mienne :

-->>

required_hits 3.5

rewrite_subject 1
subject_tag **** SPAM ****
ok_languages en fr
#si vous recevez des courriers "serieux" dans d'autres langues que le Français ou l'Anglais, viré cette ligne

score PENIS_ENLARGE 30
score HTML_IMAGE_ONLY_02 20
score MICROSOFT_EXECUTABLE 20
score FOR_FREE 30
score CLICK_BELOW 30

blacklist_from lettre_abonnes@club-internet.fr
#On peut ajouter d'autres adresses ou des domaines entiers

whitelist_from un_ami@ami.fr
#idem

<<--

Je peux lancer le daemon de spamassassin (spamd)
/etc/init.d/spamassin restart


FETCHMAIL :

La configuration de fetchmail. Il se trouve que la machine que j'utilise est "très" lente (300+ secondes pour filtrer un courrier). Je suis donc obligé d'utiliser quelques astuces afin d'éviter de la voir rammer durant des heures. Le daemon fetchmail me pose un probleme, il releve tres vite le courrier et comme je suis abonné a pas mal de mailing liste, je me retrouve avec 15 mails a se faire scanner par spammassassin en meme temps, ce qui est catastrophique pour les performances de la machine. A lieu d'utiliser le daemon fetchmail directement pour relever mon courrier, je me suis donc bricolé un petit script qui ne releve qu'un mail a la fois et attent pour le suivant :


myfetchmaild :
Ce script attend que le mail précédant soit filtré avant d'en prendre un nouveau
-->>

#!/bin/sh

FETCHMAIL=`which fetchmail`
CONFDIR=/etc/myfetchmaild

test -x $FETCHMAIL || exit 0

while [ -n "`pidof spamc`" ]; do sleep 1 ; done


while true
do
for conf in $CONFDIR/*
do echo $conf

$FETCHMAIL --silent --fetchmailrc $conf
sleep 1

while [ -n "`pidof spamc`" ]; do sleep 1 ; done

done
sleep 60
done

<<--

Je l'enregistre dans le dossier /usr/local/bin/ et je le rend executable :

chmod 755 /usr/local/bin/myfetchmaild

Maintenant, je doit ajouter les comptes que je veux relever dans le dossier /etc/myfetchmaild/

Attention, un fichier par compte.

voici un exemple de fichier : /etc/myfetchmaild/free
Ici, le courrier est dirigé dans la boite au lettre du l'utilisateur robert

-->>

set postmaster "robert"
set bouncemail
set no spambounce
set properties ""
poll pop.free.fr with proto POP3 timeout 100
user 'goneri' there with password 'leMotDePass' is 'Login' here options fetchlimit 1

<<--


J'ajoute autant de fichier que j'ai de compte, (solution souple). Attention les fichiers doivenvent avoir les droits "600" pour des questions de sécurité :

chmod 600 /etc/myfetchmaild/*




Maintenant, je peux lancer /usr/local/bin/myfetchmaild pour relever mon courrier


J'ai ajouté ce fichier dans /etc/ppp/ip-up.d/ afin que myfetchmaild soit lancé en tache de fond a chaque fois que je me déconnecte :


/etc/ppp/ip-up.d/myfetchmaild :


-->>
#!/bin/sh
#
# Default fetchmail ip-up script
# /etc/ppp/ip-up.d/fetchmail
# $Id: ip-up,v 1.5 2002/02/16 09:45:09 hmh Exp $
#

/usr/local/bin/myfetchmaild 2> /tmp/myfetchmail.erro > /tmp/myfetchmail&

<<--
Je j'ai rendu executable :
chmod 755 /etc/ppp/ip-up.d/myfetchmaild

Et pour que le script soit arrété lorsque je me déconnecte :


/etc/ppp/ip-down.d/myfetchmaild

Vous pouvez maintenant configurer votre client mail pour qu'il releve le courrier via le serveur pop3 de cette machine.


BILAN :

Bilan, ma machine est vraiment tres lente, je me prend des charges de 12 dans la gueule. Voici un extrait des mes logs :


Jul 12 18:28:17 alice spamd[3551]: clean message (-5.0/3.5) for mail:8 in 289.0 seconds, 3883 bytes.
Jul 12 18:38:10 alice spamd[3663]: identified spam (7.4/3.5) for mail:8 in 433.0 seconds, 2724 bytes.
Jul 12 18:38:30 alice spamd[3684]: identified spam (36.5/3.5) for mail:8 in 414.0 seconds, 2019 bytes.
Jul 12 18:49:03 alice spamd[3803]: clean message (-1.0/3.5) for mail:8 in 562.0 seconds, 3132 bytes.


Il faut faire attention a libérer le maximum de ram pour spamd.

Je me suis installé un kernel preempt en me disant que j'aurait la main plus facilement en cas de grosse charge. Je me demande si l'idée était bonne.


LIENS :
Un article sur Linux Nantes tres bien fait
http://www.linux-nantes.fr.eu.org/article.php3?id_article=148

Un site sur exim et spamassasin dont j'ai perdu le lien :/
>FILL ME<

Suivre le flux des commentaires

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