by David Ky
08/12/2004
Перевод: Сгибнев Михаил
Много системных администраторов довольно хорошо подкованы в деле установки и настройки почтовых серверов, но с каждым днем
системы растут и маштабируются, а требования к надежности все возрастают. Просмотр логов с помощью tail уже не позволяет понять,
что же делает почтовый сервер, когда он обрабатывает сотни и тысячи писем в минуту. В этом случае на помощь приходят текстовые или графические средства
мониторинга и Mailgraph - одно из них.
На сайте
Mailgraph заявлено: "Mailgraph - очень простое, основанное на
RRDtool средство
ведения статистики для
Postfix, предоставляющее дневные, недельные и месячные графики полученных/посланных и bounce/отброшенных сообщений. "
David Schweikert, автор Mailgraph, дает возможность
посмотреть на его работу.
В конечном итоге, установка Mailgraph позволит нам наглядно увидеть обьемы почтового трафика, в числовом и графическом представлении, проходящие через определенный сервер.
Если Вы когда либо использовали подобные средства, например MRTG, то представляете себе, как незаменимы они могут быть при необходимости быстро диагностировать возникшую проблему.
Диаграммы могут отбразить информацию о прошлом, настоящем и иногда даже о будущем.
Вы, возможно, заметили, что мы также упомянули RRDtool. RRDtool - часть программного обеспечения, созданного Tobi Oetiker и она способна
сохранять данные в Round Robin Database (RRD) и отображать эти данные. Если Вам нет необходимости использовать Mailgraph, то с помощью RRDtool можно контролировать и другие параметры, типа средней загрузки или температуры.
Установка Mailgraph
Здесь в качестве MTA мы будем использовать Postfix и предположим, что он уже установлен из исходных текстов или системы пакетов и функционирует.
Если Вы этого еще не сделали, то скачайте исходные тексты с Web сайта Postfix.
Обратите внимание, что в системе также уже установлены
amavisd-new совместно
SpamAssassin и
ClamAV для борьбы с вирусами и спамом.
Mailgraph будет функционировать и без этих компонентов, просто будут отсутствовать соответствующие графики.
Mailgraph требует наличия следующих компонентов:
- RRDtool
-
Модули Perl Time::HiRes и File::Tail. Скачайте их с CPAN:
perl -MCPAN -e shell
Сам Mailgraph
Сперва установите RRDtool, который будет хранить данные и манипулировать графиками.
Скачайте последний релиз, на момент написания статьи это был 1.0.48. Проверьте сайт RRDtool на предмет наличия новых версий.
david@toys david $ wget http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.0.48.tar.gz
Проверьте контрольную сумму MD5:
david@toys david $ wget http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.0.48.tar.gz.md5
david@toys david $ md5sum -c rrdtool-1.0.48.tar.gz.md5
rrdtool-1.0.48.tar.gz: OK
Распаковываем RRDtool и переходим в каталог:
david@toys david $ tar -xvzf rrdtool-1.0.48.tar.gz
david@toys david $ cd rrdtool-1.0.48
Все как обычно: configure, make, и make install. Команда make site-perl-install также сделает жизнь легче в плане установки.
david@toys rrdtool-1.0.48 $ sh configure
david@toys rrdtool-1.0.48 $ make
david@toys rrdtool-1.0.48 $ sudo make install
david@toys rrdtool-1.0.48 $ sudo make site-perl-install
После этого мы можем установить требуемые модули Time::HiRes и File::Tail. Mailgraph использует их для отслеживания почтовых логов.
Их установка с использованием CPAN черезвычайно проста:
david@toys david $ sudo perl -MCPAN -e shell
cpan> install Time::HiRes
cpan> install File::Tail
cpan> quit
Сейчас, когда предварительная подготовка закончена, займемся непосредственно Mailgraph. Скачиваем пакет:
david@toys david $ wget http://people.ee.ethz.ch/~dws/software/mailgraph/pub/mailgraph-1.8.tar.gz
Затем распаковываем и переходим в каталог:
david@toys david $ tar -xvzf mailgraph-1.8.tar.gz
david@toys david $ cd mailgraph-1.8
Конфигурируем Mailgraph
Сначала мы должны отконфигурировать под себя образцово-показательный скрипт mailgraph-init.
Соответствующм образом редактируем MAIL_LOG и RRD_DIR, указывая путь к логам и к каталогу, где лежит скрипт mailgraph.cgi.
david@toys mailgraph-1.8 $ vi mailgraph-init
MAIL_LOG=/var/log/mail.log
RRD_DIR=/var/www/virtual/cgi-bin/toys.example.com/cgi-bin/
Соответственно копируем и mailgraph-init:
david@toys mailgraph-1.8 $ sudo cp mailgraph.pl /usr/local/bin/mailgraph.pl
Затем кладем на место скрипт mailgraph.cgi, ответсвенный за рисование графиков:
david@toys mailgraph-1.8 $ cp mailgraph.cgi /var/www/virtual/toys.example.com/cgi-bin/
Теперь необходимо запустить mailgraph-init. В версии, которую скачал я необходимо изменить права доступа:
david@toys mailgraph-1.8 $ chmod 755 mailgraph-init
david@toys mailgraph-1.8 $ sudo ./mailgraph-init start
Откройте браузер и просмотрите результат работы скрипта mailgraph.cgi - должны быть видны графики.
Если это так - примите наши поздравления! А если нет - то еще раз внимательно проверьте пути в файлах конфигурации.
Для запуска mailgraph-init на этапе начальной загрузки неоходимо будет отредактировать файл rc.local или скопировать и отредактировать скрипт init соответственно своему дистрибутиву.
Обычно, запуск mailgraph-init из rc.local является самым простым, добавьте строку подобно этой:
/etc/init.d/mailgraph-init start
Вот образец графика:
Не особо волнуйтесь, если не видите синих или зеленых линий - построение хороших графиков занимает время, оставьте Mailgraph в покое и попробуйте снова через некоторое время.
Если MTA обрабатывает почту, то Mailgraph это должен будет отобразить.
Если Вы не можете заставить работать Mailgraph или нашли баг, то Вы можете подписаться на список рассылки, послав письмо с сабжем subscribe на адрес mailgraph-reques(at)list.ee.ethz.ch.
Установили, настроили, все работает. Что я вижу?
Mailgraph теперь будет весьма ценен при анализе работы Вашего почтового сервера. При невозможности увидеть мгновенную эффективность фильтрации, Mailgraph способен отобразить ее за некоторое время.
Например, диаграмма на рисунке 2 может указать на несколько вещей.
- Скорость отклонения писем для этого сервера довольно высоко. Это может быть вызвано несколькими факторами - возбожно большой набор header_checks или соединения происходят с хостами, перечисленными в используемой нами базе RBL.
Если скорость продолжает расти, хорошо бы проверить почтовый лог на наличие аномалий в доставке почты.
-
Количество bounces невелико, но если покопаться, то можно найти причины их появления.
-
Количество полученных вирусов нормально для этого почтового сервера и нет никаких признаков вирусной атаки. Но все же стоит обновить антивирусные базы ClamAV, используя утилиту freshclam.
-
На этой неделе очень мало спама. Не стоит тревожиться, но такое маленькое количество могло получиться из-за большого объема отклоненных писем, возможно у нас ложные срабатывания через наш header_checks.
Если у нас выставлены слишком жесткие критерии на спам стоит переконфигурировать SpamAssassin с тем, чтобы добавить новые правила, удалить часть нашего header_checks, чтобы позволить проходить большему количеству почты.
Mailgraph может также помочь Вам в обнаружении атак и оценить ущерб. Для примера, если у Вас имеется выделенный почтовый сервер, то анализируя среднюю нагрузку, количество спама, вирусов, отброшенных писем можно увидеть факт атаки и уже анализируя почтовые логи выявить адрес атакуещего хоста,
а затем использовать системы фильтрации или RBL. И Ваши пользователи не должны говорить Вам, что электроннаяпочта работает медленной. Вы будете видеть это раньше чем наступит кризит и принимать соответствующие меры.
Другие идеи
Если необходимо контролировать несколько хостов, то просто сделайте одну индексную страницу, которая содержит все изображения от Ваших различных инсталляций Mailgraph.
Для этого просмотрите текст mailgraph.cgi и просто "захватите" ссылки на рисунки. Это должно выглядеть так:
Показ графиков Mailgraph может стать аргументом в борьбе за апгрейд почтового сервера.
Если сервер помирает от нагрузки и начальство бьет копытом по поводу пропавшей почты - покажите им графики загрузки вместе со счетом на новое оборудование.
Пожалуйста, помните, что Mailgraph не снимает с вас необходимости быть бдительным и чутко следить за потоками писем во все стороны.
З.Ы. bounce - отброшенные сообщения, но чем они отличаются от reject я плохо себе представляю. Напишите в форуме - внесу исправления в статью.
З.З.Ы перевод очень вольный в силу корявости языка оригинала. Но все технические детали сохранены.