Мониторинг почты · 3 min read · Sep 28, 2025

Мониторинг Postfix с помощью Mailgraph и pflogsumm на Debian Etch

Мониторинг Postfix с помощью Mailgraph и pflogsumm на Debian Etch

Версия 1.0
Автор: Фалко Тимме

Эта статья описывает, как вы можете мониторить ваш почтовый сервер Postfix с помощью инструментов Mailgraph и pflogsumm. Mailgraph создает ежедневные, еженедельные, ежемесячные и ежегодные графики отправленных, полученных, отклоненных и отвергнутых писем, а также спама и вирусов, если SpamAssassin и ClamAV интегрированы в Postfix (например, с использованием amavisd-new). Эти графики можно просматривать через браузер, в то время как pflogsumm (“Сумматор записей журнала Postfix”) можно использовать для отправки отчетов о деятельности Postfix по электронной почте.

В следующем я опишу, как установить и настроить Mailgraph и pflogsumm на Debian Etch.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

В этом руководстве моя система Linux имеет IP-адрес 192.168.0.100 и размещает веб-сайт http://www.example.com с корневым каталогом документа /var/www/www.example.com/web и каталогом cgi-bin /var/www/www.example.com/cgi-bin, и я буду отправлять отчеты pflogsumm на адрес электронной почты [email protected].

2 Mailgraph

Debian Etch имеет пакеты для Mailgraph и pflogsumm, поэтому мы просто устанавливаем их. Мы также устанавливаем rrdtool, который хранит данные, необходимые Mailgraph для построения графиков:

apt-get install rrdtool mailgraph

Теперь мы настраиваем пакет mailgraph следующим образом:

dpkg-reconfigure mailgraph

Вам будет задано несколько вопросов:

Должен ли Mailgraph запускаться при загрузке? <– Да
Файл журнала, используемый mailgraph: <– /var/log/mail.log

Затем есть еще один вопрос:

Считать входящие письма как исходящие?

Если вы интегрировали фильтр контента, такой как amavisd (для сканирования спама и вирусов), в Postfix (как в этом руководстве: Интеграция amavisd-new в Postfix для сканирования спама и вирусов), то ответьте Нет, чтобы избежать двойного учета ваших писем Mailgraph (поскольку Postfix передает письма amavisd, который затем - после успешного сканирования - возвращает письма обратно в Postfix). Если вы не используете фильтр контента, то ответьте Да.

Во время установки ссылки на запуск системы для Mailgraph создаются автоматически, и Mailgraph также запускается автоматически, поэтому нам не нужно запускать его вручную.

Теперь мы должны скопировать скрипт mailgraph.cgi (который строит графики и создает вывод для наших веб-браузеров) в каталог cgi-bin нашего веб-сайта www.example.com:

cp -p /usr/lib/cgi-bin/mailgraph.cgi /var/www/www.example.com/cgi-bin

Скрипт уже исполняемый, поэтому нам не нужно изменять его права. Если вы используете suExec для веб-сайта www.example.com, вы должны изменить владельца и группу mailgraph.cgi на соответствующие.

Теперь откройте ваш браузер по адресу http://www.example.com/cgi-bin/mailgraph.cgi, и вы должны увидеть некоторые графики. Конечно, должны пройти некоторые письма через вашу систему, прежде чем вы увидите первые результаты, поэтому будьте терпеливы.

Через некоторое время ваши графики могут выглядеть так (следующий вывод настроен, поэтому он не выглядит точно как ваш):

Ежедневная статистика.

Еженедельная статистика.

Ежемесячная статистика.

Ежегодная статистика.

Пожалуйста, обратите внимание: Mailgraph будет сообщать о спаме и вирусах только в том случае, если вы интегрировали фильтр контента, такой как amavisd-new, в Postfix, который настроен на использование SpamAssassin и ClamAV для пометки спам-писем и писем с вирусами. Если вы этого не сделаете, вы все равно увидите графики, но без отчета о спаме и вирусах.

3 pflogsumm

Чтобы установить pflogsumm, мы выполняем

apt-get install pflogsumm

Мы хотим, чтобы pflogsumm запускался по расписанию cron каждый день и отправлял отчет на [email protected]. Поэтому мы должны настроить нашу систему так, чтобы она записывала один файл журнала почты на 24 часа, а затем начинала следующий файл журнала, чтобы мы могли передать старый файл журнала pflogsumm. Поэтому мы настраиваем logrotate (это программа, которая вращает журналы нашей системы) следующим образом: откройте /etc/logrotate.conf и добавьте следующий фрагмент после строки # system-specific logs may be configured here:

vi /etc/logrotate.conf

| [...] # system-specific logs may be configured here /var/log/mail.log { missingok daily rotate 7 create compress start 0 } |

В /etc/cron.daily есть скрипт logrotate. Этот скрипт вызывается каждый день между 06:00 и 07:00. С конфигурацией, которую мы только что сделали, он скопирует текущий журнал Postfix /var/log/mail.log в /var/log/mail.log.0 и сожмет его, а сжатый файл будет /var/log/mail.log.0.gz. Он также создаст новый, пустой /var/log/mail.log, в который Postfix сможет записывать в течение следующих 24 часов.

Теперь мы создаем скрипт /usr/local/sbin/postfix_report.sh, который вызывает pflogsumm и заставляет его отправить отчет на [email protected]:

vi /usr/local/sbin/postfix_report.sh

| #!/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin gunzip /var/log/mail.log.0.gz pflogsumm /var/log/mail.log.0 | formail -c -I"Subject: Mail Statistics" -I"From: pflogsumm@localhost" -I"To: [email protected]" -I"Received: from www.example.com ([192.168.0.100])" | sendmail [email protected] gzip /var/log/mail.log.0 exit 0 |

Мы должны сделать этот скрипт исполняемым:

chmod 755 /usr/local/sbin/postfix_report.sh

Затем мы создаем задачу cron, которая вызывает скрипт каждый день в 07:00:

crontab -e

| 0 7 * * * /usr/local/sbin/postfix_report.sh &> /dev/null |

Это отправит отчет на [email protected]. Он выглядит так в почтовом клиенте:

4 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.