Jak wiadomo przed spamem trzeba się bronić wszelkimi możliwymi sposobami. SpamAssasin analizuje nie tylko treść mailów ale także bierze pod lupę adres nadawcy jak również serwer z którego został wysłany mail. Ale nie będziemy się tutaj zajmować jak SpamAssasin analizuje maile pod kątem spamu tylko skupimy się na instalacji i konfiguracji w celu wspólpracy z Postfixem ( Linux Debian ).
Instalacja SpamAssasin
Przed instalacją aktualizujemy system poprzez wydanie poniższych komend w terminalu:
apt-get update apt-get upgrade
Następnie przechodzimy do właściwej instalacji pakietów SpamAssasin i spamd:
apt-get install spamc spamassassin
Konfiguracja SpamAssasin
Tworzymy użytkownika/grupę dla SpamAssassin jak również katalog roboczy:
groupadd -g 5555 spamd useradd -u 5555 -g spamd -s /sbin/nologin -d /usr/local/spamassassin spamd mkdir -p /usr/local/spamassassin/log chown spamd:spamd -R /usr/local/spamassassin
Edytujemy plik konfiguracyjny demona SpamAssassin: /etc/default/spamassasin dokonując w nim następujących zmian:
ENABLED=1 SPAM_HOME="/usr/local/spamassassin" OPTIONS="--create-prefs --max-children 5 --helper-home-dir ${SPAM_HOME} --username spamd -s ${SPAM_HOME}/log/spamd.log"
Przechodzimy do edycji kolejnego pliku konfiguracyjnego w lokalikazji: /etc/spamassassin/local.cf i dokonujemy zmian jak poniżej:
rewrite_header Subject *****SPAM***** required_score 3.0 report_safe 0 use_bayes 1 # Enable Bayes auto-learning bayes_auto_learn 1 # Enable or disable network checks skip_rbl_checks 0 use_razor2 0 use_dcc 0 use_pyzor 0
Konfiguracja Postfixa
Przechodzimy do pliku konfiguracyjnego Postfixa: /etc/postfix/master.cf i szukamy wpisu z nazwą usługi smtp dopisując opcję, którą pogrubiłem:
smtp inet n - - - - smtpd -o content_filter=spamassassin
Dopisujemy na końcu listy usług naszego spamassassina:
spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Oczywiście każdy pojedyńczy wpis musi być w jednej linii !
Na koniec restartujemy Postfixa i włączamy SpamAssasina:
/etc/init.d/spamassassin start /etc/init.d/postfix restart
+Aktualizacja
Wypadałoby jeszcze skonfigurować SpamAssassina w celu automatycznej aktualizacji.
Wykonujemy w konsoli poniższe polecenie:
sa-updates -D
Otrzymamy trochę informacji z których jedna będzie określała dostępne klucze GPG, szukamy odpowiedniej linii: dbg: gpg: release trusted key id list: [KLUCZE GPG …] Przykładowa postać klucza to ciąg znaków alfanumerycznych: 5Z541DC234CB8BAF7C78DFDC4116A61U5244EC32
Kopiujemy jeden z nich do schowka. Następnie musimy wykonać kompilację:
sa-compile
Wchodzimy do katalogu: /etc/cron.daily i tworzymy plik: sa-updates i wklejamy do niego poniższe polecenie wklejając w odpowiednie miejsce nasz klucz GPG:
#!/bin/sh sa-update --allowplugins --gpgkey TU WKLEJ KLUCZ GPG --channel updates.spamassassin.org sa-compile
Nadajemy jeszcze odpowiednie prawa dla pliku aby był wykonywalny:
chmod +x /etc/cron.daily/sa-updates
Po tych operacjach kłopot z aumatyczną aktualizacją mamy już za sobą 🙂
+Testowanie SpamAssassin
Aby przetestować SpamAssassina wysyłamy na nasz serwer maila z odpowiednią wiadomością wskazującą na SPAM np:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Jeśli wszystko działa jak należy powinniśmy otrzymać zwrot z informacją w nagłówku „tytule”: *****SPAM***** w zależności jak sobie owy ciąg znaków ustawiliśmy w konfiguracji SpamAssassina.
Błędy
Podczas startu SpamAsassina czy Postfixa mogą się pojawić następujące błędy:
Poniższy błąd wynika z braku znaku '=’ między opcją a parametrem. W nowszej wersji Postfixa należy dodać po nazwie opcji znak '=’
Reloading Postfix configuration...postfix: fatal: /etc/postfix/main.cf, line 55: missing '=' after attribute name: "smtp inet n - - - - smtpd -o content_filter=spamassassin"
Sprawdzamy czy prawa dostępu do katalogu roboczego SpamAssassina są prawidłowe jak i sama ścieżka: /usr/local/spamassassin ( user/group: spamd/spamd – oczywiście także dla podkatalogów i plików ).
Restarting SpamAssassin Mail Filter Daemon: No /usr/bin/perl found running; none killed.
Aby pozbyć się poniższych błędów musimy zabić proces spamd: killall -9 spamd po czym zrestartować SpamAssassina.
Jeśli jednak pojawi się informacja: spamd: no process found
To oczywiście oznacza, że w ogóle SpamAssassin nie został uruchmiony, tak więc uruchamiamy go:
service spamassassin start
Aug 6 18:22:30.854 [13786] warn: server socket setup failed, retry 1: spamd: could not create INET socket on 127.0.0.1:783: Address already in use
Hej dzięki za ciekawy wpis, tylko powiedz mi proszę gdzie jest czarna i biała lista? Jak wiemy filtry antyspamowe nie zawsze zachowują się idealnie tak jak byśmy tego chcieli więc posiadanie i łatwa edycja tych dwóch list jest koniecznością.
Fajnie jak byś tłumaczył co edytujemy w pliku, bo tak to każdy będzie robił na oślep i nic się nie nauczy.
PS. Czy taki golas spamassasina zadziała z darmową wersją iredmail?