Rspamd — это система фильтрации спама для электронной почты, написанная на C и Lua в качестве более производительной замены SpamAssassin и ориентированная на применение в крупных почтовых кластерах.
Rspamd поддерживает почти все возможности SpamAssassin и имеет ряд особенностей, позволяющих фильтровать почту в среднем в 10 раз быстрее, а также обеспечивать более качественную фильтрацию.
Сегодня, после четырёх месяцев разработки, состоялись релизы Rspamd 1.4 и Rmilter 1.10. Обновления включают в себя ряд новых функций, таких как поддержка пулов соединений с Redis, новые модули, улучшенную поддержку нейронных сетей, компрессию с помощью алгоритма zstd для протокола и многие другие важные усовершенствования.
Пул соединений с Redis
Rspamd теперь может подключаться к Redis, используя пул постоянных соединений. Эта функция не требует каких-либо специальных настроек и позволяет повторное использование существующих соединений, улучшающих профиль нагрузки для Redis.
Новый плагин классификации с использованием нейросетей
В Rspamd был добавлен плагин для использования и обучения нейросетей, сохраняющий данные в Redis. Данный плагин позволяет кластеризовать результаты фильтров для более точной оценки потока писем. Использование Redis позволило распределять обучение и данные нейросетей по всему кластеру сканеров Rspamd.
Улучшения байесовского классификатора
Теперь для оценки вероятности спама используется больше метаданных. Сравнение классификатора в Rspamd с другими спам-фильтрами.
Новый плагин проверки сообщений антивирусами
Rspamd теперь может проверять сообщения с помощью сторонних антивирусов. Этот модуль предоставляет ряд функций:
- Работа с различными типами антивирусных систем: ClamAV, Sophos и F-Prot.
- Поддержка пользовательских шаблонов (например, экспериментальные базы данных для ClamAV).
- Поддержка кеширования результатов.
- Проверка только писем с вложениями, чтобы сохранить ресурсы антивируса.
- Белые списки, ограничения на размер и пользовательские скрипты оценки результатов.
Плагин проверки MX записей
Rspamd теперь может проверить работоспособность MX отправителя для сканированных сообщений с помощью нового плагина проверки MX. Этот плагин полезен для защиты от сообщений с некорректными обратными путями (например, когда спам рассылается с ботнета, который не в состоянии принять ответ на письмо).
Поддержка компрессии в протоколе
Rmilter и Rspamd теперь поддерживают сжатие передаваемых данных алгоритмом zstd. Этот алгоритм является быстрым и эффективным средством для уменьшения загрузки процессора и сети при передаче данных и также используется для хранения больших объёмов данных в Redis (например, нейронных сетей).
Переработана система обработки ошибок DNS в SPF, DKIM и DMARC
Rspamd теперь может работать с временными ошибками при выполнении связанных с DNS проверками, например DKIM, DMARC или SPF. Существуют специальные символы для представления как временных, так и постоянных ошибок для этих плагинов.
Адаптивные и пользовательские лимиты
Модуль ratelimit теперь поддерживает адаптивные лимиты, то есть ограничения могут быть ужесточены для неизвестных или «плохих» отправителей, а для известных отправителей с хорошей репутацией — наоборот, расширены. Кроме этого, с новой версии данный модуль поддерживает пользовательские скрипты для создания собственных лимитов.
Мониторинг ресурсов
Добавлена поддержка проверки состояния внешних сервисов, например листов DNS. В этом режиме Rspamd проверяет, что DNSBL доступен и что он не заблокировал все адреса (что иногда приводит к курьёзным ситуациям). Если эти проверки не проходят, то такой ресурс на время игнорируется (до следующей проверки).
Redis бекенд для fuzzy хешей
Начиная с Rspamd 1.4 можно хранить нечёткие хеши в Redis. Это хранилище является более быстрым и масштабируемым, чем SQLite. Утилита rspamadm
теперь умеет конвертировать хеши из хранилища SQLite в Redis.
Экспорт данных в graphite
В новой версии Rspamd может сохранять статистику, передавая данные внешней системе мониторинга (пока поддерживается только graphite). Также возможен экспорт данных в Redis pub/sub и Yandex Clickhouse (экспериментальный плагин).
Динамическая конфигурация в Redis
Эта функция полезна, когда нужно управлять несколькими экземплярами Rspamd централизованно. Пока что динамическая конфигурация ограничивается настройкой весов символов, действий и отключения определённых проверок. В будущем эти функции планируется расширить.
Настройки пользователей в Redis
Настройки пользователя теперь можно загружать из Redis. Это полезно, когда пользователей много и они часто обновляются. В таком случае нет необходимости каждый раз загружать настройки для всех пользователей.
Кольцевой буфер ошибок
Добавлена возможность сохранения ошибок работы в кольцевой буфер, отображающийся в web-интерфейсе и позволяющий быстро выявлять проблемы в работе Rspamd .
Сообщения для MTA
Теперь возможна передача сообщения, которое должно быть показано клиенту MTA, например при грейлистинге:
{ "messages": { "smtp_message": "Try again later"}}
Эта функция также поддерживается Rmilter 1.10.
Обновления Rspamd Lua API
В новой версии добавлен ряд новых возможностей в Lua API:
- Периодические события:
rspamd_config:add_periodic(ev_base, 1.0, function(cfg, ev_base) local logger = require "rspamd_logger" i = i + 1 logger.infox(cfg, "periodic function, %s", i) return false -- if return false, then the periodic event is removed end, true)
- Скрипты, выполняемые при старте или завершении процессов:
rspamd_config:add_on_load(function(cfg, ev_base, worker) if worker:get_name() == 'normal' then -- Do something end end)
- Поддержка новых хеш-функций (MD5, SHA1, SHA256, SHA512):
local hash = require "rspamd_cryptobox_hash" hash.create_specific('md5', 'string'):hex() -- b45cffe084dd3d20d928bee85e7b0f21
- Поддержка https в
lua_http
. - Пакетное обучение нейросетей (в отдельном потоке).
- Сжатие посредством zstd.
Изменения в веб-интерфейсе
- Новая закладка настройки символов.
- Таблица последних ошибок сканера.
- Улучшенная загрузка вкладок.
- По умолчанию пароли теперь нельзя применять для доступа к web-интерфейсу.
>>> Подробности