|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.03.2011, 10:40 | #1 |
Новичок
Джуниор
Регистрация: 03.03.2011
Сообщений: 1
|
Подсчет объема входящей почты
Есть скрипт на perl, который подсчитывает объем входящей почты.
#!/usr/local/bin/perl -w use IMAP::Admin; use DBI; $database = "xxx"; $hostname = "localhost"; $port = "xxxx"; $user = "xxx"; $password = "xxxxx"; $dsn = "DBI:mysqlatabase=$database;host= $hostname;port=$port"; $dbh = DBI->connect($dsn, $user, $password) or exit (1); if (defined ($ARGV[0]) and $ARGV[0] eq "clear") { $dbh->do("UPDATE users SET used='0' WHERE 1"); exit; } my $imap = IMAP::Admin->new('Server' => 'localhost', 'Login' => 'cyradm', 'Password' => 'imapgroup25A', 'Port' => 143, # (143 is default), 'Separator' => "/", # default is a period # and any of the SSL_ options from IO::Socket::SSL ); $sth = $dbh->prepare("SELECT email,uid FROM users WHERE uid!='0'"); $sth->execute(); while( @row = $sth->fetchrow_array()) { $email = $row[0]; $email =~ s/@.*//; @q = $imap->get_quota("user/$email"); ($mbox, $used, $quota) = @q; if(undef(@q)) { print $imap->error; exit 1; } if(defined($mbox) && defined($used) && defined($quota)) { $rows = $dbh->do(qq{ UPDATE users SET used=used + '$used' WHERE email='$row[0]'}); if (! defined($rows)) { die(); } } else { } } $imap->close; @days=qw(31 28 31 30 31 30 31 31 30 31 30 31); my ($sec,$min,$hour,$mday,$mon,$year,$ wday,$yday,$isdst) = localtime(time); $hours = $days[$mon]*24; printf("++++++++++\t0.000\n"); $sth = $dbh->prepare("SELECT email,used FROM users WHERE used!='0' ORDER BY email"); $sth->execute() or die(); while( @row = $sth->fetchrow_array()) { $email = $row[0]; $email =~ s/@.*//; $used=$row[1]; printf("%s\t%.3f\n", $email, $used/$hours); } Недавно начал показывать нули вместо реальных размеров ящиков. Скрипт разрабатывал не сам, просто срочно нужно найти причину. К нему есть описание разработчика: Система FreeBSD-7.1 Главный почтовый сервер. ПО: postfix + cyrus-imap. cyrus-imap установлен с патчами от UoA. Патч делает возможным автоматическое создание ящика при логие/доставке письма. Грубый отсев спама делается средствами postfix. Второй уровень - rmilter. Делает greylisting, rate-limit в связке с memcached. Выполняет проверку spf. Memcache работает в режиме мастер-мастер репликации с mx4. Для этого он собран с патчем replecached. rmilter установлен с нестандартным патчем. Патч изменяет порядок выполнения проверок, spf ставиться вперед грейлистинга. Если проверка spf дала положительный результат, грейлистинг не выполняется. Также патч делает включает проверку для всех доменов и добавляет в конфиг опцию white листа айпишников, для которых проверка spf не выполняется. Третий уровень spamassassin через amavisd, через него же выполняется антивирусная проверка. SpamAssassin работает с дополнительными правилами для русскоязычных писем с сайта sa-russian.narod.ru. Amavis связан с postifx с помощью amavisd-milter. На этом же сервере установлен кеширующий DNS демон unbound. Информация о почтовых ящиках храниться в базе mysql.Рутовый пароль к mysql trfake510. Бекап базы ежедневный. Логирование и прочие второстепенные данные в базе postgresql. Для локальных подключений рутовый пароль не требуется. Доставка в ящики производиться через демон lmtpd. Управление почтовыми ящиками выполняется через интерфейс сокетов, с консоли - через скрипт imap.pl Cron. /usr/local/xxxx/bin/usage.pl - отвечает за подсчет размера ящиков. /usr/local/bin/sa-update - обновление правил антиспама. /root/scripts/dbbackup.sh - бекап базы mysql. /root/scripts/backup.sh - бекап файловой системы. /root/scripts/backup_cyrus.sh - бекап базы почтовых ящиков. Диски: Там 4 SATA диска по 160 Гб. Объеденены в два зеркала с помощью интегрированного в материнскую плату контроллера. ar0 - ad4, ad6 ar1 - ad5, ad7 |
03.03.2011, 15:30 | #2 |
Laravel/Vue expert
Старожил Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 2,832
|
Установите munin из портов и будет Вам счастье. Ничего писать не нужно, а если же захотите, то есть возможность легко добавлять плагины, писанные на удобном вам языке (си, пайтон, баш, джава, etc)
И да, забыл добавить. Фряха уже в области некрологии. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подключение к серверу входящей почты (POP3-сервер) | BuT@JL | Работа с сетью в Delphi | 0 | 04.02.2011 17:46 |
Создание пустого mp3 файла минимального объема | Levsha100 | Свободное общение | 10 | 26.06.2010 20:50 |
Поиск в файле большого объема | za4ot | Общие вопросы Delphi | 2 | 26.03.2009 20:26 |
вычисление объема параболойда по сегментам///need help | Diller | Помощь студентам | 2 | 05.10.2007 18:26 |