<!--

       HOWTO:   "Linux off-line mailing method" by Gunther Voet
                 Offline-Mailing

 DESCRIPTION:   "how to use your linux offline - and still use different
                 email addresses"

    REVISION:   v1.3.2
INITIAL DATE:   21 April 1997 - 21:47. (CET)
 LAST UPDATE:   10 Juny 1997 - 15:01. (CET)
SGML CONVERT:   15 September 1997 - 16:46. (CET)
      CHANGE:   07 February 1998 - 17:06. (CET)
-->

<!doctype linuxdoc system>

<article>
<title>Méthode de messagerie off-line pour Linux (Adresses e-mail off-line avec
 un compte)
<author>Gunther Voet, <htmlurl url="mailto:freaker@tuc.ml.org"
name="freaker@tuc.ml.org"> - Belgium (CompuMed/TuCSRV)
Traduction par Thierry Le Quéau <htmlurl url="mailto:thierry.lequeau@wanadoo.fr" name="ThierryLeQueau@wanadoo.fr">
<date>v1.3.2, 7 Février 1998

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


<ref id="copyright" name="Ce howto est Copyright (c)1997-98 par Gunther Voet.">

</abstract>

<toc>


<sect>Préface.
<p>
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 ...
<p>
Nota : tous les noms et types de fichier sont repertoriés ainsi :
<p>
<quote><tt>(*** &lt file &gt *** text ***)     .procmailrc</tt></quote>
<p>
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).

<sect1>D'un point de vue légal.
<p>
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 ...

<sect1>Copyrights<label id="copyright">
<p>
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 
<htmlurl url="mailto:gregh@sunsite.unc.edu" name="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).

<sect1>Réactions.
<p>
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 à 
<htmlurl url="mailto:freaker@tuc.ml.org" name="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 <htmlurl url="mailto:freaker@ibm.net" name="freaker@ibm.net">.

<sect1>Distribution.
<p>
La dernière version de ce document peut être téléchargée à l'adresse:

<htmlurl
url="http://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Offline-Mailing"
name="http://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Offline-Mailing">

-et-

<htmlurl url="http://tuc.ml.org/om/" name="http://tuc.ml.org/om/">

(essayez aussi à : <htmlurl url="http://tuc.ml.org/" name="http://tuc.ml.org">)


<sect1>Corrections.
<p>
<verb>
 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)
</verb>

<sect1>Qu'est-ce que j'utilise ?
<p>
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 :).

<sect1>Remerciements à ...
<p>
<itemize>
<item>Fred, durban.hebel.net (pour autoriser les pages & bot)
<item>Lifesaver, parkside.net ( pour la validation des nouvelles pages, 
      aide pour la foire aux questions de la messagerie, depuis ça marche 
      ici et là ... faites une visite à son ciber-café ... leur café est 
      super bon :) )
<item>L'administrateur système de lodus.net pour la maintenance de ce projet.
</itemize>

<sect>Preliminaires.
<p>
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.


<sect1>Préface & Description
<p>
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.

<sect1>L'intérêt d'une telle chose ...
<p>
<itemize>
<item>Permettre de contacter tous les membres d'une organisation par adresse 
      e-mail si nécessaire.

<item>Un service de mail anonyme - ils ne peuvent lire votre "mail setup file" 
      - aussi ils ne peuvent savoir où le courrier est retransmis ou suivi.

<item>Un club qui n'a pas assez de sou (ne riez pas), ou qui est gratuit, et ne
      veut pas dépenser de l'argent pour ça (eh eh) - et qui veut quand même 
      fournir une adresse e-mail à chacun de ses membres.

<item>Un réseau camouflé - avec un serveur connecté sur le net, dont les 
      utilisateurs ont besoin d'avoir compte e-mail.

<item>Vous voulez retransmettre certains documents automatiquement - comme je
      le fais avec mon HowTo, statistiques, ou documents ... comme 
      "info@yourmail.dom" ou "document@yourmail.dom".

<item>Vous avez seulement besoin d' un compte chez votre fournisseur d'accès, 
      pour les +200 comptes e-mail que vous pouvez créer sur votre serveur.

<item>J'utilise la méthode B avec plus de 300 comptes e-mail avec un serveur 
      perso à base de 486DX4-100 et le tout fonctionne en une minute.
</itemize>

<sect1>Les choses à connaître.
<p>
<itemize>
<item>Tous les serveurs de mail (gratuit ou non) ne sont pas contents quand 
      vous faites leur boulot chez vous, ou mettez en place un serveur anonyme,
      aussi SVP essayez de contacter votre administrateur réseau avant de le 
      faire.

<item>C'est un moyen moins rapide qu'une connection on-line 24/24 puisque vous 
      devez vous connecter pour distribuer le courrier.

<item>Cette méthode à besoin d'un administrateur pour gérer la distribution du 
      courrier et ajouter des utilisateurs ... ça vous donnera un peu de boulot
      ce n'est pas automatique ! (je l'ai rendu semi-automatique sur 
      mon serveur vous pouvez essayer de faire de même).

<item>Une bonne bande passante et un espace virtuel conséquent chez votre 
      fournisseur d'accès est indispensable quand vous avez plusieurs 
      utilisateurs ... et soyez sûr d'y avoir assez de place quand vous 
      expédiez les fichiers.

<item>Tout le courrier sera transféré en une seule fois - aussi - le dernier 
      message que vous recevrez sur votre serveur sera aussi le dernier que 
      vous aurez expédier. "Premier entré -  premier sorti".

<item>Dans la première méthode (to : ) il n'y a pas de problème avec les noms 
      des différents utilisateurs - mais dans la seconde méthode - vous ne 
      pouvez pas donner de sujet puisqu'il sera utilisé pour la délivrance à 
      son destinataire. Beaucoup d'utilisateurs oublient d'utiliser le sujet 
      du message... - ou ils ont besoin de le savoir clairement.

<item>Si vous vérifiez souvent votre messagerie sur le serveur, (par exemple 4 
fois par jour) - le courrier sera distribué à son destinataire au moins toutes 
les 6 heures. Aussi le traitement devient presque régulier.

<item>Vous POUVEZ l'utiliser également lorsque vous avez un accès permanent :) 
et lui faire vérifier le courrier toutes les XX minutes. Mais  - quand vous 
êtes connecté - pourquoi utiliser un autre serveur ? et pourquoi ne pas avoir
alors votre propre domaine ? (fric).
</itemize>

<sect1>Il y a deux voies différentes...
<p>
<enum>
<item> 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.

<item>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 !
</enum>

<sect>Vos besoins.
<p>
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.

<sect1>Une machine sous Linux
<p>
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 ?) :).

<sect1>Un compte supplémentaire sur votre machine sous Linux. 
<p>
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 !

<sect1>Fetchmail 
<p>
J'utilise la version 1.9 avec le patch 9... je l'ai trouvé à l'adresse 
<htmlurl url="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 :).

<sect1>Procmail
<p>
J'utilise la version 3.10 - vous la trouverez aussi à 
<htmlurl url="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.

<sect1>Un compte e-mail.
<p>
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 !

<sect2>Un enregistrement DNS (MX).
<p>
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 !

<sect2>Faire suivre le courrier de compte à compte :)
<p>
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.

<sect>Bon, j'ai tout ce qu'il me faut, et maintenant ?
<p>
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 !

<enum>
<item>Vous devez créer un fichier .procmailrc qui contiendra les infos de 
      routage vers vos utilisateurs.
<item>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é.
<item>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é.
</enum>

<sect1>Création du fichier .fetchmailrc
<p>
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:
<p>
<quote><tt>(*** &lt file &gt *** text ***)     .fetchmailrc</tt></quote>
<tscreen><code>
server my.mail.server.com
proto pop3
user myaccountthere
pass deepestsecrets
flush
mda /usr/bin/procmail
</code></tscreen>
<p>
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)

<sect1>Création du fichier .procmailrc
<p>
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.

<sect2>Pour la distribution par le destinataire (m(A)):
<p>
<quote><tt>(*** &lt file &gt *** text ***)     .procmailrc</tt></quote>
<tscreen><code>
# 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
</code></tscreen>
<p>     
        
<sect2>Pour la distribution avec comme "sujet: touser" (m(B))
<p>
<quote><tt>(*** &lt file &gt *** text ***)     .procmailrc</tt></quote>
<tscreen><code>
# 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
</code></tscreen>
<p>

<sect1>Il n'y a pas d'abonné ... (fichier nosuchuser)
<p>
<quote><tt>(*** &lt file &gt *** text ***)     nosuchuser</tt></quote>
<tscreen><code>

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"

</code></tscreen>
<p>

<sect1>Fichier "crontab".
<p>
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 !


<sect2>Vérification du courrier
<p>
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 ...
<p>
<quote><tt>(*** &lt file &gt *** code ***)     .checkformail</tt></quote>
<tscreen><code>
#!/bin/sh
#

        cd /home/mailservice

        if [ -f /var/run/ppp0.pid ]; then
        /usr/local/bin/fetchmail -s > /dev/null 2>&1
fi
</code></tscreen>
<p>
<sect2>crontab
<p>
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.
<p>
<quote><tt>(*** &lt file &gt *** text ***)     cronentry</tt></quote>
<tscreen><code>
0,10,20,30,40,50 * * * *  /home/mailservice/.checkformail 1> /dev/null 2> 
/dev/null
</code></tscreen>
<p>

<sect1>Chez votre fournisseur d'accès.
<p>
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.
<p>
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.
<p>
<sect2>(Ancienne version de sendmail) ajoutez les lignes suivantes au fichier
sendmail.cf
<p>
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).
<p>
<quote><tt>(*** &lt file &gt *** add ***)    /etc/sendmail.cf</tt></quote>
<tscreen><code>
# 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 . >
</code></tscreen>
<p>

<sect2>(Nouvelle version de sendmail) Ajoutez ces lignes au fichier sendmail.cf
<p>
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 :
<p>
<quote><tt>(*** &lt file &gt *** add ***)    /etc/sendmail.cf</tt></quote>
<tscreen><code>
# 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

</code></tscreen>
<p>

<sect2>(Nouvelle version de sendmail) Editez le fichier /etc/sendmail.cw
<p>
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 :
<p>
<quote><tt>(*** &lt file &gt *** text ***) /etc/sendmail.cw</tt></quote>
<tscreen><code>
mydomain.dom		mailservice
</code></tscreen>
<p>

<sect2>Créez un fichier /etc/maildomains file
<p>
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 :
<p>
Avec l'ancienne version de sendmail:
<p>
<quote><tt>(*** &lt file &gt *** text ***)     /etc/maildomains</tt></quote>
<tscreen><code>
mydomain.dom		mailservice
</code></tscreen>
<p>
Avec la nouvelle version de sendmail:
<p>
<quote><tt>(*** &lt file &gt *** text ***)     /etc/maildomains</tt></quote>
<tscreen><code>
@mydomain.dom		mailservice
</code></tscreen>
<p>

<sect2>Au travail !
<p>
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 :
<p>
<verb>
cd /etc    (or /yourhomedir)
makemap btree maildomains < maildomains
</verb>
<p>
après celà, tuez le démon sendmail et redémarrez le. Maintenant ça devrait 
marcher ! Bonne chance :)


<sect>Automatisation
<p>
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).

<sect1>La structure.
<p>
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.


<sect2>Le fichier de pre-routine ".procmailrc-header" 
<p>
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.
<p>
<quote><tt>(*** &lt file &gt *** text ***) .procmailrc-header</tt></quote>
<tscreen><code>
: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

</code></tscreen>
<p>

<sect2>Le fichier de post-routine ".procmailrc-footer"
<p>
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 !
<p>
<quote><tt>(*** &lt file &gt *** text ***) .procmailrc-footer</tt></quote>
<tscreen><code>

: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

</code></tscreen>
<p>

<sect1>Script d'ajout de boîte à lettre
<p>
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.
<p>
<quote><tt>(*** &lt file &gt *** code ***)     addmail   (* chmod 500 *)
</tt></quote>
<tscreen><code>
#/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
</code></tscreen>
<p>
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.
<p>
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.

<sect>A l'aide ! (Sic)
<p>
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.

<p>
<sect1>Le script d'automatisation ne fonctionne pas:
<p>
<itemize>
<item>est-il executable ?
<item>est-ce que votre emplacement par défaut est /bin/sh ?
</itemize>
<sect1>Qu'est-ce que vous entendez par serveur de mail anonyme ?
<p>
<itemize>
<item>Vous pouvez créer un compte comme "anon0001@votredomaine.dom" et le faire
 suivre vers une autre adresse e-mail... personne n'ayant accès au fichier 
.procmailrc, VOUS SEUL connaissez l'identité de vos utilisateurs !
</itemize>
<sect1>Mon chat est mort
<p>
<itemize>
<item>La prochaine fois n'imprimez pas ce HowTo avec du papier de 200gr, 
parceque pour 10 pages ce sera 2kg pour le chat - c'est JUSTE TROP LOURD !
</itemize>
<sect1>Mon chien est mort
<p>
<itemize>
<item>Hmmm... je ne peux rien faire pour vous, pourquoi vous me posez cette 
question ? ... Enterrez le...
</itemize>
<sect1>Linux?
<p>
<itemize>
<item>Un UNIX libre de droit - compatible Posix - créé par Linus Torvalds ... 
Pourquoi êtes-vous en train de lire celà si vous ne connaissez même pas Linux ?
</itemize>
<sect1>Pouvez vous m'aider à trouver un compte ?
<p>
<itemize>
<item>	Non! C'est un HowTo pour une utilisation personnelle, je me contrefous 
de votre fournisseur d'accès ainsi que de votre adresse e-mail.
</itemize>
<sect1>Pourquoi avoir enlevé " peut-être que plus tard je rajouterais quelques 
commentaires ..." ?
<p>
<itemize>
<item>Lisez le point 5.5 avec attention :) et verrez pourquoi... c'est parce 
que j'avais besoin de le rajouter sur demande générale :)
</itemize>

<sect1>Comment puis-je obtenir un "domaine" ?
<p>
<itemize>
<item>Demandez à votre fournisseur d'accès, il vous y aidera. Ca peut prendre 
des jours voire des semaines pour le demander à Internic - votre fournisseur 
d'accès peut aider.
</itemize>
<sect1>Pourquoi êtes-vous un enc... en utilisant cette méthode ?
<p>
<itemize>
<item>Parce que je ne veux pas dépenser de l'argent et parce que j'aime bien 
être un enc... en l'utilisant - JE l'utilise - pourquoi ça vous ennuie ?

</itemize>
<sect1>Le fichier "nosuchuserfile" ?
<p>
<itemize>
<item>Vous pouvez y mettre ce que vous voulez - pourvu que l'expéditeur sache 
pourquoi son message a été refusé.
</itemize>
<sect1>Est-ce que mes utilisateurs peuvent écrire et envoyer du courrier ?
<p>
<itemize>
<item>Ce n'est pas le but de ce système, lisez le manuel du sendmail... je vous
 explique ici comment RECEVOIR 	du courrier et avoir toujours une adresse 
valide.
</itemize>
<sect1>Est-ce que chaque utilisateur a besoin d'un compte shell sur mon 
serveur ?

<p>
<itemize>
<item>Nan... Mais ! Ce sera difficile pour les utilisateurs qui n'ont pas accès
 à internet :) vous pourriez avoir un réseau camouflé (et utiliser un 
ordinateur qui y soit connecté) pour que les utilisateurs puissent lire leur 
courrier de cette façon, ou bien vous pourriez créer un lien entre un BBS et 
le courrier électronique, vous pourriez même le transmettre vers une passerelle
 Fidonet :) Autant de circonstances qui permettraient d'éviter de donner un 
compte shell.
</itemize>
<sect1>sans objet
<p>
<itemize>
<item>A priori un jeu de mot entre Skeletion et Skeleton
</itemize>
<sect1>l'ajout de courrier ?
<p>
<itemize>
<item>Pas de question - pour l'automatisation - vous feriez mieux d'être sûr de
 ce que vous voulez, parce que ça pourrait être votre cheval de troie ;)) Ce 
que je veux vous dire, c'est que vous devez savoir comment faire un script 
avant de poser des questions.
C'est assez facile à interprêter et en plus j'y ai ajouté des commentaires.
Si vous avez l'intention de distribuer ce script, svp pensez à mon copyright ! 
merci ;)
</itemize>
<sect1>Pourquoi êtes-vous si cruel ?
<p>
<itemize>
<item>Je ne suis pas cruel :) je suis gentil :) je suis le plus gentil garçon 
de la Terre, de l'univers ! MAINTENANT DEHORS ! ( je veux juste m'en tenir à 
mon HowTo et pas TROP dériver de mon point de départ - aussi :) 
that's all folks ! ).
</itemize>
<sect1>Avez vous eu des plaintes à propos de langage excessif ?
<p>
<itemize>
<item>Pas encore, mais, il se pourrait que je filtre toute chose contenant 
"excessif" et "langage" :) je ne sais pas :))
</itemize>
<sect1>Pourquoi ce HowTo est-il si différent des autres ?
<p>
<itemize>
<item>Parce que le fait de lire beaucoup de HowTo peut devenir barbant... j'ai 
voulu y ajouter autre chose...
</itemize>
<sect1>Localement mon domaine fonctionne, mais semble rien recevoir de 
l'extérieur.
<p>
<itemize>
<item>Vérifiez votre fichier "sendmail.cw, le nom de domaine a BESOIN de s'y 
trouver !
</itemize>
<sect1>Mon chien est mort
<p>
<itemize>
<item>Les règles ne fonctionnent pas, je ne peux recevoir d'e-mail, ou sendmail
 plante, référez vous à la section « new sendmail » et ne ftes pas attention 
aux explications de l'ancienne version.
La nouvelle version de sendmail sera plus facile à utiliser avec les domaines 
virtuels.
</itemize>

<sect>The End
<p>
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 à
<htmlurl url="http://tuc.ml.org/hehehe">.
<p>
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 !


</article>
