Устанавливаем сервер MailScanner c Вэб-мордой для офиса

Ver. 1.05 10.11.2005

 

 

Для начала - FreeBSD Handbook. Эта статья - разъяснения к общему порядку действий. Она не исключает необходимости внимательного чтения FreeBSD Handbook.

 

В некоторых местах статьи точки заведомо не ставились. Причины - дабы не было ошибок при копировании (понимании) скриптов и выражений.

 

Политика следующая – установка новой машины для централизованной обработки входящей и исходящей почты. «Старая» почтовая машина остается без изменений и ставится в глухой резерв (если на «новой» сгорит блок питания - тут же включаем старую). Устанавливается 2-й МХ на адрес «новой» машины. Внутренний и внешний интерфейсы старой машины закрываются по 25 порту Firewal-ом для принудительного пропуска и входящего и исходящего корпоративного трафика только через новую систему. Получение почты клиентами в данном варианте предполагается с других (может быть и внутренних) серверов. В данном случае - это промежуточный фильтр для нескольких почтовых серверов у которых указан SMTP gateway - наш новый сервер.

 

Вариации - поставить VmWare под что-то типа Win-NT4/2000-2003 c 6-10  ГБ виртуальным диском. При этом хорошо решаются вопросы Back-UP - просто копируется  VM образ. Может при этом теряются какие-то логи (стреляться при этом может и не стоит), но система остается живой. Для этого варианта эта машина становится одноинтерфейсной, внешняя почта с внешнего файрвола перенаправляется на нее и для всех внутренних машин эта машина становится основным SMTP гейтом. Такой подход с точки зрения аварийного резервирования может оказаться наиболее удобным учитывая объемы современных дисков и одну особенность стандартных инсталляций - а куда (на какое свободное место) в пределах существующего UNIX сервера тарить бакап ? Из области фантастики это все. По производительности - полная свобода - от того что стандартный Sendmail запускается с ключиком -30м до извратов установки 2-х VmWare на разных машинах и прикручивания HeartBits или даже средствами МХ. То есть двигаться есть куда.

 

Соображения безопасности: в варианте VmWare - вы пробрасываете только 25 порт внутрь. Ну может еще 53. Все. Машина закрыта. Сервисов наружу - никаких вообще. Антивирусник - работает, система не Windows-образная, то есть даже теоретически стандартные Win-вирусы, которых на сегодня большинство развернуться там не могут.

 

Итак:

 

 

 

1.        Устанавливаем FreeBSD. Версия та, поддержка которой есть в данный момент в полном объеме. Брать - да хоть на http://www.lafox.net.  Надо устанавливать самую доступную в Интернете последнюю версию. В чем основная проблема - на серверах дистрибутивов FreeBSD не держат все необходимые пакеты годами. Во что это выливается - при попытке установить пакет через /usr/local/ports  или /stand/sysinstall предлагается для начала его ручками положить в директорию дистрибутивов или он просто отсутствует в списке предлагаемых к установке. А если его найти невозможно ? Замкнутый круг. Теоретически вам на форумах расскажут куда идти и что делать, что это все доступно и т.д. но Вам надо ДЕЛАТЬ а не тратить время на разборки с проблемами не относящимися впрямую к Вашей задаче. Абсолютно тот же подход к CVS UP. Живой пример - установка GnuGK - для каждой версии пакета нужна другая версия очередной библиотеки. Это здорово - все обновляется - но Вы как конечный пользователь ничего не можете сделать - надо в конечном счете перекомпилировать ВСЮ систему !!! Поэтому и требуется самый последний доступный дистрибутив. В полном наборе. С полной коллекцией портов. Для инсталляции самой           системы достаточно только первого диска ПОСЛЕДНЕЙ версии дистрибутива. Ну а если планируется работа этой системы в нормальном производственном режиме  - полный дистрибутив в виде набора CD или DVD.

 

Для более свободного размещения принимаем примерно следующие размеры для разделов, вариации по вкусу:

 

Раздел

Объем - минимальный

Общий подход (рекомендуемое значение)

/

512 МВ

512 МБ - 1 ГБ (1 ГБ)

Swap

256 MB

Объем = размеру RAM

/tmp

256 МВ

256 МБ

/usr                 

1.8 GB

60 % оставшегося свободного пространства

/var

1.2 GB

40 % оставшегося свободного пространства

ВСЕГО

4 GB

Не менее 9 ГБ

 

 

Дополнительно необходимо установить KernDevelopment – в Distributions

 

Если его не поставили - ставим исходный 1-й CD в дисковод:

 

#mount /cdrom

#cd /cdrom/src

#./install.sh sys

 

Сразу добавляем совместимость с более старыми версиями

 

#cd /cdrom/compat3x

#./install.sh

#cd /cdrom/compat4x

#./install.sh

 

Если не поставили порты - ставим с исходного первого CD:

 

#cd /cdrom/ports

#./install.sh

 

 

Если очень хотим оторваться:  Через /stand/sysinstall ставим /usr/ports/net/cvsup или с CD или из Интернета

 

 

Вам понадобится поставить следующие порты (технология стандартная более «правильное» - /stand/sysinstall или более развернутое - make & make install в соответствующих директориях /usr/ports.

Разница в принципе установки - через /stand/sysinstall ставятся уже собранные и откомпилированные готовые пакеты (вариант 1), make & make install -  качаются соответствующие исходники, которые потом компилируются (вариант 2). Неожиданности могут ждать с нескольких сторон:

·         при установке могут не ставиться вообще необходимые конфигурационные файлы (вариант 2) - есть исходники - и отвали. Там есть документация и бодайся.

·         Могут теоретически отсутствовать исходники, необходимые для других программ (вариант 1)

·         версии устарели и исходников просто уже не существует (вариант 2) (но мы говорим только о версии FreeBSD в данное время поддерживаемой)

·         исходники просто не компилируются - ну не сложилось с этой версией (вариант 2)

 

Альтернативный вариант - мы имеем полный набор портов на CD. В этом случае - ставим путем подмонтирования соответствующего CD и выдачи команды pkg_add <имя порта> . По крайней мере в версии 5.4 оно ругается и сообщает что еще надо (как зависимость) доставить таким же образом для успешного добавления нужного нам <имя порта>.

 

Все дальнейшие ссылки типа misc/<имя порта> при наличии коллекции портов можно безболезненно читать по тексту как pkg_add <имя порта>. Или через механизм /stand/sysinstall - <имя порта>. Или в полном выражении /usr/ports/<раздел>/<имя порта>

 

3.        Добавляем

 

1         misc/mc               - МС - это обязательно

2         editors/joe       - текстовый редактор - я привык к этому - CTRL+K - H - это HELP

4.        Компилируем Kernel. Основная задача - добавить Firewall и сделать систему более компактной.

-     Копируем /usr/src/sys/i386/conf/GENERIC в /usr/src/sys/i386/conf/TEST

-     После настройки всей системы - установки сервера - добавляем options IPFIREWALL и конфигурируем защиту

-     Убираем ненужное (USB, EISA и т.д.)

-     Стандартная компиляция

-     проверка файла /var/log/messages. Распечатать или просмотреть последнюю часть файла - последняя полученная перезагрузка. Сравнить с тем, что в конфигурации Kernel, выбросить лишнее.

-     Перезагрузка (в случаях ошибок - проверка где и исправления)

 

 

5.        устанавливаем McAfee. Я работаю с McAfee. Никаких проблем работать с другим антивирусом - в соответствующем файле MailScanner - прописывается все что угодно.

 

      ставим сам пакет security/vscan

 

 

6.        устанавливаем Webmin  - www.webmin.com

·         Распаковываем архив

·         Переносим все под /var - директория будет потом использоваться

·         Запускаем ./setup.sh

·         Порт меняем на что-то кривое - всем известен порт 10000

 

7.        устанавливаем MySQL 4.0  через /stand/sysinstall - в противном случае не поставит соответствующий фай            лик в /usr/local/etc/rc.d и запускаем через /usr/local/bin/mysqld_safe --user=root, внимательно читаем начало файла mysqld_safe и делаем то что там написано (rc.conf). Для начала - проверяем - он может и сам после перезагрузки запускаться. Потом надо будет немного повоевать с правами доступа, но это уже потом, после того как получим полностью работающую систему. Пока пароль на root не ставим. Слегка боремся с правами на директории /var/db/mysql.

 

8.        ставим php через lang/php4 - потом будет необходимость доконфигурирования модулей для Апача. Он сам Апач и установит.

 

9.        ставим mail/pyzor

10.     ставим mail/razor

11.     ставим mail/dcc-dccd

12.     ставим devel/autoconf

13.     ставим devel/php-pcre

14.     ставим databases/php-mysql

15.     ставим graphics/php4-gd.

16.     копируем /usr/local/etc/php.ini-recommended в php.ini

17.     Через Webmin конфигурируем DNS – как slave для основного сервера

18.     Конфигурируем Sendmail – берем старую конфигурацию и подставляем ее для новой машины (тоесть просто копируем большую часть файлов в /etc/mail и может быть слегка корректируем в части имени машины на которой мы все это ставим), проверяем работоспособность предварительно закрыв 25 порт на старой машине. Полностью запускаем почтовую систему - она должна на этом этапе работать уже в режиме «основная» и рулить всю почту как это делала старая машина. Через нее должна ходить нормально вся почта во внешний мир. Изменений в дальнейшем особых не предвидится.

19.     через /stand/sysinstall ставим mail/Mailscanner-4.XX.X (какая там версия - не особенно принципиально) на данном этапе - потом все равно полностью переставлять

20.     Создаем таблицы MySQL -

 

Проверяем права доступа к директории /var/db/mysql для возможности создания баз

 

chmod 775 /var/lib/mysql

 

Создаем базу MailScanner (файл в корневой директории дистрибутива MailScanner)

 

/usr/bin/mysql --user=root < create.sql

 

Ставим разрешения для работы администратора

 

/usr/bin/mysql --password=MYSQL_ROOT_PASSWORD

 

mysql>

 

GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'MAILWATCH_ADMIN_PASSWORD’;

 

exit

 

 

 

Должно выдать:

(Query OK, 0 rows affected)

 

 

21.     ставим databases/p5-DBD-mysql

22.     ставим mail/p5-Mail-SpamAssassin

23.     в /usr/local/etc/apache/httpd.conf ищем строчку “/usr/local/www” и меняем для DocumentRoot на “/var/www/html - это требуется для MailWatch

24.     рисуем в /var/www/html файлик ind.php с содержимым <? phpinfo() ?> и смотрим его через эксплорер. Должно работать. PHP должно показать информацию о системе.

25.     ищем в Google mailwatch for mailscanner, скачиваем, читаем INSTALL и ставим

·         создаем таблицы SQL (написано в INSTALL)

·         внимательно читаем INSTALL как создается админ в mailwatch и не забываем что пароль вводится с указателем MD5

mysql>

INSERT INTO users VALUES ('MAILWATCH_WEB_LOGIN',md5('MAILWATCH_WEB_PASSWORD  '),’MAILWATCH_WEB_FULL_NAME’,'A',0);

exit

 

Должно выдать:

 (Query OK, 1 row affected)

 

·         переписываем всю директорию mailscanner из инсталляции MailWatch в /var/www/html

·         копируем conf.php.example в conf.php  и правим строки примерно 43 - 50 в части /usr/local

                 Ищем

define(DB_USER, 'root');

define(DB_PASS, '');

 

Меняем на

define(DB_USER, 'mailwatch');

define(DB_PASS, 'MAILWATCH_ADMIN_PASSWORD');

 

Ищем

define(QUARANTINE_USE_FLAG, false);

 

Меняем на

define(QUARANTINE_USE_FLAG, true);

·         проверяем наличие необходимых строк для php.ini как это описано в INSTALL

·         делаем корректировку /var/www/html/mailscanner/geoip_update.php и меняем:

 

 LOAD DATA LOCAL INFILE на LOAD DATA INFILE

 

 

 

Создаем директории и меняем права доступа

 

mkdir /var/www/html/mailscanner/images/cache

mkdir /var/www/html/mailscanner/temp

chown -R root:apache /var/www/html/mailscanner

chmod g+w /var/www/html/mailscanner/images/cache

chmod g+w /var/www/html/mailscanner/temp

 

В директории /usr/local/etc/MailScanner меняем имена всех файлов sample на нормальные (без sample)

 

Создаем юзера tech для возможности удаленного входа + соответствующие права для SU

 

 

 

В принципе на этом этапе система имеет начальный набор того, что нам необходимо. Что делаем дальше - удобно работать с терминальным окном (типа ZOK) - в нем удобно делать ctrl-c - ctrl-v из данной статьи. Меньше работы - меньше ошибок.

 

 

Копируем  MailWatch.pm и SQLBlackWhiteList.pm

 

cp MailWatch.pm SQLBlackWhiteList.pm /usr/lib/MailScanner/MailScanner/CustomFunctions

chown root:root /usr/lib/MailScanner/MailScanner/CustomFunctions/MailWatch.pm /usr/lib/MailScanner/MailScanner/CustomFunctions/SQLBlackWhiteList.pm

 

Корректируем  db_clean.php

 

/tools/db_clean.php

 

Ищем

#!/usr/bin/php -qn

 

Меняем на

#!/usr/bin/php -q

 

Копируем mailq.php и другие скрипты и устанавливаем права доступа

 

cp mailq.php /usr/local/bin

mv tools/db_clean.php /usr/local/bin

mv tools/quarantine_maint.php /usr/local/bin

mv tools/quarantine_report.php /usr/local/bin

mv tools/sendmail_relay.php /usr/sbin

 

chown root:root /usr/local/bin/mailq.php

chown root:root /usr/local/bin/db_clean.php

chown root:root /usr/local/bin/quarantine_maint.php

chown root:root /usr/local/bin/quarantine_report.php

chown root:root /usr/sbin/sendmail_relay.php

 

Устанавливаем  cron для работы  mailq.php

 

/etc/cron.d/mailwatch

 

Добавляем

 

 

 

MAILTO=admin

SHELL=/bin/sh

* * * * * root /usr/local/bin/mailq.php

0 0 * * * root /usr/local/bin/quarantine_maint.php --clean

0 0 * * * root /usr/local/bin/quarantine_report.php

0 0 * * * root /usr/local/bin/db_clean.php

 

Устанавливаем запись лога  MailScanner в MailWatch

 

/usr/local/etc/MailScanner/MailScanner.conf

 

Устанавливаем переменные MailScanner  (если еще не установили)

 

Always Looked Up Last = &MailWatchLogging

Detailed Spam Report = yes

Include Scores In SpamAssassin Report = yes

Quarantine Whole Message = yes

Quarantine Whole Message As Queue Files = no

Quarantine User = root

Quarantine Group = apache

Quarantine Permissions = 0660

Quarantine Dir = /var/spool/MailScanner/quarantine

Is Definitely Not Spam = &SQLWhitelist

Is Definitely Spam = &SQLBlacklist

 

 

Создаем директьрии для Байеса, доступные для Апача

 

mkdir /usr/local/etc/MailScanner/bayes

chown root:apache /usr/local/etc/MailScanner/bayes

chmod g+ws /usr/local/etc/MailScanner/bayes

 

Права доступа к карантину

 

chown root:apache /var/spool/MailScanner/quarantine

chmod g+rwx /var/spool/MailScanner/quarantine

 

 

Обновляем  MailScanner параметры для spamassassin для использования Байеса

 

Ищем

#bayes_path /usr/local/etc/MailScanner/bayes/bayes

 

Меняем на

bayes_path /usr/local/etc/MailScanner/bayes/bayes

 

Проверяем /etc/cron.daily/clean.quarantine отключено

 

/etc/cron.daily/clean.quarantine

 

Удостоверяемся что

$disabled = 1;

 

 

 

Отключаем php safe mode для  php скриптов

 

/etc/httpd/conf/httpd.conf

 

Добавляем

 

<Directory /var/www/html/mailscanner/>

php_admin_flag safe_mode 0

</Directory>

 

Перестартуем Апач

 

 

 

30. Разрешения для файла bayes.mutex

 

 

 

chmod 660 /etc/MailScanner/bayes/bayes.mutex

 

 

Далее идут разъяснения по технике работы Sendmail в данной системе.

 

Существующая стандартная система основанная на Sendmail обычно слушает 25 порт и сообщения, приходящие на этот порт укладывает в директорию /var/spool/mqueue. В нашем случае мы запускаем два процесса и назначаем им две различных директории для работы - для приемника входящей почты из Интернет - процесс, работающий с директорией /var/spool/mqueue.in и для доставщика почты после серверной обработки - /var/spool/mqueue

 

Создаем директории и устанавливаем им необходимые параметры доступа:

 

 

    # cd /var/spool

    # ls -ld mqueue

    drwxr-x---  2 root  bin   62976 Oct 23 16:18 mqueue

    # mkdir mqueue.in

    # chown root mqueue.in

    # chgrp bin mqueue.in

    # chmod u=rwx,g=rx,o-rwx mqueue.in

    # ls -ld mqueue mqueue.in

    drwxr-x---  2 root  bin   62976 Oct 23 16:18 mqueue

    drwxr-x---  2 root  bin   41472 Oct 23 16:18 mqueue.in

 

Группа может оказаться и daemon

 

Стартовый скрипт меняется (это теория):

 

Было:

    sendmail -bd -q15m

 

Необходимо:

   sendmail -bd -OPrivacyOptions=noetrn -ODeliveryMode=queueonly -OQueueDirectory=/var/spool/mqueue.in

 

sendmail -q5m

 

Окончательный вид скрипта (это практика) /etc/rc.d/sendmail - порезали грубо, но работает

 

#!/bin/sh

#

# $NetBSD: sendmail,v 1.14 2002/02/12 01:26:36 lukem Exp $

# $FreeBSD: src/etc/rc.d/sendmail,v 1.7 2002/10/12 10:31:31 schweikh Exp $

#  кривовато смотрится – но работает

 

# PROVIDE: mail

# REQUIRE: LOGIN

# KEYWORD: FreeBSD NetBSD

#            we make mail start late, so that things like .forward's are not

#            processed until the system is fully operational

 

# XXX - Get together with sendmail mantainer to figure out how to

#            better handle SENDMAIL_ENABLE and 3rd party MTAs.

#

. /etc/rc.subr

 

name="sendmail"

rcvar=`set_rcvar`

required_files="/etc/mail/${name}.cf"

 

case ${OSTYPE} in

FreeBSD)

#            command=${sendmail_program:-/usr/sbin/sendmail}

#            pidfile=${sendmail_pidfile:-/var/run/sendmail.pid}

 

/usr/sbin/sendmail -bd -OPrivacyOptions=noetrn -ODeliveryMode=queueonly -OQueueDirectory=/var/spool/mqueue.in

/usr/sbin/sendmail -q5m

 

esac

 

 

11.     конфигурируем DNS для правильной работы по 127.0.0.1  Проверяем через nslookup

12.     стартуем /usr/local/etc/mailscanner.sh и проверяем maillog на предмет ошибок

13.     для McAfee проверяем наличие /usr/ports/ftp/wget

14.     постоянно проверяем Maillog на предмет ошибок (не читаются файлы, директории и т.д.)

 

 

 

Настраиваем FreeBSD

Типичный ps –ax пока еще не оптимизированный - не закрыты ненужные сервисы/процессы

 

  PID  TT  STAT      TIME COMMAND

    0  ??  DLs    0:00.34  (swapper)

    1  ??  ILs    0:01.28 /sbin/init --

    2  ??  DL     0:10.75  (g_event)

    3  ??  DL     0:19.60  (g_up)

    4  ??  DL     0:23.43  (g_down)

    5  ??  DL     0:00.00  (taskqueue)

    6  ??  DL     0:14.14  (pagedaemon)

    7  ??  DL     0:00.92  (vmdaemon)

    8  ??  DL     2:08.74  (pagezero)

    9  ??  DL     0:18.87  (bufdaemon)

   10  ??  DL     0:00.00  (ktrace)

   11  ??  RL   1095:51.19  (idle: cpu0)

   13  ??  WL     0:04.60  (irq1: atkbd0)

   17  ??  WL     0:00.00  (irq6: fdc0)

   23  ??  WL     0:03.62  (irq12: xl1)

   25  ??  WL     0:00.00  (irq14: ata0)

   26  ??  WL     0:14.90  (irq15: xl0 ata1++)

   27  ??  RL     6:28.39  (swi8: tty:sio clock)

   29  ??  WL     0:08.84  (swi1: net)

   30  ??  DL     0:17.69  (random)

   34  ??  WL     0:12.29  (swi3: cambio)

   35  ??  WL     0:00.00  (swi7: task queue)

   36  ??  DL     0:00.02  (usb0)

   37  ??  DL     0:00.00  (usbtask)

   39  ??  DL     1:10.36  (syncer)

   40  ??  DL     0:01.13  (vnlru)

   41  ??  IL     0:00.00  (nfsiod 0)

   42  ??  IL     0:00.00  (nfsiod 1)

   43  ??  IL     0:00.00  (nfsiod 2)

   44  ??  IL     0:00.00  (nfsiod 3)

  228  ??  Ss     0:01.32 /usr/sbin/syslogd -s

  327  ??  Ss     0:00.40 /usr/sbin/usbd

  397  ??  Is     0:00.94 /usr/sbin/cron

42325  ??  S      0:10.25 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local

42351  ??  S      0:09.89 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local

42370  ??  S      0:09.77 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local

42396  ??  S      0:11.42 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local

43130  ??  S      0:06.22 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local

55648  ??  Ss     0:07.66 /usr/bin/perl /var/a_webmin/miniserv.pl /etc/webmin/m

66554  ??  Ss     0:16.01 /usr/local/sbin/named -c /etc/namedb/named.conf

69549  ??  Is     0:00.17 /usr/bin/perl -I/usr/local/lib/MailScanner /usr/local

92151  ??  Ss     0:04.55 sendmail: accepting connections (sendmail)

92153  ??  Is     0:00.53 sendmail: Queue runner@00:05:00 for /var/spool/mqueue

  431  v0  IWs+   0:00.00 /usr/libexec/getty Pc ttyv0

67264  v1  IWs    0:00.00 login [pam] (login)

67265  v1  IW     0:00.00 -csh (csh)

67300  v1  S+     0:20.55 mc

26504  v2  IWs    0:00.00 login [pam] (login)

26505  v2  IW     0:00.00 -csh (csh)

44876  v2  IW+    0:00.00 mc

  434  v3  IWs    0:00.00 login [pam] (login)

28389  v3  D      0:00.88 -csh (csh)

43184  v3  R+     0:00.00 ps ax

43185  v3  DV+    0:00.00 -csh (csh)

  435  v4  IWs    0:00.00 login [pam] (login)

50742  v4  IW     0:00.00 -csh (csh)

96235  v4  IW+    0:00.00 telnet 192.168.11.9

  436  v5  IWs+   0:00.00 /usr/libexec/getty Pc ttyv5

  437  v6  IWs+   0:00.00 /usr/libexec/getty Pc ttyv6

  438  v7  IWs+   0:00.00 /usr/libexec/getty Pc ttyv7

 

 

 

Примерный Mailllog

 

Aug 26 08:55:43 gw84 sendmail[43729]: i7Q8thMJ043729: from=<TShumygora@umc.com.ua>, size=6671, class=0, nrcpts=1, msgid=<OFE86F9FAD.0E53983D-ONC2256EFC.00206F3E-C2256EFC.00209EFA@umc.com.ua>, bodytype=8BITMIME, proto=ESMTP, daemon=MTA, relay=n2.umc.com.ua [80.255.64.69]

Aug 26 08:55:44 gw84 MailScanner[43196]: New Batch: Scanning 1 messages, 7221 bytes

Aug 26 08:55:44 gw84 MailScanner[43196]: Spam Checks: Starting

Aug 26 08:55:50 gw84 MailScanner[43196]: Virus and Content Scanning: Starting

Aug 26 08:55:53 gw84 MailScanner[43196]: Filename Checks: Allowing msg-43196-2.txt

Aug 26 08:55:53 gw84 MailScanner[43196]: Filename Checks: Allowing msg-43196-3.html (no rule matched)

Aug 26 08:55:53 gw84 MailScanner[43196]: Uninfected: Delivered 1 messages

Aug 26 08:55:56 gw84 sendmail[43737]: i7Q8thMJ043729: to=gala@ln-kie01.rabbit.com.gr, delay=00:00:13, xdelay=00:00:03, mailer=esmtp, pri=126671, relay=ln-kie01.rabbit.com.gr. [192.168.11.42], dsn=2.0.0, stat=Sent (Message accepted for delivery)

 

Или

 

Sep  2 01:09:56 gw84 sendmail[4122]: i81M9qTh004122: from=<>, size=235823, class=0, nrcpts=1, msgid=<200409012208.i81LOqv03306@mogila.iatp.kiev.ua>, proto=ESMTP, daemon=MTA, relay=mogila.iatp.kiev.ua [195.230.130.2]

Sep  2 01:09:57 gw84 MailScanner[3825]: New Batch: Scanning 1 messages, 236291 bytes

Sep  2 01:09:57 gw84 MailScanner[3825]: Spam Checks: Starting

Sep  2 01:10:03 gw84 MailScanner[3825]: Virus and Content Scanning: Starting

Sep  2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing msg-3825-5.txt

Sep  2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing msg-3825-6.msg (no rule matched)

Sep  2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing msg-3825-7.txt

Sep  2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing 1.3.6immunology-f.doc (no rule matched)

Sep  2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing 1.3.5Tabl-f.doc (no rule matched)

Sep  2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing 1.3.5cytogenetics-f.doc (no rule matched)

Sep  2 01:10:06 gw84 MailScanner[3825]: Filename Checks: Allowing 1,3,6Tabl-imm-f.doc (no rule matched)

Sep  2 01:10:06 gw84 MailScanner[3825]: Filetype Checks: Allowing msg-3825-6.msg

Sep  2 01:10:06 gw84 MailScanner[3825]: Filetype Checks: Allowing msg-3825-5.txt

Sep  2 01:10:06 gw84 MailScanner[3825]: Filetype Checks: Allowing msg-3825-7.txt

Sep  2 01:10:06 gw84 MailScanner[3825]: Content Checks: Need to convert HTML to plain text in 1 messages

Sep  2 01:10:06 gw84 MailScanner[3825]: Uninfected: Delivered 1 messages

Sep  2 01:10:11 gw84 sendmail[4134]: i81M9qTh004122: to=imm01@rigk-ras.rabbit.com.gr,imm@rigk-ras.rabbit.com.gr, delay=00:00:19, xdelay=00:00:05, mailer=esmtp, pri=355823, relay=rigk-ras.rabbit.com.gr. [192.168.13.76], dsn=2.0.0, stat=Sent (Message accepted for delivery)

 

 

 

Routing tables

 

Internet:

Destination        Gateway            Flags    Refs      Use  Netif Expire

default            212.94.185.81      UGS         0    60230    xl0

127.0.0.1          127.0.0.1          UH          0     8416    lo0

192.168.11         link#2             UC          0        0    xl1

192.168.11.9       00:04:76:15:d5:68  UHLW        2    17982    xl1   1120

192.168.11.42      00:0b:cd:cf:c9:6a  UHLW        0     1051    xl1   1061

192.168.11.43      00:60:97:93:f8:fa  UHLW        0      545    xl1   1134

192.168.11.58      00:50:8b:a5:8f:98  UHLW        0    13210    xl1   1153

192.168.12         192.168.11.9       UGS         0       77    xl1

192.168.13         192.168.11.9       UGS         0      807    xl1

212.94.185.80/28   link#1             UC          0        0    xl0

212.94.185.81      00:02:b9:a5:c2:e4  UHLW        1        0    xl0   1194

212.94.185.84      00:50:04:ed:43:3b  UHLW        0       31    lo0

 

Для общего развития можно поставить MailScanner модуль для Webmin, но пользоваться осторожно – не все делает корректно.

 

 

Дальше.

 

/etc/periodic/daily/330.news копируем в 340.mcafee  Это сам запуск скрипта скачки апдейтов.

#!/bin/sh

#

# $FreeBSD: src/etc/periodic/daily/330.news,v 1.4 2000/09/14 17:19:10 brian Exp $

#

# Expire news articles

# (This is present only for backwards compatibility, usually the news

# system handles this on its own).

 

# If there is a global system configuration file, suck it in.

#

if [ -r /etc/defaults/periodic.conf ]

then

    . /etc/defaults/periodic.conf

    source_periodic_confs

fi

 

case "$mcafee_update" in

    [Yy][Ee][Ss])

                   if [ ! -f /usr/local/uvscan/uvscan ]

                   then

                       echo '$mcafee_update is set but /usr/local/uvscan/uvscan' \

                               "doesn't exist"

                       rc=2

                   else

                       echo ""

                       echo "Running McAfee DAT update:"

 

                       /usr/local/libexec/MailScanner/mcafee-autoupdate -v && rc=0 || rc=3

                   fi;;

 

    *)  rc=0;;

esac

 

exit $rc

 

Если версия /usr/local/libexec/MailScanner/mcafee-autoupdate - не v-1.52, то эту програмулину берем из треда (трепа) или ищем версии повыше в последних дистрибутивах MailScanner  - там она исправленная - и заменяем существующую (ту которая ниже 1.52). По ходу дела - избавляемся от статуса .sample

 

 

Копируем файл /usr/local/libexec/MailScanner/mcafee-wrapper.sample в /usr/local/libexec/MailScanner/mcafee-wrapper

 

 

 

Создаем соответствующую запись в /etc/defaults/periodic.conf

 

# 340.mcafee

mcafee_update="YES"                # Rum McAfee DAT update

 

проверяем

 

>sh 340.mcafee

 

 

IPFW

 

Берем стандартный набор правил CLIENT, слегка корректируем для внутренних SMTP серверов, адресов и интерфейсов.

 

Запрещаем все кроме 25 и 53 порта на внешнем интерфейсе. На внутреннем - по вкусу.

 

 

Запускаем NTPD, штука кривовато настраивается, но работает.

 

 

Увеличиваем количество логов в /etc/newsyslog/conf

/mail    

/messages

 

 

При первоначальном запуске проверяем - все ли sendmail убили. Потом ручками пускаем /etc/rc.d/sendmail (исправленный, ясное дело)

Должны получить что-то в духе:

 

5218  ??  Ss     0:00.01 sendmail: accepting connections (sendmail)

5220  ??  Ss     0:00.01 sendmail: Queue runner@00:05:00 for /var/spool/mqueue (sendmail) 

Создаем директории:

/var/spool/MailScanner/incoming

/var/spool/MailScanner/quarantine

/var/spool/MailScanner/spamassassin (а может это и не пригодится)

 

 

 

 

 

Корректировки:

 

/usr/local/etc/ MailScanner/ MailScanner.conf

 

56 строка - имя домена

63 - имя конторы

70 - вэбсайт

415 - Virus Scanners = mcafee

431 - Deliver Disinfected Files = yes

770 - Quarantine Whole Message = yes

775 - Quarantine Whole Messages As Queue Files = yes

1318 - Use SpamAssassin = yes

1324 - Max SpamAssassin Size = 90000

1388 - Rebuild Bayes Every = 86400

1501? - убираем ссылку на bounce.rules - потом будем разбираться - где искать примеры.

1584 - SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin

1738 - Always Looked Up Last = &MailWatchLogging

 

Копируем из дистрибутива MailWatch файлик MailWatch.pm в директорию /usr/local/lib/MailScanner/MailScanner

 

Редактируем MailWatch.pm

 

Ищем

my($db_user) = "root";

my($db_pass) = "";

 

Меняем на

my($db_user) = "mailwatch";

my($db_pass) = "MAILWATCH_ADMIN_PASSWORD";

 

 

 

Повторяем для  SQLBlackWhiteList.pm

 

 

Редактируем MailWatch.pm

 

 

Ищем

MailScanner::Log::InfoLog("$$message{id}: Logged to MailWatch SQL");

 

Меняем на

MailScanner::Log::DebugLog("$$message{id}: Logged to MailWatch SQL");

 

 

Ищем

MailScanner::Log::InfoLog("Logging message $msg{id} to SQL");

 

Меняем на

MailScanner::Log::DebugLog("Logging message $msg{id} to SQL");

 

 

 

Создаем директорию /etc/mail/spamassassin

Рисуем там файлик

 

local.cf

=======

Rewrite_subject 1

Trusted_networks 192.168.11./24 127/8   - это наши сети

Subject_tag ***SPAM***

=======

 

 

Запись в MySQL

 

/usr/local/lib/MailScanner/MailScanner/CustomConfig - стр 351

 

Было

# UNCOMMENT THIS LINE: use DBI;

 

Надо

 

# UNCOMMENT THIS LINE:

use DBI;

 

Ищем (на www.mailscanner.info или на Sourceforge.net) WebMin модуль для Mailscanner. Ставим.

 

 

Теперь сообщения о событиях:

 

В директории /usr/local/share/MailScanner/reports/en/ все что там находится с припиской sample меняем на без приписки

 

                       

Чистим полностью в ноль /var/log/maillog Нас он сейчас вообще не интересует и перегружаем машину. Теперь внимательно на него смотрим и исправляем то что забыли.

 

 

 

Правила Антисппам.

Предупреждение - это можно и делать и не делать. Но если Вы это сделали - потом надо будет долго разбираться с SA-LINT - хотя бы и их Веб-интерфейса. Это проверка правильности набора правил. Тепоретически это добавит новые крутые правила ижентификации СПАМа, но может и разрушить всю систему.

 

Лезем FTP на McAfee и в разделе Spam ищем файлик rules.zip - меняем им правила в SpamAssassin.

(Эту часть надо делать осторожно. Начиная с того, что копировать надо не как Binary).

 

 

Тонкая настройка

 

Если вышеуказанное сделано, система должна быть работоспособной. Для начала пускай поработает несколько дней. Будем считать правильным подход «лучшее-враг хорошего» считаем систему в стадии Production. Пройдет эйфория от установки системы (у системного администратора), компьютер на котором установлена система немного поработает - а может там что-то выгорит, публика попривыкнет получать меньше СПАМа. Примерно через неделю можно пробовать корректировать коэффициенты идентификации СПАМа для наиболее любимых спаммеров. Политику можно избрать следующую: а) глобальное обрезание прав отправки на нас почты и б) тонкая настройка. Что еще надо отметить в тонкой настройке - система собственно-то сама учится. Она наполняет байесовскую базу. После набора примерно 650 СПАМ и 400 ХАМ - работает ну очень пристойно. Как пример - результат по базе:

 

Number of Spam Messages: 693    - это самообученного СПАМа - число писем

Number of Ham Messages: 478 - это самообученного НЕ СПАМа - число писем

Number of Tokens: 78,131 - это внесенных последовательностей (элементов) по которым идентифицируется СПАМ - НН СПАМ

 

 

Риторический вопрос - зачем нам открывать возможность отправки почты на нас из Малазии если мы оттуда по роду нашей деятельности ничего не ждем, но получаем регулярно. Закрыть. Вехними номерами правил в Firewall. Далее примеры будут даны на основе нормально работающего Mailscanner/Mailwatch.

Типичный Header:

 

Return-Path: <Ѓg>

Received: from bzq-218-7-58.cablep.bezeqint.net (bzq-218-7-58.cablep.bezeqint.net [81.218.7.58])

by gw84.rabbit.com.gr (8.12.10/8.12.10) with ESMTP id j3460DmT073342

for <malu@rabbit.com.gr>; Mon, 4 Apr 2005 09:00:47 +0300 (EEST)

(envelope-from planirovanie_i_ypravlenie@pormexico.com)

Message-ID: <110101c538e4$c0ffa4b7$ddd3eb0f@pormexico.com>

From: Планирование _ССП <planirovanie_i_ypravlenie@pormexico.com>

To: Malu <malu@rabbit.com.gr>

Subject: =?windows-1251?B?zuHz9+Xt6OU6INPv8ODi6+Xt9+Xx6ujpIPP35fI6IM725e3q4CD99PTl?=

=?windows-1251?B?6vLo4u3u4vLoIOH+5Obl8u3u4+4g7+vg7ejw7uLg7ej/Lg==?=

Date: Mon, 04 Apr 2005 03:02:57 -0400

MIME-Version: 1.0

Content-Type: text/html;

charset=windows-1251

Content-Transfer-Encoding: quoted-printable

X-Priority: 3

X-MSMail-Priority: Normal

X-Mailer: Microsoft Outlook Express 6.00.2800.1106

X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106

X-AntiVirus: checked by AntiVir MailGate (version: 2.0.1.10; AVE: 6.20.0.1; VDF: 6.20.0.46; host: bzq-218-7-58.cablep.bezeqint.net)

 

 

Что мы видим - отправлено с bzq-218-7-58.cablep.bezeqint.net (bzq-218-7-58.cablep.bezeqint.net [81.218.7.58]) но подстановка имени Планирование _ССП planirovanie_i_ypravlenie@pormexico.com  тесть явно СПАМ. Если подобного рода отправитель очень активен - хорошо помогает закрытие Firewall в Unix 25 порта с сетки класса С (маска /24 или 255.255.255.0). Можно пробовать делать то же самое для большего региона (сетки).

 

Б) теперь посмотрим коэффициенты СПАМ-идентификации.    

 

4.07

BAYES_99

Bayesian spam probability is 99 to 100%

0.63

FORGED_OUTLOOK_HTML

Outlook can't send HTML message only

0.08

FROM_ILLEGAL_CHARS

From contains too many raw illegal characters

1.23

HTML_20_30

Message is 20% to 30% HTML

0.14

HTML_FONT_BIG

HTML tag for a big font size

0.18

MIME_HTML_ONLY

Message only has text/html MIME parts

3.81

RCVD_IN_DSBL

Received via a relay in list.dsbl.org

0.88

RCVD_IN_NJABL_DUL

NJABL: dialup sender did non-local SMTP

1.99

RCVD_IN_SORBS_DUL

SORBS: sent directly from dynamic IP address

3.08

RCVD_IN_XBL

Received via a relay in Spamhaus XBL

 

Первая колонка - интересующие нас коэффициенты вклада элементов идентифицирующих СПАМ в обшей сумме элементов всего почтового сообщения.  Если сумма больше 5 - все сообщение - СПАМ. Что делать если коэффициент явно мал для любимого корреспондента - выход один - увеличивать.

Идем в /usr/local/share/spamassassin и там видим все коэффициенты в виде описаний:

 

Для профилактики читаем их содержимое и даже можем позволить себе раскомментировать строки. Иам по тексту ясно о чем идет речь - конкретно там и описываются те последовательноси, встречающиеся в письмаю, которые и есть указателями на СПАМ.

 

10_misc.cf

20_anti_ratware.cf

20_body_tests.cf

20_compensate.cf

20_dnsbl_tests.cf

20_drugs.cf

20_fake_helo_tests.cf

20_head_tests.cf

20_html_tests.cf

20_meta_tests.cf

20_phrases.cf

20_porn.cf

20_ratware.cf

20_uri_tests.cf

23_bayes.cf

25_body_tests_es.cf

25_body_tests_pl.cf

25_hashcash.cf

25_head_tests_es.cf

25_head_tests_pl.cf

25_spf.cf

25_uribl.cf

30_text_de.cf

30_text_es.cf

30_text_fr.cf

30_text_it.cf

30_text_nl.cf

30_text_pl.cf

30_text_sk.cf

50_scores.cf

60_whitelist.cf

 

И файл привязки коэффициента спамуозности к индексу:

 

50_scores.cf

(часть файла - полный размер - больше 800 строк)

 

score SENT_IN_COMPLIANCE 1.520 1.786 1.850 2.000

score SERIOUS_ONLY 0 0 1.664 1.748

score SOMETHING_FOR_ADULTS 1.433 1.513 1.614 1.606

score SOME_BREAKTHROUGH 0.232 1.921 0.907 1.610

score SORTED_RECIPS 0.879 1.155 1.759 0.887

score START_NOW_CAPS 1.280 1.499 1.124 0.857

score STOCK_ALERT 2.362 1.782 2.378 2.385

score STOCK_PICK 0.106 0.150 0.041 1.470

score STRONG_BUY 2.880 3.384 3.018 3.117

 

Самое простое - вручную откорректировать последний в строчке коэффициент и перезапустить Mailscanner.

 

http://ip.address/mailscanner

 

 

Проверяем - не работает. Не пишет в SQL. Что не работает - ошибки обращения (по тексту программы) к базе данных. Все правильно. И не будет. С http://mailscanner.info качаем версию не ниже 4.46. А теперь в руки напильник и бубен. Ставим все это под /opt/mailscanner и переносим в директрию, где ранее стояла старая версия. Что надо править - по тексту заменять /opt на /usr/local

 

Смортрим внимательно на /var/log/maillog - устраняем мелкие ошибки.

 

Точно работает связка (теперь говорим о версиях)

 

Mailscanner - 4.47.1

MailWatch - 1.0.2

MySQL - 4.0.24

 

 

Итого - вся система в конечном счете на DVD. Заняла - примерно 900 МБ. Конфигурация для разработки взята с учетом 8 ГБ дискового пространства и 64 МБ Swap.

 

Для дискового варианта с DVD увеличиваем SWAP FreeBSD 5.X уже в работающей системе как файл:

 

Драйвер md(4) уже есть в ядре.

 

 

Создаем swapfile (/usr/swap0)- - создаем блоками по 1024К (1 мег), всего - 64 блока (count=64), то есть общее - 64 мегабайта (это пример, надо как минимум - 256 или больше)

 

# dd if=/dev/zero of=/usr/swap0 bs=1024k count=64

 

Разрешения

 

# chmod 0600 /usr/swap0

 

Корректируем  /etc/rc.conf

 

swapfile="/usr/swap0"  

 

Или перегрудаем машину или (альтернатива - без перегрузки) выдаем команду

 

# mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0

 

 

 

Теперь по поводу аварийного копирования и восстановления. Считаем, что фактически копировать в пределах FreeBSD у нас некуда. Нет места. Теоретически это возможно, но практически - этим надо заниматься как минимум раз в две недели, для того чтобы понимать сам процесс и быть готовым на случай действительной аварии. Поэтому, после того как система полностью сконфигурирована и работает и она поставлена под VmWare - копируем полученный образ системы на DVD. В полном комплекте после описанной выше установки система заняла: VMware virtual disk file FreeBSD.vmdk 815 MB. То есть вполне реальный объем для заливки на DVD или хранении на файл-сервере.

 

Все. Иссяк. Комментарии принимаются. Желательно дополнить сей труд замечаниями как и что исправить. Сори за ошибки - Клава глючная.

 

iasb@yahoo.com

 

 



Используются технологии uCoz