Jak zastąpić SpamAssassina Bogofilterem w filtrowaniu poczty

(na podstawie przekopywania dokumentacji, wujka Google'a)

Dotychczas korzystałem z amavisd-new, który wołał ClamAV-a oraz SpamAssassina. Niemniej chciałem przetestować Bogofilter, aby zobaczyć, czy nie będzie to lepsze rozwiązanie. W tym celu należy popełnić zmiany w konfiguracji.

Przygotowania w systemie

Pierwszym krokiem jest wykonanie katalogów dla dedykowanego użytkownika uruchamiającego filter:

cp /usr/local/etc/bogofilter.cf.example /usr/local/etc/bogofilter.cf
chmod +w /usr/local/etc/bogofilter.cf
mkdir -p /var/spool/bogofilter
pw add group bfilter
pw add user bfilter -g bfilter -s /sbin/nologin -d /home/bogofilter -m -C "Bogofilter Account"

Następnie utworzenie skryptu do nauki bogofiltra (skrypt jest w dokumentacji, więc nie przepisuję):

vi  /home/bogofilter/postfix-filter.sh
chmod +x /home/bogofilter/postfix-filter.sh
chown -R bfilter:bfilter /home/bogofilter/ 

Oraz utworzenie pustych baz (list słów kluczowych):

touch /tmp/emptydb
bogoutil --db-transaction=no -l /var/spool/bogofilter/wordlist.db < /tmp/emptydb
bogoutil --db-transaction=no -l /var/spool/bogofilter/ignorelist.db < /tmp/emptydb

# ustawienie uprawnien
chown -R bfilter:bfilter /home/bogofilter/ /var/spool/bogofilter

Konfiguracja postfix-a

Zmiany wykonujemy w master.cf. UWAGA!!! Nie wykonujemy zmian zapisanych w dokumentacji bogofilter (dla smtp/smtpd)). Za to wykonujemy zmiany ponizsze:

pickup    fifo  n       -       n       60      1       pickup
        -o content_filter=

bfilter   unix  -       n       n       -       10      pipe
    flags=Rq user=bfilter argv=/home/bogofilter/postfix-filter.sh -f ${sender} -- ${recipient}

W konfiguracji serwisu powrotnego dodajemy wartość do content_filter (do tej pory było puste):

localhost.bsdserwis.com:10025   inet    n       -       -       -       -       smtpd
        -o content_filter=bfilter:dummy
        [...]

Zmiany w amavisd-new

Jedyna i najważniejsza zmiana, to wyłączenie sprawdzania SpamAssassina:

# --- lista domen, dla kt/orych pomijany jest antyspam ----------------------
#
@bypass_spam_checks_maps  = (1);

Utworzenie kont w LDAP/Cyrus-imapd

Konta w LDAPie najlepiej utworzyć za pomocą PHP LDAP Adminem, natomiast w Cyrus-imapd to już skryptem:

/usr/local/admin/vmail/useradd_mail.pl bfzly
/usr/local/admin/vmail/useradd_mail.pl bfdobry

Nauczanie bogofiltra

Pozostaje już tylko ustawić nauczanie bogofiltra na podstawie nadesłanych emaili. Niemniej bogofilter najlepiej czuje się albo z mailboxami albo z formatem Maildir(++). Tak więc trzeba emaile nadesłane do "łowców" wydłubać z Cyrusa.

A zatem, często gęsto rozwiązania najprostsze są najlepsze:

find /var/spool/imap/b/user/bfdobry/ -type f -maxdepth 1 -name '[0-9]*.' | xargs -n1 -t bogofilter -n -I
/usr/local/cyrus/bin/ipurge -d 1 -f user.bfdobry

find /var/spool/imap/b/user/bfzly/ -type f -maxdepth 1 -name '[0-9]*.' | xargs -n1 -t bogofilter -s -I
/usr/local/cyrus/bin/ipurge -d 1 -f user.bfzly


{i} Znalazłeś błąd? Zgłoś go administratorowi.

BogofilterZamiastSpamAssassina (ostatnio edytowane 2013-10-29 22:07:18 przez wtps0n)