Доступна система фильтрации спама Rspamd 1.8
Состоялся релиз системы фильтрации спама Rspamd 1.8, предоставляющей средства для оценки сообщений по различным критериям, включая правила, статистические методы и черные списки, на основе которых формируется итоговый вес сообщения, используемый для принятия решения о необходимости блокировки. Rspamd поддерживает практически все возможности, реализованные в SpamAssassin, и имеет ряд особенностей, позволяющих фильтровать почту в среднем в 10 раз быстрее, чем SpamAssassin, а также обеспечивать лучшее качество фильтрации. Код системы написан на языке Си и распространяется под лицензией BSD.
Rspamd построен с использованием событийно-ориентированной архитектуры (Event-driven) и изначально рассчитан на применение в высоконагруженных системах, позволяя обрабатывать сотни сообщений в секунду. Правила для выявления признаков спама отличаются высокой гибкостью и в простейшем виде могут содержать регулярные выражения, а в более сложных ситуациях могут оформляться на языке Lua. Расширение функциональности и добавление новых типов проверок реализуется через модули, которые могут создаваться на языках Си и Lua. Например, доступны модули для проверки отправителя с использованием SPF, подтверждения домена отправителя через DKIM, формирования запросов в списки DNSBL. Для упрощения настройки, создания правил и отслеживания статистики предоставляется административный web-интерфейс.
Основные новшества:
- Добавлен фреймворк для извлечения данных из сообщений и дальнейшего использования этих данных в плагинах (например, в multimap, reputation или ratelimits) или регулярных выражениях, обработав с привлечением функций преобразования строк. Например, можно извлечь адрес из поля From и преобразовать его в нижний регистр ("smtp_from.lower") или извлечь тему письма, привести к нижнему регистру, вычислить хэш и выдать первые 16 символов результата ("header('Subject').lower.digest('hex').substring(1, 16)");
- В конструкциях на языке Lua реализована возможность использования сопрограмм для запуска обработчиков в неблокирующем режиме. Например, можно отправить сетевой запрос к антивирусному сканеру и сразу продолжить выполнение не дожидаясь результата, а ответ обработать отдельным callback-обработчиком;
- Оптимизирована отправка SQL-запросов к СУБД Clickhouse. Для того чтобы избежать медленных запросов с использованием слияний (JOIN) в Rspamd теперь используется одна общая таблица, вместо разбиение структуры БД на несколько таблиц. Преобразование схемы хранения выполняется автоматически, но старые данные не переносятся и не удаляются, а остаются в старых таблицах. В модуле Clickhouse также реализована опциональная возможность задания правил сохранения данных для соответствия принятым в Евросоюзе нормам GDPR;
- Улучшена обработка Unicode, нормализация всех unicode-данных теперь выполняется до их обработки, что позволяет исключить проведение атак через подстановку похожих по начертанию глифов;
- Переработан код для автоматического определения языка на котором написан текст в сообщении. Новый детектор использует стоп-слова и учитывает подстановку похожих unicode-глифов. Существенно возросла производительность детектора языков, в некоторых ситуациях скорость определения возросла до 10 раз;
- Внесены улучшения в web-интерфейс. Решены проблемы, проявляющиеся при работе в кластерных конфигурациях и при агрегирования данных. Добавлен индикатор прогресса выполнения AJAX-операций.