В настоящее время я использую 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