Fiche logiciel validé
  • Création ou MAJ importante : 21/05/08
  • Correction mineure : 09/10/08
Auteur :
  • Dominique Lalot - CISCAM (CRI) (Université de la Méditerranée)
Relecteur(s) :
Contributions importantes :
  • José-Marcio Martins da Cruz (ENSMP)
Responsable thématique :
Mots-clés

j-chkmail : filtrage de courrier électronique

Description
Fonctionnalités générales : 

Logiciel de filtrage de courrier. Il remplace avantageusement des logiciels comme Amavisd-new. Tout est centralisé dans le même logiciel. Il minimise les entrées sorties, fait nativement du greylisting, du rate limiting, surveille les attaques au dictionnaire, et gère l’anti-spam.

  • Utilise les thread. Voir les awards de Sendmail pour l’auteur
  • Utilise la libmilter et donc intercepte les courriers avant de fermer la discussion avec l’émetteur.
  • Le greylisting est utilisable en local ou via un service.
  • Plusieurs niveaux anti-spam. URLBL (liste noire de URLs de spammers) BAYESIEN (construction de bases bayesiennes) ORACLE (à la SpamAssassin)
  • Protection du serveur par limitation de consommation de ressources (cadence de connexion, connexions ouvertes simultanement, …) par adresse IP.
  • Filtrage des messages avec pièces jointes exécutables (Unsafe files). Possibilité aussi de coupler j-chkmail avec un anti-virus de passerelle (ClamAV, Mc Afee et F-prot).
  • Grande richesse des commandes ligne (CLI).
  • Contrôle du filtre à chaud : consultation de l’état du filtre et modification de paramètres de fonctionnement sans arrêt du filtre.

La réponse du filtre à un message indésirable peut être soit “rejet”, “mise en quarantaine” ou “marquage d’en-tête”. Le rejet est fait dans la session SMTP, ce que évite de générer des bounces.

Il s’installe sous Sendmail ou Postfix via l’API milter.

Autres fonctionnalités: 

La configuration se fait via un fichier de configuration classique où l’on active certaines options. Le reste est fait dans des fichiers textes (description des réseaux amis, des serveurs où on ne veut pas faire d’antivirus..), et un simple make transforme les données en base BDB.


  • Adaptation des paramètres de filtrage selon le niveau de charge (nombre de connexions en cours et charge CPU) et utilisation du rate limiting pour favoriser les réseaux amis. La machine reste stable en cas d’attaque.
  • Deux processus tournent. L’un d’eux surveille l’état du filtre, prêt à le relancer.
  • Possibilité de définir les adresses mail valides et de contrôler les machines qui sondent et donc de mettre en liste noire dynamiquement (pendant 4 heures) les clients SMTP qui font trop d’erreurs de destinataires.
  • La plupart des options de filtrage sont configurables, selon le cas, par l’adresse IP, l’expéditeur et destinataire.
  • Statistiques conservées sur plusieurs jours (en mémoire et sur disque) accessibles via j-printstats. On peut facilement interfacer avec rrdtool
  • Tout évènement autre que le traitement transparent d’une connexion est enregistré.

Contexte d'utilisation: 

Filtrage des courriers entrants de notre Université pour plusieurs milliers de comptes. Nous avions eu quelques soucis sur le trio Amavisd-new + SpamAssassin + Postgrey tournant avec postfix.

Nous avons préféré cette solution, car elle intègre toutes les fonctionnalités dans un seul programme. Celui-ci est très stable. On peut rejeter un SPAM directement dans la session appelante sans faire d’abord un “accept”, puis un “reject” basé sur l’expéditeur.

De plus on a des statistiques via la CLI et on peut voir les scores du SPAM dans les logs systèmes. La vitesse de traitement est impressionnante.

Limitations, difficultés, fonctionnalités importantes non couvertes: 

Pour le moment, le support d’IPV6 est limité. Par exemple, IPV6 ne sera pas soumis au greylisting et à beaucoup d’autres fonctions. Il y a bien un traitement antiviral et antispam selon la configuration, mais IPV6 sera simplement considéré comme AMI.

La gestion d’une base bayesienne est un peu complexe si l’on veut la gérer soi-même. Pour l’instant, nous prenons celle distribuée par l’auteur.

Environnement du logiciel
Plates-formes : 

Solaris, FreeBSD, Linux

Logiciels connexes: 

Sendmail, Postfix

Autres logiciels aux fonctionnalités équivalentes: 

Amavisd-new+SpamAssassin+Postgrey licences libre

Environnement de développement
Type de structure associée au développement: 

structure: Ecole des Mines de Paris
développeur: Jose-Marcio Martins Da Cruz

Références d'utilisateurs institutionnels: 

le Comité Réseau des Universités, campus de JUSSIEU, Université de la Méditerranée, Ecole des Mines de Paris

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums: 
Documentation utilisateur: 
Divers (astuces, actualités, sécurité): 

Le code est fourni avec sa version de PCRE et de BerkeleyDB, ce qui facilite la compilation et la maintenance. Il suffit juste d’installer la libmilter de sendmail (prendre la version 8.14 de sendmail)

Postfix doit être assez récent pour bien utiliser la libmilter > 2.4.3

Le code comprend environ 80000 lignes de C

Astuce : Un fonctionnalité très intéressante de j-chkmail est le filtrage des messages qui contiennent une pièce jointe exécutable. Cela permet un filtrage très peu consommateur en ressources (pas de scan du message) et permet d’éviter une très grosse majorité de programmes malveillants véhiculés par messagerie. Ainsi, lorsqu’une nouvelle extension est concernée, il suffit de la rajouter dans la liste des fichiers “non sûrs” (cas par exemple des fichiers zip inférieurs à 64 Ko). L’expéditeur et le destinataire sont prévenus du blocage du message.

Commentaires

Licence GPL + contrainte

La licence n’est pas une GPLv2 pure. Une clause y est ajouté:

“If you use or distribute j-chkmail, or ANY product derived from j-chkmail, in any way, INCLUDING SERVICES you MUST explicitly inform your users that what you’re distributing is a free software or based on a free software, indicating explicitly j-chkmail with a pointer to j-chkmail web site from the main page of your web site.”

License GPL + contrainte

C’est vrai que ce n’est pas une license GPLv2 pure !!!

j-chkmail est un logiciel qui contient, actuellement, de l’ordre de 80.000 lignes de code en C. Je le developpe et je le mets, gratuitement à la disposition, en priorité de notre communauté de l’enseignement et de la recherche française, et aussi de tous ceux qui le veulent. Mon objectif est que j-chkmail soit utile et parfaitement maitrisé par, en priorité, l’utilisateur du filtre. Si un intermédiaire cache ces informations de l’utilisateur final, cela enlève à ce dernier la “maitrise” et va contre l’esprit dans lequel j’ai developpé j-chkmail.

Aussi, utiliser un logiciel libre déjà existant pour créér une nouvelle chose (produit ou service), sans citer la source, est quelque chose qui choque ma conception de morale.

Je ne suis pas un “puriste du libre” et j’apprecie que le nom de ce projet soit “Promouvoir les Logiciels Utiles, Maîtrisés et Economiques”, expression qui précise assez bien ce que je fais et l’idée que j’ai de ce qui devrait être un “logiciel libre” : du service public !!!

Fiche logiciel antivirus dans PLUME