3. Installation de base

Qmail n'est pas disponible en version binaire compilée pour des raisons de copyright semble-t-il, mais les fichiers sources ainsi que la documentation sont disponibles dans toutes les bonnes crèmeries FTP de la planète. Rien ne vous empèche non plus de récupérer l'archive sur le site même de Qmail http://www.qmail.org ou l'un de ses nombreux miroirs. Les sources sont également disponibles sous forme de paquetages source pour les distributions Linux Debian et RedHat pour ne citer qu'elles. En fait, Qmail tourne sous quasiment tous les Unix. Je présente ici l'installation de Qmail sur un système RedHat 4.2 muni de Sendmail. Il est cependant très simple d'adapter les choses aux autres configurations.

3.1 Précompilation et compilation

Récupérer et décompresser l'archive est un jeu d'enfant. Il convient ensuite de lire le fichier INSTALL. Je ne fais ici que reprendre son contenu presque mot pour mot.

Il y est dit tout d'abord que l'on peut éditer le fichier conf-qmail pour modifier par exemple le répertoire Qmail (qui est par défaut /var/qmail/). Je suppose dans toute la suite que le répertoire Qmail est bien /var/qmail/. De même, pour modifier les UID/GID associés à Qmail, il faut éditer les fichiers conf-users et conf-groups.

La distribution Linux Debian intègre déjà les utilisateurs/groupes Qmail, l'installation n'en est que facilitée.

Il faut à présent créer le répertoire /var/qmail/ ou son équivalent le cas échéant. On peut maintenant lancer la compilation des binaires puis celle des pages de manuel par


root$ make
root$ make man

3.2 Création de l'arborescence

Il faut à présent créer l'arborescence Qmail puis vérifier que tout s'est bien passé


root$ make setup
root$ make check

Le check ne doit afficher aucun message.

À ce stade, on peut faire la configuration minimale du MTA par un


root$ ./config-fast votre.host.name

Celà a pour effet de créer les fichiers minimum dans /var/qmail/control (me surtout). Si vous êtes prudent, vous préfèrerez sans doute ./config à ./config-fast votre.host.name. Vous pouvez lire le fichier INSTALL.ctl pour plus de détails.

La lecture du fichier INSTALL.alias apprend comment remplacer son vieil /etc/aliases par un /var/qmail/alias. Le minimum est de faire


root$ cd ~alias
root$ touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
root$ chmod 644 ~alias/.qmail*

En fait, l'utilisateur alias est en mesure de récupéer les courriels pour lesquels le MDA qmail-local n'a pas trouvé le destinataire. Pour ce faire, il suffit de créer un fichier .qmail, ici pour root, postmaster et mailer-daemon. L'utilisateur alias recevra tout les courriels qui n'ont pas trouvé preneur si l'on crée le fichier ~alias/.qmail-default. Par défaut, les messages à destination de ces adresses sont dirigés vers ~alias/Maildir car leur .qmail est vide. Nous vérons plus loin la syntaxe (très simple) des .qmail.

Le fichier INSTALL nous recommande à présent de lire le fichier INSTALL.mbox qui explique en long et en large le pourquoi du comment des format de boites au lettres mbox et maildir. Ceux qui veulent garder la livraison des messages dans /var/spool/mail (ou équivalent, suivant l'UNIX utilisé) doivent lire le fichier INSTALL.qsmhook qui explique pourquoi c'est une mauvaise idée et comment la suivre malgrés tout. Pour finir, sachez que les pages de manuel nommées maildir et mbox livrées avec Qmail détaillent les deux formats de boite aux lettres reconnus par le MDA qmail-local.

3.3 Mise en route

Il faut maintenant lire le fichier qmail-upgrade si l'on veut savoir comment passer en douceur de Sendmail à Qmail. Pour ma part, ma machine n'est pas une supper-passerelle de courriel, j'ai tout simplement désinstallé Sendmail (après avoir pris soin de sauvegarder les fichiers de configuration /etc/sendmail.cf et /etc/aliases au cas où).

À ce stade, Qmail est installé mais ne tourne pas encore. Vous pouvez passer à la phase de tests de préinstallation détaillée dans le fichier INSTALL.

Se procurer (ou créer) le script qmail dans /etc/rc.d/init.d/ (ou /etc/init.d/ pour une Debian). En voici un exemple pour une redHat 4.2 :


#!/bin/sh

# Source function library.
. /etc/rc.d/init.d/functions

case "$1" in
  start)
    echo -n "Starting qmail services: "
    touch /var/lock/subsys/qmail
    env - PATH="/var/qmail/bin:$PATH" \
    csh -cf 'qmail-start ./Mailbox splogger qmail &' >/dev/null
    echo "qmail-start launched"
    ;;
  stop)
    echo -n "Stopping qmail services: "
    killall qmail-send
    rm -f /var/lock/subsys/qmail
    echo "qmail-send killed"
    ;;
  *)
    echo "Usage: qmail {start|stop}"
    exit 1
esac

exit 0

Je suppose dès maintenant que Sendmail ne tourne plus et qu'il a été stoppé par exemple par le script prévu à cet effet dans /etc/init.d/ (ou /etc/rc.d/init.d/). Il faut maintenant remplacer le binaire Sendmail par le «wrapper» Sendmail de Qmail : (Si vous avez désinstallé Sendmail, vous pouvez sauter la première ligne)


root$ mv /usr/lib/sendmail /usr/lib/sendmail.bak
root$ ln -s /var/qmail/bin/sendmail /usr/lib/sendmail

Il ne faut pas oublier de rajouter les lignes suivantes au /etc/profile pour les shells Bourne :


PATH="$PATH:/var/qmail/bin"
MAIL="$HOME/Mailbox"
export PATH MAIL 

Faire l'équivalent pour les C-shells.

N'oubliez pas non plus de commenter les lignes SMTP et POP3 du fichier /etc/inetd.conf en les préfixant d'une dièse puis d'ordonner à inetd de se réinitialiser par un


root$ kill -HUP pid_de_inetd

Nous véront dans la section suivante comment mettre en place le support SMTP et POP3.

Voilà, tout est en place, il ne reste plus qu'a lancer Qmail par la commande


root$ /etc/rc.d/init.d/qmail start

On peut continuer à vider la queue de Sendmail si nécessaire en faisant des


root$ /usr/lib/sendmail.bak -q

Celà peut durer plusieurs jours.

Vous pouvez procéder aux tests post-installatoires décrits dans le fichier INSTALL. N'oubliez surtout pas que qmail-local refusera de livrer du courrier dans le répertoire d'un utilisateur qui serait en g+w ou o+w. D'ailleurs Qmail vous le dira dans ses logs.

Notons que pour l'instant, Qmail n'écoute ni le port 25 (SMTP), ni le port 110 (POP3). La mise en place du support de ces protocoles fait justement l'objet de la section suivante.