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

3. On y va...

3.1 introduction

Vous trouverez dans le répertoire sendmail-ver/cf/cf une liste de fichier .mc prédéfinis... vous pouvez vous baser sur ceux ci, sur le fichier sendmail-ver/cf/README et sur le fichier sendmail-ver/doc/op/op.me pour vous faire un fichier linux.rtc.mc à votre convenance. Pensez aussi à consulter la FAQ de comp.mail.sendmail

Voici un exemple commenté basé sur la configuration suivante :

Ce document présente l'une des possibilités de sendmail qui permet de définir un mailer particulier comme coûteux. Une autre option disant à sendmail de garder en attente les messages utilisant de tels médias, il nous suffit de définir le mailer smtp comme étant coûteux pour voir tous les messages à destination de l'extérieur rester dans la queue jusqu'à ce qu'on les en chasse explicitement par un sendmail -q, placé par exemple dans le script ip-up lors d'une connexion PPP.

3.2 Le fichier linux.rtc.mc

divert(-1)
#   linux.rtc.mc, version dialup
#   Copyright (C) 1998 Jean Charles Delépine
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 2 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
divert(0)
include(`../m4/cf.m4')dnl On récupère les macros générales...
dnl
VERSIONID(`@(#)linux.rtc.mc, 0.5 (Delépine) 17/05/1998')dnl
dnl
dnl ********************************************************************
OSTYPE(linux)dnl
dnl
dnl A priori on tournera sous linux cette ligne ne fait que définir
dnl un mailer local que l'on va s'empresser de redéfinir mais il vaut 
dnl mieux la laisser au cas où les futures versions de sendmail y
dnl ajouttent de nouvelles fonctionalités.
dnl
dnl ********************************************************************
DOMAIN(generic)dnl 
dnl
dnl le domaine 'generic' défini le nom des .forward, la feature 'redirect'
dnl et l'utilisation de sendmail.cw
dnl
dnl ********************************************************************
GENERICS_DOMAIN(mondomaine.a.moi mondomain)
dnl
dnl défini la classe des domaines influencés par les genericstables
dnl utilisées plus bas. Y mettre tous les noms que votre serveur peut 
dnl prendre suivant les outils utilisés (pine, netscape, mail...) 
dnl
dnl ********************************************************************
FEATURE(always_add_domain)dnl
dnl
dnl j'aime bien recevoir mes courriers locaux avec l'adresse réécrite
dnl
dnl ********************************************************************
FEATURE(masquerade_envelope)dnl
dnl
dnl pour que le from de l'enveloppe soit correct... nécessaire pour
dnl pouvoir contacter certains domaines bien gérés comme pasteur.fr ou 
dnl usenet.fr.net (posts dans des groupe modérés)  
dnl
dnl ********************************************************************
FEATURE(local_procmail)dnl
dnl
dnl Par défaut le mailer local pour linux est mail.local, je lui préfère 
dnl procmail d'autant plus que mail.local n'est généralement pas
dnl fourni avec les distributions actuelles de linux. Il peut être
dnl trouvé dans le package sources de sendmail.
dnl
dnl ATTENTION, procmail est sensé être dans /usr/local/bin mais si vous ne
dnl l'avez pas compilé vous même il est certainement dans /usr/bin... 
dnl FEATURE(local_procmail,``/usr/bin/procmail'')dnl
dnl
dnl ********************************************************************
FEATURE(genericstable,``hash -N /etc/revaliases'')dnl
dnl
dnl un FEATURE(genericstable) suffirait mais je veux rester cohérent
dnl avec la solution "Kit de Jussieu" fournie par le Guide du Rootard,
dnl je renomme donc /etc/genericstable en /etc/revaliases
dnl C'est dans ce fichier que nous définierons les règles de
dnl transcription d'adresse entre adresse locale -> adresse provider.
dnl ex: machin@mondomaine.a.moi -> ftif681124@wanadoo.fr 
dnl
dnl ********************************************************************
FEATURE(nocanonify)dnl
dnl
dnl On ne cherchera pas a canoniser les domaines des messages à
dnl envoyer.
dnl
dnl ********************************************************************
dnl define(`confDOMAIN_NAME',`ppp.domaine.fr')dnl
dnl 
dnl Afin d'être accepté par certains serveurs, il nous faut un nom 
dnl valide... c'est en particulier obligatoire pour pouvoir poster 
dnl des messages dans les groupes modérés de fr.
dnl Si vous disposez d'une adresse IP fixe, vous pouvez mettre ici
dnl le nom DNS de votre machine lors de sa connexion PPP.
dnl
dnl Si votre fournisseur d'accés utilise des adresses dynamiques,
dnl reportez vous à la section 
dnl "Que faire en cas d'attribution dynamique de l'adresse IP" 
dnl
dnl ********************************************************************
define(`confDEF_CHAR_SET', `ISO-8859-1')dnl
dnl
dnl pour que le destinataire sache comment lire notre 8bit
dnl
dnl ********************************************************************
define(`confCON_EXPENSIVE',`True')dnl
dnl
dnl Ce qui coûte cher doit attendre un 'sendmail -q'
dnl
dnl ********************************************************************
define(`confCOPY_ERRORS_TO', `Postmaster')dnl
dnl
dnl Les messages d'erreur doivent être envoyés en copie au Postmaster
dnl
dnl ********************************************************************
define(`confME_TOO', `True')dnl
dnl
dnl Pour que les messages envoyés à une liste locale soit aussi envoyés
dnl à l'auteur
dnl
dnl ********************************************************************
define(`SMART_HOST', `smtp8:[mail.domaine.fr]')dnl
dnl
dnl Ce n'est pas à moi de négocier avec le bout du monde et de toute façon,
dnl n'ayant pas de DNS, je ne saurais pas le faire...
dnl On utilise smtp8 pour envoyer les accents en 8 bits sans passage
dnl par le quoted unreadable. Attention, on considère ici que
dnl mail.domaine.fr dispose d'un MTA correct acceptant les messages en 
dnl 8 bits (soit la plupart si ce n'est tout les fournisseurs d'accès)
dnl
dnl ********************************************************************
define(`SMTP_MAILER_FLAGS', `e')dnl
dnl
dnl Le flag 'e' est là pour expensive : smtp coûte cher !
dnl
dnl ********************************************************************
dnl
MAILER(local)dnl
MAILER(smtp)dnl
dnl 
dnl Définition des mailers qui seront utilisés.
dnl
dnl ********************************************************************

3.3 Création du sendmail.cf

Placez votre linux.rtc.mc modifié dans le repertoire sendmail-ver/cf/cf, puis lancez les commandes :

cd sendmail-ver/cf/cf
m4 < linux.rtc.mc > sendmail.cf

Copiez le sendmail.cf dans /etc

3.4 Atteindre le serveur du fournisseur d'accès

À partir des versions 8.7 de sendmail (si votre version est antérieure : changez-en !) sendmail utilise les service switch sur les systèmes les supportant (Ultrix, Solaris, OSF/1, linux-libc6...) et implante lui même ces services via le fichier /etc/service.switch sur les autres systèmes (SunOS, HP-UX, BSD, Linux-libc5, ...)

Si votre système utilise la Glibc2 (RedHat 5, Debian Hamm,...) vous devrez utiliser un fichier /etc/nsswitch.conf dont voici un exemple :

     # /etc/nsswitch.conf
     #
     # Name Service Switch configuration file.
     #
     
     passwd:     files
     shadow:     files
     group:      files

     # On veut que le fichier /etc/hosts soit visité en
     # premier. 
     # Attention de bien laisser une référence au service de noms (DNS)
     # ou vous ne pourrez plus utiliser d'outils réseaux compilés en libc6 !
       
     hosts:      files dns

     networks:   files
     
     ethers:     files
     protocols:  files
     rpc:        db files
     services:   files

Si vous utilisez encore la libc5, le fichier /etc/host.conf n'est pas pris en compte par sendmail et vous devrez utiliser un fichier /etc/service.switch contenant l'unique ligne :

hosts files

Ainsi, quand sendmail cherchera le relai smtp, il ira directement voir dans /etc/hosts sans se soucier du DNS.

Il est maintenant nécessaire de définir l'adresse IP du serveur SMTP dans /etc/hosts

.

xxx.xxx.xxx.xxx          mail.domaine.fr  mail

3.5 La réecriture des adresses

Enfin, il faut réécrire l'adresse locale pour que les messages envoyés aient un champ From correspondant à l'adresse fournie par le fournisseur. Il suffit d'ajouter dans /etc/revaliases une ligne du style :

NomLocal:       NomFournisseur@fournisseur.fr
Je vous recommande d'y ajouter aussi les diverses adresses que votre serveur peut utiliser pour communiquer avec le reste du monde :

root:           NomFournisseur@fournisseur.fr
news:           NomFournisseur@fournisseur.fr
postmaster:     NomFournisseur@fournisseur.fr
...

et ensuite de régénérer la base avec :

/usr/sbin/sendmail -bi -oA/etc/revaliases

3.6 Fin de la manip, lancement du serveur.

Si un démon sendmail tourne actuellemnt, tuez le :

 kill `head -1 /var/run/sendmail.pid`

Puis relancez le :

/usr/sbin/sendmail -bd -os

Éditez vos fichiers de démarrage (souvent dans /etc/rc.?d ou /etc/init.d) afin de modifier si nécessaire la ligne lançant sendmail au moment du boot en la remplaçant par /usr/sbin/sendmail -bd -os'.

Voilà ! Les mails sont stockés dans /var/spool/mqueue. Lorsque vous êtes connecté par PPP et que vous souhaitez envoyer votre courier, il vous suffit de faire

/usr/sbin/sendmail -q 

Commande que j'ai personnellement ajouté au script /etc/ppp/ip-up...


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