Головна

Створення звітів про роботу поштового сервера на основі Postfix

У мене є поштовий сервер на основі Postfix. Як антиспам там встановлений SpamAssassin. Виникла задача перегляду статистики роботи для аналізу ефективності налаштувань як антиспаму, так і самого поштового сервера.

Для початку я скористався готовим скриптом sa-stats.pl, але у нього виявилося, на мій погляд, занадто багато недоліків:

1. Написаний на Перл і вимагає довстановлення великої кількості модулів Perl.

2. Результат виводить лише в plain-text та html

3. Звітує тільки про листи, які пройшли через SpamAssassin

4. Не вміє відіслати результати на пошту

  

Цього мені виявилося мало. Хотілося б бачити звіт і по тих листах, що були відкинуті налаштуваннями самого Postfix. Готової утиліти під мої бажання не знайшлося, хоча, може бути, я просто погано шукав. Загалом довелося напружитися і створити власний велосипед.

В результаті певних зусиль і був написаний цей скрипт.

У його роботі використовуються:

GNUPlotдля відмальовки гістограм статистики

Base64для кодування зображення для вставки на html-сторінку

Wkhtmltopdfдля створення pdf з html

Muttдля відсилання цього звіту поштою

І сам скрипт, написаний на bash

  

Зверніть увагу! Для роботи не підходить версія wkhtmltopdf з репозиторію. Їй необхідний X-server. Звичайно, якщо ви на сервері готові встановити X-server, то все у вас запрацює. Мені таке щастя не потрібне. Тому з сайту розробника потрібно завантажити готову статично зібрану версію потрібної бітності. Тоді і X-server буде не потрібний

  

В результаті роботи цього скрипта на пошту приходять звіти наступного виду

  

Будувати звіти вміє або за день, або за тиждень.

На початок скрипта винесені параметри у вигляді змінних, які потрібно налаштувати для коректної роботи:

addrадреса для відсилання звітів

MAILFROMадреса відправника листа зі звітом

SUBJECTтема листа

HTML2PDF — шлях до бінарника завантаженої версії wkhtmltopdf

logшлях до файлу поштових логів

old_logшлях до попереднього файлу поштових логів (після logrotate)

  

Крім цього наступним блоком йдуть тексти повідомлень, які виводяться в звіті. Їх теж при бажанні можна змінити.

У функції create_gnuplot генерується скрипт створення графічної частини звіту. За допомогою мінімальних змін можна переробити гистограмму в щось інше, що вам більше сподобається.

Завантажити сам скрипт можна ТУТ.

  

Велике прохання до всіх - не лінуйтеся залишати коментарі або відписатися в пошту з приводу даного скрипта.

Так само прошу врахувати, що я далеко не ас в програмуванні на bash. Через це критику з задоволенням прийму.