MIMEDefang
# MIMEDefang

MIMEDefang est un environnement de développement sous licence GPL pour le filtrage des courriers électroniques. Il utilise l'API "Milter" de Sendmail, des programmes en Perl et un peu de code C comme liant afin de permettre à l'utilisateur d'écrire en Perl des filtres évolués pour les messages électroniques.

MIMEDefang peut être utilisé pour :

* stopper les virus (par exemple en utilisant Clamav) ;
* stopper ou marquer les spams (par exemple en utilisant SpamAssassin) ;
* supprimer les parties HTML des messages électroniques ;
* ajouter un pied de page aux messages sortants ;
* supprimer ou modifier les pièces jointes ;
* remplacer les pièces attachées par des URL ;
* mettre en œuvre des contrôles d'accès complexes.

## Historique

À l'origine, MIMEDefant est un développement de Dianne Skoll financé par le Collège royal des médecins et chirurgiens du Canada en 2000 afin de les aider à endiguer le déluge de virus propagés par messagerie électronique sur le réseau du collège. Le logiciel fut conçu pour filtrer les pièces jointes et s'est tout d'abord nommé MIMESweeper, puis MIMEDefanger et, finalement, MIMEDefang. Dianne Skoll annonça la naissance de son programme au public le 28 août 2000. Le 21 décembre 2001, une version incorporant le support de SpamAssassin est publiée, permettant ainsi à MIMEDefang de filtrer à la fois les virus et les spams.

La société de Dianne Skoll, Roaring Penguin Software, commercialise un produit anti-spam appelé CanIt qui est construit au-dessus de la version libre de MIMEDefang.

## Architecture

La bibliothèque Milter intégrée à Sendmail utilise les threads POSIX pour implémenter des filtres concomitants. Les filtres de MIMEDefang écrits en Perl emploient un modèle de processus créés par avance similaires à ceux du modèle traditionnel multi-processus du serveur HTTP Apache. Aussi, MIMEDefang est constitué de trois composants :

* un programme multithreadé développé en C qui communique avec Sendmail et les processus filtres ;
* un multiplexeur (également écrit en C) qui gère un ensemble de processus filtres écrits en Perl (et nommés « esclaves ») ;
* un programme Perl appelé mimedefang.pl qui fournit l'environnement de filtrage de base.

Les utilisateurs de MIMEDefang écrivent leur politique de filtrage en Perl en utilisant l'environnement mis à disposition par mimedefang.pl. Ils n'ont pas à se soucier de la synchronisation entre les fils d'exécution car chaque filtre Perl s'exécute dans un processus à fil unique.

L'infrastructure fournie par mimedefang.pl implémente de manière assez proche l'API Milter, mais pas exactement. Elle met en place des outils forts pratiques pour parcourir et reconstruire les messages électroniques MIME afin que le développeur puisse se concentrer sur la politique de filtrage globale plutôt que sur les détails techniques de l'API.

