Page suivante Page précédente Table des matières

11. Sendmail facile !

Eberhard W. Lisse el@lisse.na

Toutes les distributions sont fournies avec un Agent de Transfert de Courriel (le programme qui distribue et délivre les messages). Le père de tous est sendmail (http://www.sendmail.org/).

Sendmail est habituellement préconfiguré, mais si vous avez un besoin particulier (par exemple UUCP), il peut devenir assez pénible. La raison en est qu'à l'écriture initiale de sendmail le langage de configuration a été conçu pour une analyse rapide au prix d'être cryptique. J'ai regardé un fichier sendmail.cf en 1987 et plus jamais depuis 10 ans.

smail est plus facile à comprendre et a toujours eu la caractéristique sympa de traiter les messages par lot, lancer les lots à travers gzip et faire ses adieux à ce travail via UUCP. Cela m'a permis d'économiser pas mal d'argent sur mes factures téléphoniques toutes ces années.

Cependant, il y a un an et demi j'ai trouvé un ensemble logiciel appelé BSMTP (Batched Simple Mail Transport Protocol : Protocole Simple de Transfert de Courriel par Lot) pour prendre en compte les trucs par lots gzippé (compacté par gzip). BSMTP est un ensemble logiciel utilisé avec UUCP. Sendmail utilise le protocole SMTP s'il reçoit ou envoi des courriels à travers TCP/IP, mais vous pouvez fournir des courriels à sendmail directement en utilisant ce protocole. Cet ensemble logiciel va prendre les courriels sortants, mettre en lots beaucoup de messages avec des commandes SMTP insérées entre les messages, gzipper (compacter avec gzip) les lots et les apporter à UUCP pour le transport. De l'autre côté le procédé est inversé, uucp reçoit, l'apporte à un décompacteur qui le fourni à sendmail. Il en résulte une compression de plus de 50%. En utilisant des fonctions avancées d'uucp sous linux vous pouvez parvenir à des débits élevés. BSMTP fonctionne aussi bien avec smail que sendmail et a un module macro qui rend plus facile les configurations de sendmail. J'aime bricoler, alors je l'ai essayé. Cela m'a pris un week end pour faire fonctionner sendmail avec BSMTP/UUCP. Une fois résolu les bases, cela devint plus facile, j'ai seulement eu besoin d'une heure pour l'installer sur ma ligne louée.

Puisque vous avez Linux, vous avez tous les outils nécessaires. Sinon, les installer à partir de votre distribution. Je supposerais que vous avez un DNS fonctionnel avec des champs MX pour notre système et que vous êtes connecté par une ligne louée. Installez les derniers RPMs de sendmail et sendmail-cf dans le répertoire /usr/lib/sendmail-cf.

Prenons quelques lignes dans un fichier appelé linux.mc que l'on trouve dans /usr/lib/sendmail-cf/cf:

divert(-1)
OSTYPE(linux)
FEATURE(use_cw_file)
define(`confCW_FILE', `-o /etc/sendmail/sendmail.cw')
FEATURE(mailertable,`hash -o /etc/sendmail/mailertable.db')
FEATURE(local_procmail)
define(`STATUS_FILE',`/etc/sendmail/sendmail.st')
MAILER(procmail)
MAILER(smtp)

C'est plutôt cryptique, non ?

Passez ce fichier à travers la commande m4 en tapant :

m4 ../m4/cf.m4 linux.mc > sendmail.cf

Cela crée un fichier sendmail.cf d'environ 1200 lignes (toujours illisible pour moi) qui a été utilisé sur mon système.

Maintenant regardons ce que signifie ces lignes :

# divert(-1)

Cette ligne est une directive du préprocesseur de macros que je n'ai jamais cherché à comprendre. Cela a un rapport avec la suppression du caractère de nouvelle ligne (Ndlr: cela évite de rajouter dnl à chaque fin de ligne).

OSTYPE(linux)

Maintenant, c'est plutôt facile, non ? Bon, ce que cela ne vous dit pas est que le programme mail.local, de la distribution sendmail, qui délivre localement le courrier, doit être dans /bin ou alors votre courrier disparaitra sans laisser de trace.

FEATURE(use_cw_file)
define(`confCW_FILE', `-o /etc/sendmail/sendmail.cw')

Qu'est-ce que peut bien être un fichier CW ?

Je reçois beaucoup de courriels à l'adresse el@lisse.na ; Cependant, le nom d'hôte est linux.lisse.na. Pas de problème, nous avons un champs MX qui fait pointer lisse.na sur linux.lisse.na, ok ? Faux. Vous devez dire à sendmail les noms sous lesquels il peut recevoir du courrier sur l'hôte local. Par exemple :

lisse
lisse.na
linux
linux.lisse.na

Si vous manquez de faire cela, sendmail envoi un message d'erreur qui est tout de même peu explicite. Le message de rebond a le sujet suivant :

Subject: Returned mail: Local configuration error

c'est à dire :
Sujet: Courrier renvoyé : erreur locale de configuration

Et la liste des lignes MX est ce qui ne va pas :

   ----- Transcript of session follows -----
554 MX list for nws.com.na. points back to linux.lisse.na
554 el@nws.com.na... Local configuration error


FEATURE(mailertable,`hash -o /etc/sendmail/mailertable.db')

Cette ligne est requise seulement si vous livrez dans des situations particulières. Par exemple, si vous utilisez l'ensemble logiciel BSMTP pour livrer le courriel à Triple A, Inc. via le voisin UUCP bbbbb, ajoutez un champs MX dans le DNS et écrivez dans le fichier mailertable quelque chose comme cela :

.aaa.com.na     bsmtp:bbbbb
aaa.com.na      bsmtp:bbbbb

Un caractère TAB est entre chaque paire, et vous devez utiliser le programme makemap du logiciel sendmail sur le fichier mailertable pour produire le fichier binaire de base de données mailertable.db. Par exemple :

makemap hash < mailertable mailertable

Il y a d'autres systèmes de base de données (par exemple, dbm) mais ne compliquons pas.

FEATURE(local_procmail)

Cette ligne redéfini le gestionnaire de courrier local comme étant procmail. Vous devez vraiment le prendre.

define(`STATUS_FILE',`/etc/sendmail/sendmail.st')

Cette ligne défini le fichier de status. Assurez vous que vous avez créé ce répertoire en étant root.

MAILER(procmail)

procmail a été écrit par Stefan van der Berg à mon Université et mérite son propre article. En résumé c'est LE programme de livraison de courrier local. Sa force réside dans ses capacités de filtrage des messages. Trés sympa pour les listes de messageries.

MAILER(smtp)

Veuillez noter que j'ai laissé de côté l'entrée bsmtp qui serait requise, si vous avez utilisé une entrée BSMTP dans le fichier mailertable. Si vous avez un voisin UUCP, vous aurez aussi besoin d'une entrée mailer qui devra se mettre après smtp.

Maintentant, testez ce fichier de configuration, copiez le dans le répertoire /etc après avoir fait une copie de sauvegarde de l'ancien et redémarrez sendmail. Sous root, j'utilise la commande :

killall -HUP sendmail

Je ne vous ai pas montré comment installer sendmail pour UUCP, BSMTP, de l'anti-SPAM ou des domaines virtuels. Cependant, maitenant que vous maitrisez les bases, cela sera assez facile.


Copyright 1998, Eberhard W. Lisse - Publié dans le numéro 34 de la Linux Gazette, novembre 1998

Adaptation française : Frédéric Gacquer (Neuronnexion)


Page suivante Page précédente Table des matières