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