POSTFIX : Configuration MTA Simple

En novembre 2009, le post « SSMTP : Allégez les MTA de vos serveurs » vous proposait de remplacer les « Mails Transferts Agents » évolués par SSMTP pour plus de légèreté. Les MTAs évolués (POSTFIX, EXIM, SENDMAILS, …) offrent cependant quelques fonctionnalités qui les rendent plus pertinent dans certaines situations (« mail queue », possibilités de traitements des contenus et des entêtes, etc).

Nous proposons aujourd’hui un fichier de configuration de POSTFIX en mode « forward » uniquement. Dans ce cas POSTFIX sera juste utilisé pour les remontées d’information. Les mails sont transférés directement aux SMTP du provider.

Tous les commentaires et/ou propositions d’améliorations de cette base sont les bienvenus.

Configuration

Les fichiers de configuration POSTFIX sont généralement localisés sous « /etc/postfix ». Deux fichiers sont nécessaires au fonctionnement du MTA :

  • « master.cf » permettant de configurer les services démarrés par POSTFIX, leurs nombres, etc ;
  • « main.cf » destiné au paramétrage de POSTFIX proprement dit.

Tous les fichiers personnels que l’on ajoutera seront rangés sous « /etc/postfix/files ». Au final nous obtiendrons une arborescence du type :

root@srv:~# tree -fupg /etc/postfix/
[drwxr-s--- root postfix ] /etc/postfix
??? [-rw-r----- root postfix ] /etc/postfix/dynamicmaps.cf
??? [drwxr-s--- root postfix ] /etc/postfix/files
?   ??? [-rw-r----- root postfix ] /etc/postfix/files/header_checks
?   ??? [-rw-r----- root postfix ] /etc/postfix/files/sender_canonical
?   ??? [-rw-r----- root postfix ] /etc/postfix/files/transport
??? [-rw-r----- root postfix ] /etc/postfix/main.cf
??? [-rw-r----- root postfix ] /etc/postfix/master.cf
1 directory, 6 files

/etc/postfix/main.cf : Configuration de POSTFIX

La première partie de la configuration concerne le fichier « main.cf ». Nous y définissons :

  • le nom d’hôte (variable « myhostname« ) ;
  • le domaine sur lequel nous travaillons (« mydomain« ) ;
  • le rôle de la machine (« mynetworks_style » ici « host » signifie que la machine ne relaye aucun message autre que ceux qu’elle émet) ;
  • les domaine pour lesquels les messages sont relayés (« relay_domains » initialisé à rien pour être cohérent avec « mynetworks_style« ) ;
  • les interfaces d’acceptation des messages (« inet_interfaces« ) ;
  • la manière dont les mails sont acheminés localement (« local_transport » affiche une erreur car les mails sont refusés localement) ;
  • les domaines d’envois acceptés (« myorigin« ) ;
  • le mode de transfert par défaut des messages (« default_transport« ) ;
  • le serveur vers lequel rediriger les mails à envoyer (« relayhost« ).

Pour que les mails émis par la machines soient envoyés directement au SMTP de votre provider, vous remplacerez la valeur de « relayhost » par le smtp de ce dernier (exemple : « smtp.orange.fr » pour Orange, etc). Les crochets fixent le passage par le serveur directement sans ce soucier de l’ordre de définition du SMTP (poids des MX).

Au final, nous obtenons une configuration du type :

## /etc/postfix/main.cf
# Fichier de configuration de postfix.
# Version MTA simple.
 
# Nom de la machine :
myhostname = srv.local.lan
 
# Domaine :
mydomain = local.lan
 
# Rôle de la machine : postfix local uniquement aucun relais
mynetworks_style = host
relay_domains =
 
# Ne pas accepter de courrier en dehors de la boucle locale :
inet_interfaces = 127.0.0.1
 
# Désactiver la livraison locale du courrier. Tous les courriers sont routés vers le serveur "relayhost"
local_transport = error:local delivery is disabled
 
# Domaine des envois :
myorigin = $mydomain
 
# Mode de transport des mails :
default_transport = smtp
 
# Les mails sont renvoyés vers le SMTP du provider :
relayhost = [smtp.free.fr]
 
# (FACULTATIF) Pour certains domaines, les mails sont envoyés directement au serveur :
transport_maps = hash:/etc/postfix/files/transport
# Table régénérée par "postmap /etc/postfix/files/transport"
 
# (FACULTATIF) Les adresses de type utilisateur@server.domain sont remplacée par une adresse choisie lors de l’envoi :
sender_canonical_maps = hash:/etc/postfix/files/sender_canonical
# Table régénérée par "postmap /etc/postfix/files/sender_canonical"
 
# (FACULTATIF) Traitement des entêtes de mail :
smtp_header_checks = pcre:/etc/postfix/files/header_checks

Télécharger le fichier main.cf

Par défaut, tous mail émis par le serveur sont relayés par le SMTP de Free (mon fournisseur d’accès internet).

A cette base nous ajoutons trois paramètres complémentaires et facultatifs :

  • « transport_maps » qui permet de ne pas passer par le SMTP par défaut (« relayhost ») pour l’acheminement des mails vers certains domaines particuliers. Cette définition est inscrite dans le fichier « /etc/postfix/files/transport » :

    # /etc/postfix/files/transport
    admin-linux.fr           :[smtp.admin-linux.fr]
    .admin-linux.fr          :[smtp.admin-linux.fr]

    Télécharger le fichier transport

    Dans cet exemple, les mails émis à destination d’adresses de la forme « utilisateur@*admin-linux.fr » sont directement envoyés au SMTP du domaine « admin-linux.fr ».

    Vous devez exécuter la commande « postmap /etc/postfix/files/transport » pour que le fichier soit pris en compte (génère un fichier « /etc/postfix/files/transport.db »).

  • « sender_canonical_maps » qui permet de ré écrire certaines adresses d’expéditeur.

    # /etc/postfix/files/sender_canonical
    root                    admin@admin-linux.fr

    Télécharger le fichier sender_canonical

    Dans cet exemple, les mails expédiés par « root » verront l’adresse d’émission remplacée par « admin@admin-linux.fr ».

    Cette carte doit être convertie par « postmap /etc/postfix/files/sender_canonical » pour être prise en compte. Un fichier « /etc/postfix/files/sender_canonical.db » est généré.

  • « smtp_header_checks » qui permet d’effectuer un traitement sur l’entête des mails AVANT qu’ils ne soient expédiés. Nous utilisons dans cet exemple un fichier contenant des expressions régulières (pcre) pour le traitement. Cela sous entend l’installation du paquet « postfix-pcre » sous Debian et ses dérivées ou l’activation du support de « pcre » sous Gentoo.

    # /etc/postfix/files/header_checks
    /^(F|f)rom:.*admin@admin-linux\.fr.*$/ REPLACE From: Administrateur SRV <admin@admin-linux.fr>
    /^(S|s)ubject:(.*)$/ REPLACE Subject: [SRV]${2}

    Télécharger le fichier header_checks

    Ce fichier remplace le champ « From:*admin@admin-linux.fr* » par une version plus lisible (« Administrateur SRV <admin@admin-linux.fr> » -le serveur ce nome SRV-) pour plus de lisibilité dans le gestionnaire de mail. Le sujet des messages expédiés depuis la machine ce voit tagué par le nom du serveur en majuscule et entre crochet.

/etc/postfix/master.cf

Le service POSTFIX n’étant pas destiné à recevoir des mail, le démon SMTP de postfix n’a pas lieu d’être démarré. La seule modification apportée au fichier par défaut « /etc/postfix/master.cf » consiste donc à commenter la ligne correspondant au démarrage d’SMTP :

...
# smtp      inet  n       -       -       -       -       smtpd
...

Gestion des droits

La dernière étape de cette configuration consiste à fixer les droits sur les fichiers de configuration de POSTFIX. Les fichiers appartiendront à root et au goupe faisant fonctionner POSTFIX (postfix). Tout fichier créé dans l’arborescence héritera du groupe du répertoire parent.

root@srv:~# chown -R root.postfix /etc/postfix
root@srv:~# find /etc/postfix -type d -exec chmod 2750 {} \;
root@srv:~# find /etc/postfix -type f -exec chmod 640 {} \;

Redémarrez le service

Afin que les modifications soient prisent en compte, générez les tables nécessaires et redémarrez le service POSTFIX.

root@srv ~ # postmap /etc/postfix/files/transport
root@srv ~ # postmap /etc/postfix/files/sender_canonical
root@srv ~ # /etc/init.d/postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.

Téléchargements

Téléchargez la configuration complète au format tar.bz2 : 20110411.POSTFIX_Configuration_MTA_Simple.tar.bz2.

2 réflexions au sujet de « POSTFIX : Configuration MTA Simple »

  1. Bonjour,

    J’ai lu votre documentation avec la plus grande attention,et grace à elle j’ai mis en place mon relayhost.

    Est t’il utile de mettre en place le SASL?

    Cordialement

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *