GNU/Linux >> Tutoriels Linux >  >> Panels >> Webmin

Filtre de messagerie Procmail

Cette page explique comment utiliser le Procmail programme et Webmin pour filtrer et distribuer les e-mails entrant dans votre système.

Introduction à Procmail

Procmail est un programme puissant pour filtrer et rediriger les e-mails qui seraient normalement envoyés aux boîtes aux lettres des utilisateurs. Il peut être utilisé au niveau du système pour filtrer les messages de tous les utilisateurs de votre système, par utilisateur ou les deux. Contrairement aux alias Sendmail normaux, Procmail peut être utilisé pour livrer les messages différemment en fonction de leurs en-têtes et de leur contenu. Cela en fait un excellent outil pour bloquer les e-mails indésirables, tels que les spams.

Lorsqu'il est installé sur un système, Procmail remplace efficacement la commande normale de livraison de courrier électronique mail.local que Sendmail Mail Server et d'autres MTA exécutent pour ajouter un message au fichier de courrier d'un utilisateur. Même s'il est le plus couramment utilisé avec Sendmail, d'autres MTA tels que QMail Mail Server et Postfix Mail Server peuvent également être configurés pour utiliser Procmail pour la livraison. En ce qui concerne le programme, le serveur de messagerie utilisé n'a pas d'importance tant que le courrier électronique lui est transmis correctement.

Le fichier de configuration principal de Procmail est /etc/procmailrc, qui est généralement géré par l'administrateur système. Les utilisateurs individuels peuvent également créer leurs propres fichiers .procmailrc avec le même format dans leurs répertoires personnels. Le fichier à l'échelle du système est toujours lu et traité en premier, de sorte que les règles qu'il contient pour rediriger les messages en fonction de leur contenu ne peuvent pas être remplacées par des utilisateurs individuels.

Un fichier de configuration Procmail est divisé en actions, chacune ayant une série de conditions et un mode de livraison. Les conditions déterminent les messages auxquels l'action correspond, tandis que le mode de livraison contrôle ce qu'il advient de ceux qui correspondent. Procmail traitera les actions dans l'ordre jusqu'à ce qu'il en trouve une qui corresponde, livrera le message comme spécifié, puis arrêtera le traitement.

Le fichier de configuration peut également inclure des affectations de variables qui peuvent être utilisées par des actions ultérieures ou même d'autres variables. Il peut également contenir des sections conditionnelles spéciales, qui sont des listes d'actions à exécuter uniquement si certaines conditions sont remplies. D'une certaine manière, ce sont comme des instructions si-alors dans un langage de programmation.

Procmail se comporte à peu près de la même manière sur tous les systèmes d'exploitation de type Unix. La seule différence est l'emplacement de livraison par défaut - toutes les distributions Linux utilisent /var/spool/mail comme répertoire de fichiers de courrier utilisateur, tandis que d'autres variantes Unix telles que Solaris utilisent /var/mail. Cependant, cette différence n'a aucun effet sur le format du fichier de configuration du programme ou sur l'interface utilisateur du module Procmail Mail Filter.

Procmail est plus utile lorsqu'il est configuré par des utilisateurs individuels pour effectuer des tâches telles que le tri des e-mails de différentes personnes dans différentes boîtes aux lettres, l'écriture dans deux fichiers de messagerie différents ou la suppression d'e-mails à partir d'adresses spécifiques. Le module Procmail Webmin et ce chapitre ne traitent que de la configuration à l'échelle du système - si vous voulez un outil qui permet aux utilisateurs individuels de configurer le programme via une interface Web, Usermin est le programme à utiliser. Il possède un module avec une interface identique qui gère les fichiers .procmailrc au lieu de /etc/procmailrc, et un autre avec une interface encore plus simple.

La configuration globale de Procmail peut être utilisée pour que le courrier soit livré dans un répertoire différent ou dans un format différent de celui normalement utilisé par votre serveur de messagerie. Par exemple, au lieu que le courrier des utilisateurs soit ajouté aux fichiers dans /var/spool/mail, il pourrait être écrit dans le fichier mbox dans leurs répertoires personnels à la place. Mieux encore, Procmail peut être configuré pour écrire dans un répertoire de messagerie de style Qmail, généralement appelé Maildir et situé dans les répertoires personnels des utilisateurs.

Parce qu'il traite uniquement les e-mails livrés localement sur votre système, Procmail ne peut pas être utilisé pour le filtrage des e-mails si vous utilisez un programme client tel que Mozilla ou Evolution pour télécharger les e-mails du serveur de votre FAI ou de votre entreprise. Si vous n'utilisez pas votre propre serveur de messagerie mais souhaitez tout de même utiliser les fonctionnalités de Procmail, vous devrez configurer Fetchmail Mail Retrieval pour télécharger les messages et les transmettre au MTA de votre système.

Le module de filtrage de messagerie Procmail

Le module Webmin pour la gestion du fichier de configuration à l'échelle du système s'appelle Procmail Mail Filter et se trouve dans la catégorie Serveurs. Cliquer sur son icône vous amènera à la page principale comme celle montrée dans la capture d'écran ci-dessous. Toutes les actions existantes sont répertoriées et, en dessous, se trouvent des liens permettant d'ajouter de nouvelles actions de différents types.


La page principale du module Procmail

Contrairement aux autres modules, celui-ci ne se plaindra pas si Procmail n'est pas installé sur votre système. Vous devez utiliser le module Packages logiciels pour rechercher et installer le package fourni avec votre distribution Linux ou votre système d'exploitation. Si aucun paquet n'existe, vous devrez télécharger la source depuis www.procmail.org, la compiler et l'installer.

Cependant, il ne suffit pas d'installer Procmail pour qu'il soit réellement utilisé sur votre système. Par défaut, les serveurs de messagerie tels que Sendmail, Qmail et Postfix utilisent leurs propres programmes de distribution de courrier standard et non Procmail. Les utilisateurs individuels peuvent modifier cela en créant un fichier .forward ou .qmail contenant la ligne /usr/bin/procmail qui transmet tous les e-mails entrants au programme Procmail. Cependant, il est préférable de reconfigurer globalement votre MTA pour utiliser Procmail afin que les utilisateurs individuels n'aient pas à le configurer. La section *Configuration de Sendmail* ci-dessous explique comment configurer Sendmail - les autres serveurs de messagerie devront être configurés différemment.

Configurer Sendmail

Tant que vous disposez des fichiers M4 à partir desquels votre fichier de configuration Sendmail principal a été créé, la configuration de Sendmail pour utiliser Procmail est simple. Malheureusement, configurer le serveur de messagerie en éditant directement sendmail.cf n'est pas si facile, et n'est donc pas traité dans ce chapitre. Cependant, toutes les distributions Linux modernes incluent les fichiers M4 dont vous aurez besoin, soit dans le package sendmail, soit dans un package séparé tel que sendmail-cf.

Pour configurer le MTA Sendmail pour utiliser Procmail, suivez ces étapes :

  1. Accédez au module de configuration de Sendmail, qui se trouve dans Webmin sous la catégorie Serveurs.
  2. Cliquez sur l'icône *Sendmail M4 Configuration *sur sa page principale. Une liste des directives M4 existantes devrait apparaître - sinon, les fichiers M4 nécessaires pour reconfigurer Sendmail ne sont probablement pas installés sur votre système.
  3. Vérifiez si la ligne FEATURE(local_procmail) existe déjà. Si c'est le cas, la livraison à l'aide de Procmail est déjà activée et il n'est pas nécessaire de suivre le reste de ces étapes.
  4. Dans le menu à côté de Ajouter une nouvelle entrée de type bouton sélectionnez Fonctionnalité , puis appuyez sur le bouton pour afficher le formulaire de création de fonction.
  5. À partir de la fonctionnalité menu sélectionnez local_procmail . Laissez les Paramètres champ vide.
  6. Cliquez sur Créer bouton pour ajouter la nouvelle fonctionnalité au fichier M4. Votre navigateur sera renvoyé à la liste des directives existantes, au bas de laquelle se trouvera la nouvelle ligne FEATURE(local_procmail).
  7. Cliquez sur la flèche vers le haut à côté de la nouvelle ligne autant de fois que nécessaire pour la déplacer au-dessus de la ligne MAILER(local). Cela est nécessaire car le fichier est traité dans l'ordre et la nouvelle directive modifie le comportement de la ligne MAILER.
  8. Lorsque la nouvelle ligne FEATURE est en place, cliquez sur le bouton *Rebuild Sendmail Configuration* en bas de la page. Une page de confirmation s'affichera montrant les modifications qui seront apportées au fichier de configuration principal de Sendmail - et tant que vous n'avez pas modifié directement sendmail.cf, elles seront liées uniquement au nouveau support Procmail.
  9. Cliquez sur Oui, remplacez-le maintenant pour enregistrer et activer la nouvelle configuration. A partir de maintenant, tous les courriers livrés par Sendmail aux utilisateurs locaux seront traités par Procmail. Pour vérifier si tout a fonctionné, essayez d'envoyer quelques messages de test et assurez-vous qu'ils sont livrés normalement.

Pour plus d'informations sur le fonctionnement des fonctionnalités M4 du module Sendmail et sur l'emplacement des fichiers de configuration, lisez la section *Ajout de fonctionnalités Sendmail avec M4* de la section Configuration de Sendmail.

Créer et modifier des actions

Comme l'explique l'introduction de ce chapitre, le fichier de configuration de Procmail consiste en une série d'actions. Lorsque l'e-mail arrive, chacun est vérifié dans l'ordre jusqu'à ce qu'il corresponde et que son mode de livraison soit effectué. Si aucune action ne correspond (ou si aucune n'existe), l'e-mail est envoyé à la destination par défaut qui est généralement le fichier de messagerie de l'utilisateur sous /var/spool/mail.

Pour créer une nouvelle action, procédez comme suit :

  1. Cliquez sur l'action Ajouter un nouveau filtre lien sous la liste des actions existantes sur la page principale du module. Le formulaire illustré dans l'image ci-dessous s'affichera pour entrer sa destination et ses conditions.
  2. Sélectionnez le type de destination des messages correspondant à cette action dans le mode de distribution menu. Les options disponibles sont :*Ajouter au fichier *L'e-mail sera ajouté au format de boîte aux lettres standard au fichier saisi dans le champ de texte adjacent, tel que /var/spool/mail/fred . Pour jeter un message, entrez /dev/null comme fichier. *Écrire dans maildir *L'e-mail correspondant sera ajouté au répertoire de messagerie de style Qmail dont le chemin est saisi dans le champ de texte. Si ce répertoire n'existe pas encore, Procmail le créera (ainsi que les sous-répertoires nécessaires) pour l'utilisateur. *Écrire dans le dossier MH *Le courrier électronique sera ajouté au répertoire de messagerie de style MH spécifié. Ce format de courrier utilise également un fichier par message, mais les place tous dans un seul répertoire et donne aux fichiers de message des noms de fichiers numériques incrémentés, comme 1, 2, 3, etc. *Transférer à l'adresse *L'e-mail sera envoyé à l'adresse ou à l'utilisateur entré dans le champ de texte adjacent, tel que [email protected] . *Feed to program *Les messages électroniques qui correspondent seront alimentés en entrée du programme dont le chemin et les arguments sont entrés dans la zone de texte à côté du menu. Si un nom de fichier ou un répertoire de messagerie non absolu (comme Mailbox ou Répertoire de messagerie ) est entré, Procmail supposera qu'il est relatif au répertoire personnel de l'utilisateur à qui l'e-mail est envoyé.
  3. Pour que Procmail vérifie le corps des messages reçus plutôt que seulement les en-têtes, cochez la case Appliquer les conditions au corps boîte. Cela est nécessaire si l'une des conditions que vous entrez ultérieurement doit correspondre au texte de l'e-mail lui-même.
  4. Normalement, Procmail ignorera la casse des en-têtes lors de la vérification des conditions. Pour changer cela, cochez la Correspondance sensible à la casse boîte.
  5. Si vous voulez que Procmail continue dans le fichier de configuration même si cette action correspond, cochez la case *Continuer le traitement même si les conditions correspondent*. Cela peut être utilisé pour envoyer des e-mails à plusieurs fichiers ou dossiers différents, en activant cette option pour toutes les règles de livraison sauf la dernière.
  6. Procmail ignorera normalement l'état de sortie du programme auquel le courrier électronique est envoyé. Pour le faire échouer (et donc renvoyer le message) si le programme échoue, activez l'option *Attendre la fin du programme d'action et vérifier le résultat*.
  7. Si le programme de livraison que vous avez entré lit puis génère des e-mails avec quelques modifications, cochez la case *Le programme d'action est un filtre*. L'option *Continuer le traitement même si les conditions correspondent* doit également être activée afin que le traitement se poursuive avec la version modifiée du message. Cette fonctionnalité peut être utile si vous avez écrit un programme qui vérifie et marque les messages en ajoutant ou en modifiant un en-tête, qui peut ensuite être vérifié par des actions ultérieures.
  8. Les conditions d'action section du formulaire sert à saisir les conditions qui déterminent les messages qui seront délivrés par cette action. Si aucun n'est spécifié, les messages qui atteignent l'action seront toujours livrés, et si plus d'un est entré, ils doivent tous correspondre pour que la livraison ait lieu. Cette section est en fait un tableau qui commence par deux lignes vides. Le menu de chaque ligne détermine le type de condition et la façon dont le texte dans la case à côté est interprété. Les options disponibles sont :
    • Correspond à l'expression régulière
      Pour que cette condition corresponde, les en-têtes de message (et éventuellement le corps aussi) doivent correspondre à l'expression régulière de style Perl saisie dans la zone de texte. N'oubliez pas que cette expression s'applique à tous les en-têtes comme s'il s'agissait d'un seul bloc de texte. Vous devez donc faire précéder tout nom d'en-tête d'un ^ pour indiquer le début d'une ligne. Par exemple, pour intercepter les messages dont le sujet contient le mot foo vous pouvez saisir ^Subject:.*foo.* .
    • Ne correspond pas à l'expression régulière
      Ce type de condition fonctionne exactement comme le précédent, sauf qu'il correspond aux messages qui ne correspondent pas à l'expression régulière.
    • Évaluer la sortie de la commande
      La commande shell entrée dans la zone de texte sera exécutée, sa sortie lue par Procmail puis interprétée à nouveau comme une ligne d'action à partir du fichier de configuration. Ce type de condition est extrêmement puissant car il vous permet de créer des conditions générées dynamiquement - cependant, pour le filtrage de courrier quotidien, vous n'avez probablement pas besoin de l'utiliser.
    • Vérifier l'état de sortie de la commande
      Ce type de condition correspond si la commande shell entrée a un état de sortie de zéro, indiquant un succès. Il peut être utilisé pour que le courrier soit livré à différentes destinations en fonction du nom d'hôte du système, de l'heure de la journée ou de l'existence d'un fichier.
    • Le courrier est plus petit que
      La condition correspondra si la taille totale du message est inférieure au nombre d'octets saisis dans la zone de texte adjacente.
    • Le courrier est plus grand que
      Comme son nom l'indique, ce type de condition est à l'opposé de la précédente.
  9. Lorsque vous avez terminé de saisir les conditions, cliquez sur Enregistrer bouton. La nouvelle action sera ajoutée à la liste sur la page principale et commencera à être utilisée sur les e-mails entrants. Pour ajouter plus de deux conditions, vous devrez rééditer l'action afin que deux autres lignes vides apparaissent dans les Conditions d'action section.


Le formulaire de création d'action Procmail

Une action existante peut être modifiée en cliquant sur son entrée dans Action à entreprendre colonne sur la page principale du module, qui fait apparaître un formulaire d'édition identique à celui ci-dessus. À partir de là, vous pouvez apporter des modifications, puis cliquer sur Enregistrer pour les activer, ou appuyez simplement sur Supprimer pour supprimer complètement l'action.

Parce que l'ordre des actions est important, le module vous permet de changer leurs positions dans la configuration Procmail avec les flèches haut et bas à côté de chacune sur la page principale. Les affectations de variables, les blocs conditionnels et les fichiers d'inclusion peuvent également être déplacés de la même manière.

En suivant les instructions ci-dessus, vous pouvez facilement créer une action qui distribue tous les e-mails au Maildir de style Qmail. répertoire dans les répertoires personnels de l'utilisateur. Même si ce format de courrier est préférable en raison de sa fiabilité supérieure par rapport aux fichiers traditionnels dans /var/spool/mail, il n'est pas très utile à moins que les clients de messagerie ou le serveur POP3 de votre système ne sachent comment le lire. Le serveur POP3 fourni avec la plupart des systèmes d'exploitation s'attend à envoyer des e-mails sous /var/spool/mail, et devra donc être remplacé ou reconfiguré pour prendre en charge tout nouveau format ou emplacement de courrier. D'autres clients de messagerie qui lisent directement les fichiers de messagerie des utilisateurs (tels que Pine, Elm et Usermin) peuvent être configurés pour utiliser le nouvel emplacement que vous choisissez.

Créer et modifier des affectations de variables

Les actions Procmail peuvent utiliser des variables de style shell dans leurs conditions et leurs destinations de livraison. Par exemple, vous pouvez créer une action qui envoie au fichier /mail/$LOGNAME , dans lequel $LOGNAME est le nom d'utilisateur de l'utilisateur à qui l'e-mail est envoyé. Plusieurs variables (telles que .LOGNAME et DEFAULT) sont définies automatiquement par Procmail, tandis que d'autres peuvent être définies dans le fichier de configuration pour une utilisation ultérieure. Vous pouvez même remplacer les variables automatiques pour modifier le comportement du programme, comme la destination de livraison par défaut ou le shell à utiliser pour exécuter des commandes.

Pour créer une nouvelle affectation de variable, procédez comme suit :

  1. Sur la page principale du module, cliquez sur le lien *Ajouter un nouveau paramètre de variable* sous la liste des actions existantes. Le formulaire de création de variable s'affichera.
  2. Dans le Nom de la variable saisissez le nom de la variable à définir, par exemple DEFAULT . Toutes les variables automatiques ont des noms en majuscules, et celles que vous créez vous-même devraient également l'être. Aucun espace ou caractère non alphanumérique n'est autorisé.
  3. Dans la Valeur entrez la valeur à attribuer à cette variable, comme Maildir/ . La valeur peut inclure des références à d'autres variables.
  4. Cliquez sur Créer bouton pour ajouter la variable à la liste sur la page principale.
  5. Utilisez la flèche vers le haut à côté de la nouvelle variable dans la liste pour la déplacer vers l'emplacement correct, qui sera généralement en haut du fichier. Les affectations de variables n'ont d'effet que, donc une ajoutée en bas peut n'avoir aucun effet.

Comme pour les actions, une variable peut être modifiée ou supprimée en cliquant sur son nom dans la liste. Les variables peuvent également être déplacées avec les flèches haut et bas à côté d'elles. Parce qu'ils n'affectent que les actions et autres affectations en dessous d'eux dans le fichier, vous voudrez certainement déplacer toute nouvelle variable vers le haut de la liste. Un ajouté et laissé en bas n'aura aucun effet (sauf sur la destination de livraison par défaut).

Procmail définit et vous permet de modifier plusieurs variables spéciales. Les noms et significations des plus intéressants sont listés dans le tableau ci-dessous :

Blocs conditionnels et fichiers d'inclusion

Un bloc conditionnel est un groupe d'actions et d'affectations de variables dans le fichier de configuration Procmail qui n'est traité que si certaines conditions correspondent. Ils peuvent être utilisés pour créer des ensembles d'actions assez complexes, presque comme un langage de programmation. Ce module vous permet de créer et de modifier des blocs conditionnels, mais affiche leur contenu sous forme de texte de fichier de configuration plutôt que d'analyser les actions qu'ils contiennent. Cela signifie que vous devez être familiarisé avec le format de fichier Procmail pour les utiliser.

Pour créer un bloc conditionnel, suivez ces étapes :

  1. Cliquez sur Ajouter un nouveau bloc conditionnel sous la liste des actions sur la page principale du module.
  2. Dans le code Procmail à exécuter zone de texte entrez les lignes du fichier de configuration pour les actions ou les affectations de variables à traiter si les conditions correspondent. Dès qu'une action dans le bloc correspond, le traitement de l'ensemble du fichier de configuration s'arrête. Cependant, si aucune ne correspond, le traitement se poursuivra comme d'habitude avec l'action suivante après le blocage. Voir la page de manuel de procmailrc dans le module de documentation système pour plus de détails sur le format.
  3. Remplissez les conditions d'action comme vous le feriez pour une action normale, comme expliqué dans Créer et modifier des actions plus tôt dans le chapitre.
  4. Cliquez sur Créer bouton pour créer le nouveau bloc.

Comme pour les actions, vous pouvez modifier ou supprimer un bloc conditionnel en cliquant dessus dans la liste de la page principale du module. Le bloc entier peut également être déplacé avec les flèches haut et bas à côté.

Un fichier inclus est une directive spéciale qui indique à Procmail de lire et de traiter un fichier de configuration séparé dans le même format que /etc/procmailrc. Certains programmes de filtrage de spam ne sont en fait que des fichiers Procmail pouvant être inclus dans votre configuration principale. Pour créer une directive d'inclusion, procédez comme suit :

  1. Cliquez sur Ajouter un nouveau fichier d'inclusion lien sur la page principale du module.
  2. Dans le fichier inclus dans le formulaire qui s'affiche, saisissez le chemin d'accès complet à l'autre fichier de configuration. Vous pouvez également entrer un chemin relatif, auquel cas Procmail recherchera ce fichier dans le répertoire personnel de l'utilisateur Unix auquel le courrier est envoyé. Lors de la gestion d'une inclusion, Procmail arrête complètement le traitement dès qu'il trouve une action correspondante dans le fichier. Si aucune n'est trouvée, il continuera à traiter les actions qui viennent après l'inclusion dans le fichier de configuration principal.
  3. Cliquez sur Créer bouton pour terminer le processus.

Normalement, les inclusions sont répertoriées sur la page principale du module, tout comme les actions et les affectations de variables, et peuvent être modifiées, supprimées ou déplacées. Cependant, si l'option Afficher le contenu des fichiers inclus ? le paramètre est activé sur Module Config page le module affichera les actions réelles à l'intérieur du fichier inclus pour que vous puissiez les modifier ou les supprimer. Ils peuvent même être déplacés de haut en bas, mais uniquement dans le fichier. Activer cette option n'est pas une bonne idée si vous avez un fichier d'inclusion volumineux (comme celui pour le filtrage du spam) car cela rendra la page principale du module inutilisable.

Contenu

Voir aussi

  • Filtrage des spams avec SpamAssassin

Webmin
  1. Récupération de courrier Fetchmail

  2. Serveur de messagerie QMail

  3. Sauvegarder Evolution Mail ?

  4. Configurer un relais de messagerie

  5. Envoyer des spams vers un dossier spécial à l'aide de postfix

Serveur de messagerie Postfix

Lire le courrier de l'utilisateur

Serveur de messagerie Sendmail

Filtre de messagerie SpamAssassin

Comment créer des filtres de messagerie personnalisés ?

Configurer Mac Mail