Utilisation simple de procmail

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 :

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 :

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.