On Thu, 19 Jul 2001, Yann Forget wrote:

> Marc, comment filtres-tu le spam ?

Principes généraux de l'anti-spam sur ALPHANET, cf
   http://www-internal.alphanet.ch/anti-spam.html

Sinon, petite description techniques:

   1. infrastructure de courrier électronique:

      MTA:
         sendmail 8.11.x
      MDA:
         procmail
      MUA:
         pine

      autres:      
         nf-popd
            lecture par POP, mot de passe différents de ceux du système
            daemon très simple audité en 1994
         UUCP
         FTN/ifmail
         BSMTP-Exchange
            Courrier électronique sous forme de batches SMTP compressés
            échangés pour un domaine complet.

       trucs moches:
          le système de mail consiste en fait de deux daemons sendmail,
          un 8.11.x pour SMTP, un 8.9.x pour le trafic `interne'. Cela
          pour des raisons historiques qui n'ont plus lieu d'être.
          Ni d'ailleurs vulcan, machine qui date de 1995 et qui pourrait
          être avantageusement remplacée.

   2. système anti-spam

      0. les tests de base d'anti-relaying: seuls les domaines gérés
         par mon système de mails peuvent être utilisés comme To:,
         sinon le mail est rejeté, sauf pour les adresses internes qui
         utiliseraient SMTP (dans mon cas il n'y a que quelques personnes
         accédant par modem et PPP le système), et bien sûr UUCP/BSMTP/FTN
         et les clients locaux qui font ce qu'ils veulent.

      1. premier niveau: le mail n'est *pas* transféré.
         Le refus est basé sur l'adresse IP d'émission, via un système
         basé sur un DNS que l'on a légérement abusé, mais bon il
         adore ça ce vicieux.

            DUL
               Les listes d'adresses en dialup
            RBL/et les autres
               Listes d'adresses de spammers connus ou de relais ouverts.

         cf http://www.mail-abuse.org

         Exemple:

         Jul 18 00:20:42 vulcan sendmail[22668]: f6HMKa122668:
         ruleset=check_relay,arg1=emelgur.com.ec, arg2=200.41.3.82,
         relay=emelgur.com.ec [200.41.3.82], reject=553
         5.3.0 Rejected 200.41.3.82 see http://mail-abuse.org

         Environ 400 mails par jour sont refusés sur ALPHANET par ce
         biais.

         Supporté par les règles standards de sendmail et de plein
         d'autres MTAs.

      2. deuxième niveau: les adresses d'enveloppe (MAIL FROM: SMTP)
         manifestement invalides (non résolvables) sont rejetées.

         Environ une vingtaine par jour, dont probablement 95% de
         personnes avec des systèmes de mail mal configurés (genre
         deux serveurs DNS dont un qui ne sait pas qu'il est secondaire).

      3. troisième niveau: une fois le mail TRANSFERE par le système de
         mail, le mail, sauf s'il correspond à des critères déterminés,
         est passé à travers une moulinette de regexp Perl, via
         l'interface libmilter de sendmail. Chaque mail prend environ
         10 secondes pour être contrôlé, en moyenne.

         Les mails sont rejetés avec l'erreur distincte:

            SPAM REJECTED

         *puis stockés quand même dans un fichier sur le serveur*. Ce
         fichier est consulté par mes soins assez régulièrement, pour
         détecter des erreurs manifestes des filtres.

         Environ une centaine par jour sont rejetés par ce système, qui
         a environ 2-3 erreurs par jour, en général en rafale, p.ex.
         dû à une phrase clé citée dans une mailing-list p.ex.

      4. quatrième niveau: une fois le mail reçu par l'utilisateur final,
         si celui-ci est un spam, l'utilisateur peut envoyer le message
         et tous les headers à [EMAIL PROTECTED], qui va tout
         d'abord passer le message à un filtre procmail/junkfilter.
         Les messages qui activent junkfilter sont les premiers à être
         manuellement consultés pour amélioration des règles de filtrage.
         
Donc c'est un système assez complexe qui me prend environ 10 minutes par
jour pour le peaufiner. Mais bon, auparavant je recevais environ 10
à 20 spams dans ma boîte-aux-lettres personne par jour, maintenant plutôt
2-3.

Il manque encore pour que je sois content:

   - un système de lecture rapide des spams (p.ex. par interface WWW)
     permettant de grouper les mails par similitudes et faire des group
     kills ou group unkills.

   - et pourquoi pas licencier le gars qui lit la mailbox d'announce-spam
     (moi) et remplacer par un réseau de neuronnes, hein :)

Mauvaise nouvelle: d'ici la fin du mois le service MAPS sera désactivé (le
premier niveau ci-dessus), cf les URLs précédemments indiqués et: 

   http://www-internal.alphanet.ch/cgi-bin/ticket-system/ttview?view=20010716-1

A mon avis cela ne va pas augmenter le nombre de spams reçus (à cause du
niveau 3) mais cela va augmenter la charge de vulcan et le boulot de tri
des spams / messages non spams (false hits).


--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.

Répondre à