Существует некий 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)