LINUX:Postfix-Configuration des serveurs de messagerie latérale

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

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