« LINUX:Postfix-Configuration du serveur de messagerie centrale » : 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
 
(12 versions intermédiaires par le même utilisateur non affichées)
Ligne 4 : Ligne 4 :
----
----
=But=
=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.
Cet article traite de la configuration du serveur de messagerie Postfix qui va centraliser les messages de tous les autres serveurs dans son PostOffice. Dans le schéma, c'est ma machine A qui est concernée.


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.
Rappelons que le but est 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.
 
 
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
----




=Fichiers de configuration=
=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:  
Comme vu précédemment, les fichiers de configuration de Postfix se trouvent dans le répertoire "/etc/postfix". Nous n'utiliserons que trois fichiers strictement nécessaires:  
* main.cf : contenant les paramètres généraux de Postfix
* main.cf : contenant les paramètres généraux de Postfix
* master.cf : contenant la liste des programmes intervenant dans le fonctionnement 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.
Le fichier "/etc/aliases" qui intervient dans "main.cf", sera traité en fin d'article.




Ligne 19 : Ligne 28 :
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. Les deux premières sont nécessaires.
Les lignes suivante sont modifiées ou ajoutées.  
----
----
'''inet_interfaces = all'''
'''home_mailbox = Maildir/'''
relay_domains =
  inet_protocols = ipv4
  inet_protocols = ipv4
mynetworks = 127.0.0.1 192.168.1.0/24
inet_interfaces = all
myorigin = home.dom
mydestination = home.dom
 
home_mailbox = Maildir/
 
smtpd_tls_cert_file = /etc/pki/home/certs/mail.home.chaine.pem
smtpd_tls_key_file =  /etc/pki/home/private/home.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 : accepte les connexions de la machine locale et du réseau local.
* inet_protocols : est aussi optionnel. Elle permet de se limiter à IPV4.
* myorigin et mydestination : spécifie que la partie domaine d'une adresse mail est "home.dom", par exemple "pdupont@home.dom".
* 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.
* 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.
* les deux dernières définissent les clé et certificat pour l'accès SSL.
* inet_protocols : est aussi optionnel. Elle permet de se limiter à IPV4.




=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 79 : Ligne 84 :
  #              (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 92 : Ligne 96 :
  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 100 : Ligne 104 :
  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 106 : Ligne 110 :
  postlog  unix-dgram n  -      n      -      1      postlogd
  postlog  unix-dgram n  -      n      -      1      postlogd
----
----
On désactive les services "smtp", "relay" et "virtual", non nécessaires.
Car nous n'utiliserons pas de serveur intermédiaire pour envoyer le message ni envoyer des messages.
Et nous n'hébergeons pas de domaines virtuels, seul le domaine correspondant au nom de la machine est actif.




On remarque quatre lignes désactivées en les mettant en commentaire.
Par contre, on ajoute les trois services suivants:
----
----
  #smtp      unix -       -      n      -      -      smtp
  # SMTP - port 25 - sans cryptage - NoLogin
  #relay    unix -      -      n      -      -      smtp
smtp      inet n       -      n      -      -      smtpd
  #       -o syslog_name=postfix/$service_name
  # cryptage
  #virtual  unix -      n       n      -      -      virtual
  -o smtpd_tls_security_level=may
  -o smtpd_tls_auth_only=no
  -o smtpd_tls_wrappermode=no
  -o smtpd_tls_loglevel=2
 
  # submission - STARTTLS - port 587 - LOGIN ou PLAIN
submission inet  n       -      n      -      -      smtpd
# cryptage
  -o smtpd_tls_security_level=may
  -o smtpd_tls_auth_only=no
  -o smtpd_tls_wrappermode=no
  -o smtpd_tls_loglevel=2
  # authentification
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  # restriction - authentification obligatoire
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 
  # smtps - SSL/TLS activé - port 465 - LOGIN
smtps      inet  n       -       n      -      -      smtpd
# cryptage
  -o smtpd_tls_security_level=encrypt
  -o smtpd_tls_wrappermode=yes
  -o smtpd_tls_loglevel=2
# authentification
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
# restriction - authentification obligatoire
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
----
----
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 premier: le service à l'écoute "SMTP" sur le port 25 de type STARTTLS qui est destiné à recevoir les messages des serveurs latéraux. Il propose une réception en claire ou cryptée SSL/TLS de préférence. Il n'y a pas d'authentification.
* Le second: le service à l'écoute "Submission" sur le port 587 de type STARTTLS qui va recevoir les messages des PC clients du réseau local. Il propose une réception en claire ou cryptée SSL/TLS de préférence. Il nécessite une authentification gérée par Dovecot que nous verrons à l'article suivant.
* Le troisième: le service à l'écoute "SMTPS" sur le port 465 de type SSL/TLS qui va recevoir les messages des PC clients du réseau local. Il propose une réception cryptée SSL/TLS obligatoire. Il nécessite une authentification gérée par Dovecot que nous verrons à l'article suivant.




La première ligne active:
La commande suivante permet de vérifier les ports à l'écoute:
netstat -ntpl | grep master
Elle donne:
----
----
  smtp     inet n      -      n      -      -      smtpd
  tcp        0     0 0.0.0.0:25              0.0.0.0:*              LISTEN      1223422/master
tcp        0      0 0.0.0.0:465            0.0.0.0:*              LISTEN      1223422/master
  tcp        0      0 0.0.0.0:587            0.0.0.0:*              LISTEN      1223422/master
----
----
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.
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. Pour information, le chiffre "1223422" est le "PID" du processus "master", il change aléatoirement à chaque démarrage de Postfix.
 
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.




Ligne 138 : Ligne 177 :




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":
De même dans le Firewall "iptables", il faut ouvrir en entrée les trois ports à l'écoute 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
  -A INPUT -p tcp -m tcp --dport 25 -s 192.168.1.110  -m conntrack --ctstate NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 25  -s 192.168.1.0/24  -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 587 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 465 -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.
Le port 25 est restreint au serveur latéral 192.169.1.110 mais en décommettant la ligne qui suit, on ouvre ce port à tout le réseau local. Mais ce port ne supporte pas l'authentification.




=Vérification=
=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:
A titre de vérification, nous envoyons un message à l'utilisateur "root" en ligne de commande directement sur cette machine hébergeant ce serveur:
  mail root
  mail root
Interactivement on nous demande de remplir le sujet:
Interactivement on nous demande de remplir le sujet:
Ligne 156 : Ligne 198 :
Dans le répertoire racine de l'utilisateur "root", "/root" le répertoire "Maildir" est créé.
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.
A l'intérieur le sous-répertoire "new" contient un nouveau fichier contenant notre message.
Si on visionne son contenu, on y remarque l'adresse mail du destinataire: "root@servermail.home.dom" selon notre schéma.
Si on visionne son contenu, on y remarque l'adresse mail du destinataire: "root@home.dom" selon notre schéma.
 
 
=Utilisateur centralisateur=
Selon la configuration de Dovecot qui suivra, pour relever ces messages, il nous faudra le mot de passe de la boîte mail. Il ne faut donc pas centraliser les messages dans celle de l'utilisateur "root". Ce serait un immense trou de sécurité.
 
Nous allons donc créer un autre utilisateur nommé dans l'exemple "pdupont" à adapter selon votre convenance. En ligne de commande nous lançons:
adduser pdupont -g users -s /sbin/nologin
Nous le lions au groupe "users" et nous désactivons la possibilité la possibilité qu'il ouvre une session sur le serveur.
 
L'espace disque de cet utilisateur est créé par défaut dans le répertoire "/home/pdupont".
 
Cet utilisateur sera ajouté au fichier "/etc/passwd".
 
Ensuite il faut définir un mot de passe crypté avec la commande suivante:
passwd pdupont
Il vous sera demandé le mot de passe et sa confirmation. Il sera ajouté au fichier "/etc/shadow"
 
 
=Configuration du fichier "aliases"=
Maintenant que notre utilisateur centralisateur est défini, il faut rediriger les messages vers celui-ci. On ajoute une ligne au fichier "/etc/aliases":
----
root: pdupont
----
Dans ce cas, tous les messages arrivants ou redirigés vers l'utilisateur "root" seront redirigés vers l'utilisateur "pdupont".
Faites de même pour tout autre utilisateur concerné par la réception de messages.
 
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
 
 
On peut refaire le test d'envoi de message à l'utilisateur "root" comme ci-dessus; maintenant le message sera à chercher dans le répertoire "/home/pdupont/Maildir/new".





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


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. Dans le schéma, c'est ma machine A qui est concernée.

Rappelons que le but est 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.


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


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 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.


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.0/24
inet_interfaces = all
myorigin = home.dom
mydestination = home.dom
 
home_mailbox = Maildir/
 
smtpd_tls_cert_file = /etc/pki/home/certs/mail.home.chaine.pem
smtpd_tls_key_file =  /etc/pki/home/private/home.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 du réseau local.
  • inet_protocols : est aussi optionnel. Elle permet de se limiter à IPV4.
  • myorigin et mydestination : spécifie que la partie domaine d'une adresse mail est "home.dom", par exemple "pdupont@home.dom".
  • 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.
  • 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 "smtp", "relay" et "virtual", non nécessaires. Car nous n'utiliserons pas de serveur intermédiaire pour envoyer le message ni envoyer des messages. 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 trois services suivants:


# SMTP - port 25 - sans cryptage - NoLogin
smtp      inet  n       -       n       -       -       smtpd
# cryptage
  -o smtpd_tls_security_level=may
  -o smtpd_tls_auth_only=no
  -o smtpd_tls_wrappermode=no
  -o smtpd_tls_loglevel=2
 
# submission - STARTTLS - port 587 - LOGIN ou PLAIN
submission inet  n       -       n       -       -       smtpd
# cryptage
  -o smtpd_tls_security_level=may
  -o smtpd_tls_auth_only=no
  -o smtpd_tls_wrappermode=no
  -o smtpd_tls_loglevel=2
# authentification
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
# restriction - authentification obligatoire
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 
# smtps - SSL/TLS activé - port 465 - LOGIN
smtps      inet  n       -       n       -       -       smtpd
# cryptage
  -o smtpd_tls_security_level=encrypt
  -o smtpd_tls_wrappermode=yes
  -o smtpd_tls_loglevel=2
# authentification 
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
# restriction - authentification obligatoire
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

  • Le premier: le service à l'écoute "SMTP" sur le port 25 de type STARTTLS qui est destiné à recevoir les messages des serveurs latéraux. Il propose une réception en claire ou cryptée SSL/TLS de préférence. Il n'y a pas d'authentification.
  • Le second: le service à l'écoute "Submission" sur le port 587 de type STARTTLS qui va recevoir les messages des PC clients du réseau local. Il propose une réception en claire ou cryptée SSL/TLS de préférence. Il nécessite une authentification gérée par Dovecot que nous verrons à l'article suivant.
  • Le troisième: le service à l'écoute "SMTPS" sur le port 465 de type SSL/TLS qui va recevoir les messages des PC clients du réseau local. Il propose une réception cryptée SSL/TLS obligatoire. Il nécessite une authentification gérée par Dovecot que nous verrons à l'article suivant.


La commande suivante permet de vérifier les ports à l'écoute:

netstat -ntpl | grep master

Elle donne:


tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1223422/master
tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      1223422/master
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      1223422/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. Pour information, le chiffre "1223422" est le "PID" du processus "master", il change aléatoirement à chaque 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 les trois ports à l'écoute 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.110  -m conntrack --ctstate NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 25  -s 192.168.1.0/24  -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 587 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 465 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT

Le port 25 est restreint au serveur latéral 192.169.1.110 mais en décommettant la ligne qui suit, on ouvre ce port à tout le réseau local. Mais ce port ne supporte pas l'authentification.


Vérification

A titre de vérification, nous envoyons un message à l'utilisateur "root" 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. Si on visionne son contenu, on y remarque l'adresse mail du destinataire: "root@home.dom" selon notre schéma.


Utilisateur centralisateur

Selon la configuration de Dovecot qui suivra, pour relever ces messages, il nous faudra le mot de passe de la boîte mail. Il ne faut donc pas centraliser les messages dans celle de l'utilisateur "root". Ce serait un immense trou de sécurité.

Nous allons donc créer un autre utilisateur nommé dans l'exemple "pdupont" à adapter selon votre convenance. En ligne de commande nous lançons:

adduser pdupont -g users -s /sbin/nologin

Nous le lions au groupe "users" et nous désactivons la possibilité la possibilité qu'il ouvre une session sur le serveur.

L'espace disque de cet utilisateur est créé par défaut dans le répertoire "/home/pdupont".

Cet utilisateur sera ajouté au fichier "/etc/passwd".

Ensuite il faut définir un mot de passe crypté avec la commande suivante:

passwd pdupont

Il vous sera demandé le mot de passe et sa confirmation. Il sera ajouté au fichier "/etc/shadow"


Configuration du fichier "aliases"

Maintenant que notre utilisateur centralisateur est défini, il faut rediriger les messages vers celui-ci. On ajoute une ligne au fichier "/etc/aliases":


root: pdupont

Dans ce cas, tous les messages arrivants ou redirigés vers l'utilisateur "root" seront redirigés vers l'utilisateur "pdupont". Faites de même pour tout autre utilisateur concerné par la réception de messages.

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


On peut refaire le test d'envoi de message à l'utilisateur "root" comme ci-dessus; maintenant le message sera à chercher dans le répertoire "/home/pdupont/Maildir/new".




Postfix et Dovecot-Configuration de gestion