M�thode de messagerie off-line pour Linux (Adresses e-mail off-line avec

un compte)

Gunther Voet, freaker@tuc.ml.org - Belgium (CompuMed/TuCSRV) Traduction par Thierry Le Qu�au ThierryLeQueau@wanadoo.fr

v1.3.2, 7 F�vrier 1998
Utilisez votre syst�me de messagerie Linux hors connexion, recevez du courrier pour plusieurs utilisateurs avec seulement une adresse e-mail, et sans �tre connect� 24/24. Si vous n'avez pas les moyens de payer une ligne directe pour �tre connect� 24/24 et voulez quand m�me que vos utilisateurs recoivent leur courrier dans leur bo�te � lettre Linux; au lieu de payer un service de diffusion multi-utilisateur � votre fournisseur d'acc�s, vous pouvez utiliser ce syst�me pour redistribuer aux diff�rents comptes utilisateur le courrier en utilisant une seule adresse e-mail. Vous pouvez y avoir acc�s 24/24 depuis le serveur o� vous avez votre compte pour recevoir votre courrier. Ce howto est Copyright (c)1997-98 par Gunther Voet.

1. Pr�face.

Dans ce chapitre je veux juste me mettre � l'abri de tous dommages et de retour de flamme - m�me si je peux avoir tort ...Si vous avez des questions ou suggestions � rajouter aux FAQ ainsi que les erreurs que vous pourriez trouver, voir la section concern�e plus loin ...

Nota : tous les noms et types de fichier sont repertori�s ainsi :

(*** < file > *** text ***) .procmailrc

Il s'agit donc d'un fichier .procmailrc contenant du texte. La variable texte peut aussi �tre cod�e. Cela pour d�finir le nom du fichier � utiliser. S'il n'y a pas de chemin, vous pouvez le choisir � votre convenance (dans la plupart des cas ces fichiers r�sident dans le r�pertoire de l'utilisateur comme /home/mailer).

1.1 D'un point de vue l�gal.

Ni l'auteur, ni les distributeurs de ce HowTo ne peuvent �tre tenu en aucun cas pour responsable des dommages physiques, financiers ou moraux qui pourraient r�sulter de l'application des suggestions ou exemples de ce texte. L' information contenue dans ce document est la quintescence de mon savoir et de mon exp�rience, mais je peux encore faire des erreurs dans les informations ou les exemples. Chaque marque commerciale est la propri�t� de son d�tenteur respectif (je ne veux pas faire de commerce ici - mais, bon - SI je veux rajouter quelque chose, je n'aurais pas besoin de modifier cette d�claration). Si votre chat meurt sous la charge de ce document, je n'en suis pas plus responsable ...

1.2 Copyrights

Ce document et son contenu sont copyright (c)1997-98 de Gunther Voet. Toute reproduction non autoris�e sous toute forme que ce soit est explicitement autoris�e et m�me chaudement encourag�e tant que vous n'en changez pas le contenu sans contacter l'auteur (Gunther Voet). Si vous utilisez ce document en entier ou en partie, vous devez y inclure une allusion au copyright ou un lien vers le HowTo complet." Les droits de copie des documents Howto sont r�gits par leurs auteurs respectifs. Le "HowTo Copyright" donnera les directives de copie pour ce document. S'il est utilis� dans un but commercial, l'auteur doit en �tre averti. Les exceptions � ce copyright doivent �tre demand� � l'auteur par lettre ou par e-mail. Pour plus d'information sur le standard de diffusion des HowTo contacter gregh@sunsite.unc.edu.

*SVP* *SI* vous voulez cr�er un syst�me bas� sur ce HowTo, pensez � mon copyright :) heh... - je ne suis pas m�chant :)). Bien s�r en tant qu'addon - PAS pour le programme de mail lui-m�me - bien que ce soit agr�able d'y �tre inclus :))Je peux toujours avoir une adresse suppl�mentaire pour �tre encore plus critiqu� :)) (je plaisante).

1.3 R�actions.

J'esp�re que ce HowTo vous sera utile ainsi qu'� tous ceux qui le voudront. Si vous avez des suggestions, commentaires ou corrections ( except�s les injures :) ) - svp exp�diez les moi � freaker@tuc.ml.org et j'en ferai la mise � jour pour la procha�ne version. Si vous publiez ce document dans un but commercial, une copie suppl�mentaire sera appr�ci�e - vous pouvez me l'envoyer � mon adresse postale. Pour les critiques - vous pouvez me les exp�dier, mais elle finirons dans le r�pertoire /dev/null ... aussi - ce n'est pas la peine encombrer la bande passante avec ! En plus je peux emp�cher certains utilisateurs de recevoir des e-mail (expliqu� dans ce document) (evil grin). Mon surnom est "freaker btw" :) ). Vous pouvez toujours essayer freaker@ibm.net.

1.4 Distribution.

La derni�re version de ce document peut �tre t�l�charg�e � l'adresse:

http://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Offline-Mailing

-et-

http://tuc.ml.org/om/

(essayez aussi � : http://tuc.ml.org)

1.5 Corrections.

 v1.0.0        - Premi�re version, test interne, nous l'avons essay� avant de 
                 vous le donner :) ..  depuis il devient op�rationnel et a 
                 besoin de travailler ? vrai ? :)
 v1.1.0        - Corrections de nombreuses erreurs dans le texte, ajout de 
                 nouveaux chapitres
               - Corrections de quelques petites erreurs et typographie ...
 v1.2.0        - Corrections d'erreurs grammaticales
               - Addon du chapitre "Qu'est-ce que nous utilisons ? "
               - Addon de l'adresse de Sunsite
 v1.3.0        - Addon du support courrier virtuel pour l'administrateur
               - Nouveau site et adresse e-mail
               - Remerciements � ..
 v1.3.1        - Conversion au format sgml et corrections d'erreurs mineures
 v1.3.2        - Corrections d'erreurs majeures ( nom de fichier .fetchmailrc  
                 vers .procmailrc) etc. (merci � Tetsu Isaji)
               - Addon douveau support pour "Sendmail" v 8.8.0+
               - Corrections d'erreurs mineures
               - Mise � jour de mon syst�me YAY !
               - La version japonaise arrivera bient�t, je vous signalerais 
                  son emplacement d�s que je le conna�trai ... 
                  (merci � Tetsu Isaji)

1.6 Qu'est-ce que j'utilise ?

J'utilise Linux 2.0.30, un Pentium 166, carte ATI pci-mach64, Metro-X et une connexion internet par mon fournisseur d'acc�s (actuellement ibmnet) via ppp en utilisant un modem ZyXEL 28 800 bauds, et de temps en temps un Bausch 28 800.

Maintenant j'ai mis � jour mon noyau � la version 2.0.33, install� un modem USRobotics, il fonctionne encore comme il le devrais :) (tout le monde devrait mettre � jour leur version Linux d�s qu'il sort un patch :) croyez moi:) �a vous �pargnera beaucoup de temps et de recherche d'erreur en le faisant :).

1.7 Remerciements � ...

2. Preliminaires.

Bon, comment fonctionne ce syst�me? Qu'est-ce que vous pouvez faire avec ? Quoi d'autres ? Et ai-je besoin de le lire ? A toutes ces questions - j'ai une r�ponse.

2.1 Pr�face & Description

Ce HowTo est d�di� � tous les utilisateurs de mailing offline sous Linux... Vous �tes un groupe, ou une organisation, et vous voulez que tous vos membres aient une adresse e-mail, sans pour autant payer pour un acc�s direct 24/24 ou un compte pour chaque utilisateur.... Ou vous avez un r�seau interne - avec un serveur camoufl� et vous voulez que tous les utilisateurs aient une adresse e-mail, vous pouvez utiliser cette m�thode pour le faire. Personnellement je l'utilise pour fournir aux utilisateurs et membres de mon groupe de d�mo un compte e-mail sans �tre 24/24 connect�, puisque c'est � but non lucratif - et nous n'avons pas beaucoup d'argent pour nous payer un ligne directe avec un acc�s e-mail permanent - et diff�rentes adresses IP. Tous ont une adresse e-mail, m�me s'ils n'ont pas acc�s � internet. Le seul � avoir un acc�s internet peut recevoir leur courrier � leur adresse personnelle - via le syst�me d�crit ci-dessous. Vos utilisateurs peuvent exp�dier leur courrier comme ils ont l'habitude de le faire, et votre syst�me g�rera les diff�rentes boites aux lettres. La seule chose qui change pour les utilsateurs est l'ajout de leur adresse e-mail dans l a ligne du sujet ou de l'ent�te suivant la m�thode choisie.

2.2 L'int�r�t d'une telle chose ...

2.3 Les choses � conna�tre.

2.4 Il y a deux voies diff�rentes...

  1. methode 'A' - que nous appellerons "(m(A))". Le syst�me de courrier v�rifie le destinataire du message d'apr�s le "to:". C'est la meilleure m�thode puisque c'est l'adresse e-mail r�elle . Vous avez besoin d'un autre compte sur un serveur ET avez besoin'une entr�e DNS (MX) (votre propre domaine en l'occurrence). Si l'administrateur syst�me veux bien vous aider, alors il n'y aura aucun probl�me ! Il redirigera TOUS les messages envoy�s au nom de votre domaine sur votre compte ! Cela lui prendra du temps pour le faire :) aussi soyez sympa avec lui :)) Merci � mon administrateur syst�me (Fred) j'ai obtenu un nom de domaine et le service utilisateur pour mon groupe de d�mo. Il se peut qu'une entr�e DNS vous co�te quelque chose,aussi vous aurez � voir si �a vous convient ou non.
  2. methode 'B' - que nous appellerons "(m(B))". Le programme va voir la ligne du sujet, et transf�re le courrier vers l'utilisateur concern�. Si l'utilisateur n'est pas trouv�, il renverra un message. Cela demande un serveur POP avec un seul compte, et vous n'avez pas besoin de votre propre entr�e DNS ou vous n'avez pas besoin d'�tre gentil avec votre administrateur syst�me pour qu'il vous arrange votre adresse e-mail :). J'ai utilis� cette m�thode la premi�re fois pendant pr�s d'un an... je sais que c'est un peu truander, mais je ne vous ai pas dit que vous deviez utiliser cette m�thode, aussi ne me tirez pas dessus - alors que je suis juste en train de vous fournir des solutions pour vos probl�mes de messagerie :) - vous pouvez utiliser la m�thode A qui est elle r�glo !

3. Vos besoins.

Bon, vous avez besoin (bien s�r) d'une b�cane sous Linux, qui peut se connecter � internet - Ok ! (que je suis bon - que je suis bon ! :)) - vous avez probablement un modem, pas vrai ? Une ligne t�l�phonique - ou n'importe quel moyen de vous connecter � votre fournisseur d'acc�s. Vous avez besoin aussi de quelque software comme Fetchmail, Procmail, un compte suppl�mentaire, et votre compte e-mail ou d'une entr�e DNS avec un compte e-mail.

3.1 Une machine sous Linux

Ca peut-�tre n'importe quelle b�cane... m�me un 8086... - mais il est pr�f�rable - puisqu'il y aura quelques chargements � effectuer - de poss�der au moins un 386 :) plus votre babasse ira vite, plus votre logiciel sera rapide (pas vrai ?) :).

3.2 Un compte suppl�mentaire sur votre machine sous Linux.�

Vous avez besoin de cr�er un compte suppl�mentaire sur votre syst�me. J'utilise pour mon exemple ��mailservice��. Cpeut �tre aussi bien "mailserver" ou "mailtousers" - bref un nom que vous reconnaitrez !

! Vous n'avez pas besoin d'�tre logu� root !

Ce compte vous servira � attribuer tous les messages aux diff�rents destinataires de votre syst�me, ou les envoyer vers l'ext�rieur :)). Cr�ez-le juste comme simple utilisateur. Vous aurez besoin de faire des tests sur ce compte, et l'administrateur du courrier peut l'utiliser pour le distribuer sans

�tre pour autant root - c'est bien plus s�r !

3.3 Fetchmail

J'utilise la version 1.9 avec le patch 9... je l'ai trouv� � l'adresse ftp://sunsite.unc.edu et j'utilise seulement ce programme de mail dans mon exemple - � vous de voir si vous en pr�f�rez un autre, vous �tes seul juge ! Pour ma part il me satisfait :). Si vous le voulez plus personnalis� vous devrez consulter le manuel de Fetchmail :). Il peut �tre install� comme root aussi bien que comme simple utilisateur... le mieux est de l'installer comme root :) puisque je suis s�r qu'il fonctionne bien :).

3.4 Procmail

J'utilise la version 3.10 - vous la trouverez aussi � ftp://sunsite.unc.edu, je pense que c'est le meilleur mda (mail delivery agent) sur le march�... Il g�re merveilleusement et est bien mieux que l'agent par d�faut puisqu'il d�livre les messages utilisateur par utilisateur ! Pour l'installation je vous donne les m�mes conseils que pour Fetchmail.

3.5 Un compte e-mail.

Vous aurez toujours besoin d'un compte e-mail - � partir duquel vous pourrez retirer vos messages. Un serveur POP - qui vous permet de retirer votre courrier quand vous le souhaitez, et qui permet aux diff�rents utilisateurs d'envoyer des e-mail 24/24. Ca peut �tre aussi bien un service de messagerie gratuit que payant - bien que votre compte e-mail soit suffisant. Avec la m�thode B (adresse dans le corps du sujet) vous n'avez besoin de rien d'autre - par contre la m�thode A (adresse dans le champ "to�") en demande un peu plus - suivez le guide !

Un enregistrement DNS (MX).

Requis pour faire fonctionner votre propre domaine de messagerie - il est indispensable puisque l'administrateur de votre fournisseur ne peut pas utiliser son domaine � l'usage exclusif de vos utilisateurs - il a d'autres clients qui ont besoin aussi d'�tre contact�s et qui pourraient interf�rer avec vos utilisateurs. Et vos ent�tes de messages doivent �tre filtr�es sur ce domaine. Ce qui vous donne un domaine autonome pointant sur SON domaine. Par contre �a vous co�tera un peu plus cher, ou vous pouvez demander � votre administrateur syst�me de rajouter une adresse impersonnelle pointant sur son serveur, cependant �a doit �tre un autre domaine que le sien !

Faire suivre le courrier de compte � compte :)

Bien, l'administrateur syt�me a besoin de faire suivre tous les messages destin�s � votre domaine sur votre compte... c'est une t�che relativement ais�e pour lui s'il sait le faire :) ..sinon il devra lire le manuel du sendmail :) ( ou qmail ). Vous r�cup�rez votre courrier sur votre compte et voil� ! Tous les messages seront redistribu�s sur votre propre domaine.

4. Bon, j'ai tout ce qu'il me faut, et maintenant ?

Vous avez cr�� votre compte suppl�mentaire, r�cup�r� votre adresse e-mail et/ou l'entr�e DNS pour rerouter sur votre compte... Procmail et Fetchmail sont install�s, ok on peut balancer la sauce ! :) on y va !

  1. Vous devez cr�er un fichier .procmailrc qui contiendra les infos de routage vers vos utilisateurs.
  2. Vous avez besoin �galement de cr�er un fichier �nosuchuserfile� pour que l'exp�diteur sache que son message n'as pas �t� d�livr�.
  3. Pour un boulot au top :) vous pouvez utiliser crontab pour v�rifier le courrier. C'est le moyen le plus facile pour v�rifier toutes les XX minutes si vous avez du courrier lorsque vous �tes connect�.

4.1 Cr�ation du fichier .fetchmailrc

Vous avez besoin de cr�er un fichier .fetchmailrc qui contiendra les informations de votre service (nom d'utilisateur, mot de passe, aussi bien que le mda (agent de distribution de courrier) pour attribuer les messages. Exemple:

(*** < file > *** text ***) .fetchmailrc

server my.mail.server.com
proto pop3
user myaccountthere
pass deepestsecrets
flush
mda /usr/bin/procmail

Ce fichier peut �tre utilis� pour g�rer votre courrier. Testez-le en utilisant fetchmail (fetchmail -vv) et voyez si votre courrier est bien transf�r� ... Il devrait y avoir quelques erreurs puisque le fichier de contr�le procmail n'a pas encore �t� install�. Vous pouvez attendre de cr�er le fichier .procmailrc avant d'effectuer le test mais je vous pr�viens SI il y a erreur :) �a PEUT provenir de ce fichier :). Ce fichier doit �tre accessible au propri�taire du compte (dans mon exemple : mailservice) et doit �tre lisible par l'utilisateur mais PAS lisible par le groupe/ext�rieur puisqu'il contient le mot de passe principal :) (vous devrez changer les droits du fichier .fetchmailrc en 600)

4.2 Cr�ation du fichier .procmailrc

Ce fichier de contr�le distribuera le courrier vers son destinataire. Il y a deux mani�res de le faire comme nous l'avons vu pr�c�demment : par le destinataire (to: ) et par le corps du sujet (moins r�glo). Ce fichier contiendra les diff�rents destinataires des messages. Tous les commentaires pr�c�d�s d'un # ne sont pas obligatoires - ils sont l� uniquement pour vous permettre de suivre ma d�marche... Vous pouvez aussi changer les droits de ce fichier en 600 - le reste du monde et le groupe nont pas besoin de conna�tre ces adresses priv�es :)... L'utilisateur doit aussi en �tre le propri�taire (comme mailservice) :). Le fichier "nosuchuserfile" renvoie un e-mail � l'exp�diteur si le destinataire n'est pas trouv� dans le fichier procmail (le courrier n'est pas distribu�) - aussi l'exp�diteur sait que son adresse n'est pas valide.

Pour la distribution par le destinataire (m(A)):

(*** < file > *** text ***) .procmailrc

# Cette ligne sert uniquement au d�bogage ! Il peut-�tre enlever dans un but 
# de confidentialit� puisque vous aurez acc�s � toute la messagerie transitant
# par votre domaine... Tous les messages seront copi�s dans le fichier 
# "passtrough" avant d'�tre distribu�s aux destinataires... ici vous pouvez 
# voir ce qui ne va pas ...
:0 c
        passtrough

# l'e-mail avec l'ent�te "to: freaker@mydom.com" me sera directement dirig�, 
# les autres continuerons leur chemin...
:0 
* ^To:.*freaker@mydom.com
! freaker

# l'e-mail pour root@mydom.com sera dirig� vers le root... et vers 
# l'administrateur du courrier !
:0 
* ^To:.*root@mydom.com
! root

:0 
* ^To:.*postmaster@mydom.com
! postmaster


# l'e-mail pour barbara@mydom.com sera distribu� � barbara ET sera retransmis 
# vers son adresse priv�e !

:0 c
* ^To:.*barbara@mydom.com
! barbara@her.private.one

:0 
* ^To:.*barbara@mydom.com
! barbara

# Ce script renvoie un e-mail vers l'exp�diteur s'il n'a pas trouv� le 
# destinataire dans son fichier... il enverra le fichier "nosuchuser" dans le 
# corps du message comme r�ponse... attention ! vous avez absolument besoin 
# d'un tel fichier ! - le mien signale : " La personne que vous essayez de 
# joindre n'est pas abonn�e � ce serveur, essayez � nouveau svp, il se pourrait
# qu'elle ne soit plus pr�sente".
:0
  |(/usr/bin/formail -r -k \
     -A"X-loop: mailservice@mydomain.dom "| \
       /usr/bin/gawk '{print }\
       /^/ && !HEADER \
         { system("/bin/cat nosuchuser"); \
         print"--" ;\
         HEADER=1 }' ) |\
         /usr/bin/sendmail -t


exit

Pour la distribution avec comme "sujet: touser" (m(B))

(*** < file > *** text ***) .procmailrc

# Cette ligne sert uniquement au deboggage ! Il peut-�tre enlever dans un but 
# de confidentialit� puisque vous aurez acc�s � toute la messagerie transitant
# par votre domaine... Tous les messages seront copi�s dans le fichier 
# "passtrough" avant d'�tre distribu�s aux destinataires... ici vous pouvez 
# voir ce qui ne va pas...
:0 c
        passtrough

# l'e-mail avec l'ent�te "to: freaker@mydom.com" me sera directement dirig�, 
# les autres continuerons leur chemin... si vous avez un compte d�di� pour 
# recevoir votre "mailservice" vous n'avez pas besoin de cette ligne :)
:0 
* ^To:.*freaker@ibm.net
! freaker

#  l'e-mail avec l'ent�te root@mydom.com sera dirig� vers le root !
:0
* ^Subject:.root
! root

# l'e-mail avec l'ent�te barbara@mydom.com sera distribu� � barbara...
:0
* ^Subject:.barbara
! barbara

# l'e-mail avec l'ent�te peul sera transmis vers son adresse priv�e.
:0
* ^Subject:.paul
! paul@his.personal.emailaddress

# Tout e-mail avec l'ent�te john sera transmis � son compte et une copie vers 
# son adresse e-mail priv�e...
:0 c
* ^Subject:.john
! john@his.personal.emailaddress

:0 
* ^Subject:.john
! john

# Tous e-mail d'ibm, avec les infos de mise � jour, seront envoy�s � freaker, 
# comme il est le seul � vouloir administrer le service d'e-mail et que ibm ne
# veut pas recevoir les retours de courrier non attribu� !!
# si votre fournisseur vous exp�die des "newsletters" etc... cette ligne est 
# obligatoire.
:0
* ^From:.*newsletter@ibm.net
! freaker

# Tous les messages que le d�mon veut rejeter, ou dans mon cas, les sauve dans
# un fichier... (utiliser  /dev/null pour les envoyer au fin fond des abysses).
:0
* ^FROM_DAEMON
throwaway

# Ce script renvoie un e-mail vers l'exp�diteur s'il n'a pas trouv� de 
# destinataire dans son fichier... il enverra le fichier "nosuchuser" dans le 
# corps du message comme r�ponse... attention ! vous avez absolument besoin 
# d'un tel fichier ! - le mien signale: "L'utilisateur n'est pas reconnu dans 
# la ligne objet svp utilisez "Subject: nom de l'utilisateur" pour �crire � la
# personne concern�e, par exemple "Subject: freaker" enverra un e-mail � 
# freaker". Ce fichier peut �tre long, mais aussi court :)... l'adresse de 
# votre domaine "mailservice@mydomain.com" �vitera de confondre vos 
# utilisateurs avec ceux de votre fournisseur d'acc�s - il a besoin de 
# conna�tre votre adresse exacte!
# Sinon vous pouvez cr�er une boucle sans fin qui envoie un e-mail du style 
# "Ne d�pensez pas 500$ chez votre ..." 
:0
  |(/usr/bin/formail -r -k \
     -A"X-loop: mailservice@mydomain.dom "| \
       /usr/bin/gawk '{print }\
       /^/ && !HEADER \
         { system("/bin/cat nosuchuser"); \
         print"--" ;\
         HEADER=1 }' ) |\
         /usr/bin/sendmail -t

exit

4.3 Il n'y a pas d'abonn� ... (fichier nosuchuser)

(*** < file > *** text ***) nosuchuser

La personne que vous d�sirez contacter n'est pas abonn�e � cette adresse.

S'il vous pla�t, utilisez la ligne r�serv�e au sujet pour y �crire le nom de 
votre correspondant - exemple: "subject: freaker" enverra un mail � freaker � 
cette adresse"

4.4 Fichier "crontab".

Si vous ne savez pas comment crontab fonctionne :) il vaut mieux que vous lisiez le manuel :)... Vous avez besoin de cr�er un fichier pour contr�le le courrier "checkmail" - celui-ci v�rifiera si la connection est valide, de la m�me mani�re que cron... - j'utilise le protocole ppp :) - aussi l'exemple suivant v�rifiera la connection - ainsi que la messagerie toutes les 10 minutes en utilisant cron. Ca para�t un peu louche - mais �a ne l'est pas !

V�rification du courrier

Le fichier "checkformail" sera appel� (il doit �tre ex�cutable pour cel�) - et il v�rifiera la connection. Si elle est valide alors il ira r�cup�rer le courrier. Crontab utilisera ce fichier quand vous utilisez l'entr�e cron suivante ...

(*** < file > *** code ***) .checkformail

#!/bin/sh
#

        cd /home/mailservice

        if [ -f /var/run/ppp0.pid ]; then
        /usr/local/bin/fetchmail -s > /dev/null 2>&1
fi

crontab

Cette entr�e cron doit �tre charg�e dans crontab, elle appellera le fichier .checkformail toutes les 10 minutes. Elle n'a aucune action sur le courrier ni sur la console - puisque le tout va directement dans le r�pertoire /dev/null.

(*** < file > *** text ***) cronentry

0,10,20,30,40,50 * * * *  /home/mailservice/.checkformail 1> /dev/null 2> 
/dev/null

4.5 Chez votre fournisseur d'acc�s.

Ce qui suit doit �tre fait si vous utilisez la m�thode A... chez l'administrateur, l'e-mail va directement du domaine vers l'utilisateur. C'est assez simple, et une fois que c'est install� �a roule d'enfer ! Ce n'est pas n�cessaire ni chez vous ni chez votre administrateur syst�me si celui-ci utilise une autre m�thode.

Si vous utilisez une nouvelle version de sendmail, l'ancienne version ne fonctionnera sans doute pas, aussi r�f�rez vous au manuel d'utilisation pour que le routage d'e-mail ait lieu.

(Ancienne version de sendmail) ajoutez les lignes suivantes au fichiersendmail.cf

Ajoutez les lignes suivantes au fichier /etc/sendmail.cf, ainsi le fichier du domaine sera lu. SVP il est � noter que la r�gle 98 est ajout�e ci-dessous, ceci pour r�cup�rer les erreurs :) c'est l'enfer pour les enlever ! (et je sait de quoi je parle :) DuH).

(*** < file > *** add ***) /etc/sendmail.cf

# Base de donn�es du domaine maintenu

Kmaildomains btree /etc/maildomains.db

# ajoutez ces lignes "dans" la r�gle 98 ! (sous la r�gle 98)

R$+ < @ $+  . >              $: $1 < @ $2 > .
R$+ < @ $+ > $*              $: $(maildomains $1@$2 $: $1 < @ $2 > $3 $)
R$+ < @ $+ > $*              $: $(maildomains $2 $: $1 < # $2 > $3 $)
R$+ < @ $* > .               $: $1 < @ $2 . >

(Nouvelle version de sendmail) Ajoutez ces lignes au fichier sendmail.cf

Avec la nouvelle version de sendmail (test� avec la version 8.8.7 et 8.8.8), ignorez la m�thode A, et ajoutez les lignes suivantes :

(*** < file > *** add ***) /etc/sendmail.cf

# Base de donn�es du domaine maintenu

Fw/etc/sendmail.cw
Kvirtuser btree /etc/maildomains.db

*OR*

Fw/yourhomedir/sendmail.cw
Kvirtuser btree /yourhomedir/maildomains.db

(Nouvelle version de sendmail) Editez le fichier /etc/sendmail.cw

Editez le fichier /etc/sendmail.cw (ou /votrer�pertoire/sendmail.cw si vous n'utilisez pas le m�me emplacement). Un point positif � l'utilisation de votre r�pertoire: vous n'avez pas besoin d'�tre loguer root pour activer votre domaine. Bien que vous pouvez avoir des risques de s�curit� si vous n'�tes pas rigoureux !

Ce fichier peut d�j� exister, ou a besoin d'�tre cr��. S'il existe d�j� soyez s�r de ne pas �craser les anciennes donn�es - ou je vous rappelerai ma d�claration :)

En premier lieu cr�ez un fichier /etc/sendmail.cw, qui sera utilis� entre le domaine et l'utilisateur... (comme je vous l'ai d�j� dit, le nom "mailservice" est � votre convenance - �a peut m�me �tre votre login (le mien est freaker)). Exemple :

(*** < file > *** text ***) /etc/sendmail.cw

mydomain.dom            mailservice

Cr�ez un fichier /etc/maildomains file

En premier lieu cr�ez un fichier /etc/maildomains, qui sera utilis� entre le domaine et l'utilisateur... (comme je vous l'ai d�j� dit, le nom "mailservice" est � votre convenance - �a peut m�me �tre votre login (le mien est freaker)). (Vous pouvez avoir ce fichier dans votre r�pertoire, changez le chemin :). Exemple :

Avec l'ancienne version de sendmail:

(*** < file > *** text ***) /etc/maildomains

mydomain.dom            mailservice

Avec la nouvelle version de sendmail:

(*** < file > *** text ***) /etc/maildomains

@mydomain.dom           mailservice

Au travail !

Avec l'ancienne et la nouvelle version de sendmail vous avez besoin de cr�er les fichiers btree (base de donn�es), suivez le guide :

cd /etc    (or /yourhomedir)
makemap btree maildomains < maildomains

apr�s cel�, tuez le d�mon sendmail et red�marrez le. Maintenant �a devrait marcher ! Bonne chance :)

5. Automatisation

OK, tout ce que nous avons vu fonctionne... (sinon ne pensez m�me pas � l'automatisation, il faut d'abord que tout soit ok) maintenant il nous faut un script pour que l'administrateur ou le root ne se prenne pas la t�te pour ajouter un utilisateur � votre fichier procmail... L'exemple suivant s'adresse � des utilisateurs plus exp�riment�s - parce que certaines choses ont besoin d'�tre chang�es. J'ai d�cid� d'utiliser la M(B) parce qu'elle est plus utilis�e que la M(A) (moins ch�re). Mon exemple peut tr�s bien �tre adapt� � la M(A).

5.1 La structure.

Puisque le fichier de post-routine termine le programme (tout ce qui va suivre ne fonctionnera pas sans lui) nous avons besoin d'un fichier de pre-routine.

Le fichier de pre-routine ".procmailrc-header"

Ce fichier servira � la fois au fichier de pre-routine et au fichier principal puisqu'ici seront rajout�s ou supprim�s les diff�rents utilisateurs. C'est un fichier tr�s important, une copie de sauvegarde sera la meilleure chose � faire avant l'ajout d'un utilisateur, il PEUT y avoir des probl�mes ... une machine n'est pas infaillible.

(*** < file > *** text ***) .procmailrc-header

:0 c
        passtrough

:0 
* ^To:.*freaker@ibm.net
! freaker

:0
* ^Subject:.root
! root

:0
* ^Subject:.barbara
! barbara

:0
* ^Subject:.paul
! paul@his.personal.emailaddress

:0 c
* ^Subject:.john
! john@his.personal.emailaddress

:0 
* ^Subject:.john
! john

:0
* ^From:.*newsletter@ibm.net
! freaker

:0
* ^FROM_DAEMON
throwaway

Le fichier de post-routine ".procmailrc-footer"

Comme mentionn� ci-dessus, ce fichier doit �tre la post-routine puisqu'il ne sera pas utilis� pour d�livrer les donn�es - ce fichier contient le code de "rejet" pour retourner le message � l'exp�diteur s'il ne trouve pas de correspondant ! C'est vraiment la fin de la boucle !

(*** < file > *** text ***) .procmailrc-footer

:0
  |(/usr/bin/formail -r -k \
     -A"X-loop: mailservice@mydomain.dom "| \
       /usr/bin/gawk '{print }\
       /^/ && !HEADER \
         { system("/bin/cat nosuchuser"); \
         print"--" ;\
         HEADER=1 }' ) |\
         /usr/bin/sendmail -t


exit

5.2 Script d'ajout de bo�te � lettre

Ce script ajoutera un utilisateur au fichier de pre-routine, et mettra � jour le ".procmailrc" d'apr�s le ".procmailrc-header" pour cl�turer le tout. Les commentaires (pr�c�d�s de #) ne sont l� que pour vous aider :) vous pouvez les supprimer.

(*** < file > *** code ***) addmail (* chmod 500 *)

#/bin/sh
#
# Copyright (c)1997 par Gunther Voet. rev 1.0.1
# SVP merci de laisser ce copyright si vous fournissez une machine avec ce 
# programme pr�install� ...


echo ""
echo "Addmail v1.0.1 by Gunther Voet, Freaker / TuC'97-98 (21/04/97)"
echo ""

if [ $1 ]; then

        if [ $2 ]; then

# Faites une sauvegarde!
        
        cp /home/mailserv/.procmailrc-header /home/mailserv/.procmailrc-backup
        
# Ajoutez l'information (>>) au fichier .procmailrc-header       

        echo ":0" >> /home/mailserv/.procmailrc-header
        echo "* ^Subject:.$1" >> /home/mailserv/.procmailrc-header
        echo "! $2" >> /home/mailserv/.procmailrc-header
        echo "" >> /home/mailserv/.procmailrc-header

# Mettez � jour le fichier .procmailrc � partir des fichiers .procmailrc-header
#  et .procmailrc-footer


        cat /home/mailserv/.procmailrc-header > /home/mailserv/.procmailrc
        cat /home/mailserv/.procmailrc-footer >> /home/mailserv/.procmailrc

# Soyez s�r que le fichier .procmailrc n'appartient qu'� l'administrateur 
# "mailserv" et que ce dernier a l'exclusivit� de l'�criture/lecture...

        chown mailserv /home/mailserv/.procmailrc
        chgrp users /home/mailserv/.procmailrc
        chmod 600 /home/mailserv/.procmailrc
else
        echo "No DESTINATION mail address has been given ..."
fi

else
        echo "usage:"
        echo ""
        echo "syntax:  addmail from_user to_user(domain)"
        echo ""
        echo "example: addmail freaker freaker@myemail.dom"
        echo ""
fi

Ok, ce script va donc ajouter les informations de l'utilisateur ainsi que son adresse dans le fichier .procmailrc-header, et mettra � jour le fichier .procmailrc � partir des deux autres fichiers (header et footer). Si vous voulez supprimer un utilisateur, vous n'avez juste qu'� �diter le fichier ".procmailrc-header" pour le modifier, ainsi la prochaine fois que vous ajouterez quelqu'un, l'utilisateur pr�c�dent sera supprim� du fichier .procmailrc. Pour effectuer une suppresion imm�diate, il vous faut le supprimer � la fois dans le fichier .procmailrc et .procmailrc-header.

Je vous crois assez comp�tent pour modifier le script pour que l'ajout d'un utilisateur � votre compte se fasse automatiquement et ce pour les deux m�thodes.

6. A l'aide ! (Sic)

Bon, vous avez besoin d'un peu d'aide, non :) je pourrais �tre sarcastique et seulement vous dire: "vous feriez mieux de tout r�installer, parce que vu d'ici c'est un peu le bordel"... ou je peux vous aider ... - j'ai d�cris ici quelques probl�mes courants. Si vous avez des probl�mes qui ne sont pas r�pertori�s ici, faites m'en part par e-mail et je rajouterais tout �a � ce HowTo avec en sus votre nom et adresse e-mail - AVANT de m'�crire svp, v�rifiez que vous n'oubliez rien et si vous voulez que je vous aide exp�diez moi le plus d'info possible incluant le script et la description de ce que vous voulez. Je n'ai PAS besoin des binaires, je ne veux pas le faire tourner.

6.1 Le script d'automatisation ne fonctionne pas:

6.2 Qu'est-ce que vous entendez par serveur de mail anonyme ?

6.3 Mon chat est mort

6.4 Mon chien est mort

6.5 Linux?

6.6 Pouvez vous m'aider � trouver un compte ?

6.7 Pourquoi avoir enlev� " peut-�tre que plus tard je rajouterais quelques commentaires ..." ?

6.8 Comment puis-je obtenir un "domaine" ?

6.9 Pourquoi �tes-vous un enc... en utilisant cette m�thode ?

6.10 Le fichier "nosuchuserfile" ?

6.11 Est-ce que mes utilisateurs peuvent �crire et envoyer du courrier ?

6.12 Est-ce que chaque utilisateur a besoin d'un compte shell sur mon serveur ?

6.13 sans objet

6.14 l'ajout de courrier ?

6.15 Pourquoi �tes-vous si cruel ?

6.16 Avez vous eu des plaintes � propos de langage excessif ?

6.17 Pourquoi ce HowTo est-il si diff�rent des autres ?

6.18 Localement mon domaine fonctionne, mais semble rien recevoir de l'ext�rieur.

6.19 Mon chien est mort

7. The End

Il faut une fin � tout... si vous trouvez des bugs non repertori�s (ou des particularit�s), alors laissez de c�t� vos critiques... envoyez moi vos commentaires et suggestions :) Si vous �tes encore en col�re apr�s avoir lu cel�, svp allez voir � http://tuc.ml.org/hehehe.

Mes remerciements �:

Hannes van de Vel: pour m'avoir support� (hum) Tetsu Isaji: pour la version japonaise ainsi que pour m'avoir signal� quelques erreurs :) Greg Hankins: pour m'avoir fait remarquer les erreurs de la version sgml. Linus torvalds: bien s�r, sans qui ce HowTo n'existerait pas !