lancement du système de filtrage des spams , offrant des outils pour évaluer les messages selon divers critères, y compris des règles, des méthodes statistiques et des listes noires, sur la base desquelles un poids final est attribué au message, utilisé pour décider s'il doit être bloqué. Rspamd prend en charge pratiquement toutes les fonctionnalités mises en œuvre dans SpamAssassin et présente plusieurs caractéristiques permettant de filtrer les emails en moyenne 10 fois plus rapidement que SpamAssassin, tout en garantissant une meilleure qualité de filtrage. Le code du système est écrit en langage C et sous licence Apache 2.0.
Rspamd est construit avec une architecture orientée événement (Event-driven) et est initialement conçu pour être utilisé dans des systèmes à forte charge, permettant de traiter des centaines de messages par seconde. Les règles pour identifier les signes de spam sont très flexibles et peuvent, dans leur forme la plus simple, contenir des expressions régulières, tandis que dans des situations plus complexes, elles peuvent être formulées dans le langage Lua. L'extension des fonctionnalités et l'ajout de nouveaux types de vérifications se réalisent à travers des modules, qui peuvent être créés en C et Lua. Par exemple, des modules pour vérifier l'expéditeur à l'aide de SPF, confirmer le domaine de l'expéditeur via DKIM et réaliser des requêtes dans des listes DNSBL sont disponibles. Un interface web administrative est fournie pour simplifier la configuration, la création de règles et le suivi des statistiques.
Les principales nouveautés :
- Un passage à un nouveau schéma de numérotation des versions a été effectué. Comme le premier chiffre du numéro de version n'a pas changé depuis plusieurs années, et que le véritable indicateur de version est le deuxième chiffre, il a été décidé de passer du schéma «x.y.z» au format «y.z»;
- Pour le cycle de traitement des événements, au lieu de la bibliothèque , débarrassée de certaines limitations de libevent et permettant d'atteindre de meilleures performances. L'utilisation de
libev a permis de simplifier le code, d'améliorer le traitement des signaux et des délais, ainsi que d'uniformiser le suivi des changements de fichiers grâce au mécanisme inotify (toutes les versions de libevent fournies pour les plateformes supportées n'étaient pas capables de travailler avec inotify); - Le support du module de classification des messages utilisant la bibliothèque de machine learning profond Torch a été interrompu. La complexité excessive de Torch et le coût élevé de sa maintenance ont été évoqués comme raisons. En guise de remplacement pour la classification utilisant des méthodes de machine learning, un module complètement réécrit a été proposé. , qui utilise la bibliothèque pour faire fonctionner le réseau de neurones , comprenant seulement 4000 lignes de code en C. Dans cette nouvelle implémentation, de nombreux problèmes de blocages mutuels lors de l'apprentissage ont été résolus;
- Module a remplacé les modules SURBL et Emails, ce qui a permis d'unifier le traitement de toutes les vérifications des listes noires. Les fonctionnalités de RBL ont été étendues avec le support de types supplémentaires, tels que des sélecteurs, et des moyens pour simplifier l'extension des règles existantes. Les règles de blocage email basées sur des listes map ne sont plus supportées, il est désormais recommandé d'utiliser un multimap avec des sélecteurs;
- Pour déterminer les types de fichiers par contenu, une nouvelle bibliothèque Lua Magic a été mise en œuvre, utilisant Lua et Hyperscan au lieu de libmagic.
Le développement de cette bibliothèque a été motivé par le désir d'atteindre de meilleures performances, d'éliminer les échecs lors de la détection des fichiers docx, d'obtenir une API plus adaptée et d'ajouter de nouveaux types d'heuristiques, non limités par des règles rigides; - Le module de stockage des données dans la SGBD a été amélioré . Des champs LowCardinality ont été ajoutés et la consommation de mémoire a été considérablement optimisée;
- Les fonctionnalités du module ont été étendues avec le support de et combinés;
- Dans le module Maillist, la définition des listes de diffusion a été améliorée;
- Dans les flux de travail, il est désormais possible d'envoyer des messages heartbeat au processus principal, confirmant le bon fonctionnement. En l'absence de tels messages pendant un certain temps, le processus principal peut forcer l'arrêt du flux de travail. Par défaut, ce mode est encore désactivé;
- Une série de nouveaux scanners en Lua a été ajoutée. Par exemple, des modules pour scanner les messages dans les paquets antivirus Kaspersky ScanEngine, Trend Micro IWSVA (via icap) et
F-Secure Internet Gatekeeper (via icap), ainsi que des scanners externes pour Razor, oletools et P0F ont été proposés; - La possibilité de modifier les messages via l'API Lua a été ajoutée. Un module a été proposé pour apporter des modifications aux blocs MIME. ;
- Un traitement distinct des paramètres définis via « Settings-Id : » a été assuré, par exemple, il est désormais possible de lier des règles uniquement à des identifiants de paramètres spécifiques.
- Des optimisations de performance du moteur Lua, de décodage base64 et de détection de langue pour le texte ont été réalisées. Le support du cache pour des correspondances complexes (maps) a été ajouté.
HTTP keep-alive.
Source : opennet.ru
