Назад | Перейти на главную страницу

Обучаемая пользователем фильтрация спама с помощью Exim и Dovecot

В настоящее время я использую Exim для доставки писем через dovecot-lda в почтовые ящики Dovecot. Я хотел бы добавить фильтрацию спама, но я не хочу отклонять ложные срабатывания в eximʻe, и я хочу обучить байесовский фильтр от клиента.

Итак: как мне настроить спам так, чтобы спам попадал в Junk папка, и когда пользователь обнаруживает спам в своей Inbox, или ветчину в их Junk, они перемещают его в правильный ящик, который обучает spamd.

я нашел голубятня-антиспам но я не уверен в его качестве, он поддерживает только dspam (и crm114, который мертв, последний выпуск в августе 2009 года).

Вам не нужно делать ничего особенного со спамом. Я не очень хорошо знаком с MDA eximʻa, так что надеюсь, кто-нибудь сможет написать ответ, относящийся к нему. Когда ваш агент доставки почты запускается, он должен отправить электронное письмо через spamc -u $USERNAME (при необходимости измените переменную). Тогда взгляните на заголовки. Если «X-Spame-Status: Yes» существует, доставлять почту в подпапку Maildir пользователя.

я использую maildrop для моего MDA. Конфигурация (в /usr/local/etc/maildroprc) является:

if ($LOGNAME ne "")
{
        xfilter "spamc -u $LOGNAME"
} else {
        xfilter "spamc -u $USER"
}

if ( /^X-Spam-Status: Yes/ )
{
        `test -d $DEFAULT/.Junk`
        if( $RETURNCODE == 1 )
        {
                `maildirmake -f Junk $DEFAULT`
        }
        exception
        {
                to "$DEFAULT/.Junk"
        }
}

Что касается байесовского обучения, я написал сценарий, который cron вызывает каждые 20 минут:

#!/bin/csh
foreach cuser (`ls /home`)
        if ( -d $cuser/Maildir) then
                sa-learn --dbpath /home/$cuser/.spamassassin --spam /home/$cuser/Maildir/.Junk
        endif
end

И я завершаю это следующей строкой, чтобы удалить мусор старше 2 недель. Вам не нужно его чистить, но большинство людей никогда этого не сделают сами:

find /usr/home/*/Maildir/.Junk/*/ -ctime +2w -type f -delete