Lutter contre le spam avec postfix
Objectif
Faire en sorte de rejeter le spam "évident" avant qu'il n'arrive dans les boites aux lettre
Contexte de l'article
Celà fait maintenant plus d'un an que je constate l'efficacité des méthodes que je vais vous présenter. Observer le contenu d'un spam jusqu'à la source m'a permi de comprendre l'origine de 90% du spam.
La mise en place d'une greylist m'a aussi permi de relever les sources évidente de spam
Prérequis
Une installation Debian Stable.
Une installation de postfix opérationnel.
Detection du spam
Envois d'un mail normal
Pour envoyer un mail à un correspondant il existe 3 cas de figures :
- On travaille dans une société qui a son serveur de mails
- On est chez soi relié à internet par un fournisseur d'accès
- On est connecté à un webmail
Dans le premier cas, l'envois d'un mail de son poste client passe par le serveur de mail smtp.de-l-entreprise.com (le serveur de son entreprise).. puis le mail se retrouve sur les réseaux publique.
Dans le deuxième cas, l'envois d'un mail de son poste client passe par le serveur de mail du FAI smtp.fai.com
Il ne faut en AUCUN cas essayer de contacter d'autres serveurs SMTP sur la planette en direct, mais toujours passer par un serveur mendaté à envoyer des mails. (sur un serveur dédié, le serveur mandaté est soi-même..)
Dans le 3ème cas, ça revient à être connecté sur le serveur mandaté..
Un serveur de FAI a l'obligation de délivrer le courier.. il se débrouillent comme il veullent mais il doivent transmettre le courrier.
Dans tous les cas, les serveurs de mails sont mandatés pour envoyer du courier.
Comment les serveurs de mails mendatés (serveurs relais) savent quel serveur contacter
Chaque destinataire a une adresse mail du genre nom.prenom@domain.com.
Le nom de domaine domain.com correspond à une adresse IP résolue à l'aide d'un serveur de nom.
Ce serveur de nom en plus de l'ip correspondant à la machine domain.com contient un enregistrement MX (Mail eXchange) qui donne la machine qui est mandaté à recevoir les mails à destination de "n'importequelnom"@domain.com
Comportement d'un serveur mail face à une erreur
2 grands type d'erreur existent en SMTP.. les erreur 4xx : temporaires et 5xx : définitives.
Une erreur temporaire indique que le serveur est indisposé à délivrer le courier pour une erreur qui sera résolue dans le futur.. il faut retenter de réexpédier le courier au bout d'un certain temps.
Une erreur définitive indique que le serveur ne pourra jamais délivrer le courier : l'adresse de destination n'éxiste probablement pas.. ou il n'est pas mendaté pour délivrer le courier pour cette adresse.
Un serveur de mail normalement constitué (les serveurs de vos FAI et entreprises) retente au bout d'un certain temps.. Les spameurs ne tentent pas de réexpédier car ils n'écoutent pas les message d'erreur.. ils tirent à vue dans la masse sans regarder s'il y a encore quelqu'un a descendre..
Qu'est ce qu'une grey list
Une grey list est une "liste grise en français".. une liste de serveur qui ne sont pas banni, mais pas acceptés non plus
Nous avons vu tout à l'heure qu'un client est une machine qui se connecte à un serveur de mail
La grey list va regarder si le client est connu.. par défaut elle lui envois une erreur 4xx lui demandant de renvoyer le mails dans x minutes
Le spameur ne renvoit pas le mail.. le mail n'arrive jamais à déstination
Le serveur mendaté renvois le mail .. le mail est accepté et est relayé au destinataire
Au bout d'un certain nombre d'envois réussi, la grey list passe le serveur en white list .. pour gagner du temps : plus de retard de mails
Une grey list, c'est bien ça tri bloque le spam de manière très efficace.. je n'ai encore jamais eut de mails détruits.. mais.. vis à vis de quelqu'un qu'on a au téléphone .. on lui dit "envois moi un mail.. mais attention.. je ne le recevrai pas tout de suite.. faudra attendre au moins 15 minutes.. " là je passe pour un con..
Alors là on se dit HALTE AU FEU !! si on a un serveur qui est beaucoup solicité.. on va générer plein de trafic.. et bah non :).. la greylist plus y a de mails à traiter plus c'est efficace.. à cause du fait que les serveurs de mails qui sont connus sont auto-whitelistés... plus on traite de mails.. plus on whitelist de serveurs.. du coup au bout de pas très longtemps.. seuls les serveurs de mails bizaroïdes sont greylistés.. = impacts moindre
Pour installer une greylist.. howtoforge.com/greylisting_postfix_postgrey en attendant un article sur ce site.
Mais pourquoi tout ce baratin ?
Pendant le fonctionnement de la grey list, je regarde les logs pour vérifier qu'aucun mail légitime n'est détruit : travail de barjo
Parmi les éléments que j'ai pu relever :
- Toutes les tentatives qui échouent proviennent d'ip résidentielles (endroit où normalement il n'y a pas de serveur de mail)
- Toutes les tentatives qui échouent n'attendent pas les réponses du serveur pour retenter
- Toutes les tentatives qui échouent comportent des mails d'expéditeur forgés genre suxk4872@gmail.com.tw
- Certaines tentatives qui échouent comportent des destinataires qui ne sont pas mendatés par mon serveurs genre : fuck@yahoo.fr : tentative de relayage
Avant la mise en place de la greylist, j'ai concervé TOUT les spams dans un repertoires me demandant si un jour je n'arriverais pas à exploiter le contenu qu'il me donne : bingo.. j'obtiens les même résultats
Ma grey list est toujours en place.. mais n'intervient quasiment plus. Partant du principe qu'une connection en provenance d'une machine résidentielle : client sur l'ADSL .. est un client neuneu qui s'est fait pourrir la machine avec un virus qui s'amuse à envoyer des spams..
Pendant les vacances d'été.. à certaines heures.. le serveur rejetait des 100aines de mails en provenance d'inde et de chine.. = heure auxquel les gus allumaient leurs PC.
Remarque : Peu de mail proviennent de PC adsl français .. pourquoi ? pas que nos pc ne sont pas vérolés.. (surtout qu'on me raconte pas de conneries ou je me fâche..) mais que les FAI français en on assez de voir le fouilli dans leurs réseaux. (avec les rapports ABUSE que j'ai déjà écrit.. ils devaient être content). et ont bloqué leurs client à l'envoi unique vers le relais du FAI. ça ne doit déranger personne vu que.. normalement un utilisateur normal utilise le serveur relai du FAI.
Free laisse encore la possibilité d'ouvrir se port.. mais les utilisateurs qui l'ouvrent pour s'en servir savent que leurs mails sont souvent rejetés par les serveurs mendatés pour les raisons que j'ai évoqué au dessus.
Pour les utilisateurs de serveurs dédiés.. il existe un autre port le port de soumission 587, qui est réservé à la relation entre l'expéditeur et son relai.. le port 25 ne devrait pas être utilisé pour ça. Ce port n'est pas fermé ouf :)
Comment rejeter les mails de SPAM ?
En bloquant les clients ADSL : 90 du SPAM en moins.
Dans main.cf :
# restriction client pour virer les pc zombies
smtpd_client_restrictions = hash:/etc/postfix/access_client
Comment ça marche.. le fichier contient une liste de classe d'IP qui font parti des réseaux résidentiel
Pour plus de sureté, vous pouvez supprimer toute les IP qui font partie du réseau "unknown" c'est un filtrage assez bourin qui peut poser problème chez vous
une fois le fichier en place..
postmap /etc/postfix/access_client
Ainsi qu'à chaque modification..
Le système en place, il faut inspecter régulièrement ces logs afin de vérifier qu'il n'y a pas destruction massive de mails légitimes suite à l'apparition d'un serveur mendaté dans une classe d'IP banni.. (j'ai un gros doute là dedans)
grep RESIDENTIAL /var/log/mail.log | tail -50
Autre méthode en place sur le serveur
Une astuce efficace contre les mails sauvages "undisclosed recipient" et autre "destinataires inconus"
Ce genre de mails partent d'un bon sentiment mais étant donné que cette méthode est surtout utilisée par des SPAMMEUR pour empêcher à un utilisateur (comme moi qui a une bonne 10aine d'adresses virtuelles) de savoir par quelle adresse il est passé.
J'ai donc décidé de réagir en obligeant mes contacts à passer par des mails un peu plus personnels
Le fichier header_checks sera à inclure dans le fichier de config main.cf de postfix :
header_checks = regexp:/etc/postfix/header_checks
/^To: .*destinataires inconnus:/ REJECT Votre mail ne respecte par les règles de transparence et sera détruit sans distribution
/^To: .*undisclosed-recipients:/ REJECT Votre mail ne respecte par les règles de transparence et sera détruit sans distribution
Une source d'inspiration
http://fr.wikipedia.org/wiki/Machine_zombie
Aucun commentaire - VOUS NE POUVEZ PAS POSTER DE COMMENTAIRES = votre IP n'est pas valide (spam ?)
.: Dernière mise à jour le 22/10/2008




Uptime :