AvantFax+Hylafax факс сервер на базе FreePBX и CentOS 6.6

Опубликовано в Asterisk

Факс сервер Asterisk

После того как наш белоруский Viber был продан японскому интернет-конгломерату, остался только один надежный вид связи это факс ;)

В данной статье мы рассмотрим установку достаточно функционального факс сервера на базе AvantFax+Hylafax+Iaxmodem. В качестве основы я решил использовать FreePBX 12 c Asterisk 13 (LST), и все это на CentOS 6.6, считаю что на данный момент, это самая современная сборка, отвечающая нужным критериям качества и функционала. Стоит упомянуть, о не так давно вышедшем Elastix 2.5 который уже содержит все это, на своем борту, но по опыту нескольких инсталляций было выявлено, очень много ошибок, багов. Создалось такое впечатление, что  скрестили ежика и жирафа ;)  Да и сам проект Elastix, чахнет, чего нельзя сказать о FreePBX. Новый FreePBX 13 будет создан на основе фреймворка bootstrap от twitter, и по обещаниям разработчика будет поддерживать utf-8 в полном объёме.

Hylafax факс VoIPAvantFax представляет собой веб-интерфейс для удобного управления факс сервером Hylafax, с возможностью отправки, получения факсов, разграничение доступа пользователей к определенному модему (факсу). В своем факс сервере мы будем использовать hylafax+, в отличии от обычного hylafax, он быстрее развивается и включает множество новшеств, например работа с голосовыми функциями и отправка цветных факсов, также множественные исправление предложенные сообществом Open source. Не смотря на то что текущая версия hylafax+ ниже оригинального hylafax, новшеств и важных исправлений там больше.

Подключаем расширенный репозиторий epel к r нашему CentOS:

rpm -Uvh http://mirror.datacenter.by/pub/fedoraproject.org/epel/6/x86_64/epel-release-6-8.noarch.rpm

Устанавливаем необходимые зависимости для сборки:

yum -y install gcc gcc-c++ libtiff libtiff-devel git

Дальше идет сборка iaxmodem из исходников:

cd /usr/src
wget http://kent.dl.sourceforge.net/project/iaxmodem/iaxmodem/iaxmodem-1.2.0/iaxmodem-1.2.0.tar.gz
tar xvfz iaxmodem-1.2.0.tar.gz
cd iaxmodem-1.2.0
./configure
make
cp iaxmodem /usr/local/sbin/
mkdir /etc/iaxmodem
mkdir /var/log/iaxmodem
cp iaxmodem.init.fedora /etc/init.d/iaxmodem
chmod +x /etc/init.d/iaxmodem
chkconfig iaxmodem on

Следующим этапом идет создание екстеншена (факса) в самой FreePBX, добавляем новое IAX устройство со своим номером и выставляем нужные опции:

екстеншен (факса) в FreePBX

 

 

Создаем наш iax модем:

nano /etc/iaxmodem/iaxmodem-cfg.ttyIAX1
device /dev/ttyIAX1
owner uucp:uucp
mode 660
port 4570
refresh 300
server 127.0.0.1
peername 201
secret 6e10f8e2fa06485bc39f855521fa196a
codec alaw

Устанавливаем hylafax+ из репозитария:

yum install hylafax+
chkconfig hylafax+ on

Запускаем конфигуратор факса:

faxsetup

Отвечаем на все вопросы по умолчанию пока не появится вопрос:

Do you want to run faxaddmodem to configure another modem [yes]?

Отвечаем No и перегружаем hylafax+, копируем конфиг iax модема, в папку Hylafax, с переименованием названия в соответствии номеру вашего модема.

cp /usr/src/iaxmodem-1.2.0/config.ttyIAX /var/spool/hylafax/etc/config.ttyIAX1

Теперь пришел черед установке самого AvantFax, ставить мы его будем из git, потому как только там самая последняя версия с доработками, подробнее об этом написано в самом github.

cd /usr/src
git clone https://github.com/YetOpen/avantfax.git

В файле rh-prefs.txt указываем пароль рута и в файле и изменяем директорию INSTDIR:

cd avantfax 
nano rh-prefs.txt 
... 
INSTDIR=/var/www/html/avantfax 
... 
ROOTMYSQLPWD= 
...
HTTPDUSER=asterisk
HTTPDGROUP=asterisk
...

Выполняем установку:

./rh-install.sh
rm /etc/httpd/conf.d/avantfax.conf

Выставляем нужные права на директории с avantfax:

chown -R asterisk:asterisk /var/www/html/avantfax
chmod -R 0777 /var/www/html/avantfax
chmod -R 0777 /var/www/html/avantfax/faxes
chmod -R 0777 /var/www/html/avantfax/faxes/recvd
chmod -R 0777 /var/www/html/avantfax/faxes/sent
chmod -R 0777 /var/www/html/avantfax/tmp
/etc/init.d/httpd restart

CentOS 6 использует initctl и его конфигурация остается для меня загадкой (похоже и для самих разработчиков Hylafax). Поэтому добавляем наши модемы в Upstart:

nano /etc/init/start-faxgetty.conf
# This service start /dev/ttyIAX
 
start on stopped rc RUNLEVEL=[2345]
stop on starting runlevel [016]
 
respawn
exec /usr/sbin/faxgetty /dev/ttyIAX1
initctl start start-faxgetty
/etc/init.d/hylafax+ start

Для того чтобы видеть принятые факсы необходимо в веб-интерфейсе создать/изменить пользователя, разрешить ему отслеживать нужные факс модемы и определенную заранее созданную категорию модемов и выполнить:

echo "127.0.0.1" > /etc/hylafax/hosts.hfaxd

На этапе отладки будет очень полезно:

netstat  -nltp | grep fax

Подключаемся к WEB интерфейсу по адресу http://xxx.xxx.xxx.xxx/avantfax/admin

Логин: admin 
Пароль: password

Сразу после входа будет предложено сменить пароль.

Тестируем прием факсов через Asterisk, например с помощью VentaFax:

Avantfax

Аналогично тестируем и отправку/постановку в очередь факсов:

Avantfax

Проверка статуса сервера осуществляется командами:

faxstat -s # факсы ожидающие посылки
faxstat -r # полученные факсы
faxstat -d # факсы отправленные, а также не отправленные, из-за ошибок
 
faxrm job_number # удаление факса из очереди
faxqclean  # очистка спула (посланных факсов, и не посланных из-за ошибок)
faxcron    # статистика

Добавим два скрипта в крон (/etc/crontab). Один нужен для создания адресной книги, а второй удаляет все временные файлы, которые остаются после загрузки файлов пользователями в факс-сервер через веб интерфейс:

0 * * * * /var/www/html/avantfax/includes/phb.php
0 0 * * * /var/www/html/avantfax/includes/avantfaxcron.php -t 2

При желании можно добавить кнопку Avantfax в панель FreePBX, отдельным модулем:

AvantFax FreePBX модуль

cd /var/www/html/admin/modules
git clone https://github.com/joshnorth/FreePBX-AvantFAX avantfax
chown -R asterisk:asterisk avantfax
amportal a ma install avantfax
amportal a r

Стоит упомянуть то, что HylaFax по умолчанию не поддерживает прием и передачу факсов по протоколу T.38, и работает в обычном аналоговом T.30 что собственно не гарантирует прохождение факса по сетям VoIP, но сам Asterisk умеет работать в режиме шлюза t.38/t.30. И если вам установили Asterisk и факсы у вас не ходят, совет слать такого интегратора куда дальше… В следующих статьях мы рассмотрим как научить работать Hylafax по протоколу T.38.

Коментарии: