Отже, моя серверна операційна система - Red Hat 7.2.
Установка самого по собі hylafax, нічого складного не представляє, звернути увагу треба лише на те щоб його версія була останньою (оскільки в недавній була виявлена можливість DoS атаки).
Для самого hylafax необхідні наступні речі, які треба поставити перед цим або просто переконатися в їх наявності в системі:
Модем вже повинен бути коректно проинсталлировать в системі. Коректність його роботи можна перевірити за допомогою wvdial або minicom.
Отже, до цього моменту, faxq (основний сервер) і hfaxd (управляє мережевими з'єднаннями), повинні висіти в системі і відображатися по ps -e. Якщо це не так, то виконайте /etc/rc.d/init.d/hylafax start (до речі, якщо ви потім подивіться його склад, усвідомите кілька команд, які можуть потім допомогти в подальшій роботі).
Переходимо до власне налаштування модему і сервера.
Виконаємо faxsetup. На цьому етапі, думаю, ні у кого не виникне питань. Далі faxaddmodem, знайшов і відтестувати мій модем.
Тепер стандартно пропонується додати в / etc / inittab рядок виду mo: 2345: respawn: / usr / sbin / faxgetty tty *, для того щоб faxgetty слухав вказаний порт.
Розробники hylafax заявляють, <что, мол, хорошо бы, чтобы этот сервис висел все время, в независимости от того, хотите ли вы принимать входящие факсы. Они говорят, что достаточно просто поставить RingsBeforeAnswer: 0, чтобы faxgetty не отвечал на входящие звонки. А этот сервис, мол, очень хорошая вещь, тестирует модем все время, проверяет, не появилось ли новых модемов, и говорит обо всем этом основному модулю программы>. Оскільки я і не хотів використовувати модем для отримання факсимільних повідомлень, так як він знаходиться на лінії від офісної АТС, і немає можливості надати йому окремий канал, та й є вже в офісі факс з прямим каналом, то я так і зробив у файлі config.tty * (RingsBeforeAnswer: 0).
Якщо у вас при працюючим faxgetty з'явиться помилка виду
До цього моменту у нас вже повинен був з'явитися файл виду /var/spool/hylafax/config.tty* (наприклад, config.ttyS1, якщо модем прив'язаний до COM2).
У ньому можуть знадобитися деякі зміни. Наприклад, я для свого модему (USR Sportster 33.6 INT), до стандартної конфігурації додав:
Що стосується ModemWaitTimeCmd, то це знову ж специфіка мого офісу, внутрішній набір йде тоном, а АТС передає його на зовнішню лінію вже пульсом, таким чином, модем вже чекає відповіді, а номер все ще набирається. Там же можна поколупатися наприклад з LocalIdentifier, це рядок яка (в залежності від настройки TagLineFormat) буде з'являтися в заголовку кожного відправленого факсу (за замовчуванням якраз з'являється, так що не варто там залишати щось типу;)).
Так само я переналаштував під себе файл, на який вказує параметр DialStringRules.
Оформив я його наступним чином: Як можна бачити (в порівнянні з etc / dialrules.europe), я прибрав всілякі заміни з підстановкою кодів, мені це просто не потрібно, кожен в офісі нехай набирає то, що йому потрібно, з кодом межгорода або без і т.д. Вставив тільки обрізання дужок (у змінній WS), і заміну +/- на символ паузи. Тобто, наприклад, введений номер 8-095-1231231, буде переданий модему як 8,095,1231231 (тобто набиратися буде з паузами), що, в принципі, і потрібно на деяких лініях.
Отже, будемо вважати, що модем налаштований, правила дозвону налаштовані.
Мені так само ще потрібні були такі настройки:
В директорії / etc / hylafax знаходяться файли hyla.conf і hfaxd.conf. Файл hyla.conf я не міняв, хоча може комусь, знадобитися там що-небудь змінити (зокрема там є параметр KillTime). А ось hfaxd.conf я поміняв.
Далі, знову ж через не дуже високої якості, невеликої кількості і постійної зайнятості вихідних офісних ліній, мені довелося ще трохи попрацювати напилком;)
Покопавшись по манам, я зробив в директорії / etc / hylafax файл з назвою sendfax.conf, в якому прописав наступні рядки:
Перший параметр забороняє титульну сторінку (критично до регістру, так що саме No, а не no). Другий параметр відноситься якраз до поганих лініях зв'язку, тобто за дефолтовая 12 разів, можна просто не потрапити на вільну лінію;) Ну і останній параметр, як описується в man sendfax, це кількість спроб успішного, але обірваного з'єднання, в той час як MaxDials це взагалі максимальну кількість дзвінків, в незалежності від того було з'єднання чи ні.
До речі, з параметром MaxDials, треба бути дуже обережною, і чітко розуміти до чого це може привести. Уявімо собі на секунду, що ми помилилися номером при надсиланні факсу. І наша помилка така, що такий номер є, і він, наприклад, домашній;) і більш того, там беруть трубку, але не факс, чи не модем, а людина;) Так ось виконання цих припущень призведе до того, що бідному власникові цього номера, ваша програма подзвонить 15 разів поки не заспокоїться;), при цьому кожен раз щось піщща йому в вухо;) Приємного мало;) (саме тому по дефолту цей параметр дорівнює 3).
Почухавши в голові, і подивившись на результати тестування, я зрозумів, що при обробці напилком я трохи схалявіть;).
Покопався ще в манах, і знайшов ще один потрібний мені і важливий параметр. Називається він NoCarrierRetrys. Відповідає він за кількість спроб передзвонити на той же номер після отримання NO CARRIER повідомлення. У них в штатах;), як пишеться в мане, це означає, що з іншого боку факс відкидає прийом, або просто не піднімає трубку, а у мене це означало лише те, що модем не спіймав обрив зв'язку або сигнал зайнятості (це не означає , що у мене не налаштований модем, щоб ловити BUSY - це значить, що на наш BUSY, в нашій країні, а особливо з урахуванням налаштувань, як міських АТС, так і сторонніх офісних - не зовсім прямими руками, іноді цей BUSY не спіймаєш при всьому бажанні;)).
Так ось я цей параметр прописав в config.tty * (тільки туди він і може бути прописаний, як то кажуть only in per-device configuration files):
Під час всього тяжкої праці з налаштування;), але ж багато що я написав я не знайшов в російськомовному вигляді, а тільки лише перекопавши близько 100 сторінок мінлива (цілу папку роздруківок зібрав;)), я користувався такими командами:
просто посилаємо факс (и). -n - це прапор означає що передача повинна йти без coverpage. Це на той випадок якщо ви ще не встигли прописати AutoCoverPage: No;)
Перевірка статусу сервера здійснюється командами
Видалення факсу з черги Очищення спула (посланих факсів, і не були надіслані з-за помилок) Статистика За бажанням, дві останніх команди, можна вставити в crontab. Точніше перша там точно потрібна, важливо лише підібрати параметри запуску, щоб коли до вас прибіжать розлючені користувачі і запитають чому факс не відправив, ви змогли подивитися що ж сталося, а не дивитися на любовно очищену faxqclean директорію;) Ну а другу команду, розробники радять засунути в крон таким чином, щоб вся статистика відсилалася на FaxMaster email (користувача FaxMaster, створює hylafax при інсталяції, втім, насправді там можна вставити що завгодно, щоб в лог писало, або на інший email відправляло, але я думаю це ви і самі сд елаете). Так що самі вирішуйте потрібно це вам чи ні.
Робочі директорії:
У цих директоріях можна знайти практично будь-яку інформацію, про те як факс вирушав, скільки спроб було, через що не проходили ті чи інші спроби, на якій швидкості пройшло з'єднання і т.д. і т.д. Їх корисно чистити, і часто корисно вручну;). Це досить просто, треба просто прати всі файли, крім файлу seqf, а його відредагувати і знову поставити цифру 1.
Все що написано раніше, за великим рахунком, це всього лише попередня настройка факс-сервера. При такій настройці, максимум, що можливо, це відіслати факс командою sendfax.
Моє ж завдання була іншою, дати можливість як мінімум всім користувачам локальної мережі відправляти факс через цей сервер з модемом, а як максимум, реалізувати можливість відправки факсів, звідки завгодно, але природно тільки <посвященным>.
У /etc/smb.conf (або де він у вас лежить) вставляємо модуль smb_conf.add. А саме:
Все залежить від налаштувань самби, якщо їй користуються. У мене наприклад там же ще стоять рядки:
Плюс, security = share, але прописані hosts allow, і висить вона тільки на одному з 4х інтерфейсів. Т.ч. я не маю геморою, з самба паролями, прописування усіх користувачів на серверній машині, але і з сек'юрностью ніби все в порядку. Якщо я не правий, готовий вислухати зауваження по суті.
Після зміни samba.conf перезапускаємо самбу (/etc/init.d/smb restart), якщо хто не користувався нею до цього часу - прописує її в автостарт, і все, на цьому настройка самби закінчена. Тепер з будь-якого комп'ютера, прописаного в hosts allow в самби, зайшовши по нетбіос на сервер, ми повинні бачити мережевий принтер з ім'ям fax. Якщо це не так <читай Устав> (Тобішь, для нас man).
Далі йде настройка цього <виртуального> принтера, на машинах, яким потрібно використовувати цей факс-сервер. Налаштування здійснюється просто:
Тепер необхідно налаштувати мережевий принтер:
Отже на локальній машині треба зайти в налаштування принтерів і факсів. Далі встановити новий принтер. Вибрати що це мережевий принтер, підключитися до мережного принтера \ server-samba-ip (name) fax.
Все, документ пішов на факс (в разі якщо налаштована служба повідомлень, як на сервері, так і на клієнті, то ще й вискочить підтверджує віконце).
Можна вважати, що в разі використання факс-сервера тільки в локальній мережі, на цьому все можна завершити.
Шкода, що для мене на цьому все не скінчилося, а тільки почалося;)
Трохи порившись по Інтернету (може занадто вже трохи, але не судіть мене строго), я зрозумів, що всю цю функціональність доведеться писати самому. В результаті був написаний Perl скрипт, який перевіряє певний ящик (скрипт запускається по cron), витягує з нього всі листи, перевіряє їх на відповідність параметрам, і, якщо все коректно, конвертує документи * .doc програмою antiword, і потім відправляє їх з допомогою sendfax.
Коли користувач отримує лист про отримання документів для факсу, навпроти назви кожного документа, пишеться Unical ID, 11 символьний рандомних рядок.
Скрипт можна скачати тут
Над ним ведуться роботи, як тестують, так і для збільшення його функціональності (хочеться ще додати відсилання pdf документів, xls і txt і ще чого-нитку придумати;)).
Вообщем поки, як я думаю про скрипт як про сформований, з хорошою функціональністю, вирішенні, говорити трохи рано, але основні завдання він виконує і поки (тьфу-тьфу;)) непогано.
Буду радий почути пропозиції по скрипту, помічені баггі і тд. Якщо хтось сам чого нитка в скрипті додасть, то хотілося б щоб мені повідомили (виключно з метою того що може я і собі те ж саме додам;)).
Та й ще. Скрипт перевірений на сумісність з поштою від клієнтів The Bat. Eudora, Outlook;)