Postfix sur CentOS : ancien déploiement et sécurité en 2026
Date de publication:
Mise à jour :
Articles > Postfix sur CentOS : ancien déploiement et sécurité en 2026
Statut 2026 et utilisation sûre
Conclusion : Un transport de courrier en production n'est pas terminé lorsque Postfix démarre simplement. Il nécessite une version de système d'exploitation et Postfix prise en charge, une identité DNS correcte, une politique de relais restreinte, une soumission authentifiée, un TLS moderne, un renouvellement de certificat, des contrôles contre les abus, une journalisation, une surveillance des files d'attente et une délivrabilité testée.
Ce que vous apprendrez
- Ce que la procédure pas à pas originale de CentOS 7/Postfix 2.10.1 a configuré.
- Pourquoi l'authentification de soumission ne doit pas créer accidentellement un relais ouvert.
- Quelles décisions TLS, SASL, DNS, pare-feu et opérations doivent être repensées pour un déploiement actuel.
À qui s'adresse-t-il : Les administrateurs évaluant un runbook Postfix hérité, et non les débutants recherchant un serveur de messagerie public copier-coller.
Position 2026 : CentOS 7 et les versions de packages répertoriées sont obsolètes. L'ancienne configuration ci-dessous n'a pas été validée en tant que service de messagerie actuel sécurisé et ne doit pas être déployée telle quelle ; en particulier, vérifiez que les restrictions de soumission se terminent par une politique de rejet explicite, protégez les informations d'identification et utilisez le service systemd packagé plutôt que d'inventer une unité non révisée.
Note de sécurité : les commandes et exemples de configuration de l'article d'origine n'ont pas été rejoués dans un environnement de production actuel. Avant toute application, vérifiez les versions prises en charge, les sauvegardes, les contrôles d'accès et la procédure de retour arrière dans un environnement de test isolé.
Sources primaires officielles
Vue d’ensemble
Il s'agit de la procédure de configuration initiale requise pour installer Postfix sur CentOS et le démarrer. Les informations sont basées sur l'hypothèse que CentOS7 est utilisé. Nous aimerions mettre cela en place dans le port de soumission.
Si vous installez également Dovecot, voir aussi.
Postfix sert à envoyer le courrier et Dovecot à le recevoir. Si vous devez traiter l'envoi de courriers électroniques, installez Postfix, et si vous souhaitez également recevoir des courriers électroniques, installez Dovecot.
Les versions sont les suivantes.
| Version de CentOS | 7.6 (1810) |
|---|---|
| Version de Postfix | 2.10.1 |
Table des matières
1. installer
Cette section décrit la configuration de Postfix, de l'installation au démarrage.
1-1. Installation de Postfix
Effectuez l'installation de Postfix au moyen de la commande yum. Effectuez le travail en tant qu'utilisateur root.
[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postfix
1-2. contrôle du bootstrap
Pour vérifier qu'il a été installé avec succès, vérifiez le démarrage.
[root@hostname ~]# /usr/sbin/postfix start
[root@hostname ~]# ps aux | grep postfix
root 1485 0.7 0.2 89744 2128 ? Ss 16:02 0:00 /usr/libexec/postfix/master -w
postfix 1486 0.2 0.4 89848 4080 ? S 16:02 0:00 pickup -l -t unix -u
postfix 1487 0.2 0.4 89916 4104 ? S 16:02 0:00 qmgr -l -t unix -u
root 1489 0.0 0.1 112824 964 pts/0 S+ 16:02 0:00 grep --color=auto postfix
Tout processus s'exécutant en tant qu'utilisateur de postfix comme décrit ci-dessus est OK. Stop.
[root@hostname ~]# /usr/sbin/postfix stop
2. Détails de la configuration
2-1. initialisation
Configuration initiale de Postfix. Fondamentalement, la configuration de Postfix est décrite dans "/etc/postfix/main.cf", nous allons donc modifier main.cf.
[root@hostname ~]# vi /etc/postfix/main.cf
Modifier comme suit.
#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
~abrégé~
#
#mydomain = domain.tld
~abrégé~
#myorigin = $myhostname
#myorigin = $mydomain
~abrégé~
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost
~abrégé~
mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
~abrégé~
#mynetworks = 168.100.189.0/24, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~abrégé~
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/
#
myhostname = example.com
#myhostname = virtual.domain.tld
~abrégé~
#
mydomain = example.com
~abrégé~
#myorigin = $myhostname
myorigin = $mydomain
~abrégé~
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
~abrégé~
#mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
~abrégé~
mynetworks = 127.0.0.0/8, 192.168.100.0/24
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~abrégé~
#
#home_mailbox = Mailbox
home_mailbox = Maildir/
myhostname", "mydomain" et "myorigin" Il s'agit de paramètres liés au domaine. La partie qui est modifiée en 'exemple.com' doit être définie comme le nom de domaine du serveur. La partie "exemple.com" de "https://example.com/" est le nom de domaine.
L'adresse électronique est username@example.com.
mynetworks" est un paramètre lié au réseau. Il s'agit d'une adresse IP qui peut être connectée à postfix. Si le serveur de messagerie est lié à un autre serveur, modifiez cette valeur en conséquence.
'home_mailbox' est le répertoire de messagerie. Sauvegarder l'email envoyé.
2-2. Utilisateur OS ou rejet si non défini dans $alias_maps
Configurer les paramètres pour l'envoi d'emails avec l'utilisateur du système d'exploitation et les utilisateurs listés dans $alias_maps. Un utilisateur OS est un utilisateur ajouté avec useradd.
[root@hostname ~]# vi /etc/postfix/main.cf
Modifier comme suit.
#local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =
local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =
Ajoutez ce qui suit à la fin du fichier main.cf.
### MAIL SIZE (20 Moctets.)
message_size_limit = 20971520
### TLS
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/localhost.crt
smtpd_tls_key_file = /etc/pki/tls/private/localhost.key
Les fichiers 'smtpd_tls_cert_file' et 'smtpd_tls_key_file' doivent être définis en fonction de l'environnement. Définissez le chemin où le certificat du serveur est stocké.
Les paramètres SSL sont requis à l'avance, donc si vous n'avez pas configuré les paramètres SSL, veuillez effectuer les paramètres SSL d'abord. Veuillez vous référer à ce qui suit.
Installer Apache HTTP Server en toute sécurité sur CentOS
2-3. Paramètres du port de soumission de Postfix
Configurez les paramètres pour l'envoi d'e-mails en utilisant le port de soumission.
[root@hostname ~]# vi /etc/postfix/master.cf
Remarque : Notez que le fichier à modifier est 'master.cf' et non 'main.cf', les noms des fichiers sont donc similaires.
Modifier comme suit.
#submission inet n - n - - smtpd
~abrégé~
#-o smtpd_sasl_auth_enable=yes
~abrégé~
#-o smtpd_client_restrictions=$mua_helo_restrictions
~abrégé~
#-o smtpd_sender_restrictions=$mua_sender_restrictions
~abrégé~
#-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
submission inet n - n - - smtpd
~abrégé~
-o smtpd_sasl_auth_enable=yes
~abrégé~
-o smtpd_client_restrictions=permit_sasl_authenticated
~abrégé~
-o smtpd_sender_restriction=permit_sasl_authenticated
~abrégé~
-o smtpd_recipient_restrictions=permit_sasl_authenticated
Installez les bibliothèques nécessaires à l'authentification SASL avec yum.
[root@hostname ~]# yum -y install cyrus-sasl
[root@hostname ~]# yum -y install cyrus-sasl-plain
[root@hostname ~]# yum -y install cyrus-sasl-md5
[root@hostname ~]# yum -y install cyrus-sasl-devel
Modifiez saslauthd pour utiliser les comptes UNIX pour l'authentification.
[root@hostname ~]# vi /etc/sysconfig/saslauthd
Modifier comme suit.
#MECH=pam
MECH=shadow
2-4. Activation de SASL
Activez SASL.
[root@hostname ~]# systemctl enable saslauthd
[root@hostname ~]# systemctl is-enabled saslauthd
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep saslauthd
saslauthd.service enabled
[root@hostname ~]# systemctl daemon-reload
2-5. contrôle du bootstrap
Vérifiez que Postfix démarre.
[root@hostname ~]# /usr/sbin/postfix start
[root@hostname ~]# ps aux | grep postfix
root 1838 0.0 0.1 89744 2080 ? Ss 18:14 0:00 /usr/libexec/postfix/master -w
postfix 1839 0.0 0.3 89848 3988 ? S 18:14 0:00 pickup -l -t unix -u
postfix 1840 0.0 0.3 89916 4008 ? S 18:14 0:00 qmgr -l -t unix -u
root 1845 0.0 0.0 112824 968 pts/0 S+ 18:15 0:00 grep --color=auto postfix
Si un processus s'exécute en tant qu'utilisateur de postfix comme décrit ci-dessus, la configuration a été effectuée avec succès et le processus est en cours d'exécution. Une fois le démarrage confirmé, il est temps de s'arrêter.
[root@hostname ~]# /usr/sbin/postfix stop
2-6. Réglage du démarrage automatique
Enfin, bien que cela ne soit pas obligatoire, il est difficile de démarrer Postfix à chaque redémarrage du serveur. Il faut donc définir un paramètre pour que Postfix démarre automatiquement au démarrage du serveur. Il s'inscrit également à la commande systemctl. Veuillez noter que cette procédure est pour CentOS7, donc si vous utilisez autre chose que CentOS7, vous devrez utiliser la commande Service pour gérer cela.
Vérifiez si '/usr/lib/systemd/system/postfix.service' existe. S'il n'y en a pas, créez un 'postfix.service' en utilisant la procédure suivante. Exécuter en tant qu'utilisateur root.
[root@hostname ~]# touch /etc/systemd/system/postfix.service
[root@hostname ~]# vi /etc/systemd/system/postfix.service
Les informations suivantes sont fournies.
[Unit]
#Description.
Description=Postfix
#Contrôle avant et après l'exécution.
#Before=xxx.service
After=syslog.target network.target
[Service]
#Désignation des utilisateurs et des groupes
User=root
Group=root
#Une fois activé, mettez le statut sur Activé.
Type=oneshot
RemainAfterExit=yes
#Démarrer, arrêter et recharger.
ExecStart=/usr/sbin/postfix start
ExecStop=/usr/sbin/postfix stop
ExecReload=/usr/sbin/postfix reload
[Install]
#Paramètres équivalents à Runlevel 3.
WantedBy=multi-user.target
Ensuite, enregistrez-vous avec la commande systemctl.
[root@hostname ~]# systemctl enable postfix
[root@hostname ~]# systemctl is-enabled postfix
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postfix
postfix.service enabled
[root@hostname ~]# systemctl daemon-reload
3. résumé
Nous avons décrit la configuration initiale requise lors de l'installation de Postfix.
Il a été assez difficile à mettre en place, donc si vous construisez Postfix, veuillez vous référer à ceci.