Документация по ОС FreeBSD Пятница, 26.04.2024, 23:43
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
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
Характеристики железа, на котором все это работает:
  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

Делаем веб морду


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
Просмотров: 1229 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024