}
learn_condition =<<EOD
return function(task, is_spam, is_unlearn)
- local prob = task:get_mempool():get_variable('bayes_prob', 'double')
+ local learn_type = task:get_request_header('Learn-Type')
- 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 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))
+ 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
/* We have some existing record in the table */
if (!!flag == !!is_spam) {
/* Already learned */
+ msg_warn_task ("already seen stat hash: %*bs",
+ rspamd_cryptobox_HASHBYTES, out);
return RSPAMD_LEARN_INGORE;
}
else {