ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
* [sisyphus] postfix traffic collector
@ 2003-05-22  3:18 Pavel S. Khmelinsky
  2003-05-22  4:31 ` Mike Lykov
  0 siblings, 1 reply; 8+ messages in thread
From: Pavel S. Khmelinsky @ 2003-05-22  3:18 UTC (permalink / raw)
  To: sisyphus

Тут понадобилось считать пользовательский трафик на основании 
логов постфикса. Т.е. пришло собшение на адрес user@domain.net, 
мы user'у в трафик n-ое кол-во мегабайт добавили.
Проблема в том что после разделения входящего трафика по 
пользователям нужно еще его поделить по отправителям.
Т.е. локальный почтовый траффик считать не надо.
Постфикс в логи всю полезную информацию выдает отдельными 
строчками, которые идут не всегда подряд, что усложняет написание 
парсера логов. Может быть у кого-нибудь есть готовое решение? Или 
мысли по поводу того как это можно сделать проще? Может есть 
опция для постфикса чтобы он в лог более красивое описание 
входящих сообщений кидал?
Я в результате поиска нашел только это:
http://freshmeat.net/redir/pflogsumm/7822/url_homepage/postfix_contrib.html
только вот считает все подряд, без возможности разделения 
входящего трафика по пользователям на локальный и внешний.



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] postfix traffic collector
  2003-05-22  3:18 [sisyphus] postfix traffic collector Pavel S. Khmelinsky
@ 2003-05-22  4:31 ` Mike Lykov
  2003-05-22  8:39   ` Igor Dobryninsky
  0 siblings, 1 reply; 8+ messages in thread
From: Mike Lykov @ 2003-05-22  4:31 UTC (permalink / raw)
  To: sisyphus

В сообщении от Четверг 22 Май 2003 08:18 Pavel S. Khmelinsky написал:

> Постфикс в логи всю полезную информацию выдает отдельными
> строчками, которые идут не всегда подряд, что усложняет написание
> парсера логов

я тоже так думал, когда писал парсер лога popa3d  ;)

но мне подсказали - в каждой строчке есть pid... соответственно можно 
суммировать записи об одном процессе  (получения конкретного письма) 
относительно его pid, который в разных строчках (даже разнесенных далеко) 
будет один и тот же.. если postfix конечно его пишет ;)

-- 
Mike


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] postfix traffic collector
  2003-05-22  4:31 ` Mike Lykov
@ 2003-05-22  8:39   ` Igor Dobryninsky
  2003-05-22 12:13     ` Dmitry Lebkov
  0 siblings, 1 reply; 8+ messages in thread
From: Igor Dobryninsky @ 2003-05-22  8:39 UTC (permalink / raw)
  To: sisyphus

  Hello, Mike Lykov.

On Thu, 22 May 2003 09:31:15 +0500
Mike Lykov <combr@vesna.ru> wrote:

ML> но мне подсказали - в каждой строчке есть pid... соответственно можно 
ML> суммировать записи об одном процессе  (получения конкретного письма) 
ML> относительно его pid, который в разных строчках (даже разнесенных далеко) 
ML> будет один и тот же.. если postfix конечно его пишет ;)

  Дело в том, что постфикс, по сути дела, это набор
узкоспециализированных программ, которые последовательно запускаются
менеджером для обработки письма. Поэтому pid тут не поможет. Тут поможет
уникальный МessageId, который присваивается каждому письму. Вот по нему
и надо фильтровать.

  МessageId в логе постфикса указывается как раз после идентификатора
процесса программы-обработчика. Вот пример:

May 22 12:34:36 troitsky postfix/pickup[7125]: 747A710E4: uid=112 from=<community-admin@altlinux.ru>
                                               ^^^^^^^^^
May 22 12:34:36 troitsky postfix/cleanup[7160]: 747A710E4: message-id=<015d01c3203c$9f289770$3d01a8c0@plant.odescable.com.ua>
May 22 12:34:36 troitsky postfix/qmgr[6250]: 747A710E4: from=<community-admin@altlinux.ru>, size=3651, nrcpt=1 (queue active)
May 22 12:34:36 troitsky postfix/local[7167]: 747A710E4: to=<egor@atvc.ru>, relay=local, delay=0, status=sent ("|/usr/bin/procmail -a $DOMAI

  Однако, дело может осложнить, например, DrWeb, если он используется,
или SpamAssassin или ещё что-нибудь подобное.

-- 
  Best Regards, Igor Dobryninsky (egor@atvc.ru)
  ATK-Internet ISP, Arkhangelsk, Russia


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] postfix traffic collector
  2003-05-22  8:39   ` Igor Dobryninsky
@ 2003-05-22 12:13     ` Dmitry Lebkov
  2003-05-22 14:14       ` Pavel S. Khmelinsky
  0 siblings, 1 reply; 8+ messages in thread
From: Dmitry Lebkov @ 2003-05-22 12:13 UTC (permalink / raw)
  To: sisyphus

On Thu, 22 May 2003 12:39:03 +0400
Igor Dobryninsky <egor@atvc.ru> wrote:

>   Hello, Mike Lykov.
> 
> On Thu, 22 May 2003 09:31:15 +0500
> Mike Lykov <combr@vesna.ru> wrote:
> 
> ML> но мне подсказали - в каждой строчке есть pid... соответственно
> ML> можно суммировать записи об одном процессе  (получения конкретного
> ML> письма) относительно его pid, который в разных строчках (даже
> ML> разнесенных далеко) будет один и тот же.. если postfix конечно его
> ML> пишет ;)
> 
>   Дело в том, что постфикс, по сути дела, это набор
> узкоспециализированных программ, которые последовательно запускаются
> менеджером для обработки письма. Поэтому pid тут не поможет. Тут
> поможет уникальный МessageId, который присваивается каждому письму.
> Вот по нему и надо фильтровать.
> 
>   МessageId в логе постфикса указывается как раз после идентификатора
> процесса программы-обработчика. Вот пример:

Это не message id - это mail-queue-id. А message-id идет
строчкой ниже - в сообщении от postfix/cleanup. Вот по
комбинации нескольких mail-queue-id и одного message-id
можно отследить весь цикл доставки сообщения, т.к. message-id
на всех этапах доставки(DrWeb, filters, etc) остается без
изменений, а mail-queue-id -- меняется.

> May 22 12:34:36 troitsky postfix/pickup[7125]: 747A710E4: uid=112
> from=<community-admin@altlinux.ru>
>                                                ^^^^^^^^^
> May 22 12:34:36 troitsky postfix/cleanup[7160]: 747A710E4:
> message-id=<015d01c3203c$9f289770$3d01a8c0@plant.odescable.com.ua> May
> 22 12:34:36 troitsky postfix/qmgr[6250]: 747A710E4:
> from=<community-admin@altlinux.ru>, size=3651, nrcpt=1 (queue active)
> May 22 12:34:36 troitsky postfix/local[7167]: 747A710E4:
> to=<egor@atvc.ru>, relay=local, delay=0, status=sent
> ("|/usr/bin/procmail -a $DOMAI
> 
>   Однако, дело может осложнить, например, DrWeb, если он используется,
> или SpamAssassin или ещё что-нибудь подобное.


--
WBR, Dmitry Lebkov


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] postfix traffic collector
  2003-05-22 12:13     ` Dmitry Lebkov
@ 2003-05-22 14:14       ` Pavel S. Khmelinsky
  2003-05-22 14:46         ` Dmitry Lebkov
  0 siblings, 1 reply; 8+ messages in thread
From: Pavel S. Khmelinsky @ 2003-05-22 14:14 UTC (permalink / raw)
  To: sisyphus

Dmitry Lebkov wrote:
> On Thu, 22 May 2003 12:39:03 +0400
> Igor Dobryninsky <egor@atvc.ru> wrote:
> 
> 
>>  Hello, Mike Lykov.
>>
>>On Thu, 22 May 2003 09:31:15 +0500
>>Mike Lykov <combr@vesna.ru> wrote:
>>
>>ML> но мне подсказали - в каждой строчке есть pid... соответственно
>>ML> можно суммировать записи об одном процессе  (получения конкретного
>>ML> письма) относительно его pid, который в разных строчках (даже
>>ML> разнесенных далеко) будет один и тот же.. если postfix конечно его
>>ML> пишет ;)
>>
>>  Дело в том, что постфикс, по сути дела, это набор
>>узкоспециализированных программ, которые последовательно запускаются
>>менеджером для обработки письма. Поэтому pid тут не поможет. Тут
>>поможет уникальный МessageId, который присваивается каждому письму.
>>Вот по нему и надо фильтровать.
>>
>>  МessageId в логе постфикса указывается как раз после идентификатора
>>процесса программы-обработчика. Вот пример:
> 
> 
> Это не message id - это mail-queue-id. А message-id идет
> строчкой ниже - в сообщении от postfix/cleanup. Вот по
> комбинации нескольких mail-queue-id и одного message-id
> можно отследить весь цикл доставки сообщения, т.к. message-id
> на всех этапах доставки(DrWeb, filters, etc) остается без
> изменений, а mail-queue-id -- меняется.
> 
> 
>>May 22 12:34:36 troitsky postfix/pickup[7125]: 747A710E4: uid=112
>>from=<community-admin@altlinux.ru>
>>                                               ^^^^^^^^^
>>May 22 12:34:36 troitsky postfix/cleanup[7160]: 747A710E4:
>>message-id=<015d01c3203c$9f289770$3d01a8c0@plant.odescable.com.ua> May
>>22 12:34:36 troitsky postfix/qmgr[6250]: 747A710E4:
>>from=<community-admin@altlinux.ru>, size=3651, nrcpt=1 (queue active)
>>May 22 12:34:36 troitsky postfix/local[7167]: 747A710E4:
>>to=<egor@atvc.ru>, relay=local, delay=0, status=sent
>>("|/usr/bin/procmail -a $DOMAI
>>
>>  Однако, дело может осложнить, например, DrWeb, если он используется,
>>или SpamAssassin или ещё что-нибудь подобное.

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

Т.е. что-нибудь вроде

avcheck   unix  -       n       n       -       5       pipe 
flags=q user=email_traf argv=email_traff_log -p 1025

localhost:1025  inet n       -      n      -       - smtpd

в master.cf

Есть мысли о предстоящих трудностях? Или готовые куски кода для 
парсинга сообщения и подсчитывания его длинны в байтах?



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] postfix traffic collector
  2003-05-22 14:14       ` Pavel S. Khmelinsky
@ 2003-05-22 14:46         ` Dmitry Lebkov
  2003-05-22 18:53           ` Pavel S. Khmelinsky
  0 siblings, 1 reply; 8+ messages in thread
From: Dmitry Lebkov @ 2003-05-22 14:46 UTC (permalink / raw)
  To: sisyphus

On Thu, 22 May 2003 18:14:51 +0400
"Pavel S. Khmelinsky" <hmepas@yauza.ru> wrote:

> Dmitry Lebkov wrote:
> > On Thu, 22 May 2003 12:39:03 +0400
> > Igor Dobryninsky <egor@atvc.ru> wrote:
> > 
> > 
> >>  Hello, Mike Lykov.
> >>
> >>On Thu, 22 May 2003 09:31:15 +0500
> >>Mike Lykov <combr@vesna.ru> wrote:
> >>
> >>ML> но мне подсказали - в каждой строчке есть pid... соответственно
> >>ML> можно суммировать записи об одном процессе  (получения
> >конкретного>ML> письма) относительно его pid, который в разных
> >строчках (даже>ML> разнесенных далеко) будет один и тот же.. если
> >postfix конечно его>ML> пишет ;)
> >>
> >>  Дело в том, что постфикс, по сути дела, это набор
> >>узкоспециализированных программ, которые последовательно запускаются
> >>менеджером для обработки письма. Поэтому pid тут не поможет. Тут
> >>поможет уникальный МessageId, который присваивается каждому письму.
> >>Вот по нему и надо фильтровать.
> >>
> >>  МessageId в логе постфикса указывается как раз после
> >идентификатора>процесса программы-обработчика. Вот пример:
> > 
> > 
> > Это не message id - это mail-queue-id. А message-id идет
> > строчкой ниже - в сообщении от postfix/cleanup. Вот по
> > комбинации нескольких mail-queue-id и одного message-id
> > можно отследить весь цикл доставки сообщения, т.к. message-id
> > на всех этапах доставки(DrWeb, filters, etc) остается без
> > изменений, а mail-queue-id -- меняется.
> > 
> > 
> >>May 22 12:34:36 troitsky postfix/pickup[7125]: 747A710E4: uid=112
> >>from=<community-admin@altlinux.ru>
> >>                                               ^^^^^^^^^
> >>May 22 12:34:36 troitsky postfix/cleanup[7160]: 747A710E4:
> >>message-id=<015d01c3203c$9f289770$3d01a8c0@plant.odescable.com.ua>
> >May>22 12:34:36 troitsky postfix/qmgr[6250]: 747A710E4:
> >>from=<community-admin@altlinux.ru>, size=3651, nrcpt=1 (queue
> >active)>May 22 12:34:36 troitsky postfix/local[7167]: 747A710E4:
> >>to=<egor@atvc.ru>, relay=local, delay=0, status=sent
> >>("|/usr/bin/procmail -a $DOMAI
> >>
> >>  Однако, дело может осложнить, например, DrWeb, если он
> >используется,>или SpamAssassin или ещё что-нибудь подобное.
> 
> Я так и знал. Готового решения никто не знает. Сейчас подумываю 

Формат логов постфикса еще в процессе (до|раз)работки и до конца не
стабилизирован. И, в отличии от того же сендмыла, достаточно неудобен
для разбора.

> прикрутить как раз еще одну самописную програмку, которая будет 
> подключатся также как DrWeb а потом уже сама передавать сообщение 
> дальше.
> 
> Т.е. что-нибудь вроде
> 
> avcheck   unix  -       n       n       -       5       pipe 
> flags=q user=email_traf argv=email_traff_log -p 1025
> 
> localhost:1025  inet n       -      n      -       - smtpd
> 
> в master.cf
> 
> Есть мысли о предстоящих трудностях? Или готовые куски кода для 
> парсинга сообщения и подсчитывания его длинны в байтах?

Есть предположение, что после передачи сообщения через smtpd (а не
через pipe) может измениться message-id. Но это только предположение %)

Сейчас пишется парсер на перле, который _должен_ учесть все особенности
имеющегося в ALM постфикса. Задача - учет успешно доставленных сообщений
(для системы расчетов ISP). Данные складываются в MySQL. Если получится
что-нить приличное %) -- можно будет попытаться либо завернуть это в
пакет, либо добавить как contrib к постфиксу. 

--
WBR, Dmitry Lebkov


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] postfix traffic collector
  2003-05-22 14:46         ` Dmitry Lebkov
@ 2003-05-22 18:53           ` Pavel S. Khmelinsky
  2003-05-22 21:31             ` Dmitry Lebkov
  0 siblings, 1 reply; 8+ messages in thread
From: Pavel S. Khmelinsky @ 2003-05-22 18:53 UTC (permalink / raw)
  To: sisyphus

Dmitry Lebkov wrote:
> On Thu, 22 May 2003 18:14:51 +0400
> "Pavel S. Khmelinsky" <hmepas@yauza.ru> wrote:
> 
> 
>>Dmitry Lebkov wrote:
>>
>>>On Thu, 22 May 2003 12:39:03 +0400
>>>Igor Dobryninsky <egor@atvc.ru> wrote:
>>>
>>>
>>>
>>>> Hello, Mike Lykov.
>>>>
>>>>On Thu, 22 May 2003 09:31:15 +0500
>>>>Mike Lykov <combr@vesna.ru> wrote:
>>>>
>>>>ML> но мне подсказали - в каждой строчке есть pid... соответственно
>>>>ML> можно суммировать записи об одном процессе  (получения
>>>
>>>конкретного>ML> письма) относительно его pid, который в разных
>>>строчках (даже>ML> разнесенных далеко) будет один и тот же.. если
>>>postfix конечно его>ML> пишет ;)
>>>
>>>> Дело в том, что постфикс, по сути дела, это набор
>>>>узкоспециализированных программ, которые последовательно запускаются
>>>>менеджером для обработки письма. Поэтому pid тут не поможет. Тут
>>>>поможет уникальный МessageId, который присваивается каждому письму.
>>>>Вот по нему и надо фильтровать.
>>>>
>>>> МessageId в логе постфикса указывается как раз после
>>>
>>>идентификатора>процесса программы-обработчика. Вот пример:
>>>
>>>
>>>Это не message id - это mail-queue-id. А message-id идет
>>>строчкой ниже - в сообщении от postfix/cleanup. Вот по
>>>комбинации нескольких mail-queue-id и одного message-id
>>>можно отследить весь цикл доставки сообщения, т.к. message-id
>>>на всех этапах доставки(DrWeb, filters, etc) остается без
>>>изменений, а mail-queue-id -- меняется.
>>>
>>>
>>>
>>>>May 22 12:34:36 troitsky postfix/pickup[7125]: 747A710E4: uid=112
>>>>from=<community-admin@altlinux.ru>
>>>>                                              ^^^^^^^^^
>>>>May 22 12:34:36 troitsky postfix/cleanup[7160]: 747A710E4:
>>>>message-id=<015d01c3203c$9f289770$3d01a8c0@plant.odescable.com.ua>
>>>
>>>May>22 12:34:36 troitsky postfix/qmgr[6250]: 747A710E4:
>>>
>>>>from=<community-admin@altlinux.ru>, size=3651, nrcpt=1 (queue
>>>
>>>active)>May 22 12:34:36 troitsky postfix/local[7167]: 747A710E4:
>>>
>>>>to=<egor@atvc.ru>, relay=local, delay=0, status=sent
>>>>("|/usr/bin/procmail -a $DOMAI
>>>>
>>>> Однако, дело может осложнить, например, DrWeb, если он
>>>
>>>используется,>или SpamAssassin или ещё что-нибудь подобное.
>>
>>Я так и знал. Готового решения никто не знает. Сейчас подумываю 
> 
> 
> Формат логов постфикса еще в процессе (до|раз)работки и до конца не
> стабилизирован. И, в отличии от того же сендмыла, достаточно неудобен
> для разбора.
Это я заметил %:)

> 
> Сейчас пишется парсер на перле, который _должен_ учесть все особенности
> имеющегося в ALM постфикса. Задача - учет успешно доставленных сообщений
> (для системы расчетов ISP). Данные складываются в MySQL. Если получится
> что-нить приличное %) -- можно будет попытаться либо завернуть это в
> пакет, либо добавить как contrib к постфиксу. 
Уже есть куски кода на которые можно взглянуть? Может мне их и 
хватит?



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [sisyphus] postfix traffic collector
  2003-05-22 18:53           ` Pavel S. Khmelinsky
@ 2003-05-22 21:31             ` Dmitry Lebkov
  0 siblings, 0 replies; 8+ messages in thread
From: Dmitry Lebkov @ 2003-05-22 21:31 UTC (permalink / raw)
  To: sisyphus

On Thu, 22 May 2003 22:53:38 +0400
"Pavel S. Khmelinsky" <hmepas@yauza.ru> wrote:

[skip]

> > Сейчас пишется парсер на перле, который _должен_ учесть все особенности
> > имеющегося в ALM постфикса. Задача - учет успешно доставленных сообщений
> > (для системы расчетов ISP). Данные складываются в MySQL. Если получится
> > что-нить приличное %) -- можно будет попытаться либо завернуть это в
> > пакет, либо добавить как contrib к постфиксу. 
> Уже есть куски кода на которые можно взглянуть? Может мне их и 
> хватит?

Писатель данного кода сей лист читает. Если сочтет возможным что-то подкинуть
-- думаю, подкинет ... %)

--
WBR, Dmitry Lebkov


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2003-05-22 21:31 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-22  3:18 [sisyphus] postfix traffic collector Pavel S. Khmelinsky
2003-05-22  4:31 ` Mike Lykov
2003-05-22  8:39   ` Igor Dobryninsky
2003-05-22 12:13     ` Dmitry Lebkov
2003-05-22 14:14       ` Pavel S. Khmelinsky
2003-05-22 14:46         ` Dmitry Lebkov
2003-05-22 18:53           ` Pavel S. Khmelinsky
2003-05-22 21:31             ` Dmitry Lebkov

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git