Bayes wiecznie żywy

Centralnie i w rozproszeniu

Centralne filtrowanie poczty na serwerze, który nierzadko obsługuje kilkaset lub kilka tysięcy kont pocztowych, nie może być jednak uważane za skuteczne. Łatwo bowiem wyobrazić sobie, że w zasadzie każdy użytkownik posługuje się innym "rodzajem" listów. Używa np. różnych języków, korzysta z list dyskusyjnych, wysyła wiele załączników lub w treści jego listów często znajdują się linki do innych stron - słowem nie sposób jest skonfigurować centralnego filtra poczty w sposób, który brałby pod uwagę wszystkie możliwe preferencje. Na szczęście w wielu pakietach istnieje możliwość udostępnienia użytkownikom narzędzi do samodzielnej konfiguracji.

Wspomniany wcześniej Spam-Assasin udostępnia pewne możliwości konfiguracji. Jeżeli np. w poczcie jest przesyłane wiele odnośników do witryn WWW, możemy zmniejszyć liczbę punktów wagowych przyznawanych tego typu listom i tym samym zmniejszyć szansę na to, że jakiś ważny list zostanie uznany jako spam. Podobnie, jeśli np. nigdy nie używamy języka innego niż polski, możemy zwiększyć liczbę punktów, które będą otrzymywały listy zawierające słowa w innych językach. Dzięki temu skuteczność filtra zostanie w prosty sposób zwiększona. Niezależnie można też samodzielnie tworzyć nowe reguły. W pakiecie SpamAssasin wykonuje się to za pomocą wyrażeń regularnych.

To, że możliwość dostosowania do preferencji użytkownika jest kluczowa dla jakości rozwiązań zwalczających spam, producenci zrozumieli już dawno i w tym kierunku zmierzają w zasadzie wszystkie główne systemy tego typu. Ideałem byłoby oprogramowanie, które uczyłoby się samo, jakie listy użytkownik uważa za spam, a jakie za normalną pocztę. Powinno dostosowywać się do zmian zarówno w samym spamie, jak i w preferencjach użytkownika. Najlepiej byłoby także, gdyby oprogramowanie to wymagało jak najmniej konfiguracji i działań ze strony zainteresowanego.

Utopia? Okazuje się, że nie. Najnowsze oprogramowanie do walki ze spamem zaprzęga bowiem do pracy sieci neuronowe. Rozwiązania takie mają pewne zdolności uczenia się i przewidywania wyników na podstawie wcześniej zdobytych informacji. W powiązaniu z narzędziami do analizy statystycznej podejście to sprawdza się w walce ze spamem. Dochodzimy więc do kolejnego rodzaju oprogramowania antyspamowego, czyli tzw. Bayesian Filtering. Nazwa pochodzi od nazwiska Thomasa Bayesa - osiemnastowiecznego twórcy koncepcji analizy statystycznej.

Pomysł na wykorzystanie analizy statystycznej do filtrowania nie jest nowy. Jego korzenie sięgają roku 1996. Dopiero jednak ostatnio udało się wypracować algorytmy, które dobrze sprawdzałyby się w przypadku filtrowania spamu. Prawdziwa eksplozja tego typu oprogramowania rozpoczęła się tak naprawdę pod koniec 2003 r. Najnowsze wersje programów wykorzystujące filtrowanie oparte na koncepcji Bayesa mają współczynnik skuteczności na poziomie 99,98%! Dodatkowo ilość "dobrej" korespondencji klasyfikowanej przez te filtry jako spam jest praktycznie zerowa. Skąd biorą się tak dobre rezultaty?

Użytkownik decyduje sam

Filtr oparty na algorytmie Bayesa działa następująco. Dla każdego użytkownika na serwerze pocztowym lub w oprogramowaniu klienckim tworzone są dwa pliki. W jednym są przechowywane informacje dotyczące listów uznanych za spam, w drugim zaś - pozostałych. Początkowo pliki te są puste, użytkownik musi bowiem "nauczyć" oprogramowanie odróżniać spam od właściwej poczty. Proces ten wygląda różnie w zależności od tego, jakiego oprogramowania używamy.

W większości programów instalowanych na serwerze odbywa się w taki sposób, że po otrzymaniu listu użytkownik wysyła go z powrotem na swoje konto z adnotacją, czy jest to spam, czy też normalny list (tak działa np. darmowe oprogramowane o nazwie CRM114). Czasami też zamiast przesyłać cały list, wystarczy przesłać tylko jego sygnaturę (tak działa inny pakiet - również darmowy - o nazwie Dspam). W przypadku niektórych pakietów komercyjnych, np. SpamBully (cena ok. 30 USD za jedno stanowisko), wystarczy tylko jedno kliknięcie. Bez względu na metodę oznaczania spamu przez użytkownika, wszystkie te programy działają podobnie.

Najczęściej wykorzystywana przez filtry Bayesa metoda uczenia się zwana jest Train Only Errors (TOE). Oznacza to, że programowi wskazywane są tylko te listy, przy klasyfikacji których popełnił błąd. Na początku program popełnia oczywiście dużo błędów i jego używanie może się wydawać kłopotliwe. Pojawia się więc pytanie, jak szybko odczujemy korzyści płynące ze stosowania filtrowania Bayesa. I tu kolejne zaskoczenie. Okazuje się, że po sklasyfikowaniu kilkudziesięciu listów, program jest skuteczny już w ponad 90% swoich decyzji. Sklasyfikowanie ok. 100-150 listów pozwala osiągnąć skuteczność na poziomie przekraczającym 95%. Po miesiącu używania programu ponad 99% listów jest klasyfikowanych poprawnie. Czy warto czekać tak długo?

Zdecydowanie tak! Kiedy już filtr nauczy się odróżniać pocztę od spamu, jego skuteczność już na zawsze pozostanie wysoka. Co więcej, ponieważ program uczy się cały czas, zmiany zarówno w sposobie tworzenia spamu, jak i charakteru tworzonej i odbieranej "poprawnej" poczty są na bieżąco uwzględniane. Inaczej mówiąc, dzięki wskazówkom otrzymywanym od użytkownika program ewoluuje wraz z jego potrzebami.

Niezbyt wydajnie, ale skutecznie

Pliki, w których są przechowywane informacje pozwalające odróżniać spam od normalnej poczty, zajmują zwykle od kilku do kilkudziesięciu megabajtów. Dopóki pliki są przechowywane na komputerach klienckich, dopóty problemów z wydajnością czy pojemnością dysków raczej nie ma. Przechowywanie tak dużych plików na serwerze pocztowym może już jednak spowodować konieczność dokupienia dodatkowych dysków. Jeśli chodzi o potrzebną moc procesora, to najszybsze obecnie programy pozwalają sprawdzać nadchodzącą pocztę w tempie ok. 120 Kb/s (pomiary na serwerze z jednym procesorem Pentium III 1,4 GHz). W przypadku dużych instalacji serwerowych konieczne wydaje się zbudowanie farmy równoważącej obciążenie.

99,98% - tyle wynosi współczynnik skuteczności filtrów opartych na algorytmie Bayesa i wciąż się poprawia! Dla porównania, metody heurystyczne zapewniają skuteczność na poziomie ok. 90-95%, filtry oparte na wzorcach 50-70%, a czarne listy - 15-25%.

Czy na pewno wysłałeś?

Niezależnie od filtrów Thomasa Bayesa interesującym sposobem ograniczania spamu jest technika zwana Challenge-Response Filtering. W skrócie polega ona na tym, że do nadawcy listu, który nigdy wcześniej do nas nie pisał, filtr wysyła zapytanie. Dopiero kiedy nadawca udzieli na nie odpowiedzi (zazwyczaj musi po prostu odesłać list z powrotem), właściwy list jest dostarczany do naszej skrzynki odbiorczej. Ta prosta metoda zatrzymuje ponad 99,9% spamu, choć może być nieco uciążliwa zwłaszcza dla osób korzystających z poczty sporadycznie.

O ile to możliwe, technikę Challenge-Response Filtering najlepiej stosować równolegle z innymi. Najkorzystniejszym rozwiązaniem wydaje się więc zastosowanie filtru Bayesa lub heurystycznego filtrowania treści opartego na regułach dla wstępnego segregowania poczty, a następnie wykorzystywania techniki Challenge-Response do listów, które zostały oznaczone jako spam. Dzięki temu można mieć pewność, że nie przeoczyło się żadnej istotnej wiadomości. Wspomniane wcześniej komercyjne oprogramowanie SpamBully działa właśnie w taki sposób. Jeśli chcemy korzystać z oprogramowania open source, musimy połączyć ze sobą funkcjonalność dwóch różnych programów, np. SpamAssasin i Active Spam Killer.


TOP 200