Выпуск системы фильтрации спама Rspamd 1.5

Состоялся релиз системы фильтрации спама Rspamd 1.5, предоставляющей средства для оценки сообщений по различным критериям, включая правила, статистические методы и чёрные списки, на основе которых формируется итоговый вес сообщения, используемый для принятия решения о необходимости блокировки. Rspamd поддерживает практически все возможности, реализованные в SpamAssassin, и имеет ряд особенностей, позволяющих фильтровать почту в среднем в 10 раз быстрее, чем SpamAssassin, а также обеспечивать лучшее качество фильтрации. Код системы написан на языке Си и распространяется под лицензией BSD.

Rspamd построен с использованием событийно-ориентированной архитектуры (Event-driven) и изначально рассчитан на применение в высоконагруженных системах, позволяя обрабатывать сотни сообщений в секунду. Правила для выявления признаков спама отличаются высокой гибкостью и в простейшем виде могут содержать регулярные выражения, а в более сложных ситуациях могут оформляться на языке Lua. Расширение функциональности и добавление новых типов проверок реализуется через модули, которые могут создаваться на языках Си и Lua. Например, доступны модули для проверки отправителя с использованием SPF, подтверждения домена отправителя через DKIM, формирования запросов в списки DNSBL. Для упрощения настройки, создания правил и отслеживания статистики предоставляется административный web-интерфейс.

Основные новшества:

  • Задействован новый MIME-парсер, заменивший собой ранее используемую библиотеку gmime. Основной причиной создания собственного MIME-парсера стала необходимость более полного контроля за разбором, для того чтобы обрабатывать специально задаваемые спамерами некорректные MIME-конструкции. Например, новый парсер позволил наладить обработку дублирующихся заголовков Content-Type, некорректного оформления структур multipart, неверного кодирования имён файлов, несоответствия заголовка Content-Transfer-Encoding и фактического метода кодирования, манипуляций с переводом строки в заголовках или пустым телом сообщения;
  • Для перевода из одной кодировки символов в другую вместо libiconv задействована библиотека libicu, которая примерно в два раза быстрее и поддерживает такие возможности как автоматическое определение кодировки и выявление наличия подмены символов на похожие по начертанию;
  • Переработан Web-интерфейс, который разбит на модули, что позволяет добавлять новые возможности не трогая остальной код. В web-интерфейсе также появилась возможность агрегирования статистики от разных серверов с Rspamd и улучшены графики оценки пропускной способности;
  • Модуль rspamd_tcp для создания произвольных TCP-клиентов на языке Lua, переработан для поддержки сложных протоколов, поддерживающих цепочку интерактивных команд и учитывающих состояние соединения. Например, теперь возможно определить отдельную логику реагирования на передачу различных команд внутри сеансов SMTP или IMAP;
  • Представлен новый легковесный модуль url_redirector, предназначенный для раскрытия перенаправления URL через сервисы коротких ссылок. Модуль написан на языке Lua, использует Redis для кэширования уже раскрытых ссылок и может расставлять теги для других модулей;
  • Добавлен модуль Rmilter headers, упрощающий добавление произвольных заголовков через Rmilter, в том числе Authentication-Results и заголовков, специфичных для SpamAssassin;
  • Добавлен модуль DKIM signing для настройки цифровых подписей DKIM, предоставляющий такие возможности как хранения DKIM-ключей в Redis;
  • Добавлен модуль Force actions, предназначенный для принудительного выполнения действия при наличии или отсутствии определённых символов в сообщении;
  • Переработан модуль экспорта метаданных, позволяющий выявить сообщения, соответствующие заданным правилам, и передать внешнему сервису выделенные из них данные. В новом выпуске предоставлены более гибкие операции и функции для экспорта параметров сообщения в формате JSON, что делает модуль более применимым для операций помещения в карантин, ведения логов и и генерации предупреждений;
  • Реализован плагин для привязки тегов к URL с возможностью их кэширования в Redis;
  • Добавлен плагин для динамического определения репутации URL на основе данных о доменах, хранимых в Redis;
  • Модуль multimap теперь может применяться для сопоставления информации, извлечённой из заголовков «Received»;
  • В модуле RBL добавлена поддержка использования хэшей в черных списках «email» и «helo»;
  • В модуле взаимодействия с антивирусным ПО добавлена поддержка Avira SAVAPI;
  • В системе нечёткого хэширования (fuzzy hashing) добавлена поддержка неточного сопоставления изображений, прикреплённых к письму;
  • Добавлены новые правила: OMOGRAPH_URL для определения URL, вводящих в заблуждение, FROM_NAME_HAS_TITLE, REPLYTO_EMAIL_HAS_TITLE и FROM_NAME_EXCESS_SPACE;
  • В rspamadm добавлена команда grep для поиска по аналогии с утилитой exigrep;
  • Проведены оптимизации производительности: в декодировщике Base64 задействованы бэкенды sse4.2 и avx, расширено кэширование внутренних объектов, осуществлён переход на более быструю хэш-функцию t1ha, задействованы оптимизации на этапе связывания, встроен luajit 2.1.

© OpenNet