next up previous contents
suivant: Personnes de contact monter: Mail (courrier électronique privé) précédent: Logiciels clients pour ordinateurs   Table des matières


Tri du courrier (procmail)

Lorsqu'on reçoit beaucoup de courrier, ce qui arrive rapidement dès qu'on s'incrit à des listes de diffusion (mailing-list), il devient intéressant de pouvoir trier son courrier dans différentes boîtes. Ce qui est encore plus intéressant est d'avoir un logiciel qui s'en occupe automatiquement à la réception du courrier, procmail 69le permet.

Si ce logiciel est déjà installer sur votre machine, il suffit d'indiquer dans votre fichier .forward d'utiliser procmail et dans le fichier .procmailrc comment doit être trié le courrier. Pour cela vous indiquez dans quelle boîte mettre la lettre arrivant suivant qu'elle provienne de Pierre Durant, ou du site jussieu.fr, ou bien si le texte «guide unix» figure dans le titre, etc... Il est également possible de demander à procmail de lancer un programme ou d'envoyer une réponse à la réception de tel type de courrier.

Voici un exemple de fichier .forward :

"|IFS=' ' && p=/usr/local/bin/procmail && test -f $p && exec $p -Yf- || exit 75 #ricou"

et un fichier .procmailrc :

# Si certains chemins de PATH n'existent pas, enlevez les.

PATH=$HOME/bin:/usr/bin:/bin:/usr/local/bin:.
MAILDIR=$HOME/Mail              # vérifiez que ce répertoire existe
DEFAULT=$MAILDIR/mbox
LOGFILE=$MAILDIR/from
LOCKFILE=$HOME/.lockmail
SENDMAIL=/usr/sbin/sendmail

:0:                             
* ^From.*henry                  # tout ce qui vient d'Henry
henries                         # va dans $MAILDIR/henries

:0                             
* ^(To:|Cc:).*@cru.fr           # ce qu'envoie le CRU dans sa liste de diffusion
lmb                             # va dans $MAILDIR/lmb

:0                              # ces lettres disparaissent et j'ajoute
* ^From.ricou@*                 # un "idiot" dans le fichier /tmp/idiot
| echo "idiot ">> /tmp/idiot    # (on peut lancer un programme plus intéressant)
# Attention: peut-être faut-il utiliser plutôt
#    | (echo "idiot" >> /tmp/idiot; cat > /dev/null)
# si les mails dépassent la taille d'un pipe usuel
# (je vous laisse réfléchir pourquoi)

:0                      	
* ^Subject:.*questions          # toutes les 'questions' vont dans 
{
  :0 c
  question                      # $MAILDIR/question  et 
  
  :0                            # on renvoit une gentille reponse
  | (formail -r ; \
       echo "J'aime pas les questions...";\
       echo "-- "; cat $HOME/.signature \
    ) | $SENDMAIL -oi -t
}

# Tout ce qui n'a pas été pris en compte sera rangé dans $MAILDIR/mbox

Une autre façon d'utiliser procmail est de lui demander de trier une boîte aux lettres pleine. Voici le script qui permet de trier sa boîte (dans le cas où l'on a pas mis le fichier de forward pour lancer le tri à la réception) 70 :

#!/bin/sh

ORGMAIL=/var/spool/mail/$LOGNAME
  
  if cd $HOME &&
    test -s $ORGMAIL &&
    lockfile -r0 -l3600 .newmail.lock 2>/dev/null
  then
    trap "rm -f .newmail.lock" 1 2 3 15
    umask 077
    lockfile -l3600 -ml
    cat $ORGMAIL >>.newmail &&
    cat /dev/null >$ORGMAIL
    lockfile -mu
    formail -s procmail <.newmail &&
    rm -f .newmail
    rm -f .newmail.lock
  fi
exit 0


next up previous contents
suivant: Personnes de contact monter: Mail (courrier électronique privé) précédent: Logiciels clients pour ordinateurs   Table des matières
Marc SCHAEFER 2003-03-01