Procmail est un utilitaire très puissant et vraiment pratique pour gérer les mails reçus. Il permet par exemple de filtrer des mails, de faire des redirections en fonction de l'envoyeur, du sujet, de la taille du mail,etc ..
Son utilisation et sa configuration sont assez simple. Elle se résume en fait à l'édition d'un seul et unique fichier.
Pour les utilisateurs de distributions à base de 'RPM & Co', l'installation serat identique à celle de tout autre package.
Pour les autres, ou pour ceux qui aiment passer par les sources, téléchargez la dernière version des sources de Procmail et suivez ces instructions :
Et voilà, Procmail est déja installé.
Comme dit précédemment, la configuration de 'Procmail' est vraiment très simple et se résume à l'édition d'un fichier. Le nom de ce fichier importe peu car il serat donné en argument lorsque l'on lancerat 'procmail', néanmoins, par défaut, si aucun fichier de configuration n'est donné en argument à procmail, ce dernier va lire le fichier $HOME/.procmailrc ou en deuxième recours, le fichier /etc/procmailrc.
Le fichier de configuration est composé de deux parties :
Les variables qui seront utiles aux différents scripts et programmes lancés.
Par exemple :
# mettre /bin/sh surtout si vous utilisez tcsh ! SHELL=/bin/sh # répertoire où seront stockés les mails MAILDIR=/home/moi/Mail # chemin d'accès aux exécutables ; en mettre le minimum, pour n'accéder qu'aux # programmes indiqués dans le fichier de configuration PATH=/bin:/usr/bin:/usr/local/bin # si procmail n'arrive pas à délivrer le courrier, cette boîte sera utilisée. ORGMAIL=$MAILDIR/secours # boîte de réception par défaut DEFAULT=/var/mail/default # Fichier de log de procmail LOGFILE=$MAILDIR/.procmail.log # Fichier de configuration a inclure INCLUDERC=/etc/procmailrc-config-general
Une série de blocs dont la syntaxe éxacte serat la suivante :
:0 [flags] [ : [locallockfile] ] < zéro ou plusieurs conditions (mais seulement une seule par ligne) > < éxactement une ligne d'action >
Les conditions :
La ligne d'action :
Liste des flags :
H | Recherche de motif dans l'entête du mail (défaut). |
B | Recherche de motif dans le corps du mail. |
D | Distinguer les lettres majuscules, des minuscules (contrairement à la règle par défaut, qui ne fait pas la distinction). |
A | Le bloc serat exécuté si, et seulement si, la condition du précédent bloc(sans flag 'A' ou 'a') concorde aussi. Cela permet d'enchaîner des actions qui dépendent d'une même condition. |
a | Idem que le flag 'A', avec la condition supplémentaire que le précédent bloc s'est terminé avec succès. |
E | Ce bloc serat exécuté si, et seulement si, le précédent bloc n'a pas été exécuté. L'exécution de ce bloc annule les blocs suivant qui contiennent le flag 'E', permettant ainsi d'avoir le rôle d'un 'else if'. |
e | Ce bloc serat exécuté si, et seulement si, le précédent bloc fût un échec. |
h | Renvoie le contenu de l'entête du mail vers le 'pipe',le fichier ou le mail d'arrivé(défaut). |
b | Renvoie le corps du mail vers le 'pipe',le fichier ou le mail d'arrivé(défaut). |
f | Considère le 'pipe' comme un filtre. |
c | Génère une copie conforme du mail. |
w | Attend que le filtre ou le programme se finisse et vérifie son 'exitcode' (normalement ignoré); si le filtre n'est pas un succès, cela signifie que le texte ne doit pas avoir été filtré. |
W | Idem que pour 'w', mais supprime les méssages d'érreurs qui pourraient survenir. |
i | Ignore les possibles érreurs d'écriture dans ce bloc. |
r | Raw mode. Ne s'assure pas que le mail se termine bien par une ligne vide, et recopie ce dernier tel quel. |
Voici deux exemples d'utilisations que l'on peut faire, avec leurs fichiers de configuration.
On cherche ici à filtrer(f) le spam en utilisant 'spamassassin'(| spamc). Puis, quand ce dernier a terminé(w), on recherche dans l'en-tête du mail si le motif "X-Spam-Status: Yes" est présent. Si c'est le cas, on met le mail dans le dossier $MAILDIR/spam/, autrement le mail va dans $MAILDIR/new :
Dans cet exemple, on vérifie que le mail n'a pas été reconnu comme spam, puis, si ce n'est effectivement pas du spam, on lance deux autres blocs, regroupés grâce aux accolades. Le premier de ces blocs scanne le mail avec l'antivirus "clamav", et le second envoie le mail à "toto@mon_domaine.com" :
Vous trouverez beaucoup plus d'exemples intéressants en faisant un 'man procmailex' ...
Procmail est désormais installé et configuré. Néanmoins, tel quel, il ne vous serat d'aucune utilité. En éffet, il vous faut désormais le coupler avec le Serveur SMTP que vous utilisé.
A titre d'information, sachez quel le langage de programmation le plus adapté à la recherche de motif est, à mon avis, le langage PERL. Si vous désirez vous créer votre propre filtre 'fait maison', c'est de ce côté là qu'il faut chercher.