On suppose que votre accés à l'Internet repose sur le principe le plus couramment rencontré de nos jours : une connexion au réseau d'un fournisseur d'accés via une liaison PPP au dessus d'une liaison série. Le courrier qui vous est destiné est récupéré auprés d'un serveur POP ou IMAP tandis que le courrier sortant est transmis via SMTP. Comme vous ne possédez pas de nom de domaine, tout doit transiter par la même adresse.
On suppose vous avez déjà installé une version récente du sendmail d'Eric Allman. A l'écriture de ces lignes, la version courante est la 8.8.8. Elle devrait fonctionner sans problèmes.
Le texte fait parfois référence à certaines spécificités des distributions GNU/Linux de Debian. Les utilisateurs de systèmes différents adapteront.
Vérifiez que vous disposez bien des informations suivantes :
On attend de la configuration à venir :
Pour atteindre cet objectif, on utilisera la
fonctionnalité genericstable
de sendmail.
On regroupe tous les fichiers de configuration de sendmail dans
un répertoire particulier sous /etc
:
/etc/mail
. Sendmail s'attendant à les trouver
en /etc
, /etc/sendmail.cf
sera un lien
symbolique vers /etc/mail/sendmail.cf
.
On trouvera dans /etc/mail
:
aliases
- des adresses supplémentairesgenericsdomain
- diverses informations sur la
configuration du systèmegenericstable
- règles de traductionsendmail.cf
- fichier de configuration de
sendmailsendmail.mc
- la matrice du
sendmail.cf
.Certains de ces fichiers s'accompagnent de fichiers
.db
contenant les bases de données
hachées que sendmail utilise directement.
L'arborescence d'origine de sendmail est censée se
trouver en /usr/lib/sendmail.cf
ainsi que c'est le cas
avec les distributions GNU/Linux Debian. Reportez vous à la
documentation de votre distribution si celle-ci diffère.
La configuration de Sendmail repose sur un ensemble de
règles assez complexes. Bien que cela puisse s'avérer
trés puissant, il n'est pas courant de fabriquer ex-nihilo
un sendmail.cf
. Il faudrait de surcroit y passer pas
mal de temps. Si vous êtes motivé, lancez vous dans la
lecture de la bible disponible chez O'Reilly.
Au lieu de forger à la main les règles, on utilise
le pré-processeur de macros m4
pour fabriquer
un fichier de configuration à partir des
éléments préts à l'emploi qui sont
fournis avec sendmail.
Jetons un oeil sur les premières lignes du
sendmail.mc
:
include(/usr/lib/sendmail.cf/m4/cf.m4) VERSIONID(`sendmail.mc - roessler@guug.de') OSTYPE(debian) define(`ALIAS_FILE',`/etc/mail/aliases')
Tout d'abord, on inclut cf.m4
. Ce fichier m4
contient de nombreuses macros utiles pour la suite. Ne vous trompez
pas dans les chemins d'accès. Ceux que nous donnons ici
correspondent typiquement à un système GNU/Linux
Debian. La macro OSTYPE
positionne les valeurs par
défaut de certaines variables. Si vous n'utilisez pas une
Debian, remplacez ici "debian" par "linux". ALIAS_FILE
fournit à sendmail l'emplacement du fichier d'alias.
Les lignes suivantes forcent l'utilisation des
fonctionnalités genericstable
et
précisent où trouver les fichiers nécessaires
:
FEATURE(masquerade_envelope) FEATURE(genericstable, `hash -o /etc/mail/genericstable') GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
masquerade_envelope
réclame qu'une mise en
forme du type en-tête soit appliquée à
l'enveloppe des messages à expédier. Est
concernée l'adresse vers laquelle les agents de transport
extérieurs dirigeront leurs messages d'avertissement ou
leurs avis d'échecs. Les fichiers generics*
seront détaillés plus loin.
A présent, on définit un hôte intelligent ( "smart agent" ), c'est à dire une machine capable de gérer le courrier sortant à notre place. Il ne s'agit pas nécessairement des serveurs POP ou IMAP de l'ISP. La hotline vous aidera le cas échéant à dissiper les doutes.
define(`SMART_HOST',`relai-de-sortie.mon.fournisseur')
Les deux dernières lignes incluent les définitions des "mailer" grâce auxquels sendmail détermine comment manipuler les différents types de courrier :
MAILER(local) MAILER(smtp)
Pour générer le fichier sendmail.cf
à partir du sendmail.mc
, exécutez les
commandes suivantes en tant qu'utilisateur root :
# m4 sendmail.mc > _sendmail.cf # mv -f _sendmail.cf sendmail.cf
m4
dans un fichier temporaire avant de l'installer au
bon endroit. On évite ainsi que sendmail ne lise des
fichiers de configuration incomplets !
On commence par préciser à sendmail les adresses
à considérer comme locales. Pas de difficultés
: rentrez le nom complet de votre machine dans le fichier
/etc/mail/genericsdomain
. Pour obtenir ce nom,
exécutez la commande suivante :
$ hostname -f
Passons aux règles de reécriture proprement dites
: /etc/mail/genericstable
. Ce fichier est formé
de deux colonnes séparées par des blancs. La
première contient les adresses locales et la seconde les
adresses électroniques qui doivent être
employées à la place. Le fichier devrait ressembler
à ça :
harry harryx@mon.fai maude maudey@son.fai root francois@mon.fai news francois@mon.fai
Il devrait y avoir une entrée pour chaque compte sur la machine isolée de façon à ce que le courrier sortant du système comporte des informations d'en-tête correctes.
Afin d'améliorer les performances, sendmail n'utilise pas directement ce fichier mais une version hachée. Pour la créer, exécutez la commande suivante :
# makemap -r hash genericstable.db < genericstable
Notez que les règles issues de genericstable
ne s'appliquent pas au courrier local ni à celui
que vous recevez de l'extérieur. La traduction n'a lieu que
si un message est transmis au relai de votre FAI.
Le fichier d'alias contient des adresses supplémentaires
qui ne sont valables que pour les messages locaux. Ceci
s'avère utile pour les comptes de maintenance tels
root
qui reçoivent des messages
créés automatiquement par le système
d'exploitation.
Le point de départ d'un /etc/mail/aliases
pourrait ressembler à ça :
root: francois news: root postmaster: root mail: root www: root nobody: /dev/null MAILER-DAEMON: nobody
Dans l'exemple ci-dessus, le courrier à destination des
utilisateurs root
, news
,
postmaster
, mail
, et www
sont renvoyés vers francois
, tandis que ceux
pour nobody
et MAILER-DAEMON
seront
redirigés vers le /dev/null
.
De même que le genericstable
, le fichier
aliases
peut contenir beaucoup de
données. Comme il serait inefficace que sendmail utilise le
fichier texte tel quel, le mécanisme employé pour le
genericstable
s'applique encore : on
génère une base de données hachée. Au
lieu de la commande makemap
, rentrez cette fois la
commande newaliases
. Tout fonctionne
automagiquement.
Les sources de sendmail sont fournies avec une documentation
abondante. Lisez la donc, et étudiez plus
particulièrement le fichier /cf/README
.
Si vous souhaitez explorer davantage les options de configuration de sendmail, procurez vous la référence en la matière par Bryan Costales, Eric Allman et Neil Rickert : "Sendmail" ( O'Reilly, 1993 ).