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 !
- Vous devez créer un fichier .procmailrc qui contiendra les infos de
routage vers vos utilisateurs.
- 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é.
- 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é.
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)
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
(*** < 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"
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
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 :)
|