По просьбам телезрителей высылаю мое творение ;)
antispam.pl - собственно скрипт. Там надо поправить
имя сервера, логин, пароль и свой e-mail
enabled.txt - список адресов. Если у вас в ящике письма на эти
адреса, то они грохнуты не будут. Полезно для списков рассылки.
spamaddr.txt - моя база спамеров. Включает как отдельные
адреса так и целые домены. При сравнении From и сточки из
базы используется поиск подстроки со всеми вытекающими.
Поэтому если в строчка в базе .co.kr, а письмо пришло с адреса
[EMAIL PROTECTED], то оно будет почикано.
spamsubj.txt - для заголовков. Если в subj встретится подстрока,
которая есть в этом файле, то письмо также будет почикано.
Вниманию новичков! Программа требует модуль Perl'а
Net::POP3. С этим проблем быть не должно - есть оно в
Debian'e (не помню правда название пакета), то на всякий случай
предупреждаю.
Установка: все складывается в один каталог, в котором есть
права на запись (для создания лога). После этого
chmod +x ./antispam.pl и все готово к употреблению. ;)
Запускать в этом же каталоге ./antispam.pl
Программа довольно болтлива и будет докладывать буквально
о каждом своем шаге.
--
С уважением, Виктор
#!/usr/bin/perl
use Net::POP3;
$pop3_server = "mail.permonline.ru";
$pop3_user = "username";
$pop3_passwd = "password";
$my_email = "[EMAIL PROTECTED]";
$spamaddr_file = "./spamaddr.txt";
$spamsubj_file = "./spamsubj.txt";
$enabled_file = "./enabled.txt";
$reject_file = "./reject.log";
sub WriteHeader {
my (@header) = @_;
my $i;
open(FO, ">>$reject_file");
foreach $i (@header) {
chomp($i);
print FO "$i\n";
}
print FO "\n";
close(FO);
}
sub SpamAddr {
my ($line) = @_;
my $i;
foreach $i (@spam_addr) {
return -1 if (index($line, $i) != -1);
}
return 0;
}
sub SpamSubj {
my ($line) = @_;
my $i;
foreach $i (@spam_subj) {
return -1 if (index($line, $i) != -1);
}
return 0;
}
sub CheckTo {
my ($line) = @_;
my $i;
foreach $i (@enabled_addr) {
return 0 if (index($line, $i) != -1);
}
return -1 if (index(lc($line), lc($my_email)) == -1);
return 0;
}
print "Loading spammer's addresses... ";
@spam_addr=();
open(F, $spamaddr_file);
while(<F>) {
chomp();
$s = $_;
push(@spam_addr, $s) if (index($s, "#") != -1 || $s ne "");
}
close(F);
print "done\n";
print "Loading spam letter subjects... ";
@spam_subj=();
open(F, $spamsubj_file);
while(<F>) {
chomp();
$s = $_;
push(@spam_subj, $s) if (index($s, "#") != -1 || $s ne "");
}
close(F);
print "done\n";
print "Loading enabled subjects... ";
@enabled_addr=();
open(F, $enabled_file);
while(<F>) {
chomp();
$s = $_;
push(@enabled_addr, $s) if (index($s, "#") != -1 || $s ne "");
}
close(F);
print "done\n";
print "Connect to $pop3_server... ";
$pop = Net::POP3->new($pop3_server) or die "Can't open connection to
$pop3_server: $!\n";
print "done\n";
print "Login as user $pop3_user... ";
$pop->login($pop3_user, $pop3_passwd) or die "Can't login to $pop3_server:
$!\n";
print "done\n";
print "Loading list of messages... ";
$msgnums = $pop->list or die "Can't get list of undeleted messages :$!\n";
print "done\n";
$count = 0;
foreach $i (keys %$msgnums) {
$flag = 0; $is_to = 0; $is_from = 0;
$count++;
print "Loading header message number $count... ";
$header = $pop->top($i, 0);
print "done\n";
print "Analising header message number $count... ";
foreach $line (@$header) {
chomp($line);
if (index(lc($line), "from:") == 0) {
$is_from = 1;
if (SpamAddr($line) == -1) {
$flag = 2;
next;
}
}
if (index(lc($line), "subject:") == 0) {
if (SpamSubj($line) == -1) {
$flag = 3;
next;
}
}
if (index(lc($line), "to:") == 0) {
$is_to = 1;
$flag = 1 if CheckTo($line) == -1;
next;
}
if (index(lc($line), "cc:") == 0) {
$is_to = 1;
$flag = 0 if CheckTo($line) == 0;
}
}
$flag = 4 if ($is_to == 0);
$flag = 5 if ($is_from == 0);
if ($flag > 0) {
print "deleted: not for me\n" if ($flag == 1);
print "deleted: address in spammer's base\n" if ($flag == 2);
print "deleted: subject in subject's base\n" if ($flag == 3);
print "deleted: field \"To:\" is absent\n" if ($flag == 4);
print "deleted: field \"From:\" is absent\n" if ($flag == 5);
WriteHeader(@$header);
$pop->delete($i);
} else {
print "done\n";
}
}
$pop->quit();
[email protected]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
# http://ezhe.ru/ses/list.html
.co.kr
.com.br
.co.jp
language.com
@monteckorea.com
@imart.ac
@naroot.net
@footday.com
@inpastel.com
@webpromotion2.com
@driverzzang.com
@almangi.com
@hanbit.com
@baulmedia.com
@test2.com
@sina.com
@kbf.info
@ddddd.com
@dohewon.com
@albaclub.com
@dreamx.net
@ibclub.tv
@digitalschool.com
@lanitdv.ru
@netian.com
@pa18.com
@drcodi.com
@test.net
@wirelessteam.net
@sohomart.org
@bcline.com
@themail.com
@xxx.com
@yahoo.com.cn
@naver.com
@eudoramail.com
@rediffmail.com
@namail.net
@kornet.net
@com.ne.kr
@shaw.ca
@stc.net
@wowmail.com
@noryangjin.com
@hanmir.com
@51wlan.com
@hitel.net
@empal.com
@hitkorea.biz
[EMAIL PROTECTED]
@clickij.com
@263.net
@163.net
@163.com
@0.com
@ggg.com
@test.com
@1234.com
@aaaa.com
@emailresults.net
@korea.com
@hanmail.net
@hanmail.com
@hananet.net
@gmate.com
@dreamwiz.com
@ibcine.tv
@medical4989.com
@shinbiro.com
@chinaut.net
@trendware.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
@bigmir.net
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
igold
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
@orgio.net
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED],com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
oktel999
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
porno
sex
erotic
[LOVE]
(Xxx)
(XXX)
(xxx)
zoo
ZOO