28 Nov, 2007
Lutte contre le spam avec Postfix
Posted by: [Pierrot²] In: Internet Culture|Technology
Bonjour, je n’ai pas posté depuis un petit moment sur ce blog, l’explication tiens en 1 mot : SPAM. En effet depuis plus d’une semaine nous subissons une nouvelle vague de mass-mailing ayant un impact sur les quelques 4000 domaines routés via notre plate-forme.
Il a donc fallu sortir les grands moyens. Afin d’allèger le nombre de mails traités par Spamassassin j’ai travaillé sur mes serveurs de relay smtp frontaux et j’ai trouvé une conf pour postfix qui m’a permis de réduire de 80% le nombre de SPAM ! Comme je ne suis pas le seul à avoir ce genre de problèmes, je partage avec vous ma conf actuelle sans trop détailler, le manuel de postfix (très bon livre de chevet) contient toutes les explications sur les directives utilisés dans ce billet.
Dans le fichier main.cf :
Restrictions sur la commande EHLO :
smtpd_helo_required = yes
smtpd_helo_restrictions= permit_mynetworks,
reject_non_fqdn_hostname,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
permit
Ici on jette les mails envoyé par des machines ne se présentant pas avec un nom d’hôte FQDN (Fully Qualified Domain Name) valide. On bloque aussi l’injestion de commandes SMTP avant la réponse de mon serveur.
Restrictions sur la commande MAIL FROM:
smtpd_sender_restrictions = reject_non_fqdn_sender,
check_sender_access hash:/etc/postfix/sender_access,
reject_unknown_sender_domain,
permit
On jette : les domaines d’expédition qui n’existent pas (qxqmsxqlx.com) et les domaines mal formattés (@mondomaine)
Le fichier /etc/postfix/sender_access me sert de blacklist pour un certains de nombre de domaines d’expédition souvent source de mailing/spamming :
groupephoenix.fr REJECT
manageo.fr REJECT
controlglobalnews.com REJECT
onlyoneink.emv1.net REJECT
xmr3.com REJECT
chocolatsplus.com REJECT
emv1.com REJECT
Restrictions sur la commande RCPT TO:
smtpd_recipient_restrictions = reject_non_fqdn_recipient,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client list.dsbl.org,
reject_rhsbl_sender dsn.fc-ignorant.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client bl.spamcop.net,
check_policy_service inet:127.0.0.1:60000,
reject_unauth_destination,
permit
Parmi les blacklist que j’utilise je vous recommande fortement zen.spamhaus.org, c’est celle ci qui bloque la majeure partie des mails et notamment ceux qui proviennent de machines infectés derrière des adsl de particuliers.
La ligne check_policy_service inet:127.0.0.1:60000 permet de Greylister les demandes entrantes grâce au démon postgrey. Les mail sont ainsi mis en attente en attendant une seconde tentative d’envoi. Les spammeurs ne ré-essayent presque jamais, ceci permet donc de filtrer une grande partie des messages non-sollicités. Je recommande fortement de mettre en place le greylisting quelque soit le MTA que vous utilisez, ce mode de fonctionnement est un standard et n’est pas exclusif à postfix.
Restrictions sur la commande DATA :
smtpd_data_restrictions = reject_unauth_pipelining,
reject_multi_recipient_bounce,
permit
Et voila pour Postfix, une fois que tous ces filtres sont passés, le mail est envoyé au serveur de courrier du domaine de destination et analysé par un anti-spam classique type Spamassassin. Les performance de se dernier peuvent aussi être fortement améliorés mais cela fera l’objet d’un autre billet !











