Brent,
Thanks for your feedback.
@all,
segfaults mentioned in the post
#21 have been already fixed by the author of Rspamd. It's running fine with experimental version 2.x as well.
Rspamd 2.x:
For those who runs the version 2.x, they switched to Redis for collecting stats, it used to be sqlite in the version 1.9.x. This change might produce unexpected errors when teaching emails as SPAM or HAM in the WebUI. Here is a possible fix:
Upload the following content into
/etc/rspamd/local.d/statistic.conf and restart
rspamd:
Code:
# Please don't modify this file as your changes might be overwritten with
# the next update.
#
# You can modify '$LOCAL_CONFDIR/rspamd.conf.local.override' to redefine
# parameters defined on the top level
#
# You can modify '$LOCAL_CONFDIR/rspamd.conf.local' to add
# parameters defined on the top level
#
# For specific modules or configuration you can also modify
# '$LOCAL_CONFDIR/local.d/file.conf' - to add your options or rewrite defaults
# '$LOCAL_CONFDIR/override.d/file.conf' - to override the defaults
#
# See https://rspamd.com/doc/tutorials/writing_rules.html for details
# Rspamd statistic setup
# Pre-built files could be loaded from:
# http://rspamd.com/rspamd_statistics/bayes.spam.sqlite
# - and -
# http://rspamd.com/rspamd_statistics/bayes.ham.sqlite
classifier "bayes" {
tokenizer {
name = "osb";
}
cache {
path = "${DBDIR}/learn_cache.sqlite";
}
min_tokens = 11;
backend = "sqlite3";
languages_enabled = true;
min_learns = 200;
statfile {
symbol = "BAYES_HAM";
path = "${DBDIR}/bayes.ham.sqlite";
spam = false;
}
statfile {
symbol = "BAYES_SPAM";
path = "${DBDIR}/bayes.spam.sqlite";
spam = true;
}
learn_condition =<<EOD
return function(task, is_spam, is_unlearn)
local learn_type = task:get_request_header('Learn-Type')
if not (learn_type and tostring(learn_type) == 'bulk') then
local prob = task:get_mempool():get_variable('bayes_prob', 'double')
if prob then
local in_class = false
local cl
if is_spam then
cl = 'spam'
in_class = prob >= 0.95
else
cl = 'ham'
in_class = prob <= 0.05
end
if in_class then
return false,string.format('already in class %s; probability %.2f%%',
cl, math.abs((prob - 0.5) * 200.0))
end
end
end
return true
end
EOD
}
This is a version of the config for 1.9.x with a slight modification, and will make rspamd to use sqlite.
If you want to use redis with rspamd additional steps are required.