Skip to Content

Configuration de postfix

Postfix est un serveur de courriel libre.

Je pars du principe que postfix est correctement installé et fonctionnel. Si votre distribution vous pose des questions lors de l’installation, répondez ce que vous voulez, nous reprendrons la configuration depuis le début.

Dans la suite de l’article, nous n’utiliseront que les composants propre à postfix. Des outils extérieurs pourraient pourtant être bien utile.

Penser à faire une sauvegarde des fichiers de configuration avant toute modification.

A partir de maintenant, je considère que mon domaine se nomme gnunux.priv, que ma machine s’appelle ibook et que j’ai un utilisateur local gnunux.

Première envoi et réception de courriel

Fichier de configuration de base de postfix

Le fichier de configuration principal de postfix est /etc/postfix/main.cf (le chemin peut varier suivant l’installation).

Les options suivantes sont toutes les options nécessaires à son bon fonctionnement. Il faut donc commencé par vider le fichier de configuration.

# > /etc/postfix/main.cf

Il faut commencer par indiquer le nom de domaine de la machine. C’est le nom avec lequel postfix se présentera sur les serveurs relais :

myhostname = ibook.gnunux.priv

Le nom de domaine par défaut :

mydomain = gnunux.priv

Le nom de domaine de courrier sortant par défaut. Si dans votre outil de courriel vous mettez ,par exemple, "gnunux", il le transformera en "gnunux@gnunux.priv"

myorigin = $mydomain

Les courriels à destination de ces domaines seront conservés en local :

mydestination = $myhostname, localhost, $mydomain

Le relais est autorisé depuis les IP suivantes (ici seulement le poste local) :

mynetworks = 127.0.0.0/8

Le chemin des commandes, n’est pas obligatoire pour certaine distribution :

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
queue_directory = /var/spool/postfix

Postfix utilise cet utilisateur, ce n’est pas obligatoire sur certaine distribution :

mail_owner = postfix

Attention, "/etc/aliases.db" doit exister. Pour cela, faire :

# touch /etc/aliases
# postalias /etc/aliases

Premier test

Dans une console, envoyer un message :

# mail gnunux@gnunux.priv
Subject : Test
Je mets tout ce que je veux et je fini mon message par un "." seul sur une ligne
.
EOT
#

Pour savoir où arrive notre courriel, nous allons utiliser postconf. Cette commande liste toutes les options prise en compte par postfix. Nous auront celles vues au dessus auquelle il faut ajouter toutes les options par défaut. Il nous faut récuperer l’option "mail_spool_directory".

# postconf -d|grep "mail_spool_directory"
mail_spool_directory = /var/mail
#

Si nous allons dans le répertoire /var/mail nous verrons le fichier "gnunux" contenant notre courriel.

Rediriger les courriels

Les courriels sont acheminés vers le serveur MX du domaine. Par exemple :

# dig gnunux.info MX
[...]
gnunux.info.            3600    IN      MX      20 mail.gnunux.info.
[...]

Postfix enverra donc le courriel à mail.gnunux.info. Si aucun serveur MX n’est trouvé, le courriel sera envoyé à l’adresse IP du serveur gnunux.info.

Il peut être pourtant intéressant de modifier le serveur de destination.

Attention, je ne parle pas de la possibilité de renvoyer TOUS les courriels vers une passerelle (en utilisant relayhost = adresse_ip).

Pour cela, il faut rajouter les lignes suivantes au fichier de base :

transport_maps = hash :/etc/postfix/transport

Le fichier /etc/postfix/transport est un fichier de type hash. Postfix est capable de lire plusieurs type de donnée. Pour les connaître, il suffit de faire :

# postconf -m
[...]
hash
#

Voici le contenu du fichier "/etc/postfix/transport". Les courriels envoyés à yogi.priv seront redirigés vers le serveur smtp 192.168.1.15 :

yogi.priv       smtp :[192.168.1.15]:25

Il faut créer maintenant le fichier hash. Pour cela, il faut faire :

# postmap /etc/postfix/transport

Un fichier /etc/postfix/transport.db sera alors créé.

Réécriture d’adresse

Il est possible de réécrire des adresses courriels :

# canonical_maps = hash :/etc/postfix/canonical

Dans le fichier /etc/postfix/canonical :

gnu     gnunux

(ne pas oublier postmap)

Toutes les adresses courriels, en entrée comme en sortie, envoyé à ou prevenant de gnu seront réécrient en tant que gnunux.

Il est possible de différencier l’envoi et la réception :

sender_canonical_maps = hash :/etc/postfix/sender_canonical
recipient_canonical_maps = hash :/etc/postfix/recipient_canonical

Cacher les serveurs locaux d’envoi

Modifions le serveur d’origine :

myorigin = $myhostname

Le serveur envoi maintenant les courriels en tant que gnunux@ibook.gnunux.priv.

Pour cacher les sous-domaines (seulement pour le relayage, pas en local) :

masquerade_domains = !yogi.gnunux.priv gnunux.priv

Ici, tous les courriels qui transitent par ce serveur supprimeront les ....gnunux.priv, sauf pour yogi.gnunux.priv (puisque précédé d’un " !").

Il peut être intéressant d’exclure un utilisateur. Par exemple, tous les courriels de maintenance envoyé par root auront le même expéditeur : gnunux.priv. Il peut être intéressant de conserver les différenciations et donc connaître les serveurs de provenance :

masquerade_exceptions = root

Prévenir du changement d’adresse courriel

Prenons un exemple, si j’envoi une courriel à rah@ibook.gnunux.priv, nous voyons dans les journaux (/var/log/mail.log) :

 : Recipient address rejected : 
     User unknown in local recipient table (in reply to RCPT TO
     command)

Si nous rajoutons :

relocated_maps = hash :/etc/postfix/relocated

Dans /etc/postfix/relocated, nous mettons :

rah@ibook.gnunux.priv   rah@gnunux.info

(ne pas oublier postmap)

Nous avons maintenant :

 : Recipient address rejected :
     User has moved to rah@gnunux.info

Liste noir

Voici comment faire une liste noir :

smtpd_sender_restrictions = check_sender_access hash :/etc/postfix/sender_checks

Et dans le fichier /etc/postfix/sender_checks :

root@yogi.priv   554 I don’t need your viagra !

(ne pas oublier postmap)

Les courriels envoyés depuis root@yogi.priv seront refusés avec comme message "I don’t need your viagra !".

L’option check_sender_access permet de vérifier l’envoyeur et l’option smtpd_sender_restrictions permet de restreindre les utilisateurs.

Duplication des flux

BCC (blind carbon-copy), permet de rajouter un destinataire caché. Avec des expressions régulières nous allons pouvoir rajouter un destinataire.

Le but étant de faire une duplication du courriel pour un serveur de test, voire une serveur de sauvegarde de courriel.

Pour modifier le table bcc, nous allons utiliser :

recipient_bcc_maps = regexp :/etc/postfix/recipient_bcc

Dans le fichier /etc/postfix/recipient_bcc :

/^((.*)@ibook\.gnunux\.priv)$/ $2@yogi.gnunux.priv

Attention, il ne faut pas faire postmap puisque c’est un fichier d’expression régulière et non un fichier hash.

Maintenance de postfix

Voir la queue de postfix :

postqueue -p

La queue est la liste des courriels en attente.

Vider la queue :

postqueue -f

Supprimer un courriel dans la queue :

postsuper -d ID

(l’ID est donné par la commande postqueue -p)

Voir les statistiques de la queue :

qshape incoming active deferred

Les journaux d’activité sont /var/log/mail.*.

Commentaires

Configuration de postfix

Salut,

J’ai essaye de creer une blacklist en mettant cette ligne :
smtpd_sender_restrictions = check_sender_access hash :/etc/postfix/blacklist

j’ai fait un postmap blacklist, et qd je teste avec telnet, je mets HELO ou n’importe quel autre commande, il ne repond plus, il ne veut meme plus quitter.

Peux tu me conseiller de verifier auelaue chose peut etre aue j’ai manque quelque chose.

Merci