AntySpam

styczeń 31st, 2007

Dziś 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 :)

  1. jeśli blacklisted IP to zakończ połączenie
  2. niedozwolone znaki w adresie -> odrzuć
  3. jeśli autoryzowany user -> analiza treści
  4. jesli brak HELO/EHLO -> odrzuć
  5. blacklisted sender -> odrzuć
  6. blacklisted domain -> odrzuć
  7. whitelisted ip -> analiza treści
  8. whitelisted domain -> analiza treści
  9. whitelisted sender -> analiza treści
  10. serwer figuruje na RBL -> odrzuć
  11. HELO odpowiada localhost lub nierutowalnemu IP -> odrzuć
  12. HELO odpowiada serwerowi z naszej domeny *domain.foo -> odrzuć
  13. brak revdns -> odrzuć
  14. błąd double revdns -> odrzuć
  15. nadawca typu *@localhost.localdomain -> odrzuć
  16. brak rekordu MX dla domeny -> odrzuć
  17. rekord MX nie jest postaci FQDN-> odrzuć
  18. weryfikacja HELO a host_name niepoprawna -> odrzuć
  19. test SPF niepoprawny -> odrzuć
  20. nieuprawniony nadawca na multialiasy -> odrzuć
  21. zbyt dużo danych w nagłówku maila -> odrzuć
  22. wiecej niż 25 odbiorców -> odrzuć
  23. GreyList
  24. 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 ;)

Leave a Reply