URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 65770
[ Назад ]

Исходное сообщение
"Вопрос о журналировании Postfix"

Отправлено Makc2K , 19-Апр-06 14:55 
Столкнулся с потребностью парсера maillog файла. Порыскав решил написать сам на перле. Но тут меня постигла трудность. А именно, при изучении глазами лога я не нашел ни одной записи по исходящей почты от моих пользователей. То есть записи об отправке писем от моего домена отсутствуют. Видимо нужно что то дописать в master.cf, например -v напротив smtpd. Но я не уверен, может кто поможет подсказать поточнее или кинуть ссылочкой. Все исходящие, передаются на релей провайдера.

Заранее спасибо!


Содержание

Сообщения в этом обсуждении
"Вопрос о журналировании Postfix"
Отправлено Free , 19-Апр-06 17:34 
>Столкнулся с потребностью парсера maillog файла. Порыскав решил написать сам на перле.
>Но тут меня постигла трудность. А именно, при изучении глазами лога
>я не нашел ни одной записи по исходящей почты от моих
>пользователей. То есть записи об отправке писем от моего домена отсутствуют.
>Видимо нужно что то дописать в master.cf, например -v напротив smtpd.
>Но я не уверен, может кто поможет подсказать поточнее или кинуть
>ссылочкой. Все исходящие, передаются на релей провайдера.
>
>Заранее спасибо!


Все уже написано. http://www.postfix.org/addon.html Например, pflogsumm. Дописывать ничего не надо. Все и так должно в логи сыпаться.


"Вопрос о журналировании Postfix"
Отправлено Makc2K , 19-Апр-06 17:46 
Я тоже так думаю что все должно сыпаться, но ведь не сыпется. Таких строчек как from=user@mydomain.ru не нахожу. Pflogsumm я смотрел - разочарование полное. То что он рисует годно лишь для админа но никак не для шефа. Нужна тиблица типа | пользователь | адресат | время отправки | размер письма | - все больше ничего не надо.


Спасибо за ответ!


"Вопрос о журналировании Postfix"
Отправлено Free , 21-Апр-06 10:38 
>Я тоже так думаю что все должно сыпаться, но ведь не сыпется.
>Таких строчек как from=user@mydomain.ru не нахожу. Pflogsumm я смотрел - разочарование
>полное. То что он рисует годно лишь для админа но никак
>не для шефа. Нужна тиблица типа | пользователь | адресат |
>время отправки | размер письма | - все больше ничего не
>надо.
>
>
>Спасибо за ответ!


Ну так вроде pflogsumm все это и выдает. Юзер объем, время и т.д. Там еще разные утилиты есть. В любом случае - это не статистика... Так не считают. Отправит юзер одно письмо размером в 1 мегабайт на 10 адресов и все. Юзер отправил 1 мегабайт на сервер, а сервер отправил 10 мегов. А теперь представим, что с некоторыми серверами в мухосранске плохой коннект и передача письма происходитв течение нескольких часов с постоянными таймаутами... Там и 50 и 100 набежит... Что в этом случае покажет скрипт статистики ... мне неизвестно.... да и возможно ли тут как-либо посчитать... думаю, что нет... Только на 25 порту считать без разделения по пользователям.


"Вопрос о журналировании Postfix"
Отправлено _KAV_ , 21-Апр-06 11:27 
>Я тоже так думаю что все должно сыпаться, но ведь не сыпется.
>Таких строчек как from=user@mydomain.ru не нахожу.
Извини за наивный вопрос - а у тебя юзверги отправляют почту через твой сервер или сразу через релейный напрямую, мимо твоего постфикса?

"Вопрос о журналировании Postfix"
Отправлено Makc2K , 21-Апр-06 13:08 
Отправляют конечно через мой smtp, а он в свою очередь уже на релей провайдера. Я уже нашел где взять from и to. У меня проверка идет через amavis, в его логе все видно.

"Вопрос о журналировании Postfix"
Отправлено Дмитрий , 21-Апр-06 17:16 
#!/usr/local/bin/bash

emails=" ДядяВася@МойДомен "
logfile="/var/log/postfix.log"

# Создаём цикл для почтовыйх ящиков в списке emails
for myemail in ${emails}
do
# Непринятая почта
cat $logfile | grep "$myemail" | grep "NOQUEUE" | awk '{ for (i=NF;i>0;--i) {{a=$i} if ( a~"from=" ) {print $1,$2,$3,a}}}' > ./tmp/noqueue.$myemail

# Кто присылал почту
cat /dev/null > ./tmp/who-is-send.$myemail
id=$(cat $logfile | grep "$myemail" | grep "postfix/virtual" | awk '{print $6}' | cut -d\: -f1)

for myid in ${id}
    do
    cat $logfile | grep "$myid" | grep "from" | awk '{print $1,$2,$3,$7,$8}' | sed s/","/""/g | sed s/"size="/""/g >> ./tmp/who-is-send.$myemail
    done

# Кому посылали почту
cat /dev/null > ./tmp/$myemail.send-to
id=$(cat $logfile | grep "$myemail" | grep "postfix/qmgr" | awk '{print $6}' | cut -d\: -f1)
for myid in ${id}
    do
    kol=$(cat $logfile | grep "$myid" | grep "relay" | grep -v "127.0.0.1" | awk '{print $1,$2,$3,$7,$8}' | sed s/","/""/g | sed s/"size="/""/g | wc -l | awk '{print $1}')
    if [ $kol != 0 ]
        then
    firstlog=$(cat $logfile | grep "$myid" | grep "from" | awk '{print $1,$2,$3,$7}' | sed s/","/""/g)
    traflog=$(cat $logfile | grep "$myid" | grep "from" | awk '{print $8}' | sed s/","/""/g | sed s/"size="/""/g)
    secondlog=$(cat $logfile | grep "$myid" | grep "relay" | grep -v "127.0.0.1" | awk '{print $7}' | sed s/","/""/g)
    echo "$firstlog $secondlog $traflog" >> ./tmp/$myemail.send-to
    fi
    done
    traf=$(cat ./tmp/who-is-send.$myemail | awk '{s+=$5} END {print s}')
    echo "$myemail (Входящий траффик) -- $traf Байт"
done

В директории куда положишь скрипт, нужно создать папку tmp


"Вопрос о журналировании Postfix"
Отправлено Makc2K , 21-Апр-06 18:01 
Большое спасибо за скрипт. Но если чесно на перле он будет менее громоздким.

"Вопрос о журналировании Postfix"
Отправлено dik , 21-Апр-06 17:19 
#!/usr/local/bin/bash

emails=" ДядяВася@МойДомен "
logfile="/var/log/postfix.log"

# Создаём цикл для почтовыйх ящиков в списке emails
for myemail in ${emails}
do
# Непринятая почта
cat $logfile | grep "$myemail" | grep "NOQUEUE" | awk '{ for (i=NF;i>0;--i) {{a=$i} if ( a~"from=" ) {print $1,$2,$3,a}}}' > ./tmp/noqueue.$myemail

# Кто присылал почту
cat /dev/null > ./tmp/who-is-send.$myemail
id=$(cat $logfile | grep "$myemail" | grep "postfix/virtual" | awk '{print $6}' | cut -d\: -f1)

for myid in ${id}
    do
    cat $logfile | grep "$myid" | grep "from" | awk '{print $1,$2,$3,$7,$8}' | sed s/","/""/g | sed s/"size="/""/g >> ./tmp/who-is-send.$myemail
    done

# Кому посылали почту
cat /dev/null > ./tmp/$myemail.send-to
id=$(cat $logfile | grep "$myemail" | grep "postfix/qmgr" | awk '{print $6}' | cut -d\: -f1)
for myid in ${id}
    do
    kol=$(cat $logfile | grep "$myid" | grep "relay" | grep -v "127.0.0.1" | awk '{print $1,$2,$3,$7,$8}' | sed s/","/""/g | sed s/"size="/""/g | wc -l | awk '{print $1}')
    if [ $kol != 0 ]
        then
    firstlog=$(cat $logfile | grep "$myid" | grep "from" | awk '{print $1,$2,$3,$7}' | sed s/","/""/g)
    traflog=$(cat $logfile | grep "$myid" | grep "from" | awk '{print $8}' | sed s/","/""/g | sed s/"size="/""/g)
    secondlog=$(cat $logfile | grep "$myid" | grep "relay" | grep -v "127.0.0.1" | awk '{print $7}' | sed s/","/""/g)
    echo "$firstlog $secondlog $traflog" >> ./tmp/$myemail.send-to
    fi
    done
    traf=$(cat ./tmp/who-is-send.$myemail | awk '{s+=$5} END {print s}')
    echo "$myemail (Входящий траффик) -- $traf Байт"
done

Создай папку tmp, там куда положишь скрипт.


"Вопрос о журналировании Postfix"
Отправлено dik , 21-Апр-06 17:21 
#!/usr/local/bin/bash

emails=" ДядяВася@ТвойДомен "
logfile="/var/log/postfix.log"

# Создаём цикл для почтовыйх ящиков в списке emails
for myemail in ${emails}
do
# Непринятая почта
cat $logfile | grep "$myemail" | grep "NOQUEUE" | awk '{ for (i=NF;i>0;--i) {{a=$i} if ( a~"from=" ) {print $1,$2,$3,a}}}' > ./tmp/noqueue.$myemail

# Кто присылал почту
cat /dev/null > ./tmp/who-is-send.$myemail
id=$(cat $logfile | grep "$myemail" | grep "postfix/virtual" | awk '{print $6}' | cut -d\: -f1)

for myid in ${id}
    do
    cat $logfile | grep "$myid" | grep "from" | awk '{print $1,$2,$3,$7,$8}' | sed s/","/""/g | sed s/"size="/""/g >> ./tmp/who-is-send.$myemail
    done

# Кому посылали почту
cat /dev/null > ./tmp/$myemail.send-to
id=$(cat $logfile | grep "$myemail" | grep "postfix/qmgr" | awk '{print $6}' | cut -d\: -f1)
for myid in ${id}
    do
    kol=$(cat $logfile | grep "$myid" | grep "relay" | grep -v "127.0.0.1" | awk '{print $1,$2,$3,$7,$8}' | sed s/","/""/g | sed s/"size="/""/g | wc -l | awk '{print $1}')
    if [ $kol != 0 ]
        then
    firstlog=$(cat $logfile | grep "$myid" | grep "from" | awk '{print $1,$2,$3,$7}' | sed s/","/""/g)
    traflog=$(cat $logfile | grep "$myid" | grep "from" | awk '{print $8}' | sed s/","/""/g | sed s/"size="/""/g)
    secondlog=$(cat $logfile | grep "$myid" | grep "relay" | grep -v "127.0.0.1" | awk '{print $7}' | sed s/","/""/g)
    echo "$firstlog $secondlog $traflog" >> ./tmp/$myemail.send-to
    fi
    done
    traf=$(cat ./tmp/who-is-send.$myemail | awk '{s+=$5} END {print s}')
    echo "$myemail (Входящий траффик) -- $traf Байт"
done

Папку tmp создай.