Instalacja SpamAssassin dla Postfix / Debian

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

Jedno przemyślenie nt. „Instalacja SpamAssassin dla Postfix / Debian

  1. 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?

Dodaj komentarz