Cette section examine seulement Procmail de fa�on d�taill�e. Pour toute information sur la commande mail, consultez la page de manuel qui lui est d�di�.
Procmail distribue et filtre le courrier �lectronique d�s qu'il est plac� dans le fichier spoule de messagerie de l'h�te local. Il est puissant, peu exigeant en mati�re de ressources syst�me et d'une utilisation courante. Procmail peut jouer un r�le critique dans la distribution du courrier qui sera lu par les applications client de messagerie.
Il existe diff�rentes fa�ons d'invoquer Procmail. D�s qu'un ATC d�pose un message dans le fichier spoule de messagerie, Procmail est lanc�. Ce dernier filtre et classe alors le message de mani�re � ce que l'AGC puisse le trouver puis quitte le processus. L'AGC peut �galement �tre configur� de sorte qu'il ex�cute Procmail chaque fois qu'un message est re�u afin que le courrier soit achemin� vers les bo�tes aux lettres appropri�es. Par d�faut, la pr�sence d'un fichier /etc/procmailrc ou d'un fichier .procmailrc (aussi appel� un fichier rc) dans le r�pertoire personnel d'un utilisateur invoquera Procmail d�s qu'un ATC re�oit un nouveau message.
Toute action effectu�e par Procmail sur un message �lectronique d�pend de la capacit� du message � satisfaire un ensemble de conditions ou recettes (aussi appel�es recipes selon le terme anglais) particuli�res contenues dans le fichier rc. Si un message satisfait une recette, il peut alors �tre plac� dans un fichier donn�, �tre supprim� ou �tre trait� d'une autre fa�on.
Lors du d�marrage de Procmail, ce dernier lit les messages �lectroniques et s�pare les informations relatives au corps du message de celles concernant l'en-t�te. Ensuite, Procmail cherche les fichiers /etc/procmailrc et rc dans le r�pertoire /etc/procmailrcs pour trouver les variables d'environnement et recettes de Procmail s'appliquant par d�faut � l'ensemble du syst�me. Procmail cherche ensuite un fichier .procmailrc dans le r�pertoire personnel de l'utilisateur. De nombreux utilisateurs cr�ent des fichiers rc suppl�mentaires pour Procmail, qui sont r�f�renc�s dans leur fichier .procmailrc pr�sent dans leur r�pertoire personnel.
11.4.1. Configuration de Procmail
Les fichiers de configuration de Procmail contiennent des variables d'environnement importantes. Ces derni�res pr�cisent � Procmail les messages sp�cifiques devant �tre tri�s et le sort des messages qui ne satisfont aucune recette.
Ces variables d'environnement qui se trouvent g�n�ralement au d�but du fichier .procmailrc ont le format suivant�:
Dans cet exemple, <env-variable> correspond au nom de la variable alors que l'�l�ment <value> d�finit la variable elle-m�me.
La plupart des utilisateurs de Procmail De nombreuses n'utilisent pas de nombreuses variables d'environnement mais les plus importantes sont d�j� d�finies par une valeur par d�faut. La plupart du temps, les variables suivantes sont utilis�es�:
DEFAULT — D�finit la bo�te aux lettres o� seront plac�s les messages qui ne satisfont aucune recette.
La valeur par d�faut de DEFAULT est la m�me que $ORGMAIL.
INCLUDERC — Sp�cifie des fichiers rc suppl�mentaires qui contiennent d'autres recettes que les messages doivent satisfaire. Ceci permet de diviser les listes de recettes Procmail en fichiers individuels qui jouent diff�rents r�les, tels que le blocage de spams et la gestion de listes d'adresses �lectroniques, qui peuvent ensuite �tre activ�s ou d�sactiv�s � l'aide de caract�res de commentaire dans le fichier .procmailrc de l'utilisateur.
Par exemple, des lignes pr�sentes dans un fichier .procmailrc de l'utilisateur peuvent ressembler � l'extrait suivant�:
MAILDIR=$HOME/Msgs
INCLUDERC=$MAILDIR/lists.rc
INCLUDERC=$MAILDIR/spam.rc |
Si l'utilisateur souhaite d�sactiver le filtrage par Procmail de ses listes d'adresses, mais d�sire garder le contr�le du pourriel, il n'a qu'� commenter la premi�re ligne INCLUDERC avec le symbole di�se (#).
LOCKSLEEP — D�finit la dur�e, en secondes, s'�coulant entre les tentatives de Procmail d'utiliser un fichier de verrouillage sp�cifique. La valeur par d�faut est de huit secondes.
LOCKTIMEOUT — D�finit la dur�e, en secondes, qui doit s'�couler apr�s la derni�re modification d'un fichier de verrouillage avant que Procmail ne consid�re le fichier de verrouillage comme �tant vieux et pouvant par cons�quent �tre supprim�. La valeur par d�faut est de 1024 secondes.
LOGFILE — Repr�sente le fichier dans lequel toutes les informations de Procmail ou tous les messages d'erreurs sont enregistr�s.
MAILDIR — D�finit le r�pertoire de travail courant pour Procmail. Si cete variable est d�termin�e, tous les autres chemins d'acc�s vers Procmail sont relatifs � ce r�pertoire.
ORGMAIL — Sp�cifie la bo�te aux lettres originale ou un autre endroit o� placer les messages s'ils ne peuvent �tre plac�s � l'emplacement par d�faut ou � celui exig� par les recettes.
Par d�faut, une valeur de /var/spool/mail/$LOGNAME est utilis�e.
SUSPEND — D�finit la dur�e, en secondes, pendant laquelle Procmail s'arr�te si une ressource n�cessaire, telle que l'espace swap, n'est pas disponible.
SWITCHRC — Permet � un utilisateur de sp�cifier un fichier externe contenant des recettes Procmail suppl�mentaires, plus ou moins comme le fait l'option INCLUDERC, sauf que la v�rification des recettes est arr�t�e sur le fichier de configuration traitant et que seules les recettes du fichier sp�cifi� avec SWITCHRC sont utilis�es.
VERBOSE — Fait en sorte que Procmail journalise davantage d'informations. Cette option est pratique pour le d�bogage.
D'autres variables d'environnement importantes sont obtenues depuis le shell, comme LOGNAME, qui est le nom de connexion�; HOME, qui est l'emplacement du r�pertoire personnel�; et SHELL, qui est le shell par d�faut.
Consultez la page de manuel de procmailrc pour obtenir des explications exhaustives sur les variables d'environnement ainsi que sur leurs valeurs par d�faut.
11.4.2. Recettes Procmail
Les nouveaux utilisateurs trouvent g�n�ralement que les recettes constituent l'�l�ment le plus difficile de l'apprentissage de l'utilisation de Procmail. Ce sentiment est compr�hensible jusqu'� un certain point, �tant donn� que les recettes effectuent la comparaison avec les messages � l'aide d'expressions r�guli�res, qui est un format sp�cifique utilis� pour sp�cifier des qualifications de concordance de cha�nes. Ceci �tant, les expressions r�guli�res ne sont pas tr�s difficiles � cr�er et sont encore moins difficiles � comprendre en les lisant. De plus, la coh�rence avec laquelle les recettes Procmail sont �crites, sans tenir compte des expressions r�guli�res, permet d'acqu�rir de bonnes connaissances facilement, simplement en examinant les exemples. Pour consulter des exemples de recette Procmail, reportez-vous � la Section 11.4.2.5.
Les recettes Procmail se pr�sentent sous la forme suivante�:
:0<flags>: <lockfile-name>
* <special-condition-character> <condition-1>
* <special-condition-character> <condition-2>
* <special-condition-character> <condition-N>
<special-action-character><action-to-perform> |
Les deux premiers caract�res d'une recette Procmail sont le symbole des deux-points et un z�ro. Divers indicateurs (ou flags) peuvent �tre plac�s apr�s le z�ro pour contr�ler la mani�re selon laquelle Procmail traite la recette. Le symbole des deux-points plac� apr�s la section <flags> sp�cifie qu'un fichier de verrouillage (lockfile) sera cr�� pour ce message. Si un fichier de verrouillage est cr��, le nom peut �tre sp�cifi� dans l'espace <lockfile-name>.
Une recette peut contenir plusieurs conditions servant � v�rifier la concordance d'un message. S'il aucune condition n'est sp�cifi�e, tous les messages auront une concordance positive avec la recette. Les expressions r�guli�res sont plac�es dans certaines conditions de fa�on � faciliter la concordance avec les messages. Si des conditions multiples sont utilis�es, elles doivent toutes obtenir la concordance pour que l'action soit ex�cut�e. Les conditions sont v�rifi�es sur la base des indicateurs sp�cifi�s dans la premi�re ligne de la recette. Des caract�res sp�ciaux facultatifs plac�s apr�s le caract�re * permettent de contr�ler ult�rieurement la condition.
L'option <action-to-perform> sp�cifie l'action ex�cut�e lorsque le message correspond � l'une des conditions. Il ne peut y avoir qu'une action par recette. Dans de nombreux cas, le nom d'une bo�te aux lettres est utilis� ici pour envoyer dans ce fichier les messages satisfaisant les conditions, permettant ainsi de trier le courrier. Des caract�res d'action sp�ciaux peuvent �galement �tre utilis�s avant que l'action ne soit sp�cifi�e. Reportez-vous � la Section 11.4.2.4 pour obtenir de plus amples informations.
11.4.2.1. Recettes de distribution et de non-distribution
L'action utilis�e si la recette correspond � un message donn� d�termine si cette derni�re est consid�r�e comme �tant une recette de distribution ou de non-distribution. Une recette de distribution contient une action qui �crit le message dans un fichier, envoie le message � un autre programme ou r�achemine le message vers une autre adresse �lectronique. Une recette de non-distribution couvre toutes les autres actions, telles que l'utilisation d'un bloc d'imbrication (�galement appel� nesting block). Un bloc d'imbrication est un ensemble d'actions contenues entre deux accolades, { }, qui sont ex�cut�es sur des messages satisfaisant les conditions de la recette. Les blocs d'imbrication peuvent �tre embo�t�s les uns dans les autres, offrant ainsi plus de contr�le pour l'identification et l'ex�cution d'actions sur des messages.
Lorsque des messages satisfont une recette de distribution, Procmail effectue l'action sp�cifi�e et arr�te de comparer le message � toute autre recette. Les messages qui satisfont les recettes de non-distribution continuent eux � �tre compar�s aux autres recettes.
11.4.2.2. Indicateurs
Les indicateurs (ou flags) sont tr�s importants pour d�terminer la fa�on dont les conditions d'une recette sont compar�es � un message. Les indicateurs suivants sont couramment utilis�s�:
A — Sp�cifie que cette recette n'est utilis�e que si la recette pr�c�dente sans indicateur A ou a a �galement obtenu la concordance avec ce message.
a — Sp�cifie que cette recette n'est utilis�e que si la recette pr�c�dente sans indicateur A ou a a �galement obtenu la concordance avec ce message et a �t� ex�cut�e avec succ�s.
B — Analyse le corps du message et recherche des conditions de concordance.
b — Utilise le corps du message dans toute action d�coulant de cet indicateur, comme l'�criture du message dans un fichier ou son r�acheminement. Il s'agit du comportement par d�faut.
c — G�n�re une copie conforme du message �lectronique. Cette option peut �tre utile avec les recettes de distribution, �tant donn� que l'action requise peut �tre ex�cut�e sur le message et que la copie du message peut continuer � �tre trait�e dans les fichiers rc.
D — Rend la comparaison egrep sensible � la casse. Par d�faut, le processus de comparaison n'est pas sensible � la casse.
E — Semblable � l'indicateur A sauf que les conditions dans cette recette sont compar�es � un message seulement si la recette pr�c�dant imm�diatement la recentte sans indicateur E n'a pas obtenu la concordance. Cette action ressemble � une action else.
e — �tablit la comparaison de la recette au message seulement si l'action sp�cifi�e dans la recette pr�sente juste avant �choue.
f — Utilise le tube (aussi appel� pipe) comme filtre.
H — Analyse l'en-t�te du message et recherche des conditions de concordance. Cette situation se produit par d�faut.
h — Utilise l'en-t�te dans une action d�coulant de cet indicateur. Ce dernier repr�sente le comportement par d�faut.
w — Indique � Procmail d'attendre que le filtre ou le programme sp�cifi�s aient termin� leurs op�rations et rapporte si l'op�ration pr�c�dente a r�ussi ou �chou�, avant de consid�rer le message comme �tant filtr�.
W — Identique � w sauf que les messages de type "�chec du programme" (ou Program failure) sont supprim�s.
Pour obtenir une liste d�taill�e d'indicateurs suppl�mentaires, reportez-vous � la page de manuel de procmailrc.
11.4.2.3. Sp�cification d'un fichier de verrouillage local
Les fichiers de verrouillage sont tr�s utiles avec Procmail pour garantir que seul un processus essaie de modifier un certain message � un moment donn�. Il est possible de sp�cifier un fichier de verrouillage local en pla�ant le symbole des deux points (:) apr�s tout indicateur dans la premi�re ligne d'une recette. Ce faisant, un fichier de verrouillage local est cr�� en fonction du nom de fichier de destination et de toute valeur contenue dans la variable d'environnement globale LOCKEXT.
Vous pouvez aussi sp�cifier le nom du fichier de verrouillage local � utiliser avec cette recette apr�s le symbole des deux points (:).
11.4.2.4. Conditions et actions sp�ciales
Des caract�res sp�ciaux utilis�s avant les conditions de recettes et et avant les actions de Procmail modifient la fa�on selon aquelle elles sont interpr�t�es.
Les caract�res suivants peuvent �tre utilis�s apr�s le symbole * au d�but de la ligne de condition d'une recette�:
! — Plac� dans la ligne de condition, ce caract�re inverse la condition, de sorte que la concordance sera d�sormais �tablie seulement si la condition ne satisfait pas le message.
< — V�rifie si la taille du message est inf�rieure � un nombre d'octets sp�cifi�.
> — V�rifie si la taille du message est sup�rieure � un nombre d'octets sp�cifi�.
Les caract�res suivants sont utilis�s pour ex�cuter des actions sp�ciales�:
! — Plac� dans la ligne d'action, ce caract�re indique � Procmail de r�acheminer le message vers les adresses �lectroniques sp�cifi�es.
$ — Renvoie � une variable d�finie pr�c�demment dans le fichier rc. Cette option est g�n�ralement utilis�e pour d�finir une bo�te aux lettres commune � laquelle diverses recettes feront r�f�rence.
| — D�marre un programme sp�cifi� afin qu'il traite le message.
{ and } — Construit un bloc d'imbrication, utilis� pour contenir des recettes suppl�mentaires devant �tre appliquer aux messages satisfaisant les conditions.
Si aucun caract�re sp�cial n'est utilis� au d�but de la ligne d'action, Procmail consid�re que la ligne d'action sp�cifie la bo�te aux lettres o� les messages doivent �tre d�pos�s.
11.4.2.5. Exemples de recettes
Procmail est certes un programme extr�mement flexible, mais en raison de cette flexibilit�, la cr�ation d'une recette Procmail de toutes pi�ces peut �tre une t�che difficile pour de nouveaux utilisateurs.
Le meilleure fa�on de d�velopper les capacit�s n�cessaires pour cr�er les conditions des recettes Procmail consiste � bien comprendre la notion d'expressions r�guli�res et � examiner de nombreux exemples �labor�s par d'autres. Une explication exhaustive des expressions r�guli�res va au-del� de la port�e de cette section. La structure des recettes Procmail ainsi que des exemples de recettes Procmail sont disponibles � diff�rents endroits sur Internet (notamment � l'adresse suivante�: https://www.iki.fi/era/procmail/links.html). En examinant ces exemples de recettes, il est possible d'acqu�rir des connaissances solides sur la bonne utilisation et sur l'adaptation des expressions r�guli�res. En outre, des informations �l�mentaires sur des r�gles d'expressions r�guli�res de base se trouvent dans la page de manuel de grep.
Les simples exemples reproduits ci-dessous illustrent la structure '�l�mentaire de recettes Procmail et peuvent servir de base pour des conceptions plus �labor�es.
Une recette �l�mentaire ne contient pas forc�ment de conditions, comme le montre l'exemple ci-dessous�:
La premi�re ligne sp�cifie qu'un fichier de verrouillage local doit �tre cr��, mais n'indique aucun nom. Procmail utilise donc le nom du fichier de destination et y ajoute la valeur sp�cifi�e dans la variable d'environnement LOCKEXT. �tant donn� qu'aucune condition n'est sp�cifi�e, tous les messages satisfont cette recette et sont par cons�quent plac�s dans le fichier spoule unique appel� new-mail.spool qui se trouve dans le r�pertoire sp�cifi� par la variable d'environnement MAILDIR. Un AGC peut ensuite visualiser les messages dans ce fichier.
Une recette de base, telle que celle-ci, peut �tre plac�e � la fin de tous les fichiers rc afin que les messages soient achemin�s vers un emplacement par d�faut.
L'exemple ci-dessous illustre l'etablissement de la concordance avec des messages d'une adresse �lectronique sp�cifique et le d�p�t de ces derniers dans la corbeille.
Dans cet exemple, tout message envoy� par [email protected] est achemin� vers le p�riph�rique/dev/null o� il est supprim�.
| Avertissement |
---|
| Assurez-vous que les r�gles fonctionnent bien comme vous le d�sirez avant d'acheminer les messages concern�s vers /dev/null afin qu'ils soient supprim�s de fa�on permanente. Si les conditions de votre recette retiennent accidentellement des messages qui ne devraient pas l'�tre et qu'ils disparaissent sans laisser de trace, il est alors difficile de r�soudre tout probl�me li� � la r�gle. Une solution plus appropri�e consiste � pointer l'action de la recette vers une bo�te aux lettres sp�ciale qui peut �tre v�rifi�e de temps en temps, afin de voir si elle contient de fausses concordances. Une fois convaincu qu'aucun message ne fait l'objet d'une concordance accidentelle, supprimez la bo�te aux lettres et �tablissez l'action de fa�on � ce qu'elle envoie les messages vers /dev/null. |
La recette ci-dessous retient les messages envoy�s depuis une liste de diffusion sp�cifique et les place dans un dossier d�termin�.
:0:
* ^(From|CC|To).*tux-lug
tuxlug |
Tout message envoy� depuis la liste de diffusion [email protected] est automatiquement plac� dans la bo�te aux lettres tuxlug pour le AGC. Notez que la condition dans cet exemple a une concordance avec le message si l'adresse �lectronique de la liste de diffusion se trouve sur l'une des lignes suivantes�: From (De), CC ou To (�).
Pour obtenir des informations sur des recettes plus d�taill�es et plus puissantes, consultez l'une des nombreuses ressources disponibles dans la Section 11.6.
11.4.2.6. Filtres de spam
Puisque Procmail est appel� par Sendmail, Postfix et Fetchmail lors de la r�ception de nouveaux messages, il peut �tre utilis� comme un outil puissant pour combattre le pourriel.
Le combat contre le pourriel est encore plus efficace lorsque Procmail est utilis� de concert avec SpamAssassin. En effet, gr�ce � une double action ces deux applications peuvent rapidement identifier des messages-pourriel, les trier et les d�truire.
SpamAssassin recours � une analyse de l'en-t�te et du texte, � des listes noires et � des bases de donn�es de localisation de spam ainsi qu'� une analyse bayesienne auto-organisatrice de pourriel pour identifier et �tiqueter rapidement et pr�cis�ment tout pourriel (aussi appel� spam).
Pour un utilisateur local, la meilleure fa�on d'utiliser SpamAssassin consiste � ins�rer la ligne suivante vers le haut du fichier ~/.procmailrc�:
INCLUDERC=/etc/mail/spamassassin/spamassassin-default.rc |
Le programme /etc/mail/spamassassin/spamassassin-default.rc contient une simple r�gle Procmail permettant d'activer SpamAssassin pour tout courrier �lectronique re�u. Si un message est reconnu comme �tant un pourriel, il est �tiquet� en tant que tel dans l'en-t�te et la mention suivante est ajout�e au sujet�:
Le corps du message de l'email est pr�c�d� d'un compte-rendu des �l�ments ayant justifi� le diagnostic de spam.
Pour classer les emails �tiquet�s en tant que pourriel, il est possible d'utiliser une r�gle semblable � celle reproduite ci-dessous�:
:0 Hw
* ^X-Spam-Status: Yes
spam |
Selon cette r�gle, tous les messages �tiquet�s en tant que spam dans l'en-t�te sont rang�s dans une bo�te aux lettres nomm�e spam.
�tant donn� que SpamAssassin est un script Perl, il sera peut-�tre n�cessaire d'utiliser le d�mon binaire SpamAssassin (spamd) et l'application client (spamc) sur des serveurs tr�s sollicit�s. Pour configurer SpamAssassin de la sorte, il est n�cessaire d'avoir un acc�s super-utilisateur � l'h�te.
Pour lancer le d�mon spamd, tapez la commande suivante en �tant connect� en tant que super-utilisateur (ou root)�:
/sbin/service spamassassin start |
Pour lancer le d�mon SpamAssassin lors du d�marrage du syst�me, utilisez un utilitaire initscript, comme l'Outil de configuration des services (system-config-services), pour activer le service spamassassin. Reportez-vous � la Section 1.4.2 pour obtenir de plus amples informations sur les utilitaires initscript.
Pour configurer Procmail afin qu'il utilise l'application client SpamAssassin au lieu du script Perl, placez le ligne suivante vers le haut du fichier ~/.procmailrc. Pour une configuration s'appliquant � tout le syst�me, placez cette derni�re dans /etc/procmailrc�:
INCLUDERC=/etc/mail/spamassassin/spamassassin-spamc.rc |