Introduction à qmail
PrécédentSuivant

Chapitre 4. Configuration : la base

Table des matières
Fichiers de contrôle
Livraison par qmail-local et utilisateur alias
Syntaxe des .qmail*
Gestion de la file d'attente (à compléter)
Listes de diffusion par qlist (à faire)

Fichiers de contrôle

La configuration de qmail se fait presque entièrement via un ensemble de petits fichiers texte de «contrôle» 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 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.

Vous pouvez utiliser la commande qmail-showctl pour obtenir un rapport sur les différents fichiers de contrôle présents sur votre système qmail ainsi que les valeurs par défaut utilisées.

Il ne faut surtout pas oublier de demander à qmail de relire ses fichiers de contrôle après la modification de l'un d'entre eux. Pour ce faire, il suffit de faire un
root:bash$ kill -HUP $(pidof qmail-send)

aliasempty

Le premier fichier de contrôle que vous serez amené à modifier est sans doute /var/qmail/control/aliasempty. Il contient le nom de la BAL dans laquelle le MDA qmail-local livre le courriel lorsqu'il n'y a pas de .qmail. Sa valeur par défaut est ./Mailbox.

Cette règle de livraison par défaut peut néanmoins être spécifiée en ligne de commande à qmail-start lors du lancement de qmail, voir la page de manuel. Elle sera transmise à qmail-lspawn.

Pour conserver la livraison par défaut dans /var/spool/mail, vous pouvez imiter le paquetage qmail de la Debian GNU/Linux : se servir du MDA procmail et lancer qmail par
 qmail-start |/usr/local/sbin/qmail-procmail
Le script exécutable /usr/local/sbin/qmail-procmail contenant
 #!/bin/sh
            
 /var/qmail/bin/preline /usr/bin/procmail && exit 0

 # Erreur EX_TEMPFAIL ?
 [ $? = 75 ] && exit 111

 # Sinon on renvoie une «Permanent Error»
 exit 100

locals

Un autre fichier très important pour vous sera sans doute /var/qmail/control/locals, utilisé par qmail-send. Il contient les noms 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 livrés sur votre machine. Par défaut, cette variable vaut la même valeur que le fichier de contrôle me (votre nom de machine). Un petit exemple valant mieux qu'un long discours, voici un exemple de locals
mondomaine.amoi            
mamachine            
mamachine.mondomaine.amoi
ftp
ftp.mondomaine.amoi
www
www.mondomaine.amoi
/var/qmail/control/me contenant
mamachine.mondomaine.amoi
Bien sûr, il faudra de plus que les champs MX dans le DNS de ftp.mondomaine.amoi et www.mondomaine.amoi pointent sur mamachine.mondomaine.amoi.

N'oubliez pas d'avertir qmail-send après toute modification du fichier locals en lui envoyant un signal HUP :
root:bash$ kill -HUP $(pidof qmail-send)

defaulthost et defaultdomain

Les deux fichiers de contrôle /var/qmail/control/defaulthost et /var/qmail/control/defaultdomain s'avèrent très utiles. Il permettent de spécifier la façon dont qmail-inject complète les adresses destinataires incomplètes. Ainsi, une adresse ne contenant pas de partie domaine sera complétée par defaulthost et une adresse dont la partie domaine ne contient pas de point sera complétée par defaultdomain. La valeur par défaut est la même que celle de me, ce qui ne correspond pas forcément à ce que vous souhaitez.

Les variables d'environnement QMAILDEFAULTDOMAIN et QMAILDEFAULTHOST ont priorité sur le contenu des fichiers de contrôles correspondants.

rcpthosts

Le fichier de contrôle /var/qmail/control/rcpthosts est utilisé par qmail-smtpd. Il permet de contrôler le relayage de courriel par la machine via SMTP.

Lorsque le fichier rcpthosts existe, qmail-smtpd refusera tout courriel dont la partie domaine de l'adresse destinataire ne figure pas dans rcpthosts. Par défaut, c'est à dire en l'abscence de rcpthosts, qmail-smtpd accepte tous les courriels.

Voici un exemple de rcpthosts:
.mondomaine.amoi
mondomaine.amoi                            
qmail-smtpd refusera ici tout courriel à destination d'une adresse extérieure au domaine mondomaine.amoi.

Il est bien entendu très important que rcpthosts autorise au moins les machines figurant dans le fichier de contrôle locals pour que vous puissiez recevoir les courriels qui leurs sont destinés par SMTP.

rcpthosts est ignoré si la variable d'environnement RELAYCLIENT est positionnée. Auquel cas, qmail-smtpd ajoute son contenu à l'adresse de destination des courriels qui transitent par lui.

Lisez la page de manuel de qmail-smtpd pour en savoir plus.

Le contrôle de relayage par rcpthosts est souvent associé à un contrôle au niveau TCP par un «wrapper» TCP. Voir la section Contrôle de relayage du Chapitre 5. Pour effectuer un rejet des courriels entrants par SMTP suivant l'expéditeur, reportez vous à la section badmailfrom.

badmailfrom

badmailfrom est très utile pour éviter le courriel entrant non sollicité. Il permet de spécifier les adresses d'expéditeurs interdits. qmail-smtpd refusera tout courriel provenant d'eux. Voici un exemple :
@polution.com
polueur@poubelle.com
qmail-smtpd refusera tout courriel provenant du domaine polution.com ou de l'adresse polueur@poubelle.com.

Pour faire du contrôle de relayage, se reportez à la section Contrôle de relayage du Chapitre 5 et la section rcpthosts.

smtproutes

Le fichier de contrôle /var/qmail/control/smtproutes permet de spécifier les relais SMTP que qmail-remote devra contacter pour router les courriels sortants. voir la page de manuel pour plus de détails. Voici un exemple :
premier.domaine:mail.premier.domaine
second.domaine:mail.second.domaine:24
:mail.autre.domaine              
Les courriels à destination de premier.domaine seront transmis par SMTP au port TCP 25 de mail.premier.domaine, ceux à destination de second.domaine seront transmis par SMTP au port TCP 24 de mail.second.domaine. Quant aux autres courriels, ils seront transmis au port TCP 25 de mail.autre.domaine.

qmail-remote utilise aussi les fichiers de contrôle helohost, timeoutconnect et timeoutremote, voir la page de manuel de qmail-remote.

virtualdomains

Le fichier de contrôle /var/qmail/control/virtualdomains contient une liste de domaines virtuels, un par ligne. Un domaine virtuel est un domaine pour lequel la livraison se fera vers une seule adresse. Les domaines virtuels sont pris en compte par qmail-send. Par défaut, aucun domaine virtuel n'est défini. Voici un exemple de fichier virtualdomains :
             
mondomaine.amoi:
.mondomaine.amoi:
.uucp:alias-uucp
:alias-ppp
Dans cet exemple, les courriels à destination d'adresses dans le domaine mondomaine.amoi sont livrés normalement, pour celles se terminant par .uucp, la livraison a lieu à l'adresse alias-uucp, quant aux autres, ils sont livrés à l'adresse alias-ppp.

N'oubliez pas d'avertir qmail-send après toute modification du fichier locals en lui envoyant un signal HUP :
root$ kill -HUP pid_de_qmail-send

Allez voir la page de manuel de qmail-send pour plus de détails.

Et les autres ?

Je n'ai parlé que des principaux fichiers de contrôle, il y en a beaucoup d'autres. Je vous conseille de faire un «man qmail-control». Vous y trouverez une liste de tout les fichiers de configuration, les binaires qui les utilisent ainsi que les valeurs prises par défaut.


PrécédentPage principaleSuivant
QMTP, le petit dernier Livraison par qmail-local et utilisateur alias