D'humeur joyeuse, j'ai décidé de faire quelques analyses sur la quantité de spam reçu sur l'un des serveurs de messagerie que j'administre.

Voici le top 8 des raison de rejet sur plus de 113 000 messages considérés comme spam :

Top mail rejection reasons by message count
-------------------------------------------
  Messages   Mail rejection reason
     61119   Rejected RCPT: Unrouteable address
     30085   Spamassassin, score > 5
     13099   SMTP protocol synchronization error
      5653   Rejected RCPT: Sender verify failed
      1615   Rejected RCPT: Spoofed EHLO/HELO
       715   Connection refused
       446   Rejected HELO/EHLO: syntactically invalid argument
       417   Rejected RCPT: Too many bad recipients, now wait!

La première cause est assez facile à expliquer puisqu'elle résulte des robots spammeurs et leurs attaques par dictionnaire.

Le deuxième meilleur filtre reste le vénérable Spamassassin qui est configuré pour rejeter les messages lorsque le score dépasse les 5 points. Auparavant, le seuil était plus haut, autour de 8, mais au fur et à mesure, les spammeurs se sont adaptés et essayent désormais d'avoir un score le plus bas possible, si on analyse la distribution des scores, on obtient la figure suivante. Elle représente en ordonnée le nombre de messages qui ont été rejetés pour un score donné.

[[!img static/spamassassin-score.png ]]

Dommage que je n'ai plus accès aux logs d'il y a quelques années, je suis sûr qu'on aurait observé un glissement vers la droite de la courbe.

Les autres filtres sont beaucoup moins efficaces, en partie car ils ne sont matchés que lorsque le client a un comportement non légal avec les RFC :

  1. Problème de synchronisation : les clients sont censés attendre la bannière EHLO avant de se présenter eux-mêmes. Les robots spammeurs n'ont pas cette politesse et envoient tout le plus vite possible.

  2. Sender verify : c'est ce qu'on appelle un callout, à la réception d'un mail, vérifier que l'expéditeur pourrait bien recevoir une réponse (en gros, c'est vérifier que l'adresse existe bien).

  3. Usurpations d'identité dans les présentations, le client se fait passer pour nous.

  4. Trop de connexions simultanées depuis le même client

  5. Syntaxe invalide des clients

  6. Le client a généré trop d'erreurs de destinations (bruteforce)