Installer un serveur de mail (Linux)

Chapitre 10. Monter un serveur
de mail

Vous avez réussi à faire fonctionner votre serveur DNS ? Vous avez
prévu des champs "MX" pour faire fonctionner un serveur mail ? Alors
suivez ce qui suit...

1. Configurer Postfix

1.1. Installer Postfix

Si vous avez sauté le chapitre Configurer son
serveur de mail local
, alors je vous invite à y retourner et à suivre la
procédure qui y est décrite ! Vous aurez alors un serveur Postfix avec
une configuration pour délivrer le mail en local.

1.2. main.cf

La configuration de Postfix se fait dans le fichier
/etc/postfix/main.cf. Utilisez mon fichier
d'exemple pour comprendre les paramètres et bien configurer votre
serveur :

# cp ~/config/main.cf /etc/postfix/

ou :

% wget http://people.via.ecp.fr/~alexis/formation-linux/config/main.cf
# mv main.cf /etc/postfix/

Une fois que vous avez personnalisé le fichier
main.cf en lisant les commentaires contenus dans le
fichier, il faut dire à Postfix de relire sa configuration :

# /etc/init.d/postfix reload

Les utilisateurs qui ont des comptes sur le
serveur peuvent alors reçevoir du mail à l'adresse
nom_du_compte@nom_de_domaine. Le mail reçu pour
l'utilisateur toto est stocké dans le fichier
/var/mail/toto (sauf si l'utilisateur a un
fichier .procmailrc dans son home : cf Le mail en console pour comprendre
procmail).

1.3. Les alias

Les alias permettent de faire des correspondances entre des
adresses mail et des comptes locaux, d'autres adresses mail ou
encore des commandes à exécuter. Ils sont définis dans le fichier
/etc/aliases. La syntaxe de ce fichier est très
simple :

# /etc/aliases
# Fichier d'alias mail
# NE PAS OUBLIER d'exécuter "newaliases" après chaque modification

# Fait suivre le mail reçu à l'adresse <alexis.delattre@nom_de_domaine>
# au compte local "alexis" :
alexis.delattre:	alexis

# Fait suivre le mail reçu à l'adresse <toto@nom_de_domaine>
# à l'adresse <titi@yahoo.fr> :
toto:			titi@yahoo.fr

# Fait suivre le mail reçu à l'adresse <machin@nom_de_domaine>
# aux comptes "user1" et "user2" et à l'adresse <bidulle@exemple.org> :
machin:			user1,user2,bidulle@exemple.org

# A la réception d'un mail à l'adresse <bruit@nom_de_domaine>,
# exécute la commande "/usr/lib/ecartis/ecartis -s bruit" :
bruit:			"|/usr/lib/ecartis/ecartis -s bruit"

Normalement, on définit aussi dans ce fichier à quel compte
local (ou à quelle adresse) le serveur de mail doit faire suivre
le mail destiné à l'utilisateur root. En
effet, comme il n'y a pas besoin d'avoir tous les pouvois pour lire
le mail du root, il serait absurde (et même
dangereux) de lire les mails du root en tant
que root. Il est préférable de faire suivre le
mail du root vers un autre compte ou une autre
adresse.

Il faut également faire des alias pour les adresses
postmaster et abuse, qui
sont deux adresses standard pour pouvoir joindre les administrateurs
du serveur de mail d'un domaine. Par exemple, si vous utilisez un compte
local admin pour lire les logs et les mails
d'administration, ajoutez les lignes suivantes au fichier d'alias :

root:			admin
postmaster:		admin
abuse:			admin

Ensuite, exécutez la commande suivante pour qu'il
regénère la base de donnée d'alias contenue dans le fichier
/etc/aliases.db (ne pas oublier
d'exécuter cette commande après chaque modification du fichier
/etc/aliases) :

# newaliases

1.4. Les adresses virtuelles

Quand le domaine de l'adresse mail n'est pas celui de la machine,
on passe par un mécanisme d'adresses virtuelles pour faire correspondre
ces adresses mail à des comptes locaux, à d'autres adresses mail ou encore à
des commandes à exécuter.

Le nom du fichier contenant les correspondances pour les
adresses virtuelles est définit dans le fichier de configuration de
Postfix /etc/postfix/main.cf par le paramètre
virtual_maps :

virtual_maps = hash:/etc/postfix/virtual

La syntaxe du fichier est semblable à celle du fichier d'alias,
mais sans la séparation par les deux-points :

# /etc/postfix/virtual
# Fichier de correspondance pour les adresses virtuelles
# NE PAS OUBLIER d'exécuter "postmap /etc/postfix/virtual"
# après chaque modification

# Fait correspondre une adresse virtuelle à un compte local
postmaster@exemple.org	admin
alexis@exemple.org	alexis

# Fait correspondre une adresse virtuelle à une autre adresse mail
toto@exemple.org	titi@yahoo.fr

# Fait correspondre une adresse virtuelle à une commande à exécuter
bruit@exemple.org	"|/usr/lib/ecartis/ecartis -s bruit"

Ensuite, exécutez la commande suivante pour qu'il tienne compte
des modifications :

# postmap /etc/postfix/virtual

1.5. Les commandes de base d'administration

Voici une petite liste des commandes de base d'administration de
Postfix :

  • Liste la queue de mails en attente d'envoi :

    % mailq
    

    Cette commande est équivalente à la commande postqueue
    -p
    .

  • Force Postfix à réessayer d'envoyer les mails en attente
    d'envoi immédiatement :

    % postqueue -f
    
  • Supprime un mail de la queue des mails en attente
    d'envoi :

    # postsuper -d mail_ID
    

    mail_ID est l'identifiant du
    mail dans la queue (il apparaît à gauche dans la sortie de la commande
    mailq).

2. Ajouter des serveurs POP et/ou IMAP...

Attention, les protocoles POP et IMAP font transiter les
mots de passe en clair sur le réseau ! Il est possible de les sécuriser
en les faisant passer par des tunnels SSH (cf L'accès à distance par SSH) ou faisant du SSL (non expliqué ici).

2.1. Installer un serveur POP3

Pour ajouter un service POP3 à votre serveur de mail, il suffit
d'installer qpopper :

# apt-get install qpopper

La configuration de qpopper se fait dans
le fichier /etc/qpopper.conf. Par défaut, tout
est commenté, mais les paramètres par défaut doivent vous permettre de
l'utiliser normalement.

2.2. Installer un serveur IMAP

De même, mais avec le package uw-imapd :

# apt-get install uw-imapd