ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

Возможности создаваемой системы:

  • Отправка факсов с 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

    Характеристики железа, на котором все это работает:

    1. pentium3-1Ghz/512Mb/40Gb hdd
    2. 4 модема courier
    3. МУльтикарта 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/*

    З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

    Автор: makky

    Похожие статьи:

      Не найдено

    Прочитано: 14 604 раз(а)
    Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 4, среднее: 3,75 из 5)
    Загрузка...
    Отправить на почту Отправить на почту

    комментария 2

    1. ASD сказал:

      Здравствуйте. Делал по вашей статье + http://www.avantfax.com/install.php — не получилось….вернее не понятно получилось или нет. Получаю пустую страницу при при доступе к серверу. Ошибок нет. Все в шоколаде:

      10.96.7.5 — — [01/Jul/2011:13:17:59 +0600] «GET / HTTP/1.1» 200 —

      в чем может быть проблема?

    Добавить комментарий

    Вам следует авторизоваться для размещения комментария.