Когда почтовый сервер обрабатывает письмо, он записывает в файл лога несколько строк. При большом почтовом трафике строки относящиеся к разным письмам перемешиваются, иногда записи относящиеся к одному письму отстоят друг от друга на несколько десятков строк. Это сильно мешает чтению логов. Чтобы решить эту проблему, в стародавние времена я написал скрипт на перле оригинальным названием 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`а. Я сейчас не помню сильно отличаются логи у других серверов, возможно реально добавить поддержку других программ.
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 показать версию программы и лицензию.
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.