Vous êtes sur la page 1sur 8

INSTALLATION D'UN SERVEUR DE MESSAGERIE POSTFIX

LINUXTIPS - Mes trucs et


astuces sous LINUX
-- Réseau - Services Réseaux --

Services Réseaux INSTALLATION


D'UN SERVEUR DE
MESSAGERIE
POSTFIX
Laurent Rayssiguier
mardi 27 juin 2006

Résumé :
Mise en place rapide d'un serveur de messagerie Postfix.
Pas trop de détails, mais un article rapide, à compléter au besoin.

LINUXTIPS - Mes trucs et astuces sous LINUX Page 1/8


INSTALLATION D'UN SERVEUR DE MESSAGERIE POSTFIX

Préambule
Je viens de faire dans ce titre un abus de language très courant.
Postfix n'est pas un serveur de messagerie complet, mais un serveur SMTP. SMTP est le protocole
de transport des messages sur Internet, mais ne permet pas aux clients messagerie (comme outlook
express ou thunderbird) de lire les emails.
Il faut pour cela un service POP3 ou IMAP.
Ce qui implique qu'il faut installer un logiciel complémentaire à Postfix, comme Dovecot, Cyrus IMAP,
ou Courier IMAP.
Ici j'utiliserai Dovecot, le serveur qui est choisi en standard par RedHat dans ses installations.

Introduction
Par défaut les distributions Redhat ou CentOS utilisent le serveur de messagerie sendmail.

Ce serveur est très fiable, mais a rencontré dans son histoire une quantité de bugs de sécurité
impressionnante.
Ceci est dû au fait que lors de sa conception, Internet était limité et la délinquance informatique
quasiment nulle.

Ce logiciel est donc souvent abandonné et remplacé par un autre logiciel plus fiable.
Dans la liste des serveurs SMTP, les plus courants sont postfix et qmail.

Je vais traiter ici de l'installation et la configuration de base de postfix, le serveur de mail qui
progresse le plus actuellement.

Installation de POSTFIX avec YUM


Yum est le gestionnaire de paquet évolué utilisé par Redhat et CentOS.
Il permet d'installer, de mettre à jour ou de supprimer des paquetages logiciels avec ses
dépendances.

C'est lui que j'utilise pour installer postfix et system-switch-mail un utilitaire de changement de
service SMTP.

yum -y install postfix system-switch-mail

Une fois l'installation faite, lancez la commande


system-switch-mail
Vous obtenez l'écran suivant :

LINUXTIPS - Mes trucs et astuces sous LINUX Page 2/8


INSTALLATION D'UN SERVEUR DE MESSAGERIE POSTFIX

sélection switch mail


Choisissez Postfix et validez votre choix.

validation du choix
Validez le message.

On peut maintenant supprimer sendmail sans regrets.

rpm -e sendmail

System-swicth-mail ayant fait son travail, c'est maintenant postfix qui fonctionne sur votre serveur.

On peut le vérifier avec la commande suivante :

[root@centOS ~]# lsof -i -n |grep smtp


master 3920 root 12u IPv4 9004 TCP 127.0.0.1:smtp (LISTEN)

Installation de Dovecot
Comme pour postfix, on utilise yum.

LINUXTIPS - Mes trucs et astuces sous LINUX Page 3/8


INSTALLATION D'UN SERVEUR DE MESSAGERIE POSTFIX

yum -y install dovecot

Voila, c'est tout

Activation des services au démarrage de l'ordinateur


Postfix est lancé d'office par le système, alors que dovecot bien qu'installé ne sera pas démarré lors
du boot du serveur.
Pour corriger ceci, il suffit de taper les commandes suivantes.

chkconfig dovecot on
chkconfig postfix on # Inutile, mais on ne sait jamais...

Paramétrage de POSTFIX
Postfix étant un serveur SMTP, il va "écouter" sur le port standard 25.
Ceci est configuré dans le fichier master.cf, mais on va conserver ce paramètre.

Le paramétrage de postfix se fait dans le fichier /etc/postfix/main.cf

Il faut donc, éditer le fichier /etc/postfix/main.cf pour modifier les valeurs par défaut importantes.

main.cf possède une pléthore de paramètres qu'il serait trop long de détailler.
Je vous conseille de lire le livre "Postfix La Référence - Auteur Kyle DENT - ed O'Reilly" qui comme
son nom l'indique est LA REFERENCE sur ce serveur SMTP.
Vous trouverez ce livre sur le site de la librairie EYROLLES

Ceci dit, seuls quelques uns doivent être adaptés pour correspondre à ses besoins.

Voici les paramètres à modifier avec une explication rapide.


Pour plus de détail voir les documentations de postfix.

myhostname = monserveur.mondomaine.fr
# Comme son intitulé l'indique, c'est le nom canonique du serveur de mail.
# Son nom complet en fait.
# Penser à renseigner ce nom avec la concordance avec son adresse ip dans le
# fichier /etc/hosts, sinon, postfix peut se comporter bizarrement.

mydomain = mondomaine.fr
# Le nom de domaine que va gérer postfix

myorigin = $mydomain

LINUXTIPS - Mes trucs et astuces sous LINUX Page 4/8


INSTALLATION D'UN SERVEUR DE MESSAGERIE POSTFIX

# Quand le serveur envoie un email, il complète le message avec le nom du


# domaine émetteur.

inet_interfaces = $myhostname, localhost


# Sur quelles interfaces écoute postfix, par défaut postfix écoute sur
# localhost uniquement, on peut choisir de mettre inet_interfaces = all pour
# qu'il écoute sur toutes les interfaces ou spécifier chaque interface comme
# ici. Attention, l'adresse correspondant à la variable myhostname est lue
# dans le fichier /etc/hosts

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


# Pour quelles entités postfix va recevoir les emails, par défaut uniquement
# pour localhost, il faut définir en supplément $mydomain pour avoir un
# serveur de messagerie pour tout un domaine, on peut également gérer des
# alias rattachés au serveur comme ici www.mondomaine.fr

mynetworks = 213.190.70.0/24, 127.0.0.0/8


# Variable à modifier quand on a plusieurs sous réseaux, mais postfix par
# défaut accepte le relais pour les réseaux représentés par ses interfaces.
# Cette variable permet de bloquer les spams venant de réseaux inconnus.

relayhost = [mailserver.isp.tld]
# Cette variable est très utile dans le cas où vous avez un serveur interne de
# messagerie inconnu d'Internet. Entrez entre crochets le nom du serveur
# sortant SMTP de votre Fournisseur d'accès, par exemple [smtp.wanadoo.fr].
# Les messages sortant sur Internet seront expédiés à ce serveur au lieu
# d'être émis en direct par votre serveur. Cela contourne les filtres antispam
# de certains serveurs de messagerie.

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# Valeurs par défaut du fichier aliases.
# Pour avoir plus d'informations, jettez un oeil au "man aliases"
# Ce fichier sert à créer des comptes virtuels et à indiquer au système qui
# est l'administrateur de messagerie qui recevra les messages d'erreur du
# serveur.

Pensez à demander à postfix de relire sa configuration en cas de changements par la commande


"postfix reload".

En cas de modifications importantes comme inet_interfaces, redémarrez complètement postfix avec


la commande "/etc/init.d/postfix restart".

Identification serveur de mail pour un domaine

LINUXTIPS - Mes trucs et astuces sous LINUX Page 5/8


INSTALLATION D'UN SERVEUR DE MESSAGERIE POSTFIX

Lorsqu'un serveur de mail veut envoyer un email, il doit savoir avec quel serveur il doit parler et où
se trouve ce serveur.
Pour cela il fait comme nous pour la poste il consulte un annuaire Internet nommé DNS.

DNS est un annuaire "éclaté". 13 serveurs "racines" servent la zone "." et interrogent ensuite d'autres
serveurs DNS gérant un domaine en particulier.

Un nom DNS "complet" s'écrit comme ceci mail.caplaser.fr. et un serveur DNS fait sa recherche de
droite à gauche comme ceci :

"." # Interrogation des serveurs "racine" pour connaître les serveurs gérant la zone fr

"fr" # Interrogation des serveurs de zone fr afin de savoir quel serveur gère la zone caplaser.fr

"caplaser.fr" # Interrogation du serveur DNS de Caplaser afin de savoir quelle est l'adresse IP de la
machine mail.caplaser.fr

"mail.caplaser.fr" # Obtention de l'adresse IP

Ceci est la façon de chercher une machine avec son nom sur Internet, mais qu'en est-il des serveurs
de messagerie en particulier ?

DNS fourni un enregistrement particulier nommé MX pour Mail eXchanger qui référence le(s) nom(s)
du(des) serveur(s) de messagerie pour le domaine en question.

On peut voir quels serveurs gèrent un domaine avec la commande linux host.
[root@centOS ~]# host -t mx caplaser.com
caplaser.com mail is handled by 20 mx2.caplaser.fr.
caplaser.com mail is handled by 10 mail.caplaser.com.

host fait une requête DNS qui renvoie uniquement les champs MX pour le domaine demandé,
caplaser.com dans ce cas.

Création d'un compte de messagerie


Les comptes de messagerie ne doivent pas avoir d'accès à la console du système linux.

Pour ce faire, pensez à indiquer un shell particulier pour l'utilisateur créé.

Ce qui donne ceci pour l'utilisateur toto :

useradd -s /sbin/nologin -c "Commentaire Utilisateur Toto" toto

Affectez-lui ensuite un mot de passe par la commande :

LINUXTIPS - Mes trucs et astuces sous LINUX Page 6/8


INSTALLATION D'UN SERVEUR DE MESSAGERIE POSTFIX

passwd toto

Il vous sera demandé son mot de passe, puis une confirmation de ce dernier.

Suppression d'un compte de messagerie


Reprenons l'exemple de notre utilisateur toto :

userdel -r toto

L'option -r va supprimer également le dossier de l'utilisateur et sa boite aux lettres dans


/var/spool/mail. Ne l'indiquez pas si vous voulez conserver ses données pour les attribuer par
exemple.

Verrouillage d'un compte ( root uniquement )


Pour verrouiller un compte provisoirement, utilisez la commande suivante :

passwd -l toto

Déverrouillage d'un compte ( root uniquement )


Pour déverrouiller ce compte, utilisez la commande :

passwd -u toto

Changement de mot de passe


Comme lors de la création du compte, c'est à dire :

passwd le_nom_du_compte

Test de la messagerie
Vous pouvez envoyer un email de test en ligne de commande comme ceci ( exemple pour un email
à toto ) :

LINUXTIPS - Mes trucs et astuces sous LINUX Page 7/8


INSTALLATION D'UN SERVEUR DE MESSAGERIE POSTFIX

[root@centOS ~]# mail toto@localhost


Subject: Test email
Bonjour,
Ceci est un test
Il doit se finir par une ligne contenant un point uniquement, comme ceci
.
Cc:
[root@centOS ~]#

L'email est parti normalement

Il ne vous reste plus qu'à faire du POP avec les paramètres du compte toto pour lire votre mail.

Débug de postfix
En cas de problèmes de messagerie, pensez à lire les logs ! C'est standard sur Linux, mais on oublie
souvent.

Les logs de postfix et du service mail en général sont dans /var/log/maillog

Faites un "tail -f /var/log/maillog" pour voir les messages en temps réel, ou utilisez grep pour
rechercher une chaîne de caractères.

Une fois que vous avez le message d'erreur, essayez de le comprendre, et en désespoir de cause,
jetez un oeil sur www.google.fr

Ce moteur de recherche est phénoménal, et vous permet de faire des recherches sur des forums,
qui sont souvent très bien renseignés sur le sujet.

Ne vous inquiétez pas, si vous avez une erreur, il y a peu de chances que d'autres personnes ne les
aient pas eu.

LINUXTIPS - Mes trucs et astuces sous LINUX Page 8/8