Dans ce domaine j'ai recours à un ensemble de mesures pour éviter le spam, et non à un seul et unique outils.
L'architecture.
Le serveur de mail n'est jamais exposé directement sur internet. J'utilise toujours un relai placé entre internet et le (ou les) serveurs de mails. Le relai est dans une zone (dmz) différente de celle où se trouve les serveurs de messagerie. Dans les grosses infrastructures le relai entrant est différent du relai sortant.
Le trafic smtp possible est strictement contrôlé. Il est bien sûr interdit vers internet à toutes la machines autres que celle impliquées dans le routage du courrier.
La plateforme du relai.
J'utilise la distribution Clear OS (ex ClarkConnect) pour son Postfix avec effectivement spamassassin. Je n'utilise pas Qmail parce que je connais Postfix et je n'utilise pas Sendmail à cause de son architecture monolithique peu sûre.
La lutte contre le spam
Je modifie manuellement les fichiers fichiers utilisée par Posfix et en particulier main.cf. Avant même que spamassassin soit utilisé j'applique de nombreuses règles de filtrage depuis Postfix.
Seul les utilisateurs enregistrés dans l'annuaire de la messagerie sont autorisé à recevoir des mails, tout le reste est rejeté (postfix/recipients).
Le reverse dns est vérifié systématiquement, comme la présence d'un mx correct pour le domaine expéditeur.
La commande Helo est obligatoire, les serveurs qui l'ignorent sont rejetés.
Les nom d'hôtes inexistant dans dns (pour le domaine) ou non qualifiés sont rejetés ceci pour les commandes Connect, Helo et From.
Une liste de serveurs blacklistés sur la commande connect est maintenue dans le fichier access_client. On peut indiquer le domaine source, le nom de la machine ou encore son ip. Ne pas confondre cette information avec le contenu du champ "From". Toujours sur ce critère, une seconde liste mais basée sur des expressions régulières fait le même travail. Nous avons de nombreux spammeurs professionnels (ils appellent cela du marketing) qui font tourner les domaines en espérant tromper les filtres trop simples. Voici cette liste.
- Code : Tout sélectionner
/sbc[0-9][0-9]\.com/ REJECT Client-sbc
/sbc[0-9][0-9]\.net/ REJECT Client-sbc
/sbr[0-9][0-9]\.com/ REJECT Client-sbr
/sbr[0-9][0-9]\.net/ REJECT Client-sbr
/sbn[0-9][0-9]\.com/ REJECT Client-sbn
/ymlp[0-9][0-9]\.com/ REJECT Client-ymplp
/ymlp[0-9]\.com/ REJECT Client-ymplp
/onm[0-9][0-9]\.com/ REJECT Client-onm
/oanm[0-9][0-9]\.com/ REJECT client-oanm
/oxi[0-9][0-9]\.com/ REJECT Client-oxi
/routage-[0-9][0-9]\.com/ REJECT Client-routage
/emstechnology[0-9]\.net/ REJECT Client-emstechnology
/ems[0-9]\.net/ REJECT Client-ems
/gce-mailer-[0-9][0-9]\.com/ REJECT Client-gce
/smailer-475-[0-9]\.com/ REJECT Client-esmailer
/smailer-475-[0-9][0-9]\.com>/ REJECT Client-esmailer
/url.emm[0-9][0-9]\.net/ REJECT Client-enm
/aart[0-9][0-9]\.net/ REJECT Client-aart
/node-host[0-9][0-9]\.smtp\.com/ REJECT Client-node-host
/mail20[0-9][0-9]\.net/ REJECT Client-mail20
/edt[0-9][0-9]\.net/ REJECT Client-edt
/market[0-9][0-9]\.info/ REJECT Client-marketxx
Une fois que l'on filtre ce petit monde on dégage une grosse partie des spammeurs pro.
J'effectue ensuite un filtrage sur le contenu des entêtes (fichier header_check). Je regarde les champs From, Subject, To, CopyTo. J'y utilise des expressions régulières comme par exemple :
- Code : Tout sélectionner
/^Subject: .*Viagra|viagra|Cialis|cialis|pills|Cialix|Xanax|via en ligne|Pfizer/ REJECT HeaderRule89
Après le reject je place une référence pour traiter facilement les faux positif et déterminer la règle qui bloque à tort.
Je réalise aussi des tests (body_check) sur le corps du mail en y recherchant notamment les signatures des outils du type Sarbacane et autres ou encore des phrases assez classiques :
- Code : Tout sélectionner
/.*Your e-mail will be blocked.*/ REJECT body content66
/.*Your order: Sony VAIO.*/ REJECT body content67
/.*booksalon.kr.*/ REJECT body content68
/.*Wholesale on erection.*/ REJECT body content69
Ensuite seulement Spamassassin traite le message. le but est de le solliciter au minimum. Selon la cotation (X_Spam_Score) le mail est rejeté, placé en quarantaine ou tagué spam. Si il est tagué, il est distribué mais dans le courrier indésirable de l'utilisateur.
Il m'arrive aussi de bloquer une tempête de spam, notamment les tentatives de relayage intensif, au niveau du firewall.