Introduction à qmail
PrécédentChapitre 1. GénéralitésSuivant

Organisation de la messagerie qmail

À la différence de sendmail, qmail n'est pas monolithique. Le système qmail se compose de plusieurs programmes tournant sous des UID/GID différents et presque tous non nuls rendant difficile toute tentative d'intrusion. De plus, la gestion des chaînes de caractères dans qmail a été traitée avec beaucoup de soin pour éviter les problèmes de débordement, souvent à l'origine des trous de sécurité. Un groupe d'utilisateurs offre même un prix de 1000$ à toute personne qui trouverait un trou de sécurité dans qmail !

Aucun binaire ne porte le nom qmail. Par contre, beaucoup de binaires ont un nom qui commence par qmail-.

qmail est en fait un ensemble de binaires, tous situés par défaut dans /var/qmail/bin/, comprenant une partie MTA avec ses «facettes» SMTP avec qmail-smtpd et QMTP avec qmail-qmtpd, qmail-inject et mailsubj pour l'injection dans la file d'attente et une partie MDA qmail-local ainsi qu'un petit wrapper pour sendmail.

Les binaires du système qmail ont tous leur page de manuel. L'aide comprend également des pages de manuel supplémentaires décrivant certains formats de fichiers ou d'entêtes par exemple. En voici quelques unes : qmail, qmail-limits, qmail-upgrade, qmail-header, addresses, envelopes.

Le POP3 est disponible via le triplet qmail-popup, checkpassword et qmail-pop3d. Il existe des patches pour les gestionnaires IMAP et POP3 habituels permettant de les utiliser avec qmail, voir la page de qmail http://www.qmail.org/ pour plus de détails. Les messages sont placés dans la file d'attente par qmail-queue. La gestion de la file d'attente est effectuée par differents programmes dont qmail-lspawn, qmail-clean et qmail-rspawn, tous fils du daemon qmail-send. Le traçage via syslog peut être effectué par splogger. Voici un schéma montrant la structure de qmail lorsqu'il est chargé en mémoire :
UTILISATEUR PROGRAMME                 FONCTION
qmails      qmail-send                gestion sortie file d'attente
qmaill      \_ splogger qmail         enregistrement via syslog
qmailq      \_ qmail-clean            nettoyage de la file d'attente
qmailr      \_ qmail-rspawn           gestionnaire messages distants
root        \_ qmail-lspawn ./Mailbox gestionnaire messages locaux
La directive ./Mailbox passée en paramètre à qmail-lspawn est la directive de livraison par défaut. Elle peut très être un tube (pipe) vers un MDA classique comme procmail. C'est par exemple le cas sur la Debian GNU/Linux.

Voici un petit schéma explicatif emprunté au fichier INTERNALS livré avec les sources qui contient une présentation de la structure de la file d'attente de qmail et sa gestion
 qmail-smtpd --- qmail-queue -- qmail-send --- qmail-rspawn -- qmail-remote
               /                    |      \
qmail-inject _/                qmail-clean  \_ qmail-lspawn -- qmail-local

qmail-send gère les messages placés dans la file d'attente par qmail-queue. Il fait appel à qmail-lspawn lui même invoquant qmail-local et qmail-rspawn lui même invoquant qmail-remote. Voir leur page de manuel respectives pour les détails. Un man qmail donne une présentation globale de qmail.

Bien entendu, ces pages de manuel ne seront disponibles que lorsque qmail sera installé. Cependant, une version HTML de ces pages existe à l'URL http://qmail-docs.surfdirect.com.au/docs/qmail-1.03-man/.

Avant de passer à la suite, voici la structure standard du répertoire qmail /var/qmail/
 REPERTOIRE          FONCTION
 /var/qmail          répertoire principal
  \_ alias/          réceptacle des courriels «spéciaux» (root...)
  \_ bin/            binaires de la distribution qmail
  \_ control/        fichiers de configuration 
  \_ man/            pages de manuel
  \_ queue/          la file d'attente
  \_ users/          plan d'adressage (super-fichier d'alias)
Sur Debian GNU/linux, la structure est un peu différente et plus conventionnelle. Les binaires sont répartis entre /usr/sbin/ et /usr/bin/, les pages de manuel sont dans /usr/man/, le répertoire /var/qmail/control/ devient /etc/qmail/ et /var/qmail/queue/ devient /var/spool/qmail via des liens symboliques.

Pour finir cette section, je vous signale l'existence de la «qmail big picture» à l'URL http://www.nrg4u.com/ qui donne une vue synthétique de l'achitecture de qmail.


PrécédentPage principaleSuivant
GénéralitésNiveau précédentPrincipales différences avec la messagerie sendmail