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 :
mondomaine.a.moi
mail.domaine.fr
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.
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 ********************************************************************
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
À 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
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.frJe 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
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
...