Uczenie spamassassina

Na walkę ze spamem nie ma jednego dobrego rozwiązania, to zawsze jest połączenie kilku narzędzi. Jako, że coraz więcej dostaję spamu, a konwencjonalna technika blokowania adresów/domen/dns’ów jest walką z wiatrakami postanowiłem zabrać się za konfigurację spamassassina, który jest używany przez mojego providera, celem włączenia filtrowania Bayesa. Jedną z zalet  użycia Bayesa jest wysokie prawdopodobieństwo wykrycia spamu. Jedną z wad natomiast jest konieczność dostarczenia sporej ilości spam’u jak i ham’u do nauki spamassassina.

 

Jeśli mamy dostęp ssh do naszego hostingu, na którym trzymamy pocztę to należy udać się do lokalnego pliku konfiguracyjnego spamassassina, który domyślnie powinien być zlokalizowany tu: ~/.spamassassin/user_prefs

Plik powinien być pusty lub prawie pusty. Mój zawierał tylko jedną regułę: required_score czyli wartość punktową po osiągnięciu, której mail zostanie zakwalifikowany jako spam. Im niższa wartość tym agresywniejsze filtrowanie.

 

Mój plik user_prefs wygląda mniej więcej tak:

required_score 4.0 #poziom wykrywania

bayes_path ~/.spamassassin/bayes #sciezka do lokalizacji z bazą

report_safe 1 #utworzenie raportu w mailu zakwalifikowanym jako spam

use_bayes 1 #włączenie filtrowania Bayesa

use_bayes_rules 1 #włączenie możliwości użycia dodatkowych reguł

bayes_auto_learn 1 #włączenie opcji samouczenia, pod uwagę będą brane maile z bardzo niskim i bardzo wysokim prawdopodobieństwem spamu

bayes_min_ham_num 200 #minimalna ilość dobrych maili potrzebna do nauki

bayes_min_spam_num 200 #minimalna ilość spamowych maili potrzebna do nauki

 

Po zapisaniu konfiguracji możemy przystąpić do nauki. Dobrze jest mieć posegregowane w osobnych katalogach dobre maile oraz spam. Potrzebujemy minimum 200 z każdego rodzaju, a im więcej tym lepiej.

 

Poniższych komend używamy do nauki dobrych maili, spamu, synchronizacji bazy Bayesowskiej oraz wyświetlenia statystyk. Warto to wszystko wrzucić do małego skryptu, a skrypt wykonywać w cron’ie np. raz dziennie.

/usr/bin/sa-learn --no-sync --ham ~/sciezka/do/katalogu/z/dobrymi/mailami/cur
/usr/bin/sa-learn --no-sync --spam ~/sciezka/do/katalogu/gdzie/trzymamy/spam/cur
/usr/bin/sa-learn --sync
/usr/bin/sa-learn --dump magic

 

Oczywiście jest szansa, że mamy za mało maili i SA zacznie oznaczać niewłaściwie maile jako spam wtedy trzeba zwiększyć wartości minimalne ham/spam.

Istnieje również szansa, ze dostawca usługi pocztowej ma tak skonfigurowany server aby nie brał pod uwagę naszej własnej bazy Bayesowskiej. Wtedy warto się upewnić wysyłając maila do siebie i przeanalizować nagłówek maila, następnie wykonać komendę: spamassassin -D -t < /sciezka/do/katalogu/z/poczta/plikostatneigomaila co spowoduje przeanalizowanie maila za pomocą lokalnych ustawień SA, a nie serverowych.

 

Warto również zapoznać się z dokumentacją spamassassina:

https://spamassassin.apache.org/full/3.1.x/doc/sa-learn.html

http://real-world-systems.com/docs/spamassassinConf.html

https://wiki.apache.org/spamassassin/StartUsing

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.