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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *