LINUX.ORG.RU
ФорумAdmin

Обучение amavis-new+spamassasin

 , ,


0

2

Здравствуйте! До этого поднимался вопрос по поводу спам обучения связки amavis-new+spamassasin.

Вот ссылка на эту тему: Dovecot ACL allow anyone

Т.к. темы тут быстро угасают к сожалению - не успел получить ответ на мой вопрос:

1) Есть параметр -ham. Он применяется для хорошей почты или для неверно помеченной как спам?
2) Если -ham применяется для любой хорошей почты или неверно помеченной, то нужно будет сканировать все Inbox папки?
В таком случае объем сканирования каждый раз будет все больше и больше. Копировать каждый раз в одну папку «ham» думаю тоже нет смысла. Может тогда использовать что-то вроде rsync с какой-нибудь опцией копирования только (в папку «ham») того, что с последнего раза изменилось, а все старое затирать (в папке «ham»)?


Показываю, как сделано у меня.

В Dovecot:

protocol imap {
        mail_plugins = antispam
        plugin {
                antispam_backend = pipe
                antispam_trash = trash;Trash
                antispam_spam = junk;Junk
                antispam_allow_append_to_spam = no
                antispam_pipe_program_spam_arg = --spam
                antispam_pipe_program_notspam_arg = --ham
                antispam_pipe_tmpdir = /tmp
                antispam_pipe_program = /usr/local/bin/sa-learn-pipe.sh
        }
}

Скрипт обучения:

#!/usr/bin/env bash
 
LOCK="/tmp/sa-learn.lock"
FIFO="/run/sa-learn-daemon.fifo"
RESPONSE="/run/sa-learn-client.fifo"
 
exec 200> $LOCK
flock -x 200
 
MSG=$(mktemp)
 
cat <&0 >$MSG
 
echo "$*;$MSG" >$FIFO
 
while true
do
        if read line <$RESPONSE
        then
                if [[ "$line" == "OK" ]]
                then
                        flock -u 200
                        exit 0
                fi
        fi
done
 
flock -u 200
exit 0

А это демон, который слушает FIFO и, собственно, вызывает sa-learn:

#!/usr/bin/env bash

LOG="/var/log/sa-learn.log"
FIFO="/run/sa-learn-daemon.fifo"
RESPONSE="/run/sa-learn-client.fifo"

rm -f $FIFO
rm -f $RESPONSE
mkfifo $FIFO
mkfifo $RESPONSE
chown nobody:nogroup $FIFO
chown nobody:nogroup $RESPONSE

while true
do
        if read line <$FIFO
        then
                echo "$(date)" >>$LOG
                echo "$line" >>$LOG
                args=$(echo $line | cut -d ';' -f 1)
                msg=$(echo $line | cut -d ';' -f 2)
                /usr/bin/sa-learn --no-sync $args $msg >>$LOG 2>&1
                /usr/bin/sa-learn --sync >>$LOG 2>&1
                rm -f $msg
                echo "OK" >$RESPONSE
        fi
done <$FIFO
post-factum ★★★★★
()
Последнее исправление: post-factum (всего исправлений: 1)
Ответ на: комментарий от post-factum

Спасибо большое. Очень не понятно. Мои скрипт навыки к сожалению на минимуме. Буду смотреть.
А вообще я думал просто через крон прогонять почту раз в час или день. Непонятно было только принцип работы sa-learn и практическое применение (не в скриптах) - по этому и задал эти вопросы.

shpak1
() автор топика
Ответ на: комментарий от shpak1

через крон прогонять почту раз в час или день

Я тоже так гонял, но когда ящиков сотни и гигабайты, это не сильно хорошо.

post-factum ★★★★★
()

Зачем сканировать все inbox-ы? о_О В указанной тобой теме - у тебя абсолютно верная идея относительно работы с двумя ящиками. Только вот отводит эту процедуру пользователям, имхо - ошибка. Они тебе наворотят :)

Начальное обучение, если мне память не изменяет, можно считать завершенным, если обеим обучалкам скормлено по 200 сообщений. А далее уже сам, по мере необходимости - если какой спам пролез - письмеца снял, положил в папку нужно ящика и запустил скрипт.

afdark
()
Ответ на: комментарий от post-factum

Перехожу с DSpam на сабжевую связку.
Вяще благдарен за выложенный скрипт.
Не могу понять, по какому принципу оно оперирует локами в /tmp, у меня оно не удалятся после

$ /usr/local/bin/sa-learn-pipe.sh --spam < spam.msg

Yustas ★★★★
()
Ответ на: комментарий от Yustas

У меня не 100500 ящиков, по этому решил вот так делать (скрипт в другой теме описан).

#Spam train sa each 6 hours
0 */6 * * * /vmail/./spam_yes.sh
#Not Spam train sa each 6 hours ( 30 min diff from spam train)
30 */6 * * * /vmail/./spam_no.sh

Беру из базы пользователей и сканирую их папки Junk и NotJunk.
Пользователи Индусы, по этому дрессировке поддаются =)
Так же в main.cf postfix'а убрал проверки на RDNS и FQDN, т.к. многие индусские компании предпочитают мелкософт, что-то связанное сними или вообще не вникают в правила. В итоге просто почта клиентов не доходит => придется возлагать это на спам-фильтр.
Если что-то по процессу установки на debian 8 jessie помочь, обращайтесь.

А вот скриптик post-factum'а так и не понял...

shpak1
() автор топика
Ответ на: комментарий от shpak1

Беру из базы пользователей и сканирую их папки Junk и NotJunk.

Я так начальное обучение делал.
Но некоторые хотят ещё и плУгин.

А вот скриптик post-factum'а так и не понял...

Я тоже в итоге взял с dovecot'овой wiki

Yustas ★★★★
()
Последнее исправление: Yustas (всего исправлений: 2)
Ответ на: комментарий от Yustas

я честно так и не понял зачем плугин нужен....если есть возможность пожалуйста разъясните мне...

shpak1
() автор топика
Ответ на: комментарий от shpak1

Что бы юзеры могли сами обучать спамасссина.
У меня на самые раскрученные ящики прорывается несколько писем в неделю.
До обучения было два-три в день.
Я вот не понял, как заставить SA пропускать спам, тегируя заголовок.

Yustas ★★★★
()
Ответ на: комментарий от Yustas

Posgrey вообще имеет смысл использовать, если в postfix основная проверка проходит? Просто я сегодня сервак запустил, у меня из-за postgrey куча важных писем застряли в очереди...к черту отключил postgrey...

shpak1
() автор топика
Ответ на: комментарий от Yustas

Извиняюсь. Старую статью прилепил. http://thelinuxforce.org/article/32

А вот конкретно как это делать: /vmail/globalsieverc

require ["fileinto"];
# Move spam to spam folder
if header :contains "X-Spam-Flag" ["YES"] {
  fileinto "Junk";
  stop;
}
по ссылке продолжение.

shpak1
() автор топика
Ответ на: комментарий от shpak1

Posgrey вообще имеет смысл использовать, если в postfix основная проверка проходит?

У меня нет(postgre'я).

у меня из-за postgrey куча важных писем застряли в очереди...к черту отключил postgrey...

Вот такими соображениями, да.

Yustas ★★★★
()
Последнее исправление: Yustas (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.