Introduction
Le spam devient une technique de plus en plus sauvage et de plus en plus répandue sur le Web. Si vous possédez votre propre serveur de mail, en l'occurrence ici Postfix, vous êtes plus vulnérable à la réception de ces derniers.
L'équipe et moi même en avons fait l'expérience. Jusqu’à la mise en place du système que nous allons vous proposé, nous recevions environ 200 spams/jour. En effet cela devenait infernal et il a fallut faire quelque chose.
Le principe de base
Le principe en lui même est très simple. Dans un premier temps, afin de nous prémunir des fausses adresses, nous allons demander à Postfix de vérifier la compatibilité entre l'adresse du serveur d'envois et son nom de domaine. En effet Postfix va utiliser la résolution de nom afin d'identifier le nom de domaine du serveur d'envois et si ce dernier n'existe pas, ou est mal configuré, la connexion du serveur d'envoie sera refusée. Cela réduit déjà considérablement le nombre de spam (de l'ordre de 20%)
Dans un deuxième temps nous allons mettre en place un système de BLACKLISTE (ou liste noire). Cette liste va nous permettre de mettre les noms de domaine, les ip ainsi que les noms des serveurs d'envois afin de refuser leurs connexions. En effet, une majorité des serveurs de spammeur sont bien configurés, donc dans ces cas là notre premier temps ne fonctionne pas.
La mise en place
Ouvrez le fichier main.cf de Postfix, et recherchez la ligne
Smtpd_client_restrictions =
(si cette dernière n'existe pas nous allons la rajouter). Nous allons rajouté à cette ligne notre premier temps qui ce caractérise par la fonction reject_unknown_client
Votre ligne doit maintenant ressemblée à cela:
smtpd_client_restrictions =permit_mynetworks, reject_unknown_client
Nous allons maintenant mettre en place notre système de Blackliste.
Tout d'abord nous allons créer le fichier qui va contenir les adresses blacklistées. Nous allons le nommer deny et le mettre dans le répertoire de Postfix. (nous vous proposons gratuitement le notre ici). La syntaxe est très simple. Pour chaque ligne nous ajoutons l'adresse a refusé suivi de 503(qui renvois l'erreur a l'émetteur) puis d'un commentaire genre NO SPAM. Ainsi la ligne ressemble à cela:
exemple.com 503 NO SPAM
Le nombre de ligne est illimité. Maintenant exécutez la commande suivante:
postmap /etc/postfix/deny afin de créer la base de donnée pouvant être lu par postfix (Attention cette commande doit être exécutée à chaque ajout de ligne dans le fichier).
Maintenant nous allons dire à postfix d'utiliser cette base de donnée. Pour cela nous allons rajouter à notre précédente ligne la commande:
hash:/etc/postfix/deny
Ainsi notre ligne dans le fichier de configuration de postfix doit ressemblé à cela:
smtpd_client_restrictions =permit_mynetworks,reject_unknown_client,hash:/etc/postfix/deny
Redémarrez postfix grâce à la commande /etc/init.d/postfix reload afin que vos modifications soient prise en compte.
Votre système de Blackliste est maintenant opérationnel.
Inconvénients et solutions
Tout ceci est bien beau, pratiquement plus aucun spam reçu mais problème je ne reçoit plus de mails venants de certains sites valides.
En effet certain site ont leur serveur de mail mal configuré ou autre. Notre méthode, malheureusement les bloque.
Pas de panic, nous allons contourner cela. En effet nous allons créer une liste BLANCHE afin d'autoriser ces derniers.
Pour cela, de la même manière que pour notre liste noire, nous allons créer un fichier nommé access à la racine de postfix. Pour chaque site ou serveur autorisé nous allons mettre une ligne de type:
exemple.com OK
Maintenant exécutez la commande suivante:
postmap /etc/postfix/access afin de créer la base de donnée pouvant être lu par postfix (Attention cette commande doit être exécutée a chaque ajout de ligne dans le fichier).
Ensuite nous allons dire à postfix d'utiliser cette base de donnée. Pour cela nous allons rajouter à notre précédente ligne la commande:
hash:/etc/postfix/access
Ainsi notre ligne dans le fichier de configuration de postfix doit ressemblé à cela:
smtpd_client_restrictions =permit_mynetworks,reject_unknown_client,hash:/etc/postfix/deny,
hash:/etc/postfix/access
Redémarrer postfix
Conclusion
Nous avons donc installé un système de Blacklistage afin de bloquer les spams en entrée de postfix. Cette méthode n'est pas infaillible, quelques spams passent toujours et certains vrais serveurs de mails sont bloqués. Contrôlez régulièrement les connexions à postfix en regardant le fichier log dans /var/log/mail.info.
Il existe des associations sur internet permettant de signaler les spams afin de faire réagir leurs hébergeurs et créer des Blackliste encore plus importante. Nous vous conseillons d'aller vous inscrire sur ce site.