Документация по ОС FreeBSD Воскресенье, 05.05.2024, 19:31
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Mail

POSTFIX. Ведение cтатистики [2009]

Добрый день, Дамы и Господа!
Поднял я как то почтовый сервер на FreeBSD под POSTFIX. По мотивам вот этой статьи:
link
А потом потребовало руководство той организации что я обслуживал, что бы я им выдавал сведенья куда ходят письма, сколько, кто, ёмкость писем из внутри или с наружи, в общем очередная идея КГБ начальства)))
Ну хорошо, погуглил я немного и не нашел по этому поводу не чего адекватного…
Ну и да ладно, значит сделаем сами!
Надо из лог файла (а там все сведенья кто, куда, сколько, откуда, во сколько) перегонять в базу Муськи)
Ну хорошо, снова погуглил на www.opennet.ru нашёл стрёмненькую статью и скрипт под PERL причём так себе не год не определяет не id в базу не вбивает...
Пришлось поправить скрипт, естественно базу немного изменить, ну а затем самому ручками написать адекватную Web – Мордочку)))

Что надо нам для этого:
1) Apache
2) MySQL
3) PHP

Ну в принципе если вы по давече упомянутой статье подымали почтовик то всё это хозяйство у вас имеется!

Начнём по шагово:

1) Нам нужно создать базу в муське:
Копируйте отсюда код:

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Структура таблицы `calendar`
--

CREATE TABLE IF NOT EXISTS `calendar` (
 `num` int(2) NOT NULL default '0',
 `month` char(3) NOT NULL default '',
 `mesyc` varchar(20) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=koi8r;

--
-- Дамп данных таблицы `calendar`
--

INSERT INTO `calendar` (`num`, `month`, `mesyc`) VALUES
(1, 'Jan', 'Январь'),
(2, 'Feb', 'Февраль'),
(3, 'Mar', 'Март'),
(4, 'Apr', 'Апрель'),
(5, 'May', 'Май'),
(6, 'Jun', 'Июнь'),
(7, 'Jul', 'Июль'),
(8, 'Aug', 'Август'),
(9, 'Sep', 'Сентябрь'),
(10, 'Oct', 'Октябрь'),
(11, 'Nov', 'Ноябрь'),
(12, 'Dec', 'Декабрь');

-- --------------------------------------------------------

--
-- Структура таблицы `mails`
--

CREATE TABLE IF NOT EXISTS `mails` (
 `id` int(16) NOT NULL default '0',
 `year` int(4) NOT NULL default '0',
 `month` varchar(10) NOT NULL default '',
 `day` char(2) NOT NULL default '',
 `time` time NOT NULL default '00:00:00',
 `ip` varchar(255) NOT NULL default '',
 `mailfrom` varchar(255) NOT NULL default '',
 `rcptto` varchar(255) NOT NULL default '',
 `size` int(32) default NULL,
 PRIMARY KEY (`month`,`day`,`time`)
) ENGINE=MyISAM DEFAULT CHARSET=koi8r;

-- --------------------------------------------------------

--
-- Структура таблицы `userlist`
--

CREATE TABLE IF NOT EXISTS `userlist` (
 `id` int(11) NOT NULL auto_increment,
 `user` varchar(255) NOT NULL default '',
 `pass` varchar(255) NOT NULL default '',
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=koi8r AUTO_INCREMENT=1 ;

Затем не хитрые действия:

touch maillogs.sql
затем
ee maillogs.sql

В открытый пустой файл заливаем скопрированый код, комбинацией клавиш Shift + Insert
Сохроняем Esc -> а -> а
Заходим в муську:
mysql -u root -p

Вводим пароль рута MySQL:
Enter password:

Создаём базу для хранения сведений:
CREATE DATABASE maillogs DEFAULT CHARACTER SET koi8r COLLATE koi8r_general_ci;

Добавляем пользователя:
* Вводим одной сторокой
GRANT ALL PRIVILEGES ON maillogs.* TO mailuser@localhost 
IDENTIFIED BY 'mailuser';

Теперь загоняем структуру таблиц:
mysql> use maillogs;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> SET NAMES koi8r;
Query OK, 0 rows affected (0.00 sec)

mysql> SET character_set_database=koi8r;
Query OK, 0 rows affected (0.00 sec)

mysql> SET character_set_server=koi8r;
Query OK, 0 rows affected (0.00 sec)

mysql> \. maillogs.sql

Если всё хорошо, то увидем:
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 12 rows affected (0.00 sec)
Records: 12 Duplicates: 0 Warnings: 0

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Проверяем!
Заходим в муську, только теперь вод так:
mysql -u mailuser -p

Вводим пароль: mailuser
Enter password:

Просим показать базы:
show databases;

Должный увидеть:
+----------+
| Database |
+----------+
| maillogs |
+----------+
1 row in set (0.00 sec)

Подключаемся к базе:
use maillogs;
Database changed

Теперь просим показать таблицы:
show tables;

Если всё хорошо, то видем:
+--------------------+
| Tables_in_maillogs |
+--------------------+
| calendar |
| mails |
| userlist |
+--------------------+
3 rows in set (0.00 sec)

Добавляем пользователя, который будет заходить в Web – Мордочку))
* Вводим одной сторокой
INSERT INTO `userlist` (`id`, `user`, `pass`) 
VALUES (1, 'admin', '1234567');

Проверяем есть ли он?
select * from userlist;

Если видем вод это:
+----+-------+----------+
| id | user | pass |
+----+-------+----------+
| 1 | admin | 1234567 |
+----+-------+----------+
1 row in set (0.00 sec)

Значет GOOD!)))
И так мы справились с созданием базы!)))

2) Приступим к следующему этапу, в нём мы создадим скрипт который будет лопатить лог!
Например, ну где вы храните скрипты, или например прямо в руте создаём папочку для скрипта и кладём его туда:
mkdir /root/scripts
touch /root/scripts/maillog.pl
ee /root/scripts/maillog.pl

И вставляем вод этот код скрипта:
файл скачан размер размещён примечание
maillog.pl.example
38 1.7kb 2009-12-12 PERL Скрипт для выборки данных из лога Postfix!

Сохроняемб закрываем: Esc -> a -> a
Делаем его исполняемым:
chmod 770 /root/scripts/maillog.pl

И пробуем, запускаем его:
/root/scripts/maillog.pl

Может в базу не чего не добавиться, так как изначально этот скрипт не мой я его только редактировал, то тогда надо обнулить лог postfix-а, делаем это так:
echo > /var/log/maillog

Отправляем почту с нашего сервера, или на него присылаем, и снова проверяем теперь будет работать, в этом казусе у меня не было времени ковыряться, увы, если кто-то сможет и поправит, буду рад)
Если база набивается, а проверить можно подключившись выше упомянуто к базе и сделать запрос:
select * from mails;

Мы увидем данные!
А если иначе, значит, что то не так...(
Ну если всё хорошо, теперь автоматизируем, добавим в крон вод такую строку:
cat /etc/crontab
*/59 * * * * root /root/scripts/maillog.pl

Здесь сказано, что раз в час крон (планировщик), запускает скрипт лопатить лог, но если надо чаще сделать то поменяйте параметры, принципе меня устраивало и так но всё зависит от индивидуального случая!
Перезапускаем крон:
/etc/rc.d/cron restart

Со временем в логах появиться должно вод это:
cat /var/log/cron | grep maillog.pl
Jul 11 00:59:00 fortero /usr/sbin/cron [1986]:(root)CMD \ 
(/root/scripts/maillog.pl) 

3) Если вы дошли до этого этапа без казусов и у вас всё работает то можно порадоваться, остался кульминационный этап, Web – Мордочка))
Качаем мордочку:
файл скачан размер размещён примечание
statmail.tar.bz2
14 163.3kb 2009-12-12 Web Морда для статистики Postfix!

Закидываем её на сервер в директорию
/usr/local/www/data
Распаковываем:
bzip2 -d statmail.tar.bz2
tar -xf statmail.tar

Теперь правим конф ДНС если нужно присвоить имя типа statmail.localdomain или
Можно обойтись без этого просто править хост файл на удалённой машине, это вы сами решите…
А вот apache я вам помогу поправить, идём вот сюда /usr/local/etc/apache
И правим конф httpd.conf
Добавим в конф:
<VirtualHost 192.168.64.254:80>
 ServerAdmin admin@muzdrama.com
 DocumentRoot /usr/local/www/data/statmail
 ServerName statmail.dram.lh
 <Directory "/usr/local/www/data/statmail">
 Options none
 AllowOverride Limit
 Order Deny,Allow
 Deny from all
 Allow from 127.0.0.1 192.168.0.0/16
 DirectoryIndex index.php
 </Directory>
</VirtualHost>

Примерно вод так, ну каждый под себя подгоняет имя страницы, айпи, путь и т.д.
После чего перезапускаем apache:
/usr/local/etc/rc.d/apache.sh restart

Лезем в конф админки:
ee /usr/local/www/data/statmail/config.php

И читаем, там описано, принципе нам достаточно только указать логин и пароль postfix сервера для подключения к базе, а всё остальное по дефолту!
Теперь проверяем, если всё получилось, то зайдя в браузере на нашу страничку мы пройдём логин пароль и увидим примерно это:





Ну вот и всё, это моя первая статья здесь, по этому не судите меня строга за ошибки, и может быть это особо не кому и не надо, но жалко творение пропадает из-за одной организации!)))
Пишите всем постараюсь ответить и помочь, фиксить ошибки!

Спасибо за внимание! :-)



Источник: http://www.lissyara.su/articles/freebsd/mail/postfix_statistics/
Категория: Mail | Добавил: oleg (21.12.2009) | Автор: fox
Просмотров: 1271 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024