После четырёх месяцев разработки доступны (https://rspamd.com/announce/2016/11/21/rspamd-1.4.0.html) новые релизы Rspamd 1.4 (https://rspamd.com/) и Rmilter 1.10 (https://rspamd.com/rmilter/), в которых появилась поддержка пулов соединений с Redis, добавлены новые модули, улучшена поддержка нейронных сетей, применён алгоритм сжатия zstd для протокола и реализованы многие другие важные усовершенствования.
Rspamd - это система фильтрации спама для электронной почты, написанная на языках C и Lua в качестве более быстрой замены SpamAssassin, ориентированная на применение в крупных почтовых кластерах. Rspamd поддерживает практически все возможности, реализованные в SpamAssassin, и имеет ряд особенностей, позволяющих фильтровать почту в среднем в 10 раз быстрее, чем SpamAssassin, а также обеспечивать лучшее качество фильтрации. Правила для выявления признаков спама отличаются гибкостью и в простейшем виде могут содержать регулярные выражения, а в более сложных ситуациях могут оформляться на языке Lua. Расширение функциональности и добавление новых типов проверок реализуется через модули, которые могут создаваться на языках Си и Lua. Например, доступны модули для проверки отправителя с использованием SPF, подтверждения домена отправителя через DKIM, формирования запросов в списки DNSBL. Для упрощения настройки, создания правил и отслеживания статистики предоставляется административный web-интерфейс.
Основные новшества:
- Пул соединений с Redis. Rspamd теперь может подключаться к Redis, используя пул постоянных соединений. Эта функция не требует каких-либо специальных настроек и позволяет повторное использование существующих соединений, улучшающих профиль нагрузки для Redis.- Новый плагин классификации с использованием нейросетей. Добавлен плагин для использования и обучения нейросетей, сохраняющий данные в Redis. Данный плагин позволяет кластеризовать результаты фильтров для более точной оценки потока писем. Использование Redis позволило распределять обучение и данные нейросетей по всему кластеру сканеров Rspamd.
- Улучшение байесовского статистического классификатора. Rspamd теперь использует больше метаданных для оценки вероятности спама. С результами тестирования производительности классификатора Rspamd в сравнении с другими спам-фильтрами можно познакомиться в данной статье (https://rspamd.com/misc/2016/10/14/bayes-performance.html).
- Новый плагин проверки сообщений антивирусами. Rspamd теперь умеет проверять сообщения на наличие вирусов с помощью сторонних антивирусов. Этот модуль предоставляет ряд функций:
- Работа с различными типами антивирусных систем: ClamAV, Sophos и F-Prot
- Поддержка пользовательских шаблонов (например, экспериментальные базы данных для ClamAV)
- Поддержка кэширования результатов
- Проверка только писем с вложениями, чтобы сохранить ресурсы антивируса
- Белые списки, ограничения на размер и пользовательские скрипты оценки результатов- Плагин проверки MX записей. Rspamd теперь может проверить работоспособность MX отправителя для сканированных сообщений с помощью нового плагина проверки MX (https://rspamd.com/modules/mx_check.html). Этот плагин полезен для защиты от сообщений с некорректными обратными путями (например, когда спам рассылается с ботнета, который не в состоянии принять ответ на письмо).
- Поддержка компрессии в протоколе. Rmilter и Rspamd теперь поддерживают сжатие передаваемых данных алгоритмом zstd (https://zstd.net). Этот алгоритм является быстрым и эффективным для уменьшения загрузки процессора и сети при передаче данных. Zstd также используется для хранения больших объемов данных в Redis (например, нейронных сетей).
- Переработана система обработки ошибок DNS в SPF, DKIM и DMARC.
Rspamd теперь умеет работать с временными ошибками при выполнении связанных с DNS проверками, например, DKIM, DMARC или SPF. Существуют специальные символы для представления как временных, так и постоянных ошибок для этих плагинов.- Адаптивные и пользовательские лимиты. Модуль ratelimit (https://rspamd.com/modules/ratelimit.html) теперь поддерживает адаптивные лимиты, то есть, ограничения могут быть ужесточены для неизвестных или "плохих" отправителей, а для известных отправителей с хорошей репутацией - наоборот, расширены. Кроме этого, данные модуль поддерживает с новой версии пользовательские скрипты для создания собственных лимитов.
- Мониторинг ресурсов. В новой версии Rspamd получил поддержку проверки состояния внешних сервисов, например, DNS листов. В этом режиме Rspamd проверяет, что DNSBL доступен и что он не заблокировал все адреса (что иногда приводит к курьезным ситуациям). Если эти проверки не проходят, то такой ресурс на время игнорируется (до следующей проверки).
- Redis-бэкенд для fuzzy хешей. Начиная с Rspamd 1.4, можно хранить нечеткие хэшей в Redis. Это хранилище является более быстрым и масштабируемым, чем SQLite. Утилита "rspamadm" теперь умеет конвертировать хеши из хранилища SQLite в Redis.
- Экспорт данных в graphite. В новой версии Rspamd умеет сохранять статистику, передавая данные внешней системе мониторинга (пока поддерживается только graphite). Также возможен экспорт данных в Redis pub/sub и Yandex Clickhouse (экспериментальный плагин).
- Динамическая конфигурация в Redis. Эта функция полезна, когда вам нужно управлять несколькими экземплярами Rspamd централизованно. Пока что динамическая конфигурация ограничивается настройкой весов символов, действий и отключения определенных проверок. В будущем эти функции планируется расширить.
- Настройки пользователей в Redis. Настройки пользователя (https://rspamd.com/doc/configuration/settings.html) теперь можно загружать из Redis. Это полезно, когда пользователей много и они часто обновляются. В таком случае нет необходимости каждый раз загружать настройки для всех пользователей.
- Кольцевой буфер ошибок. Rspamd теперь умеет сохранять ошибки работы в кольцевой буфер. Этот буфер отображается в web интерфейсе и позволяет быстро определить, если в работе Rspamd возникает какая-то проблема.
- Сообщения для MTA. Rspamd теперь умеет передавать сообщение, которое 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-компрессия- Улучшения веб-интерфейса. Новая версия Rspamd включает в себя ряд изменений в веб-интерфейсе:
- Новая закладка настройки символов
- Таблица последних ошибок сканера
- Улучшена загрузка вкладок
- Пароли по умолчанию теперь нельзя применять для доступа к web-интерфейсуURL: https://rspamd.com/announce/2016/11/21/rspamd-1.4.0.html
Новость: http://www.opennet.dev/opennews/art.shtml?num=45539
годнота
Годно, нужно, одобряем-с.
Блин без вашего отобрения следующего релиза не было бы :D
А теперь по теме, кто пользовался поделитесь впечатлениями
Пользовался, Rspamd фильтровал спам намного лучше чем SpamAssassin.
Но на самом деле хрен знает. Может просто не умею готовить SpamAssassin...
https://rspamd.com/modules/mx_check.html - error 404
кто положил сервера, признавайтесь
Рекомендую Iredmail. Там уже встроено.
Встроен там Spamassassin, как и в большинстве других проектов типа "почта из коробки". К сожалению, у меня не хватает времени заниматься в должной мере продвижением Rspamd в данные системы. Единственной системой с Rspamd из коробки является, насколько мне известно, mailu (https://mailu.io). Но рекоммендовать ее я не могу - сам не пользовался.
Возможно ли с использованием Rspamd делать/сделать/реализовать логирование проходящей через фильтр почты, аналогичное amavis-у? Там в таблицы пишутся записи о каждом прошедшем письме, с сабжектами и перечнем получателей. Это можно использовать для контроля за ящиками на предмет угона аккаунта.
> Возможно ли с использованием Rspamd делать/сделать/реализовать логирование проходящей
> через фильтр почты, аналогичное amavis-у? Там в таблицы пишутся записи о
> каждом прошедшем письме, с сабжектами и перечнем получателей. Это можно использовать
> для контроля за ящиками на предмет угона аккаунта.Можно. Я для этого писал плагин для Clickhouse (https://clickhouse.yandex). Но пока я этот плагин еще не включал в состав Rspamd, так как он еще не доведен до конца. Ну а написать то же самое для Redis pub/sub вообще не составляет проблем. Основной вопрос, чем вы будете эти данные анализировать.
>> Возможно ли с использованием Rspamd делать/сделать/реализовать логирование проходящей
>> через фильтр почты, аналогичное amavis-у? Там в таблицы пишутся записи о
>> каждом прошедшем письме, с сабжектами и перечнем получателей. Это можно использовать
>> для контроля за ящиками на предмет угона аккаунта.
> Можно. Я для этого писал плагин для Clickhouse (https://clickhouse.yandex). Но пока я
> этот плагин еще не включал в состав Rspamd, так как он
> еще не доведен до конца. Ну а написать то же самое
> для Redis pub/sub вообще не составляет проблем. Основной вопрос, чем вы
> будете эти данные анализировать.А когда будет плагин для ClickHouse включен в основной состав, или возможно ли как-то отдельно поставить?
>[оверквотинг удален]
>>> через фильтр почты, аналогичное amavis-у? Там в таблицы пишутся записи о
>>> каждом прошедшем письме, с сабжектами и перечнем получателей. Это можно использовать
>>> для контроля за ящиками на предмет угона аккаунта.
>> Можно. Я для этого писал плагин для Clickhouse (https://clickhouse.yandex). Но пока я
>> этот плагин еще не включал в состав Rspamd, так как он
>> еще не доведен до конца. Ну а написать то же самое
>> для Redis pub/sub вообще не составляет проблем. Основной вопрос, чем вы
>> будете эти данные анализировать.
> А когда будет плагин для ClickHouse включен в основной состав, или возможно
> ли как-то отдельно поставить?Я его уже добавил в репозиторий. Будет в составе 1.4.1, который я планирую выпустить довольно скоро.
>>[оверквотинг удален]
>> А когда будет плагин для ClickHouse включен в основной состав, или возможно
>> ли как-то отдельно поставить?
> Я его уже добавил в репозиторий. Будет в составе 1.4.1, который я
> планирую выпустить довольно скоро.https://rspamd.com/doc/modules/clickhouse.html - можно пока посмотреть, как его использовать.
> https://rspamd.com/doc/modules/clickhouse.html - можно пока посмотреть, как его использовать.Спасибо! Ждем обновлений.
а смысл ? легче логи парсить, а вашими темпами он скоро обрастётся и перерастёт в недоделанный почтовый сервер.
> а смысл ? легче логи парсить, а вашими темпами он скоро обрастётся
> и перерастёт в недоделанный почтовый сервер.Парсить логи - это костыль.
Писать из приложения - решение.Про смысл я написал.
ну и как укладывается понятие трекинга почтового трафика с системой фильтрации от спама ?
может быть завтра ещё и красивые графики потребуются для всего этого ? тоже будете накручивать на rsmapd ? А это предложение (Это можно использовать для контроля за ящиками на предмет угона аккаунта.) вообще не укладывается ни в какие рамки. Вы ещё прикрутите к ситеме фильтрации спама систему анализа событий связанных с инфобезом (типа SIEM https://en.wikipedia.org/wiki/Security_information_and_event...)пс: если пишите изначально систему для себя и под себя - не стоит ею делиться.
> Парсить логи - это костыль.ага, а парсить мильтер не костыль?
> Писать из приложения - решение.
писать куда ? тока в редиску? - а ведь там выше уважаемый в мускул их хотел, и чё ему делать ? думаю догадались - легче парсить данные и делать с ними что угодно. А ваше приложение пусть лучше занимается той задачей для которой оно предназначено.
> Про смысл я написал.и собственно последний комент, - микроскопом гвозди тоже можно забивать (с-сохранены).
Уважаемый, сходите к специалисту, пусть он вам успокоительное выпишет. Хорошо?Предлагаю вам лично vstakhov написать про микроскоп и гвозди в ответ на комментарий #13.
Три коментария подряд по вашему расшатанная психика? А микроскопом гвозди забивать или из буханки хлеба троллейбус строить, что тогда по вашему?Может все же все сразу, прикрутим, чтоб рспамд еще и 25 порт сразу слушал и письма отправлял.
Пс по делу: DKIM модуль тянет ключи по DNSSEC?
> Три коментария подряд по вашему расшатанная психика? А микроскопом гвозди забивать или
> из буханки хлеба троллейбус строить, что тогда по вашему?
> Может все же все сразу, прикрутим, чтоб рспамд еще и 25 порт
> сразу слушал и письма отправлял.
> Пс по делу: DKIM модуль тянет ключи по DNSSEC?Что значит "по DNSSEC"? В Rspamd в секции DNS есть опция `enable_dnssec`, но она не включена по умолчанию, потому что DNSSEC сломан в огромном числе рекурсоров и авторитарных DNS серверов. Вряд ли эта ситуация изменится в будущем.
>>Что значит "по DNSSEC"?а чё тут не ясного то ? DKIM ключи, я считаю, должны исключительно получаться только over DNSSEC, а то, что данный механизм ещё поголовно не внедрён не даёт оснований утверждать мол он сломан, кривой и зачем вообще нужен.
>>потому что DNSSEC сломан в огромном числе рекурсоров и авторитарных DNS серверов.
Сломан потому, что неправильно настроили, это не означает что сам механизм не работает. В деплойменте DNSSEC явно написано что будет при неправильной конфигурации. Не раз уже сталкивался с такими доменами, вообще не резолвятся потомучто не проходят валидацию из-за кривизны рук соответствующих админов и потакать таким админам нельзя.
>>Вряд ли эта ситуация изменится в будущем.
Могу скинуть пару ссылочек о статистике зон перешедших на DNSSEC. И ситуация измениться если перестаните потакать и отрубать по дефолту DNSSEC. Из ваших слов следует, что вам всёравно на безопасность. В принципе вопрос лишь был в том, что, поддерживает ли rspamd получение DKIM ключей овер DNSSEC - да поддерживает (отрублен по дефолту).
>[оверквотинг удален]
> работает. В деплойменте DNSSEC явно написано что будет при неправильной конфигурации.
> Не раз уже сталкивался с такими доменами, вообще не резолвятся потомучто
> не проходят валидацию из-за кривизны рук соответствующих админов и потакать таким
> админам нельзя.
>>>Вряд ли эта ситуация изменится в будущем.
> Могу скинуть пару ссылочек о статистике зон перешедших на DNSSEC. И ситуация
> измениться если перестаните потакать и отрубать по дефолту DNSSEC. Из ваших
> слов следует, что вам всёравно на безопасность. В принципе вопрос лишь
> был в том, что, поддерживает ли rspamd получение DKIM ключей овер
> DNSSEC - да поддерживает (отрублен по дефолту).Как правило, с возрастом юношеский максимализм проходит. Возможно, и у вас пройдет.
> Как правило, с возрастом юношеский максимализм проходит. Возможно, и у вас пройдет.Тут уместно было бы указать мой точный возраст, ибо вы выставляетесь фуфловщиком (думаю, разьяснять кто такой фуфловщик, не стоит)
Обновил вчера утром rspamd до версии 1.4 (FreeBSD). В логах Exim (4.87) стали появляться сообщения "cannot parse spamd [127.0.0.1]:11333, output: -1". Exim пропускал такие письма с неизвестным ему спам-рейтингом. К вечеру таких сообщений набралось порядка 900. Откатился на rspamd-1.3.5_1. Все пришло в норму.
> Обновил вчера утром rspamd до версии 1.4 (FreeBSD). В логах Exim (4.87)
> стали появляться сообщения "cannot parse spamd [127.0.0.1]:11333, output: -1". Exim пропускал
> такие письма с неизвестным ему спам-рейтингом. К вечеру таких сообщений набралось
> порядка 900. Откатился на rspamd-1.3.5_1. Все пришло в норму.К сожалению, exim единственный, кто использует старый протокол совместимости с SA. Все остальные давно используют HTTP/JSON. Ну и у меня нет никого, кто бы тестировал работу exim. В идеале нужно посмотреть дамп rspamd <-> exim для таких случаев и исправить проблему...
Тем более странно, поскольку Exim очень распространен. Придется ждать новых версий Exim'а. Спасибо за информацию!
> Тем более странно, поскольку Exim очень распространен. Придется ждать новых версий Exim'а.
> Спасибо за информацию!Я постараюсь исправить эту проблему к 1.4.1. Извиняюсь за неудобства.
Никаких претензий. Исключительно благодарность за труды и старания!
Гм, хотя нам пока не удалось воспроизвести проблему. Она возникает на каких-то конкретных письмах или случайно?
Такой объем писем не анализировал на предмет поиска чего-то общего. На первый взгляд их ничто не объединяет, кроме указанной проблемы. Но могу покопаться в логах Exima'а. Как вариант, попробовать поставить 1.4.0 еще раз. Если это поможет, предоставлю логи Exim и Rspamd.
> Такой объем писем не анализировал на предмет поиска чего-то общего. На первый
> взгляд их ничто не объединяет, кроме указанной проблемы. Но могу покопаться
> в логах Exima'а. Как вариант, попробовать поставить 1.4.0 еще раз. Если
> это поможет, предоставлю логи Exim и Rspamd.А что пишет Rspamd в лог в это же время?
Вновь запустил версию 1.4.0. Появились сообщения в логах Exim. Выдержка из логов Rspamd:
2016-11-23 22:45:06 #19659(normal) <6d0b0c>; task; accept_socket: accepted connection from 127.0.0.1 port 41283, task ptr: 000000001907C2F0
2016-11-23 22:45:06 #19659(normal) <6d0b0c>; task; rspamd_message_parse: mailbox input detected, enable workaround
2016-11-23 22:45:06 #19659(normal) <6d0b0c>; task; rspamd_message_parse: loaded message; id: <0.0.2B2.EA5.1D245C20C867300.8B5A@vmta-h-30.lstrk.net>; queue-id: <1c9dTd-0005D3-Qg>; size: 36204; checksum: <6743ecc6e96015b671d2b74e999a7421>
2016-11-23 22:45:06 #19653(main) <e59465>; main; rspamd_cld_handler: normal process 19659 terminated abnormally by signal: 11 but NOT created core file
...2016-11-23 22:45:42 #19656(normal) <35f022>; task; accept_socket: accepted connection from 127.0.0.1 port 17995, task ptr: 000000001907C0D0
2016-11-23 22:45:42 #19656(normal) <35f022>; task; rspamd_message_parse: mailbox input detected, enable workaround
2016-11-23 22:45:42 #19656(normal) <35f022>; task; rspamd_text_to_utf8: converted from WINDOWS-1251 to UTF-8 inlen: 541, outlen: 904
2016-11-23 22:45:42 #19656(normal) <35f022>; task; rspamd_text_to_utf8: converted from WINDOWS-1251 to UTF-8 inlen: 6299, outlen: 6660
2016-11-23 22:45:42 #19656(normal) <35f022>; task; rspamd_message_parse: loaded message; id: <36CC8EE7D0040A89555019ACA86BBB18@motut.ru>; queue-id: <1c9dUE-0005CX-1Q>; size: 10288; checksum: <cdc495d9c74bb7ce9ab1b606bb0bba41>
2016-11-23 22:45:42 #19653(main) <e59465>; main; rspamd_cld_handler: normal process 19656 terminated abnormally by signal: 10 but NOT created core file
...2016-11-23 22:45:44 #20092(normal) <c2725f>; task; accept_socket: accepted connection from 127.0.0.1 port 44678, task ptr: 000000001907C0D0
2016-11-23 22:45:44 #20092(normal) <c2725f>; task; rspamd_message_parse: mailbox input detected, enable workaround
2016-11-23 22:45:44 #20092(normal) <c2725f>; task; rspamd_message_parse: loaded message; id: <E1c9dTx-0003c0-Ta@maildroid.hu>; queue-id: <1c9dUF-0005Ep-Sc>; size: 301689; checksum: <8d69fa01345d7e4009478e0f0b1d4ebd>
2016-11-23 22:45:44 #19653(main) <e59465>; main; rspamd_cld_handler: normal process 20092 terminated abnormally by signal: 10 but NOT created core file
> Вновь запустил версию 1.4.0. Появились сообщения в логах Exim. Выдержка из логов
> Rspamd:
> 2016-11-23 22:45:06 #19653(main) <e59465>; main; rspamd_cld_handler: normal process
> 19659 terminated abnormally by signal: 11 but NOT created core fileЭто неприятно. А можете получить core file и снять с него трейс: https://rspamd.com/doc/faq.html#how-to-figure-out-why-rspamd...
[root|/coreland ] $ gdb -c rspamd-1.4.0-.core
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd".
Core was generated by `rspamd-1.4.0'.
Program terminated with signal 11, Segmentation fault.
#0 0x000000000052fce0 in ?? ()
(gdb) bt full
#0 0x000000000052fce0 in ?? ()
No symbol table info available.
#1 0x0000000000000000 in ?? ()
No symbol table info available.
> [root|/coreland ] $ gdb -c rspamd-1.4.0-.core
> No symbol table info available.Видимо, надо собрать порт rspamd с символами:
make clean deinstall reinstal DEBUG_FLAGS="-g -O0" WITH_DEBUG=yes
Ну и была история с тем, что gdb во фре не находил автоматически исполняемый файл по корке, так что gdb надо запускать как-то так:
gdb /usr/local/bin/rspamd -c rspamd-1.4.0-.core
12:59:46[root|/coreland ] $ gdb /usr/local/bin/rspamd -c rspamd-1.4.0-.core
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...(no debugging symbols found)...warning: core file may not match specified executable file.
Core was generated by `rspamd-1.4.0'.
Program terminated with signal 11, Segmentation fault.
#0 0x00000000005eaa60 in ?? ()
(gdb) bt full
#0 0x00000000005eaa60 in ?? ()
No symbol table info available.
#1 0x0000000400000005 in ?? ()
No symbol table info available.
#2 0x000000001947a360 in ?? ()
No symbol table info available.
#3 0x0000002000000028 in ?? ()
No symbol table info available.
#4 0x00000000191c8724 in ?? ()
No symbol table info available.
#5 0x00007fffffffd920 in ?? ()
No symbol table info available.
#6 0x00000000108914ac in ?? ()
No symbol table info available.
#7 0x00000000108913b8 in ?? ()
No symbol table info available.
#8 0x00000000ffffffff in ?? ()
No symbol table info available.
#9 0x0000000010891f70 in ?? ()
No symbol table info available.
#10 0x00000000004beab0 in fin_redirectors_list ()
No symbol table info available.
#11 0x0000000000476362 in rspamd_lua_traceback ()
No symbol table info available.
#12 0x0000000000476890 in rspamd_lua_traceback ()
No symbol table info available.
#13 0x00000000004bec29 in fin_redirectors_list ()
No symbol table info available.
#14 0x0000000803542396 in ?? ()
No symbol table info available.
#15 0xfffffffb1089a128 in ?? ()
No symbol table info available.
#16 0x0000000019494fb8 in ?? ()
No symbol table info available.
#17 0x0000000800000000 in ?? ()
No symbol table info available.
#18 0x18c22af010891378 in ?? ()
No symbol table info available.
#19 0x0000000000000000 in ?? ()
No symbol table info available.
(gdb)
> 12:59:46[root|/coreland ] $ gdb /usr/local/bin/rspamd -c rspamd-1.4.0-.core
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 Free Software Foundation, Inc.Так, символы появились, но теперь не работает сам gdb. А что если попробовать gdb из портов (там он хотя бы не 12-ти летней давности) или lldb (хотя его устанавливать более трудно во фре)?
>> 12:59:46[root|/coreland ] $ gdb /usr/local/bin/rspamd -c rspamd-1.4.0-.core
>> GNU gdb 6.1.1 [FreeBSD]
>> Copyright 2004 Free Software Foundation, Inc.
> Так, символы появились, но теперь не работает сам gdb. А что если
> попробовать gdb из портов (там он хотя бы не 12-ти летней
> давности) или lldb (хотя его устанавливать более трудно во фре)?14:56:09[root|/coreland ] $ /usr/local/bin/gdb /usr/local/bin/rspamd -c rspamd-1.4.0-.core
GNU gdb (GDB) 7.11.1 [GDB v7.11.1 for FreeBSD]
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-portbld-freebsd9.3".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/local/bin/rspamd...(no debugging symbols found)...done.warning: core file may not match specified executable file.
[New LWP 101111]
Core was generated by `rspamd-1.4.0'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00000000005eaa60 in ?? ()
(gdb) bt full
#0 0x00000000005eaa60 in ?? ()
No symbol table info available.
#1 0x0000000400000005 in ?? ()
No symbol table info available.
#2 0x000000001947a360 in ?? ()
No symbol table info available.
#3 0x0000002000000028 in ?? ()
No symbol table info available.
#4 0x00000000191c8724 in ?? ()
No symbol table info available.
#5 0x00007fffffffd920 in ?? ()
No symbol table info available.
#6 0x00000000108914ac in ?? ()
No symbol table info available.
#7 0x00000000108913b8 in ?? ()
No symbol table info available.
#8 0x00000000ffffffff in ?? ()
No symbol table info available.
#9 0x0000000010891f70 in ?? ()
No symbol table info available.
#10 0x00000000004beab0 in ?? ()
No symbol table info available.
#11 0x0000000000476362 in ?? ()
No symbol table info available.
#12 0x0000000000476890 in ?? ()
No symbol table info available.
#13 0x00000000004bec29 in ?? ()
No symbol table info available.
#14 0x0000000803542396 in ?? ()
No symbol table info available.
#15 0xfffffffb1089a128 in ?? ()
No symbol table info available.
#16 0x0000000019494fb8 in ?? ()
No symbol table info available.
#17 0x0000000800000000 in ?? ()
No symbol table info available.
#18 0x18c22af010891378 in ?? ()
No symbol table info available.
#19 0x0000000000000000 in ?? ()
No symbol table info available.
(gdb)
>>> 12:59:46[root|/coreland ] $ gdb /usr/local/bin/rspamd -c rspamd-1.4.0-.core
>>> GNU gdb 6.1.1 [FreeBSD]
>>> Copyright 2004 Free Software Foundation, Inc.
>> Так, символы появились, но теперь не работает сам gdb. А что если
>> попробовать gdb из портов (там он хотя бы не 12-ти летней
>> давности) или lldb (хотя его устанавливать более трудно во фре)?А сейчас выдало вот что:
15:11:48[root|/coreland ] $ /usr/local/bin/gdb /usr/local/bin/rspamd -c rspamd-1.4.0-.core
GNU gdb (GDB) 7.11.1 [GDB v7.11.1 for FreeBSD]
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-portbld-freebsd9.3".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/local/bin/rspamd...done.
[New LWP 101849]
Core was generated by `rspamd-1.4.0'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 lc_len (node=<optimized out>, pos=<error reading variable: Cannot access memory at address 0x0>, node=<optimized out>)
at /usr/ports/mail/rspamd/work/rspamd-1.4.0/contrib/lc-btrie/btrie.c:855
855 return node->lc_flags & LC_FLAGS_LEN_MASK;
(gdb) bt full
#0 lc_len (node=<optimized out>, pos=<error reading variable: Cannot access memory at address 0x0>, node=<optimized out>)
at /usr/ports/mail/rspamd/work/rspamd-1.4.0/contrib/lc-btrie/btrie.c:855
int_plen = <error reading variable int_plen (Cannot access memory at address 0x4)>
int_pfx = <error reading variable int_pfx (Cannot access memory at address 0x0)>
int_node = <optimized out>
lc_node = 0x1
end = <optimized out>
end = <optimized out>
pfx = <optimized out>
plen = <optimized out>
#1 btrie_lookup (btrie=<optimized out>, prefix=0x191c8814 "", len=32) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/contrib/lc-btrie/btrie.c:1409
No locals.
Backtrace stopped: Cannot access memory at address 0x7fffffffd768И вот это:
15:12:55[root|/coreland ] $ gdb /usr/local/bin/rspamd -c rspamd-1.4.0-.core
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...warning: core file may not match specified executable file.
Core was generated by `rspamd-1.4.0'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/local/lib/libfann.so.2...done.
Loaded symbols for /usr/local/lib/libfann.so.2
Reading symbols from /lib/libutil.so.9...done.
Loaded symbols for /lib/libutil.so.9
Reading symbols from /usr/local/lib/libglib-2.0.so.0...done.
Loaded symbols for /usr/local/lib/libglib-2.0.so.0
Reading symbols from /usr/local/lib/libintl.so.8...done.
Loaded symbols for /usr/local/lib/libintl.so.8
Reading symbols from /usr/local/lib/libgmodule-2.0.so.0...done.
Loaded symbols for /usr/local/lib/libgmodule-2.0.so.0
Reading symbols from /usr/local/lib/libpcre.so.1...done.
Loaded symbols for /usr/local/lib/libpcre.so.1
Reading symbols from /usr/local/lib/libgmime-2.6.so.0...done.
Loaded symbols for /usr/local/lib/libgmime-2.6.so.0
Reading symbols from /usr/local/lib/libgio-2.0.so.0...done.
Loaded symbols for /usr/local/lib/libgio-2.0.so.0
Reading symbols from /usr/local/lib/libgobject-2.0.so.0...done.
Loaded symbols for /usr/local/lib/libgobject-2.0.so.0
Reading symbols from /usr/local/lib/libgthread-2.0.so.0...done.
Loaded symbols for /usr/local/lib/libgthread-2.0.so.0
Reading symbols from /usr/local/lib/libevent-2.0.so.5...done.
Loaded symbols for /usr/local/lib/libevent-2.0.so.5
Reading symbols from /usr/local/lib/libsqlite3.so.0...done.
Loaded symbols for /usr/local/lib/libsqlite3.so.0
Reading symbols from /usr/local/lib/libiconv.so.2...done.
Loaded symbols for /usr/local/lib/libiconv.so.2
Reading symbols from /usr/local/lib/libssl.so.9...done.
Loaded symbols for /usr/local/lib/libssl.so.9
Reading symbols from /usr/local/lib/libcrypto.so.9...done.
Loaded symbols for /usr/local/lib/libcrypto.so.9
Reading symbols from /usr/lib/libmagic.so.4...done.
Loaded symbols for /usr/lib/libmagic.so.4
Reading symbols from /lib/libm.so.5...done.
Loaded symbols for /lib/libm.so.5
Reading symbols from /usr/local/lib/libluajit-5.1.so.2...done.
Loaded symbols for /usr/local/lib/libluajit-5.1.so.2
Reading symbols from /usr/local/lib/rspamd/librspamd-actrie.so...done.
Loaded symbols for /usr/local/lib/rspamd/librspamd-actrie.so
Reading symbols from /lib/libthr.so.3...done.
Loaded symbols for /lib/libthr.so.3
Reading symbols from /lib/libc.so.7...done.
Loaded symbols for /lib/libc.so.7
Reading symbols from /usr/local/lib/libicui18n.so.58...done.
Loaded symbols for /usr/local/lib/libicui18n.so.58
Reading symbols from /lib/libz.so.6...done.
Loaded symbols for /lib/libz.so.6
Reading symbols from /usr/local/lib/libffi.so.6...done.
Loaded symbols for /usr/local/lib/libffi.so.6
Reading symbols from /lib/libgcc_s.so.1...done.
Loaded symbols for /lib/libgcc_s.so.1
Reading symbols from /usr/local/lib/libicuuc.so.58...done.
Loaded symbols for /usr/local/lib/libicuuc.so.58
Reading symbols from /usr/local/lib/libicudata.so.58...
warning: Lowest section in /usr/local/lib/libicudata.so.58 is .hash at 0000000000000120
done.
Loaded symbols for /usr/local/lib/libicudata.so.58
Reading symbols from /usr/lib/libstdc++.so.6...done.
Loaded symbols for /usr/lib/libstdc++.so.6
Reading symbols from /usr/lib/libsupc++.so.1...done.
Loaded symbols for /usr/lib/libsupc++.so.1
Reading symbols from /libexec/ld-elf.so.1...done.
Loaded symbols for /libexec/ld-elf.so.1
#0 btrie_lookup (btrie=<value optimized out>, prefix=0x191c9074 "MТв\231", len=32) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/contrib/lc-btrie/btrie.c:855
855 return node->lc_flags & LC_FLAGS_LEN_MASK;
[New Thread 805807400 (LWP 100651/<unknown>)]
[New LWP 101712]
(gdb) bt full
#0 btrie_lookup (btrie=<value optimized out>, prefix=0x191c8664 "WЪ", len=32) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/contrib/lc-btrie/btrie.c:855
No locals.
Cannot access memory at address 0x7fffffffd758
Current language: auto; currently minimal
(gdb)
Наверное, проблема как-то связана с ip maps. Вы используете какие-то собственные списки ip/сетей?
> Наверное, проблема как-то связана с ip maps. Вы используете какие-то собственные списки
> ip/сетей?Добавлял несколько списков:
multimap {
whitelist_ip { type = "ip"; map = "$CONFDIR/whitelist-ip.map"; symbol = "WHITELIST_IP"; description = "WHITELIST_IP list";}
whitelist_from { type = "from"; map = "$CONFDIR/whitelist-sender.map"; symbol = "WHITELIST_FROM"; description = "WHITELIST_SENDER list";}
whitelist_domain { type = "from"; pattern = @(.+)>?$; map = "$CONFDIR/whitelist-domain.map"; symbol = "WHITELIST_FROM"; description = "WHITELIST_DOMAIN list";}
blacklist_from { type = "from"; map = "$CONFDIR/blacklist-sender.map"; symbol = "BLACKLIST_FROM"; description = "BLACKLIST_SENDER list";}
blacklist_domain { type = "from"; pattern = @(.+)>?$; map = "$CONFDIR/blacklist-domain.map"; symbol = "BLACKLIST_FROM"; description = "BLACKLIST_DOMAIN list";}
}whitelist-ip.map сейчас пустой
Надо попробовать удалить все, связанное с ip. Хотя проблема очень странная.
> Надо попробовать удалить все, связанное с ip. Хотя проблема очень странная.Закомментировал настройки с IP в multimap. Вот что получилось:
09:35:13[root|/coreland] $ /usr/local/bin/gdb /usr/local/bin/rspamd -c rspamd-1.4.0-.core
GNU gdb (GDB) 7.11.1 [GDB v7.11.1 for FreeBSD]
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-portbld-freebsd9.3".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/local/bin/rspamd...done.
[New LWP 100174]
Core was generated by `rspamd-1.4.0'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0000000000000000 in ?? ()
(gdb) bt full
#0 0x0000000000000000 in ?? ()
No symbol table info available.
#1 0x0000000800f0c5b4 in g_hash_table_lookup () from /usr/local/lib/libglib-2.0.so.0
No symbol table info available.
#2 0x00000000004bee32 in lua_map_get_key (L=0x10891378) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/lua/lua_map.c:593
map = 0x805b4cd70
radix = 0x10891378
addr = 0x0
key = 0x18d78f80 "t.tairov@bigtelecom.ru"
value = 0x0
ud = 0x1089b020
len = 22
key_num = 0
ret = 0
#3 0x0000000803542396 in ?? () from /usr/local/lib/libluajit-5.1.so.2
No symbol table info available.
#4 0x000000080354d706 in lua_pcall () from /usr/local/lib/libluajit-5.1.so.2
No symbol table info available.
#5 0x000000000049d341 in lua_metric_symbol_callback (task=0x1947c090, ud=0x805b4ce30) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/lua/lua_config.c:828
cd = 0x805b4ce30
ptask = 0x18d80da0
level = 1
nresults = 6525466
err_idx = 1
L = 0x10891378
tb = 0x3000000028
#6 0x00000000004f3e01 in rspamd_symbols_cache_check_symbol (task=0x1947c090, cache=0x80584b0b0, item=0x805b4a8e0, checkpoint=0x805b5b2a0, total_diff=0x7fffffffdb00,
pr=0.80056117747986222) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/libserver/symbols_cache.c:1215
pending_before = 1
pending_after = 1
t1 = 0
t2 = 0
diff = 2.5663350655061037e-317
ptask = 0x4028000000000000
L = 0x4028000000000000
check = 1
slow_diff_limit = 100000
#7 0x00000000004f328d in rspamd_symbols_cache_process_symbols (task=0x1947c090, cache=0x80584b0b0, stage=16)
at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/libserver/symbols_cache.c:1601
item = 0x805b4a8e0
checkpoint = 0x805b5b2a0
i = 229
total_microseconds = 0
---Type <return> to continue, or q <return> to quit---
all_done = 1018167296
saved_priority = 0
max_microseconds = 300000
start_events_pending = 0
pr = 0.80056117747986222
#8 0x00000000004f30ab in rspamd_symbols_cache_process_symbols (task=0x1947c090, cache=0x80584b0b0, stage=16)
at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/libserver/symbols_cache.c:1569
item = 0x805b2e8a0
checkpoint = 0x805b5b2a0
i = 1
total_microseconds = 0
all_done = 1
saved_priority = -1340540165
max_microseconds = 300000
start_events_pending = 0
pr = 0.4299506743311734
#9 0x00000000004f6f58 in rspamd_task_process (task=0x1947c090, stages=16383) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/libserver/task.c:696
st = 16
ret = 1
stat_error = 0x0
#10 0x00000000004f73c6 in rspamd_task_process (task=0x1947c090, stages=16383) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/libserver/task.c:794
st = 8
ret = 1
stat_error = 0x0
#11 0x00000000004f73c6 in rspamd_task_process (task=0x1947c090, stages=16383) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/libserver/task.c:794
st = 4
ret = 1
stat_error = 0x0
#12 0x00000000004f73c6 in rspamd_task_process (task=0x1947c090, stages=16383) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/libserver/task.c:794
st = 2
ret = 1
stat_error = 0x0
#13 0x00000000004f73c6 in rspamd_task_process (task=0x1947c090, stages=16383) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/libserver/task.c:794
st = 1
ret = 1
stat_error = 0x0
#14 0x0000000000426974 in rspamd_worker_body_handler (conn=0x191aede0, msg=0x80582b920,
chunk=0x805a69010 "From MAILER-DAEMON Fri Nov 25 09:35:08 2016\nX-Envelope-From: <t.tairov@bigtelecom.ru>\nX-Envelope-To: torghimki@gmail.com\nReceived: from adfs.bigtelecom.ru ([87.255.0.101])\n\tby mx.bigtelecom.ru with es"..., len=7907) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/worker.c:263
task = 0x1947c090
ctx = 0x8058e1350
task_tv = {tv_sec = 8, tv_usec = 0}
guard_ev = 0x805b538c0
---Type <return> to continue, or q <return> to quit---
#15 0x00000000004646de in rspamd_http_on_message_complete (parser=0x805865050) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/libutil/http.c:947
conn = 0x191aede0
priv = 0x805865020
ret = 0
mode = (unknown: 421195232)
#16 0x00000000005dc797 in http_parser_execute (parser=0x805865050, settings=0x805865070,
data=0x805b56010 "From MAILER-DAEMON Fri Nov 25 09:35:08 2016\nX-Envelope-From: <t.tairov@bigtelecom.ru>\nX-Envelope-To: torghimki@gmail.com\nReceived: from adfs.bigtelecom.ru ([87.255.0.101])\n\tby mx.bigtelecom.ru with es"..., len=7907) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/contrib/http-parser/http_parser.c:1772
p = 0x805b57ef2 "\n"
header_field_mark = <optimized out>
header_value_mark = <optimized out>
url_mark = <optimized out>
status_mark = <optimized out>
c = <optimized out>
#17 0x0000000000462e22 in rspamd_http_event_handler (fd=42, what=2, ud=0x191aede0) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/libutil/http.c:1177
conn = 0x191aede0
priv = 0x805865020
pbuf = 0x805bf9a70
d = 0x805b56010 "From MAILER-DAEMON Fri Nov 25 09:35:08 2016\nX-Envelope-From: <t.tairov@bigtelecom.ru>\nX-Envelope-To: torghimki@gmail.com\nReceived: from adfs.bigtelecom.ru ([87.255.0.101])\n\tby mx.bigtelecom.ru with es"...
r = 7907
err = 0xe60fc6
#18 0x0000000802289f5e in event_base_loop () from /usr/local/lib/libevent-2.0.so.5
No symbol table info available.
#19 0x0000000000425dab in start_worker (worker=0x191a3200) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/worker.c:631
ctx = 0x8058e1350
lp = 0x8039b19d9 <close+57>
ltmp = 0x63a71c
#20 0x0000000000501e8e in rspamd_fork_worker (rspamd_main=0x8058e0080, cf=0x80580fdc0, index=3, ev_base=0x19177100)
at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/libserver/worker_util.c:618
wrk = 0x191a3200
rc = 0
rlim = {rlim_cur = 104857600, rlim_max = 104857600}
#21 0x0000000000425205 in spawn_worker_type (rspamd_main=0x8058e0080, ev_base=0x19177100, cf=0x80580fdc0) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/rspamd.c:513
i = 3
#22 0x0000000000423fe3 in spawn_workers (rspamd_main=0x8058e0080, ev_base=0x19177100) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/rspamd.c:585
cur = 0x8058223a0
ls = 0x190072a0
cf = 0x80580fdc0
p = 0x0
key = 15902184130714703162
bcf = 0x0
listen_ok = 1
---Type <return> to continue, or q <return> to quit---
seen_mandatory_workers = 0x19007220
cw = 0xffffffff
wrk = 0x246
i = 0
#23 0x000000000042269a in main (argc=1, argv=0x7fffffffeab8, env=0x7fffffffeaf8) at /usr/ports/mail/rspamd/work/rspamd-1.4.0/src/rspamd.c:1335
i = 1
res = 0
signals = {__sigaction_u = {__sa_handler = 0x0, __sa_sigaction = 0x0}, sa_flags = 0, sa_mask = {__bits = {0, 0, 0, 0}}}
sigpipe_act = {__sigaction_u = {__sa_handler = 0x1, __sa_sigaction = 0x1}, sa_flags = 0, sa_mask = {__bits = {4096, 0, 0, 0}}}
pworker = 0x8b59d0 <workers+48>
type = 101
control_addr = 0x805bf9800
ev_base = 0x19177100
term_ev = {ev_active_next = {tqe_next = 0x80089ac1d, tqe_prev = 0x803cad5e0 <atexit>}, ev_next = {tqe_next = 0x7fffffffe8c0, tqe_prev = 0x19177260},
ev_timeout_pos = {ev_next_with_common_timeout = {tqe_next = 0x8ffffffff, tqe_prev = 0x7fff00000001}, min_heap_idx = -1}, ev_fd = 15, ev_base = 0x19177100,
_ev = {ev_io = {ev_io_next = {tqe_next = 0x0, tqe_prev = 0x191c5840}, ev_timeout = {tv_sec = 140737488289792, tv_usec = 0}}, ev_signal = {ev_signal_next = {
tqe_next = 0x0, tqe_prev = 0x191c5840}, ev_ncalls = 0, ev_pncalls = 0x0}}, ev_events = 24, ev_res = 0, ev_flags = 128, ev_pri = 0 '\000',
ev_closure = 1 '\001', ev_timeout = {tv_sec = 0, tv_usec = 895}, ev_callback = 0x423290 <rspamd_term_handler>, ev_arg = 0x8058e0080}
int_ev = {ev_active_next = {tqe_next = 0x0, tqe_prev = 0x7fffffffe970}, ev_next = {tqe_next = 0x7fffffffe7b0, tqe_prev = 0x19177260}, ev_timeout_pos = {
ev_next_with_common_timeout = {tqe_next = 0xffffffff, tqe_prev = 0x68acf04}, min_heap_idx = -1}, ev_fd = 2, ev_base = 0x19177100, _ev = {ev_io = {
ev_io_next = {tqe_next = 0x0, tqe_prev = 0x191c5850}, ev_timeout = {tv_sec = 34422521856, tv_usec = 0}}, ev_signal = {ev_signal_next = {tqe_next = 0x0,
tqe_prev = 0x191c5850}, ev_ncalls = 0, ev_pncalls = 0x0}}, ev_events = 24, ev_res = 0, ev_flags = 128, ev_pri = 0 '\000', ev_closure = 1 '\001',
ev_timeout = {tv_sec = 140737488349552, tv_usec = 9127464}, ev_callback = 0x423290 <rspamd_term_handler>, ev_arg = 0x8058e0080}
cld_ev = {ev_active_next = {tqe_next = 0x0, tqe_prev = 0x409196}, ev_next = {tqe_next = 0x7fffffffe728, tqe_prev = 0x19177260}, ev_timeout_pos = {
ev_next_with_common_timeout = {tqe_next = 0x8ffffffff, tqe_prev = 0x1}, min_heap_idx = -1}, ev_fd = 20, ev_base = 0x19177100, _ev = {ev_io = {
ev_io_next = {tqe_next = 0x0, tqe_prev = 0x191c5870}, ev_timeout = {tv_sec = 94489280512, tv_usec = 0}}, ev_signal = {ev_signal_next = {tqe_next = 0x0,
tqe_prev = 0x191c5870}, ev_ncalls = 0, ev_pncalls = 0x0}}, ev_events = 24, ev_res = 0, ev_flags = 128, ev_pri = 0 '\000', ev_closure = 1 '\001',
ev_timeout = {tv_sec = 0, tv_usec = 4206264}, ev_callback = 0x423420 <rspamd_cld_handler>, ev_arg = 0x8058e0080}
hup_ev = {ev_active_next = {tqe_next = 0x8008b8800, tqe_prev = 0x8008b8c00}, ev_next = {tqe_next = 0x7fffffffe838, tqe_prev = 0x19177260}, ev_timeout_pos = {
ev_next_with_common_timeout = {tqe_next = 0x8ffffffff, tqe_prev = 0x8008b9c00}, min_heap_idx = -1}, ev_fd = 1, ev_base = 0x19177100, _ev = {ev_io = {
ev_io_next = {tqe_next = 0x0, tqe_prev = 0x191c5860}, ev_timeout = {tv_sec = 0, tv_usec = 0}}, ev_signal = {ev_signal_next = {tqe_next = 0x0,
tqe_prev = 0x191c5860}, ev_ncalls = 0, ev_pncalls = 0x0}}, ev_events = 24, ev_res = 0, ev_flags = 128, ev_pri = 0 '\000', ev_closure = 1 '\001',
ev_timeout = {tv_sec = 0, tv_usec = 0}, ev_callback = 0x423340 <rspamd_hup_handler>, ev_arg = 0x8058e0080}
usr1_ev = {ev_active_next = {tqe_next = 0x7fffffffe8e0, tqe_prev = 0x7fffffffe840}, ev_next = {tqe_next = 0x191a2d58, tqe_prev = 0x19177260},
ev_timeout_pos = {ev_next_with_common_timeout = {tqe_next = 0x8ffffffff, tqe_prev = 0x8008ad800}, min_heap_idx = -1}, ev_fd = 30, ev_base = 0x19177100,
_ev = {ev_io = {ev_io_next = {tqe_next = 0x0, tqe_prev = 0x191c5880}, ev_timeout = {tv_sec = 34368847872, tv_usec = 0}}, ev_signal = {ev_signal_next = {
tqe_next = 0x0, tqe_prev = 0x191c5880}, ev_ncalls = 0, ev_pncalls = 0x0}}, ev_events = 24, ev_res = 0, ev_flags = 128, ev_pri = 0 '\000',
ev_closure = 1 '\001', ev_timeout = {tv_sec = 34368878592, tv_usec = 34368879616}, ev_callback = 0x4238c0 <rspamd_usr1_handler>, ev_arg = 0x8058e0080}
control_ev = {ev_active_next = {tqe_next = 0x7fffffffe8e0, tqe_prev = 0x7fffffffe8e0}, ev_next = {tqe_next = 0x7fffffffe880, tqe_prev = 0x7fffffffe880},
ev_timeout_pos = {ev_next_with_common_timeout = {tqe_next = 0x409196, tqe_prev = 0x800898d8d}, min_heap_idx = 4231574}, ev_fd = 4231574,
ev_base = 0x68acf04, _ev = {ev_io = {ev_io_next = {tqe_next = 0xf28ff2f4, tqe_prev = 0x8008ac448}, ev_timeout = {tv_sec = 1, tv_usec = 34368889856}},
ev_signal = {ev_signal_next = {tqe_next = 0xf28ff2f4, tqe_prev = 0x8008ac448}, ev_ncalls = 1, ev_pncalls = 0x8008ba400}}, ev_events = 14472, ev_res = 958,
ev_flags = 8, ev_pri = 0 '\000', ev_closure = 0 '\000', ev_timeout = {tv_sec = 140737488349552, tv_usec = 0}, ev_callback = 0x8008ad000,
---Type <return> to continue, or q <return> to quit---
ev_arg = 0x7fffffffe8b0}
term_tv = {tv_sec = 34368720896, tv_usec = 34368835584}
rspamd_main = 0x8058e0080
(gdb)
>> Надо попробовать удалить все, связанное с ip. Хотя проблема очень странная.
> Закомментировал настройки с IP в multimap. Вот что получилось:
> 09:35:13[root|/coreland] $ /usr/local/bin/gdb /usr/local/bin/rspamd -c rspamd-1.4.0-.coreЭто еще интереснее, а давайте мы эту проблему в email обсудим: напишите мне на vsevolod@highsecure.ru, попробуем дальше покопать.
Что там встроено? Нейронные сети? Кластеризация?
Тыкал палочкой rmilter — осталось впечатление любительской наколенной поделки. Кто пробовал rspamd — насколько он годится к использованию?
здесь можно хранить всякие баесы, скоры, репутации, и прочие конфиги в мускулах/редисах, чтобы шарить между пулом релаев ?
В редисе можно. Поддержки mysql нет и не планируется.
просто для понимания: в спамасс-не и том же амависе можно ВСЕ базы баесов, репутаций, скоров, правил погрузить в мускул и кое-что в редис. в амависе можно почти весь конфиг погрузить в мускул и лдап и заставить также спамасс-н брать все из мускула. это позволяет масштабировать нагрузку особо не парясь, что перл очень медленный по сравнению с чем-то там. У вас написано, что кое-что что-то там кладем в редис, но далеко не все ?
> просто для понимания: в спамасс-не и том же амависе можно ВСЕ базы
> баесов, репутаций, скоров, правил погрузить в мускул и кое-что в редис.
> в амависе можно почти весь конфиг погрузить в мускул и лдап
> и заставить также спамасс-н брать все из мускула. это позволяет масштабировать
> нагрузку особо не парясь, что перл очень медленный по сравнению с
> чем-то там. У вас написано, что кое-что что-то там кладем в
> редис, но далеко не все ?Просто для понимания: часть моих пользователей сканируют около сотни миллионов писем в сутки на кластере из десятков машин. И весь Rspamd писался ровно для таких конфигураций. Поэтому в Redis хранится ровно то, что нужно для таких конфигураций. Поэтому у этого "чего-то" есть вполне рациональное обоснование.
Что сейчас есть в редисе:* Веса для символов и настройки actions
* Статистика (bayes)
* Нечеткие хеши
* Бакеты рейтлимитов
* Токены грейлистинга
* IP репутация и кеш
* Кеш "тяжелых" проверок (antivirus, mx check etc)
* Нейросети (вектора обучения и сами веса)
* Настройки пользователей (индивидуальные правила, лимиты, веса, отключенные правила итп)
* Различные спискиЧто не хранится в редисе:
* Конфиги (нет смысла, т.к. есть puppet/ansible/whatever)
* Правила (небезопасно, поэтому правила могут подгружаться только из подписанных json файлов, раздаваемых по http)
* Различные редко изменяемые списки (проще раздавать по http и мониторить)Надеюсь, я ответил на ваш вопрос.
> Что сейчас есть в редисе:
> * Настройки пользователей (индивидуальные правила, лимиты, веса, отключенные правила итп)Вот с этого места немного подробней.
Как это можно конфикурить (на лету в том числе)?Лимиты и отключения фильтров у меня сейчас хранится в sql хранилище - postgresql.
Связки с rspamd пока никакой нет.
спасибо.
поддерживается ли редис кластер ?
http://redis.io/topics/cluster-spec
> спасибо.
> поддерживается ли редис кластер ?
> http://redis.io/topics/cluster-specНет, но пока не было случаев, когда это было бы критично. Это же касается и redis sentinel.
Сборка с clang плагином падает:[ 79s] /home/abuild/rpmbuild/BUILD/rspamd-1.4.0/src/libutil/addr.c:731:3: error: format query error: number of arguments for rspamd_snprintf missmatches query string 'unix:%s', expected 1 args, got 2 args
[ 79s] rspamd_snprintf (addr_str, sizeof (addr_str), "unix:%s",
> Сборка с clang плагином падает:
> [ 79s] /home/abuild/rpmbuild/BUILD/rspamd-1.4.0/src/libutil/addr.c:731:3: error:
> format query error: number of arguments for rspamd_snprintf missmatches query string
> 'unix:%s', expected 1 args, got 2 args
> [ 79s]
> rspamd_snprintf (addr_str, sizeof
> (addr_str), "unix:%s",Спасибо, исправлю, - у меня опять поломался libclang в моем тестовом окружении на Suse tumbleweed.
Не так давно перешел с amavisd-new + spamassasin на rspamd + rmilter.
3 сервера, >3000 почтовых ящиков, >20k писем в день, нагрузка на CPU снизилась существенно, количество спама упало процентов на 70% - я очень доволен.Всеволоду Стахову огромное спасибо за такой продукт, я считаю, что альтернатив ему нет.
подскажите статистику: сколько памяти занимает база редиса.
спасибо.
3 физ сервера на 3к мейлбоксов и при трафе 20к писем в день - не распил ли это?
помойки типа mailru могут на одну машину обслуживать намного больше клиентов
> помойки типа mailru могут на одну машину обслуживать намного больше клиентовНичего общего с мейл ру не имею, но банальный постфикс с довкотом на одном стандартном физ сервере куда больше клиентов обслужит.
Помимо почты, на каждом сервере еще по 100-150 сайтов клиентов крутиться. Так что вполне нормально.
> Помимо почты, на каждом сервере еще по 100-150 сайтов клиентов крутиться. Так
> что вполне нормально.Вопрос снят, значить сэкономили )))
Планируется ли помимо Байесовского классификатора использовать hidden Markov model ?Будет ли расширяться количество поддерживаемых антивирусов ?
Есть поддержка Lua можешь уже писать!
> Планируется ли помимо Байесовского классификатора использовать hidden Markov model ?Он и так использует hidden Markov model. Вопрос неясен.
> Будет ли расширяться количество поддерживаемых антивирусов ?
Будет, если антивирусы будут предоставлять спецификации протоколов.
А чем оно лучше bogofilter?
only-байес vs хренов-комбайн-в-который-запихано-всё-даже-небо-даже-аллах.
Есть ли смысл использовать на одиночном, относительно мало нагруженном сервере с количеством ящиков ~100?
И каких ресурсов (по минимуму) нужно выделить в QEMU, для такого виртуального сервера (ClamAV ставить не планируется)?
> Есть ли смысл использовать на одиночном, относительно мало нагруженном сервере с количеством
> ящиков ~100?
> И каких ресурсов (по минимуму) нужно выделить в QEMU, для такого виртуального
> сервера (ClamAV ставить не планируется)?Смысла нет, правильно настроенный постфикс срежет вам 80% спама, а клам нужен полюбэ, он щас чуток лучше стал работать в отличии от далеких 2008 годов
Правильно настроенный Postfix помимо того что срежет вам 80% спама, он еще и срежет 80% хороших писем, т.к. сервера-отправители этих писем настроены далеко не по rfc.
Если письма не соответствуют RFC, это плохие письма. Туда им и дорога. Пусть админ отправителя читает отлупы и учится настраивать сервер нормально.
> Если письма не соответствуют RFC, это плохие письма. Туда им и дорога.
> Пусть админ отправителя читает отлупы и учится настраивать сервер нормально.Return-Path: <opennet@periscope.opennet.ru>
% host periscope.opennet.ru
periscope.opennet.ru has address 81.95.33.238
% host 81.95.33.238
Host 238.33.95.81.in-addr.arpa. not found: 3(NXDOMAIN)Расскажите нам, ага.
И это повод для гордости? Радует еще когда говорят мол gmail принимает, а вы нет )))))Нет соблюдения стандартам - анархия, а раз анархия - каждый волен делать все что пожелает. И не лечите никого как правильно жить.
Пс: все ясно, в продолжении дискуссии смысла нет.
у periscope.opennet.ru даже MX нет
$ dig +short A periscope.opennet.ru
81.95.33.238
ну ну фолбек, если МХ прописать лень, то о ПТР речи не должно и быть.
Значить таким админам нужно потакать?
А для чего стандарты придуманы (хоть и кривые) ?
Если амин не может банально прописать птр запись для айпишника, что с него взять то? я обязан разве принимать от него почту ? А если обязан то тогда речь о спаме и быть не должна. одна тока проверка птр записи режет 50% всем спам писем, и этому доказательство статистика почтового трафика.
> Если амин не может банально прописать птр запись для айпишникаКак правило, реверсивными записями заведует провайдер, и далеко не у каждого провайдера адекватная служба поддержки.
1) сколько можно отмазываться?
2) Размещайте почту там, где служба поддержки адекватна.
Если служба поддержки не адекватна, значит они могут в любой момент вам и 25 порт подрезать. Вы этого не боитесь?
у нас 25 порт закрыт отправляйте письма по 80 порту ))))))) вот отмазка будет.
> Правильно настроенный Postfix помимо того что срежет вам 80% спама, он еще
> и срежет 80% хороших писем, т.к. сервера-отправители этих писем настроены далеко
> не по rfc.а в случае "качественного спама" - достаточно заблокировать айпи смтп сервера и добавить в блеклист домен отправителя и всё (пусть потом спамер меняет айпи и свой домен, мой почтовый сервер от него больше не получит писем), и всякие спам фильтры по анализу письма идут лесом потому, что они бесполезны. связка SPF+DKIM+DMARC уже режет 90% писем, плюс ещё от спуфинга защищает, а спамассассин со своим байесом не нужен - лишнее звено. У клама одна тока проверка ссылок по гугл сейф броузингу уже отрежет 50% писем, потому что за вас уже ведёт список чёрных ссылок которые встречаются в спам письмах.
Уберите из того же rsmapd модули SPF,DKIM,DMARC,Greylisting,рейтлимитов,IP репутация (DNSBL), MX проверка (которая в постфиксе из покон веков есть) что останется в итоге ? Нечеткие хеши, bayes, нейронные сети какието и всё ? И скока процентов спама такой фильтр будет резать ? Да не сколько, ибо всё упрётся в теорию нейронных сетей которые не идеальны и не практичны (если нужно хранить килограмовую базу).
> клам нужен полюбэ, он щас чуток лучше стал работать в отличии от далеких 2008 годовНичего он практически не ловит. Я не видел, чтоб он в последнее время хоть одного червяка (которые маскируются под письма от сканнера) поймал.
>> клам нужен полюбэ, он щас чуток лучше стал работать в отличии от далеких 2008 годов
> Ничего он практически не ловит. Я не видел, чтоб он в последнее
> время хоть одного червяка (которые маскируются под письма от сканнера) поймалКакого червяка? У меня он червяка и пдф и в ворде ловит
Подключи базы от sanesecurity и удивись. С дефолтными - да, будет редко и печально.
> Есть ли смысл использовать на одиночном, относительно мало нагруженном сервере с количеством
> ящиков ~100?
> И каких ресурсов (по минимуму) нужно выделить в QEMU, для такого виртуального
> сервера (ClamAV ставить не планируется)?Я себе поставил примерно для такой почтовки, мне удобно. Ставил не на виртуалку, просто на один из серверов. Жужжит, основным делам не мешает.
Можно эту систему каким то образом к CommuniGate прикрутить?
Увидел скрипт для CommuniGate на github. Буду тестировать. Какие то подводные камни есть? Видел, что народ вроде интересуется связкой с CGP, но не могу найти отзывов толком о работе.
Затестил? Работает связка?
Есть новости по тестированию rspamd с cgp?
Можете добавить поддержку антивируса DrWeb?
> Можете добавить поддержку антивируса DrWeb?Мне нужно описание протокола общения с демоном. А там можно подумать.
>> Можете добавить поддержку антивируса DrWeb?
> Мне нужно описание протокола общения с демоном. А там можно подумать.Вот описание:
http://download.geo.drweb.com/pub/drweb/unix/doc/HTML/MailD/ru/пойдёт?
Система ахтунг! Больше режет валидной почты, чем спама. Одно и тоже письмо одному режет, другому пропускает. Зачем-то повторяется функционал и в rspam и в rmilter, с документацией совсем плохо. Ненужные проверки не отключаются!