====== SpamAssassin ====== SpamAssassin to na tyle złożony twór, że postanowiłem napisać osobną stronę na jego temat. Założenia: * podłączenie do Postfixa * konfiguracja per user z bazy MySQL * użycie mechanizmów DCC, Razor, Pyzor * blacklisty * dodatkowe reguły filtrujące polski SPAM ====== Instalacja ====== SpamAssassin instalujemy z następującymi aktywnymi opcjami: Options : AS_ROOT : on DCC : on* DKIM : off GNUPG : on GNUPG2 : off GNUPG_NONE : off MYSQL : on* PGSQL : off PYZOR : on* RAZOR : on* RELAY_COUNTRY : off SPF_QUERY : off SSL : on Miejsca oznaczone gwiazdką to te, które trzeba zmienić ręcznie. Włączenie spamassassina w ''/etc/rc.conf'': spamd_enable="YES" spamd_flags="-q -x -u spamd --listen /var/run/spamd.sock" ====== Konfiguracja ====== ===== Podłączenie do Postfix-a ===== W pliku konfiguracji Postfix-a w ''master.conf'' dodajemy: # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== spamd unix - n n - - pipe user=spamd argv=/usr/local/bin/spamc -u ${user}@${domain} --socket=/var/run/spamd.sock -e /usr/local/sbin/sendmail -oi -f ${sender} ${recipient} Dodatkowo do ''main.cf'': # Spamassassin always_add_missing_headers = yes ===== Pliki konfiguracyjne ===== Wszystkie pliki konfiguracyjne znajdują się w ''/usr/local/etc/mail/spamassassin''. Z tego katalogu wczytywane są wszystkie pliki zgodne z maską: init.pre *.cf Podstawowa struktura obejmuje pliki: -rw-r--r-- 1 root wheel 1426 Mar 2 2016 init.pre -rw-r----- 1 root spamd 1051 Apr 1 14:18 local.cf -rw-r--r-- 1 root wheel 2529 Mar 2 2016 v310.pre -rw-r--r-- 1 root wheel 1196 Apr 1 18:02 v312.pre -rw-r--r-- 1 root wheel 2416 Apr 1 18:02 v320.pre -rw-r--r-- 1 root wheel 1237 Apr 1 18:02 v330.pre -rw-r--r-- 1 root wheel 1020 Apr 1 18:02 v340.pre -rw-r--r-- 1 root wheel 1309 Apr 1 18:02 v341.pre Wczytywane są wszystkie powyższe pliki. Nazwy ''v3xx.pre'' tyczą się kolejnych wydań SpamAssassina i nowych opcji, które zostały dodane. Konfiguracja ''local.cf'': report_safe 0 lock_method flock required_score 5.0 use_bayes 1 bayes_auto_learn 1 skip_rbl_checks 1 use_dcc 1 use_razor2 1 use_pyzor 1 normalize_charset 1 # Userprefs user_scores_dsn DBI:mysql:spamassassin:127.0.0.1 user_scores_sql_username spamassassin user_scores_sql_password haslo_do_bazy # AWL auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList user_awl_dsn DBI:mysql:spamassassin:127.0.0.1 user_awl_sql_table awl user_awl_sql_username spamassassin user_awl_sql_password haslo_do_bazy # Bayes bayes_store_module Mail::SpamAssassin::BayesStore::MySQL bayes_sql_dsn DBI:mysql:spamassassin:127.0.0.1 bayes_sql_username spamassassin bayes_sql_password haslo_do_bazy # Zabojca SPAM-u include /usr/local/etc/mail/spamassassin/local.cf.BL.SPAMTRAP include /usr/local/etc/mail/spamassassin/local.cf.reguly.ZABOJCASPAMU include /usr/local/etc/mail/spamassassin/local.cf.BL.ZABOJCASPAMU ===== Pluginy ===== ==== SPF ==== Plugin do sprawdzania SPF-a. Sam SPF sprawdzany jest dwa razy (przez Postfix, potem przez SpamAssassin). Jeśli SPF się nie zgadza, mail zostanie odrzucony przez Postfix-a i nie będzie zawracał na głowy (alternatywnie przejdzie, jeśli soft-fail jest ustawiony). Dla SpamAssassina jest włączony po to, by można było ocenić potencjalny poziom SPAM-u w oparciu o zgodność z SPF. W SpamAssassinie włączamy plugin w pliku ''init.pre'': loadplugin Mail::SpamAssassin::Plugin::SPF ==== DCC ==== :!: **Publiczne serwery DCC dostępne tylko do użytku niekomercyjnego** Jeśli instalowaliśmy SpamAssassina z opcjami podanymi na początku strony, DCC powinien zainstalować się z zależności. Jeśli nie ma, trzeba zainstalować go ręcznie: pkg install dcc-dccd W pliku ''/usr/local/dcc/dcc_conf'' włączamy opcję: DCCIFD_ENABLE=on Do ''/etc/rc.conf'' dodajemy: dccifd_enable="YES" Po czym włączamy usługę: service dccifd start W SpamAssassinie włączamy plugin w pliku ''v310.pre'': loadplugin Mail::SpamAssassin::Plugin::DCC ==== Razor2 ==== :!: FIXME **Licencja jest niejasna.. System jest ogólno dostępny, ale właściciel (CloudMark) zastrzega sobie prawo do odcięcia od usługi :?: ** Jeśli instalowaliśmy SpamAssassina z opcjami podanymi na początku strony, Razor powinien zainstalować się z zależności. Jeśli nie ma, trzeba zainstalować go ręcznie: pkg install razor-agents Jako użytkownik **spamd** wykonujemy: razor-client razor-admin -create razor-admin -register Utworzy to katalog ''/var/spool/spamd/.razor'' i zarejestruje nas system. W SpamAssassinie włączamy plugin w pliku ''v310.pre'': loadplugin Mail::SpamAssassin::Plugin::Razor2 ==== Pyzor ==== Jeśli instalowaliśmy SpamAssassina z opcjami podanymi na początku strony, Pyzor powinien zainstalować się z zależności. Jeśli nie ma, trzeba zainstalować go ręcznie: pkg install py27-pyzor W SpamAssassinie włączamy plugin w pliku ''v310.pre'': loadplugin Mail::SpamAssassin::Plugin::Pyzor ===== Dodatkowe reguły, blacklisty itp. ===== Do powyższego warto dodać kilka list: * polskie listy prowadzone na stronie "Zabójca spamu" * https://zabojcaspamu.pl/local.cf.BL.SPAMTRAP -- maile wpadające do SPAM TRAP-a * https://zabojcaspamu.pl/local.cf.reguly.ZABOJCASPAMU -- reguły tworzone przez Autora (zawierają m.in. najpopularniejsze frazy używane w SPAM-ach) * https://zabojcaspamu.pl/local.cf.BL.ZABOJCASPAMU -- blacklista zawierająca adresy spammerów * polska lista Lemata * http://lemat.priv.pl/pliki/sa_body_test_pl.cf -- j.w. lista uzupełniająca Listy pobieramy i wgrywamy do katalogu konfiguracji SpamAssassina, czyli to ''/usr/local/etc/mail/spamassassin'' :!: **UWAGI** * w liście ''local.cf.reguly.ZABOJCASPAMU'' trzeba zmienić wszystkie wpisy "WLASNADOMENA" na swoją domenę * w liście Lemata trzeba odnaleźć i odkomentować linię: #score ALL_PL_RULES 20