« LINUX:Postfix-Configuration des serveurs de messagerie latérale » : différence entre les versions
Aucun résumé des modifications Balise : Révocation manuelle |
Aucun résumé des modifications |
||
| (6 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 6 : | Ligne 6 : | ||
Cet article traite de la configuration des autres serveurs de messagerie Postfix qui vont envoyer leurs messages au serveur central. Dans le schéma, c'est ma machine B (ou C et suivantes) qui est concernée. | Cet article traite de la configuration des autres serveurs de messagerie Postfix qui vont envoyer leurs messages au serveur central. Dans le schéma, c'est ma machine B (ou C et suivantes) qui est concernée. | ||
Rappelons que le but est de transférer les messages de gestion locaux | Rappelons que le but est de transférer les messages de gestion locaux vers la machine maître (A). Il n'a pas pour objectif d'envoyer des messages vers un autre prestataire d'Internet ni entre utilisateurs de notre famille ou entreprise. | ||
On n'accepte que les messages de la machine; donc le serveur SMTP n'est pas actif (port 25). | On n'accepte que les messages de la machine; donc le serveur SMTP n'est pas actif (port 25). | ||
| Ligne 18 : | Ligne 17 : | ||
Leur configuration est fort similaire à celle du maître. | Leur configuration est fort similaire à celle du maître. | ||
Si vous n'avez pas de serveur DNS local, il faut déclarer les serveurs locaux dans le fichier "/etc/hosts". | |||
Par exemple: | |||
---- | |||
192.168.1.100 server1.home.dom mail.home.dom home.dom | |||
192.168.1.110 server2.externe.dom | |||
---- | |||
| Ligne 23 : | Ligne 30 : | ||
Après nettoyage du fichier "/etc/postfix/main.cf", on garde la partie suivante: | Après nettoyage du fichier "/etc/postfix/main.cf", on garde la partie suivante: | ||
---- | ---- | ||
compatibility_level = 3. | compatibility_level = 3.9 | ||
queue_directory = /var/spool/postfix | queue_directory = /var/spool/postfix | ||
command_directory = /usr/ | command_directory = /usr/bin | ||
daemon_directory = /usr/libexec/postfix | daemon_directory = /usr/libexec/postfix | ||
data_directory = /var/lib/postfix | data_directory = /var/lib/postfix | ||
mail_owner = postfix | mail_owner = postfix | ||
unknown_local_recipient_reject_code = 550 | unknown_local_recipient_reject_code = 550 | ||
debugger_command = | debugger_command = | ||
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin | |||
ddd $daemon_directory/$process_name $process_id & sleep 5 | |||
sendmail_path = /usr/sbin/sendmail.postfix | sendmail_path = /usr/sbin/sendmail.postfix | ||
newaliases_path = /usr/bin/newaliases.postfix | newaliases_path = /usr/bin/newaliases.postfix | ||
mailq_path = /usr/bin/mailq.postfix | mailq_path = /usr/bin/mailq.postfix | ||
setgid_group = postdrop | setgid_group = postdrop | ||
html_directory = no | #html_directory = no | ||
meta_directory = /etc/postfix | meta_directory = /etc/postfix | ||
shlib_directory = /usr/lib64/postfix | shlib_directory = /usr/lib64/postfix | ||
mail_spool_directory = /var/spool/mail | |||
#sample_directory = /usr/share/doc/postfix/samples | |||
#manpage_directory = /usr/share/man | #manpage_directory = /usr/share/man | ||
#readme_directory = /usr/share/doc/postfix/README_FILES | #readme_directory = /usr/share/doc/postfix/README_FILES | ||
debug_peer_level = 2 | |||
'''alias_maps = hash:/etc/aliases''' | |||
'''alias_database = hash:/etc/aliases''' | |||
---- | ---- | ||
Les lignes suivante sont modifiées ou ajoutées | Les lignes suivante sont modifiées ou ajoutées. | ||
---- | ---- | ||
inet_protocols = ipv4 | inet_protocols = ipv4 | ||
mynetworks = 127.0.0.1 192.168.1.110 | |||
inet_interfaces = all | |||
| |||
home_mailbox = Maildir/ | |||
| |||
smtpd_tls_cert_file = /etc/pki/externe/certs/mail.externe.chaine.pem | |||
smtpd_tls_key_file = /etc/pki/externe/private/externe.key | |||
---- | ---- | ||
Explications: | Explications: | ||
* inet_interfaces : permet d'accepter les messages venant de tous les interfaces réseaux | * inet_interfaces : permet d'accepter les messages venant de tous les interfaces réseaux (ici: 192.168.1.110). | ||
* | * mynetworks : accepte les connexions de la machine locale et de l'interface local. | ||
* inet_protocols : est aussi optionnel. Elle permet de se limiter à IPV4. | * inet_protocols : est aussi optionnel. Elle permet de se limiter à IPV4. | ||
* home_mailbox : définit que les messages non délivrés sur la machine centrale, seront dans l'espace disque le l'utilisateur destinataire. Normalement, tous les messages devraient se retrouver sur le serveur central, donc les boîtes locales devraient rester vides. | |||
* les deux dernières définissent les clé et certificat pour l'accès SSL. | |||
=Configuration du fichier "master.cf"= | =Configuration du fichier "master.cf"= | ||
Après un léger nettoyage, nous | Après un léger nettoyage, nous gardons le contenu suivant: | ||
---- | ---- | ||
# ========================================================================== | # ========================================================================== | ||
| Ligne 81 : | Ligne 83 : | ||
# (yes) (yes) (no) (never) (100) | # (yes) (yes) (no) (never) (100) | ||
# ========================================================================== | # ========================================================================== | ||
pickup unix n - n 60 1 pickup | pickup unix n - n 60 1 pickup | ||
cleanup unix n - n - 0 cleanup | cleanup unix n - n - 0 cleanup | ||
| Ligne 94 : | Ligne 95 : | ||
proxymap unix - - n - - proxymap | proxymap unix - - n - - proxymap | ||
proxywrite unix - - n - 1 proxymap | proxywrite unix - - n - 1 proxymap | ||
smtp unix - - n - - smtp. | |||
#relay unix - - n - - smtp | |||
# -o syslog_name=postfix/$service_name | |||
showq unix n - n - - showq | showq unix n - n - - showq | ||
error unix - - n - - error | error unix - - n - - error | ||
| Ligne 104 : | Ligne 103 : | ||
discard unix - - n - - discard | discard unix - - n - - discard | ||
local unix - n n - - local | local unix - n n - - local | ||
#virtual unix - n n - - virtual | |||
lmtp unix - - n - - lmtp | lmtp unix - - n - - lmtp | ||
anvil unix - - n - 1 anvil | anvil unix - - n - 1 anvil | ||
| Ligne 110 : | Ligne 109 : | ||
postlog unix-dgram n - n - 1 postlogd | postlog unix-dgram n - n - 1 postlogd | ||
---- | ---- | ||
On désactive les services "relay" et "virtual", non nécessaires. | |||
Car nous n'utiliserons pas de serveur intermédiaire pour envoyer le message. | |||
Et nous n'hébergeons pas de domaines virtuels, seul le domaine correspondant au nom de la machine est actif. | |||
Par contre, on ajoute les deux services suivants: | |||
---- | ---- | ||
# SMTPD - port 25 - STARTTLS - NOLOGIN | |||
smtp inet n - n - - smtpd | |||
# cryptage | |||
-o smtpd_tls_security_level=may | |||
-o smtpd_tls_wrappermode=no | |||
-o smtpd_tls_auth_only=no | |||
-o smtpd_tls_loglevel=2 | |||
# SMTP - port 25 - STARTTLS | |||
smtp unix - - n - - smtp | smtp unix - - n - - smtp | ||
# cryptage | |||
-o smtp_tls_security_level=may | |||
-o smtp_tls_wrappermode=no | |||
-o smtp_tls_loglevel=2 | |||
---- | ---- | ||
* Le premier: le service d'écoute SMTPD sur le port 25 de type STARTTLS pour la réception des mails venant sur l'interface réseau. Il propose une réception en claire ou cryptée SSL/TLS de préférence. Il n'y a pas d'authentification. | |||
* La seconde: le service d'envoi de mails via le port 25 de type STARTTLS. Si le serveur distant accepte un envoi crypté SSL/TLS, il est préféré sinon il sera en clair. | |||
Les options "smtpd_tls_loglevel=2" et "smtp_tls_loglevel=2" permet de suivre cet échange SSL/TLS dans le fichier journal "/var/log/maillog". | |||
La commande: | |||
netstat -ntpl | grep master | |||
donne: | |||
---- | ---- | ||
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2450741/master | |||
---- | ---- | ||
Un message sera destiné à une adresse mail résidant sur la même machine déclarée dans le fichier "/etc/hosts". | |||
| Ligne 194 : | Ligne 153 : | ||
De même dans le Firewall "iptables", il faut ouvrir en sortie le port "smtp" (25) vers la machine maître A. | De même dans le Firewall "iptables", il faut ouvrir en sortie le port "smtp" (25) vers la machine maître A et en entrée sur le port "smtp" (25) de la machine locale. | ||
Ceci se fait dans le fichier "/etc/sysconfig/iptables": | Ceci se fait dans le fichier "/etc/sysconfig/iptables": | ||
-A OUTPUT -p tcp -m tcp --dport 25 -d 192.168.1.100 -j ACCEPT | -A OUTPUT -p tcp -m tcp --dport 25 -d 192.168.1.100 -j ACCEPT | ||
Mais souvent, la configuration en sortie est ouverte à tout et donc | -A INPUT -p tcp -m tcp --sport 25 -s 192.168.1.110 -m conntrack --ctstate NEW -j ACCEPT | ||
Mais souvent, la configuration en sortie est ouverte à tout et donc la première ligne est inutile. | |||
=Configuration du fichier "aliases"= | =Configuration du fichier "aliases"= | ||
Le but final c'est de transférer tout message à la machine A à l'utilisateur " | Le but final c'est de transférer tout message à la machine A à l'utilisateur "pdupont" créé précédemment via son adresse mail "pdupont@home.dom". | ||
On ajoute une ligne au fichier "/etc/aliases" qui va assurer ce transfert: | On ajoute une ligne au fichier "/etc/aliases" qui va assurer ce transfert: | ||
---- | ---- | ||
root: | root: pdupont@home.dom | ||
---- | ---- | ||
Dans ce cas, tous les messages arrivants ou redirigés vers l'utilisateur "root" seront redirigés vers l'utilisateur " | Dans ce cas, tous les messages arrivants ou redirigés vers l'utilisateur "root" seront redirigés vers l'utilisateur "pdupont" se trouvant sur la machine A. Faites de même pour tout autre utilisateur concerné par la réception de messages. | ||
On aurait pu mettre à la place: | On aurait pu mettre à la place: | ||
---- | ---- | ||
root: root@ | root: root@home.dom | ||
---- | ---- | ||
Le transfert se serait fait en deux étapes mais le résultat aurait été identique. | Le transfert se serait fait en deux étapes mais le résultat aurait été identique. | ||
| Ligne 231 : | Ligne 191 : | ||
. | . | ||
On vérifie que le message est bien arrivé dans le répertoire "/home/ | On vérifie que le message est bien arrivé dans le répertoire "/home/pdupont/Maildir/new" de la machine A "mail.home.dom". | ||
Version du 30 octobre 2025 à 18:10
→ Postfix et Dovecot-Configuration de gestion
But
Cet article traite de la configuration des autres serveurs de messagerie Postfix qui vont envoyer leurs messages au serveur central. Dans le schéma, c'est ma machine B (ou C et suivantes) qui est concernée.
Rappelons que le but est de transférer les messages de gestion locaux vers la machine maître (A). Il n'a pas pour objectif d'envoyer des messages vers un autre prestataire d'Internet ni entre utilisateurs de notre famille ou entreprise. On n'accepte que les messages de la machine; donc le serveur SMTP n'est pas actif (port 25).
Fichiers de configuration
Comme vu précédemment, les fichiers de configuration de Postfix se trouvent dans le répertoire "/etc/postfix". Nous n'utiliserons que des trois fichiers strictement nécessaires:
- main.cf : contenant les paramètres généraux de Postfix
- master.cf : contenant la liste des programmes intervenant dans le fonctionnement de Postfix
Le fichier "/etc/aliases" qui intervient dans "main.cf", sera traité en fin d'article.
Leur configuration est fort similaire à celle du maître.
Si vous n'avez pas de serveur DNS local, il faut déclarer les serveurs locaux dans le fichier "/etc/hosts".
Par exemple:
192.168.1.100 server1.home.dom mail.home.dom home.dom 192.168.1.110 server2.externe.dom
Configuration du fichier "main.cf"
Après nettoyage du fichier "/etc/postfix/main.cf", on garde la partie suivante:
compatibility_level = 3.9
queue_directory = /var/spool/postfix
command_directory = /usr/bin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
unknown_local_recipient_reject_code = 550
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
#html_directory = no
meta_directory = /etc/postfix
shlib_directory = /usr/lib64/postfix
mail_spool_directory = /var/spool/mail
#sample_directory = /usr/share/doc/postfix/samples
#manpage_directory = /usr/share/man
#readme_directory = /usr/share/doc/postfix/README_FILES
debug_peer_level = 2
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
Les lignes suivante sont modifiées ou ajoutées.
inet_protocols = ipv4 mynetworks = 127.0.0.1 192.168.1.110 inet_interfaces = all home_mailbox = Maildir/ smtpd_tls_cert_file = /etc/pki/externe/certs/mail.externe.chaine.pem smtpd_tls_key_file = /etc/pki/externe/private/externe.key
Explications:
- inet_interfaces : permet d'accepter les messages venant de tous les interfaces réseaux (ici: 192.168.1.110).
- mynetworks : accepte les connexions de la machine locale et de l'interface local.
- inet_protocols : est aussi optionnel. Elle permet de se limiter à IPV4.
- home_mailbox : définit que les messages non délivrés sur la machine centrale, seront dans l'espace disque le l'utilisateur destinataire. Normalement, tous les messages devraient se retrouver sur le serveur central, donc les boîtes locales devraient rester vides.
- les deux dernières définissent les clé et certificat pour l'accès SSL.
Configuration du fichier "master.cf"
Après un léger nettoyage, nous gardons le contenu suivant:
# ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (no) (never) (100) # ========================================================================== pickup unix n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr unix n - n 300 1 qmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce trace unix - - n - 0 bounce verify unix - - n - 1 verify flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - n - - smtp. #relay unix - - n - - smtp # -o syslog_name=postfix/$service_name showq unix n - n - - showq error unix - - n - - error retry unix - - n - - error discard unix - - n - - discard local unix - n n - - local #virtual unix - n n - - virtual lmtp unix - - n - - lmtp anvil unix - - n - 1 anvil scache unix - - n - 1 scache postlog unix-dgram n - n - 1 postlogd
On désactive les services "relay" et "virtual", non nécessaires. Car nous n'utiliserons pas de serveur intermédiaire pour envoyer le message. Et nous n'hébergeons pas de domaines virtuels, seul le domaine correspondant au nom de la machine est actif.
Par contre, on ajoute les deux services suivants:
# SMTPD - port 25 - STARTTLS - NOLOGIN smtp inet n - n - - smtpd # cryptage -o smtpd_tls_security_level=may -o smtpd_tls_wrappermode=no -o smtpd_tls_auth_only=no -o smtpd_tls_loglevel=2 # SMTP - port 25 - STARTTLS smtp unix - - n - - smtp # cryptage -o smtp_tls_security_level=may -o smtp_tls_wrappermode=no -o smtp_tls_loglevel=2
- Le premier: le service d'écoute SMTPD sur le port 25 de type STARTTLS pour la réception des mails venant sur l'interface réseau. Il propose une réception en claire ou cryptée SSL/TLS de préférence. Il n'y a pas d'authentification.
- La seconde: le service d'envoi de mails via le port 25 de type STARTTLS. Si le serveur distant accepte un envoi crypté SSL/TLS, il est préféré sinon il sera en clair.
Les options "smtpd_tls_loglevel=2" et "smtp_tls_loglevel=2" permet de suivre cet échange SSL/TLS dans le fichier journal "/var/log/maillog".
La commande:
netstat -ntpl | grep master
donne:
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2450741/master
Un message sera destiné à une adresse mail résidant sur la même machine déclarée dans le fichier "/etc/hosts".
Remarques
Comme vu lors de la présentation de Postfix, dès que la configuration est terminée, il faut activer Postfix si ce n'est pas fait:
systemctl enable postfix
et relancer le service:
systemctl restart postfix
De même dans le Firewall "iptables", il faut ouvrir en sortie le port "smtp" (25) vers la machine maître A et en entrée sur le port "smtp" (25) de la machine locale.
Ceci se fait dans le fichier "/etc/sysconfig/iptables":
-A OUTPUT -p tcp -m tcp --dport 25 -d 192.168.1.100 -j ACCEPT -A INPUT -p tcp -m tcp --sport 25 -s 192.168.1.110 -m conntrack --ctstate NEW -j ACCEPT
Mais souvent, la configuration en sortie est ouverte à tout et donc la première ligne est inutile.
Configuration du fichier "aliases"
Le but final c'est de transférer tout message à la machine A à l'utilisateur "pdupont" créé précédemment via son adresse mail "pdupont@home.dom".
On ajoute une ligne au fichier "/etc/aliases" qui va assurer ce transfert:
root: pdupont@home.dom
Dans ce cas, tous les messages arrivants ou redirigés vers l'utilisateur "root" seront redirigés vers l'utilisateur "pdupont" se trouvant sur la machine A. Faites de même pour tout autre utilisateur concerné par la réception de messages.
On aurait pu mettre à la place:
root: root@home.dom
Le transfert se serait fait en deux étapes mais le résultat aurait été identique.
Il faut activer cette modification en "compilant" ce fichier par la commande:
newaliases
ou plus simplement en redémarrant le service Postfix:
systemctl restart postfix
Vérification
A titre de vérification, nous envoyons un message à l'utilisateur "root" en ligne de commande sur cette machine secondaire que nous venons de configurer:
mail root
Interactivement on nous demande de remplir le sujet:
Essai
et ensuite le corps du message clôturé par une ligne ne comportant qu'un point:
Essai de message distant .
On vérifie que le message est bien arrivé dans le répertoire "/home/pdupont/Maildir/new" de la machine A "mail.home.dom".
→ Postfix et Dovecot-Configuration de gestion