Мониторинг почты · 3 min read · Jan 10, 2026

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

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

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

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

В следующем я опишу, как установить и настроить Mailgraph и pflogsumm на Debian Sarge, Ubuntu Dapper Drake (6.06 LTS) и Fedora Core 5.

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

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 Debian Sarge

2.1 Mailgraph

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

apt-get install rrdtool mailgraph 

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

Должен ли Mailgraph запускаться при загрузке? <– Да
Какой файл журнала должен использоваться Mailgraph? <– /var/log/mail.log
Удалить файлы RRD при очистке? <– Да

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

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

Если вы интегрировали фильтр контента, такой как amavisd (для сканирования спама и вирусов), в Postfix (как в этом учебнике: Виртуальные пользователи и домены с Postfix, Courier и MySQL (+ SMTP-AUTH, Квота, SpamAssassin, ClamAV)), то ответьте Нет, чтобы избежать того, что 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, в Postfix, который настроен на использование SpamAssassin и ClamAV для пометки спам-писем и писем с вирусами. Если вы этого не сделаете, вы все равно увидите графики, но без отчета о спаме и вирусах.

2.2 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

| /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]. Вот как это выглядит в почтовом клиенте:

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.