The OpenNET Project / Index page

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

Каталог документации / Раздел "Руководства по FreeBSD на русском" / Оглавление документа

10.10 Чем можно делать статистику почты sendmail?

Существует некий unlog.

Посмотрите на ftp://ftp.moldsat.md/pub/unix/perl/sendmail-log-analizer

Подобные скрипты есть на www.isp-unix.com

Можно писать и самим по логам, копящимся в файлах /var/log/maillog. Hапример, общее число писем, прошедших через sendmail за отчётный период, считается примерно так:

        zcat /var/log/maillog*z | cat /var/log/maillog - | \
        awk '/sendmail/{print $6}' | sort | uniq | wc -l
     


Евгений Кузаков предложил следующий вариант:

Взял патч Бармина  к сендмаилу где-то тут...
Только он для 8.8.5. прикрутил его для 8.9.3.
компиляешь сендмаила с -DMAILACCT
В итоге сендмаил пишет лог в /var/log/mailacct в формате:

sun.oracle.ru!ru.oracle.com!vchernov    LOCAL!piv       1455    17:54:49
21.09.98
sun.oracle.ru!ru.oracle.com!vchernov    LOCAL!zdg       1455    17:54:49
21.09.98

А потом с тим можно делать что угодно...
Например:

#!/bin/sh
if [ $# -lt 3 ]; then
    echo Usage: $0 maildomain month year
    printf "\tExample: $0 occ.ru 01 98\n\n"
    exit
fi
case "$2" in
    "01") monthname="Январь";;
    "02") monthname="Февраль";;
    "03") monthname="Март";;
    "04") monthname="Апрель";;
    "05") monthname="Май";;
    "06") monthname="Июнь";;
    "07") monthname="Июль";;
    "08") monthname="Август";;
    "09") monthname="Сентябрь";;
    "10") monthname="Октябрь";;
    "11") monthname="Ноябрь";;
    "12") monthname="Декабрь";;
    *)  echo "Ну Вы, барин, даете..."; exit 1;;
esac

domain="$1"
month="$2"
year="$3"

statfile=/var/log/mailacct
#statfile=./mailacct
awk '
BEGIN{
    tos=0
    toc=0
    froms=0
    fromc=0
}
{

if((index($0,domain)!=0)&&(index($5,sprintf("%s.%s",month,year))!=0)){
        if((index($1,domain)!=0)){
            fromc=fromc+1
            froms=froms+$3
        }else{
            toc=toc+1
            tos=tos+$3
        }
    }
}
END {
    printf("Статистика домена %s за %s %s:\n",domain,monthname,year)
    printf("\tпришло почты на домен: %2.0f писем (%0.0f
bytes)\n",toc,tos)
    printf("\tотправлено с домена: %2.0f писем (%0.0f
bytes)\n",fromc,froms)
}' domain=$domain month=$month year=$year < $statfile
monthname=$monthname

Пример:
./mailstat occ.ru 03 99
Статистика домена occ.ru за Март 99:
        пришло почты на домен: 2783 писем (66523770 bytes)
        отправлено с домена: 353 писем (72424444 bytes)

     


Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.




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

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