Сергей Яремчук
В прошлой статье [1] вы рассмотрели возможности и установили почтовый
сканер MailScanner. Сегодня мы познакомим вас с дополнительными программами,
позволяющими просмотреть статистику работы системы защиты электронной почты.
Веб-интерфейс MailWatch
MailWatch [2] представляет собой инструмент, предназначенный для работы и
настройки MailScanner, использующий веб-технологии. Написан на PHP, MySQL
и JpGraph, распространяется под лицензией GNU GPL. Для записи в базу данных
применяются свои собственные функции пользователя (CustomFunctions).
Основные возможности:
n Отображение очереди входящей и исходящей
почты (пока только для Sendmail/Exim), вывод информации о средней загрузке и
количестве сообщений за текущий день, спаме, вирусах и блокированного контента.
n Подсвечивание недавно обработанной почты.
n Вывод подробной информации по каждому
сообщению.
n Управление почтой, попавшей в карантин
(т.е. ее можно просматривать, разрешать, удалять, переобучать спам-фильтры).
n Просмотр статуса работы вирус-сканера (пока
только для Sophos), базы данных MySQL и вывод файла настроек MailScanner.
n При работе с Sendmail имеется возможность
проверить и вывести размеры очереди почты и информацию о пересылке.
n Разграничение информации для пользователей,
домена и администратора. Поддержка XML-RPC позволяет использовать несколько
инсталляций MailScanner/MailWatch как единое целое.
n Вывод самых разнообразных отчетов.
Настройка MailWatch
Процесс настройки MailWatch можно условно разделить на три части: создание
необходимых баз и таблиц в MySQL, изменение параметров доступа веб-сервера
и редактирование конфигурационного файла MailScanner.conf. В документации этот
процесс описан подробно, но некоторые параметры объяснены плохо, поэтому пройдем
все три этапа. Для работы потребуются права суперпользователя. Распаковываем
файл с архивом в рабочий каталог.
# tar xzvf
mailwatch-1.0.2.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.
mysql>
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 документации). К
сожалению, готовых скриптов, позволяющих импортировать пользователей
в комплекте, нет, что при большом их количестве неудобно. Поэтому этим
придется заниматься самому.
mysql>
INSERT INTO users VALUES ('grinder@test.ru',md5('pasword'),'sergej','A','1');
Query OK, 1 row
affected (0.46 sec)
С базой все, выходим.
mysql> quit
Теперь файл 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/
И устанавливаем необходимые права доступа для
каталогов, в которых будут создаваться и храниться графики.
# 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
0-59 * * * * /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.
Все, теперь можете заводить пользователей (рис. 1), просматривать отчеты,
редактировать спам-листы и прочее. В документации довольно подробно описан
процесс настройки MailScanner и MailWatch для работы с байесовскими фильтрами и
настройка просмотра релейных сообщений для Sendmail, поэтому говорить о них не
будем.

Рисунок 1. Создание нового
пользователя для доступа к MailWatch
Мониторинг почтового сервера
при помощи MRTG
Если MailWatch больше ориентирован на работу и более тонкую
настройку самого MailScanner, то mailscanner-mrtg [3] помогает разобраться
с работой почтового сервера в целом, выводя различные статистики о работе
последнего. Используя его, можно получить следующую информацию:
n Mail Relayed – общее число сообщений,
обработанных системой, синяя линия указывает на количество полученных
сообщений, затененная область – количество получателей (одно сообщение может
иметь многочисленных получателей).
n Spam Identified – число сообщений,
определенных как спам. Затененная область включает все сообщения,
заблокированные всеми возможными средствами: правилами MTA, RBL в MailScanner и
SpamAssassin. Синяя линия показывает сообщения, заблокированные только на
уровне MTA.
n Spam as Percentage of Total Mail –
процент представленной почты, определенной как спам. Отличие заключается в том,
что представленная почта включает сообщения, отвергнутые MTA, т.е. не дошедшая
до MailScanner.
n Mail Containing a Virus or Failing Content Checks
– общее число обнаруженных сообщений, содержащих вредный контент. Затененная
область представляет заблокированные, изолированные, удаленные сообщения,
содержащие вирусы, запрещенные расширения, имена и типы файлов, html-код.
Синяя линия показывает обнаруженные вирусными сканерами.
n MTA Processes Running и Copies Of MailScanner
Running – индикаторы работы MTA и MailScanner.
n Bytes of Mail Transferred – этот граф,
показывающий количество информации, прошедшей через MTA, позволяет оценить
нагрузку, вызванную внешней почтой. В течение дня график должен расти
равномерно, резкие всплески или плоский график могут свидетельствовать о
проблемах.
n Ram Usage – использование памяти. Затененная
линия показывает количество ОЗУ с используемым дисковым кешем, синяя область –
общее количество затребованной памяти, включая своп.
n Number Of Files In Incoming Queue и Number
Of Files In Outgoing Queue – вывод количества файлов во входящей и
исходящей очередях, резкие изменения в любом из этих графиков могут
свидетельствовать о проблеме.
n Number Of Files / Messages In Quarantine
– количество файлов (затененная область) и сообщений (синяя линяя) в карантине.
n Machine Load Average и CPU Utilization
Percentage – показатели загрузки системы.
n Processing Speed – скорость обработки
почты MailScanner. Для работы этого параметра необходимо выставить Log Speed = yes
в MailScanner.conf. В отличие от большинства других графов, низкий показатель
предполагает проблему.
n Average Number of Messages Per Batch –
среднее количество сообщений при обработке пакета помогает разобраться в Processing
Speed, поскольку скорость обработки зависит и от размера.
n Viruses and Blocked Content as Percentage of
Total Mail – показывает процент обработанной почты, содержащей
запрещенный контент или вирус. Синяя линия указывает на вирусы, затененная
область суммарно запрещенный контент и вирус.
n Disk Space Used in / – занятость в
процентном отношении корневой файловой системы.
n Disk Space Used in Work Filesystem –
занятость в процентном отношении файловой системы рабочего каталога MailScanner
(на него указывает переменная MailScanner Work Directory в конфигурационном
файле). Чаще всего его значение совпадает со следующим, но введен из-за того,
что часто рабочий каталог для ускорения обработки выносят в tmpfs.
n Disk Space Used in Spool Filesystem –
занятость в процентном отношении файловой системы рабочего каталога MTA (на
него указывает переменная Spool Directory в конфигурационном файле).
n Server Network Traffic – общий сетевой
трафик для указанных сетевых интерфейсов (определяется переменной Interfaces to
Monitor в конфигурационном файле).
С работой этой системы можно ознакомиться,
обратившись к [7], правда, на момент написания статьи там была установлена более
ранняя версия (текущая 0.10). Установка никаких сложностей не
представляет. Скачиваем архив размером 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
То есть скрипт будет выполняться каждые 5 минут.
Для проверки работоспособности лучше выполнить эту команду в консоли и
проследить за отсутствием ошибок.
Перезапускаем веб-сервер и заходим по адресу
http://localhost/mailscanner-mrtg (рис. 2). По щелчку на конкретном графике
будет выдана статистическая информация за день, неделю, месяц и год.

Рисунок 2. Вывод статистики MailScanner-MRTG
Анализ почты с Vispan
Vispan (VIrus and SPam ANalyser), представляющий собой Perl-скрипт,
анализирующий файлы журналов и использующий библиотеку GD для построения
графиков (полный список зависимостей найдете на сайте). Последняя версия 2.0.2
датирована 6 января 2004 года, поэтому можно предположить о приостановке работ.
Тем не менее Vispan имеет свои особенности, о которых следует рассказать.
Проект [4] немного похож по возможностям на предыдущий, только его графики
больше ориентированы на статистику сообщений, и меньше выводят системную
информацию. С его помощью получите полную статистику о размере очереди входящих
и исходящих сообщений, включая спам и вирусы (количество и процент от общего
числа), времени прохождения по MailScanner, количестве блокированных
IP-адресов, времени последнего обновления антивирусных баз. Кроме того, будет
выведен список наиболее часто попадающихся вирусов и спама. Кроме вывода
статистики сценарий может автоматически добавлять адреса спамеров
в конфигурационный файл sendmail или в правила iptables. Этот адрес может
автоматически удаляться после указанного промежутка времени. Если с этого
адреса спам будет получен вторично, то промежуток времени нахождения
в черном списке будет каждый раз удваиваться. Ознакомительная версия
доступна по адресу [8].
Установка также проста.
# wget -c
http://www.while.homeunix.net/mailstats/Vispan-2.0.2.tar.gz
# tar xzvf
Vispan-2.0.2.tar.gz
# cd
Vispan-2.0.2
# 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/, результат смотрите на рис. 3.

Рисунок 3. Вывод статистики Vispan
Задачу настройки самого MailScanner может
существенно упростить модуль для Webmin [5], который после установки появится в
закладке «Службы». Далее необходимо его сконфигурировать, прописав в настройках
пути к конфигурационному и исполняемым файлам и месту, куда установлен сам MailScanner.
После этого выбираем необходимый пункт (рис. 4) и редактируем параметры, в
большинстве случаев, только устанавливая кнопки в «Да» или «Нет».

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

Рисунок 5. При помощи модуля webmin
настройка многочисленных параметров заметно упрощена
MailScanner является мощным средством для защиты
электронной почты, а имеющиеся дополнения позволяют заметно упростить работу с
ним и расширить его возможности. Да, кстати, 1 января 2006 года вышла новая
4.49 версия MailScanner.
Литература и
ссылки:
1. Яремчук
С. Защищаем электронную почту средствами MailScanner. – Журнал «Системный
администратор», №12, декабрь 2005 г. – 45-51 с.
2. Сайт
проекта MailWatch – http://mailwatch.sourceforge.net.
3. Сайт проекта mailscanner-mrtg – http://mailscannermrtg.sourceforge.net.
4. Сайт
проекта Vispan – http://www.while.homeunix.net/mailstats.
5. Сайт
проекта mailscanner-webmin – http://lushsoft.dyndns.org/mailscanner-webmin
или http://sourceforge.net/projects/msfrontend.
6. Яремчук
С. Упрощаем себе жизнь с Webmin. – Журнал «Системный администратор», №7, июль
2004 г. – 34-37 с.
7. Ознакомительная
версия MailScanner-mrtg – http://mailscannermrtg.sourceforge.net/mailscanner-mrtg.
8. Ознакомительная
версия Vispan – http://hosting.boys-brigade.org.uk/mrtg.