столкнулся с проблемой, пользователи посылают письма друг другу и демон IP-аккаунтинга этот трафик считает. Надо, чтобы не считал... соответственно, надо просматривать логи postfix-а и вычитать размер локальных писем из трафика... но посмотрев логи постфикса пришёл в ужас, так неудобно обрабатывать... а ещё клиенты бывают просто-убил-бы, например, в from вообще пусто..... в общем, если ли у кого готовое решение, учитывающее как можно больше нюансов? поделитесь, плиз! pflogsum смотрел, не ахти, имхо....p.s. на perl!
А чего неудобного-то ? Делаешь хэш, в котором ключ привязываешь к идетификатору очереди и всех делов-то. То же самое и с логами sendmail. Попутно можешь отслеживать всякие форварды. Например:CBA9A3C0039: uid=105 from=<xxx@sender.domain>
CBA9A3C0039: message-id=<20050213153413.0E8BE236ED7@some.domain>
CBA9A3C0039: from=<то_что_написано_в_поле_from>, size=1234, nrcpt=3 (queue active)
CBA9A3C0039: to=<recipient@some.domain>, relay=local, delay=0, status=sent (forw
arded as CEFDE3C003A)Идентификатор очереди CBA9A3C0039. Письмо отфорвардилось по алиасам или ~/.forward в очередь с идентификатором CEFDE3C003A, значит дальнейшую его судьбу следует смотреть в этой очереди. Отравитель есть всегда (в первой строке), если письмо не было сгенерировано на этом же сервере (например, кроном) и отправлено по локальному интерфейсу. Получатель тоже имеется. Что не понятно ?
PS. Не забыть про chroot окружения менеджера очередей. С ним связано наличие в логах строки с размером письма. Дело в том, что после logrotate дерагется "syslog restart". Соответственно, теряются все соединения с syslog. Они восстанавливаются автоматически на уровне glibc, но если программа работает с chroot-окружении, то она теряет соединение, ибо не видит /var/run. Два варианта решения проблемы:
1. убрать chroot у "queue manager"
2. рестартовать postfix после каждого рестарта syslog-а