Настройка · 5 min read · Sep 28, 2025

Идеальный SpamSnake - Ubuntu Jaunty Jackalope - Страница 5

17.11 Установите разрешения, чтобы все работало вместе

chown -R postfix:www-data /var/spool/MailScanner   
chown -R postfix:www-data /var/lib/MailScanner   
chown -R postfix:www-data /var/spool/postfix/hold   
chmod -R ug+rwx /var/spool/postfix/hold   
chmod -R u+rwx,g+rx /var/spool/MailScanner/quarantine

Наконец, убедитесь, что вы перезапустили MailScanner:

killall mailscanner
check_mailscanner

Проверьте настройку:

spamassassin -x -D -p /opt/MailScanner/etc/spam.assassin.prefs.conf --lint

Проверьте наличие строк, таких как:

debug: bayes: Database connection established   
debug: bayes: found bayes db version 3   
debug: bayes: Using userid: 2

Вы должны увидеть строки с DCC, Pyzor и Razor, которые говорят о загрузке плагина и, надеюсь, без ошибок.

Завершая эту часть, нам нужно добавить задания cron, которые будут очищать/обновлять, вы, вероятно, видели сообщение об этом после завершения скрипта установки MailScanner.

Сначала отредактируйте conf.php и установите ‘QUARANTINE_DAYS_TO_KEEP’ в conf.php и измените следующую строку в /usr/src/mailwatch-1.0.4/tools/db_clean на:

#!/usr/bin/php -q
require('/var/www/mailscanner/functions.php');

Установите скрипт очистки карантина:

cp /usr/src/mailwatch-1.0.4/tools/quarantine_maint.php /usr/bin/quarantine_maint.php   
cp /usr/src/mailwatch-1.0.4/tools/db_clean.php /usr/bin/db_clean.php   
chmod +x /usr/bin/quarantine_maint.php   
chmod +x /usr/bin/db_clean.php

Запустите

crontab -e

и добавьте следующее:

15 10 * * 2 /usr/bin/quarantine_maint.php --clean &> /dev/null
58 23 * * * /usr/bin/db_clean.php &> /dev/null

Отключите установленный скрипт cron mailscanner /etc/cron.daily/clean.quarantine (заметьте: делайте это только если скрипт clean.quarantine существует).

$disabled = 1; 

17.12 Перезагрузите систему

reboot

Проверьте ваш mail.log ( tail –f /var/log/mail.log) и вы должны увидеть следующее:

Jun 13 12:18:23 hoshi MailScanner[26388]: MailScanner E-Mail Virus Scanner version 4.20-3 starting...   
Jun 13 12:18:24 hoshi MailScanner[26388]: Config: calling custom init function MailWatchLogging   
Jun 13 12:18:24 hoshi MailScanner[26388]: Initialising database connection   
Jun 13 12:18:24 hoshi MailScanner[26388]: Finished initialising database connection

Поздравляем - теперь у вас есть MailScanner, записывающий в MySQL.

17.13 Протестируйте интерфейс MailWatch

Укажите в браузере http:///mailscanner/ - вам будет предложено ввести имя пользователя и пароль - введите данные веб-пользователя MailWatch, которого вы создали ранее, и вы должны увидеть список из последних 50 сообщений, обработанных MailScanner.

Если вы не можете увидеть письма, вам, возможно, придется установить следующие разрешения:

chgrp -R www-data /var/spool/MailScanner

Вам, возможно, придется создать следующее, чтобы предотвратить ошибку в тесте на lint:

mkdir /var/www/.spamassassin

17.14 Обновите таблицу правил SpamAssassin

MailWatch хранит список всех правил и описаний SpamAssassin, которые отображаются на странице ‘Детали сообщения’ - чтобы показать описания, вам нужно запускать обновление каждый раз, когда вы добавляете новые правила или обновляете SpamAssassin. Нажмите на меню ‘Инструменты/Ссылки’ и выберите ‘Обновить описания правил SpamAssassin’, затем нажмите ‘Запустить сейчас’.

17.15 Обновите базу данных GeoIP

Измените эту строку в /var/www/mailscanner/geoip_update.php, чтобы она выглядела так:

dbquery("LOAD DATA LOCAL INFILE 

*Примечание: Убедитесь, что allow_url_fopen = On установлено в вашем php.ini.

Нажмите на меню ‘Инструменты/Ссылки’ и выберите ‘Обновить базу данных GeoIP’, затем нажмите ‘Запустить сейчас’.

17.16 Исправление для разрешения подстановочных знаков в белом/черном списке

Добавьте следующее в конец секции return 1 в вашем /opt/MailScanner/lib/MailScanner/CustomFunctions/SQLBlackWhiteList.pm:

return 1 if $BlackWhite->{$to}{'*@'.$fromdomain};
return 1 if $BlackWhite->{$to}{'*@*.'.$fromdomain};
return 1 if $BlackWhite->{$todomain}{'*@'.$fromdomain};
return 1 if $BlackWhite->{$todomain}{'*@*.'.$fromdomain};
return 1 if $BlackWhite->{'default'}{'*@'.$fromdomain};
return 1 if $BlackWhite->{'default'}{'*@*.'.$fromdomain};

17.17 Исправление для операций с сообщениями, не находящих сообщения

Измените следующее в файле /var/www/mailscanner/do_message_ops.php:

$id = $Regs[1]; 

на

$id = str_replace("_", ".",$Regs[1]); 

17.18 Освобождение спам-сообщений

Чтобы разрешить MailWatch освобождать спам-сообщения без повторной обработки, добавьте 127.0.0.1 в качестве элемента белого списка в интерфейсе MailWatch/List. Убедитесь, что вы перезапустили MailScanner после настройки этих параметров. Ниже приведен пример моего ввода.

| 127.0.0.1 | default | Удалить |

17.19 Исправление для разрешения нескольких освобождений сообщений в операциях с сообщениями

Отредактируйте /var/www/mailscanner/do_message_ops.php и внесите следующие изменения:

   case 'F':
    $type='forget';
    break;
   case 'R':
    $type='release';
    break;
   default:
    continue;
    break;

Затем найдите следующую секцию и измените ее так:

$itemnum = array($num);
   if ($type == 'release'){
      if($quarantined = quarantine_list_items($id,RPC_ONLY)) {
         $to = $quarantined[0]['to'];
       }
       echo "$id$type" . quarantine_release($quarantined, $itemnum, $to, RPC_ONLY) . "\n";
    } else {
     echo "$id$type" . quarantine_learn($items, $itemnum, $type, RPC_ONLY) . "\n";
     }
   }
  echo "\n";
      }
    }
  }
}
echo "  \n";

Далее редактируем файл /var/www/mailscanner/functions.php и изменяем:

$fieldname[$f] = "Ops
S  H  F";

на

$fieldname[$f] = "Ops
S  H  F  R";

Затем измените:

array_unshift($row, "   "); 

на:

array_unshift($row, "    "); 

Затем найдите блок с функцией javascript для обработки радиокнопок. Добавьте третье значение следующим образом:

echo "function SetRadios(p) {\n";
echo " var val;\n";
echo " if (p == 'S') {\n";
echo "  val = 0;\n";
echo " } else if (p == 'H') {\n";
echo "  val = 1;\n";
echo " } else if (p == 'F') {\n";
echo "  val = 2;\n";
echo " } else if (p == 'R') {\n";
echo "  val = 3;\n";
echo " } else if (p == 'C') {\n";
echo "  ClearRadios();\n";

Теперь добавьте текст для радиокнопок:

echo "  S";
echo "  H";
echo "  F";
echo "  R";

Наконец, измените:

echo "

S = Spam   H = Ham   F = Forget\n";

на:

echo "

S = Spam   H = Ham   F = Forget   R = Release\n";

17.20 Патч для исправления ошибки автокоммита при остановке MailScanner

Отредактируйте строку 80 файла MailWatch.pm, чтобы она выглядела так:

$dbh = DBI->connect("DBI:mysql:database=$db_name;host=$db_host", $db_user, $db_pass, {PrintError => 0, AutoCommit => 0}); 

*Примечание: Это отключает автокоммит при подключении, чтобы строка коммита при закрытии не вызывала ошибку.

18. Установите и настройте SPF

Пакет postfix-policyd-spf-perl зависит от модулей Perl Mail::SPF и NetAddr::IP.

Нам нужно скачать postfix-policyd-spf-perl с http://www.openspf.org/Software в директорию /usr/src/ и установить его в директорию /usr/lib/postfix/ следующим образом:

cd /usr/src   
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.005.tar.gz   
tar xvfz postfix-policyd-spf-perl-2.005.tar.gz   
cd postfix-policyd-spf-perl-2.005   
cp postfix-policyd-spf-perl /usr/lib/postfix/policyd-spf-perl

Затем редактируем /etc/postfix/master.cf и добавляем следующий фрагмент в конце:

policy unix - n n - - spawn
   user=nobody argv=/usr/bin/perl /usr/lib/postfix/policyd-spf-perl

(Ведущие пробелы перед user=nobody важны, чтобы Postfix знал, что эта строка принадлежит предыдущей!)

Затем откройте /etc/postfix/main.cf и найдите директиву smtpd_recipient_restrictions. Убедитесь, что в этой директиве есть reject_unauth_destination, а сразу после reject_unauth_destination добавьте check_policy_service unix:private/policy следующим образом:

[...]
smtpd_recipient_restrictions =
[...]
   reject_unauth_destination
   check_policy_service unix:private/policy
[...]

Важно, чтобы вы указали check_policy_service ПОСЛЕ reject_unauth_destination, иначе ваша система может стать открытым реле!

Затем перезапустите Postfix:

/etc/init.d/postfix restart

Вот и все.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.