Skip to content

SokoloffA/maillog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

Анализатор логов postfix`а maillog

Введение.

Когда почтовый сервер обрабатывает письмо, он записывает в файл лога несколько строк. При большом почтовом трафике строки относящиеся к разным письмам перемешиваются, иногда записи относящиеся к одному письму отстоят друг от друга на несколько десятков строк. Это сильно мешает чтению логов. Чтобы решить эту проблему, в стародавние времена я написал скрипт на перле оригинальным названием maillog. Со временем в него добавлялся функционал, исправлялись ошибки. И теперь при возникновении вопросов с почтой, первое что мы делаем это запускаем этот скрипт.

Возможности.

Скрипт сканирует файлы логов, группирует строки по письмам. Записи выделяются цветом в зависимости от успешности доставки, подсвечиваются адреса.

Есть возможность фильтрации писем по отправителю и/или отправителю, ключи -f и -t соответственно.

Использую ключ -d можно задать дату или диапазон дат на которые выводить письма. Даты можно задавать в разных вариантах, например:

12.1.2010-15.1.2010 - показать письма с 12-го по 15-е включительно. 10.01.2010- - письма прошедшие с 10-го и позже. -12.01 - обратное предыдущему варианту, 12-го и ранее. Если опущен год или месяц, то подставляется текущие. - - вообще, всё что было 1.1.2010 - за 1-е января 2010 года. По умолчанию показываются письма за сегодняшний день.

Если есть желание увидеть только письма с ошибками, т.е. которые не были доставлены, можно использовать опцию -e.

Все перечисленные ключи можно использовать в любых комбинациях.

Есть поддержка файлов логов, сжатых после ротации.

Настройка.

Настроек не много :) В начале скрипта есть строка "my $filePattern='/var/log/mail/mail*.log';" в ней задается шаблон имени для логов почтового сервера.

Ограничения.

В логах пишется только дата и месяц, поэтому невозможно фильтровать письма по году. Вы всегда можете опускать год в опции -d. Если у кого есть мысли, пишите мне.

У меня месяц в логе пишется по английски Jan, Feb и.т.д., если у кого-то они на русском, добавьте русские элементы в хеш %MONTHS.

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

Использование (help).

maillog [-d DATE] [-f FROM] [-t TO] [-e] [-h] [-V]

Показывает записи в почтовом логе для писем идущих с адреса FROM к адресу TO за период указаный в опции DATE.

    -f  FROM    почтовый адрес отправителя (или его часть).

    -t  TO      почтовый адрес получателя (или его часть).

    -d  DATE    выводить отчет за указанный период, если опция пропущена выводятся записи только за текущий день.

        DD/MM/YY-DD/MM/YY   Полный формат:

        -DD/MM/YY           Пропущена начальная дата:
                            будут показаны записи с 1 января 1970 года.

        DD/MM/YY-           Пропущена конечная дата:
                            будут показаны записи до текущей даты.

        -                   Пропущена как начальная, так и конечная даты:
                            будут показаны записи с 1 января 1970 года до
                            текущей даты.

    -e          показывать только недоставленные сообщения.

    -h          показать страницу помощи.

    -V          показать версию программы и лицензию.

Лицензия GPLv2.

This program is free software; you can redistribute it and/or modify t under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.