Linuksowa ochrona przed spamem

Poczta elektroniczna stanowi znaczną część codziennego ruchu danych w Internecie. Niestety, większość tego ruchu nie ma nic wspólnego z bezpośrednią komunikacją między poszczególnymi osobami. Blisko 50 procent wszystkich wiadomości zawiera reklamy, i to zwykle w najbardziej znienawidzonej przez użytkowników postaci spamu.

Poczta elektroniczna stanowi znaczną część codziennego ruchu danych w Internecie. Niestety, większość tego ruchu nie ma nic wspólnego z bezpośrednią komunikacją między poszczególnymi osobami. Blisko 50 procent wszystkich wiadomości zawiera reklamy, i to zwykle w najbardziej znienawidzonej przez użytkowników postaci spamu.

Problem jest najbardziej dokuczliwy dla tych, którzy przesyłają dużo wiadomości lub są aktywni na wielu forach internetowych. To właśnie oni mają największe szanse trafić na listy adresowe spamerów, tworzone za pomocą specjalnych programów-robotów (określanych popularnie jako harvesters, czyli żniwiarki), przeszukujących Internet w poszukiwaniu użytecznych adresów e-mail. To początek nielegalnego handlu tymi adresami. Szczególnie internetowy serwis aukcyjny eBay słynie z tego, że można w nim kupić płyty CD z milionami adresów, których właściciele rzekomo wyrazili zgodę na przyjmowanie reklam. Jeżeli jakimś cudem uda ci się doprowadzić do usunięcia swoich danych z takiej listy, w niedługim czasie znajdziesz się zapewne na kolejnej.

Nawet jeżeli starasz się chronić swój adres, nie bierzesz udziału w publicznych dyskusjach i trzymasz się z dala od ofert, które wymagają podania swojego adresu, możesz stać się ofiarą spamerów. Dziś nie tylko zbiera się adresy w Internecie, ale coraz częściej po prostu się je generuje. Jeśli kiedyś wybrałeś sobie krótką i prostą nazwę użytkownika, możesz szybko stać się ofiarą takich praktyk. Jedyna prawdziwie skuteczna obrona przed spamem to automatyczne systemy filtrujące, które na podstawie złożonych kryteriów odsiewają ziarno od plew i we współpracy z serwerem lub klientem pocztowym dbają o spokój i porządek w skrzynce pocztowej.

1. SpamAssassin - elastyczny filtr antyspamowy

Najłatwiej pobrać i zainstalować SpamAssassin, korzystając z modułu CPAN Perl.

Najłatwiej pobrać i zainstalować SpamAssassin, korzystając z modułu CPAN Perl.

Filtr antyspamowy SpamAssassin cieszy się coraz większą popularnością, szczególnie wśród użytkowników Linuksa. Pakiet napisany w języku Perl oferuje wszechstronne funkcje wykrywania niepożądanych wiadomości i dlatego jest składnikiem większości dystrybucji Linuksa. SpamAssassin sprawdza nadchodzącą pocztę za pomocą wielu procedur i stara się określić stopień prawdopodobieństwa, że dana wiadomość to spam. Stosowane są między innymi następujące metody analizy:

  • kryteria statystyczne, na przykład udział kodu HTML w treści wiadomości,
  • znane cechy spamu, na przykład sfałszowane informacje o kliencie pocztowym w nagłówku wiadomości,
  • porównanie nadawcy z wieloma listami znanych spamerów,
  • filtr Bayesa, czyli w znacznej mierze samodzielny, samouczący się moduł do rozpoznawania spamu.
Niestety, walka ze spamem przypomina pojedynek, który od lat toczą autorzy wirusów i twórcy oprogramowania antywirusowego. Stale pojawiają się nowe metody maskowania spamu jako zwykłej poczty. Stosownie do tego, w oprogramowaniu antyspamowym stosuje się coraz bardziej wymyślne algorytmy do rozpoznawania spamu, na przykład używany dopiero od niedawna filtr Bayesa porównuje częstotliwość występowania określonych słów w zwykłej i niepożądanej poczcie i na tej podstawie określa prawdopodobieństwo, czy ma do czynienia ze spamem, czy zwykłą wiadomością. Ale nawet i ta procedura została sprowadzona przez spamerów do absurdu. Dodanie do wiadomości wielu przypadkowo dobranych "nieszkodliwych" słów powoduje, że filtr działa nieprawidłowo.

Żadna z aktualnych dystrybucji Linuksa nie bierze udziału w tym wyścigu, dlatego zawierają one jedynie mniej lub bardziej przestarzałą wersję programu SpamAssassin. Ponadto ustawienia domyślne w dystrybucjach raczej nie są optymalne, a integracji z systemem pocztowym po prostu brak. To dość powodów, żeby samemu wziąć się do dzieła.

2. Instalacja oprogramowania

Już w trakcie kompilacji pakietu SpamAssassin dostosowuje używane później szablony.

Już w trakcie kompilacji pakietu SpamAssassin dostosowuje używane później szablony.

Ponieważ SpamAssassin umieszczony jest w CPAN (Comprehensive Perl Archive Network), nie zaleca się instalacji według podstawowego schematu Linuksa: pobranie, rozpakowanie, konfiguracja, kompilacja. Znacznie lepiej zadania te wykona moduł CPAN. Instalowane są wówczas automatycznie moduły dodatkowe, których może ewentualnie potrzebować Spam-Assassin (listing 1).

Ostanie trzy polecenia instalują dodatkowe moduły, które nie są niezbędne, ale pożyteczne. Instalacja modułu DB_File wymaga wcześniejszej instalacji na komputerze pakietu deweloperskiego Berkeley DB, najczęściej o nazwie db-devel-<numer_wersji>. DB_File to znacznie bardziej wydajna baza danych niż standardowe pakiety baz danych Perl. Net::DNS służy do sprawdzania domen przy użyciu czarnych list i kontroli rekordów MX.

Jeżeli jest to pierwsza instalacja modułu CPAN na danym komputerze, zada on najpierw kilka pytań o różne parametry, a dopiero potem przystąpi do właściwej instalacji. Zwróć jedynie uwagę na wybór serwera do pobrania pakietu. Niektóre z nich charakteryzują się niskim transferem lub skłonnością do zrywania połączeń. W przypadku pozostałych pytań program sugeruje sensowne ustawienia domyślne.

Listing 1

su -

perl -MCPAN -e 'install Mail::SpamAssassin'

perl -MCPAN -e 'install DB_File'

perl -MCPAN -e 'install HTML::Header'

perl -MCPAN -e 'install Net::DNS'

Podczas instalacji SpamAssassin system zapyta w pierwszej kolejności o adres e-mail, pod który ma wysyłać komunikaty statusu. Pozostała część instalacji przebiega automatycznie, bez ingerencji administratora. Poprawność instalacji możesz sprawdzić wywołaniem SpamAssassin z parametrem -V, służącym do ustalenia wersji programu:

spamassassin -V

3. Dwa tryby pracy

Gdy tylko kompilacja zostanie zakończona, SpamAssassin jest gotowy do pracy.

Gdy tylko kompilacja zostanie zakończona, SpamAssassin jest gotowy do pracy.

SpamAssassin dysponuje dwiema metodami kontroli poczty przychodzącej. Pierwsza to wywołanie programu do kontroli każdej nadchodzącej wiadomości, druga to działający ciągle w tle demon, któremu program pomocniczy dostarcza wiadomości przeznaczone do kontroli.

Wariant demona jest znacznie bardziej wydajny (szybciej działa), co wyraźnie widać, gdy przychodzi dużo wiadomości. Jedyna wada polega na tym, że reguły filtrowania, w tym reguły filtru Bayesa, można zdefiniować tylko globalnie, a więc w odniesieniu do wszystkich nadchodzących wiadomości. W rzeczywistości jest to wada pozorna, bo większość użytkowników jest zbyt leniwa, żeby trenować moduł Bayesa lub opracować własne reguły filtrowania, a w wariancie demona mogą chociaż skorzystać z pracy innych. Dlatego z całą pewnością warto go wybrać.

Aby automatycznie załadować demona podczas startu systemu, trzeba mieć skrypt startowy. Nie musisz go samodzielnie pisać ani przerabiać cudzych skryptów metodą kopiowania i prób. Pakiet CPAN SpamAssassin zawiera gotowy skrypt do systemu SuSE Linux. Zaletą CPAN jest to, że nie usuwa pakietów używanych do instalacji, lecz przechowuje je w oddzielnym katalogu. Wystarczy zatem rozpakować skrypt z archiwum, skopiować go pod właściwą nazwą do katalogu /etc/init.d i poinformować system o nowej usłudze (listing 2).

Listing 2

tar -xvzf ~/.cpan/sources/authors/id/F/FE/FELICITY/_

Mail-SpamAssassin-2.62.tar.gz

Mail-SpamAssassin-2.62/spamd/suse-rc-script.sh

cp Mail-SpamAssassin-2.62/spamd/suse/rc-script.sh_

/etc/init.d/spamd

chmod a+x /etc/init.d/spamd

insserv /etc/init.d/spamd

Wariant ten może nieco irytować purystów. Jest dostosowany do starszej wersji SuSE Linux i w aktualnej generuje komunikat o błędzie, jakkolwiek nieistotny dla prawidłowej pracy SpamAssassin. Aby go wyeliminować, usuń po prostu następujące wiersze w pliku /etc/init.d/spamd:

# Source SuSE config

. /etc/rc.config

W SuSE Linux 9.0 parametry przekazywane są demonowi przez własny plik konfiguracyjny, dlatego dodaj dwa nowe wiersze (listing 3).

Listing 3

SPAMD_CONFIG=/etc/sysconfig/spamd

test -r $SPAMD_CONFIG && . $SPAMD_CONFIG


Zobacz również