Состоялся (https://rspamd.com/announce/2016/03/21/rspamd-1.2.0.html) выпуск системы фильтрации спама Rspamd 1.2 (https://rspamd.com), предоставляющей средства для оценки сообщений по различным критериям, включая правила, статистические методы и чёрные списки, на основе которых формируется итоговый вес сообщения, используемый для принятия решения о необходимости блокировки. Код системы написан на языке Си и распространяется (https://github.com/vstakhov/rspamd) под лицензией BSD.В новой версии (https://github.com/vstakhov/rspamd/blob/1.2.0/ChangeLog): поддержка динамического обновления (https://rspamd.com/doc/modules/rspamd_update.html) правил блокировки, поддержка динамической загрузки модулей и обработчиков, возможность использования регулярных выражений в таблицах сопоставления, улучшенная производительность (поддержка pcre2 (http://pcre.org/), более быстрая работа с хэшами и деревьями, использование инструкций AVX2, ускорение выборок по IP) и стабильность (включены исправления ошибок, выявленных в процессе статического анализа проектом Coverity).
Rspamd построен с использованием событийно-ориентированной архитектуры (Event-driven) и изначально рассчитана на применение в высоконагруженных системах, позволяя обрабатывать сотни сообщений в секунду. Правила для выявления признаков спама отличаются высокой гибкостью и в простейшем виде могут содержать регулярные выражения, а в более сложных ситуациях могут оформляться на языке Lua. Расширение функциональности и добавление новых типов проверок реализуется через модули, которые могут создаваться на языках Си и Lua. Например, доступны модули для проверки отправителя с использованием SPF, подтверждения домена отправителя через DKIM, формирования запросов в списки DNSBL. Для упрощения настройки, создания правил и отслеживания статистики предоставляется административный web-интерфейс.URL: https://rspamd.com/announce/2016/03/21/rspamd-1.2.0.html
Новость: http://www.opennet.me/opennews/art.shtml?num=44088
Кто нибудь пользовался, если сравнивать с спамассассином помимо производительности есть плюсы ?
Кроме автора и пары контор для которых он это пилит не кто больше не пользует.
> Кто нибудь пользовался, если сравнивать с спамассассином помимо производительности есть плюсы ?Чисто субъективно - конфиги более понятные и структурированные. Не вызывают рвотного рефлекса.
я пользуюсь и доволен на 100%. отлично фильтрует, спама проходит минимум и то, потому что нет обучения от основного мейл сервера.после DSPAM это решение просто великолепно.
На любителя. Регекспы тут убогие. RAW использовать "нирикамендуется", PART матчит только в текстовой части, URL ...но без query part и не всегда находит ссылки. Вместо raw предлагается trie, ...но оно только для заранее известных строк.Как например отловить вот такое: http://google.XX/?query<куча-ереси>&redir=htt%68:/%2fsite.tk%2f/exploit.scr -- загадка сия велика есть.
Документация также убогая, она как бы есть, но ничего толком не объясняет. Доходит до того, что за списком допустимых параметров модуля приходится лазить в код самого модуля. И хорошо если он написан на lua, а не на си. Возьмите например ratelimit и попробуйте найти в доках как именно ему задать адрес redis-сервера.
Ещё - конфиг ломают КАЖДУЮ минорную версию, поэтому обновляться следует возможно реже, с внимательным курением changelog'а, багзиллы и выделением дней-двух на мониторинг отвалившегося.
Из примеров - нет гарантированного способа переопределить score для какого-то символа, в следующей версии его могут переименовать. А через одну - переименовать ещё раз. Просто потому что "автор так видит".
Эпопея с user_settings, который как бы есть, и как бы предназначен для переопределения того самого score, но как бы периодически ломается.
Action=greylist не имеет state. Это означает, что есть mta поверил антиспаму и дал 4XX, оно так и будет его отшивать до истечения retry на той стороне или до изменения в лучшую сторону настроек почтовика отправителя, что маловероятно.
Зато работает в разы быстрее ассассина, это да.
Хочу только поинтересоваться: вы, часом, не журналист - а то у вас получилось написать в каноничном стиле бульварной прессы. Берешь крупицу правда, щедро докладываешь шмат лжи и собственных домыслов, подавая в соусе некомпетентности, придав оттенок самоуверенности, чтобы создать впечатление, что уж автор-то точно в теме. Судя по всему, впечатление у вас получается создать, и это печально.По пунктам:
> Регекспы тут убогие.
А ничего, что rspamd поддерживает весь набор регэкспов SA?
> RAW использовать "нирикамендуется", PART матчит только в текстовой части,
Да, а вы хотите еще один SA? Впрочем, с hyperscan это вообще не имеет значения (если не использовать бектрекинг, но даже в этом случае fallback на pcre - не самое страшное, что может случиться) - вы можете задавать хоть десятки тысяч регэкспов без влияния на производительность.
> URL ...но без query part и не всегда находит ссылки.
Ложь - rspamd матчит url целиком.
> Как например отловить вот такое: http://google.XX/?query<куча-ереси>&redir=htth://site.tk//exploit.scr -- загадка сия велика есть.
Да нет, загадки в этом никакой нет. Можно попробовать документацию почитать, например.
> Документация также убогая, она как бы есть, но ничего толком не объясняет. Доходит до того, что за списком допустимых параметров модуля приходится лазить в код самого модуля.
> И хорошо если он написан на lua, а не на си. Возьмите например ratelimit и попробуйте найти в доках как именно ему задать адрес redis-сервера.Для этого существуют багрепорты, вы знаете о такой вещи? Я пишу rspamd один по факту, в том числе и всю документацию, поэтому могу упустить какие-то вещи - в этом нет ничего удивительного.
> Ещё - конфиг ломают КАЖДУЮ минорную версию, поэтому обновляться следует возможно реже, с внимательным курением changelog'а, багзиллы и выделением дней-двух на мониторинг отвалившегося.
Последние 2 года конфиг не ломался ни разу. Во времени 0.5, 0.6 и 0.7 такое было. В минорных версиях конфиг не ломался никогда, а все изменения описаны тут: https://rspamd.com/doc/migration.html
> Из примеров - нет гарантированного способа переопределить score для какого-то символа, в следующей версии его могут переименовать. А через одну - переименовать ещё раз. Просто потому что "автор так видит".
Символы никогда не переименовываются (опять же за последние 2+ года). Способов переопределить символ есть множество, но ведь у вас документации "как бы нет", поэтому сложно что-то посоветовать.
> Эпопея с user_settings, который как бы есть, и как бы предназначен для переопределения того самого score, но как бы периодически ломается.
Опять "как бы". Для фактов есть багрепорты, а для фантазий - психиатр. Попробуйте какую-нибудь опцию - возможно, вам помогут.
> Action=greylist не имеет state. Это означает, что есть mta поверил антиспаму и дал 4XX, оно так и будет его отшивать до истечения retry на той стороне или до изменения в лучшую сторону настроек почтовика отправителя, что маловероятно.
Ну да, потому что стейт есть у rmilter/exim. Сделать хранение ключей грейлистинга очень просто, но это никому не было нужно.
Бздyн? Бздyн.> А ничего, что rspamd поддерживает весь набор регэкспов SA?
Смотрим в текст, видим фигу. К диалекту регекспов у меня нет претензий, вопросы к тому как оно матчит в итоге.
> Ложь - rspamd матчит url целиком.
Мне пофиг, что там написано в документации, я смотрю как оно работает по факту.
> Можно попробовать документацию почитать, например.
Ну как только она будет - так сразу. Всё что там есть - я уже прочёл и не по одному разу.
> вы можете задавать хоть десятки тысяч регэкспов без влияния на производительность.
Вот например цитата из официальной "документации" про модуль regex:
> We strongly discourage from using of raw message regexps as they are expensive and should be replaced by trie rules if possible.
Видишь слово "expensive"? Так что ты со своими "десятками тысяч регэкспов" жидко обгадился.
> Сделать хранение ключей грейлистинга очень просто, но это никому не было нужно.
О, отмазки пошли. Ну мне нужно, дальше что? Вот не хочу я разводить зоопарк компонентов перемотанный изолентой на пустом месте.
Я разговаривал с vstakhov в прошлой теме, показывал пальцем в этот момент. До моего объяснения "зачем это надо" он демонстрировал незамутнённость, и в итоге отписался в стиле "когда-нибудь".
> Мне пофиг, что там написано в документации, я смотрю как оно работает по фактуБага с матчингом url'ей была. Примерно год или больше назад.
> Ну как только она будет - так сразу. Всё что там есть - я уже прочёл и не по одному разу.
Ну так надо открывать тикеты, что непонятно. Я понимаю, что мой английский далек от совершенства и зачастую получается так, что, вроде, все слова на месте, а смысл потерялся.
> Видишь слово "expensive"? Так что ты со своими "десятками тысяч регэкспов" жидко обгадился.
Я об этом: https://highsecure.ru/rspamd-hyperscan.pdf ну и можно еще послушать мое выступление с фосдема, где я об этом рассказываю: https://www.youtube.com/watch?v=_fl9i-az_Q0
А с pcre это реально expensive.
> О, отмазки пошли. Ну мне нужно, дальше что? Вот не хочу я разводить зоопарк компонентов перемотанный изолентой на пустом месте.
Так открой тикет - сделать это несложно, но я не могу понять, зачем такое нужно и в какой ситуации (например, в postfix + rmilter + rspamd это нафиг не нужно).
> Последние 2 года конфиг не ломался ни разу. Во времени 0.5, 0.6 и 0.7 такое было.
> Символы никогда не переименовываются (опять же за последние 2+ года).Ты сейчас нагло врёшь. гемор с 0.8 -> 0.9, 0.9 -> 1.0 я прекрасно помню. Вот здесь описаны грабли перехода с 0.8, 0.9, 1.0 и 1.1 => https://rspamd.com/doc/migration.html
Переход xml -> ucl - это вообще всё с нуля.
Это теперь называется "не ломался с 0.7"? Кроме того я прекрасно помню ежерелизное переделывание DNSBL_*
Вот целые секции из ченжлога, посвящённые фиксам самых примитивных case:
* RBL fixes (by @fatalbanana):
- silence errors;
- yield unknown results from RBLs;
- fix scoring for DNSWL;
- fix use of RBL name as symbol; # << !!!
- ignore RBL names that would not be yielded;* Multiple fixes to URL detection:
- support port definition; # <<
- fix query and path recognition; # <<
- fix parsing of multiple slashes in URL; # <<
- fix parsing query just after port; # <<
- fix path field in `url:to_table` method;
- improve support of IP based URLs.Это только за один минорный релиз. Сколько там подобного осталось - только п-треку известно.
RAW и в SA очень не рекомендуется.
Интересненько. Жаль не занимаюсь сейчас почтовыми серверами, а так попробовал бы.
годная штука, есть косячки. Но главное - работает из коробки.
Кто-то обновлялся с 1.0 версии?
не работает на линукс arm (armv7 debian wheezy) платформе ,если еспользовать sqlite backend. после запуска падает процесс controller process, затем он перезапускается родителем и так по кругу. пробовал версии 1.1.4 и 1.2 и разные libsqlite - тщетно. написал бы багрепорт на гитхабе, но в англиском не шибко силен.
Есть некое впечатление, что это сочетание wheezy со старым openssl и армом. Я попробую посмотреть, если у меня есть доступ на scaleway, в чем там может быть проблема. Спасибо за репорт.
Спасибо за ответ. Выложил немного отладочной информации:бактрейс: https://paste.ee/p/Jxip5
Впринципе, если проблема действительно в окружении дебиана, то попробую собрать статически на какой-нибудь убунте и потом перенести обратно. Очень уж понравилась ваша программа - для маленького сервера альтернатив и нет (SA очень толст и неповоротлив).
> Спасибо за ответ. Выложил немного отладочной информации:
> лог: https://paste.ee/p/1dxmR
> бактрейс: https://paste.ee/p/Jxip5
> Впринципе, если проблема действительно в окружении дебиана, то попробую собрать статически
> на какой-нибудь убунте и потом перенести обратно. Очень уж понравилась ваша
> программа - для маленького сервера альтернатив и нет (SA очень толст
> и неповоротлив).Спасибо, я воспроизвел проблему. Вот этот патч ее у меня исправил: https://github.com/vstakhov/rspamd/commit/c6836066bd90451f97...
Кстати, rspamd очень плохо оптимизирован по 32-х битные системы, поэтому там очень многое будет работать медленно. В принципе, можно подумать и решить эту проблему тоже.
Только что проверил в qemu - отлично работает. Выражаю вам благодарность за столь оперативное решение проблемы!То что медленно - не страшно. У меня сервер маленький, всего на 5 человек. Да и арм сами по себе не могут похвастаться большой производительностью. Но даже при всем этом, работает разы быстрее SA и легче настраивается.