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