Отправка факсов с windows машин в локальных доверенных сетях
Отправка факсов с почты
Отправка факсов с web-интерфейса
Уведомление о состоянии отправленных факсов по почте/сообщения по сети индивидуальному/групповому пользователю
Прием факсов и распечатка на принтере
Доступность списка полученных факсов через сетевую директорию (в нашем случае samba)
Доступность с писка полученных факсов через web-интерфейс
Здесь сильно нехвататет:
dialup доступ к системе на случай аварии
Использования голосовых функций модема при отправке и приеме, т.к. у меня просто нет такого модема
Установлена Freebsd 7.3-stable, hylafax-6.0.4_1.
Для работы с почтой:
Любой MTA (я буду использовать exim)
Для работы в виндовой сетке
samba
cups/lpr
/usr/ports/print/hplip – драйвера для моего HP принтера
Для работы через веб интерфейс:
apache22-itk
php5
mysql
phpmyadmin
cd /usr/ports/databases/pear-MDB2_Driver_mysql
pear-1.9.0
PHP PEAR 5 including MDB2_driver_mysql, Mail and Mail_Mime
PECL FileInfo
PHP mbstring – for improved UTF-8 sorting support (optional)
PHP MySQL 5
MySQL server 4.1.12 or better (see Important Notes below)
ImageMagick
ghostscript
libtiff
netpbm-devel
libungif
sudo
Характеристики железа, на котором все это работает:
pentium3-1Ghz/512Mb/40Gb hdd
4 модема courier
МУльтикарта mosChip nm9835
У меня установлена мультикарта для работы 2 модемов и можно подгрузить puc модуль, но модемы у меня упорно не виделись, так что тем, кто использует мультикарты, надо собрать ядро с device puc.
Все поставлено, можно начинать настройку.
Настройка hylafax
Команды:
faxsetup – сделает общие настройки факс- сервера.
faxaddmodem – позволит добавить модем
Файлы (все конфиги находятся в /var/spool/hylafax/etc):
FaxDispatch
FILETYPE=tif;
SENDTO=mail@your-server.ru;
FaxNotify
NOTIFY_FAXMASTER=yes;
RETURNFILETYPE=tif
В файл конфига модема:
FaxrcvdCmd: «bin/faxrcvd.php»
DynamicConfig: «bin/dynconf.php»
NotifyCmd: «bin/notify.php «
В файл /etc/ttys
cuad0 «/usr/local/sbin/faxgetty» unknown on insecure
Т.к. сервер будет исполнять системные команды, я предпочел использовать apache22 с патчем itk. Это позволит мне ограничить работу виртуального хоста в системе действиями от непривелигированного пользователя uucp, например. Для активации патча необходимо сделать:
# sudo make WITH_MPM=itk -C /usr/ports/www/apache22/
Этот рецепт можно также использовать на собственном виртуальном хостинге, но следует учитывать, что apache22-itk работает примерно в 5 раз медленнее простого апача, так что может это кому-то пойдет только во вред. Мне нет, у меня нет больших нагрузок и я решил попробовать что-то необычное
ServerAdmin it@your-server.ru
DocumentRoot «/usr/local/www/avantfax»
ServerName fax.your-server.ru
ErrorLog «/var/log/fax-error_log»
CustomLog «/var/log/fax-access_log» common
# Включилась паранойя, и я изменил все запросы с http на https
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
# Настроим от чьего имени будет работать этот виратуальный хост
php_admin_flag safe_mode off # Обязательно, иначе не будет работать avantfax, указываю не в глобальной конфигурации, чтобы остальные вируальные хосты работали в сейвмоде
php_admin_flag display_errors on # Посмотрим будут ли ошибки, потом можно отключить
php_admin_value doc_root /usr/local/www/avantfax
php_admin_value user_dir «www»
php_admin_value open_basedir «/usr/local/www/avantfax:/usr/local/share/pear:/var/spool/hylafax:/usr/local/bin» # Разрешим этому вируальному хосту испольнять код-пхп в определенных директориях.
8. Настроим управление очередью факса от имени нашего веб сервера (добавим аккаунт в фаил hosts.faxd uucp). Именно поэтому я использую апач c патчем itk, с ним легко можно ограничить действия виртуального хоста в системе. Это нужно для того, чтобы администратор системы был юзер hylafax, от имени которого работает вся наша система:
Помните , что указанный пароль используется в файле local_config.php as $FAXRMPWD.
9. Добавим два скрипта от рута в крон (/etc/crontab). Один нужен для создания адресной книги, а второй удаляет все временные файлы, которые остают после заливки файлов юезрами в факс-машину через веб морду:
Я поставил вот такие пакеты: cups-base-1.4.2_4, cups-client-1.4.2_4, cups-image-1.4.2_4, cups-pstoraster-8.15.4_5, cups-samba-6.0_3, cups-smb-backend-1.0_3.
Последние 2 нужны были для публикации притеров посредством самбы. Некоторые из отправляющих факсы с клиента программ работают через самба-принтер. Так что возможно многим оно и не понадобится. Далее установим hplip-2.8.2_7 – это драйвера для принтеров HP.
Установка закончена, теперь настраиваем:
В файле /usr/local/etc/cups/cupsd.conf делаем следующие изменения:
Listen 127.0.0.1:631
Listen :631
Остальное я не правил, меня устроил дефолтный конфиг. Теперь добавим принтер:
1. http://local_address:631/
2. Нажимаем на Printers.
3. Add Printer. Вводим имя root и его пароль.
4. Name: имя вашего принтера (название может быть любое). Все остальное не заполняем. Continue.
6. Не забудьте сделать печать тестовой страницы. Если увидели картинку, то все в порядке.
7. Далее я долго мучался, почему мой принтер не печататет и нашел ответ. Надо сделать симлинки от старого lpr:
# cd /usr/bin
# mv lp lp.bak
# mv lpq lpq.bak
# mv lpr lpr.bak
# mv lprm lprm.bak
# ln -s /usr/local/bin/lp /usr/bin/lp
# ln -s /usr/local/bin/lpq /usr/bin/lpq
# ln -s /usr/local/bin/lpr /usr/bin/lpr
# ln -s /usr/local/bin/lprm /usr/bin/lprm
У меня возникла проблема с принтером принтером HP 2055dn, его драйверов не было, поэтому я воспользовался драйвером входящим в состав порта hplip-2.8.2_7 и положил его в /usr/local/etc/cups/ppd/HP_2055.ppd. Больше проблем не было,я и не настраивал больше ничего тут. Таким образом идем далее..
Для автоматического распечатывания пришедших факсов используйте код в файле
# /usr/local/bin/tiff2ps -1 $1 | /usr/bin/lpr
Ваш принтер должен быть PostScript своместимый. Можно указать явно размер бумаги, это необходимо для некоторых типов принтеров:
Мы используем для получения аванфаксовый файл faxrcvd.php поэтому в конфиге надо выставить
$PRINTFAXRCVD = true;
$PRINTFAX2PS = ‘/usr//local/bin/fax2ps’;
Рассмотрим работу с несколькими модемами и принтерами.
Тут все очень просто. Т.к. наша система плотно связана с avantfax, то и настройки мы должны проводить в неё.Идем в админку http://fax.your-server.ru/admin/. Тут Заходим в пункт «параметры модемов» и заполняем: название модем, на какой принтер печатать, какой номер. Собственно после этого у вас должно заработать как надо.
Что делать тем, кто не хочет установить avantfax?
Вполне законное желание, во многих компания к этому уже пришли. Пропустите все изменения, которые связаны с avantfax.
Далее вам необходимо поместить примерно такой код в FaxDispatch:
Этот кусок реестра форточек позволяет настроить параметры winprint, для настройки уведомлений и авторизированного доступа к системе. Теперь пользователь может отправить факс простым распечатыванием на специальный факсовый принтер. Впрочем, можно обойти все машины и настроить факсовый притер вручную.
Работа с почтовым сервером
Мозга до sendmail мне никогда не хватало, поэтому в /etc/mail/mailer.conf:
Теперь при посылке почты на fax@your-server.ru ексим выполнит отправку факса. Соответвенно, если у вас почтовый сервер и сервер с факсами разные, то на основном сервере надо настроить пересылку почты на смтп нашей факсмашины.
Дальше больше и интереснее.
Теперь рассмотрим работу hylafax с asterisk и iaxmodem. Как настраивать астреиск, тема другой статьи, поэтому я предполагаю, что он уже настроен у вас.
Итак, устанавливаем /usr/ports/net/iaxmodem. Создаем конфиг программного модема /usr/local/etc/iaxmodem/ttyIAX0:
mode 660
port 4570
refresh 300
server 127.0.0.1
peername iaxmodem0
secret parolka
cidname subnets.ru
cidnumber 203
codec alaw
В /etc/rc.conf для автостарта:
iaxmodem_enable=»YES»
Командой faxaddmodex ttyIAX0 добавим новый модем и настроим его. В итоге получим конфиг модема IAX0 для hylafax.