|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugeny Krasilnikov 2:5020/400 24 Sep 2002 10:21:02 To : Evgeny Lisetcky Subject : Re: Re traffic по пользователям sendmail -------------------------------------------------------------------------------- Evgeny Lisetcky <Evgeny.Lisetcky@f30.n5090.z2.fidonet.org> wrote: DD>> Hадод, а чем можно посчитать почтовый тpаффик по пользователям DD>> глядя на maillog генеpиpуемый sendmail? EL> perl'ом :) Только для начала завизуализировать этот трафик не помешает. Опять же потом легче самому разбираться, кто куда что посылал. Hиже патч для сендмайла 8.12.5, для других версий смещения наверно не те будут, который пишет статистику в файл а-ля mailacct. *** sendmail/deliver.c.orig Sat Mar 23 22:30:40 2002 - --- sendmail/deliver.c Mon Apr 22 16:51:10 2002 *************** *** 3434,3439 **** - --- 3434,3495 ---- "%s... Deliver-By trace: relayed\n", to->q_paddr); } + /******** mailacct *************/ + /* Запись статистики в mailacct + ** Для включения записи статистики в mailacct необходимо в вашем + ** файле конфигурации добавить строки, например + LOCAL_CONFIG + D{MailAcctFile}/var/log/mailacct + ** + */ + + if (e->e_msgsize) { + char *mailacctfile; + /* Проверим, сконфигурирована ли в sendmail.cf + поддержка mailacct */ + mailacctfile = macvalue(macid("{MailAcctFile}"), e); + if (mailacctfile != NULL) { + FILE *mailacct; + char *f_host, *f_addr, *t_host, *t_addr, *p; + char clock[16]; + int t_len, t_hlen, f_hlen; + + f_host=macvalue('_', e); + if (!f_host || !*f_host) f_host=macvalue('s', e); + if (!f_host || !*f_host) f_host="localhost"; + if (p=strchr(f_host, ' ')) f_hlen=p-f_host; + else f_hlen=strlen(f_host); + + f_addr=macvalue('g', e); + if (!f_addr || !*f_addr) f_addr=e->e_from.q_user; + if (!f_addr || !*f_addr) f_addr="UNKNOWN"; + + t_host = CurHostName; + if (!t_host || !*t_host) t_host=host; + if (!t_host || !*t_host) t_host="localhost"; + t_hlen=strlen(t_host)-1; + if (t_host[t_hlen] != '.') t_hlen++; + + t_addr=to->q_paddr; + if (*t_addr == '<') t_addr++; + if (*t_addr == '\\') t_addr++; + t_len=strlen(t_addr)-1; + if (t_addr[t_len] != '>') t_len++; + + strftime(clock,sizeof(clock),"%X %y%m%d", + localtime(&(to->q_statdate))); + + if ( mailacct=fopen(mailacctfile,"a")) { + fprintf(mailacct,"%.*s!%s\t%.*s!%.*s\t%d\t%s\n", + f_hlen, f_host, f_addr, + t_hlen, t_host, t_len, t_addr, e->e_msgsize, clock); + fclose(mailacct); + } + } + } + + /******** mailacct *************/ + } if (bitnset(M_LMTP, m->m_flags)) -- Eugeny Krasilnikov --- ifmail v.2.15dev5 * Origin: JV Izhcom Ltd. (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/90792e4eb5d1.html, оценка из 5, голосов 10
|