вторник, 30 апреля 2013 г.



Установка и настройка простых почтовых клиентов msmtp и mutt в CentOS 

Msmtp 
Переходим во временную директорию
#cd /tmp 

Качаем с сайта msmtp.sourceforge.net дистрибутив 
#wget http://sourceforge.net/projects/msmtp/files/latest/download?source=files 

Распаковываем архив bz2 
#tar -xjvf msmtp-1.4.30.tar.bz2 

Переходим в распакованный каталог
#cd msmtp-1.4.30 

Устанавливаем программу 

#./configure
#make
#make install 


Создаем и настраиваем файл конфигурации 

#touch ~/.msmtprc
#chmod 0600 ~/.msmtprc
#nano ~/.msmtprc 

Типовое содержание файла конфигурации 
defaults

account default
host mail.samara-ttk.ru
port 25
auth off
tls off
tls_starttls off
tls_certcheck off
user XXX@samara-ttk.ru
password *******
from XXX@samara-ttk.ru
logfile msmtp.log


Делаем программу msmtp типовой программой отправки почты 

# rm /usr/sbin/sendmail
rm: удалить символьная ссылка «/usr/sbin/sendmail»? y
#ln -s /usr/local/bin/msmtp /usr/sbin/sendmail 


Для проверки отправки почты создаем файл message.txt, в котором помещаем письмо:

To: YYY@samara.ttk.ru
From: ХХХ@samara-ttk.ru
Subject: TEST
Content-Type: text/plain; charset="UTF-8"

Привет, всем!


Между служебным текстом и текстом сообщения «Привет, всем!» обязательно ставим пробел

Отправляем почту командой
#cat message.txt | msmtp YYY@samara.ttk.ru 

Mutt

Вложения отправить с помощью msmtp у меня не получилось, поэтому для отправки писем с вложениями необходимо использовать почтовый клиент mutt, которые будет использовать готовые настройки msmtp.

Устанавливаем mutt 

#yum install mutt 

Затем создаем файл конфигурации и вписываем туда необходимый конфиг 

#touch ~/.muttrc
#nano ~/.muttrc 


Содержание файла конфигурации 

set realname='Name'
set from=XXX@samara-rrk.ru
set sendmail="/usr/local/bin/msmtp"
set envelope_from=yes
set charset="utf-8"
set send_charset="utf-8" 


Делаем программу mutt типовой программой отправки почты 

# rm /usr/sbin/sendmail 
rm: удалить символьная ссылка «/usr/sbin/sendmail»? y
#ln -s /usr/bin/mutt /usr/sbin/sendmail 


Для проверки отправки почты создаем файл message2.txt, в котором помещаем текст письма (уже без служебной информации):

Привет всем!

Отправляем почту с вложенным файлом 16.pcap командой
#mutt -s "TEST" -a ~/16.pcap – YYY@samara.ttk.ru < ~/message2.txt 
При вложении нескольких файлов на несколько адресов отделять имена файлов и адреса символами «--» 

Пример: 

#mutt -a img.jpg *.png -- addr1 addr2 

Mutt и Cron

Что бы воспользоваться преимуществами планировщика Cron и использовать команды mutt для отправки писем в автоматическом режиме через запуск скриптов в crontab, необходимо разрешить выполнять приложение mutt не только привилегированному пользователю root: 

#chmod u+s /usr/bin/mutt 
Затем вносим недостающие пути в файл crontab 
#nano /etc/crontab 

Содержание заголовка файла: 

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/root 


Перезапускаем crond: 

# service crond restart
Останавливается crond: [ OK ]
Запускается crond: [ OK ] 


суббота, 6 апреля 2013 г.



Настройка записи CDR Asterisk в базу MYSQL 

1. Ставим mysql-server, apache, php, если эти пакеты еще не были установлены ранее

2. Коннектимся к MySQL 

mysql -uroot -p
и вводим пароль 

3. Вводим команды в консоли MySQL:

3.1 Создаем базу данных 

CREATE DATABASE asterisk;

3.2 Подключаемся к базе данных 

USE asterisk;

3.3 Создаем таблицу
CREATE TABLE `cdr` (
`id` int(9) unsigned NOT NULL AUTO_INCREMENT,
`calldate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL DEFAULT '',
`src` varchar(80) NOT NULL DEFAULT '',
`dst` varchar(80) NOT NULL DEFAULT '',
`dcontext` varchar(80) NOT NULL DEFAULT '',
`channel` varchar(80) NOT NULL DEFAULT '',
`dstchannel` varchar(80) NOT NULL DEFAULT '',
`lastapp` varchar(80) NOT NULL DEFAULT '',
`lastdata` varchar(80) NOT NULL DEFAULT '',
`duration` int(11) NOT NULL DEFAULT '0',
`billsec` int(11) NOT NULL DEFAULT '0',
`disposition` varchar(45) NOT NULL DEFAULT '',
`amaflags` int(11) NOT NULL DEFAULT '0',
`accountcode` varchar(20) NOT NULL DEFAULT '',
`uniqueid` varchar(32) NOT NULL DEFAULT '',
`peeraccount` varchar(20) NOT NULL DEFAULT '',
`linkedid` varchar(32) NOT NULL DEFAULT '',
`sequence` int(11) NOT NULL DEFAULT '0',
`userfield` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `calldate` (`calldate`),
KEY `accountcode` (`accountcode`),
KEY `uniqueid` (`uniqueid`),
KEY `dst` (`dst`),
KEY `src` (`src`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 

3.4 Создаем пользователя с паролем 
grant all on asterisk.cdr to asterisk@'localhost' identified by 'passwd123'; 

4. Выходим из MySQL

5. Редактируем файл /etc/asterisk/cdr.conf
nano /etc/asterisk/cdr.conf 
[general]
enable=yes 

По умолчанию сбор CDR уже включен! 

6. Редактируем файл /etc/asterisk/cdr_mysql.conf
nano /etc/asterisk/cdr_mysql.conf 
[global] 
hostname=localhost 
dbname=asterisk 
table=cdr 
password=passwd123 
user=asterisk 

7. Рестартуемся: 

service asterisk restart

8. Проверяем и смотрим, что вызовы собираются в базу данных

9. Теперь настраиваем, что бы Asterisk в CDR логи клал еще и IP адрес абонента.

9.1 В базу MySQL asterisk в таблицу cdr добавляем колонку remote_signal_ip
ALTER TABLE `cdr` ADD `remote_signal_ip` VARCHAR( 16 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ; 

9.2 В диал-план в план набора надо написать вот эту строчку в тот контекст, при совершении вызова через который котором нужно сохранять IP адрес:
Set(CDR(remote_signal_ip)=${SIPCHANINFO(recvip)}); 
Я добавил строчку только на вызовы исходящие с Asterisk во внешний мир. 
Пример рабочего макроса: 
[macro-outtrunksi] 
exten => s,1,Set(CDR(remote_signal_ip)=${SIPCHANINFO(recvip)}) 
exten => s,n,Dial(${OUTTRUNKSI}/${ARG1},120,rt) 
exten => s,n,Busy() 
exten => s,n,Congestion() 
exten => s,n,Hangup() 

9.3 Рестартуем Asterisk
service asterisk restart