LinuxovΘ noviny | 07/98 | |||||
| ||||||
V tejto kuchßrke si povieme nieΦo o tom, ako pripravi╗ pre na╣ich pou╛φvate╡ov server, ktor² im umo╛nφ posiela╗, prijφma╗ a prezera╗ faxy. Krok po kroku si povieme ako skompilova╗, nain╣talova╗ a nakonfigurova╗ prφslu╣n² softvΘr. Tßto kuchßrka je urΦenß hlavne pre t²ch, ktorφ e╣te nemaj· faxov² server nain╣talovan², ale niektorΘ perliΦky tu hßdam nßjdu aj ostrie╡anφ "faxisti". Tak╛e Φo potrebujeme na prφpravu faxovΘho servera? Je to samozrejme linuxov² (unixov²) server, class 2 alebo 2.0 (ve╡mi d⌠le╛itΘ, vi∩. ∩alej) faxmodem, balφky mgetty+sendfax ftp://alpha.greenie.net/pub/mgetty/source/1.1/, samba http://samba.anu.edu.au/samba/, respond+printfax.pl http://www.boerde.de/~horstf/ a ghostscript http://www.cs.wisc.edu/~ghost/. Ke∩ sa nßm podarφ v╣etky tieto veci spolu nain╣talova╗ a nakonfigurova╗, tak dostaneme plnohodnotn² faxov² server, ktor² nßm umo╛nφ posiela╗ faxy priamo z Unixu ale aj z prostredia MS Windows alebo MacOS. ╧alej budeme m⌠c╗ faxy prijφma╗, tlaΦi╗, prezera╗, opakovane posiela╗, archivova╗ a ∩alej spracovßva╗. Pozn.: V╣etky prφklady (napr. cesty k s·borom) s· robenΘ na RedHat Linuxe 4.2 a 5.0. Preto je mo╛nΘ, ╛e vo va╣om Debiane alebo Slackware to bude mierne inak, ale princφp zostßva zachovan². Ako to vlastne funguje? Prijφmanie faxov je vcelku jednoduchΘ a prebieha nasledovne. Ke∩ k nßm niekto zavolß a na druhej strane telef≤nnej linky je fax, nß╣ faxmodem to rozpoznß (toto je jeden z kame≥ov ·razu) a povie to programu mgetty. Ten zabezpeΦφ, aby sa danΘ faxovΘ dßta prijali, skontrolovali a po stranßch ulo╛ili na urΦenΘ miesto v podobe unixov²ch s·borov. Potom mgetty spustφ vopred urΦen² program (defaultne /usr/local/bin/new_fax), ktor² zabezpeΦφ ∩al╣ie spracovanie (napr. vytlaΦenie, zalo╛enie do archφvu) prijatΘho faxu. Posielanie faxov je trochu zlo╛itej╣ie, preto╛e tu je viacero mo╛nostφ ako to urobi╗. Najprv si samozrejme musφme pripravi╗ strßnky, ktorΘ chceme odfaxova╗. Tieto musia by╗ v niektorom z podporovan²ch formßtov (ps, ascii text, dvi, pbm, pgm, ppm, g3, lj - HP LJ PCL 4 alebo xwd). Ke∩ ich mßme, tak ich prostrednφctvom prφkazu faxspool zaradφme do spoolu, kde si poΦkaj· na odoslanie. Toto bolo na ·rovni unixu. Ak chceme faxova╗ z Windows, tak sa nßm to zaΦφna komplikova╗. M⌠╛me na to vyu╛i╗ SAMBU, kde urobφme tlaΦiare≥ na ktor· m⌠╛u tlaΦi╗ v╣etky programy, alebo pokia╡ mßme Win NT alebo in² systΘm s podporou unixov²ch tlaΦiarnφ (lpd) m⌠╛me tlaΦi╗ priamo na unixov· tlaΦiare≥, ktorß sa tvßri ako fax. My sa budeme zaobera╗ prv²m prφpadom, preto╛e je viac pou╛φvan² a vcelku ╡ahko implementovate╡n². Tak╛e z nejakΘho windovsovΘho programu vytlaΦφme strßnky na sambov· tlaΦiare≥, samba to predß prφslu╣nΘmu konverznΘmu programu a potom sa to prφkazom faxspool naspooluje a pripravφ na odoslanie. Potom sa pou╛φvate╡ovi po╣le prostrednφctvom winpopu sprßva o tom, ╛e fax bol dan² do spoolu. To je v╣etko peknΘ, ale nieΦo tu ch²ba, nie? Ano, je to telef≤nne/faxovΘ Φφslo prijφmate╡a. V unixe to je jednoduchΘ, dßme ho ako parameter prφkazu faxspool. Ale Φo Windows? Tu mßme zasa dve mo╛nosti. Bu∩ zakomponujeme tel. Φ. prijφmate╡a do textu faxu tak, aby nebolo vidite╡nΘ (Φo napr. v MS Worde nie je problΘm) a v konverznom programe toto Φφslo vyextrahujeme. Alebo pou╛ijeme ╣pecißlny program s nßzvom respond, ktor² be╛φ na pracovnej stanici a ktor² si na prφkaz konverznΘho programu vyp²ta meno a telef. Φφslo prijφmate╡a a tieto doplnφ do volania prφkazu faxspool. Nßs zaujφma druhß varianta, preto╛e je systΘmovej╣ia a transparentnej╣ia ako prvß. V prvom prφpade predanie tel. Φ. silne zßvisφ od pou╛itej aplikßcie. Predstavte si, ╛e chcete odfaxova╗ obrßzok napr. z programu PaintBrush alebo Corel. Neviem si predstavi╗, kam by ste vlo╛ili tel.Φ. tak, aby bolo parsovate╡nΘ konverzn²m programom a zßrove≥ nevidite╡nΘ v obrßzku. Teraz to zhrniem. Mßme tlaΦiare≥ v sambe, na ktor· tlaΦφme faxy, samba spustφ konverzn² program, ktor² si prostrednφctvom dΘmona respond na va╣ej pracovnej stanici vyp²ta tel. Φφslo a identifikßciu prijφmate╡a a s t²mito ·dajmi potom zavolß prφkaz faxspool, ktor² - ako som u╛ napφsal - zaradφ strßnky do spoolu, kde poΦkaj·, k²m ich niekto odo╣le. Ale kto? Tak na to je tu program faxrunq alebo jeho prefφkanej╣φ brat faxrunqd. Faxrunqd be╛φ ako dΘmon a raz za stanovenΘ obdobie prezrie spool a prostrednφctvom programu sendfax sa pok·si odosla╗ v╣etky pripravenΘ faxy (preto sa balφk volß mgetty+sendfax, to aby ste si nemysleli, ╛e sendfax tam je len na parßdu a ╛e niΦ nerobφ). Ke∩ je v╣etko dokonanΘ, tak faxrunqd m⌠╛e spusti╗ success alebo fail program (pod╡a toho, Φi fax ·spe╣ne odi╣iel alebo neodi╣iel v⌠bec), v ktorom si m⌠╛eme nadefinova╗ vlastnΘ Φinnosti. My to pou╛φvame na archivßciu odoslan²ch faxov. O ne·spe╣nom odoslanφ resp. neodoslanφ faxu je informovan² fax administrßtor, prφpadne aj odosielate╡ faxu (vi∩. posledn· Φas╗ Φlßnku).
In╣talßcia a konfigurßcia mgetty+sendfaxPoviete si: naΦo by som to in╣taloval a kompiloval, ke∩ mßm rpm-ko? Je na to viacero d⌠vodov. Po prvΘ, je mo╛nΘ, ╛e nov╣ia verzia podporuje aj vß╣ nov² modem. Po druhΘ, mßte tam kompletn· dokumentßciu v r⌠znych formßtoch. Po tretie, mßte tam r⌠zne peknΘ alebo menej peknΘ nßstroje, prφklady a pomocnΘ balφky. No a nakoniec, niektorΘ parametre sa daj· nastavi╗ len v Φase kompilßcie. Na╣╗astie to zvyΦajne nie s· kritickΘ parametre a minimßlne RedHati (inΘ, napr. deb balφky som nemal mo╛nos╗ vysk·╣a╗) ich nastavuj· na celkom rozumnΘ hodnoty. Pokia╡ som vßs presvedΦil o potrebe stiahnutia balφku urobte tak (nemusφte ho kompilova╗, staΦφ ke∩ si pozriete dokumentßciu a pomocnΘ utility a potom si nain╣talujete rpm-ko). Pokia╡ som vßs nepresvedΦil, tak k╡udne skoΦte na Φas╗ s nßzvom konfigurßcia. Predt²m si e╣te pozrite aspo≥ online nßpovedu na http://alpha.greenie.net/mgetty/index.html alebo na http://www.leo.org/~doering/mgetty/index.html.
In╣talßciaAko prvΘ balφk samozrejme rozbalφme do vhodnΘho adresßra (prφkazom tar -xvzf). Ako druh² krok si pozrieme s·bor README.1st (v╛dy Φφtate readme, ╛e :-). Tam sa hne∩ na zaΦiatku dozvieme odkazy na online nßpovedu, ktorΘ som spomenul o odstavec vy╣╣ie. Postup uveden² v tomto s·bore si v╣ak mierne upravφme. Ako tretφ krok si skopφrujeme s·bor policy.h-dist do s·boru policy.h. Zatia╡ niΦ nemenφme. Potom vojdeme do adresßra doc (cd doc) a urobφme make doc_all, Φo nßm vygeneruje kompletn· dokumentßciu. Pokia╡ chceme len HTML verziu, nahliadnutφm do Makefile zistφme, ╛e staΦφ urobi╗ len make mgetty.html. Na to, aby sme zo s·boru mgetty.texi dostali napr. HTML verziu musφme ma╗ nain╣talovan² balφk tetex-*.rpm. Pokia╡ ho nemßme a ani nemienime in╣talova╗, tak si pozrieme online verziu. Teraz doporuΦujem skopφrova╗ si zaujφmavΘ s·bory do inΘho adresßra a urobi╗ make fullclean. Toto nßm zma╛e vygenerovan· dokumentßciu (mßme ju skopφrovan· v inom adresßri) a uvedie adresßr doc do p⌠vodnΘho stavu. Ve╡mi doporuΦujem, aby ste si d⌠kladne preΦφtali v tej skopφrovanej dokumentßcii v Φasti "Common problems and solutions" sekciu pre vß╣ modem a pou╛it² operaΦn² systΘm. ╧alej doporuΦujem prezrie╗ si modem.db a ve╡mi zaujφmavΘ Φφtanie je aj ttyS-cua.txt. Ke∩ sme v╣etko pochopili, m⌠╛eme prist·pi╗ k editßcii s·boru policy.h a pod╡a nadobudnut²ch vedomostφ nastavi╗ parametre pre vß╣ modem. Okrem parametrov pre modem s· zaujφmavΘ aj nasledovnΘ premennΘ:
Toto boli najd⌠le╛itej╣ie parametre, ktorΘ je potrebnΘ zmeni╗. ╧alej u╛ len v krßtkosti vymenujem tie, ktorΘ som musel meni╗ alebo aspo≥ pozna╗, aby mi to chodilo:
Ke∩ si myslφme, ╛e sme ·spe╣ne dokonfigurovali, tak sk·sme obligßtne make. Malo by to vcelku r²chlo a bezbolestne skompilova╗ cel² balφk aj s dokumentßciou. Prφkaz make testdisk sl·╛i na otestovanie toho, Φi vie mgetty sprßvne zisti╗ vo╡nΘ miesto v s·borovom systΘme. Pokia╡ sa vßm nechce, tak ho nemusφte sk·╣a╗, lebo na Linuxe to funguje. Na dve nasledovnΘ Φinnosti budeme potrebova╗ rootovskΘ oprßvnenia. S· to make install, ktorΘ nain╣taluje potrebnΘ s·bory do /usr/local/[bin,sbin,etc,lib] a editßcia /etc/inittab tak, aby sa mgetty sp·╣╗alo po ╣tarte systΘmu. Ja som vo svojom inittabe pou╛il nasledovn² zßznam :
f1:3:respawn:/usr/local/sbin/mgetty -x 3 ttyS1 Mgetty sa nem⌠╛e p·╣╗a╗ z prφkazovΘho riadku, ale len z inittabu, preto╛e sa poΦas svojej Φinnosti re╣tartuje (a na to potrebuje vlastnos╗ initu - respawn). Zatia╡ v╣ak init nere╣tartujeme ani mgetty nijako nesp·╣╗ame, ale prist·pime k dokonfigurovaniu a a╛ nßsledne k otestovaniu balφka mgetty+sendfax.
Konfigurßcia a testovanieKonfiguraΦnΘ s·bory vznikn· po in╣talßcii v adresßri /usr/local/etc/mgetty+sendfax (ke∩ ste si ho kompilovali sami), alebo v /etc/mgetty+sendfax (ke∩ ste pou╛ili RedHa╗ßcke RPM-ko). Nachßdzaj· sa tam s·bory *.config a faxheader. Mgetty, ako ste si urΦite v╣imli, vie viac, ako prijφma╗ a posiela╗ faxy. Je primßrne urΦen² ako lep╣φ ekvivalent k programom getty alebo uugetty na pripojenie sa k poΦφtaΦu modemom. Umo╛≥uje tie╛ urobi╗ callback (niekedy v nejakom inom Φlßnku) a ke∩ s· sprßvne ponastavovanΘ sp⌠soby zamykania a pou╛itΘ rovnakΘ znakovΘ zariadenia, vie spolupracova╗ s minicomom a pppd (my mßme vo firme dial-in, dial-out, callback, ppp a fax a to v╣etko na jednom modeme a dokonca to aj funguje). A vie to e╣te jednu pekn· vec. V spoluprßci s vgetty (je to s·Φas╗ou balφka) umo╛≥uje urobi╗ z Vß╣ho Linuxu hlasov² zßznamnφk s odkazovaΦom. Ako vidno cel² balφk je vcelku komplikovan², a preto sa budeme zaobera╗ len konfigurßciou jeho faxovej Φasti. S· to v╣etky s·bory obsahuj·ce v nßzve slovo fax (:-) a mgetty.config. Pre v╣etky platφ to, ╛e pokia╡ ste cel² balφk kompilovali sami, tak sa tam pou╛ili ako default hodnoty zo s·boru policy.h, a teda potrebnΘ zmeny bud· minimßlne. Pokia╡ nie, pozrite si e╣te raz online dokumentßciu, kde nßjdete sprßvne nastavenia potrebn²ch parametrov. No a teraz si ich (tie s·bory a parametre) pekne zaradom preberme. Ako prv² sk·sme mgetty.config. Tu je d⌠le╛itΘ ma╗ sprßvne nastavenΘ fax-id a speed. Potom pre konkrΘtne zariadenie a konkrΘtny modem je potrebnΘ nastavi╗ jednotlivΘ sekcie napr. port ttyS1 a v nej hlavne init-chat.Druh² d⌠le╛it² s·bor je sendfax.config. Svojou ╣trukt·rou je ve╡mi podobn² predchßdzaj·cemu s·boru. ZaujφmavΘ parametre s· tieto: fax-devices (jeden alebo viac faxmodemov, cez ktorΘ sa m⌠╛u posiela╗ faxy, oddelenΘ dvojbodkou [:] ), zasa fax-id, dial-prefix (ATDP pre anal≤govΘ ·stredne t.j. pulzn· vo╡bu) a pre ka╛d² port (modem) osobitne jeho ╣pecifickΘ vlastnosti, napr. modem-handshake. Teraz je na rade faxrunq.config. Tento s·bor je konfiguraΦn² pre program faxrunq ale aj pre faxrunqd (ktor² kedy pou╛i╗, vi∩ ni╛╣ie). Tu sa nastavuje napr. Φi sa mß faxadminovi posiela╗ mail s informßciou o ·spe╣nom/ne·spe╣nom odoslanφ faxu (pokia╡ na to chcete pou╛i╗ sambu a nie unixov² mail, pozrite si posledn· Φas╗ Φlßnku) a Φo je asi najzaujφmavej╣ie success-call-program a failure-call-program. Tieto, ako z ich nßzvu vypl²va, sa spustia po ·spe╣nom odoslanφ alebo po neodoslanφ faxu. Nßvod na to, ako ich pou╛i╗ na archivßciu odoslan²ch faxov je zasa v poslednej Φasti Φlßnku. Tak╛e v tomto s·bore zatia╡ niΦ nemenφme. Zatia╡ posledn² s·bor je faxheader. Toto je zßhlavie faxu, ktorΘ sa doplnφ na ka╛d· odoslan· stranu. Je tam vhodnΘ napφsa╗ FROM: <nßzov_va╣ej_organizßcie> a sprßvne faxovΘ Φφslo (ak ste balφk kompilovali sami, tak by tam malo by╗). Prichßdza hodina h min·ta m a sekunda s, kedy si otestujeme, Φo sme doteraz spßchali. Sk·sme spravi╗ init q, Φo sp⌠sobφ, ╛e si init preΦφta inittab a spustφ nßm mgetty. V adresßri /var/log by mal vznikn·╗ s·bor mgetty.<nßzov_tty>. Pokia╡ tento s·bor nevznikol alebo je prßzdny, tak vßm mgetty nemß Φo poveda╗ a teda v╣etko je v poriadku. E╣te sme v╣ak nevyhrali! Ak mßte minicom alebo pou╛φvate PPP, sk·ste ich. S popφsanou konfigurßciou by to malo chodi╗. Ak mßte e╣te jeden modem, sk·ste z neho zavola╗ (cez minicom) na vß╣ fax. Mgetty by mal normßlne hodi╗ login a umo╛ni╗ vßm prihlßsenie. Teraz otestujeme prijφmanie faxov. Nechajte si od niekoho posla╗ krßtky fax na vß╣ faxmodem. Ako som u╛ napφsal, mal by v adresßri /var/spool/fax/incoming vznikn·╗ s·bor zaΦφnaj·ci pφsmenom f. Po prijatφ faxu sa mgetty pok·si spusti╗ program FAX_NOTIFY_PROGRAM (definovan² v policy.h, Φo je ╣tandardne /usr/local/bin/new_fax), s nasledovn²mi parametrami:
<nßvratov²_k≤d> '<identifikßcia_odosielate╡a>'\ <poΦet_strßn>\ <meno_prvΘho_s·boru> <meno_druhΘho_s·boru> .. V in╣talaΦnom adresßri mgetty nßjdete adresßr samples a v ≥om mno╛stvo s·borov s nßzvom new_fax.*. Napr. new_fax.lj vytlaΦφ prijat² fax na definovanej tlaΦiarni (typu HP LJ). Ja v╣ak odpor·Φam pozrie╗ si adresßr new_fax.all, kde je pekn² balφk modulov, ktorΘ vedia robi╗ s prijat²mi faxmi r⌠zne zaujφmave veci (napr. vytlaΦi╗, odfaxova╗ ho ∩alej, posla╗ informßciu o prijatom faxe mailom, zßpisom do logu). Je to ve╡mi pekne konfigurovate╡nΘ (pozrite s·bor faxlist). In╣talßcia je ve╡mi jednoduchß. Nahrajte v╣etky s·bory do samostatnΘho adresßra a urobte link z /usr/local/bin na new_fax (alebo to v╣etko nahrajte priamo do /usr/local/bin). V new_fax s· nejakΘ konfiguraΦnΘ cesty a vo faxlist si nastavφte, ako sa mß new_fax sprßva╗. Ke∩ chcete pou╛φva╗ new_fax aj na archivovanie faxov, prek·╣te sa a╛ k poslednej Φasti tohto Φlßnku. Dajte si e╣te raz posla╗ nejak² fax a u╛ by sa mal spusti╗ new_fax, ktor² by mal vykona╗ po╛adovan· Φinnos╗. V╣etko chodφ? V²borne. PoloviΦku testovania (mgetty) mßme za sebou. Sk·sme druh· poloviΦku - sendfax. Na to potrebujeme nejak· obe╗ v podobe inΘho faxu a nieΦo, Φo tej obeti po╣leme. To nieΦo m⌠╛e by╗ hocijak² krßtky (!) s·bor vo formßte, ktor² ovlßda prφkaz faxspool (vi∩. Φas╗ s nßzvom Ako to vlastne funguje?). Pokia╡ nemßte poruke vhodn² s·bor, m⌠╛ete si ho vyrobi╗ sp⌠sobom pod╡a v²pisu:
pbmtext -font\ /usr/local/lib/mgetty+sendfax/cour25.pbm \ >/tmp/fax.pbm Na ╣tandardn² vstup napφ╣eme nejak² text (napr. AHOJ toto je m⌠j prv² fax) a stlaΦenφm Ctrl-D pbmtext vygeneruje s·bor /tmp/fax.pbm. ╚o ste vyplodili, si m⌠╛ete pozrie╗ napr. programom zgv alebo xv. Tento pbm s·bor skonvertujeme do formßtu g3 (╣tandardizovan² formßt, ktor² sa pou╛φva na prenos faxov) programom pbm2g3 (nie pbmtog3 !!!), ktor² vznikol pri in╣talßcii balφku mgetty+sendfax. Urobte teda
pbm2g3 /tmp/fax.pbm > /tmp/fax.g3. Program pbmtext ako aj inΘ konverznΘ programy (ppmto*, pgmto*, pbmto*, pnm*), ktorΘ pou╛φva faxspool sa nachßdzaj· v balφku libgr-progs (RH5.0) resp. netpbm (RH4.2). Tento pripraven² s·bor teraz programom faxspool pripravφme na odoslanie:
faxspool -F <va╣e_meno> -f <vß╣_email> \ <faxovΘ_Φφslo_obete> /tmp/fax.g3 Ke∩ sa faxspool zaΦne rozΦu╡ova╗, ╛e nie ste root Faxspool security, tak je potrebnΘ vytvori╗ prßzdny s·bor /usr/local/etc/mgetty+sendfax/fax.deny. Tento s·bor sl·╛i na to, aby sa dalo obmedzi╗, kto m⌠╛e a kto nem⌠╛e posiela╗ faxy. Podrobnej╣ie vi∩ posledn· Φas╗ Φlßnku. Ke∩ je faxspool spokojn², mal by poveda╗ nieΦo o tom, ╛e fax bol naspoolovan² a ╛e faxrunq nebol sp·╣╗an² poΦas posledn²ch 24 hodφn (Φo nie je problΘm, lebo sme e╣te neskonΦili konfigurßciu). Ako to vyzerß vidie╗ na v²pise Ukß╛ka spoolovania faxu. Ak v╣etko prebehlo v poriadku, tak v adresßri /var/spool/fax/outgoing vznikol adresßr F<XXXXXX>, kde <XXXXXX> je nejakΘ Φφslo. V tomto adresßri sa nachßdza s·bor JOB s informßciami o danom faxe a jeden alebo viac s·borov fX.g3, ktorΘ obsahuj· jednotlivΘ strßnky faxu. Na prezeranie obsahu faxovΘho spoolu sl·╛i prφkaz faxq a na vymazanie zßkazky zasa faxrm.
Pozrime sa teraz na to, ako odosla╗ pripravenΘ faxy. Mßme dve mo╛nosti. Bu∩ pou╛ijeme program faxrunq, ktor² sa bude v pravideln²ch intervaloch sp·╣╗a╗ z cronu, alebo pri ╣tarte systΘmu spustφte program faxrunqd ako dΘmon a ten v pravideln²ch intervaloch (60 s) prezrie spool a rovnako ako faxrunq pomocou programu sendfax po╣le pripravenΘ faxy prijφmate╡om. Ktor² z nich pou╛i╗? Faxrunq je napφsan² v shelli a sp·╣╗a sa raz za Φas, zaberß teda menej systΘmov²ch zdrojov. Faxrunqd be╛φ stßle, je napφsan² v Perle, mß ale viac mo╛nostφ (napr. vie obsluhova╗ viac modemov, vie spracovßva╗ faxy pod╡a priority), je flexibilnej╣φ a mß r²chlej╣iu odozvu. Z tohto d⌠vodu doporuΦujem pou╛i╗ faxrunqd. Urobte si rc skript (napr. /etc/rc.d/rc3.d/S96fax - RH alebo do /etc/rc.d/rc.local - Slackware), v ktorom sa bude sp·╣╗a╗ faxrunqd s parametrom -l tty<n>, kde <n> je prφslu╣nΘ zariadenie s modemom. Pokia╡ chcete pou╛i╗ viac zariadenφ, tak ich odde╡te dvojbodkou (:). Na otestovanie toho Φi nßm faxrunqd a sendfax sprßvne funguj· s na╣φm modemom (zatia╡ mßme otestovan· len poloviΦku, pamΣtßte?), spustφme faxrunqd (ako root) z prφkazovΘho riadku: faxrunqd -l ttyS1. V adresßri /var/spool/fax vznikn· dva s·bory - acct.log a faxrunqd.log. V t²chto s·boroch sa nachßdzaj· informßcie o tom, ako dopadlo posielanie faxov. Ke∩ fax ·spe╣ne odi╣iel a je dokonca v mieste prijatia Φitate╡n², mßme unixov· Φas╗ odosielania vybaven·. Ako som u╛ spomenul v Φasti Konfigurßcia a testovanie, pri spoolovanφ faxu vznikne s·bor JOB, v ktorom s· ulo╛enΘ r⌠zne informßcie o faxe. Program faxrunqd si ich pred odoslanφm preΦφta a na s·bor JOB vytvorφ hardlink s nßzvom JOB.locked, Φo je vlastne ve╡mi jednochuch² sp⌠sob zamykania a ochrany. Ak sa mu poslanie podarilo, tak s·bor JOB premenuje na JOB.done. Ak nastala nejakß zßva╛nß chyba, tak vznikne JOB.error, a ke∩ sa mu nepodari fax odosla╗ (obsadenß linka, na druhej strane nie je fax), tak JOB.suspended. Ke∩ faxrunqd ukonΦφ svoj beh, tak samozrejme JOB.locked unlinkuje (zru╣φ). Ani jeden fax so statusom .suspended, .error alebo .done u╛ na∩alej nie je spracovßvan². Preto je pri statusoch .suspended a .error potrebnΘ zisti╗ prφΦinu chyby. S t²mto s·visφ aj sprßvanie programu faxq. Tento ╣tandartne zobrazuje len faxy pripravenΘ na odoslanie. Preto je potrebnΘ z Φasu na Φas skontrolova╗ stavy faxov prφkazom faxq -a (Φo zobrazφ v╣etky, aj suspendnutΘ faxy). Zisti╗ prφΦinu chyby je mo╛ne pou╛itφm faxq -a -v. Pokia╡ bol fax len suspendnut², je mo╛nΘ ho znova zaradi╗ do spracovania pomocou faxq -r (m⌠╛te na to urobi╗ napr. cron job). Faxy so statusom .error je potrebnΘ da╗ do poriadku ruΦne (opravenφm ·dajov v s·bore JOB.error a jeho premenovanφm alebo zmazanφm a opΣtovn²m poslanφm apod.). ╚o v prφpade, ╛e nieΦo nefunguje? Je ╗a╛kΘ da╗ nejak· v╣eobecn· radu. Musφte sk·ma╗ logy, zv²╣i╗ debug level (parameter -x pre mgetty a debug v sendfax.config pre sendfax), preΦφta╗ si e╣te raz online dokumentßciu a sk·si╗ nejak· in· variantu inicializßcie prφp. ovlßdania modemu. PresvedΦte sa, ╛e vß╣ faxmodem je naozaj triedy 2.0 alebo aspo≥ 2 (to nie je to istΘ). Bohu╛ia╡ mgetty zatia╡ nepodporuje faxmodemy triedy 1 (ja som vßs na zaΦiatku varoval). Doering (autor mgetty) vraj na tom priebe╛ne pracuje, ale je to dos╗ komplikovanΘ a trvß to dlho (preto╛e mnoho vecφ, ktorΘ pri class 2/2.0 urobφ modem je potrebnΘ urobi╗ v programe). ╧alej sa presvedΦte, Φi mßte v modeme sprßvnu verziu firmware, ktorß naozaj podporuje class 2/2.0 faxy. Ako som sa presvedΦil na vlastnej ko╛i, to ╛e to je napφsanΘ na krabici alebo v reklamn²ch materißloch neznamenß, ╛e je to pravda. Ke∩ niektorφ v²robcovia modemov zaviedli podporu pre voice, tak vyhodili podporu pre faxy. Je to bohu╛ia╡ niekedy tak trochu Φierna mßgia a je to asi najvΣΦ╣ie ·skalie, akΘ vßs Φakß. Preto som to╡ko opakoval, ╛e si mßte d⌠kladne preΦφta╗ dokumentßciu. Ke∩ si u╛ naozaj nebudete vedie╗ poradi╗, tak napφ╣te bu∩ priamo Doeringovi (jeho adresa je v README.1st), ale pred t²m si v╣ak preΦφtajte BUGS. Alebo sk·ste mailing list, ktorΘho archφv je na adrese http://www.elilabs.com/mgarc/index.html. Ak to nakoniec funguje, tak mßme vyrie╣en· a sfunkΦnen· unixov· Φas╗ problΘmu. Pozrime sa na to, ako to vyzerß s naviazanφm na MS Windows.
In╣talßcia a konfigurßcia respond a printfax.plStiahnite si binßrku programu respond.exe, s·bor printfax-1.3.5.pl (alebo vy╣╣iu verziu, ak medzit²m vznikla), readme.txt (preΦφta╗) a volite╡ne aj faxlpq a faxlprm. ZaΦnime od konfigurßcie unixu. Predpokladß sa, ╛e mßte nain╣talovan· a funkΦn· sambu a perl 5.x. Skopφrujte s·bor prinfax-*.pl do /usr/local/bin/printfax.pl a do smb.conf (zvyΦajne v /etc) pridajte definφciu tlaΦiarne s nßzvom fax tak, ako to je na v²pise Definφcia faxu v sambe.
V printfax.pl je pre Linux e╣te nutnΘ zmeni╗ premenn· $smbclient tak, aby ukazovala na pln· cestu k programu smbclient (/usr/bin/smbclient), a ak ste na in╣talßciu mgetty+sendfax pou╛ili RedHa╗ßcke RPMko tak aj premenn· $faxspool na /usr/bin/faxspool. T²m by mala by╗ unixovß Φas╗ hotovß a po∩me sa pozrie╗ na z·bok Windowsom. Tam nastavte, aby sa pri ╣tarte sp·╣╗al winpopup (na prijφmanie sprßv od faxovΘho systΘmu) a respond.exe, ktor² sme pred t²m nakopφrovali do nejakΘho inteligentnΘho adresßra (ja to mßm v c:/utils/fax). Teraz sa pozrime do Network Neighbourhood (Sφ╗, Φi ako to je v Φesk²ch Windowsoch), alebo sk·sme Start/Run a tam napφ╣te \\smb_meno_servera_s_faxoma mali by sme tam vidie╗ tlaΦiare≥ s nßzvom fax (definovanΘ v smb.conf). Dvojklikom na ≥u Windowsy zistia, ╛e ju nemßme nain╣talovan· a op²taj· sa, Φi ju chceme nain╣talova╗. ┴no chceme. V ∩al╣om okne si musφme vybra╗ vhodn· tlaΦiare≥. Ide o postScriptov· tlaΦiare≥, tak si vyberte napr. HP LaserJet 5P/5MP PostScript alebo IBM 4019 LaserPrinter PS17 a nain╣talujte ju. Potom tlaΦiare≥ premenujte na fax a pozrite si jej vlastnosti. D⌠le╛itß je zßlo╛ka Fonts, kde musφ by╗ zakliknutΘ, ╛e Send TrueType fonts to printer, ostatnΘ polo╛ky by mohli zosta╗ na svojich default hodnotßch. UbezpeΦte sa, ╛e be╛φ winpopup a respond a sk·ste vytlaΦi╗ nejak· stranu na fax. Ke∩╛e fax je postscriptovß tlaΦiare≥, tak ovlßdaΦ tlaΦiarne zabezpeΦφ, ╛e sa danß strßnka prekonvertuje na viac Φi menej kompatibiln² a prenosite╡n² Postscript (zßvisφ od ovlßdaΦa tlaΦiarne) a po╣le sa na sambovsk· tlaΦiare≥. Tam sa toho ujme printfax.pl, ktor² otvorφ spojenie na program respond. Tento sa maximalizuje a vyp²ta si od pou╛φvate╡a meno a faxovΘ Φ. prijφmate╡a ako aj meno pou╛φvate╡a. Tieto ·daje s· potom poslanΘ naspΣ╗ printfaxu, ktor² na ich zßklade pomocou faxspool vygeneruje po╛iadavku na fax. Faxspool pou╛itφm ghostscriptu prekonvertuje Postscript na g3 a vyrobφ spoolov· po╛iadavku. Toto je u╛ prφpad, ktor² sme prebrali v predchßdzaj·cej Φasti a ktor² nßm u╛ chodφ. Jedin² problΘm vidφm v tom, ╛e odoslan² fax bude zle sformßtovan² alebo ghostscript nebude vedie╗ sprßvne vygenerova╗ g3 s·bor (napr. ch²baj·ce fonty). Potom pom⌠╛e u╛ len sk·╣a╗ r⌠zne typy postscriptov²ch ovlßdaΦov (tlaΦiarnφ) a ich r⌠zne nastavenia. Volite╡ne m⌠╛te e╣te pre fax v smb.conf zadefinova╗ lpq command (cesta k faxlpq) a lprm command (cesta k faxrm). Teraz sme v situßcii ke∩ faxy prichßdzaj·, odchßdzaj·, Windowsy spolupracuj·, no proste znie to neuverite╡ne, ale je to hotovΘ a funkΦnΘ. Pokia╡ ste spokojnφ, m⌠╛ete k╡udne prejs╗ k ∩al╣iemu (iste zaujφmavΘmu) Φlßnku Linuxov²ch novφn. Ak vßs v╣ak zaujφmaj· podrobnosti, prφpadne chcete funkcionalitu faxovΘho servera e╣te vylep╣i╗, tak sa so mnou v tre╗om kole ponorte do problΘmu e╣te hlb╣ie. A po∩me e╣te hlb╣ie. Tu u╛ bud· informßcie kusej╣ie a nebud· na seba tak nadvΣzova╗, preto╛e sa budeme venova╗ r⌠znym perliΦkßm v r⌠znych Φastiach faxovΘho systΘmu. Najprv si povedzme nejakΘ v╣eobecnej╣ie informßcie: g3 (group 3) je v╣eobecne uznßvanß a pou╛φvanß norma (CCITT) na prenos dßt medzi faxmi. Existuj· dva druhy g3 s·borov. S vysok²m rozlφ╣enφm 204x196 dpi a s nφzkym (normßlnym) rozlφ╣enφm 204x98 dpi. Ke∩ sa tieto rozlφ╣enia pomie╣aj·, tak strßnky faxu bud· bu∩ o poloviΦku krat╣ie alebo 2 krßt dlh╣ie. Mgetty+sendfax vie spracovßva╗ obidva typy rozlφ╣enφ. Jedna strana faxu mß zvyΦajne ╣φrku 1728 pixelov a dσ╛ku (A4) 2100 pixelov. Ak mßte v systΘme nain╣talovanΘ pbm utility, tak s· medzi nimi aj pbmtog3 a g3topbm. Niekde v Φasti In╣talßcia a konfigurßcia mgetty+sendfax som spomφnal, ╛e na konverziu medzi pbm a g3 mßte pou╛φva╗ pbm2g3 (je to v balφku mgetty) a nie pbmtog3. «e preΦo? Jednak pbm2g3 a g32pbm s· r²chlej╣ie ako p⌠vodnΘ programy a jednak pbm2g3 produkuje g3 dßta, ktorΘ spσ≥aj· ╣tandard T.4, Φo nßm umo╛nφ bezproblΘmovΘ posielanie faxov. UrΦite ste si poΦas konfigurßcie inicializßcie modemu v╣imli, ╛e modem musφ ma╗ vypnut² autoanswer (ATS0=0). Linku zdvφha priamo mgetty (parameter rings). PrφΦinou tohto sprßvania okrem inΘho je, ╛e je to vlastne jedinß mo╛nos╗, ako rozlφ╣i╗, Φi prichßdzaj·ce volanie je fax alebo dßta (Φo m⌠╛e by╗ s·Φas╗ou Φiernej mßgie konfigurovania modemu). Ke∩ to modem nevie sprßvne poveda╗, je jedinß mo╛nos╗ nastavi╗ modem a mgetty natvrdo do dßtovΘho alebo faxovΘho m≤du. Sl·╛i na to parameter modem-type. Sendfax (aj faxspool) vedia s niektor²mi faxmodemami robi╗ tzv. fax polling. Je to, ke∩ vy niekomu zavolßte a prφjmete dokument. Je to popφsanΘ v online dokumentßcii v Φasti Fax Operations. ╧al╣ou zaujφmavou vlastnos╗ou je mo╛nos╗ pou╛i╗ extern² fax ako skener. Je to popφsanΘ v online dokumentßcii v Φasti Fax Operations a v s·bore doc/scanner.txt. NiektorΘ telef≤nne spoloΦnosti (slovensk² a ani Φesk² telekom rozhodne nie :-), mo╛no a╛ budeme ma╗ v╣etci ISDN) pon·kaj· slu╛bu caller-id. Je to slu╛ba, ke∩ je k nßm po prvom zazvonenφ prenesenß identifikßcia volaj·ceho ·Φastnφka. Mgetty vie t·to informßciu vyu╛i╗ a na zßklade caller-id prija╗ alebo neprija╗ fax. Pokia╡ je modem vypnut², tak sa mgetty ukonΦφ (preto╛e kontroluje funkΦnos╗ modemu a loguje to). Ke∩╛e mßme v inittabe respawn, tak init po chvφli zahlßsi:
INIT Id "f1" respawning too fast:\ disabled for 5 minutes. Nie je to vß╛na chyba, ale znamenß to, ╛e mßte nieΦo s modemom a asi nijakΘ faxy nepo╣lete ani neprφjmete. Preberme si niektorΘ zaujφmavΘ vlastnosti a mo╛nosti programu faxspool. Ako bolo na zaΦiatku spomenutΘ faxspool vie pod╡a prφpony zisti╗ typ s·boru a potom ho skonvertova╗ do g3 formßtu. Pokia╡ sa mu to nepodarφ, pok·si sa uhßdnu╗ (pou╛itφm magic numbers) tento typ. Faxspool umo╛≥uje pou╛i╗ telef≤nny adresßr. Bu∩ globßlny (/usr/local/etc/mgetty+senfax/faxaliases) alebo individußlny ($HOME/.faxnrs). Formßt s·borov je rovnak²: <alias> <faxovΘ_Φφslo>. Faxspool najprv pozrie individußlny a potom globßlny tel. adresßr. ╧alej nßm umo╛≥uje povoli╗/zakßza╗ kto m⌠╛e alebo nem⌠╛e posiela╗ faxy. Sl·╛ia na to s·bory /usr/local/etc/mgetty+sendfax/fax.allow a /usr/local/etc/mgetty+sendfax/fax.deny. Pokia╡ ani jeden neexistuje, tak posiela╗ faxy m⌠╛e len root. Ak existuje len fax.deny, tak m⌠╛u v╣etci okrem t²ch Φo s· tam vymenovanφ. Ak existuje len fax.allow, tak m⌠╛u (myslφm posiela╗ faxy) len tφ, Φo s· tam vymenovanφ. Tento bezpeΦnostn² model je implementovan² len v programe faxspool, ktor² samozrejme nie je setuid root a /var/spool/fax/outgoing je zapisovate╡n² pre v╣etk²ch. Preto je ve╡mi jednoduchΘ tento model obφs╗ naprφklad t²m, ╛e si tento program niekto skopφruje a kontroly odtia╡ vyhodφ. Toto zabezpeΦenie sa samozrejme t²ka len unixov²ch pou╛φvate╡ov. Ke∩ chcete povoli╗/zakßza╗ windowsov²ch pou╛φvate╡ov, tak musφte pou╛i╗ nastavenia v sambe. V s·bore etc/mgetty+sendfax/faxheader je ulo╛enΘ zßhlavie ka╛dej strany. Faxspool toto zßhlavie preparsuje a nahradφ niektorΘ preddefinovanΘ znaky in²mi. S· to napr.: @T@ - tel. Φ. prijφmate╡a, @P@ - aktußlna strana, @M@ - celkov² poΦet strßn, @U@ - meno odosielate╡a, @DATE@ - dßtum odoslania. ┌pln² popis t²chto znakov (tokenov) nßjdete v manovej strßnke programu faxspool. Je dobr²m zvykom pred ka╛d² fax vlo╛i╗ tzv. cover page (tituln· stranu), kde s· napφsanΘ informßcie o odosielate╡ovi, prijφmate╡ovi a prφpadne nejakß krßtka sprßva. Faxspool toto umo╛≥uje (prepφnaΦ -C). Sk·ste man coverpg. Popisy sp⌠sobu implementßcie prφslu╣nΘho programu (make.coverpg) sa nachßdzaj· v adresßri samples. Tento program nie je defaultne nain╣talovan² a treba to urobi╗ ruΦne pod╡a manovej strßnky. V niektor²ch verzißch faxspoolu je zle definovan² prφkaz echo. Sp⌠sobφ to potom ╣kared² v²pis niektor²ch textov napr. helpu (neinterpretuj· sa escape prφkazy ako \t). V mojom faxspoole (verzia 1.1.15) to je na riadku 80. Sk·ste si vyh╡ada╗ prv² v²skyt slova echo. Malo by tam by╗ echo="echo -e". Balφky respond+printfax.pl tie╛ umo╛≥uj· pou╛φva╗ telef≤nne zoznamy a aliasy. Ke∩ namiesto tel. Φ. vlo╛φte @<nieΦo>, tak sa to <nieΦo> pou╛ije ako meno s·boru vo va╣om domovskom adresßri (samozrejme v unixe, ale mßme sambu tak ho m⌠╛eme zdie╡a╗ s Windowsami) a jeho obsah sa pou╛ije ako zoznam tel. Φ. prijφmate╡ov. JednotlivΘ polo╛ky zoznamu m⌠╛u by╗ oddelenΘ Φiarkou alebo medzerou. Ak <nieΦo> zaΦφna lomφtkom (/), tak sa to berie ako absol·tna cesta. Podrobnosti a inΘ vlastnosti nßjdete v readme.txt, ktorΘ by ste mali ma╗ u╛ stiahnutΘ. Na tom istom mieste sa nachßdza aj s·bor fprintfax, ktor² m⌠╛e sl·╛i╗ na faxovanie cez unixov· tlaΦiare≥. Dß sa ako filter do tlaΦiarne a potom funguje ako printfax.pl. InΘ zaujφmavΘ nßstroje nßjdete v adresßroch contrib a frontends. V contribe s· naprφklad nßstroje na lep╣iu integrßciu TeXdvi a faxspoolu. Vo frontends s· r⌠zne prezeraΦe a pomocnΘ vstupnΘ (na vytvßranie dokumentov) a v²stupnΘ (na spracovanie poslan²ch faxov) programy. Je tam napr. nßstroj na integrovanie faxovania do Emacsu, mail to fax gateway, X-Window prezeraΦ faxov (viewfax - ak posielate faxy len z unixu, odpor·Φam), WWW prezeraΦ a posielaΦ faxov (adresßr WWW), inΘ rozhrania ako respond do Windowsov a v adresßroch winword a winword2 dva sp⌠soby (ktorΘ som na zaΦiatku Φlßnku zavrhol ako netransparentnΘ a neuniverzßlne), ako faxova╗ z MS Wordu. Nakoniec spomeniem e╣te nieΦo z vlastnej tvorby. M⌠j kolega Pi╣ta porobil nejakΘ ·pravy a skripty, ktorΘ by mohli by╗ u╛itoΦnΘ aj Vßm. Prvß ·prava sa t²ka toho, ╛e printfax.pl ╣tandardne cez winpopup po╣le informßciu o tom, Φi bol dan² fax dan² do spoolu. To je v poriadku. Potom v╣ak faxrunqd po╣le faxadminovi mail (v unixe) o ·spechu alebo ne·spechu odoslania. Ale pou╛φvate╡ o tom niΦ nevie a musφ sa stßle p²ta╗ faxadmina na stav faxu. Preto sme urobili drobnΘ zmeny (t²kaj· sa programov printfax.pl, faxpool a faxrunqd), ktorΘ sp⌠sobia to, ╛e sa winpopom po╣le na pracovn· stanicu, odkia╡ pri╣la po╛iadavka, sprßva o stave faxu. Druh² nßstroj, ktor² sme vytvorili, je WWW archφv a prezeraΦ faxov. Umo╛≥uje prezera╗, tlaΦi╗ a opakovane posiela╗ prijatΘ a odoslanΘ faxy, ako aj prezera╗ stav spoolu. Ke∩╛e sa mi nepodarilo (zatia╡) Doeringa presvedΦi╗, aby t· informßciu o stave faxu (cez winpopup) dal do distrib·cie mgetty, tak si m⌠╛ete patche stiahn·╗ z adresyftp://ftp.idata.sk/pub/unix/fax/. Na tom istom mieste nßjdete aj WWW archφv. Tento text bude mo╛nΘ v Φase vyjdenia tohto Φlßnku (d·fam) nßjs╗ na adrese http://www.idata.sk/~robo/fax/.
ZßveromPod╡a m⌠jho nßzoru je toto rie╣enie plnohodnotnß a finanΦne nenßroΦnß (ale napriek tomu dokonale funkΦnß) alternatφva k akΘmuko╡vek komerΦnΘmu rie╣eniu pre r⌠zne platformy.![]() |