Réseau - Web - GNU/Linux

2011 13 mai

Filtrage côté serveur avec sieve - Debian 5.0 Lenny

Rédigé par Marc GUILLAUME | Aucun commentaire
Article précédent Mail façon FAI - Debian 5.0 Lenny Article suivant

Utiliser les filtres sieve côté serveur.

Qu'est-ce que le filtrage côté serveur ?

Vous avez déjà un serveur de courrier totalement fonctionnel qui filtre même le spam. Mais jusque là vous laissez la tâche du filtrage des spams marqués à l'utilisateur. On peut faire mieux en installant un filtrage côté serveur. Le travail envisagé est de déplacer tous les spams marqués dans un dossier Spam de l'utilisateur. Pour cela nous utiliserons la fonctionnalité Sieve de Dovecot qui est un filtre de mail comme procmail (qui ne fonctionne pas avec les boites virtuelles). Sieve possède un langage de script simple qui permet d'envoyer tous les mails marqués par SpamAssassin comme spam automatiquement dans un dossier. A la fin du fichier /etc/dovecot/dovecot.conf vous trouverez une section "plugin". C'est là que vous pouvez définir le chemin pointant vers le fichier de filtre par défaut (sieve_global_path) qui sera activé si le destinataire n'a pas défini des règles de filtrage personnelles.

Le terme server-side filtering (filtrage côté serveur) signifie que les règles sont exécutées automatiquement par le serveur, par opposition à client-side filtering (filtrage côté client) qui se configure dans le client mail sur l'ordinateur de l'utilisateur. Le filtrage côté serveur semble préférable car il s'effectue même si le client n'est pas connecté. Et il vous offre des options intéressantes comme un répondeur en cas d'absence ou un filtrage sur les champs d'en-têtes.

Le filtre sieve global

Une méthode pour réaliser le filtrage de base des spams. Crééez un fichier /var/vmail/globalsieverc contenant ces lignes :

require ["fileinto"];
# Move spam to spam folder
if header :contains "X-Spam-Flag" ["YES"] {
  fileinto "spam";
  stop;
}

Assurez-vous que le fichier globalsieverc soit lisible par l'utilisateur vmail :

$> chown vmail /var/vmail/globalsieverc

Définissez ce fichier comme le filtre global dans la section "plugin { }" du fichier /etc/dovecot/dovecot.conf :

sieve_global_path = /var/vmail/globalsieverc

puis redémarrez Dovecot :

$> /etc/init.d/dovecot restart

Envoyez un autre mail de spam à John :

$> sendmail john@example.com < /usr/share/doc/spamassassin/examples/sample-spam.txt

Regardez alors le fichier /var/vmail/dovecot-deliver.log. La dernière ligne devrait être :

deliver(john@example.com): 2011-02-26 17:45:39 Info: msgid=<GTUBE1.1010101@example.net>: saved mail to spam

Ceci indique que le mail a été enregistré dans le fichier "spam". Si vous relevez le mail vous devriez le voir automatiquement dans ce fichier.

Notez que l'utilisation de différents dossiers n'est possible que si vous utilisez IMAP pour récupérer vos mails. POP3 ne connaît pas la notion de dossiers et ne montrera que les mails dans le dossier inbox. L'utilisateur devra souscrire au dossier spam manuellement. Une variante est d'ajouter "spam" au fichier /var/vmail/example.com/john/Maildir/subscriptions qui contient la liste des dossiers que John veut voir dans son programme de courrier.

Managesieve coté serveur

Nous parlions de scripts de filtre de l'utilisateur. Comment un untilisateur peut-il créer ou modifier un tel script ? C'est possible grâce à une interface de bas niveau appellée managesieve. Auparavant un logiciel supplémentaire comme pysieved était nécessaire pour utiliser managesieve. Dans le Dovecot fourni avec Lenny il est utilisable à l'installation.

Pour pouvoir l'utiliser vous devrez ajouter "managesieve" à la ligne "protocols" dans votre fichier /etc/dovecot/dovecot.conf. Dans la section "protocol managesieve" la ligne "sieve=~/.dovecot.sieve" devrait déjà exister. Cela signifie qu'un script de filtrage sieve sera stocké dans son dossier virtuel "home directory". Le script de John devrait figurer dans le fichier /var/mail/example.com/john/.dovecot.sieve.

Managesieve côté client

Vos utilisateurs ne veulent sans doute pas avoir à apprendre le langage de filtrage de sieve. Il leur faut donc un outil confortable pour administrer leurs règles de filtrage. C'est possible en utilisant le module (plugin) "avelsieve" du logiciel de webmail "squirrelmail". Nous supposerons que vous avez installé squirrelmail comme indiqué à ce chapitre. Installez le plugin "avelsieve" :

$> aptitude install avelsieve

Par chance c'est tout ce qu'il faut faire. Si vous vous connectez à squirrelmail vous verrez un nouveau lien en haut appellé "Filters". Cliquez-le. Vous pouvez maintenant ajouter des règles de toute sorte.

Il faut noter que la version de avelsieve de Debian Lenny a pour l'instant un bug (Debian #516198 , Avelsieve #247) qui peut faire disparaître les règles existantes en cas d'utilisation de Dovecot et TLS. J'ai préparé un paquet corrigé patched avelsieve Debian package que vous pouvez installer avec la commande "dpkg -i" si vous rencontrez le même problème.

Écrire un commentaire

Quelle est la troisième lettre du mot usqlg ?

Fil RSS des commentaires de cet article

À propos

Yakati.info - Réseau - Web - GNU/Linux © 2017

Généré par PluXml en 0.039s  - Administration

Mes coordonnées

Marc Guillaume
contact[at]yakati.info
79150 ÉTUSSON

Crédits

Pour la gestion du contenu

Généré par PluXml, le Blog ou Cms sans base de données

Pour le contenu

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.

Pour le thème

Thème SOLID de blacktie.co adapté pour PluXml