Дополнения к MailScanner

0

В прошлой статье были рассмотрены возможности и произведена установка почтового сканера MailScanner. Сегодня познакомимся с дополнительными программами позволяющими просмотреть статистику работы системы защиты электронной почты.

 

Веб-интерфейс MailWatch

http://mailwatch.sourceforge.net/   представляет собой инструмент, предназначенный для работы и настройки MailScanner, использующий веб-технологии. Написан на PHP, MySQL и JpGraph, распространяется под лицензией GNU GPL. Для записи в базу данных применяются свои собственные функции пользователя (CustomFunctions). Основные возможности:

— отображение очереди входящей и исходящей почты (пока только для Sendmail/Exim), вывод информации о средней загрузке и количестве сообщений за текущий день, спаме, вирусах и блокированного контента.

— подсвечивание недавно обработанной почты

— вывод подробной информации по каждому сообщению

— управление почтой попавшей в карантин (т.е. ее можно просматривать, разрешать, удалять, переобучать спам фильтры)

— просмотр статуса работы вирус сканера (пока только для Sophos), базы данных MySQL и вывод файла настроек MailScanner

— при работе с Sendmail имеется возможность проверить и вывести размеры очереди почты, и информацию о пересылке

— разграничение информации для пользователей, домена и администратора. Поддержка XML-RPC  позволяет использовать несколько инсталляций MailScanner/MailWatch, как единое целое.

— вывод самых разнообразных отчетов

Настройка MailWatch

  Процесс настройки MailWatch можно условно разделить на три части: создание необходимых баз и таблиц в MySQL, изменение параметров доступа веб-сервера и редактирование конфигурационного файла MailScanner.conf. В документации этот процесс описан подробно, но некоторые параметры объяснены плохо, поэтому пройдем все три этапа. Для работы потребуются права суперпользователя. Распаковываем файл с архивом в рабочий каталог.

$ tar xzvf mailwatch-1.х.х.tar.gz
$ su mailwatch

И приступаем к созданию баз и таблиц.

# /etc/init.d/mysqld start
Starting safe_mysqld service:                                                              [ DONE ]

Таблицы можно создавать и вручную, но проще воспользоваться готовым скриптом.

$ mysql –u root -p < create.sql
Enter password: ******

Создаем пользователя от имени, которого MailWatch будет работать с базой данных.

$ mysql –u root -p

Enter password: ******

mysql>  GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'password';

Query OK, 0 rows affected (0.12 sec)

Для интереса посмотрим созданные таблицы.

mysql> SHOW TABLES;

+----------------------------+

| Tables_in_mailscanner |

+----------------------------+

| audit_log                       |

| blacklist                         |

| geoip_country               |

| inq                                 |

| maillog                          |

| mcp_rules                     |

| mtalog                           |

| outq                               |

| sa_rules                         |

| saved_filters                  |

| user_filters                    |

| users                              |

| whitelist                         |

+----------------------------+

13 rows in set (0.00 sec)

Все пользователи для доступа через веб-интерфейс должны иметь запись в таблице users.

> DESCRIBE users;

+-------------------+---------------------------+------+-----+---------+-------+

| Field                  | Type                            | Null | Key | Default | Extra |

+-------------------+---------------------------+------+-----+---------+-------+

| username          | varchar(60)                    |         | PRI |             |          |

| password          | varchar(32)                    | YES |        | NULL  |         |

| fullname          | varchar(50)                     |         |        |              |         |

| type                  | enum('A','D','U','R','H')  | YES |        | NULL  |         |

| quarantine_report | tinyint(1)                   | YES |        | 0           |         |

+-------------------+---------------------------+------+-----+---------+-------+

5 rows in set (0.10 sec)

Поле username должно устанавливаться в зависимости от значения поле type. Для обычных пользователей оно содержит почтовый адрес и используется при регистрации и работе с почтой.  Поле password думаю понятно без объяснений, а в fullname заносят реальное имя пользователя. Поле type указывает на привилегии, которые будет иметь пользователь. Так U (User) означает обычные привилегии, такой пользователь будет способен работать с почтой, редактировать черный и белый списки только для указанного почтового адреса совпадающего с username. При установке типа D (Domain Administrator), в поле username в таком случае указывается домен, а пользователь может работать с письмами и спам листами для всего домена. Тип A (Administrator) – администратор предназначен для работы с самим MailWatch, H зарезервирован для остальных случаев. И наконец R (user Regular expression) предназначен для тех случаев когда у пользователя имеется несколько почтовых адресов, используя этот тип он получает возможность работать одновременно с несколькими. Поле  quarantine_report позволяет просматривать данные карантина. Для первоначальной работы достаточно создать администратора, для всех остальных можно использовать веб-интерфейс (остальные подробности смотрите в файле USER_FILTERS документации). К сожалению готовых скриптов позволяющих импортировать пользователей в комплекте нет, что при большом их количестве неудобно. Поэтому этим придется заниматься самому.

> INSERT INTO users VALUES ('grinder@test.ru',md5('pasword'),'sergej','A','1');

Query OK, 1 row affected (0.46 sec)

С базой все, выходим.

mysql> quit

Bye

Теперь файл MailWatch.pm в котором редактируем следующие параметры (по умолчанию почему то используется root).

my($db_name) = 'mailscanner';

my($db_host) = 'localhost';

my($db_user) = 'mailwatch';

my($db_pass) = 'password';

Затем перемещаем его в каталог CustomFunctions.

# mv MailWatch.pm /opt/MailScanner/lib/MailScanner/MailScanner/CustomFunctions

Аналогичные параметры редактируем и в скрипте SQLBlackWhiteList.pm, который позволяет пользователю самому создавать белый и черный списки и заносить их в базу данных. После чего помещаем его на место

# mv SQLBlackWhiteList.pm /opt/MailScanner/lib/MailScanner/MailScanner/CustomFunctions

И переходим к следующему этапу.

Папку mailscanner содержащую php-скрипты помещаем в рабочий каталог веб-сервера.

# mv mailscanner /var/www/html/

И устанавливаем необходимые права доступа, для каталогов в которых будут создаваться, и храниться графики (примечание, если мне не изменяет память ставил MS на ALTLinux в других дистрибутивах веб-сервер работает от другого пользователя).

# chown root:apache /var/www/html/mailscanner/images

# chmod ug+rwx /var/www/html/mailscanner/images

# chown root:apache /var/www/html/images/cache

# chmod ug+rwx  /var/www/html/images/cache

Для настройки параметров доступа к базе данных используется файл conf.php. Берем в качестве основы conf.php.example и редактируем его.

// Database settings

define(DB_TYPE, 'mysql');

define(DB_USER, ' mailwatch');

define(DB_PASS, 'password');

define(DB_HOST, 'localhost');

define(DB_NAME, 'mailscanner');

Также следует проверить значение переменной MS_LIB_DIR, которая должна указывать на каталог, в который установлен MailScanner, в нашем случае это /opt/MailScanner. А переменная MS_CONFIG_DIR на каталог, в котором расположен конфигурационный файл MailScanner.conf, т.е. /opt/MailScanner/etc/ иначе может произойти такая ошибка.

Warning: fopen(/etc/MailScanner/MailScanner.conf): failed to open stream: No such file or directory in /var/www/html/mailscanner/functions.php on line 860
Cannot open MailScanner configuration file

Переименовываем файл.

# mv conf.php.example conf.php

Для MailScanner версии 4.43 и выше можно использовать флаг управления карантином, но в этом случае необходимо отключить используемый самим MailScanner скрипт clean.quarantine запускаемый через cron. Далее активируем QUARANTINE_USE_FLAG  т.е. меняем false на true. Ниже настраиваем параметры отправки сообщения по электронной почте о поступлении письма в карантин.

Для вывода очереди сообщений (Sendmail и Exim) необходимо активировать  переменную MAILQ. Затем скрипт mailq.php запускаем через cron.

# cp /var/www/html/mailscanner/mailq.php /usr/local/bin

# crontab -e

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

Редактируем MailScanner.conf.

 Always Looked Up Last = &MailWatchLogging

 Detailed Spam Report = yes

 Quarantine Whole Message = yes

 Quarantine Whole Message As Queue Files = no

 Include Scores In SpamAssassin Report = yes

 Quarantine User = root

 QuarantineGroup = apache # т.е. та же что и у веб-сервера

 Quarantine Permissions = 0660

# И для редактирования спам-списков.

Is Definitely Not Spam = &SQLWhitelist

Is Definitely Spam = &SQLBlacklist

После чего запускаем MailScanner.

# /opt/MailScanner/bin/check_mailscanner

В /var/log/maillog должна появится запись о работе с MailWatch и соединении с MySQL.

Jan 2 10:48:12 grinder MailScanner[26388]: MailScanner E-Mail Virus Scanner version 4.45.4-1 starting...

Jan 2 10:48:13 grinder MailScanner[26388]: Config: calling custom init function MailWatchLogging

Jan 2 10:48:14 grinder MailScanner[26388]: Initialising database connection

Jan 2 10:48:14 grinder MailScanner[26388]: Finished initialising database connection

 
Теперь пробуем зайти на MailWatch набрав в строке веб-браузера http://localhost/mailscanner/ и использовав в качестве логина и пароля данные администратора созданного ранее и занесенного в таблицу users. Все теперь можете заводить пользователей, просматривать отчеты, редактировать спам листы и прочее.

 Создание нового пользователя для доступа к MailWatch

В документации довольно подробно описан процесс настройки MailScanner и MailWatch для работы с бейесовскими фильтрами и  настройка просмотра релейных сообщений для Sendmail, поэтому говорить о них не будем

Мониторинг почтового сервера при помощи MRTG

            Если MailWatch больше ориентирован на работу и более тонкую настройку самого MailScanner, то http://mailscannermrtg.sourceforge.net/ помогает разобраться с работой почтового сервера в целом, выводя различные статистики о работе последнего. Используя его можно получить следующую информацию:

- Mail Relayed - общее число сообщений обработанных системой, синяя линия указывает на количество полученных сообщений, затененная область количество получателей (одно сообщение может иметь многочисленных получателей).

- Spam Identified - число сообщений определенных как спам. Затененная область включает все сообщения, заблокированные всеми возможными средствами: правилами MTA, RBL в MailScanner и SpamAssassin. Синяя линия показывает сообщения, заблокированные только на уровне MTA. 

- Spam as Percentage of Total Mail процент представленной почты определенной как спам. Отличие заключается в том, представленная почта включает сообщения отвергнутые MTA т.е. не дошедшая до MailScanner.

- Mail Containing a Virus or Failing Content Checks - общее число обнаруженных сообщений содержащих вредный контент. Затененная область представляет заблокированные, изолированные, удаленные сообщения, содержащие вирусы, запрещенные расширения, имена и типы файлов, html код. Синяя линия показывает обнаруженные вирусными сканерами.

- MTA Processes Running и Copies Of MailScanner Running – индикаторы работы MTA и MailScanner

- Bytes of Mail Transferred – этот граф показывающий количество информации прошедшей через MTA, позволяет оценить нагрузку вызванную внешней почтой. В течение дня график должен расти равномерно, резкие всплески или плоский график может свидетельствовать о проблемах.

Ram Usage – использование памяти. Затененная линия показывает количество ОЗУ с используемым дисковым кешем, синяя область общее количество затребованной памяти включая своп.

- Number Of Files In Incoming Queue и Number Of Files In Outgoing Queue – вывод количества файлов во входящей и исходящей очередях, резкие изменения в любом из этих графиков могут свидетельствовать о проблеме.

- Number Of Files / Messages In Quarantine – количество файлов (затененная область) и сообщений (синяя линяя) в карантине.

- Machine Load Average и CPU Utilization Percentage показатели загрузки системы.

- Processing Speed – скорость обработки почты MailScanner’ом. Для работы этого параметра необходимо выставить Log Speed = yes в MailScanner.conf. В отличие от большинства других графов низкий показатель предполагает проблему.

- Average Number of Messages Per Batch - среднее количество сообщений при обработке пакета, помогает  разобраться в Processing Speed поскольку скорость обработки зависит и от размера.

- Viruses and Blocked Content as Percentage of Total Mail - показывает процент обработанной почты содержащей запрещенный контент или вирус. Синяя линия указывает на вирусы,  затененная область суммарно запрещенный контент и вирус.

- Disk Space Used in / - занятость в процентном отношении корневой файловой системы

- Disk Space Used in Work Filesystem - занятость в процентном отношении файловой системы рабочего каталога MailScanner (на него указывает переменная MailScanner Work Directory в конфигурационном файле). Чаще всего его значение совпадает со следующим, но введен из-за того, что часто рабочий каталог для ускорения обработки выносят в tmpfs.

- Disk Space Used in Spool Filesystemзанятость в процентном отношении файловой системы рабочего каталога MTA (на него указывает переменная Spool Directory в конфигурационном файле).

- Server Network Traffic - общие сетевой трафик для указанных сетевых интерфейсов  (определяется переменной Interfaces to Monitor в конфигурационном файле).

С работой этой системы можно ознакомиться, обратившись http://mailscannermrtg.sourceforge.net/mailscanner-mrtg/. Установка никаких сложностей не представляет. Скачиваем архив размером 64 кб, распаковываем и даем команду  ./install.pl внутри каталога (некоторые опции можно просмотреть, используя ключ-help).

После чего скрипт выведет текущие настройки.

 Location of perl:             /usr/bin

Installation Prefix:          /usr

Program Location:             ${prefix}/sbin

Libraries Location:           ${prefix}/lib

Documentation Location:       ${prefix}/share/doc

Man pages Location:           ${prefix}/share/man

MRTG Config directory:        /etc/mrtg

MailScanner Config directory: /etc/MailScanner

WWW root:                     /var/www/html

Apache configuration dir:     /etc/httpd/conf

Location of mrtg:             /usr/bin/mrtg

Location of uptime:           /usr/bin/uptime

Use SNMP:                     n

Cron job in cron.d:           /etc/cron.d

   
Далее  все файлы будут скопированы на свои места, и будет предложено отредактировать конфигурационный файл mailscanner-mrtg.conf, который затем будет помещен на свое место, т.е. в /etc/mrtg. Файл хорошо комментирован, имеются готовые шаблоны, некоторые опции приведены выше, некоторые совпадают с MailScanner.conf, поэтому особенных трудностей при его редактировании возникнуть не должно. Обязательно проверьте правильность всех путей в файле и установки MTA. В крайнем случае картинки с неправильными параметрами будут пустыми и вы сами сможете быстро определить проблему. Главным является Perl-скрипт /usr/sbin/mailscaner-mrtg с модулями расположеными в каталоге /usr/lib/MailScanner-MRTG/MSMRTG. MRTG традиционно генерирует графики через определенное время. Для этого используется скрипт mailscanner-mrtg.crond, который после установки должен лежать в /etc/cron.d.

*/5 * * * * root /usr/bin/mrtg /etc/mrtg/mailscanner-mrtg.cfg

То есть скрипт будет выполняться каждые 5 минут. Для проверки работоспособности лучше выполнить эту команду в консоли и проследить за отсутствием ошибок.

Перезапускаем веб-сервер и заходим по адресу http://localhost/mailscanner-mrtg. По щелчку на конкретном графике будет выдана статистическая информация за день, неделю, месяц и год.

 Вывод статистики MailScanner-MRTG

Анализ почты с Vispan

 Vispan (VIrus and SPam ANalyser) представляющий собой Perl скрипт анализирующий файлы журналов и использующий библиотеку GD для построения графиков (полный список зависимостей найдете на сайте).  Некоторое время проект казалось заглох, но теперь работы продолжены. Vispan имеет свои особенности о которых следует расказать. Проект  немного похожий по возможностям на предыдущий, только его графики больше ориентированы на статистику сообщений, и меньше выводят системную информацию. С его помощью получите полную статистику о размере очереди входящих и исходящих сообщений, включая спам и вирусы (количество и процент от общего числа), время прохождения по MailScanner, количестве блокированных IP адресов, времени последнего обновления антивирусных баз. Кроме того, будет выведен список наиболее часто попадающихся вирусов и спама. Кроме вывода статистики сценарий может автоматически добавлять адреса спамеров в конфигурационный файл sendmail или в правила iptables. Этот адрес может автоматически удаляться после указанного промежутка времени. Если с этого адреса спам будет получен вторично, то промежуток времени нахождения в черном списке будет каждый раз удваиваться. 

Установка также проста.

$ wget –c http://www.while.homeunix.net/mailstats/Vispan-x.х.tar.gz
$ tar xzvf Vispan-x.x.tar.gz
$ cd Vispan-x.x
# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Vispan

Здесь могут быть сообщения о ненайденных модулях, их необходимо будет установить.

# make install

И приступаем к редактированию конфигурационного файла /etc/Vispan.conf. Основные параметры, которого приведены ниже.

 
# Использование sendmail для блокировки спамерских адресов.

UseAccess = 0
# Использование IPtables для блокировки спамерских адресов. 
# Одновременное использование  UseAccess и UseIPTables смысла не имеет.
UseIPTables = 1
# Использование эвристического удаления адресов из блокировки.
# Иначе будет сохраняться весь список спамеров. 
UseHeuristics = 1
# Первичная блокировка адреса в минутах далее время будет постоянно удваиваться.
BlockTime = 7200 # 5 дней
# Адреса, которые не будут блокироваться. Можно задать одиночный IP или диапазон
# 192.168.0.0-192.168.0.10 или 192.168.0.1/24
WhiteList = 192.168.0.1 192.168.0.2

Далее проверяем правильность путей в переменных, выставляем почтовый адрес на который будут высылаться уведомления.

Perl-скрипт Vispan запускается при помощи cron. После установки в каталоге /etc/cron.d должен лежать файл vispan.cron следующего содержания.

*/10 * * * *     root      /usr/local/bin/Vispan

Первый раз его также желательно запустить самому и отследить ошибки. После этого в веб-браузере набираем http://localhost/vispan/ .

 Вывод статистики Vispan

Задачу настройки самого MailScanner может существенно упростить http://sourceforge.net/projects/msfrontend/ модуль для Webmin, который после установки появится в закладке Службы. Далее необходимо его сконфигурировать прописав в настройках пути к конфигурационному и исполняемым файлам и месту куда установлен сам MailScanner. После этого выбираем необходимый пункт и редактируем параметры, в большинстве случаев, только устанавливая кнопки в Да или Нет.

 Модуль webmin позволяет настроить работу MailScanner

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *