Добро пожаловать,
Логин:

Пароль:


Запомнить

[ ]
Он-лайн
Гостей: 1
Пользователей: 0
На этой странице: 1
Пользователей: 1, Новичок: admin
Статистика
Эта страница сегодня ...
всего: 0
уникальных: 0

Эта страница когда-либо ...
всего: 12873
уникальных: 4458

Сайт ...
всего: 81090
уникальных: 18164
Линукс факс-сервер для сети на базе Windows
Введение

На одной из фирм, которую мы обслуживаем, есть система для отсылки и приема факсов, интегрированная в корпоративную e-mail платформу, Microsoft Exchange. В один прекрасный день, после обновления ПО, система сломалась. Нам потребовалось найти что-то с эквивалентной функциональностью, но удовлетворяющее следующим условиям:

- Минимальная стоимость, или лучше вообще бесплатно, особенно в том что касается лицензий на ПО.
- Прозрачная интеграция с программным обеспечением конечных пользователей (проще говоря Microsoft Office)
- Отсутствие необходимости установки какого-либо ПО на стороне клиента, даже бесплатных программ, для минимизации работы сетевых администраторов.

Эта статья рассказывает о том, как интеграция нескольких продуктов с открытым исходным кодом на платформе Линукс позволила удовлетворить все эти требования.


Обзор системы

Чтобы уточнить о каком именно компьютере я веду здесь речь, я буду называть ПК с установленным программным обеспечением для работы с факсами, TOSERFAX.

Предлагаемое решение использует программный пакет HylaFax. Это приложение контролирует установленные модемы, распределяет входящие факсы и отсылает исходящие.

Входящие факсы конвертируются в формат PDF и направляются при помощи почтового протокола SMTP соответствующим получателям. PDF был выбран в качестве формата, так как Acrobat Reader это стандартная программная платформа в данной сети. Место назначение выбирается исходя из определенных правил, что будет разъяснено позднее.

Если кто-то хочет послать fax, то он печатает документ на принтер, расположенный на TOSERFAX, который виден всем остальным компьютерам благодаря Samba. Задание на печать вызовет отсылку e-mail сообщения пользователю, который поставил его на печать. Это e-mail сообщение содержит URL веб-формы, создаваемой на лету веб-сервером Apache. Веб-форма позволяет пользователю заполнить детали, касающиеся данного факсимильного сообщения, в частности телефонный номер. Как только пользователь закончил с заполнением формы, и щелкнул на кнопку "Отправить", факс попадает в очередь исходящих.

Программное и аппаратное обеспечение

Конфигурация TOSERFAX следующая:
PC Dell Optiplex GX150, с процессором 1 Ghz Pentium III , с 256 MB RAM и 20 GB жестким диском. Модемы: 3Com US Robotics 56K Faxmodem.


Что касается программного обеспечения:

Базовая система -- это дистрибутив SuSE Linux 7.2, который включает в себя HylaFAX версии 4.1beta2, веб-сервер Apache версии 1.3.19 и SMTP-сервер sendmail версии 8.11.3.
Samba версии 2.2.3a.
Отправка факсов клиентами реализована при помощи пакета smbfax, версии 1.4.

Установка и настройка HylaFAX

Установка HylaFax проводилась в соответствии со стандартными процедурами, четко определенными в документации. Самая тонкая часть - настройка модемов. В HylaFax нет шаблона для модема US Robotics 56K Faxmodem. Тем не менее, поиск в списке рассылки дал необходимую информацию, в результате чего был создан файл /var/spool/fax/etc/config.ttyS0 ( и config.ttyS1 для второго модема). Первый из этих файлов можно найти здесь.

Прием факсов

У нашего предприятия есть несколько телефонных номеров, соединенных с факс-машинами. Функция перевода звонка может переключать звонки с одного внутреннего номера на другой. Эта возможность позволяет централизовать прием всех факсов на TOSERFAX, без изменения телефонных номеров, уже известных клиентам.

Например, предположим, что у отдела закупок есть номер факса 5550001, а у отдела логистики 5550002. Один из модемов TOSERFAX подсоединен к внутреннему номеру 1700. АТС переводит все входящие звонки на номера 5550001 и 5550002, на внутренний номер 1700, где TOSERFAX принимает факс.

Но конечно же, человек, который должен получать факсы предназначенные отделу закупок, и человек, который должен получать факсы адресованные отделу логистики, это не одно и тоже лицо. Необходимое нам распределение факсов требует знания номера, на который был изначально адресован факс, и который недоступен в стандартной версии faxrcvd. Обходной маневр в данной ситуации, это восстановить этот номер из лога сессии и присвоить его некоторой переменной, например TOPHONE.

TOPHONE=$($AWK '/SESSION BEGIN/ {print $NF; exit}' log/c${COMMID})


Стандартная версия faxrcvd посылает факс адресату, как postscript вложение в e-mail сообщение. На моем предприятии это не самое лучшее решение, так как на стандартном ПК клиента нет программы для просмотра postscript. Но зато есть программа для просмотра PDF, а файлы postscript могут быть преобразованы в PDF.

Однако, здесь мы сталкиваемся с небольшой проблемой, связанной с отсылкой e-mail сообщения, с присоединенным файлом. TOSERFAX использует в качестве SMTP-ретранслятора сервер Windows NT, с ISS версии 4. По какой-то причине, которую я так и не смог установить, этот сервер не может пересылать e-mail'ы c вложениями созданными faxrcvd.

Решением стало использование утилиты "metasend", включенной в пакет metamail 2.7.19. Скрипты metasend.sh и tiff2pdf.sh успешно отсылают факсы, предварительно преобразованные в PDF-формат, таким образом (и в таком виде), который устраивает SMTP-ретранслятор. Стоит также заметить, что эти скрипты вызывают утилиты tiff2ps и gs.

Отправка факсов

Есть несколько клиентов для отправки факсов, написанных специально для HylaFAX и работающих на многих платформах. Но, IT-администраторы в Torrelavega стараются по возможности избегать установки программного обеспечения на машины клиентов. Единственной операцией на клиентских машинах, должна быть настройка сетевого принтера, и она должна проводиться автоматически, по возможности самим пользователем.

Использование очереди печати имеет дополнительное преимущество, т.к. любое приложение способное послать документ на печать (а это практически любая программа), сможет отправить факс. С учетом этого, система отправки факсов, описанная в этой статье, явно превосходит другие коммерческие системы, установленные в Microsoft Exchange, которые позволяют отсылать только факсы созданные определенными приложениями, например созданные в Microsoft Office.

Пакет smbfax, разработанный Craig Kelly, выполняет указанное выше требование. В его основе лежит очень интересная идея: клиент печатает документ, который он хочет отправить по факсу в очередь принтера, сконфигурированную на TOSERFAX при помощи Samba, и которая представляется как postscript принтер. Печать вызывает исполнение perl скрипта, который вкладывает распечатанный документ в файл и отсылает клиенту e-mail с его URL. Этот URL указывает на веб-форму, создаваемую "на лету" в веб-сервере на TOSERFAX (Apache). Клиент нажимает на URL, вызывает браузер и, используя веб-форму, заполняет номер или номера, по которым должен быть отправлен факс. Выбирает нужно ли добавлять титульную страницу и другие детали. Наконец, после нажатия на кнопку "Отправить", факс ставится в очередь на отправку. Если в ходе обработки задания возникнет какая-либо ошибка, клиент также будет извещен поcредством электронной почты. Очевидно что такая система требует знания идентификатора пользователя, отсылающего факс (должен существовать механизм, позволяющий однозначно идентифицировать пользователя Windows), а также его e-mail адреса.

Инсталляция smbfax достаточно проста. Документация пакета ясно объясняет различные шаги и повторение их здесь будет излишне.

Настройка Samba, с другой стороны, требует применения некоторых интересных приемов. Подходящий файл конфигурации можно увидеть здесь. Следующие строки должны быть выделены:

[global]

workgroup = DOM

netbios name = TOSERFAX

security = DOMAIN

winbind uid = 10000-20000

winbind gid = 10000-20000

template homedir = /home/win/%D/%U

winbind separator = +

printer admin = @DOM+PRINTADMIN

...



[print$]

path = /etc/samba/printers/

browseable = yes

read only = yes

write list = @DOM+PRINTADMIN,root



# В этой секции настраивается очередь печати для факса

[fax]

comment = Fax queue

path = /tmp

printable = Yes

writable = no

create mode = 0700

guest ok = no

postscript = Yes

printing = lprng

print command = /usr/local/smbfax/smbfax -r queue %u %s

lpq command = /usr/local/smbfax/smbfax show

lprm command = /usr/local/smbfax/smbfax dequeue %j


Как Samba-сервер, TOSERFAX входит в домен Windows 2000 (Active Directory). Samba версии 2.2.3 включает поддержку "winbindd", который позволяет авторизовать клиентов, основываясь на мандате полученном после начала сессии в домене. Как следствие больше не нужно создавать Windows пользователей на Linux машине. Каждый клиент, который первый раз подсоединяется к samba-серверу, будет идентифицироваться комбинацией <Доменное имя>+<Имя пользователя>, и получит "uid" в диапазоне 10000 - 20000.

Внутри секции [fax] , строка

print command = /usr/local/smbfax/smbfax -r queue %u %s


вызывает программу smbfax, передавая ей в качестве параметра имя пользователя (%u), которое определяется как было описано ранее.

Внутри секции [global], строка

printer admin = @DOM+PRINTADMIN


дает административные права на принтер всем членам группы PRINTADMIN в NT домене DOM. Эти пользователи смогут настраивать принтеры, устанавливать драйвера (для разных версий Windows) и давать привилегии на печать пользователям домена при помощи стандартных административных утилит, имеющихся на NT или Windows 2000 машинах, и которые используют Удаленный Вызов Процедур (RPC). Все это полностью прозрачно для пользователя, несмотря на то, что сервер печати это на самом деле не Windows-сервер, а Linux.

Члены группы DOM+PRINTADMIN конечно должны иметь доступ на запись в /etc/samba/printers. Это достигается путем установки необходимых прав в файловой системе Linux:

$ chown -R DOM+PROWNER:DOM+PRINTADMIN /etc/samba/printers

$ chmod 0775 /etc/samba/printers




Установка драйверов -- это особенно интересная возможность. На TOSERFAX можно установить драйвера postscript принтера для всех версий Windows, которые используются на предприятии: 95, NT и 2000. После чего любой клиент, который подсоединяется к очереди печати в первый раз, сможет автоматически установить необходимые драйвера. Таким образом достигается одна из целей сетевых администраторов: не нужно производить дополнительную настройку на стороне клиента.

Дополнительно любой член группы PRINTADMIN, может запретить доступ к очереди печати, используя списки доступа NT (ACL).

Единственный вопрос оставшийся без ответа, это как отослать e-mail сообщение пользователю, который хочет отправить факс. Благодаря winbindd, пользователь прошел процедуру аутентификации, но какой у него e-mail адрес? Т.к. считать эту информацию из Active Directory не представляется возможным (возможно здесь помог бы OpenLDAP), то решением стало вручную добавить в файл "aliases" список всех возможных пользователей факса, вместе с их e-mail адресами

DOM+User1: email-1@domain.com

DOM+User2: email-2@other-domain.com


и так далее. После этого запустите "newaliases" и система готова.

Обслуживание системы

После того как все компоненты сконфигурированы, последнее что остается сделать, это автоматизировать некоторые простые сервисные процедуры. Этого очень легко достигнуть, добавив в /etc/crontab следующие строки:

0 21 * * * root test -x /usr/sbin/faxqclean && /usr/sbin/faxqclean




25 23 * * * root test -e /usr/sbin/faxcron && sh /usr/sbin/faxcron | mail faxmaster


Примите во внимание, что пакет HylaFax, поставляемый с Suse 7.2 устанавливает faxcron в /etc/cron.daily. Вам придется удалить его, чтобы предложенная схема заработала.

Заключение

Комбинация из HylaFax, Samba, smbfax и других open-source пакетов, на базе Linux системы, позволила интегрировать эффективный централизованный факс-сервис в окружение Windows сети, оправдав ожидания IT менеджеров, и, что особенно важно, исключив необходимость установки дополнительного программного обеспечения на стороне клиентов.

Время генерации: 0.0203 сек., 0.0053 из этого заняли запросы. Запросов БД: 19. Использовано памяти: 443,928Б