« LINUX:Postfix-Configuration des serveurs de messagerie latérale » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(16 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 sur 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.  
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).
De même comme nous travaillons en interne, en vase clos et pas soucis de simplification, nous n'utiliserons pas de cryptage.




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.6
  compatibility_level = 3.9
  queue_directory = /var/spool/postfix
  queue_directory = /var/spool/postfix
  command_directory = /usr/sbin
  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
mydestination = $myhostname, localhost.$mydomain, localhost
  unknown_local_recipient_reject_code = 550
  unknown_local_recipient_reject_code = 550
'''alias_maps = hash:/etc/aliases'''
'''alias_database = hash:/etc/aliases'''
debug_peer_level = 2
  debugger_command =
  debugger_command =
          PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
        PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
          ddd $daemon_directory/$process_name $process_id & sleep 5
        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
 
Les lignes suivantes peuvent être désactivées car inutiles ou non nécessaires car liées au cryptage.
----
  #manpage_directory = /usr/share/man
  #manpage_directory = /usr/share/man
#sample_directory = /usr/share/doc/postfix/samples
  #readme_directory = /usr/share/doc/postfix/README_FILES
  #readme_directory = /usr/share/doc/postfix/README_FILES
  #smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
  debug_peer_level = 2
#smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
  '''alias_maps = hash:/etc/aliases'''
  #smtpd_tls_security_level = may
  '''alias_database = hash:/etc/aliases'''
#smtp_tls_CApath = /etc/pki/tls/certs
  #smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
#smtp_tls_security_level = may
----
----
On les met en commentaire ou plus simplement, on les éliminent.




Les lignes suivante sont modifiées ou ajoutées. La première est nécessaire.
Les lignes suivante sont modifiées ou ajoutées.  
----
----
'''inet_interfaces = all'''
mynetworks_style = host
  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 alors que la configuration de base n'acceptait que ceux de la machine locale.
* inet_interfaces : permet d'accepter les messages venant de tous les interfaces réseaux (ici: 192.168.1.110).
* mynetworks_style : permet de n'accepter pour un transfert vers un autre serveur de messagerie que les message de la machine locale. Cette option est optionnelle.
* 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 obtenons le contenu suivant:
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)
  # ==========================================================================
  # ==========================================================================
'''#smtp      inet  n      -      n      -      -      smtpd'''
  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'''
  smtp      unix  -      -      n      -      -      smtp.
  '''relay    unix  -      -      n      -      -      smtp'''
  #relay    unix  -      -      n      -      -      smtp
  '''       -o syslog_name=postfix/$service_name'''
  #       -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 102 : 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'''
  #virtual  unix  -      n      n      -      -      virtual
  lmtp      unix  -      -      n      -      -      lmtp
  lmtp      unix  -      -      n      -      -      lmtp
  anvil    unix  -      -      n      -      1      anvil
  anvil    unix  -      -      n      -      1      anvil
Ligne 108 : 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.




La première ligne n'est pas active:
Par contre, on ajoute les deux services suivants:
----
----
  #smtp      inet  n      -      n      -      -      smtpd
  # SMTP(serveur) - 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(client) - port 25 - STARTTLS
smtp      unix  -      -      n      -      -      smtp
# cryptage
-o smtp_tls_security_level=may
-o smtp_tls_wrappermode=no
-o smtp_tls_loglevel=2
----
----
La réception de messages venant du réseau n'est pas possible. Le port SMTP (25) ne se retrouve pas dans la liste des ports en écoute, au contraire du maître.  
* Le premier: le service d'écoute SMTP 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 SMTP 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:
La commande:
  netstat -ntpl | grep master
  netstat -ntpl | grep master
ne donnera rien.
donne:
----
tcp        0      0 0.0.0.0:25              0.0.0.0:*              LISTEN      2450741/master
----




On remarque plus bas la ligne désactivée mise en commentaire.
Un message sera destiné à une adresse mail résidant sur la même machine déclarée dans le fichier "/etc/hosts".
----
 
  #virtual  unix  -       n      n      -       -       virtual
 
----
=Remarques=
Elle est inutile car on n'héberge pas de domaines virtuels, seul le domaine correspondant au nom de la machine est actif.  
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.


Ces deux lignes peuvent être effacées.


=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 remarque quatre lignes désactivées en les mettant en commentaire.
On aurait pu mettre à la place:
----
----
  #smtp      unix  -      -      n      -      -      smtp
  root: root@home.dom
#relay    unix  -      -      n      -      -      smtp
#        -o syslog_name=postfix/$service_name
#virtual  unix  -      n      n      -      -      virtual
----
----
La première désactive l'envoi de message à d'autres machines dont le serveur de messagerie est connu. Les deux suivantes désactivent le "relay", c'est à dire le transfert des messages non délivrés car le destinataire est inconnu. Ces lignes peuvent être effacées. La dernière est inutile car on n'héberge pas de domaines virtuels, seul le domaine correspondant au nom de la machine est actif. Si notre machine porte le nom "servermail.home.dom" comme indiquée dans le schéma, l'adresse mail de l'utilisateur 'root" sera "root@servermail.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".





Dernière version du 30 octobre 2025 à 18:22


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:


# SMTP(serveur) - 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(client) - 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 SMTP 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 SMTP 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