Группа :: Система/Серверы
Пакет: spam_check
Главная Изменения Спек Патчи Загрузить Bugs and FR
Патч: spam_check-0.2.5-alt-config.patch
--- spam_check-0.2.5/spam_check.pl.orig 2006-06-29 01:43:12 +0600
+++ spam_check-0.2.5/spam_check.pl 2006-06-29 21:45:23 +0600
@@ -6,162 +6,10 @@
# - анализ имени хоста.
# v0.2.4 Copyright (c) 2003-2004 by Maxim Chirkov <mc@tyumen.ru>
-use strict ;
use BerkeleyDB;
use Socket;
-use constant DB_CACHE_SIZE => 5242880; # Объем ОЗУ для кэшироавния доступа к DB файлам.
-use constant TIMEOUT => 10; # Максимальное время проверки в сек.
-
-my $cfg_data_path="/var/log/antispam";
-my $cfg_block_dir="/usr/local/etc/postfix/antispam/blocklist";
-
-# Путь к лог файлу почтового сервера:
-my $cfg_maillog_file = "/var/log/maillog";
-
-# Путь к файлу с хэшем для предотвращения двойной проверки IP.
-# Чистка от старых записей производится через отдельный скрипт.
-# В качестве ключа выступает IP, в качестве значения время проверки этого IP.
-# Если время проверки отрицательное - то результат проверки показал признак
-# хоста пересылающего спам.
-my $cfg_checker_cache_file = "$cfg_data_path/checked_ip.db";
-
-# Путь к файлу с логом проверок. Если вместо файла указано "-" - вывод в STDOUT
-my $cfg_log_file = "$cfg_data_path/antispam.log";
-
-# Путь к файлу с данными о незавершенных в прошлой итерации почтовых запросов.
-my $cfg_active_mail_file = "$cfg_data_path/.active_mail";
-
-# Уровень говорливости лога: 0 - в лог только ошибки,
-# 1 - в лог только спамовские хосты,
-# 2 - в лог все проверки.
-# 3 - debug
-my $cfg_verbose_level = 2;
-
-# Файл в котором будет формираться список блокировки спамовских хостов.
-my $cfg_blocklist_file = "$cfg_block_dir/block_list.txt";
-
-# Режим работы с лог файлом:
-# 0 - cron, периодический запуск через cron
-# 1 - tail, запускается один раз, постоянно следит за изменением в логе и
-# осуществляет проверку сразу после соединения хоста (в cron
-# прописывать не нужно).
-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";
-
-# Минамальное время в сек. между запуском процесса перегенерации файла блокировки,
-# необходимо только для "tail" режима работы скрипта (cfg_log_watch_mode=1)
-# Определяет в общем виде быстроту реакции на спам.
-my $cfg_blocklist_rebuild_interval = 20;
-
-# Формат списка блокировки:
-# 0 - "access" - стандартный access файл для MTA Postfix
-# 1 - формат rbldnsd
-my $cfg_blocklist_format = 0;
-
-# Путь к файлу с локом.
-my $cfg_lock_file = "$cfg_data_path/.lock";
-
-# Максимальное время жизни лока, после которого лок файл будет удален.
-my $cfg_lock_timetolive = 3600; # 1 час.
-
-# Путь к файлу с последней просмотренной позицией лога.
-my $cfg_seek_file = "$cfg_data_path/.seek";
-
-# Описание весов для различных факторов определяющих вероятность спама.
-my %cfg_spam_factor = (
-
- # Обратная проверка на наличие открытых сетевых протов.
- "open_ports" => {
- "25" => -3.5, # Уменьшаем вероятность спама, так как может быть это нормаольный почтовый сервер.
- "80" => -3, # Уменьшение FP, для хостов без MTA
- "110" => -3, # Уменьшение FP, для хостов без MTA
-
- "1025" => 1, # Сигнализирует о Windows машине.
- "5000" => 1.5, # 5000 (UPNP) порт показывает на вероятно взломанную машину
- "2001" => 1.5, # Порты которые используют троянские программы.
- "1025" => 1.5,
- "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, # Вероятно рассылка через открытые прокси.
- "1080" => 0.8,
- "8080" => 0.8,
- },
-
- # Вес уровня домена от которого поступила почта, 0 - домен не резолвится.
- #
- "domain_level" => {
- 0 => 3,
- 1 => 0, # test.com
- 2 => -0.5, # mail.test.com
- 3 => 1, # bzq-218-1-51.cable.test.com
- 4 => 1.6, # 23.dsl-1.cable.test.com
- 5 => 1.8, # 34.53.12.53.test.com
- "N" => 2, # если уровень не описан выше цифрами.
- },
-
- # Regex маски слов встречающихся в имени домена.
- "domain_mask" => {
- '(client|dial|dsl|cable|pool|ppp|node)' => 2,
- '\-\d+\-\d+\-\d+' => 3,
- 'smtp|mail|relay' => -3,
- },
-
- # Коэффициент умножения веса, для последующих соединений с данного IP за
- # за текущий день.
- # - Если равен 1, то пересчет не производится, блокирование в зависимости от числа запросов запрещено.
- # - Если равен 0, апдейт базы при повторных запросах не производится вообще.
- "reconnect_mul" => 1.0, # При каждом повторном коннекте в течении дня умножаем вес на 1.1
-
- # Минимальный вес при котором блокируем IP как спамера.
- "block_weight" => 3 # Если суммарный вес получился >= 3, то считаем хост спамером.
-);
-
-
-# Маска для выборки из почтового лога строк отражающих соедниение с почтовым сервером.
-# В первой скобке - имя хоста, во второй IP
-# Для postfix:
-my $cfg_maillog_connect_mask=': connect from ([^\[]+)\[(\d+\.\d+\.\d+\.\d+)\]\s*';
-my $cfg_maillog_disconnect_mask=': disconnect from ([^\[]+)\[(\d+\.\d+\.\d+\.\d+)\]\s*';
-
-# Формат анализируемого лога:
-# 0 - postfix
-# 1 - sendmail
-my $cfg_log_format = 0;
-
-# Для sendamil (у sendmail нет connect/disconnect сообщений в логе) используется
-# только $cfg_maillog_disconnect_mask (раскомментируйте строку ниже):
-# $cfg_maillog_disconnect_mask=': from=<[^>]*>,.* relay=([^\[ ]+)\s*\[(\d+\.\d+\.\d+\.\d+)\]\s*';
-
-# Маска для выборки из почтового лога строк по которым определяем уже отвергнутые соединения.
-# Чтобы не проверять лишний раз. В скобке IP.
-my $cfg_maillog_reject_mask=': reject: RCPT from [^\[]+\[(\d+\.\d+\.\d+\.\d+)\]: 55.* (Client host rejected|Service unavailable)';
-
-# Маска по имени домена, при совпадении которой будет производится проверка.
-#my $cfg_block_mask='\d[\-\.](dsl|adsl|dial|cable)\.';
-my $cfg_block_mask="";
-
-# Маска хостов для которых не выполняется проверка на спам (для .ru шлем abuse, а не блокирвем сгоряча).
-my $cfg_ignore_mask='\.(ru|su|ua|kg|lv|by|kz|ge|uz|am|az|md|tj)$';
-
-# Список IP адресов для которых не будет выполняться проверка (локальные IP)
-my @cfg_local_ip_list = ("1.2.3.0/24", "192.168.0.0/16");
-
-################################################################################
-# End of configuration block
-################################################################################
+require "/etc/spam_check/spam_check.conf";
if ($cfg_log_watch_mode == 1){
# "tail" режим слеженеия за логом.
--- spam_check-0.2.5/util/clean_dn.pl.orig 2006-06-29 02:10:30 +0600
+++ spam_check-0.2.5/util/clean_dn.pl 2006-06-29 23:18:03 +0600
@@ -1,35 +1,10 @@
#!/usr/bin/perl
# Скипт для периодической чистки db-базы от устаревших записей.
-use strict ;
use BerkeleyDB;
use Socket;
-use constant DB_CACHE_SIZE => 5242880; # Объем ОЗУ для кэшироавния доступа к DB файлам.
-
-# Минимальный вес определяющий IP как спамера.
-my $cfg_block_weight = 3;
-
-# Время в секундах хранения инфромации об IP не помеченном как спамер в хэш-базе
-# Информация об спамовских хостах хранится вечно, чтобы не допускать дубликатов
-# в блоклисте, если нужно почистить и спамовские хосты установите
-# заведомо большое значение cfg_block_weight
-
-my $cfg_nospam_timetolive = 30 * 24*60*60; # 30 дней.
-
-# Путь к файлу с хэшем.
-my $cfg_data_path="/var/log/antispam";
-my $cfg_checker_cache_file = "$cfg_data_path/checked_ip.db";
-
-# Уровень говорливости стандартного вывода.
-# 0 - вывод только ошибок
-# 1 - вывод информации по каждому удаляемому IP.
-# 2 - вывод информации по всем IP в базе.
-my $cfg_verbose_level = 2;
-
-###############################################################################
-# End of configuration block
-###############################################################################
+require "/etc/spam_check/clean_dn.conf";
# Текущее время и текущий день.
my $now_time = time();