Retourner au contenu. Retourner à la navigation

 

La messagerie

by admin @ 11/10/2005
Article sur la messagerie

Les Mail Delivery Agent

Les MDA ont pour rôle de distribuer le courier reçu dans les boîtes mail des utilisateurs.

Ils permettent notamment d'appliquer à tous ces mails des filtres :

  • des filtres anti-spam qui permettent de se débarasser de tous les couriers indésirables,

  • des filtres anti-virus,

  • des filtres personalisés pour trier les mails dans différents dossiers (pour les mailing listes par exemple).

3.1 Procmail

3.1.1 Présentation

Procmail est un MDA qui permet de :

  • rediriger les mails vers d'autres adresses,

  • trier les mails dans différents dossiers,

  • exécuter des programmes qui traiteront le mail.

Le fonctionnement de procmail est très simple : il est appelé avec un mail en entrée standard, et traite le mail en fonction des filtres contenus dans le fichier .procmailrc de l'utilisateur.

3.1.2 Installation

Tout d'abord récupérez les source de procmail sur http://www.procmail.org.

décompressez les :

user@localhost$ tar -zxpvf procmail-3.22.tar.gz

Lancez la compilation

user@localhost$ make

Au bout de quelques lignes, appuyez sur entrée pour lancer les tests.

Une fois la compilation réussie, lancez la commande :

root@localhost# make install-suid

Nous pouvons maintenant le configurer

3.1.3 Configuration

La configuration de procmail se fait en deux parties.

La première partie contiens les définitions de variables.

La deuxième partie contiens la définition de tous les filtres.

Les lignes contenant des commentaires commencent par des #.

Procmail gère les formats mailbox et maildir, il faut donc lui préciser dans quel format il doit stocker les mails.

Si un chemin fini par / alors les mails seront stockés au format maildir, sinon ils seront stockés au format mailbox.

3.1.3.1 Variables

Nous allons expliquer ici les principales variables utilisées par procmail.

Toutes ces variables sont définies dans .procmailrc.

3.1.3.1.1 Verbose

L'option Verbose permet de forcer procmail à affichier des informations suplémentaires sur ce qu'il fait.

Cette option peut être très utilie lors du test des différents filtres.

VERBOSE=yes
3.1.3.1.2 Maildir

Maildir permet de spécifier le répertoire racine de istribution des mails. En général on utilise ~/Mail/.

MAILDIR=~/Mail/
3.1.3.1.3 Orgmail

Orgmail permet de spécifier dans quel répertoire seront délivrés tous les mails pour lesquels aucun filtre ne s'applique.

ORGMAIL=$MAILDIR/Default/
3.1.3.1.4 Logfile

Logfile permet de définir dans que fichier seront enrengistrés les logs de procmail.

Les logs ne contiennent que quelques informations (expéditeur et sujet du mail, traitement effectué sur le mail).

LOGFILE=$MAILDIR/.procmail.log

3.1.3.2 Filtres

Les filtres permettent d'appliquer certaines commandes à certaines parties de certains mails.

Les filtres sont définis entre 3 parties.

  • en-tête

  • conditions

  • action

Les conditions des filtres sont testées pour chaque filtre, jusqu'à ce qu'un filtre corresponde au mail. Dans ce cas le mail ne sera pas traité par les filtres suivants (sauf si le filtre correspondant au mail contiens le drapeau c (voir ci-dessous).

3.1.3.2.1 En-tête

L'en-tête est formée d'une seule ligne qui commence par :0.

On y met ensuite eventuellement des drapeaux :

  • H (header) : signifie qu'on applique les conditions uniquement sur les en-têtes du mail.

  • B (body) : signifie qu'on applique les conditions sur tout le mail.

  • h (header) : signifie qu'on ne passe que les en-têtes à l'action.

  • c (copy) : signifie qu'on conserve une copie du mail pour un traitement ultérieur.

On peut ensuite éventuellement y mettre un verrou, pour empécher que deux appels simultanés de ce filtre crééent des conflits (écriture simultanée dans le même fichier ...).

3.1.3.2.2 Conditions

Il est possible de mettre n'importe quel nombre de conditions (y compris aucune).

Il ne doit y avoir qu'une condition par ligne.

Toutes les lignes contenant des conditions doivent commencer par *, puis doivent contenir une chaîne qui sera passée à une commande egrep interne à procmail. Les conditions seront donc des expressions régulières.

Une documentation sur les expressions régulières est disponible ici.

Pour que l'action du filtre soit validée, il faut que toutes les conditions soit vraies (ET logique).

3.1.3.2.3 Action

Un filtre ne peux avoir qu'une seule action, elle peut être de trois types :

  • redirection vers un fichier : Il suffit d'indiquer le chemin vers le fichier.

    Dans ce cas, il ne faut pas oublier de mettre un verrou sur le fichier.

  • redirection vers un programme : Il suffit d'indiquer le nom du programme ainsi que ses arguents, en précédent le tout d'un pipe (|). Le mail sera alors envoyé sur l'entrée standard du programme.

    Si le drapeau h est utilisé dans l'en-tête, alors seules les en-têtes du mail seront envoyées sur l'entrée standard.

  • redirection vers une autre adresse : il suffit d'écrire l'adresse mail du nouveau destinataire, précédée par !.

    On peut rediriger le mail vers plusieurs destinataires en mettant une liste d'adresses mail séparées par des virgules.

3.1.3.2.4 Exemples d'utilisation
3.1.3.2.4.1 Trie des mailing listes

Ce filtre permet de trier tous les mails provenant de la mailing liste de la FSF France dans un dossier FSFE-France.

:0 H : fsfe.lock
* ^List-Id:.*fsfe-france.gnu.org
$MAILDIR/FSFE-France/

Cet exemple recherche List-Id: fsfe-france.gnu.org dans les en-têtes du mail.

Si le mail contiens cette chaîne, alors le fichier fsfe.lock est créé pendant toute la durée de l'écriture du mail dans le répertoire ~/Mail/FSFE-France/ au format maildir (à cause du / final).

3.1.3.2.4.2 Utilisation d'un filtre anti-spam

Ce filtre fait passer les mails à travers un filtre anti-spam :

:0: spamassassin.lock
* < 256000
| spamassassin

Si le mail fait moins de 256Ko, il est envoyé en entrée standard de spamassassin.

Spamassassin ajoute une en-tête au mail contenant la notation du mail : plus la note est élevée, plus le risque que cela soit un spam est grand.

Il ne reste plus qu'à trier les spams dans une boîte spéciale :

:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
$MAILDIR/Spams/

Les mails ayant une note supérieure ou égale à 15 (la ligne commence par X-Spam-Level puis 15 étoiles) seront automatiquement déplacés dans le dossier ~/Mail/Spams/.

3.1.3.2.4.3 Blocs imbriqués

Procmail permet d'imbriquer des filtres les uns dans les autres.

Le niveau d'imbrication est illimité.

:0
* ^From.*fsf-europe
{
:0 c
! fred

:0:
$MAILDIR/FSF-Europe/
}

Ici, les mails en provenance de la FSF Europe seront envoyés à l'utilisateur fred, et copiés dans le dossier Mail/FSF-Europe/.

Le c (copy) du premier des filtres imbriqués, permet de garder une copie du mail qui sera passée au deuxième filtre imbriqué.

3.1.4 Ressources

Utilisation de Procmail

Filtrer ses mails en utilisant Procmail

Documentation rapide sur Procmail

Procmail FAQ (anglais)

Une liste d'astuces (anglais)

Par admin Dernière modification 22/03/2007 15:40
Navigation
Actualités
23/06/2008 Opération du libre à Nantes !
23/06/2008 OpenSuse 11
18/06/2008 Firefox 3 !
09/06/2008 Linux Pratique Essentiel
08/06/2008 Ordinateurs vendus avec gNewSense
Plus d'actualités...
Articles
22/05/2008 Première approche de Qmail
19/05/2008 Test de la distribution Elive 1.0 Gem
14/05/2008 GNUPG introduction à la cryptographie et utilisation de GnuPG
21/02/2008 GNU / Screen
03/09/2007 The Linux File System Encryption API
More articles
Tips
28/04/2008 Mozilla Firefox : Google Talk et Facebook Chat
22/04/2008 Sed : Rechercher du texte entre deux chaines de caractères
04/04/2008 Gérer son(ses) écran(s) avec xrandr
26/03/2008 Tips sur l'historique de vos commandes
13/02/2008 Linux-Unix Cheat Sheets
More tips
Codes
09/04/2008 Chapitre 13 - Administration DNS et DHCP
09/04/2008 Chapitre 06 - Service web avec Apache
04/04/2008 Chapitre 09 - PureFTPd
04/04/2008 Chapitre 06 - Scripting Bash
01/04/2008 Chapitre 20 - Haute Disponibilité
More codes
Courses
13/09/2006 Module 3
23/02/2006 Module 2
23/02/2006 Module 1
More courses
Formation Linux

Supinfo Training Center has the first Linux Certification. The training is 13 days and allow you to pass the LPI 101 and 102.

more info
 
 
Vous êtes ici :
Articles La messagerie Les Mail Delivery Agent