Всем доброго дня. Имеется связка exim + dovecot + lda + SA. Нужно, чтобы все, что набирает больше определенного числа балов в SA и меньше критического, при достижении которого письмо просто удаляется ложилось в папку Junk. Делаем по инструкции:
begin routes
...
spam_to_user:
driver = accept
condition = ${if and {{>{$spam_score_int}{20}}{<{$spam_score_int}{80}}}{yes}{no}}
domains = !+local_domains
transport = user_spam_delivery
...
begin transports
...
user_spam_delivery:
driver = pipe
command = /usr/lib/dovecot/dovecot-lda -e -m "Junk|${substr_1:$local_part_suffix}" -d $local_part@$domain -f $sender_address -a $original_local_part@$original_domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
return_fail_output
log_output
umask = 077
group = 8
user = 106
temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78
...
Письмо все равно кладется во входящие.
Решение: пишем глобальный скрипт для sieve, компилим с помощью sievec, даем права (у меня Debian-exim:mail), прописываем в 90-sieve.conf:
sieve_before путь_к_скрипту.sieve
Сам скрипт:
require ["fileinto"];
# rule:[spam]
if header :contains "Subject" "*****SPAM*****"
{
fileinto "Junk";
stop;
}