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)