Postfix Configuration · 6 min read · Sep 22, 2025

Renforcement de Postfix pour ISPConfig 3

Renforcement de Postfix pour ISPConfig 3

Auteur : Jesús Córdoba
Email : j.cordoba [at] gmx [dot] net
Utilisateur du forum : pititis

Version : 1.2

L’objectif de ce tutoriel est de renforcer le serveur de messagerie postfix utilisé par ISPConfig pour les serveurs de messagerie Internet où les utilisateurs authentifiés sont de confiance. Avec cette configuration, vous rejetterez une grande quantité de spam avant qu’il ne passe dans votre file d’attente de messagerie, économisant ainsi beaucoup de ressources système et rendant votre serveur de messagerie résistant aux spammeurs et aux botnets de spam. Allons-y.

DNS inversé, (enregistrement DNS PTR)

Pour configurer le rdns, vous rencontrerez deux situations :

  • Votre FAI vous permet de le changer vous-même. Jetez un œil dans votre panneau de contrôle.

  • Votre FAI ne vous permet pas de le changer. Envoyez simplement un email avec votre demande.

Demandez ou pointez votre enregistrement rdns vers votre serveur. c’est-à-dire

server.example.com

Vous pouvez vérifier votre rdns avec la commande host :

root@server / #  host 149.20.4.69
  69.64-27.4.20.149.in-addr.arpa nom de domaine pointeur pub2.kernel.org.

N’oubliez pas que le dns doit propager les changements.

SPF pour votre domaine (enregistrement DNS TXT)

SPF est un système de validation des emails conçu pour prévenir le spam par email en détectant le spoofing d’email, une vulnérabilité courante, en vérifiant les adresses IP des expéditeurs.

Pour configurer spf, vous devrez ajouter un enregistrement TXT à votre zone dns, mais d’abord vous pouvez générer votre enregistrement ici : http://www.mailradar.com/spf/

Copiez le résultat spf, puis allez dans ISPConfig -> dns -> zones -> cliquez sur votre nom de domaine -> cliquez sur l’onglet enregistrements -> et cliquez sur TXT

Nom d’hôte -> example.com. (avec un point à la fin !)

Texte -> Collez ici le résultat spf (sans “ “).

Exemple : v=spf1 a mx ptr ip4:11.222.333.444 -all …et cliquez sur Enregistrer.

N’oubliez pas que le dns doit propager les changements.

Postfix main.cf

Ajoutons/modifions quelque chose dans /etc/postfix/main.cf

Restrictions Helo :

smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname

Restrictions Helo en action :

Jan 12 01:57:08 server postfix/smtpd[4687]: NOQUEUE: reject: RCPT from unknown[186.43.77.153]: 450 4.7.1 Client host rejected: cannot find your hostname, [186.43.77.153]; from=
 to= proto=ESMTP helo=<[186.43.77.153]>
Jan  8 00:32:22 server postfix/smtpd[17504]: NOQUEUE: reject: RCPT from 201-93-87-2.dial-up.telesp.net.br[201.93.87.2]: 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=

RFC strict :

strict_rfc821_envelopes = yes

Restrictions clients :

smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, check_client_access mysql:/etc/postfix/mysql-virtual_client.cf

Restrictions destinataires :

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unknown_recipient_domain

Restrictions de données :

smtpd_data_restrictions = reject_unauth_pipelining

Délai Smtpd :

smtpd_delay_reject = yes

N’oubliez pas de recharger postfix :

/etc/init.d/postfix reload

Vérification SPF pour Postfix (Debian et Ubuntu)

Installez le paquet spf :

apt-get install postfix-policyd-spf-python

ou

apt-get install postfix-policyd-spf-perl

Ajoutez ceci à /etc/postfix/main.cf :

policy-spf_time_limit = 3600s

et ajoutez check_policy_service unix:private/policy-spf à la fin de smtpd_recipient_restrictions :

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, reject_unknown_recipient_domain, check_policy_service unix:private/policy-spf

Maintenant, éditez master.cf et ajoutez à la fin ceci (pour la version python) :

policy-spf  unix  -       n       n       -       -       spawn
     user=nobody argv=/usr/bin/policyd-spf 

ou ceci pour la version perl :

policy-spf  unix  -       n       n       -       -       spawn
     user=nobody argv=/usr/sbin/postfix-policyd-spf-perl

…rechargez postfix.

/etc/init.d/postfix reload

Vérification spf en action :

Jan  4 15:50:11 server postfix/smtpd[19096]: NOQUEUE: reject: RCPT from g230068165.adsl.alicedsl.de[92.230.68.165]: 550 5.7.1 <[email protected]>: Recipient address rejected: Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.org/Why?s=helo;id=paxxxxxn.com;ip=92.230.68.165;[email protected]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=

Greylist

Le greylisting est une méthode de défense des utilisateurs de messagerie contre le spam. Un agent de transfert de courrier (MTA) utilisant le greylisting va “rejeter temporairement” tout email d’un expéditeur qu’il ne reconnaît pas. Si le mail est légitime, le serveur d’origine va, après un délai, réessayer et, si un temps suffisant s’est écoulé, l’email sera accepté.

Installation de postgrey (Debian, Ubuntu) :

apt-get install postgrey

Les options de configuration se trouvent dans /etc/default/postgrey (le délai par défaut est de 5 min).

Éditez main.cf et ajoutez check_policy_service inet:127.0.0.1:10023 à la fin de smtpd_recipient_restrictions :

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, reject_unknown_recipient_domain, check_policy_service unix:private/policy-spf,check_policy_service inet:127.0.0.1:10023

…rechargez postfix :

/etc/init.d/postfix reload

Greylist en action :

Jan 10 17:38:57 server postfix/smtpd[21302]: NOQUEUE: reject: RCPT from mailout-de.gmx.net[213.165.64.22]: 451 4.7.1 <[email protected]>: Recipient address rejected: Greylisting in effect, please come back later; from=<[email protected]> to=<[email protected]> proto=SMTP helo=

DNSBL (Liste noire/bloqueuse basée sur DNS)

Une DNSBL est une liste d’adresses IP publiées via le service de noms de domaine Internet (DNS) soit sous forme de fichier de zone pouvant être utilisé par un logiciel de serveur DNS, soit comme une zone DNS en direct pouvant être interrogée en temps réel. Les DNSBL sont le plus souvent utilisées pour publier les adresses d’ordinateurs ou de réseaux liés au spam ; la plupart des logiciels de serveur de messagerie peuvent être configurés pour rejeter ou signaler les messages qui ont été envoyés depuis un site répertorié sur une ou plusieurs de ces listes. Cela peut inclure la liste des adresses d’ordinateurs zombies ou d’autres machines utilisées pour envoyer du spam, la liste des adresses des FAI qui hébergent volontairement des spammeurs, ou la liste des adresses qui ont envoyé du spam à un système honeypot. Pour utiliser dnsbl avec postix, nous utilisons reject_rbl_client. Il suffit d’ajouter quelques zones DNS en direct pour les requêtes dans le fichier main.cf.

Dans mon exemple, j’utiliserai deux listes avec une très bonne réputation (ajoutées à la fin de smtpd_client_restrictions) :

smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, check_client_access mysql:/etc/postfix/mysql-virtual_client.cf,  reject_rbl_client cbl.abuseat.org,  reject_rbl_client b.barracudacentral.org

rbl en action :

Jan 12 01:52:42 server postfix/smtpd[4616]: NOQUEUE: reject: RCPT from 89.pool85-49-26.dynamic.orange.es[85.49.26.89]: 554 5.7.1 Service unavailable; Client host [85.49.26.89] blocked using cbl.abuseat.org; Blocked - see http://cbl.abuseat.org/lookup.cgi?ip=85.49.26.89; from=<[email protected]> to=<[email protected]> proto=SMTP helo=
Jan 11 20:13:58 server postfix/smtpd[29591]: NOQUEUE: reject: RCPT from 93-87-122-56.dynamic.isp.telekom.rs[93.87.122.56]: 554 5.7.1 Service unavailable; Client host [93.87.122.56] blocked using b.barracudacentral.org; http://www.barracudanetworks.com/reputation/?pr=1&ip=93.87.122.56; from=
<[email protected]> to=<[email protected]> proto=ESMTP helo=

Postscreen

Remarque : Cette fonctionnalité est disponible dans Postfix 2.8 et supérieur

Le démon postscreen de Postfix fournit une protection supplémentaire contre la surcharge du serveur de messagerie. Un processus postscreen gère plusieurs connexions SMTP entrantes et décide quels clients peuvent communiquer avec un processus de serveur SMTP Postfix. En éloignant les spambots, postscreen laisse plus de processus de serveur SMTP disponibles pour les clients légitimes et retarde l’apparition de conditions de surcharge du serveur.

Le principal défi pour postscreen est de prendre une décision is-it-a-zombie basée sur une seule mesure. Cela est nécessaire car de nombreux zombies essaient de passer inaperçus et d’éviter de spammer le même site à plusieurs reprises. Une fois que postscreen décide qu’un client n’est pas un zombie, il met temporairement le client sur liste blanche pour éviter d’autres retards pour le courrier légitime.

Nous utiliserons pour ce tutoriel les paramètres par défaut avec une exception. Ces paramètres conviennent à la plupart des situations.

Tout d’abord, nous ajoutons une ligne à main.cf avec la commande :

postscreen_greet_action = enforce

Deuxièmement, nous ajoutons postscreen et quelques nouveaux services à master.cf Remarque : Ces paramètres peuvent déjà exister, il suffit de décommenter. Assurez-vous également que la ligne “smtp inet … smtpd”, y compris tout paramètre, est commentée (le cas échéant, les paramètres doivent être déplacés vers le nouveau service smtpd).

# Fichier de configuration du processus maître de Postfix.  Pour des détails sur le format
# du fichier, voir la page de manuel master(5) (commande : "man 5 master").
#
# N'oubliez pas d'exécuter "postfix reload" après avoir modifié ce fichier.
#
# ========================================================================== 
# type de service  privé non privilégié  chroot  réveil  maxproc commande + args
#               (oui)   (oui)   (oui)   (jamais) (100)
# ========================================================================== 
#smtp      inet  n       -       -       -       -       smtpd
#          -o ...
smtpd     pass  -       -       n       -       -       smtpd
     -o ... # Paramètres déplacés du service smtp vers le nouveau service smtpd.(le cas échéant)
smtp      inet  n       -       n       -       1       postscreen
tlsproxy  unix  -       -       n       -       0       tlsproxy
dnsblog   unix  -       -       n       -       0       dnsblog

Maintenant, nous rechargeons postfix :

/etc/init.d/postfix reload
Share: X/Twitter LinkedIn

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

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