The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Раздел полезных советов: Подсчет exim трафика с разделением ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [Проследить за развитием треда]

"Раздел полезных советов: Подсчет exim трафика с разделением ..."  
Сообщение от auto_tips (ok) on 24-Янв-06, 15:54 
В файле конфигурации exim пишем:

   log_file_path = /var/log/exim/exim-%s-%D.log
   log_selector = +delivery_size +sender_on_delivery +received_recipients

В файл /var/db/ukr_net ложим список украинских сетей

И собствено скрипт для подсчета трафика с разделением на украинский и мировой:

#!/usr/bin/perl -w

my ($nmin, $nmax) = (32,0);

open UKRNETS, "/var/db/ukr_net";
while (<UKRNETS>) {
  s/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/([0-9]+)$//;
  $UkrIPs{substr(substr(unpack("B32", pack("N", $1)),24).substr(unpack("B32", pack("N", $2)),24).substr(unpack("B32", pack("N", $3)),24).substr(unpack("B32", pack("N", $4)),24),0,$5)}="$1.$2.$3.$4\/$5";
  $nmin = $5 if $5 < $nmin;
  $nmax = $5 if $5 > $nmax;
}
close UKRNETS;

open TRAFF, '/var/log/exim/exim-main-20060122.log';
while (<TRAFF>) {
  my ($mail_from,$mail_to,$ip,$bytes_in,$bytes_out);
  if      (/^[0-9-]+ [0-9:]+ [A-Za-z0-9]{6}-[A-Za-z0-9]{6}-[A-Za-z0-9]{2} <= ([^\@]+@[A-Za-z0-9-.]+).* H=.*\[([0-9.]+)\].* S=([0-9]+).* for ([^\@]+@[A-Za-z0-9-.]+)$/) {
    $mail_1=$1;
    $mail_2=$4;
    $ip=$2;
    $bytes_in=$3;
    $bytes_out=0;
  } elsif (/^[0-9-]+ [0-9:]+ [A-Za-z0-9]{6}-[A-Za-z0-9]{6}-[A-Za-z0-9]{2} [\=\-\*]\> ([^\@]+@[A-Za-z0-9-.]+).* F=\<([^\@]+@[A-Za-z0-9-.]+)\>.* T=remote_smtp S=([0-9]+).* H=.*\[([0-9.]+)\].*/) {
    $mail_1=$2;
    $mail_2=$1;
    $ip=$4;
    $bytes_in=0;
    $bytes_out=$3;
  }
  if ((defined($ip)) and ($ip =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/)) {
    my $ipB=substr(unpack("B32", pack("N", $1)),24)."".substr(unpack("B32", pack("N", $2)),24)."".substr(unpack("B32", pack("N", $3)),24)."".substr(unpack("B32", pack("N", $4)),24);
    for ($Ne=$nmax; $Ne>=$nmin; $Ne--) {
      my $ipBin=substr($ipB,0,$Ne);
      if ($UkrIPs{$ipBin}) {
        $m_from{$mail_1}{ukr}{in} +=$bytes_in;
        $m_from{$mail_2}{ukr}{in} +=$bytes_in;
        $m_from{$mail_1}{ukr}{out}+=$bytes_out;

        $m_from{$mail_1}{mir}{in} -=$bytes_in;
        $m_from{$mail_2}{mir}{in} -=$bytes_in;
        $m_from{$mail_1}{mir}{out}-=$bytes_out;
        last;
      }
    }
    $m_from{$mail_1}{mir}{in} +=$bytes_in;
    $m_from{$mail_2}{mir}{in} +=$bytes_in;
    $m_from{$mail_1}{mir}{out}+=$bytes_out;
  }
}
close TRAFF;

my $i=0;
foreach $mails (keys %m_from) {
  $i++;
  print "$i $mails
  in  ukr $m_from{$mails}{ukr}{in}
  out ukr $m_from{$mails}{ukr}{out}
  in  mir $m_from{$mails}{mir}{in}
  out mir $m_from{$mails}{mir}{out}
";
}

URL:
Обсуждается: http://www.opennet.me/tips/info/971.shtml

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Подсчет exim трафика с разделением на локальный и мировой"  
Сообщение от Незнайка email(ok) on 24-Янв-06, 15:54 
А что-нить подобное для postfix есть?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Подсчет exim трафика с разделением на локальный и мировой"  
Сообщение от Антонио on 05-Фев-06, 16:52 
Нет, exim рулит
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Подсчет exim трафика с разделением на локальный и мировой"  
Сообщение от Eagla email(ok) on 08-Фев-06, 13:41 
а какая разница у постфикса тоже файл лога есть
только не лучше ли по нормальному трафик считать
приходящий с локальных ип и не с локальных
например ipacctd или ipcad кому что
мона киской еще
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Подсчет exim трафика с разделением на локальный и мировой"  
Сообщение от Horol email on 08-Фев-06, 14:55 
а считать  отдельно UA-IX UkrTel-IX локальный по сетке и остальной мировой по каждому почтовому ящику можно?

сомневаюсь

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Подсчет exim трафика с разделением на локальный и мировой"  
Сообщение от vvvua (??) on 13-Фев-06, 11:05 
легче написать патч и писать это в базу
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Подсчет exim трафика с разделением на локальный и мировой"  
Сообщение от vgray email(ok) on 13-Фев-06, 12:20 
>легче написать патч и писать это в базу


а чем встроенный perl не подходит?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Подсчет exim трафика с разделением на локальный и мировой"  
Сообщение от vgray email(??) on 12-Фев-06, 18:51 
вот только лог файл будет раздуваться лишними данными, те становится чуть менее читаемым

мне больше по душе идея сделать unseen роутер,у которого в транспорте будет вызываться перловый скрипт который куда надо уложит размера письма

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Подсчет exim трафика с разделением на локальный и мировой"  
Сообщение от Paladin email(??) on 03-Мрт-06, 19:40 
А можно пример конфигурации такого роутера?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Подсчет exim трафика с разделением на локальный и мировой"  
Сообщение от vgray email(??) on 05-Мрт-06, 07:48 
>А можно пример конфигурации такого роутера?


logs:
  driver = pipe
    command = "/usr/local/etc/exim/size.pl ${return_path} ${local_part}
    ${domain} ${tod_log}  ${message_size}"
    current_directory = /usr/local/etc/exim/
    user = mailnull
    group = mail
    no_return_output
    no_return_path_add

log_router:
    driver = accept
    unseen = true
    transport = logs
    retry_use_local_part

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Подсчет exim трафика с разделением на локальный и мировой"  
Сообщение от Серж (??) on 05-Дек-06, 12:58 
Еще существует проект ExiBomb Mail Statistics & Logging.

http://sourceforge.net/projects/exibomb/

ExiBomb is a system designd to monitor mail traffic on the Exim based MTA server. The interface is developed in PHP. It reads the maillogs in a tail method and stores all relevant data in a MYSQL Database.The script reading the logs was developed in PERL.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру