LINUX:Postfix-Configuration autonome


retour au menu de Postfix-Configuration


But

On démarre par la configuration fournie par défaut à l'installation. Cette configuration de base est principalement axée sur l'envoi de mail en local. Si vous avez un serveur DNS privé configuré correctement et auquel les machines locales font référence, il peut leur envoyer des messages.


Fichiers de configuration de base

Il y a trois fichiers de configuration de base tous situés dans le répertoire "/etc/postfix":

  • master.cf: fichier de configuration des processus
  • main.cf: fichier de configuration par défaut des options
  • aliases: fichier de redirection des utilisateurs locaux

Notons que le fichier "aliases" se trouve historiquement dans le répertoire "/etc" mais nous l'avons mis dans le même répertoire que tous les fichiers de configuration de Postfix.


Nettoyage des commentaires

Pour une question de lisibilité, on a enlevé tous les commentaires et les lignes désactivées. Avant de commencer, sauvez toujours ces fichiers avant toute modification. Par exemple:

cp /etc/postfix/main.cf /etc/postfix/main.cf.original

Mais ces commentaires sont utiles pour vous expliquer leur utilité.

La commande suivante peut vous y aider:


#!/bin/bash
FICHIERIN=/etc/postfix/main.cf.orginal
FICHIEROUT=/etc/postfix/main.cf
grep -v '^space:*\#' ${FICHIERIN} | grep -v '^space:*$' > ${FICHIEROUT}

La première partie supprime toutes les lignes commençant par un dièse ("#"); La seconde partie supprime les lignes vides


Configuration des processus

Le fichier de configuration des processus se nomme "/etc/postfix/master.cf".

Contenu du fichier:


# ==========================================================================
# service  type    private unpriv  chroot  wakeup  maxproc command + args
#                  (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
smtp       inet       n       -       n       -       -       smtpd
smtp       unix       -       -       n       -       -       smtp
local      unix       -       n       n       -       -       local
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
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
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 a en début de ligne, le nom du service et en fin de la ligne, le nom du programme. Les lignes qui suivent mais en retrait, reprennent des options qui écrasent les options du fichier de configuration des options "/etc/postfix/main.cf". La seconde colonne nous informe du type de service: "inet" signifie qu'il va écouter le réseau, "unix" écoute au niveau de la machine locale. J'ai regroupé dans les trois premières lignes, les services qui nous intéressent particulièrement.

La première concerne le service "smtp" qui va écouter le réseau "inet" et le processus est "smtpd"; c'est lui qui va recueillir les mails venant du réseau. Nombre d'options commencent par "smtpd_"; elles sont liées à ce processus.

A l'inverse, la seconde ligne concerne l'envoi de mails; c'est le processus "smtp". Nombre d'options commencent par "smtp_"; elles sont liées à ce processus.

La troisième "local" est chargée de le distribution des mails en local.

Voyez le schéma donné dans la page principale.


Configuration des options

Le fichier de configuration des options personnelles se nomme "/etc/postfix/master.cf".

Il existe de nombreuses options. Pour avoir un relevé de leur existence et de leur valeur, exécutez la commande suivante:

postconf > postconf.log

Elle confine les options et leur valeur par défaut qui sont amendées avec les options et leur valeur inscrites dans le fichier "/etc/postfix/main.cf"

Pour vérifier votre configuration, exécutez la commande suivante:

postfix check

Nous allons passer en revue les paramètres qui nous intéressent par groupe.

Le premier groupe concerne un ensemble d'options qui seront toujours présentes et ne changeront pas. Ils sont dans le fichier d'origine.


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
unknown_local_recipient_reject_code = 550
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
manpage_directory = /usr/share/man
debugger_command =
        PATH=/bin:/usr/bin:/usr/local/bin; export PATH; (echo cont;
        echo where) | gdb $daemon_directory/$process_name $process_id 2>&1
        >$config_directory/$process_name.$process_id.log & sleep 5


Partie des définitions des alias ou redirection des utilisateurs locaux.


alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases

On voit que le fichier aliases a été déplacé dans le répertoire "/etc/postfix". Il doit être "compilé" par la commande:

newaliases

Si on le laisse dans son lieu d'origine "/etc", on adapte le chemin dans cette configuration.


Pour sécuriser le serveur, on n'affiche pas le nom du logiciel ni sa version afin de rendre plus difficile le travail d'un pirate éventuel. On peut mettre ce que l'on veut.


smtpd_banner = A-D-B-1
mail_name = ADB1
mail_version=6.5.4.3.2.1

Dans cette partie, on limite le trafic réseau à la IPV4. IPV6 est désactivé. En seconde ligne, il n'accepte que les mails locaux.


inet_protocols = ipv4
inet_interfaces = 127.0.0.1

Autre alternative, si "inet_interfaces" avait pour valeur "all", le serveur accepterait les mails de toute provenance. (sauf filtrage du pare-feu) On ajoute un filtrage pour le réseau local à la troisième ligne si désiré.


inet_protocols = ipv4
inet_interfaces = all
mynetworks = 192.168.1.0/24, 127.0.0.1/32


L'option suivante définit les domaines dont les mails sont acceptés localement. (valeur de l'option par défaut)


mydestination = $myhostname, localhost.$mydomain, localhost

On peut, pour la suite, ajouter la valeur "$mydomain".


mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain


Si le nom du serveur est "serverdb.home.dom", les trois options suivantes ont, par défaut, les valeur suivantes:


myhostname = serverdb.home.dom
mydomain = home.dom
myorigin = serverdb.home.dom

Selon la valeur de l'option "myorigin", une adresse mail locale sera de la forme, par exemple pour l'utilisateur "root", "root@serverdb.home.dom".

Si on change cette valeur par soit "home.dom" ou "$mydomain" (ce qui est équivalent), l'adresse mail locale devient "root@home.dom". Ajoutons alors la valeur "$mydomain" à l'option "mydestination" comme montré ci-dessus.


myhostname = serverdb.home.dom
mydomain = home.dom
myorigin = $mydomain

Pour aller plus loin, si vous avez un nom de domaine officiel et un nom de serveur enregistré (A record) dans le DNS mondial et qu'il y est déclaré comme serveur de messagerie (MX record), on peut adapter ces options en conséquence. Par exemple, si notre nom de domaine est "adbweb.gslb.eu" et notre machine "mail.adbweb.gslb.eu", les options deviennent.


myhostname = mail.adbweb.gslb.eu
mydomain = adbweb.gslb.eu
myorigin = adbweb.gslb.eu

Et notre adresse mail locale devient: "root@adbweb.gslb.eu".

Avec cette configuration, les mails locaux se stockeront dans le répertoire "/var/mail".


Configuration des redirections locales

Ce fichier détermine comment les messages destinés aux utilisateurs locaux, repris dans le fichier "/etc/passwd", sont redirigés. Nous donnons un extrait de ce fichier ci-dessous:


apache:    root
postfix:   root
mysql:     root

Nous remarquons que les mails destinés aux utilisateurs "apache", "postfix" et mysql" sont redirigés vers l'utilisateur local "root".

Après toute modification dans ce fichier, il faut le "compiler" via la commande:

newaliases

Ce traitement est fait d'office au lancement de Postfix.


Remarque

Après tout changement dans ces fichiers de configuration, il faut relancer le service Postfix:

systemctl restart postfix

Vérifiez qu'il est bien lancé:

systemctl status postfix




retour au menu de Postfix-Configuration