Kategoria: ADSL, Linux
Tagi: ,

Zmienne IP i spamerskie IP

2008 Styczeń 24 – 22:15

Zdarzyło mi się kilkakrotnie, że mój spamassassin bezwzględnie potraktował mejle wysłane do mnie z Neostrady, tak, że po dłuższych poszukiwaniach znajdywałem je w katalogu ze spamem. Mimo że dzieje się to sporadycznie zdecydowałem przeciwdziałać.

Zaczęłem przeczesywać nagłowki odfiltrowanych mejli. Obok bezwzględnej potrzeby większości ludzi, żeby wysyłać mejle w HTMLu, pojawił się następujący rzadko spotykany komunikat RCVD_IN_SORBS_DUL (lub RCVD_IN_SBL, RCVD_IN_XBL, RCVD_IN_BL_SPAMCOP_NET) i mejl z automatu poszedł do spamu.
Dalej przeczesując nagłówek znalazłem:
2.0 RCVD_IN_SORBS_DUL RBL: SORBS: sent directly from dynamic IP address * [83.20.5.140 listed in dnsbl.sorbs.net]
Sprawa wydała się oczywista, dostałem mejla ze spamerskiego IP… tyle że to IP mojego znajomego !
Może on ma wirusa i przez to został wpisany na blacklistę ?
NIE ! Po prostu poprzedni użytkownik tego IP był spamerem !

Zdarzało mi się również słyszeć narzekanie, że w niektóre dni skrzynka pocztowa pocztowa „nie działa”, a co się okazało, po prostu odrzuca połączenia… co ma jedno z drugim wspólnego ?
Mianowicie to że niektóre skrzynki pocztowe nie zezwalają na połączenia ze spamerskich adresów IP !

Ok, ale co teraz ? Drugi problem można rozwiązać łącząc się ponownie, a pierwszy ?
Jak już wysłałeś mejla który nie doszedł, to możesz jedynie wysłać go ponownie, ale co zrobić żeby tak się nie działo.

I jak zwykle z pomocą przychodzi linux ! Rozwiązanie to jest dla posiadaczy routera/serwera adsl opartego na linuxie.
Piszemy prosty skrypcik, o przykładowej nazwie 0run_block (zero na początku jest istotne !):

#!/bin/bash
# do wrzucenia do /etc/ppp/ip-up.d
#IP=`ifconfig ppp0 | grep "inet addr" | sed s/^.*inet\ addr:// | sed s/\ \ P-t-P.*$//`
IP=$IPLOCAL
BLOCK=0

#--SpamCop
RETURN=`wget -q -O - "http://spamcop.net/w3m?action=checkblock&ip=$IP" | grep "^<p>$IP listed in bl.spamcop.net"`
if [ "$RETURN" ]; then
BLOCK=`expr $BLOCK + 1`
fi

#--DSBL
RETURN=`wget -q -O - "http://dsbl.org/listing?$IP" | grep "^<b>State:</b> <a href=\"http://dsbl.org/faq-listed\">Listed"`
if [ "$RETURN" ]; then
BLOCK=`expr $BLOCK + 1`
fi

#--AHBL
RETURN=`wget -q -O - "http://www.ahbl.org/lookup?ip=$IP" | grep "strong"`

RETURNA=`echo $RETURN | grep "This host is listed in tor.ahbl.org"`
if [ "$RETURNA" ]; then
BLOCK=`expr $BLOCK + 1`
fi

RETURNA=`echo $RETURN | grep "This host is listed in dnsbl.ahbl.org"`
if [ "$RETURNA" ]; then
BLOCK=`expr $BLOCK + 1`
fi

#--SpamHaus SBL XBL PBL
# nie da sie zautomatyzowac

echo $IP\|\|$BLOCK >> /root/logblock

if [ $BLOCK -gt 0 ]; then
sleep 3
killall pppd
sleep 3
/etc/init.d/run_dial
fi

Następnie umieszczamy plik w katalogu:
/etc/ppp/ip-up.d

Działanie skryptu polega na tym, że od razu po otrzymaniu dynamicznego adresu IP od twojego prowajdera, demon pppd automatycznie uruchamia skrypty w katalogu ip-up.d. Nasz skrypt sprawdza w kilku (w 4) bazach czy otrzymany adres IP nie jest na blackliscie, jeśli nie jest, skrypt wyłącza się i połączenie z internetem jest nawiązane.

Jeśli jednak nasz nowy adres IP jest chociażby na jednej blackliscie, skrypt zabija demona pppd, po czym nawiązuje nowe połączenie, z nadzieją że nowy adres nie będzie spamerski. Skrypt robi to w kółko do czasu otrzymania czystego adresu IP.

Od czasu używania tego skryptu, ani ja, ani inne osoby którym go zainstalowałem nie miały problemów z pocztą. Lektura tworzonych w /root/logblock logów, pokazuje że spamerski adres IP trafia się każdemu raz na 1-2 tygodnie. Zdarzyło mi się nawet że otrzymałem dwa razy spamerski IP pod rząd !

Skrypt nie wymaga żadnych specjalnych pakietów. Działa u mnie na ubuntu/debian na Neostradzie z modemem SpeedTouch.

Po co zero na poczatku w nazwie pliku ?
Skrypty w katalogu ip-up.d sa uruchamiane w porzadku alfabetycznym. Chcemy zeby nasz skrypt uruchomil sie przed DynDNS, ntpdate itp, ale za to po otrzymaniu serwerow DNS.

Sorry, comments for this entry are closed at this time.