Utilisation avancée de procmail

En fait, on peut donner des modèles pour n'importe quel en-tête, pour rechercher dans le corps du message (en mettant :0B:), ...

Par exemple, pour agir sur tous les méls ne venant pas des démons ou mailers, et ne venant pas d'un procmail à nous (qui pourrait boucler indéfiniment si on ne le précise pas), on peut mettre :

:0
* !^FROM_DAEMON
* !^FROM_MAILER
* !^X-Loop: monadresse@mamachine.mondomaine.org
| $HOME/bin/mon.script

On peut aussi reformatter le courrier et même le renvoyer grâce à formail :

:0
* ^FROMemmerdeur@spamhome.com
* !^FROM_DAEMON
* !^FROM_MAILER
* !^X-Loop: monadresse@mamachine.mondomaine.org
| (formail -rk \
-A "X-Loop: votrenom@votreadresse.com" \
-A "Precendence: junk"; \
echo "Ne m'envoyez plus de courrier svp";\
echo "Ceci est une réponse automatisée";\
echo "Je ne verrai jamais votre message";\
echo "Donc, PASSEZ VOTRE CHEMIN" ) | $SENDMAIL -t -oi

On demande à formail de formater une réponse et de garder le corps du message (-rk), de rajouter des en-têtes (-A "X-Loop: votrenom@votreadresse.com" et -A "Precendence: junk") et d'afficher un message (echo) qu'il envoie à sendmail (dont le chemin est définit par procmail lui même) qui doit prendre comme adresse To: celle donnée en entrée dans l'en-tête par formail -r. Noter que la syntaxe FROMemmerdeur@spamhome.com utilise la macro FROM qui indique à procmail de chercher dans les champs from, resent-by...

Un autre exemple d'utilisation de formail, qui permet de supprimer tous les doublons de méls :

:0 Wh: msgid.lock
| formail -D 8192 msgid.cache