====== 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