Hylafax
Содержание
- 1 Сервер обработки факсимильных сообщений HylaFax
- 1.1 замечания автора
- 1.2 Разработчики и лицензия
- 1.3 О факсах и факс-модемах
- 1.4 Системные Требования HylaFAX
- 1.5 Форматы принимаемых fax-файлов
- 1.6 Установка
- 1.7 Основные программы пакета HylaFax
- 1.8 Файлы конфигурации HylaFax
- 1.9 Что стоит поправить сразу
- 1.10 Запуск демонов :)
- 1.11 Где искать Логи и Интеграция с Базой данных
- 1.12 Докуменация
Сервер обработки факсимильных сообщений HylaFax
замечания автора
Это описание появляется в результате необходимости установки - а значит копаться разбираться - что то переводить...
ну а что бы труды не совсем пропали даром - поделиться опытом ... этакое пособие hylafax по русски....
если вам статья поможет киньте сколько не жалко на кошелек 41001101259634 яндекс.денег :)))
что б понимать насколько не зря я трудился :))
На момент написания этой статьи (03 декабря 2008 г.) автору известны две ветки разработки настоящей программы
Разработчики и лицензия
Изначально HylaFax разработана Силикон Графикс SGI.
лицензия BSD-стиля.
Hylafax на www.hylafax.org
Исторически основная версия HylaFax.
Бинарные пакеты на ее основе присутствуют почти во всех дистрибутивах linux.
HylaFax+ на hylafax.sourceforge.net
HylaFax+ появилась в результате недовольства части разработчиков по поводу выхода обновлений и политики включения этих обновлений в основную версию.
основное отличие в наличии голосовых функций
Более полный список отличий на английском можно почитать http://hylafax.sourceforge.net/docs/hylafax-differences.php
AvantFax - www.avantfax.com
Web интерфейс для HylaFax
Так как обновления HylaFax+ и правда более поздние, и мне были нужны голосовые функции - я пользовался последней. Далее буду писать именно о HylaFax+.
О факсах и факс-модемах
Протоколы передачи факсов
Классы факс-модемов и наборы AT-команд
Подобно модемам, поддерживающими набор AT-команд управления, факс-модемы также используют специальные AT-команды. В настоящее время существуют два различных стандарта на такие команды. Они называются командами класса 1 и класса 2. Факс-модем может поддерживать один или оба класса команд управления.
Чтобы определить без документации, является ли модем факс-модемом, а также узнать, какие классы команд управления он поддерживает, надо ввести команду
AT+FCLASS=?
в ответ как правило модем нам отвечает 1, 2.0 - поддерживаемые классы
В стандарте управления модемом класса 2 протоколы сеанса связи поддерживаются аппаратно - в стандате модемов класса 1 аппаратно поддерживаются только протоколы модуляции и коррекции ошибок - протоколы сеансов же должны быть реализованы программно. Когда то, когда процессоры были помедленнее, использование команд класса 2 считалось преимуществом. Однако сегодня - любая программа работы с факс-модемами без проблем реализует все необходимые протоколы. Нагрузка на процессор при этом настолько незначительна - что преимуществом модем класса 2 назвать трудно. Если же вспомнить, что в случае обнаружения ошибок (что не раз случалось) программную часть обновить гораздо проще, то приходишь к выводу, что правильнее выбрать набор команд класса 1.
Стоит добавить что с появлением SuperG3 протокола появились версии наборов команд 1.0 и 2.1 соответственно
тут можно почитать подробнее о протоколах работы факс-модемов
Звук в модемах
Если функции передачи факса присутствуют практически во всех модемах, то возможность воспроизводить в телефонную линию какой то записанный голос из файла и соответственно записать из телефонной линии звук в файл присутствует далеко не во всех модемах. модемы которые это могут называются голосовыми или так называемые voice модемы. Голосовые модемы оцифровывают и сжимают голосовой поток определенным алгоритмом (кодеком). Сделать это модем может находясь в специальном голосовом режиме. Управление модемом в этом режиме осуществляется набором голосовых AT-команд (как правило называется режим команд класса 8).
Спрашивается зачем оно нам надо ? Ну например для того что б проговорить в линию "Примите пожалуйста факс" если на той стороне факс не автомат. Или предложить набрать добавочный номер по завершении передачи факса. Тут ... уж как говориться кому что понадобится...
Выбор факс-модемов
модемы разных производителей и разных моделей имеют немало разных мелких ньюансов, но эти "мелочи" при работе нередко становятся причиной хорошей головной боли
тут,например, можно почитать(англ) что пишут разработчики HylaFax+ об особенностях модемов
здесь можно почитать по русски об особенностях модемов в использовании другой факс программы VentaFax
а тут можно почитать на русском об особенностях выбора модемов при желании работать с голосовыми функциями сайт программы автопрозвонка
О стабильности Факс-модемов
К сожалению, факс-модемы как внешние так и внутренние случается что зависают. Если нагрузка на них небольшая то это может пройти незаметно однако если факсимильная связь используется интенсивно - к сожалению это становиться насущной проблемой
- первое, что уменьшает статистику зависаний - это уменьшение скорости com порта
так например мой старенький USRcourier, как мне казалось, всегда стабильно пахал на 115200 - с факсами стал зависать не реже раза в день особенно в режимах переключения факс-голос. Уменьшение скорости до 38400 - решило проблему. Если вы не используете модем с V.34FAX(SuperG3) то скорости порта 38400 более чем достаточно.(Тут стоит заметить что это очень редкие модемы, купить которые в России на момент написания статьи - оказалось уж как то очень сложно). Как правило эта мера действенна для внешних модемов.
- второе это выставление таймера S19
если регистр модема S19 выставлен в 0 то модем не обрывает соединение при отсутствии передачи данных. Если модем работает в режиме передачи данных - то ситуация когда модем висит на линии а данных нет вполне нормальна. При работе с факсами это как раз таки верный признак того что что то не так. Выставление S19 например в 3 - приводит к тому что через 3 минуты бездействия модем производит сброс. Конечно это не решает проблем на 100 процентов, но процентов 90 головной боли отходит на второй план.
- ну и наконец последнее средство - встроенное в hylafax уведомление о необходимости вмешательства - Hylafax_wedged.
данным скриптом можно даже перегрузить сервер - и если модемы внутренние - это может быть решением проблемы - если конечно сервер можно перегружать.
Системные Требования HylaFAX
Оригинал системных требований на английском можно почитать тут
* libtiff - можно получить тут: http://www.remotesensing.org/libtiff/ LZW сжатие не требуется. Для BSD требуется версия 3.5.6. не использовать не пропатченную версию 3.6.1. * Ghostscript - можно получить тут: http://www.cs.wisc.edu/~ghost/ * zlib - обычно присутствует вместе с libtiff или Ghostscript * awk, gawk, mawk или nawk - mawk можно скачать тут: ftp://ftp.whidbey.net/pub/brennan/ Многие дистрибутивы уже содержать эти программы. * sendmail или совместимый SMTP - можно получить тут: http://www.sendmail.org/ Многие дистрибутивы содержат и его. * metamail, uuencode, или base64-encode По требованию - для использования fax-email шлюза. * PAM libraries по требованию - для использования в hfaxd аутентификации через PAM. * JBIG-KIT - get it at http://www.cl.cam.ac.uk/~mgk25/jbigkit/ По требованию: используется для JBIG-сжатия факсов при отправке.
Конечно совсем не обязательно следовать ссылкам получать исходники компилировать их.
Правльнее и быстрее в соответствии с вашим дистрибутивом получить бинарный rpm и или deb пакет через rpm или apt-get.
Форматы принимаемых fax-файлов
По умолчанию hylafax сохраняет принимаемые факсы в tiff формате. Кроме того в системе сразу присутствуют такие преобразователи как tiff2pdf и tiff2ps. Как пишут разработчики это оптимальные, форматы для черно-белых точечных форматов и использование PNG, GIF или JPEG бессмысленно для fax данных за исключением новых цветных-факс форматов - которые распространены крайне мало по сравнению с черно белыми факсами.
Первое время я оставил все как есть и выставлял принимаемые tif через самбу. После живого общения с факсами это был безусловный шаг к комфорту сотрудников и всем нравилось... критические замечания появились позднее. Дело в том, что в такой tif или не содержит информацию о плотности линий или далеко не все программы умеют ее правильно извлекать - но факс tif открываемый например в windows программой программой просмотра факсов - бывает сжимается по вертикали. Происходит это не редко, хотя и не всегда. Пришлось поставить автоматическое конвертирование в pdf - с которым подобных казусов не наблюдалось.
Следующим шагом стало подключение разного рода сервисов - типа комму пришедший факс можно смотреть а кому нельзя - что решили реализовывать через web интерфейс - php. Тут открылись новые ньюансы. Дело в том что броузеры сами эти форматы не видят - то есть они их открывают сторонними приложениями: tif программой просмотра факсов - с теми же глюками со сжатием, pdf - acrobat reader-ом. а что бы встроить в страничку типа галереи рисунков - им подавай jpeg, gif,png.
Встал вопрос о преобразовании tif,pdf -> jpeg,gif,png. Искал естественно с оглядкой на php. :
- первое, что вылезло, графическая библиотека php - gd (или gd2). В ее теории написано что может преобразовывать форматы. однако живых примеров для tif,pdf -> jpeg,gif,png я не нашел. не нашел и подтверждения поддержки tiff,pdf в ней.
- второе - библиотека tiff2png. имеющиеся на сайте бинарники скомпилированы только для i386, а из исходников у меня что то не пошло - править настройки мне было лень - при наличии других вариантов :) но думаю что это путь нормальный - кому интересно.
- третье ImageMagick - и интерфейс для php - Imagick - тут оказалось все просто - в репозитарии ubuntu были оба пакета - и получив их по apt-get instal - все заработало.
- четвертый вариант - утверждения на форуме hylafax - что с помощью tiff2ps - можно получить PNG. По всей видимости тут имеется ввиду использование gs из пакета ghostscript. По меньшей мере, в примере, pngпревьюшки на e-mail получаются именно так.
Установка
Перед установкой естественно покопался в поисковиках на предмет чего-то похожего. на Русском языке вылезло не так что бы много ссылок.
Приведу те которые привлекли мое внимание:
- Линукс факс-сервер для сети на базе Windows перевод Александра Михайлова статьи Pedro Fraile - N 79 of Linux Gazette в июне 2002 года. (SuSE Linux 7.2)
- Настройка HylaFax+ c с голосом при отправке статья Беленькова Николая от 23 мая 2008 года. (ubuntu-i386-7.10)
- Еще одна статья по установке и настройке Автор: Trend 15 мая 2003 года (Red Hat 7.2)
- Установка HylaFax на freeBSD Автор: lissyara 01 Сентября 2006 года
- Небольшая статейка о соместной установке Автор: Медарго 17 Июня 2007 года (Ubuntu7.04+HylaFax+Lamp+Postfix+AvatnFax)
В целом установка из исходников достаточно проста
- распаковываем исходники
- правим в configure пути - например меня не устраивал spool по умолчанию /var/spool/hylafax
(отвечаю на вопрос любопытных почему не устраивал :)) - spool - это то куда ложатся все данные: входящие факсы, очередь исходящих, логи и т.п. - и я посчитал правильным поместить его на raid - а он у меня был примонтирован в другое место)
- #./configure
- # make
- # make install
Далее запускаем faxsetup.
В конце своей работы faxsetup через faxaddmodem будет добавлять модемы столько раз сколько вам надо. Соображения по поводу того выбирать класс 1 или 2.0 я уже писал выше.
Если модемов больше 4 - или точнее в системе больше 4х com-портов - то в параметрах загрузки ядру надо об этом сказать через lilo или через grub "8250.nr_uarts=5" (или сколько вам надо этих com-потротв).
Основные программы пакета HylaFax
- faxgetty - прием факсов
- sendfax - постановка факсов в очередь отправки
- faxrm - удаление задания из очереди отправки
- faxsend - изменение параметров задания стоящего в очереди отправки
- pagesend
- faxstat - статистика состояния модемов очереди отправки и результаты работы.
- faxclean - очистка очереди отправки
- faxcron
- hfaxd - протокол клиент-сервер
- faxq - менеджер очереди процессов
- faxstate - контроль состояния модемов
- faxconfig - dynamically change HylaFAX configuration parameters
Файлы конфигурации HylaFax
$spool/etc/ :
config
config.ttyS0 ...ttyS...
dialrules
/usr/local/lib/fax/hfaxd.conf
/usr/local/lib/fax/hyla.conf
/usr/local/lib/fax/sendfax.conf
~/.hylarc
Что стоит поправить сразу
Первое, что сильно не устраивало, это то, что при отправке факса формируется дополнительно титульная страница. Факс документы сегодня это как правило короткие сообщения на 1-2-3 странички которые надо посмотреть быстро - все остальное как правило отправляется по E-mail. И формирование такой станицы ... кажется несколько устаревшим :)) по какой причине оно оставлено по умолчанию ... не совсем понятно.. ну да бог с ним .. главное что отключть можно :))
читаем ман sendfax и и находим там:
sendfax reads configuration information from the files /usr/local/lib/fax/hfaxd.conf, /usr/local/lib/fax/hyla.conf, /usr/local/lib/fax/sendfax.conf, and ~/.hylarc; in that order, with later-read settings superseding any that may have been previously read. Configuration files follow the conventions described in hylafax-client(1).
Tag Type Default Description
AutoCoverPage boolean Yes automatically generate cover page
соответственно в нужном вам файле пишем :
AutoCoverPage: No
Запуск демонов :)
Запуск hfaxd, faxq, and faxgetty сервисов.
Процедура запуска очень сильно зависит от операционной системы, дистрибутива и пакета инициализации.
Для BSD-init (non-SysV-init) систем, возможно понадобиться отредактировать etc/setup.cache
и изменить следующие строки:
FAXQ_SERVER='yes' HFAXD_SERVER='yes' SYSVINIT='/usr/local/sbin/hylafax'
Отредактируйте /etc/rc.d/rc.local и добавте следующие строки:
# запуск HylaFAX hfaxd и faxq сервисов при загрузке. /usr/local/sbin/hylafax start
На большинстве систем SysV-init необходимо отредактировать файл /etc/inittab
и добавить следующую строку(строки при нескольких модемах):
m0:2345:respawn:/usr/local/sbin/faxgetty ttyS0
Где m0 это уникальное значение в inittab, а ttyS0 соответствует названию устройства(устройств) используемых в скрипте faxaddmodem. Чтобы init перечитал /etc/inittab необходимо набрать 'init q'.
Если используется /etc/inittab, то при использовании опции "respawn", faxgetty перезапускается после закрытия.
faxgetty может запускаться также из /etc/rc.d/rc.local:
/usr/local/sbin/faxgetty -D ttyS0
В системах использующих upstart, поведение с перезапуском аналогичное /etc/inittab - respawn может быть достигнуто созданием файла /etc/event.d/ttyS0 следующего содержания:
start on runlevel 2 start on runlevel 3 start on runlevel 4 start on runlevel 5 stop on runlevel 0 stop on runlevel 1 stop on runlevel 6 respawn exec /usr/local/sbin/faxgetty ttyS0
затем пишем /sbin/start ttyS0 что бы запустить faxgetty.
Где искать Логи и Интеграция с Базой данных
$spool/log/ - каждый файл соответствует отдельной сессии связи
В текстовом файле seqf храниться число номера следующей сессии. Это число используется в имени файла логов. Поэтому при очистке файлов из этого каталога можно поправить и число в 1.
$spool/etc/xferfaxlog - сводный лог-файл событий Hylafax.
Тут нельзя не отметить про механизм запуска исполняемого файла $spool/hylafax/etc/FaxAccounting при каждом добавлении записи в xferfaxlog, с помощью которого можно отправить лог например в базу данных .
Докуменация
Полный список манов на английском по Hylafax+ можно найти тут
man hylafax.config (англ.) -- (частичный русский перевод)
man jobcontrol (англ.) -- (частичный русский перевод)