LINUX:Postfix-Configuration du serveur de messagerie centrale
→ Postfix et Dovecot-Configuration de gestion
But
Cet article traite de la configuration du serveur de messagerie Postfix qui va centraliser les messages de tous les autres serveurs dans son PostOffice.
Rappelons que le but est de de rassembler les messages de gestion locaux et ceux des machines de notre réseau. Il n'a pas pour objectif d'envoyer des messages vers un autre prestataire d'Internet ni entre utilisateurs de notre famille ou entreprise. De même comme nous travaillons en interne, en vase clos et pas soucis de simplification, nous n'utiliserons pas de cryptage.
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 deux 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é dans un des articles qui suivent.
Configuration du fichier "main.cf"
Après nettoyage du fichier "/etc/postfix/main.cf", on garde la partie suivante:
compatibility_level = 3.6 queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix mydestination = $myhostname, localhost.$mydomain, localhost unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 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
Les lignes suivantes sont désactivées car inutiles ou non nécessaires car liées au cryptage.
#manpage_directory = /usr/share/man #sample_directory = /usr/share/doc/postfix/samples #readme_directory = /usr/share/doc/postfix/README_FILES #smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem #smtpd_tls_key_file = /etc/pki/tls/private/postfix.key #smtpd_tls_security_level = may #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. Les deux premières sont nécessaires.
inet_interfaces = all home_mailbox = Maildir/ relay_domains = inet_protocols = ipv4
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.
- home_mailbox : défini le format de stockage des messages et l'endroit. Il existe deux format supportés par Postfix et Dovecot. Nous avons choisi le format "Maildir" par facilité d'utilisation. Celui-ci les placent dans le répertoire "Maildir" dans l'espace disque de chaque utilisateur concerné. Chaque message sera rangé dans son fichier propre, ce qui facilite le nettoyage manuel éventuel ou la consultation hors client de messagerie, en mode texte. L'autre format "Mbox" les globalise en un seul fichier.
- relay_domains : désactive le mode "relay", c'est à dire l'envoi des messages dont le destinataire est inconnu localement vers un autre serveur de messagerie. Cette ligne peut ne pas être prise en compte car le "relay" sera désactivé dans le seconf fichier de configuration. Le mode d'envoi direct sera désactivé également.
- inet_protocols : est aussi optionnel. Elle permet de se limiter à IPV4.
Configuration du fichier "master.cf"
Après un léger nettoyage, nous obtenons le contenu suivant:
# ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (no) (never) (100) # ========================================================================== smtp inet n - n - - smtpd 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 remarque trois lignes désactivées en les mettant en commentaire.
#smtp unix - - n - - smtp #relay unix - - n - - smtp # -o syslog_name=postfix/$service_name
La première désactive l'envoi de message à d'autres machines dont le serveur de messagerie est connu. Les 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 première ligne active:
smtp inet n - n - - smtpd
permet la réception de message. Si vous n'avez pas d'autres machines dont les messages sont à centraliser, vous pouvez la mettre en commentaire, ce qui supprime une porte d'entrée et participe donc à la sécurisation.
Si cette ligne reste active, la commande suivante permet de vérifier que le port 25 (smtp) est sous écoute:
netstat -ntpl | grep master
Elle donne:
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 29552/master
On vérifie par la même occasion que l'écoute se fait sur tous les interfaces ("0 0.0.0.0"). "master" est le processus de démarrage de Postfix.
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 entrée le port "smtp" (25) si l'écoute est activée aux machines locales dont les messages doivent être centralisés. Ceci se fait dans le fichier "/etc/sysconfig/iptables":
-A INPUT -p tcp -m tcp --dport 25 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
Ici on l'ouvre à toutes les machines du LAN "192.168.1.0". On peut être plus restrictif.
Vérification
A titre de vérification, nous envoyons un message à l'utilisateur "roogt" en ligne de commande directement sur cette machine hébergeant ce serveur:
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 .
Dans le répertoire racine de l'utilisateur "root", "/root" le répertoire "Maildir" est créé. A l'intérieur le sous-répertoire "new" contient un nouveau fichier contenant notre message.
→ Postfix et Dovecot-Configuration de gestion