Serveur de messagerie · 3 min read · Oct 23, 2025

Contrôle du Spam pour Postfix

Contrôle du Spam pour Postfix

Le spam est un problème majeur pour quiconque possède un serveur de messagerie. Souvent, le spam est envoyé à des adresses e-mail qui n’existent pas. Mais, il touche toujours votre serveur même s’il n’est pas livré. D’autres fois, la boîte de réception d’un utilisateur déborde de messages ennuyeux concernant le Viagra, des prostituées, des logiciels gratuits, et tout le reste.

Voici une solution. C’est une accumulation continue de mes efforts pour stopper le spam du mieux que je peux. Jusqu’à présent, cela a un taux de réussite de 97 % avec plus de 20 000 e-mails (spam et ham, alike) traités.

Suivez les instructions. Je mettrai à jour/modifierai si nécessaire si les choses semblent floues. N’hésitez pas à demander.

1) Installer Postgrey, RRD, un analyseur de journaux et des outils de graphisme.

apt-get install postgrey rrdtool mailgraph pflogsumm

Postgrey aura un délai de 5 minutes par défaut sur les e-mails allant à votre boîte aux lettres. Si cela est trop long, éditez le fichier /etc/default/postgrey en ajoutant –delay=120 où 120 est en secondes.

2) Redémarrer le serveur Postgrey.

  /etc/init.d/postgrey restart

3) Éditer le main.cf de Postfix.

Nous allons ajouter plusieurs choses, y compris la configuration de Postgrey.

# Voir /usr/share/postfix/main.cf.dist pour une version commentée, plus complète


# Spécifique à Debian : Spécifier un nom de fichier fera que la première
# ligne de ce fichier sera utilisée comme nom. Le défaut Debian
# est /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# ajouter .domain est le travail du MUA.
append_dot_mydomain = no

# Décommentez la ligne suivante pour générer des avertissements de "mail retardé"
#delay_warning_time = 4h

readme_directory = /usr/share/doc/postfix

# Paramètres TLS
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# Voir /usr/share/doc/postfix/TLS_README.gz dans le paquet postfix-doc pour
# des informations sur l'activation de SSL dans le client smtp.

myhostname = my.derekgordon.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = my.derekgordon.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::1]/128 66.118.142.78
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
html_directory = /usr/share/doc/postfix/html
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /var/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000, reject_rbl_client zen.spamhaus.org, reject_rbl_client smtp.dnsbl.sorbs.net, reject_rbl_client bl.spamcop.net, reject_rbl_client combined.rbl.msrbl.net, reject_rbl_client multihop.dsbl.org, check_recipient_access regexp:/etc/postfix/spamtrap, permit
smtpd_tls_security_level = may
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
relay_domains = mysql:/etc/postfix/mysql-virtual_relaydomains.cf
relay_recipient_maps = mysql:/etc/postfix/mysql-virtual_relayrecipientmaps.cf
virtual_create_maildirsize = yes
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "L'utilisateur que vous essayez d'atteindre est en dépassement de quota."
virtual_overquota_bounce = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf
smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
maildrop_destination_concurrency_limit = 1
maildrop_destination_recipient_limit = 1
virtual_transport = maildrop
header_checks = regexp:/etc/postfix/header_checks
mime_header_checks = regexp:/etc/postfix/mime_header_checks
nested_header_checks = regexp:/etc/postfix/nested_header_checks
body_checks = regexp:/etc/postfix/body_checks
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
message_size_limit = 0

disable_vrfy_command = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, permit

À partir d’un main.cf générique trouvé dans l’installation de Debian Lenny, j’ai ajouté/modifié les zones en GRAS.

4) Créer un fichier nommé “spamtrap” dans le répertoire /etc/postfix/.

Cela sert de filtre. Si du spam est envoyé à cette adresse et à d’autres adresses sur votre machine, il supprimera cet e-mail afin qu’il n’atteigne aucune autre boîte aux lettres.

Le fichier spamtrap ressemble à ceci :

/emailcontrol.*@derekgordon\.com/ DISCARD

Ceci est une regexp donc les barres obliques doivent être utilisées. Mon e-mail de filtre est [email protected] donc éditez en conséquence et placez-le dans le fichier spamtrap !!!

Remarque : Ne créez pas cette boîte aux lettres en utilisant ISPConfig. Il n’y a absolument aucune raison pour qu’elle existe sur votre serveur de messagerie. C’est une adresse fictive destinée à attraper le spam ennuyeux.

5) Ouvrir local.cf pour SpamAssassin et ajouter le bit suivant.

Ce sera un filtre supplémentaire conçu pour fonctionner avec SA plus qu’avec Postfix en général.

nano /etc/spamassassin/local.cf

Ajoutez ce qui suit en bas :

urirhssub       URIBL_BLACK  multi.uribl.com.        A   2
body            URIBL_BLACK  eval:check_uridnsbl('URIBL_BLACK')
describe        URIBL_BLACK  Contient une URL listée dans la liste noire URIBL
tflags          URIBL_BLACK  net
score           URIBL_BLACK  3.0
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.