*** Section classifier ***
bayes {
backend = "redis";
min_tokens = 11;
languages_enabled = true;
cache {
path = "/var/db/rspamd/learn_cache.sqlite";
}
expire = 31536000;
new_schema = true;
statfile {
path = "/var/db/rspamd/bayes.ham.sqlite";
spam = false;
symbol = "BAYES_HAM";
}
statfile {
path = "/var/db/rspamd/bayes.spam.sqlite";
spam = true;
symbol = "BAYES_SPAM";
}
autolearn = true;
tokenizer {
name = "osb";
}
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;
min_learns = 200;
}
*** End of section classifier ***