La configuration de Qmail se fait entièrement via des fichiers
texte tous situés dans
le répertoire /var/qmail/control/ (ou son équivalent le cas échéant).
Les différents programmes composant Qmail lisent le contenu de ces
fichiers et positionnent leurs variables en conséquence.
Des options par défaut sont prises pour chaque fichier inexistant.
Par défaut, un seul de ces fichiers existe, il s'agit de
/var/qmail/control/me qui contient le nom qualifié de la machine.
Un «man qmail-control» donne une liste complète de tous ces
fichiers, des programmes Qmail qui les utilisent ainsi que des options prises
par défaut. C'est très pratique.
Le premier fichiers de configuration que vous serez amené à
modifier est sans doute /var/qmail/control/aliasempty
qui contient le nom de la boite au lettre dans laquelle le MDA
qmail-local livre le courriel lorsqu'il n'y a pas de .qmail.
Sa valeur par défaut est ./Mailbox.
Un autre fichier très important pour vous sera sans doute
locals, qui contient les noms
qualifiés des hôtes considérés comme locaux, c'est à dire ceux pour
lesquels les courriels que vous recevez et qui leurs sont destinés
seront délivrés sur votre machine. Par défaut, cette vraiable vaut
me (votre nom de machine). Un petit exemple vallant mieux
qu'un long discours, voici un exmemple de locals
mamachine.mondomaine.amoi ftp.mondomaine.amoi www.mondomaine.amoi
/var/qmail/control/me contenant
mamachine.mondomaine.amoi
ftp.mondomaine.amoi et www.mondomaine.amoi
pointent sur mamachine.mondomaine.amoi.
D'autres fichiers sont importants comme par exemple
/var/qmail/control/smtpgreeting /var/qmail/control/localiphost /var/qmail/control/defaulthost /var/qmail/control/defaultdomain /var/qmail/control/localiphost /var/qmail/control/smtproutes /var/qmail/control/rcpthosts /var/qmail/control/virtualdomains
Dans le système Qmail, un utilisateur nommé login contrôle toutes les adresses courriel de la forme login-* où l'étoile représente une chaîne quelconque formée de caractères valides pour une adresse.
Pour chaque adresse login-chaine, l'utilisateur peut décider
de créer le fichier ~login/.qmail-chaine qui contiendra les
instructions à suivre par qmail-local, le livreur de courriel (MDA) de Qmail.
Par convention, le fichier ~login/.qmail correspond à
l'adresse login tout court. De plus, le fichier spécial
~login/.qmail-default lorsqu'il existe, joue le rôle de
fichier par défaut.
En l'abscence des fichiers
~login/.qmail et ~login/.qmail-default, qmail-local
livrera par défaut le courriel dans la boite aux lettres au format mbox
~login/Mailbox, à moins que l'administrateur n'ait
positionné la variable /var/qmail/control/aliasempty.
Il en va tout autrement pour les courriels à
destination de login-chaine.
qmail-local ne livrera pas un courriel à destination de login-chaine
s'il ne trouve ni ~login/.qmail-chaine ni
~login/.qmail-default au moment de livrer.
En fait, ce courriel sera intercepté par l'utilisateur spécial alias
si son fichier ~alias/.qmail-default existe et retournera à
l'expéditeur sinon.
Les fichiers ~login/.qmail-* ont tous la même syntaxe.
Plongeons-nous à présent dans le contenu de ces fameux fichiers
.qmail.
Ces fichiers contiennent les instructions que soit suivre le MDA
qmail-local pour livrer le courriel. Çelà peut rappeller vaquement le
mécanisme des fichiers .forward du monde de Sendmail.
Voici un exemple :
# mon .qmail à moi # Un pipe |qbiff # Un forward &moi@ailleurs.laba # Livraison dans une boite aux lettres maildir ./maildir/ # Livraison dans une boite aux lettres mbox ./mbox
moi@ailleurs.laba et livré dans les boites aux lettres
~/maildir/ et ~/mailbox.
./).
Il se terminent toujours par une barre de répertoire
pour les boites au format maildir et jamais pour les boites au format
mbox. Les boites au format maildir doivent être créées avant d'être
utilisées au moyen de l'utilitaire maildirmake qui fait partie de la
distribution Qmail;qmail-local exécute les livraisons vers tubes de la forme
|commande
sh -c commande
Return-Path et
Delivered-To mais qmail-local passe beaucoup d'informations
par variables d'environnement, par exemple SENDER et
RECIPIENT (faire «man qmail-command».
Pour les commandes qui ne ne prennent pas en
compte ces variables, comme procmail ou formail par exemple, il suffit
d'utiliser le binaire preline livré avec Qmail qui insère les champs
Return-Path et Delivered-To au message avant de
l'écrire dans l'entrée standard de la commande. Par exemple :
|preline formail -A "Status: RO" | procmail
Je vous conseille fortement de faire un «man dot-qmail»
pour en savoir plus sur la syntaxe et les subtilités du format des
fichiers .qmail.
Pour effectuer une modification sûre de vos fichiers .qmail,
Dan Bernstein recommande de positionner le bit sticky sur son
répertoire personnel par un
chmod +t $HOME
chmod -t $HOME
alias edqm='chmod +t ~ && vi ~/.qmail && chmod -t ~'
~/.bash_profile.
À faire.
On peut utiliser serialmail, http://pobox.com/~djb/serialmail.html.
Le reste de cette section est à écrire.
Ma machine personnelle n'est
reliée à l'Internet que de façon intermittante au travers d'une
connection PPP avec mon FAI. maildir2smtp permet de vider une boite
aux lettres au format maildir sur un port SMTP.
Il suffit donc de faire en sorte que les courriels à destination de
l'extérieur (i.e. qui doivent transiter par du PPP dans mon cas) soient
systématiquement livrés dans une boite aux lettres au format maildir
spécialement prévue à cet effet. Ensuite,
lors de la prochaine connection PPP, maildir2smtp videra cette boite au
lettres en envoyant son contenu sur le port SMTP de la passerelle courriel de
mon FAI. Celà est d'ailleurs fait automatiquement par le script
/etc/ppp/ip-up.local qui est executé à chaque établissement
de liaison TCP/IP par PPP. L'avantage d'un tel système est que les
courriels ainsi stockés ne restent pas dans la queue pour rien, les
logs ne sont donc pas pollués par des messages d'erreur.
Il faut créer une boite au lettres ~alias/ppp par :
root$ maildirmake ~alias/pppdir root$ chown -R alias ~alias/pppdir
~alias/.qmail-ppp-default
qui doit contenir ./pppdir/.
Enfin il faut ajouter la ligne
:alias-ppp
/var/qmail/control/virtualdomains.
Il ne reste plus qu'à ajouter au fichier /etc/ppp/ip-up.local
(lui même appellé par /etc/ppp/ip-up) la ligne suivante :
maildir2smtp ~alias/pppdir \
alias-ppp- mail.votre.provider \
votre.host.name 2>>/var/log/maildir2smtp.log
Section à écrire.