Chciałbym napisać program (pod Windowsa), do wykrywania spamu w poczcie elektronicznej,
który na maszynie użytkownika działałby w ten sposób, że byłby pośrednikiem
między serwerem POP3 (ewentualnie IMAP) a dowolnym programem pocztowym.
Moj program miałby analizować treść wiadomośći, w przypadku wykrycia, że
jest to spam dodawać np. prefix do tematu lisu. Problem polega na tytm, jak
za pomocą mojego programu przechwycić list aby go zanalizować a następnie
dalej przekazać ten list do klienta pocztowego. Istnieją programy, które
realizują takie czynność w 1 sposób (np. SpamPal, Norton AntyVirus), jednakże
pracują one wyłącznie z ściśle określonymi klientami, np. z Outlook Express.
Wynika z tąd, że wyżej wymienione programy wykorzystują pewne wlaściwośći
wyspecyfikowanych kientów pocztowych, mi zaś zależy na uniwersalności.
Dlatego też wymyślilem 2 sposób. Mógłbym stworzyć MojProgram, który to
program 'udawalby' konkretny serwer POP3, odbierał poczte, analizowal ją,
i przetworzoną odsyłał do klienta pocztowego. Pozostaje tylko pytanie jak
miałoby sie to odbywać. Pierwsza opcja mogła by polegać na podmianie lub dopisaniu
wpisu adresu do serwera pop3 w pliku host. Np. jeśli MyProgram zostałby
skonfigurowany do pracy z serwerm pop3.wp.pl znalazłby sie tam wpis
pop3.wp.pl 127.0.0.1. Teraz mój program nasłuchiwałby na porcie 110,
przekirowwyałby zapytania do wlaściwego serwera, tu pop3.wp.pl (1). MojProgram
odebralby poczte (3), zaanalizowal ja i przekazal klientowi (2). Rozwiązanie
to bylo by o tyle niewłaściwe, że musiałbym zająć sie w tym wypadku
cała komunikacją z serwerem pop3.wp.pl (bo teoretycznie użytkownik może
wykorzystywać go do wielu innych rzeczy, nie tylko do odbierania poczty),
po drugie jak przy takim rozwiązaniu w kroku (1) dowiedzieć się z jakim
serwerem klient pocztowy chce sie polączyć.
1 sposób
-------------------------------------------------------------------
e-mail client (POP3) <-- MojProgram (POP3) <-- mail server
2 sposób
-------------------------------------------------------------------
(1)
e-mail client (POP3) -->
(2) (3)
<-- MojProgram(POP3) <-- mail server
W związku z powyższym chciałbym zapytać jak najlepiej rozwiązać ten problem i
czy moje rozumowanie wogóle jest poprawne.