The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

01.03.2017 23:34

Состоялся релиз системы фильтрации спама 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.


  1. Главная ссылка к новости (https://rspamd.com/announce/20...)
  2. OpenNews: Выпуск системы фильтрации спама Rspamd 1.4
  3. OpenNews: Релиз системы фильтрации спама Rspamd 1.3
  4. OpenNews: Выпущена версия 1.0 системы фильтрации спама rspamd
  5. OpenNews: Увидел свет Apache SpamAssassin 3.4.1
  6. OpenNews: Увидел свет Apache SpamAssassin 3.4.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/46118-spam
Ключевые слова: spam, rspamd
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (33) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 01:24, 02/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > в 10 раз быстрее, чем SpamAssassin

    Круто.

     
     
  • 2.2, PlusOdin (?), 05:06, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ну дык - Perl (SpamAssassin) vs C (Rspamd).
     
     
  • 3.3, Аноним (-), 07:16, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    С другой стороны, в Rspamd из-за Си больше рисков нарваться на опасную уязвимость.
     
     
  • 4.4, Аноним (-), 08:57, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Сейчас придут буйные сишники и скажут, что двойное освобождение памяти - это "логическая ошибка", а "логические ошибки" можно допустить в любом языке.
     
  • 4.5, пох (?), 09:09, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    вы прослушали две urban legends, не имеющие ничего общего с реальностью.

    P.S. к реальности еще и здорово досыпано маркетоидного шлака. Ох не зря на slideshare рядом с их агиткой советуют "sales skills fundamentals", а стаховские слайды начинаются с пятого. Помимо действительно полезных и правильных техник оптимизации (не имеющих, кстати, ничего общего с выбором языка программирования), "в 10 раз быстрее" намеряно на конфигурации, зачем-то отправляющей "тысячи dns requests". У меня спамотсосин отправляет ноль dns requests (dnsbl обрабатывается в mta, а зачем антиспамилке анализировать ссылки внутри письма - я, в целом, не очень понимаю, и предпочел бы, чтобы дальше анализа структуры тега дело не заходило. Пример в их рекламе - как раз письмо, которое можно отправлять в спам, совершенно на эти ссылки не глядя, достаточно их количества и отсутствия содержания.)

     
     
  • 5.9, vstakhov (ok), 12:01, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Насчет перла и си: да си быстрее и потенциально более опасен, чем perl, при прочих равных условиях. Memory safety редко бывает бесплатной (из положительных примеров в голову, впрочем, приходит Rust).

    Насчет DNS запросов: вы неверно поняли этот слайд (или я его неверно составил). Посыл был в том, что ресурсы на обработку писем нужно лимитировать, иначе будет "ой". Данное письмо обрабатывалось SA с дефолтными настройками 3 минуты (!!). К слову, у Rspamd число DNS запросов на письмо ограничено 64-мя (кроме SPF, DKIM и ряда других, где есть собственные ограничения). Просто в том примере эти лимиты искусственно задрались.

    Насчет "не глядя": тут такое дело, что обычный гопник Вася будет лучше, чем самая сложная и совершенная система антиспама. Другое дело, что работает этот Вася медленно и, соответственно, дорого. Поэтому и гонка за скоростью.

    Насчет сравнения по скорости с SA: я делал довольно много масштабных бенчмарков SA и Rspamd в разных условиях и с разными конфигами. Например, на своей текущей работе у нас в SA было очень много странных регэскпов. И даже в такой, очень неудобной для себя, ситуации Rspamd был в 10 раз быстрее по медиане времени проверки. Когда я подключил гиперскан - стал в 50 раз быстрее... Ну и в других неудобных ситуациях, скажем, Raspberry Pi (а Rspamd вообще оптимизирован под x86_64), юзеры сообщали, что SA работает значительно медленнее. И, что забавно, кушает намного больше памяти, хотя экономия памяти никогда не была целью при разработке Rspamd.

    Насчет рекламы: я это все дело ненавижу гораздо больше вас, вы уж поверьте, и я предпочел бы писать код, чем делать release notes, документацию, общаться с пользователями, выступать на конференциях. Но реальность такова, что мне нужны пользователи, чтобы улучшать Rspamd. И мне нужен фидбек, неважно положительный или отрицательный.

     
     
  • 6.10, пох (?), 15:07, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    ну то есть в сферическом вакууме, да - Главное, чтоб этот код ничего полезного... большой текст свёрнут, показать
     
     
  • 7.11, vstakhov (ok), 15:33, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Все так И это тоже верно Ну да, это понятно, поэтому url resolver ходит только... большой текст свёрнут, показать
     
  • 6.17, Аноним (-), 07:37, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Memory safety редко бывает бесплатной (из положительных примеров в голову, впрочем, приходит Rust

    Там платишь за "безопасность"[1] выносом мозга borrow-checker'ом.

    [1] которая всё равно протекает на первом блоке unsafe {}, работающий с внешним миром.

     
  • 4.6, kai3341 (ok), 09:26, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +11 +/
    > в Rspamd из-за Си больше рисков нарваться на опасную уязвимость

    Так как похапе -- язык высокого уровня, рисков нарваться на опасную уязвимость там очень мало.

     
     
  • 5.7, пох (?), 11:08, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    браво! ;-)
     
  • 2.29, Аноним (-), 17:59, 05/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    интеерснее надежность/безопасность, обычно.
    в этом плане, потенциально DSPAM получше, скорее.
     
     
  • 3.30, Vsevolod Stakhov (?), 20:37, 05/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно, чем лучше сгнивший и неподдерживающийся код с точки зрения безопасности?
     

  • 1.8, dkg (?), 11:21, 02/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ждем в IredMail.
     
  • 1.12, Аноним (-), 18:16, 02/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    у вас там в рекламе ремблер. так вот их мх держит сессию перед еом 100-300 сек.
    хорошая реклама фильтра-)
     
     
  • 2.13, vstakhov (ok), 18:19, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Держит не из-за фильтра, а из-за того, что не все воспринимают рациональные доводы. Для информации, я сейчас никакого отношения к Рамблеру не имею. Впрочем, здесь тоже не все идеально - вот такой вот дерьмовый мир.
     
  • 2.14, vstakhov (ok), 18:20, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > у вас там в рекламе ремблер. так вот их мх держит сессию
    > перед еом 100-300 сек.
    > хорошая реклама фильтра-)

    И не перед EOM, а перед greeting, что несколько другое.

     
     
  • 3.15, Аноним (-), 18:35, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    не. он примерно по 10 сек тормозит на каждую команду с начала. а потом после . ждем еом сек 200-300 -)
     
     
  • 4.16, vstakhov (ok), 18:38, 02/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > не. он примерно по 10 сек тормозит на каждую команду с начала.
    > а потом после . ждем еом сек 200-300 -)

    Я сообщу о вашей проблеме, но она явно не связана с Rspamd - там есть жесткий тайм-аут на 10 секунд. Можете мне написать в почту ip, с которого вы отправляете, - так получится быстрее.

     

  • 1.18, test (??), 09:50, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На моих 2000 аккаунтах RSPAMD работает прилично шустрее, и что более важно, точнее чем SA. Причем при практические дефолтных настройках RSPAM. SA же приходилось долго допиливать. Различные перловые зависимости при установке SA меня тоже добивали, практически не бывало такого, чтобы SA со всем необходимым мне функционалом устанавливался без проблем, всегда вылезал какой то перловый модуль, который не хотел вставать по какой то причине.

    Из того чего мне не хватает в RSPAMD - в первую очередь более подробных хедеров. У меня используется CGP и, если я правильно понимаю, то нужно допиливать скрипт хелпера. У тех кто работает через Rmilter этой проблемы видимо нет.

     
     
  • 2.20, vstakhov (ok), 13:22, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Если CGP поддерживает несколько ADDHEADER для одного тега, то можно добавить поддержку https://rspamd.com/doc/modules/rmilter_headers.html
     
     
  • 3.23, test (??), 14:48, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Можно, это в смысле технически возможно? Я практически уверен что возможно, потому как хелперы от SA там добавляют хедеры с небольшой информацией без проблем. Я вот только совсем не программист, что то чужое слегка поправить еще могу, а остальное увы нет.

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

    GUI в версии 1.5 кстати уже стал более интересен чем раньше :)

     
     
  • 4.24, vstakhov (ok), 16:36, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Можно, это в смысле технически возможно? Я практически уверен что возможно, потому
    > как хелперы от SA там добавляют хедеры с небольшой информацией без
    > проблем. Я вот только совсем не программист, что то чужое слегка
    > поправить еще могу, а остальное увы нет.

    Ну, я добавил поддержку rmilter_headers и dkim-signature в этот хелпер: https://github.com/vstakhov/rspamd/commit/88e76379155c888abb15044211abb073e80e

    Но тестировать мне его, к сожалению, негде.

    > еще вопрос, если не сложно расскажите. У меня кластер из двух CGP
    > и хотелось бы как то настроить для RSPAMD единую базу (обучение,
    > статистика и прочее) , если я правильно понял, то это реализуемо.
    > Как это лучше реализовать? где то описана процедура?

    Нужно просто использовать Redis, это решается довольно просто после этого. Все настройки описаны тут: https://rspamd.com/doc/configuration/redis.html

    > GUI в версии 1.5 кстати уже стал более интересен чем раньше :)

    К сожалению, я пока не осилил закончить вот этот проект: https://github.com/vstakhov/rspamd/projects/1 С ним было бы еще лучше.


     
     
  • 5.26, test (??), 16:58, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >Ну, я добавил поддержку rmilter_headers и dkim-signature в этот хелпер: https://github.com/vstakhov/rspamd/commit/88e76379155c888abb...
    > Но тестировать мне его, к сожалению, негде.

    Этим я на выходных займусь. Отпишу сюда по результатам. Спасибо

     
  • 5.27, test (??), 17:39, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >> Ну, я добавил поддержку rmilter_headers и dkim-signature в этот хелпер: https://github.com/vstakhov/rspamd/commit/88e76379155c888abb...
    >> Но тестировать мне его, к сожалению, негде.

    Сходу я никаких изменений в поведении скрипта не вижу. Добавляется хедер как раньше и все. Мне нужно какие то манипуляции с ним делать? По настройкам изменений не вижу

     
     
  • 6.28, vstakhov (ok), 19:02, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >>> Ну, я добавил поддержку rmilter_headers и dkim-signature в этот хелпер: https://github.com/vstakhov/rspamd/commit/88e76379155c888abb...
    >>> Но тестировать мне его, к сожалению, негде.
    > Сходу я никаких изменений в поведении скрипта не вижу. Добавляется хедер как
    > раньше и все. Мне нужно какие то манипуляции с ним делать?
    > По настройкам изменений не вижу

    Ну да, я же писал: https://rspamd.com/doc/modules/rmilter_headers.html и https://rspamd.com/doc/modules/dkim_signing.html. Там все написано, с примерами разными.

     

  • 1.19, CHERTS (??), 09:53, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >>В web-интерфейсе также появилась возможность агрегирования статистики от разных серверов с Rspamd

    Это очень удобно, но если у меня подключения к порту 11334 запаролены своим паролем, то как указать в local.d/options.inc
    в конструкции
    neighbours {
       server2 { host = "YYY.YYY.YYY.YYY:11334"; }
       server1 { host = "XXX.XXX.XXX.XXX:11334"; }
       localhost { host = "127.0.0.1:11334"; }
    }

    мой пароль?

     
     
  • 2.21, vstakhov (ok), 13:23, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >>>В web-интерфейсе также появилась возможность агрегирования статистики от разных серверов с Rspamd
    > Это очень удобно, но если у меня подключения к порту 11334 запаролены
    > своим паролем, то как указать в local.d/options.inc
    > в конструкции
    > neighbours {
    >    server2 { host = "YYY.YYY.YYY.YYY:11334"; }
    >    server1 { host = "XXX.XXX.XXX.XXX:11334"; }
    >    localhost { host = "127.0.0.1:11334"; }
    > }
    > мой пароль?

    Пароль задает сам WebUI, как и обеспечивает всю остальную логику работы с кластером. Сейчас это будет работать, только если у всех серверов кластера один и тот же пароль. В будущем можно это ограничение убрать.

     

  • 1.22, s90 (ok), 13:45, 03/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    подскажите такой момент по webui:
    1) в Status есть 6 значений - Scanned, Clean, Greylist...; в моем случае Greylist = 0
    2) на графике Greylist отсутствует, но есть Temporary rejected
    можно ли чтоб Greylist отображал количество Temporary rejected ?
    по сути письма то отклоняются с символом GREYLIST (видно в History)
     
     
  • 2.25, vstakhov (ok), 16:36, 03/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > подскажите такой момент по webui:
    > можно ли чтоб Greylist отображал количество Temporary rejected ?
    > по сути письма то отклоняются с символом GREYLIST (видно в History)

    Да, это все пережитки старой схемы, когда грейлистинг выполнялся через Rmilter.

     

  • 1.31, vladadm (ok), 13:50, 06/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Попробовал прикрутить подпись dkim к CGP (FreeBSD 10.3 x64), но даже на старте получаю в логе ошибку:
    ===
    <rprnwr>; cfg; rspamd_config_is_module_enabled: lua module dkim_signing is enabled but has not been configured
    <rprnwr>; cfg; rspamd_config_is_module_enabled: dkim_signing disabling unconfigured lua module
    ===

    По rspamadm configdump dkim:
    ===
    *** Section dkim ***
    dkim_cache_size = 2000;
    dkim_cache_expire = 86400.0;
    time_jitter = 21600.0;
    trusted_only = false;
    skip_multi = false;
    dkim_signing {
        allow_envfrom_empty = true;
        allow_hdrfrom_mismatch = false;
        allow_hdrfrom_multiple = false;
        allow_username_mismatch = false;
        auth_only = true;
        path = "/mail/mail.key";
        selector = "mail";
        sign_local = true;
        symbol = "DKIM_SIGNED";
        try_fallback = true;
        use_domain = "header";
        use_esld = true;
        use_redis = false;
        hash_key = "DKIM_KEYS";
        domain {
            zenonline.ru {
                path = "/mail/mail.key";
                selector = "mail";
            }
        }
    }

    *** End of section dkim ***
    ===

    Всё дефолтное, кроме /usr/local/etc/rspamd/local.d/dkim.conf
    Что может быть? Почему ругается на unconfigured lua module :(

     
  • 1.32, Аноним (-), 15:10, 06/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот и превратились комментарии к новости в форум поддержки
     
  • 1.33, Аноним (-), 14:51, 21/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Доброго дня всем

    Подскажите плз, как WebUI довести до рабочего состояния?
    Веб интерфейс открывается, пароль проходит, появляется диск, зеленый. Менюшки Status, Throughput, Configuration, Symbols, Scan, History неактивные. В документации не нашел, как их настраивать.
    Что надо сделать (где почитать), чтобы эти меню заработали?

    спасибо.

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру