Bonne nouvelle : il est très facile de configurer sendmail pour qu'il puisse utiliser la mailer uucp !
Typiquement il y a deux points à prendre en considération :
Il suffit de rajouter la ligne suivante dans le sendmail.mc :
MAILER(local)dnl
MAILER(smtp)dnl
---> MAILER(uucp)dnl
Attention, cette ligne doit bien être placée APRÈS les 2 lignes qui la précède !
Grâce à cette ligne, sendmail est maintenant en mesure d'invoquer rmail via uux comme le prouve l'extrait suivant de sendmail.cf :
---------------------------------<
Muucp, Path=/usr/bin/uux, Flags=DFMhmsu,
Sender=12, Recipient=22, Argv=uux - -r $h!rmail ($u)
---------------------------------<
Il suffit d'utiliser une "mailertable" ! Ainsi on pourra diriger les mails sortants vers le domaine qu'on voudra !
À cet effet :
1) rajoutez dans votre sendmail.mc :
---> FEATURE(mailertable, hash /etc/mail/mailertable)dnl
ceci aura pour effet de créer une mailertable :/etc/mail/mailertable
2) renseignez la mailertable (voir exemple ci-dessous)
3) n'oubliez pas d'initialiser la mailertable par un
makemap hash /etc/mail/mailertable < /etc/mail/mailertable
exemple de mailertable :
#/etc/mail/mailertable sur batman # # makemap hash /etc/mail/mailertable < /etc/mail/mailertable # ------------------------------------------------------------- # domaine transport:machine # ------------------------------------------------------------- # ####### domaine local <gotham.city> ######################### batman.gotham.city esmtp:batman robin.gotham.city esmtp:robin robin.gyptis.frmug.org uucp-dom:robin joker.gotham.city uucp-dom:joker ############################################################## # # ########## OLEANE PAR SMTP ################################## dial.oleane.com esmtp:smtp.dial.oleane.com oleane.net esmtp:smtp.dial.oleane.com ############################################################# # # ############ reste du monde ################################## . uucp-dom:gyptis ########################################################<EOF>#
Note : c'est la dernière ligne qui permet d'envoyer les mails par UUCP sur gyptis. Attention à bien utiliser "uucp-dom" et pas "uucp" tout court !
Régulièrement cette question est posée dans les news :
« Comment faire pour que les mails destinées au réseau local ne soient pas d'abord envoyée sur le serveur de mail de notre FAI (Fournisseur d'Accès internet) ?? »
Pablo Saratxaga <srtxg@chanae.alphanet.ch> a trouvé une réponse satisfaisante. Je vous la livre ci-dessous avec une légère modification. Cette dernière est nécessaire dès lors que l'on emploie une mailertable.
Cette solution fonctionne parfaitement avec la version 8.8.5 de sendmail, que j'utilise, mais Pablo Saratxaga <srtxg@chanae.alphanet.ch> m'a confirmé qu'elle fonctionne aussi très bien avec la version 8.9.3 Il ne devrait donc pas y avoir, à priori, de problème avec les versions intermédiaires.
Tant qu'on y est, je vous livre mon sendmail.mc en entier. Le hack de Pablo y figure à la fin.
Pour le reste, je vous conseille vivement de vous reporter à la doc d'Éric Jacoboni disponible sur <http://www.linux-france.org/article/mail>
dnl ********************************************************************* dnl .---. dnl / \ dnl \.@-@./ /etc/sendmail.cf de la machine batman dnl /`\_/`\ dnl // _ \\ Denis BRAUSSEN <denis@batman.gyptis.frmug.org> dnl |(_ )|_ dnl /`\_`> <_/ \ --- POWERED BY GNU/LinuX --- dnl \__/'---'\__/ dnl ******************************************************************** dnl include(`../m4/cf.m4')dnl OSTYPE(`linux')dnl Cwlocalhost localhost.gotham.city batman.gyptis.frmug.org batman.gotham.city gotham.city batman Djbatman.gyptis.frmug.org define(`confCON_EXPENSIVE', `True')dnl FEATURE(genericstable,``hash -N /etc/mail/revaliases'') dnl NOTE générer la base avec : dnl /usr/sbin/sendmail -bi -oA/etc/mail/revaliases FEATURE(mailertable, hash /etc/mail/mailertable)dnl dnl NOTE générer la base avec : dnl makemap hash /etc/mail/mailertable < /etc/mail/mailertable GENERICS_DOMAIN(batman.gotham.city batman)dnl FEATURE(always_add_domain)dnl FEATURE(nocanonify)dnl FEATURE(redirect)dnl FEATURE(masquerade_envelope)dnl define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl FEATURE(local_procmail)dnl define(`confCOPY_ERRORS_TO', `Postmaster')dnl define(`confME_TOO', `True')dnl define(`confDEF_CHAR_SET', `ISO-8859-1')dnl define(`SMTP_MAILER_FLAGS', `e')dnl define(`confMIME_FORMAT_ERRORS',`True')dnl define(`confCF_VERSION', `GNU/LINUX (04-Oct-98)')dnl define(`confTO_QUEUEWARN', `24h')dnl MAILER(local)dnl MAILER(smtp)dnl MAILER(usenet)dnl ( <--- optionnel. voir doc sendmail) MAILER(uucp)dnl dnl dnl dnl -=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=- dnl dnl From: Pablo Saratxaga <srtxg@chanae.alphanet.ch> dnl Date: 12 Apr 1998 20:04:52 +0200 dnl Newsgroups: fr.comp.mail, fr.comp.os.linux dnl Subject: truandage d'adresses dnl ------------------------------------------ dnl "Le problème est le suivant: on dispose donc d'un accès à internet mais dnl pas de nom de domaine; on utilise le reverse aliasing des adresses, dnl sendmail fait ça très bien donc tout baigne. dnl Mais on voudrait aussi éviter, lorsque deux utilisateurs locaux s'écrivent, dnl d'envoyer sur internet et d'aller le chercher avec fetchmail, avec tous les dnl retards et coûts que cela implique. dnl dnl Faire un peu l'inverse de genericstable en quelque sorte; changer des dnl adresses user1@domaine1 -> userlocal1, user2@domaine2 -> userlocal2 etc." dnl dnl ----------> dnl dnl Mettre dans /etc/mail/pirateo des lignes dnl dnl usuario1@proveedor1.com user1 dnl usuario2@proveedor2.com user2 dnl dnl et generer la base pirateo par : dnl dnl makemap hash /etc/mail/pirateo < etc/mail/pirateo dnl dnl dnl====================================================================== dnl ATTENTION: INOPERANT SI MAILERTABLE ! (sauf si: voir ci dessous) dnl Denis BRAUSSEN added: LOCAL_RULE_0 pour que pirateo dnl puisse fonctionner malgre les mailertable 27-dec-98 dnl (note: LOCAL_CONFIG et LOCAL_NET_CONFIG deviennent du coup inutiles) dnl====================================================================== dnl ###### Removed by Denis BRAUSSEN -------> LOCAL_CONFIG # pirater quelques acounts sur des domaines tiers Kpirateo hash -o /etc/mail/pirateo dnl dnl ###### Removed by Denis BRAUSSEN -------> LOCAL_NET_CONFIG # pirateo LOCAL_RULE_0 R$+ < @ $+ > $* $: < $(pirateo $1 @ $2 $: $) > $1 < @ $2 > $3 R< $+ > $+ < @ $+ > $* $@ $>97 $1 R<> $+ < @ $+ > $* $: $1 < @ $2 > $3 dnl ^^^^^^ TABULATION ICI dnl-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=- dnl ---<EOF>---
Tip : pour les version de sendmail supérieures (8.9.x) il sera peut être utile de rajouter les FEATURES suivantes (voir la doc de sendmail). Notez cependant que ceci n'a rien à voir avec UUCP.
FEATURE(`accept_unresolvable_domains')dnl
FEATURE(accept_unqualified_senders)dnl
Cela désactivera certaines règles anti-spam et vous évitera d'avoir
à lire ce genre de messages :
« [192.168.x.x], reject=451 <guignol@foo.bar.net>...
Sender domain must resolve »
Nicolas Chuche <chuche@soda.teaser.fr> de son côté, me fait savoir qu'il préfère utiliser une virtusertable assortie d'un sendmail.cw. Je vous donne les deux FEATURE à utiliser, quoique je préfère utiliser la méthode de Pablo qui permet une définition au cas par cas des mails à envoyer en local.
-) FEATURE(virtusertable, hash /etc/mail/virtusertable)dnl #exemple de /etc/mail/virtusertable #---------------------------------- chuche@soda.teaser.fr nico gaspard@soda.teaser.fr gaspard freyda@soda.teaser.fr freyda # ^^^^ # TABULATION #---------------------------------
puis générer la database par un :
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
-) FEATURE(use_cw_file)dnl # sendmail.cw - include all aliases for your machine here. # ------------------------------------------------------- soda.teaser.fr soda.solomon.fr soda.le-bar.fdn.fr # --------------------------------------------------------
Si votre machine dispose d'une laison TCP/IP permanente (typiquement: câble) et se connecte au serveur UUCP en passant par dessus TCP/IP, vous trouverez sans doute judicieux de faire en sorte que vos emails partent vers le serveur dès qu'elles arrivent dans la file d'attente. Cela est tout à fait possible en paramétrant les options du programme uux.
En effet un "man uux" nous apprend que c'est l'option -r d'uux qui empêche uucico de démarrer immédiatement. Cette option est mise par défaut dans le fichier de configuration de sendmail et c'est tout à fait normal : avec une ligne téléphonique normale (RTC) il serait absurde de vouloir se connecter dès qu'un mail est écrit.
ci dessous l'extrait du man d'uux qui nous intéresse :
-r, --nouucico
Do not start the uucico (8) daemon immediately;
merely queue up the execution request for later pro-
cessing.
Il font donc changer les arguments du mailer uucp. Cela est trivial puisque dans le fichier /usr/src/contrib/sendmail/cf/README (l'emplacement peut être différent sur votre distribution) nous avons :
UUCP_MAILER_ARGS [uux - -r -z -a$g -gC $h!rmail ($u)] The arguments
passed to the UUCP mailer.
La partie entre crochets montre les arguments par défaut. il suffit donc de mettre dans votre sendmail.mc la ligne :
define(`UUCP_MAILER_ARGS',`uux - -z -a$g -gC $h!rmail ($u)')dnl
puis de reconstruire votre sendmail.cf et redémarrer sendmail s'il tourne en mode daemon.
On appelle SPAM le courrier non sollicité. Généralement il s'agit de publicités douteuses du genre "Devenez riche et célèbre sans rien faire" dont notre boîte aux lettres se passerait bien.
Étienne de Tocqueville <et@steph.teaser.fr> a écrit un patch qui permet de filtrer les emails selon leur enveloppe. Il est disponible sur : <http://www.teaser.fr/u/edetocquev/uucp/>.
Nota : bien que cela n'ait rien à voir avec sendmail, j'ai
trouvé logique d'inclure cette information dans le chapitre qui parle du mail.