Документация по ОС FreeBSD
Воскресенье, 15.02.2026, 01:26
Главная
Регистрация
Вход
Приветствую Вас
Гость
|
RSS
Меню сайта
Главная страница
Новости в мире Unix
NEW
Каталог файлов
NEW
Установка и настройка
Ports & Packages
cvs
Безопасность
Работа с железом
X Window
Multimedia
Man pages
Net
Apache
DNS
FTP
Mail
Samba
Squid
SSH
VPN
РРР
Shell
IPFW
Tips'n'tricks
RFC
Книги по FreeBSD
Темы экзамена BSDA
Гостевая книга
Форум на bsdportal.ru
Каталог сайтов
Самый свежий софт
Каталог ссылок
Категории каталога
Apache
[58]
DNS
[25]
FTP
[27]
Mail
[74]
Samba
[24]
Squid
[46]
SSH
[23]
VPN
[35]
РРР
[20]
Net
[173]
Главная
»
Статьи
»
Сеть
»
Mail
Создание факс-машины и факс-шлюза [2011]
Возможности создаваемой системы:
Отправка факсов с 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
ln -s /var/spool/hylafax/bin/ps2fax /var/spool/hylafax/bin/ps2fax.gs
ln -s /var/spool/hylafax/bin/pdf2fax /var/spool/hylafax/bin/pdf2fax.gs
Настроим веб сервер.
Т.к. сервер будет исполнять системные команды, я предпочел использовать 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]
# Настроим от чьего имени будет работать этот виратуальный хост
AssignUserId uucp uucp
# Тут настроим работу php
php_admin_value upload_tmp_dir /usr/local/www/avantfax/tmp
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» # Разрешим этому вируальному хосту испольнять код-пхп в определенных директориях.
php_admin_value session.save_path /usr/local/www/avantfax/tmp
php_admin_value memory_limit «64M»
php_flag max_execution_time 60
Делаем веб морду
0. Качаем архив с скриптами
http://downloads.sourceforge.net/project/avantfax/avantfax-3.2.2.tgz?use_mirror=ignum
1. Этот скрипт написан для разных систем, поэтому сперва изменим пути в нескольких скриптах, или создадим символические ссылки.
Я предпочитаю сменить пути в файлах:
avantfax/includes/faxrcvd.php, notify.php, remold.php, faxcover.php, phb.php
Создадим базу вебморды нашей факс машины
# mysql -uroot -p < create_user.sql
# mysql -uavantfax -ppassword avantfax < create_tables.sql
2. Приведем avantfax/includes/local_config.php в соответстви с нашей системой:
cp /usr/local/www/avantfax/avantfax/includes/local_config-example.php /usr/local/www/avantfax/avantfax/includes/local_config.php
Опишу необходимые настройки в local_config.php:
Ищем $BINARYDIR = ‘/usr/bin’;, меняем на $BINARYDIR = ‘/usr/local/bin’;
$dft_config_lang поставим ru вместо en
$HYLAFAX_PREFIX
3.
# sudo chmod -R 777 tmp faxes templates/admin_theme/templates_c и templates/main_theme/templates_c
4. Сделаем символическую ссылки на наши скрипты:
# ln -s /usr/local/www/avantfax/includes/faxrcvd.php /var/spool/hylafax/bin/faxrcvd.php
# ln -s /usr/local/www/avantfax/includes/dynconf.php /var/spool/hylafax/bin/dynconf.php
# ln -s /usr/local/www/avantfax/includes/notify.php /var/spool/hylafax/bin/notify.php
5. Отредактируем конфигурацию модема (первый модем в моей системе /dev/cuad0):
# vi /var/spool/hylafax/etc/config.cuad0
FaxrcvdCmd: bin/faxrcvd.php
DynamicConfig: bin/dynconf.php
UseJobTSI: true
6.
# vi /var/spool/hylafax/etc/config
NotifyCmd: bin/notify.php
7. Заменим стандарный faxcover на авантфаксовый:
# mv /usr/bin/faxcover /usr/bin/faxcover.old
# ln -s /usr/local/www/avantfax/avantfax/includes/faxcover.php /usr/local/bin/faxcover
8. Настроим управление очередью факса от имени нашего веб сервера (добавим аккаунт в фаил hosts.faxd uucp). Именно поэтому я использую апач c патчем itk, с ним легко можно ограничить действия виртуального хоста в системе. Это нужно для того, чтобы администратор системы был юзер hylafax, от имени которого работает вся наша система:
# /usr/sbin/faxadduser -a my_password apache
# /usr/sbin/faxdeluser localhost
# /usr/sbin/faxdeluser 127.0.0.1
# echo 127.0.0.1 >> /var/spool/hylafax/etc/hosts.hfaxd
Помните , что указанный пароль используется в файле local_config.php as $FAXRMPWD.
9. Добавим два скрипта от рута в крон (/etc/crontab). Один нужен для создания адресной книги, а второй удаляет все временные файлы, которые остают после заливки файлов юезрами в факс-машину через веб морду:
0 * * * * /var/www/avantfax/includes/phb.php
0 0 * * * /var/www/avantfax/includes/avantfaxcron.php -t 2
10. Настроим возможность выполнения некоторых команд в системе от имени root, но с правами юзера hylafax (/usr/local/etc/sudoers):
hylafax ALL = NOPASSWD: /sbin/reboot, /sbin/halt, /usr/local/sbin/faxdeluser, /usr/local/sbin/faxadduser -u * -p * *
11. Теперь можно перезапустить машину для проверки, что все само стартует в случае перегрузки и пробовать войти в вебинтерфейс avantfax:
http://fax.your-server.ru/admin/
Если все в порядке, то появится запрос на ввод логина/пароля.
ПО-умолчанию: admin/password. При первом входе будет предложено сменить пароль на что-то иное.
Первое что необходимо сделать это создать всех пользователей системы и все модемы, распределить их на группы в соответвии с желаемымой маршрутизацией.
Например:
device: cuad0
alias: dep1
contact: faxdep1@your-server.ru
Теперь каждый факс, пришедший на факс cuad0, будет отправлен в pdf на адрес faxdep1@your-server.ru.
Настроить как будет рассылать MTA эти письма, вы сами решайте. У нас пересылается на секретаря. Остальные модемы настраиваются аналогично.
На всякий случай, импортировать уже принятые факсы в вебморду можно следующим образом:
# cd /var/spool/hylafax; for i in `ls recvq/*`; do bin/faxrcvd.php $i ttyS0; done
Для импорта отправленных:
# cd /var/spool/hylafax; for i in `ls doneq/q*`; do bin/notify.php $i done :30; done
Настройка самба
для расшаривания папки с принятыми факсами:
[Fax_Rec]
comment = Incoming Faxes
browseable = yes
writable = yes
path = /var/spool/hylafax/recvq
public = yes
Зная умения пользователей, подстрахуемся сетевой корзиной:
vfs objects = recycle full_audit
recycle:repository = /usr/home/data/fax/.killed
recycle:keeptree = yes
recycle:versions = yes
Автоматическое распечатывание cups принятых факсов.
Установим и настроим cups.
Я поставил вот такие пакеты: 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 своместимый. Можно указать явно размер бумаги, это необходимо для некоторых типов принтеров:
# /usr/bin/tiff2ps -1 -h 11.1082 -w 7.8543 $1 | /usr/bin/lpr
Мы используем для получения аванфаксовый файл faxrcvd.php поэтому в конфиге надо выставить
$PRINTFAXRCVD = true;
$PRINTFAX2PS = ‘/usr//local/bin/fax2ps’;
Рассмотрим работу с несколькими модемами и принтерами.
Тут все очень просто. Т.к. наша система плотно связана с avantfax, то и настройки мы должны проводить в неё.Идем в админку http://fax.your-server.ru/admin/. Тут Заходим в пункт «параметры модемов» и заполняем: название модем, на какой принтер печатать, какой номер. Собственно после этого у вас должно заработать как надо.
Что делать тем, кто не хочет установить avantfax?
Вполне законное желание, во многих компания к этому уже пришли. Пропустите все изменения, которые связаны с avantfax.
Далее вам необходимо поместить примерно такой код в FaxDispatch:
case «$DEVICE» in cuad0)
SENDTO=name@your-server.ru
PRINTER=lj2015
;;
esac
Отправка факсов с рабочих мест:
Скачаем вот это
http://prdownloads.sourceforge.net/winprinthylafax/WinprintHylaFAX-1.2.9.exe?download
, и несколько автоматизируем процесс настройки клиентов таким reg-файлом:
reg add «HKLM\SYSTEM\ControlSet001\Control\Print\Monitors\Winprint Hylafax\Ports\HFAX1:» /v Username /t reg_sz /d %username% /f
reg add «HKLM\SYSTEM\ControlSet001\Control\Print\Monitors\Winprint Hylafax\Ports\HFAX1:» /v Password /t reg_sz /d PassWord /f
reg add «HKLM\SYSTEM\ControlSet001\Control\Print\Monitors\Winprint Hylafax\Ports\HFAX1:» /v DefaultEmail /t reg_sz /d %username%@your-server.ru /f
reg add «HKLM\SYSTEM\ControlSet001\Control\Print\Monitors\Winprint Hylafax\Ports\HFAX1:» /v AddressBookPath /t reg_sz /d %userprofile% /f
Этот кусок реестра форточек позволяет настроить параметры winprint, для настройки уведомлений и авторизированного доступа к системе. Теперь пользователь может отправить факс простым распечатыванием на специальный факсовый принтер. Впрочем, можно обойти все машины и настроить факсовый притер вручную.
Работа с почтовым сервером
Мозга до sendmail мне никогда не хватало, поэтому в /etc/mail/mailer.conf:
sendmail /usr/local/sbin/exim
send-mail /usr/local/sbin/exim
mailq /usr/local/sbin/exim -bp
newaliases /usr/local/sbin/exim -bi
hoststat /usr/local/sbin/exim
purgestat /usr/local/sbin/exim
Транспорт
faxmail:
driver = accept
condition = ${if eq{$local_part}{fax}{yes}{no}}
transport = faxmail
no_more
faxmail:
driver = pipe
command =»/usr/local/bin/faxmail -n -t done -d $h_subject $sender_address»
Теперь при посылке почты на 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.
Настроим iax.conf для астериска:
[general]
bindport=4569
bindaddr=127.0.0.1
bandwidth=low
disallow=lpc10
jitterbuffer=no
forcejitterbuffer=no
autokill=yes
[iaxmodem0]
type=friend
username=iaxmodem0
context=office
secret=parolka
host=127.0.0.1
port=4570
qualify=yes
disallow=all
allow=ulaw
trunk=no
Ну и sip.conf:
exten => 203,1,Set(LANGUAGE()=ru)
exten => 203,n,Dial(IAX2/iaxmodem0/${EXTEN},10,r)
Несколько советов по управлению факс-машиной:
Очистка факс машины:
# cd /var/spool/hylafax/
# rm archive/* docq/* log/* recvq/* sendq/* tmp/*
Источник:
http://subnets.ru/blog/?p=1392
Категория:
Mail
| Добавил:
oleg
(09.02.2011) | Автор:
makky
Просмотров:
1314
| Рейтинг:
0.0
/
0
|
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев:
0
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация
|
Вход
]
Форма входа
Друзья сайта
Google+
Copyright MyCorp © 2026