sendmail address rewriting mini-HOWTO

Thomas Roessler, [email protected]

v0.0, 6 May 1998
Ce document d�crit bri�vement la mise en place du fichier de configuration de sendmail pour un acc�s individuel � l'Internet via le r�seau t�l�phonique commut�.

1. Introduction

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 :

  1. que l'envoi de courrier entre utilisateurs locaux soit possible,
  2. que le reste de l'Internet voit les adresses des utilisateurs telles qu'elles sont d�finies au niveau du FAI ( et non les adresses locales ! ).

Pour atteindre cet objectif, on utilisera la fonctionnalit� genericstable de sendmail.

2. Fichiers impliqu�s

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 :

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.

3. Configuration de sendmail

3.1 Le fichier de configuration principal

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 - [email protected]')
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')

Remplacez relai-de-sortie.mon.fournisseur par le nom complet ( FQDN ) correspondant � votre fournisseur d'acc�s.

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

Notez la technique qui consiste � enregistrer la sortie de m4 dans un fichier temporaire avant de l'installer au bon endroit. On �vite ainsi que sendmail ne lise des fichiers de configuration incomplets !

3.2 Modification des adresses

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   [email protected]
maude   [email protected]
root    [email protected]
news    [email protected]

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.

3.3 Alias

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.

4. R�f�rences

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 ).