Migration dspam/sqlite vers dspam/mysql

Tags: , ,
4 Comments »

L’année dernière, je mettais en place dspam, sur mon serveur dédié. Naïf, je me disais que pour gerer mes propres mails, le backend sqlite serait amplement suffisant, et finalement tout ce petit monde a parfaitement fonctionné pendant quelques mois. Et puis la database a grossi, grossi, grossi au point d’etre lente à crever et provoquer ce type de réaction :

pid 71865 (dspam), uid 0: exited on signal 6 (core dumped)
pid 72017 (dspam), uid 0: exited on signal 6 (core dumped)
pid 72289 (dspam), uid 0: exited on signal 6 (core dumped)

Après que 2 attaques massives de spams aient écroulé la machine, je me suis enfin décidé à changer de backend… et la différence est simplement indescriptible.

L’opération s’est avérée plus simple que je ne l’imaginais. Tout d’abord, il est nécessaire de re-installer le port dspam en y ajoutant le support MySQL à l’aide de la commane make config

Un make deinstall reinstall plus loin, le binaire supporte les deux backends (sqlite et MySQL), et avant d’apporter les modifications à la configuration de dspam, nous nous assurons de créer une database dspam et de peupler cette dernière avec les commandes SQL fournies dans le package dspam :

$ mysql -u dspam -p dspam < /usr/local/share/examples/dspam/mysql/mysql_objects-4.1.sql

Nous pouvons alors modifier le fichier dspam.conf :

StorageDriver /usr/local/lib/libmysql_drv.so
# [...]
MySQLServer     /path/vers/mysql.sock
MySQLUser               dspam
MySQLPass               mangeducacaspammer
MySQLDb                 dspam
MySQLConnectionCache    10
MySQLUIDInSignature    on

Et redémarrer le serveur :

# /usr/local/etc/rc.d/dspam restart

Reste à nourrir notre nouvelle database à l’aide de deux corpus spam et ham d’environ 1000 mails chacun (voir le post de l’année dernière).

Pour finir, j’ajoute un cron-job qui nettoie la base de données tous les soirs, à l’aide d’un jeu de commandes SQL fourni par le package dspam :

30 01 * * * /usr/local/bin/mysql -u dspam --password=mangeducacaspammer dspam < /usr/local/share/examples/dspam/mysql/purge-4.1.sql

Et mon gentil dédié ne souffre plus.

Notez par ailleurs que devant une telle recrudescence, j'avais fini par réinstaller l'excellent milter-greylist du sieur Emmanuel Dreyfus, et que le résultat est sans appel: si certains MTAs tolèrent mal les codes 4xx et ne renvoient le mail que plusieurs heures plus tard, mon ratio de spams, lui, est passé de 800 / jour en moyenne à 30 / jour en moyenne. Le choix est vite fait...

you must unLEaaarn what ou have leaaarned

Tags: , ,
2 Comments »

alors voila, pardon. Y’a -fiou- 2 ans, je bavais comme un vilain sur dspam, et là, là, eh bah je m’incline. In-cro-yable efficacité, je lui ai fait bouffer un millier de hams, un millier de spams, et pouf, le vla-t-y pas qu’il me catche un bon 96% de saloperies. Alors attention, c’est sur mon kimloli, c’est du perso, c’est pas mutualisé pour deux sous. Mais intégration à sendmail les doigts dans le nez (+ procmail):

define(`LOCAL_MAILER_PATH', `/usr/local/bin/dspam')
define(`LOCAL_MAILER_ARGS', `dspam -t -Y -a $h "--deliver=innocent" --user $u -d %u')

Fonctionne nickel balle avec mon nouvel amour, lighttpd. GUI web tout ce qu’il y a de plus sobre et efficace.
Dla bonne.
Le plus pénible a été de lui faire avaler les quelques milliers de mails préalablement nettoyés du markup spamass :

$ formail -s spamassassin -d < spam_corpus > cleaned.spam.inbox
$ formail -s spamassassin -d < ham_corpus > cleaned.ham.inbox

puis

$ formail -s dspam --client --user mes users --class=spam --source=corpus --mode=teft < cleaned.spam.inbox
$ formail -s dspam --client --user mes users --class=innocent --source=corpus --mode=teft < cleaned.ham.inbox

Avec de chaques cotés, des mbox tronquées à grands coups de tail, wc, grep -n et autes bc.

On n'oublie pas d'ajouter le user qui possède le serveur www comme Trusted User :

Trust www

et…

…on fait un gros doigt à nos amis spammeurs.

WP Theme & Icons based on GlossyBlue by N.Design Studio
Banner from www.trynthlas.com
Entries RSS Comments RSS Log in