D'abord, il faut s'assurer que le fichier /.forward contient une ligne du genre :
"|IFS=' '&&exec /usr/bin/procmail -f-||exit 75 #jbon"
Quelque remarques :
|
), configure le ``séparateur de champs'' du shell et exécute procmail (modifier éventuellement le chemin) ou quitte en retournant un code d'erreur 75 (que sendmail saura interpréter). La suite (après le caractère #) est un commentaire nécessaire pour sendmail. C'est le login du l'utilisateur qui doit être mis (ici jbon) ;
Si on récupère les méls avec fetchmail, on peut lui dire d'appeller directement procmail sans passer par l'agent de transfert de méls (comme sendmail, par exemple) en mettant dans le fichier /.fetchmailrc :
mda "/usr/bin/procmail -Y -d %T"
Sinon il faut que le serveur de méls (sendmail, postfix...) appelle procmail pour délivrer les courriers à tous les utilisateurs. Ceci peut s'avérer plus lourd à lancer pour chaque courrier.
Maintenant qu'on a demandé à procmail de s'occupper de nos courriers, il faut lui dire quoi en faire. Pour cela, il faut lui donner des instructions qui seront stoquées dans le fichier /.procmailrc. Voici quelque conventions d'écriture de ce fichier :
|
, une adresse à laquelle forwarder le message si elle commence par !
, un nom de fichier où copier le message sinon ;
Les conditions sont des expressions régulières basées sur egrep (voir egrep(1)).
Tous les méls qui n'obéissent à aucun des modèles spécifiés sont mis dans la boîte aux lettres par défaut de l'utilisateur. Si procmail ne trouve pas de fichier /.procmailrc, il ne lit aucune règle et envoie donc tous les courriers dans la boîte aux lettres de l'utilisateur, ce qui explique que procmail puisse être utilisé comme agent de délivraison de courriers.
Pour configurer procmail, il suffit d'écrire un fichier /.procmailrc. Voici un exemple simple de fichier /.procmailrc :
# # Fichier de log de procmail # LOGFILE=$HOME/.procmailrc.log # # Ce qui sera ecrit dans le fichier de log avant chaque traitement # LOG="--- Log $LOGFILE pour $LOGNAME ---" # # Repertoire contenant les mels # MAILDIR=$HOME/Mail # # Options utiles # LOGABSTRACT=all VERBOSE=yes # # Fichier ou un message est stocke si il ne correspont a aucune # regle definie # DEFAULT=misc SENDMAIL=sendmail # # Copie tous les mails dans un repertoire de sauvegarde (pour les tests) # #:0 c: #backup # # Tous les méls venant de user@domaine1 seront redirigés dans le fichier # Mail/user # :0 * ^From.*user@domaine1 Mail/user # # Tous les méls venant de jaimepas@domaine2 seront redirigés dans le fichier # /dev/null (la poubelle) # :0 * ^From.*user@domaine2 /dev/null # # Tous les méls venant de ou allant à ...@domamine3 seront redirigés dans le fichier domaine3 # :0 * ^(To|From):.*@domaine3 domaine3 # # Tous les mels venant ou allant a ...@linux-france.org seront forwardes # a mdecore@multimania.com et conservés dans le fichier mbox # { :0 c | mail mdecore@multimania.com :0 mbox # # Le reste part a l'adresse mdecore@tuxigloo.org # :0: ! mdecore@tuxigloo.org }
Lorsqu'on précise l'option c, cela signifie que on travaille sur une copie du mél, et non sur le courrier lui même.