В прошлой статье были рассмотрены возможности и произведена установка почтового сканера 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. Все теперь можете заводить пользователей, просматривать отчеты, редактировать спам листы и прочее.
В документации довольно подробно описан процесс настройки 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).
После чего скрипт выведет текущие настройки.
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. По щелчку на конкретном графике будет выдана статистическая информация за день, неделю, месяц и год.
Анализ почты с 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/ .
Задачу настройки самого MailScanner может существенно упростить http://sourceforge.net/projects/msfrontend/ модуль для Webmin, который после установки появится в закладке Службы. Далее необходимо его сконфигурировать прописав в настройках пути к конфигурационному и исполняемым файлам и месту куда установлен сам MailScanner. После этого выбираем необходимый пункт и редактируем параметры, в большинстве случаев, только устанавливая кнопки в Да или Нет.
MailScanner является мощным средством для защиты электронной почты, а имеющиеся дополнения позволяют заметно упростить работу с ним и расширить его возможности.