diff -uNr spam_check-0.2.3/CHANGES spam_check-0.2.4/CHANGES
--- spam_check-0.2.3/CHANGES	Tue Jul  8 16:49:14 2003
+++ spam_check-0.2.4/CHANGES	Fri Feb 13 15:57:27 2004
@@ -1,13 +1,29 @@
+Изменения между версиями 0.2.3 и 0.2.4
+--------------------------------------------
+  
+* Конфигурация по умолчанию приведена к виду оптимизированному для минимизации
+  ложных срабатываний и блокирования адресов без обратной DNS записи.
+
+* dsl_stoplist.txt приведен к общему виду и рекомендован к обязательному применению
+  с текущей конфигурацией по умолчанию.
+  
+* Периодическая синхронизация хэша проверенных IP на диск, на случай экстренного 
+  убивания процесса во время работы.
+
+* Более правильный вариант $cfg_blocklist_rebuild_cmd, заккоментирован из-за
+  необходимости изменения конфигурации MTA, хэш со списком блокировки теперь 
+  называется block_list.db вместо block_list.txt.db
+
 Изменения между версиями 0.2.2 и 0.2.3
 --------------------------------------------
 
 * Добавлен пример блокировки больших DSL сетей (dsl_stoplist.txt).
 
 * Отлажена работа с логами sendmail (раньше была гарантирована только работа 
-  с postfix). Включение работы с sendmail через директиву "$cfg_log_format=1"
+  с postfix). Включение работы с sendmail через директиву $cfg_use_sendmail_log_format
   При использовании sendmail учет блокировок DNSBL системами не производится.
-
-* Изменено содержимое параметра конфигурации $cfg_maillog_disconnect_mask
+  Изменено содерхимое параметра конфигурации $cfg_sendmail_disconnect_mask, 
+  для sendmail используется только эта строка.
 
 Изменения между версиями 0.2.1 и 0.2.2
 --------------------------------------------
diff -uNr spam_check-0.2.3/TODO spam_check-0.2.4/TODO
--- spam_check-0.2.3/TODO	Sat Jun 21 19:04:36 2003
+++ spam_check-0.2.4/TODO	Fri Feb 13 16:11:43 2004
@@ -1,2 +1 @@
-- утилита для работы с .db файлом, удаление IP, изменение веса и параметров.
-
+- утилита для работы с .db файлом, удаление IP|изменение веса и параметров.
diff -uNr spam_check-0.2.3/VERSION spam_check-0.2.4/VERSION
--- spam_check-0.2.3/VERSION	Tue Jul  8 16:33:34 2003
+++ spam_check-0.2.4/VERSION	Fri Feb 13 16:11:47 2004
@@ -1 +1 @@
-0.2.3
\ No newline at end of file
+0.2.4
\ No newline at end of file
diff -uNr spam_check-0.2.3/dsl_stoplist.txt spam_check-0.2.4/dsl_stoplist.txt
--- spam_check-0.2.3/dsl_stoplist.txt	Tue Jul  8 15:30:38 2003
+++ spam_check-0.2.4/dsl_stoplist.txt	Fri Feb 13 15:45:00 2004
@@ -5,54 +5,13 @@
 #			      reject_maps_rbl
 #############################################################################
 
-/dsl.*\.swbell\.net$/	553 You have been identified as a spammer. Go Away.
-/-[:digit:]+.atgi.net$/		553 You have been identified as a spammer. Go Away.
-/^adsl-.*\.bellsouth\.net$/	553 You have been identified as a spammer. Go Away.
-/\.adsl\.snet\.net$/		553 You have been identified as a spammer. Go Away.
-/[:digit:]+\.[:alpha:]\.rr\.com$/		553 You have been identified as a spammer. Go Away.
-/[:digit:]+\.subscriber\.vzavenue\.net$/	553 You have been identified as a spammer. Go Away.
-/[:digit:]+\.[:alpha:]+\.client2\.attbi\.com$/	553 You have been identified as a spammer. Go Away.
-/dsl.*\.pacbell\.net$/		553 You have been identified as a spammer. Go Away.
-/[:digit:]+[:alpha:]+[:digit:]+\.telia\.com$/	553 You have been identified as a spammer. Go Away.
-/[:alnum:]+\.[:alpha:]+\.verizon\.net$/	553 You have been identified as a spammer. Go Away.
-/\.ipt\.aol\.com$/	553 You have been identified as a spammer. Go Away.
-/\.in-addr\.btopenworld\.com$/	553 You have been identified as a spammer. Go Away.
-/\.cpe\.net\.cable\.rogers\.com$/	553 You have been identified as a spammer. Go Away.
-/\.adsl\.skynet\.be$/	553 You have been identified as a spammer. Go Away.
-/[:digit:]\.dsl-verizon\.net$/	553 You have been identified as a spammer. Go Away.
-/[:digit:]+\.atdn\.aol\.com$/	553 You have been identified as a spammer. Go Away.
-/[:digit:]+\.[:alpha:]+\.wanadoo\.fr$/	553 You have been identified as a spammer. Go Away.
-/[:digit:]+\.[:alpha:]+\.rr\.com$/	553 You have been identified as a spammer. Go Away.
-/[:digit:]+\.[:alpha:]+\.comcast\.net$/	553 You have been identified as a spammer. Go Away.
-/\.pool.*\.interbusiness\.it$/	553 You have been identified as a spammer. Go Away.
-/\.cablep\.bezeqint\.net$/	553 You have been identified as a spammer. Go Away.
-/[:digit:]\.[:alpha:]+\.bezeqint\.net$/	553 You have been identified as a spammer. Go Away.
-/[:alnum:]+\.[:alpha:]+\.telus\.net$/	553 You have been identified as a spammer. Go Away.
-/\.pth\.iprimus\.net\.au$/	553 You have been identified as a spammer. Go Away.
-/\.DSL\.surnet\.cl$/	553 You have been identified as a spammer. Go Away.
-/\.dialup\.citynet\.net$/	553 You have been identified as a spammer. Go Away.
-/\.nsw\.bigpond\.net\.au$/	553 You have been identified as a spammer. Go Away.
-/\.adsl\.terra\.cl$/	553 You have been identified as a spammer. Go Away.
-/\.dip\.t-dialin\.net$/	553 You have been identified as a spammer. Go Away.
-/\.pooles\.rima-tde\.net$/	553 You have been identified as a spammer. Go Away.
-/[:digit:]+\.[:alpha:]+\.shawcable\.net$/	553 You have been identified as a spammer. Go Away.
-/\.dyn\.optonline\.net$/	553 You have been identified as a spammer. Go Away.
-/\.lax\.centurytel\.net$/	553 You have been identified as a spammer. Go Away.
-/node.*\.a2000\.nl$/	553 You have been identified as a spammer. Go Away.
-/\.ip\.alltel\.net$/		553 You have been identified as a spammer. Go Away.
-/\.dial\.bluemarble\.net$/	553 You have been identified as a spammer. Go Away.
-/[:digit:]\.sasknet\.sk\.ca$/		553 You have been identified as a spammer. Go Away.
-/\.dsl\.pipex\.com$/		553 You have been identified as a spammer. Go Away.
-/[:digit:]+\.btcentralplus\.com$/   553 You have been identified as a spammer. Go Away.
-/[:digit:]+\.[:alpha:]+\.adelphia\.net$/	553 You have been identified as a spammer.
-/DSL.*\.netvision\.net\.il$/	553 You have been identified as a spammer.
-/[:digit:]+-[:digit:]+-[:digit:]+\.*\.chello\.se$/	553 You have been identified as a spammer.
-/[:digit:]+\.[:alpha:]+\.wideopenwest.com$/	553 You have been identified as a spammer.
-/[:digit:]+\.[:alpha:]+\.surfer\.at$/	553 You have been identified as a spammer.
-/cable\..*\.blueyonder\.co\.uk$/	553 You have been identified as a spammer.
-/host-[:digit:]+\.ardmore\.net$/	553 You have been identified as a spammer.
-/[:digit:]+\.[:alpha:]+\.everestkc\.net$/	553 You have been identified as a spammer.
-/[:digit:]+\.[:alpha:]+\.cox\.net$/	553 You have been identified as a spammer.
-/\.dial\.rol\.ru$/	553 You have been identified as a spammer.
-/dsl\.brasiltelecom\.net\.br$/	553 You have been identified as a spammer.
-/dsl\..*\.estpak\.ee$/	553 You have been identified as a spammer. 
+# ïÂÝÉÊ ×ÉÄ *XXX*.domain.net
+/^dsl.*\..*\..*/i       553 AUTO_DSL You have been identified as a spammer. Go Away.
+/[ax]dsl.*\..*\..*/i    553 AUTO_XDSL You have been identified as a spammer. Go Away.
+/client.*\..*\..*/i     553 AUTO_CLIENT You have been identified as a spammer. Go Away.
+/cable.*\..*\..*/i      553 AUTO_CABLE You have been identified as a spammer. Go Away.
+/pool.*\..*\..*/i       553 AUTO_POOL You have been identified as a spammer. Go Away.
+/dial.*\..*\..*/i       553 AUTO_DIAL You have been identified as a spammer. Go Away.
+/ppp.*\..*\..*/i        553 AUTO_PPP You have been identified as a spammer. Go Away.
+/dslam.*\..*\..*/i      553 AUTO_DSLAM You have been identified as a spammer. Go Away.
+/node.*\..*\..*/i       553 AUTO_NODE You have been identified as a spammer. Go Away.
diff -uNr spam_check-0.2.3/law_notes.txt spam_check-0.2.4/law_notes.txt
--- spam_check-0.2.3/law_notes.txt	Thu Jan  1 05:00:00 1970
+++ spam_check-0.2.4/law_notes.txt	Fri Feb 13 15:53:28 2004
@@ -0,0 +1,62 @@
+Чем страшен спам.
+
+Многие спамеры ссылаются на статьи Конституции в своих посланиях, ссылаясь
+на свободу обмена информацией любыми доступными способами, всегда забывая,
+что при реализации собственных свобод никаким образом не должны нарушаться 
+права и свободы других граждан. Любая деятельность не в праве реализовывать
+собственные свободы в ущерб свободе других или нарушая какие-либо законодательные
+акты.
+
+Итак, спамеры ущемляют права:
+ - Организаций обеспечивающих работу сети и доступ пользователей в Интернет:
+     - Провайдерам приходится платить за трафик возникающий из за пересылки спама;
+     - Создается лишняя нагрузка на сервера и каналы связи, необоснованные затраты 
+       на обновление оборудования и поддержку;
+     
+ - Конечных пользователей:
+     - Затраты на получения сама (спам оплачивают из своего кармана его получатели)
+     - Затраты рабочего времени на чтение и фильтрацию ненужной корреспонденции;
+     - Вероятность пропустить нужное письмо, которое может остаться незамеченным
+       среди спама;
+     - Зараженные спамерскими вирусами машины рассылают спам за счет пользователя,
+       вплость до блокирования работы из-за паразитного трафика.
+
+ 
+
+Слабость закона:
+
+Жить нужно по закону, а не по понятиям. В вопросах спама, такое сегодня невозможно.
+Закон абсолютно не способен защитить от этого явления. Да же введение
+нормативных актов не способно помочь - подавать в суд по факту каждого письма
+содержащего спам нереально (ежедневно я получаю около 500 писем со спамом,
+из них 99% разосланы анонимно без возможности отследить реального отправителя). 
+Причем само понятие спам не имеет четкой формулировки и является субъективным.
+
+Нарушаемые статьи закона (скопировано с http://www.internet-law.ru/articles/4.htm):
+
+1. В соответствии с п.1 ст.5 Закона "О Рекламе": "Реклама должна быть
+распознаваема без специальных знаний или без применения технических
+средств именно как реклама непосредственно в момент ее представления
+независимо от формы или от используемого средства распространения".
+
+2. В соответствии с п.2 ст.5 Закона "О Рекламе": "Реклама на территории
+Российской Федерации распространяется на русском языке и по усмотрению
+рекламодателей дополнительно на государственных языках республик и
+родных языках народов Российской Федерации".
+
+3. В соответствии с п.3 ст.5 Закона "О Рекламе": "Если деятельность
+рекламодателя подлежит лицензированию, в рекламе должны быть указаны
+номер лицензии, а также наименование органа, выдавшего эту лицензию".
+
+4. В соответствии с ст.7 Закона "О Рекламе": "Недостоверной является
+реклама, в которой присутствуют не соответствующие действительности
+сведения в отношении ...информации о самом рекламодателе. Недостоверная
+реклама не допускается".
+
+5. В соответствии с ст.10 Закона "О Рекламе": "Использование в радио-,
+теле-, видео-, аудио- и кинопродукции, а также в иной продукции и
+распространение иными способами скрытой рекламы, то есть рекламы,
+которая оказывает не осознаваемое потребителем воздействие на его
+восприятие, в том числе путем использования специальных видеовставок
+(двойной звукозаписи) и иными способами, не допускаются".
+
diff -uNr spam_check-0.2.3/spam_check.pl spam_check-0.2.4/spam_check.pl
--- spam_check-0.2.3/spam_check.pl	Tue Jul  8 16:45:28 2003
+++ spam_check-0.2.4/spam_check.pl	Fri Feb 13 16:04:13 2004
@@ -4,7 +4,7 @@
 #      - обратная проверка типовых взламываемых открытых потов;
 #      - интенсивность рассылки;
 #      - анализ имени хоста.
-# v0.2.3 Copyright (c) 2003 by Maxim Chirkov <mc@tyumen.ru>
+# v0.2.4 Copyright (c) 2003-2004 by Maxim Chirkov <mc@tyumen.ru>
 
 use strict ;
 use BerkeleyDB;
@@ -49,15 +49,20 @@
 my $cfg_log_watch_mode = 0;
 
 # Команда которая будет вызываться в случае обновления файла блокировки.
+my $cfg_blocklist_rebuild_cmd = "/usr/local/sbin/postmap -w $cfg_block_dir/block_list.txt";
+
+# более правильный вариант.
+# my $cfg_blocklist_rebuild_cmd = "/usr/local/sbin/postmap -w $cfg_block_dir/block_list.txt; mv -f $cfg_block_dir/block_list.txt.db $cfg_block_dir/block_list.db";
+
+# вариант при экспорте на DNSBL сервер.
 # my $cfg_blocklist_rebuild_cmd = "/usr/bin/gzip -c $cfg_block_dir/block_list.txt > $cfg_block_dir/block_list.txt.gz.new;mv $cfg_block_dir/block_list.txt.gz.new $cfg_block_dir/block_list.txt.gz";
-my $cfg_blocklist_rebuild_cmd = "/usr/local/sbin/postmap $cfg_block_dir/block_list.txt";
 
 # Минамальное время в сек. между запуском процесса перегенерации файла блокировки,
 # необходимо только для "tail" режима работы скрипта (cfg_log_watch_mode=1)
 # Определяет в общем виде быстроту реакции на спам.
-my $cfg_blocklist_rebuild_interval = 10;
+my $cfg_blocklist_rebuild_interval = 20;
 
-# Формат списка блокировки: 
+# Формат списка блокировки:
 #   0 - "access" - стандартный access файл для MTA Postfix
 #   1 - формат rbldnsd
 my $cfg_blocklist_format = 0;
@@ -76,7 +81,10 @@
 
     # Обратная проверка на наличие открытых сетевых протов.
     "open_ports" => {
-	"25" => -0.5, # Уменьшаем вероятность спама, так как может быть это нормаольный почтовый сервер.
+	"25" => -3.5, # Уменьшаем вероятность спама, так как может быть это нормаольный почтовый сервер.
+        "80" => -3, # Уменьшение FP, для хостов без MTA
+        "110" => -3,  # Уменьшение FP, для хостов без MTA
+
 	"1025" => 1, # Сигнализирует о Windows машине.
 	"5000" => 1.5, # 5000 (UPNP) порт показывает на вероятно взломанную машину
 	"2001" => 1.5, # Порты которые используют троянские программы.
@@ -84,6 +92,7 @@
 	"1400" => 1.5,
 	"9100" => 1.5,
 	"3389" => 1.5,
+	"4444" => 1,
 	#"1000" => 2, "1058" => 2, "3000" => 2, "1024" => 2, "666" => 2, "50505" => 2,
 	#"5001" => 2, "12345" => 2, "12346" => 2, "30303" => 2, 	"31337" => 2, 
 	"3128" => 0.8, # Вероятно рассылка через открытые прокси. 
@@ -94,7 +103,7 @@
     # Вес уровня домена от которого поступила почта, 0 - домен не резолвится.
     #  
     "domain_level" => {
-	    0 => 0,
+	    0 => 3,
 	    1 => 0,    # test.com
 	    2 => -0.5, # mail.test.com
 	    3 => 1,    # bzq-218-1-51.cable.test.com
@@ -106,15 +115,15 @@
     # Regex маски слов встречающихся в имени домена.
     "domain_mask" => {
 	'(client|dial|dsl|cable|pool|ppp|node)' => 2,
-	'\-\d+\-\d+\-\d+' => 1.5,
-	'smtp|mail' => -0.5,
+	'\-\d+\-\d+\-\d+' => 3,
+	'smtp|mail|relay' => -3,
     },
 
     # Коэффициент умножения веса, для последующих соединений с данного IP за
     # за текущий день. 
     # - Если равен 1, то пересчет не производится, блокирование в зависимости от числа запросов запрещено.
     # - Если равен 0, апдейт базы при повторных запросах не производится вообще.
-    "reconnect_mul" => 1.1, # При каждом повторном коннекте в течении дня умножаем вес на 1.1
+    "reconnect_mul" => 1.0, # При каждом повторном коннекте в течении дня умножаем вес на 1.1
 
     # Минимальный вес при котором блокируем IP как спамера.
     "block_weight" => 3 # Если суммарный вес получился >= 3, то считаем хост спамером.
@@ -138,7 +147,7 @@
 
 # Маска для выборки из почтового лога строк по которым определяем уже отвергнутые соединения.
 # Чтобы не проверять лишний раз. В скобке IP.
-my $cfg_maillog_reject_mask=': reject: RCPT from [^\[]+\[(\d+\.\d+\.\d+\.\d+)\]: 550 Service unavailable;';
+my $cfg_maillog_reject_mask=': reject: RCPT from [^\[]+\[(\d+\.\d+\.\d+\.\d+)\]: 55';
 
 # Маска по имени домена, при совпадении которой будет производится проверка.
 #my $cfg_block_mask='\d[\-\.](dsl|adsl|dial|cable)\.';
@@ -181,7 +190,8 @@
     unlink($cfg_lock_file);
     $db_obj->db_sync();
     untie %chk_cache;
-    die "SIGKILL ! Flushing buffers and aborting...";
+    print STDERR "SIGKILL ! Flushing buffers and aborting...";
+    exit(0);
 };
 local ($SIG{INT}) = \&kill_sig;
 local ($SIG{TERM}) = \&kill_sig;
@@ -340,6 +350,7 @@
 				if(check_spamer_in_ip_block(\%chk_ip, \%chk_cache) == 1){
 				    # Если были блокировки спамеров, перечитываем хэш для файла достпа.
 				    system("$cfg_blocklist_rebuild_cmd");
+				    $db_obj->db_sync();
 				}
 				%chk_ip = ();
 			    }
diff -uNr spam_check-0.2.3/unknown_notes.txt spam_check-0.2.4/unknown_notes.txt
--- spam_check-0.2.3/unknown_notes.txt	Thu Jan  1 05:00:00 1970
+++ spam_check-0.2.4/unknown_notes.txt	Fri Feb 13 15:47:24 2004
@@ -0,0 +1,29 @@
+Для наиболее продуктивного блокирования спама с доменов не имеющих обратную DNS
+записиь, рекомендую использовать следующие параметры (блокировать unknown хосты
+если при обратной проверке соединения на 25 порт не принимаются):
+
+Блок конфигурации "%cfg_spam_factor":
+    Секция "open_ports":
+       "25" => -6.5,
+       "80" => -5, # Уменьшение FP, для хостов без MTA
+       "110" => -5,  # Уменьшение FP, для хостов без MTA
+
+    Секция "domain_level":
+	0 => 5,  # Большой вес для unknown хостов, противовес через 25 порт.
+
+    Секция "domain_mask":
+	'\-\d+\-\d+\-\d+' => 5.0, # Осторожно, может сработать для нормальных хостов, но должно компенсироваться через проверку open_ports
+	'smtp|mail|relay' => -5.0,
+
+В dsl_stoplist.txt рекомендуется добавить:
+	
+/^dsl.*\..*\..*/i       553 AUTO_DSL You have been identified as a spammer. Go Away.
+/[ax]dsl.*\..*\..*/i    553 AUTO_XDSL You have been identified as a spammer. Go Away.
+/client.*\..*\..*/i     553 AUTO_CLIENT You have been identified as a spammer. Go Away.
+/cable.*\..*\..*/i      553 AUTO_CABLE You have been identified as a spammer. Go Away.
+/pool.*\..*\..*/i       553 AUTO_POOL You have been identified as a spammer. Go Away.
+/dial.*\..*\..*/i       553 AUTO_DIAL You have been identified as a spammer. Go Away.
+/ppp.*\..*\..*/i        553 AUTO_PPP You have been identified as a spammer. Go Away.
+/dslam.*\..*\..*/i      553 AUTO_DSLAM You have been identified as a spammer. Go Away.
+/node.*\..*\..*/i       553 AUTO_NODE You have been identified as a spammer. Go Away.
+
