AntySpam
styczeń 31st, 2007Dziś przyszła pora na analize wydajności antyspamu.
Cały system pocztowy opiera się na exim oraz exchange. Oczywiscie pierwsza linia obrony i jedynym elementem dostepnym ze swiata zewnętrznego jest exim. Priorytetem dla mnie jest informacja o stanie maila. Tzn albo mail został zaakceptowany i potrafie wskazać miejsce jego doręczenia albo został odrzucony na etapie weryfikacji połączenia smtp.
O co chodzi. Nie do zaakceptowania dla mnie jest fakt, że skaner antywirusowy lub antyspamowy przyjął przesyłkę i potem wysłał do /dev/null. Oto jak działa mój system
- jeśli blacklisted IP to zakończ połączenie
- niedozwolone znaki w adresie -> odrzuć
- jeśli autoryzowany user -> analiza treści
- jesli brak HELO/EHLO -> odrzuć
- blacklisted sender -> odrzuć
- blacklisted domain -> odrzuć
- whitelisted ip -> analiza treści
- whitelisted domain -> analiza treści
- whitelisted sender -> analiza treści
- serwer figuruje na RBL -> odrzuć
- HELO odpowiada localhost lub nierutowalnemu IP -> odrzuć
- HELO odpowiada serwerowi z naszej domeny *domain.foo -> odrzuć
- brak revdns -> odrzuć
- błąd double revdns -> odrzuć
- nadawca typu *@localhost.localdomain -> odrzuć
- brak rekordu MX dla domeny -> odrzuć
- rekord MX nie jest postaci FQDN-> odrzuć
- weryfikacja HELO a host_name niepoprawna -> odrzuć
- test SPF niepoprawny -> odrzuć
- nieuprawniony nadawca na multialiasy -> odrzuć
- zbyt dużo danych w nagłówku maila -> odrzuć
- wiecej niż 25 odbiorców -> odrzuć
- GreyList
- Callout verification failed -> dodaj odpowiednie nagłówki i zaakceptuj
Jeśli przesyłka przebrnęła już przez takie sito to trafia na analize treści. Oczywiscie pierwszy etap to skanowanie antywirusowe. Jeśli wirus wiadomo do kosza. Potem “rozprowadzenie” maili do wielu adresatów na konkretne adresy lokalne i skanowanie antyspamowe per user. Tu oczywiscie spam odpowiednio tagowany i jeśli wiecej niz 15 points to zostaje na exim w odpowiednim wspólnym katalogu. Jeśli jest spamem dla użytkownika a nie ma 15 pointów to trafia dalej do serwera exchange a tam już odpowiednie regółki otagowane maile umieszczają w odpowiednich folderach userów.
Mogłem pokusić się o skanowanie zawartości już na etapie połączenia, ale jest to zbyt ciężkie. Dlatego bardzo dużo bardzo restrykcyjnych regułek na rcpt, i duża whitelista
Greylista mimo, że czyszczona regularnie także przekracza 1mln wierszy.
SpamAssassin został dozbrojony o 14 dodatkowych modułów od testów OCR na DCC kończąc. Wszystkie ustawienia są trzymane w SQL.
mysql> select count(*) from bayes_token;
+———–+
| count(*) |
+———–+
| 15756989 |
+———–+
1 row in set (0.00 sec)
Narazie z wydajnościa nie mam problemu, ale dość trudno bez parsowania logów exim’a ocenić ilość przesyłek odbitych na etapie połączenia. Natomiast po zaakceptowaniu każda przsyłka jest skanowana antyspamowo i statystyki SA dziennie nie przekraczają 2000 wiadomości. Load serwera znikomy