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