LINUX.ORG.RU

Rspamd 1.4 (и Rmilter 1.10)

 , , , ,


2

3

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 теперь может проверять сообщения с помощью сторонних антивирусов. Этот модуль предоставляет ряд функций:

  1. Работа с различными типами антивирусных систем: ClamAV, Sophos и F-Prot.
  2. Поддержка пользовательских шаблонов (например, экспериментальные базы данных для ClamAV).
  3. Поддержка кеширования результатов.
  4. Проверка только писем с вложениями, чтобы сохранить ресурсы антивируса.
  5. Белые списки, ограничения на размер и пользовательские скрипты оценки результатов.

Плагин проверки 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:

  1. Периодические события:
    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)
    
  2. Скрипты, выполняемые при старте или завершении процессов:
    rspamd_config:add_on_load(function(cfg, ev_base, worker)
      if worker:get_name() == 'normal' then
        -- Do something
      end
    end)
    
  3. Поддержка новых хеш-функций (MD5, SHA1, SHA256, SHA512):
    local hash = require "rspamd_cryptobox_hash"
    hash.create_specific('md5', 'string'):hex()
    -- b45cffe084dd3d20d928bee85e7b0f21
    
  4. Поддержка https в lua_http.
  5. Пакетное обучение нейросетей (в отдельном потоке).
  6. Сжатие посредством zstd.

Изменения в веб-интерфейсе

  1. Новая закладка настройки символов.
  2. Таблица последних ошибок сканера.
  3. Улучшенная загрузка вкладок.
  4. По умолчанию пароли теперь нельзя применять для доступа к web-интерфейсу.

>>> Подробности

★★

Проверено: Shaman007 ()

AUR сёдня вечером обновлю, пока гоняю тесты.

post-factum ★★★★★ ()

Ну и как, реально работает байес фильтрация? Я если бы захотел спамить, специально бы через эти баейс фильтрации гонял свой текст и морфировал бы каким-нибудь обратным баейсом или нейросеткой. Пока не пройдет со 100% гарантией.

А разве нет какого-нибудь хаба, где всякие гуглы, мейлру и прочие яху отсылали бы хеши писем и тем самым выявляли наиболее подозрительные письма/рассылки?

foror ★★★ ()
Последнее исправление: foror (всего исправлений: 2)
Ответ на: комментарий от foror

хеши писем

Первая же идея по предотвращению спама — хранить N хешей недавно отправленных сообщений, и блокировать, если хеш нового сообщения повторяется. Это сразу же обходят изменяемыми компонентами в письмах. Пробел где-нибудь вставят ещё один, где-то таб, и так далее.

i-rinat ★★★★★ ()

Проблема спама не в задроченности спам-фильтра, а в дырявости SMTP-серверов а-ля exim.

vblats ()

Как раз в этом месяце на личный vps сервак поставил, а то что-то слишком много спама стало приходить. Ну что я могу сказать, вроде работает, большую часть удаляет сразу, что превысило установленное количество баллов (по дефолту 14, я повысил до 25), то что ниже идёт в папку спам. Иногда что-то пропускает мимо, что не могло набрать нужное количество баллов.

Но для личного сервачка что-то жесть, 4 процесса rspamd (main, controller, normal, hs_helper), 2 процесса rmilter, ещё redis пришлось ставить (без него в логи постоянно пишет ошибку что не мог подключиться к серверу redis с нескольких попыток), причём в мануале не указали где указать не использовать redis, хотя там говорится «может использовать redis», то есть будто это опционально.

anonymous ()
Ответ на: комментарий от anonymous

Но для личного сервачка что-то жесть, 4 процесса rspamd (main, controller, normal, hs_helper), 2 процесса rmilter, ещё redis пришлось ставить

А ты переподними всё то же самое под kubernetes'ом. И предыдущий вариант уже не покажется таким затратным.

ugoday ★★★★★ ()

Спамеров нужно убивать.

Остальное - печальные недополумеры.

DRVTiny ★★★★★ ()
Ответ на: комментарий от anonymous

Так эта приблуда вроде не для личного сервачка, а для более хардкорных случаев.

MrClon ★★★★★ ()
Ответ на: комментарий от vblats

… в дырявости SMTP-серверов а-ля exim

Плюсую предыдущего оратора - хочу подробностей.

MumiyTroll ★★ ()
Ответ на: комментарий от MumiyTroll

Какие могут быть подробности ?

Ставь екзим или постфикс в продакшен, и через месяц начинай считать сколько незванных гостей используют твой сервак в качестве релея.

А если сервак еще и шарится между несколькими юзерами\доменами, то количество гостей стремится к бесконечности.

vblats ()
Ответ на: комментарий от i-rinat

Ну это обходят тем, что считают хеши по полям и удаляют все пробелы и табуляции

AVL2 ★★★★★ ()
Ответ на: комментарий от vblats

Посчитал. 0 незваных гостей за 7 лет эксплуатации Postfix.

anonymous ()
Ответ на: комментарий от vblats

С 2005 года «в продакшене» стоит постфикс. Уже скоро 12 лет, как он ни разу не был использовать незванными гостями в качестве релея. ЧЯДНТ?

anonymous ()
Ответ на: комментарий от vblats

Ставь екзим или постфикс в продакшен, и через месяц начинай считать сколько незванных гостей используют твой сервак в качестве релея.

Ты же забыл самую первую строку в инструкции!!! А там написано - «Извлеките руки из >|<0пы! Если не извлекаемо - наймите настоящего админа!» :)

anonymous ()
Ответ на: комментарий от anonymous

В rmilter.conf: use_redis = false;

Спасибо, что ж тут об этом нет? А не использование redis сильно скажется на мелком сервачке?

anonymous ()
Ответ на: комментарий от anonymous

Да да. Пердолинг и еще раз пердолинг. А потом костылинг. Потом возможно сервак будет защищен. До поры до времени.

SMTP - дырявый и устаревший, это настолько очевидно что даже обсуждать нет смысла.

vblats ()
Ответ на: комментарий от vblats

Ставь екзим или постфикс в продакшен, и через месяц начинай считать сколько незванных гостей используют твой сервак в качестве релея.

Это надо как-то специально так настроить? Вроде даже по дефолту проблем нет. УМВР, хотя судя по входящему спаму таких отктырых релеев полно.

anonymous ()
Ответ на: комментарий от anonymous

извлеките руки из >|<0пы!

Скорее голову.

anonymous ()
Ответ на: комментарий от anonymous

Надо же, открываешь гугль, и стопицот вопросов на форумах, как бороться с таким спамом. А у вас прямо все идеально)

vblats ()
Ответ на: комментарий от vblats

Надо же, открываешь гугль, и стопицот вопросов на форумах, как бороться с таким спамом. А у вас прямо все идеально)

А причём тут борьба со спамом? Ты начал про то что якобы постфикс дырявый и если его поставить, то через месяц с него будет идти спам. На это я тебе ответил что даже с дефолтными конфигами этой проблемы нет.

А спам приходит потому что кто-то свой сервер настраивал хрен знает как и он у них стал открытым реелеем из-за кривого конфигурирования (скорей всего дурачки не вникая накопипастили конфигов из интернетов).

как бороться с таким спамом.

Установить Rspamd, например.

Короче, из этого твоего комментария я сделал вывод что ты не понимаешь разницы между входящим сообщением, исходящим сообщением и вообще как работает почта. Уходи. Из-за таких как ты и существует проблема спама.

anonymous ()
Ответ на: комментарий от vblats

Ставь екзим или постфикс в продакшен, и через месяц начинай считать сколько незванных гостей используют твой сервак в качестве релея.

Как страшно жить в Вашем мире...

В реальности дефолтные конфигурации с открытым релеем закончились то ли в конце 90-х, то ли в начале нулевых. И даже тогда это была не «дырявость», а конфигурация. И уже точно более 10 лет ни в одном MTA не практикуется открытый релей в дефолтной конфигурации.

Впрочем, допускаю, что в предпочитаемом Вами дистрибутиве, либо неадекватные майнтайнеры, включающие открытый релей, либо exim/postfix/sendmail образца 90-х.

MumiyTroll ★★ ()
Ответ на: комментарий от vblats

Ставь екзим или постфикс в продакшен, и через месяц начинай считать сколько незванных гостей используют твой сервак в качестве релея.

Судя по его постам, vblats известный балабол.

Deisler ()
Ответ на: комментарий от anonymous

Без redis не будет работать почти половина модулей rspamd. А если захотите использовать bayes или fuzzy, то придется ставить sqlite3. В rmiltere грейлистинг и рейт-лимит тоже не будут работать (либо придется вместо redis ставить memcached) .

anonymous ()
Ответ на: комментарий от anonymous

Без redis не будет работать почти половина модулей rspamd. А если захотите использовать bayes или fuzzy, то придется ставить sqlite3. В rmiltere грейлистинг и рейт-лимит тоже не будут работать (либо придется вместо redis ставить memcached) .

Ясно, спасибо. Тогда стоило бы на сайте сменить формулировку, а то «может работать с redis» вводит в заблуждение, будто это опционально и без него работает так же, только менее производительно.

anonymous ()
Ответ на: комментарий от anonymous

стоило бы на сайте сменить формулировку, а то «может работать с redis» вводит в заблуждение, будто это опционально и без него работает так же, только менее производительно

А где именно это написано? Дайте, пожалуйста, ссылку.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.