Postfix : le fichier master.cf

Date de publication: le mardi 15 mai 2007 à 15h20
Dernière modification: par Pascal BOYER le mardi 28 décembre 2010 à 14h40
« Article précédent: Postfix : tables et contrôle anti-spam
» Article suivant: Postfix : le fichier smtpd.conf

Avant propos

Dans cet article sera abordée la configuration du fichier /etc/postfix/ master.cf
 Les informations, présentées ici, sont pratiquement toutes issues du livre Postfix - La référence, ed. O’REILLY .

:
A la fin de cet article, je fais un récapitulatif de tout ce qui permet de faire fonctionner le serveur correctement avec Thunderbird.

Rappels

Postfix, devant tantôt jouer le rôle de serveur tantôt le rôle de client, intègre un serveur et un client SMTP.

D’une façon générale, le nom d’un service se terminant par un d désigne un serveur: imapd, lmtpd, pop3d, mysqld, slapd etc...

Le démon master

Le démon master est le processus général qui contrôle les autres démons Postfix pour la gestion du courrier (p31). Pour obtenir les informations sur sa configuration, le démon master utilise le fichier /etc/postfix/ master.cf (p31)

Le démon master lance, selon les besoins, tous les autres services de Postfix. (p48)
Le fichier /etc/postfix/ master.cf contient une ligne par service ou transport fourni par Postfix (p31). Et chaque ligne est divisée en colonnes indiquant comment chaque programme doit s’exécuter dans le cadre du système global. (p31)

:
Dans la plupart des cas il est fort probable que vous n’ayez pas à modifier ce fichier.

Mais ce ne sera pas ici notre cas, puisque nous allons commenter les lignes concernant les services dont nous ne nous servirons point et apporter quelques modifications aux valeurs par défaut.

Le fichier master.cf

Bien qu’un certain nombre d’informations soient indiquées directement dans le fichier sous forme de commentaires, en voici quelques unes supplémentaire relatives à la syntaxe de ce fichier. (p49-50)

Colonne Service name

Indique le nom du service qui doit être lancé.

Il est possible d’indiquer uniquement un numéro de port, en lieu et place du nom du service, si et seulement si ce service tourne sur la même machine que Postfix.

Il est également possible ( uniquement pour les services dont le transport type est inet) de remplacer le nom du service par l’adresse IP d’une machine suivi du numéro de port (e.g: 192.168.4.137: 12368) (il n’y a pas d’espace avant 12368 )

Colonne Transport type

Valeurs possibles: inet, unix ou fifo

Colonne private

La valeur y (pour yes) désigne les composantes du serveur Postfix dont l’accès est restreint à Postfix.

Les services dont le Transport type vaut inet ne peuvent avoir un accès restreint car les sockets doivent rester accessibles pour les autres processus du système Linux.

Colonne unpriv

Désigne (si y) les processus qui s’exécuteront avec le moins de privilèges possible, c’est à dire avec les privilèges définis par la règle mail_owner du fichier /etc/postfix/ main.cf et dont la valeur par défaut vaut postfix

Colonne chroot

Désigne les composantes de Postfix qui seront (si y) chrootées. Le répertoire du chroot est défini par la règle queue_directory dans le fichier /etc/postfix/ main.cf

Chrooter un service ajoute un niveau de sécurité mais aussi de complexité.
Cette option est impossible pour les services pipe, virtual, local et proxymap

Colonne wakeup

Définit l’intervalle de temps au bout duquel un processus devra être réveillé. Par exemple, lorsque j’indique 60 (secondes) pour le démon pickup cela veut dire que toutes les 60 secondes ce processus devra contrôler la présence de messages dans la file d’attente maildrop

C’est le démon master qui réveille les processus qui doivent être réveillés. Les trois composantes concernées par le réveil sont: pickup, flush et qmgr

Si on ajoute un ? après la valeur numérique, cela indique que le signal de réveil ne devra être envoyé que si la composante est vraiment utilisée. Enfin, un intervalle de temps dont la valeur est 0 indique qu’aucun signal de réveil n’est requis.

Colonne maxproc

Indique le nombre maximum de processus pouvant être invoqués simultanément.

Si aucune valeur n’est indiquée, la valeur par défaut utilisée est celle définie par la règle default_process_limit dans le fichier /etc/postfix/ main.cf  

La valeur par défaut de la règle default_process_limit est 100
Ici, la valeur 0 indiquerait qu’aucune limite n’est fixée.

Colonne command

Indique la véritable commande utilisée pour lancer le service indiqué dans la première colonne.

Aucune information sur le chemin ou l’emplacement du binaire n’est fournie puisque ce binaire (ou cet exécutable) est censé se trouver dans le répertoire des démons de Postfix.

Ce répertoire est défini par la règle daemon_directory du fichier /etc/postfix/ main.cf

Pour connaître la valeur de cette règle, utilisez la commande: ~# postconf -h daemon_directory

Ci-dessous, le fichier master.cf

Je poursuis avec la couleur orange indiquant ainsi les règles qui peuvent être initiées si uniquement les serveurs imapd et smtpd tournent. Ceci constituant encore et toujours le fonctionnement basic du serveur de mails.

Bien sûr, la couleur verte indique les règles relatives à la configuration du protocole SSL/TLS appliqué à Postfix.

# #########################################################
#  
# Ci-dessous, sont répertoriés et configurés tous les services que le démon master de Postfix peut lancer en fonction des besoins du serveur Postfix.
#  
# Chaque ligne indique donc le nom du service et la façon dont il sera lancé.
#  
# #########################################################
# ======= ======= ======= ======= ======= ======= ======= =======
# service type private unpriv chroot wakeup maxproc command + args
# name   (yes) (yes) (yes) (never) (100)  
# ======= ======= ======= ======= ======= ======= ======= =======
  smtp inet n - n - - smtpd -v
  pickup fifo n - - 60 1 pickup
  cleanup unix n - - - 0 cleanup
  qmgr fifo n - - 300 1 qmgr
  qmgr fifo n - - 300 1 qmgr
  rewrite unix - - - - - trivial-rewrite
  bounce unix - - - - 0 bounce
  defer unix - - - - 0 bounce
  trace unix - - - - 0 bounce
  verify unix - - - - 1 verify
  flush unix n - - 1000? 0 flush
# proxymap unix - - n - - proxymap
  smtp unix - - - - - smtp
  relay unix - - - - - smtp
  showq unix n - - - - showq
  error unix - - - - - error
  local unix - n n - - local
  virtual unix - n n - - virtual
# Je commente la ligne ci-dessous car c’est le lmtp de Cyrus-IMAP que je souhaite faire tourner (voir plus bas)
# La commande netstat -anp |grep lmtp doit renvoyer ceci:
#  
# unix 2 [ ACC ] STREAM LISTENING 558026 19293/cyrmaster /var/run/cyrus/socket/lmtp
#  
# et non ceci:
#  
# unix 2 [ ACC ] STREAM LISTENING 558026 19293/cyrmaster /var/run/cyrus/socket/lmtp
# unix 2 [ ACC ] STREAM LISTENING 596256 24511/master private/lmtp
# ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
# lmtp unix - - n - - lmtp
  anvil unix - - n - 1 anvil
# Les trois services ci-dessous sont utilisés par Postfix-tls uniquement:
# ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
  tlsmgr fifo - - n 300 1 tlsmgr
# Malgré la RFC 2487, certains clients, nommés Outlook (Express) prefèrent utiliser le mode non-standard "wrapper" au lieu d’utiliser l’extension SMTP STARTTLS. Ceci est vrai pour OE (Win32 < 5.0 et Win32 >= 5.0 lorsque port<>25 et OE (5.01 Mac et tous les portages).
#  
# ATTENTION: Aucune des trois lignes ci-dessous ne permet de recevoir de mails de l’exterieur !!!
 Chacune de ces ligne définit un port d’écoute différent du port 25
 Donc même pour l’utilisation de SSL/TLS on conserve la toute première option de ce fichier
# ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
# smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
# smtps inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes
# 587 inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
# #########################################################
#  
# Ci-dessous, on trouve les programmes externes à Postfix.
#  
# Consulter les docs/man de ces programmes pour connaître les options que réclame Postfix.
#  
# Pour "maildrop" lire le fichier "MAILDROP_README" consacré à Postfix ou consulter ce lien
#  
# #########################################################
# La ligne ci-dessous déclare Cyrus-IMAP comme MDA.
# Cette ligne n’existe pas par défaut, il faut donc l’ajouter (p49) et ce lien
# Noter que /usr/sbin/cyrdeliver est le binaire qui délivre le courrier (package cyrus21-common)
# ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
  cyrus unix - n n - - pipe flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -q -r $  sender  -m $  extension  $  user
# Je peux commenter la ligne ci-dessous car maildrop n’existe pas sur ma machine.
# ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
# maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d $ recipient
# Je peux commenter la ligne ci-dessous car l’agent de transport UUCP (Unix to Unix Copy Program) n’est pas installé.
# ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
# uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
# Je peux commenter la ligne ci-dessous car bsmtp (Batched SMTP) dépend de "uucp" et n’est pas installé.
# ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
# bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -d -t$nexthop -f$sender $recipient
# Je peux commenter la ligne ci-dessous car ifmail n’est pas installé.
# "ifmail" fait partie du package "ifgate"
# ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
# ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
# Je peux commenter la ligne ci-dessous car le package scalemail n’est pas installé.
# ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- ----------------- -----------------
# scalemail- backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store $ nexthop $ user $ extension

Récapitulatif

1°/ Serveur smtpd + imapd uniquement:

TLS n’est donc pas installé.

Donc maintenant, si vous avez respecté les valeurs des règles vert/jaune (elles ne sont pas toutes nécessaires mais je garantis que les valeurs que je présente fonctionnent) et correctement construit vos fichiers externes, vous avez un serveur de mail en état de marche !

... et voici comment doivent être configurés, dans Thunderbird, les serveurs smtpd et impad

 Fig 1: Configuration du serveur SMTP sans TLS

 Fig 2: Configuration du serveur   imapd pour test0

Alors vous pouvez envoyer et recevoir des mails et votre serveur n’est pas un relai ouvert.

De plus, votre serveur effectue un certain nombre de tests sur le respect des normes par les clients mail et leurs messages ainsi qu’un tri des messages non désirables (requêtes DNRBL).

2°/ Serveur smtpd + TLS:

Si vous avez initialisé les règles relatives à la mise en oeuvre du protocole TLS avec Postfix, alors, avec Thunderbird, le serveur SMTP doit être ainsi défini:

 Fig 3: Configuration du serveur SMTP avec TLS

Commentaires


Article publié sur le site www.luxpopuli.fr réalisé par Linuxorable (linuxorable@gmail.com)