lanzamiento del sistema de filtración de spam , que proporciona medios para evaluar mensajes según diversos criterios, incluyendo reglas, métodos estadísticos y listas negras, en base a los cuales se forma el peso final del mensaje, utilizado para decidir si es necesario bloquearlo. Rspamd soporta prácticamente todas las capacidades de SpamAssassin y tiene varias características que permiten filtrar correos en promedio 10 veces más rápido que SpamAssassin, además de ofrecer una mejor calidad de filtración. El código del sistema está escrito en C y bajo la licencia Apache 2.0.
Rspamd está construido usando una arquitectura orientada a eventos (Event-driven) y está diseñado para su uso en sistemas de alta carga, permitiendo procesar cientos de mensajes por segundo. Las reglas para identificar signos de spam son altamente flexibles y pueden contener expresiones regulares en su forma más sencilla, mientras que en situaciones más complejas pueden estar escritas en Lua. La expansión de la funcionalidad y la adición de nuevos tipos de verificaciones se realiza a través de módulos, que pueden ser creados en C y Lua. Por ejemplo, hay módulos para verificar el remitente usando SPF, confirmar el dominio del remitente a través de DKIM, y realizar solicitudes en listas DNSBL. Para simplificar la configuración, creación de reglas y seguimiento de estadísticas, se proporciona una interfaz web administrativa.
Novedades principales:
- Se ha hecho la transición a un nuevo esquema de numeración de lanzamientos. Como el primer número en el número de versión no ha cambiado en varios años, mientras que el segundo número es el verdadero indicador de la versión, se decidió pasar del esquema «x.y.z» al formato «y.z»;
- Para el ciclo de procesamiento de eventos, en lugar de se utiliza la biblioteca , que ha eliminado algunas limitaciones de libevent y permite alcanzar un rendimiento más alto. El uso de
libev ha facilitado simplificar el código, mejorar el manejo de señales y tiempo de espera, además de unificar el seguimiento de cambios en archivos mediante el mecanismo inotify (no todas las versiones suministradas para las plataformas soportadas de libevent podían trabajar con inotify); - Se ha interrumpido el soporte para el módulo de clasificación de mensajes que utiliza la biblioteca de aprendizaje profundo Torch. Se menciona como razón la excesiva complejidad de Torch y la gran carga de mantenimiento para mantenerlo actualizado. Se ha propuesto un módulo completamente reescrito como reemplazo para la clasificación utilizando métodos de aprendizaje automático , en el que se utiliza la biblioteca para garantizar el funcionamiento de la red neuronal , que incluye solo 4000 líneas de código en C. La nueva implementación soluciona muchos problemas de bloqueos mutuos durante el entrenamiento;
- Módulo ha reemplazado los módulos SURBL y Emails, lo que ha permitido unificar el procesamiento de todas las comprobaciones de listas negras. Las capacidades de RBL se han ampliado con el soporte de tipos adicionales, como selectores, y herramientas para facilitar la extensión de las reglas existentes. Las reglas de bloqueo de correo electrónico basadas en listas map ya no son compatibles, en su lugar se recomienda utilizar multimap con selectores;
- Para la identificación de tipos de archivos según su contenido, se ha utilizado una nueva biblioteca llamada Lua Magic, que utiliza Lua y Hyperscan en lugar de libmagic.
Como razón para crear una biblioteca propia se menciona el deseo de lograr un mayor rendimiento, evitar fallos al identificar archivos docx, obtener una API más adecuada y agregar nuevos tipos de heurística, sin estar limitados por reglas rígidas; - Se ha mejorado el módulo para almacenar datos en la base de datos . Se han agregado campos LowCardinality y se ha optimizado significativamente el consumo de memoria;
- Se han ampliado las capacidades del módulo , que ahora cuenta con soporte y de las coincidencias;
- En el módulo Maillist se ha mejorado la detección de listas de correo;
- En los flujos de trabajo se ha añadido la posibilidad de enviar mensajes heartbeat al proceso principal para confirmar su funcionamiento normal. Si no se reciben dichos mensajes durante un tiempo determinado, el proceso principal puede terminar el proceso de trabajo forzosamente. Este modo está desactivado por defecto;
- Se ha añadido una serie de nuevos escáners en Lua. Por ejemplo, se han agregado módulos para escanear mensajes en paquetes antivirus Kaspersky ScanEngine, Trend Micro IWSVA (a través de icap) y
F-Secure Internet Gatekeeper (a través de icap), así como escáners externos para Razor, oletools y P0F; - Se ha añadido la posibilidad de modificar mensajes a través de la API Lua. Se ha propuesto un módulo para realizar cambios en los bloques MIME. ;
- Se ha asegurado el procesamiento separado de configuraciones establecidas a través de «Settings-Id:», por ejemplo, ahora se pueden vincular reglas solo a identificadores de configuración específicos;
- Se han realizado optimizaciones de rendimiento en el motor Lua, la decodificación base64 y la detección de idiomas para textos. Se ha añadido soporte para la caché de coincidencias complejas (maps). Se ha implementado soporte
HTTP keep-alive.
Fuente: opennet.ru
