茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671424 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_00061.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

小企鵝開談 : [轉貼]用Linux(FreeBSD)當Windows的Fax Server

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]用Linux(FreeBSD)當Windows的Fax Server
用Linux(FreeBSD)當Windows的Fax Server
Preamble: 
This document is copylefted by Fengchou Li (sl6xx@luxent.com.tw). 
Permission to use, copy, distribute this document for 
non-commerical purposes is hereby granted, provided that the 
author's name and this notice appear in all copies and/or 
supporting documents; that this document is not modified. This 
document is istributed in hope that it will be useful, but 
WITHOUT ANY WARRANTY, either expressed or implied. While every 

effort has been taken to ensure the accuracy of the information 
documented herein, the author assumes NO RESPONSIBILITY for 
errors, or for damages results for the use of the information 
documented herein. 

本文作者保此文章之版權。本文件歡迎任何非商業用途之使用、復制或散布, 
唯需注意需附上原作者與這段注意事項,且使用者不得修改此文件。作者散布 
此文件的目的乃是希望此文件能夠有所用處,但無論是在此文章內明白表示或 
由其內容意含推論而得之結果,作者皆無法保証對任何人能達到此的目的。作 
者已盡一切努力達成此文件內容之正確性,但任何因使用此份文件所導致之直 
接或間接之損害,作者將不負任何責任。 
  

此文章獻給Synnex Taichung的淑君--讓我了解蕭邦寫作Piano Concertos 
Nos. 1 & 2 時的心情的人... 


之前曾看到有交大(?)的同學提出以FreeBSD當Intranet Server的專題,不 
過似乎缺少了企業實際運用上也很需要的Fax Server。在此將自己把Linux 
當Fax Server的經驗拿出來與大家分享。如果您有更好的資訊,也歡迎提 
出來共同討論。因為這些package在FreeBSD上也都有,所以我想,這裡討論 

的東西在FreeBSD上應該也可以運作無誤。(雖然我也有一部FreeBSD的 
Server,但是我沒有在上面試過,太累了...) 

這裡討論的情形,是以一部Linux當Fax Server服務多部Win95的情形。 
Linux也不是不能當NT的Fax Server,只不過Respond這支client端的程式 
無法正確在NT底下運作。(也許有人有興趣寫一個?!)無論如何,Samba當 
95/NT的File/Printer Server還是非常好用的。 

基本上,用Samba當Win95的Fax Server和Printer server的方法是一樣的。 
需要被傳真出去的文件,您可以把它當成列印到網路印表機般的送給Samba 
Server。像其他掛在Samba底下的印表機一般,您也可以在網路芳鄰上看到 
這部(實際上是傳真機的)印表機。這部傳真機收到列印的資料,會回頭來 
找Win95 Client問傳真的電話號碼,然再把傳真發送出去。至傳真的接 
收,是利用mgetty+sendfax把incoming的傳真收下來,再用E-mail的方式轉 
給指定的user。 

您必須有一部已經架設好且可以正常運作的Samba Server。關架設Samba 
的文件已經有很多討論了,所以就不贅述了。不過有一個小小建議,就是最 
好架設有WINS server,可以讓您省掉很多Browse的麻煩。 

其次,您也必須架設mgetty+sendfax這套軟體。關mgetty+sendfax這套 
軟體,我不打算在這裡詳細討論它。之前已有網友Steve Chen 
(steve.bbs@heaven.stat.tku.edu.tw)發表的大作討論過。不過關傳真部 
分的設定,我還是會在下文中加以大略說明。 
  


需要的軟體如下: 

1. Samba 1.9.16p11: ftp://nctuccca.edu.tw/packages/networking/samba 
(含samba以及BIG-5中文patch) 
2. Mgetty+Sendfax : http://wais.leo.org/~doering/mgetty 
3. GhostScript: ftp://ftp.cs.wisc.edu/ghost/(一般的Linux或FreeBSD 
的光碟片均有附) 
4. Respond 1.4a (For Win95): 
http://www.boerde.de/~horstf/download/resp14a.zip 
5. Printfax.pl v1.3.2: http://www.boerde.de/~horstf/download/printfax.pl 
(當然,您的Server需裝有Perl)。 
6. Paint Shop Pro v4.12 (For Win95): 在Win95上看FAX用的,什地方可以 
download應該不必講吧?! 
  

1. Samba Server的設定 Part I 

在打算提供傳真服務的機器上,您必須修改smb.conf檔案來增加傳真服務。以我的 
機器為例子,有一段類似底下的設定。說類似,是因為這只是為了方便說明的初步 
的設定,等一下我們還會回頭來加上其他的設定。 

[fax] 
comment = Fax Server 

force user = root 
postscript = yes 
print command = /usr/bin/printfax.pl %I %s %U %m 
printable = yes 
printer name = fax 
writable = no 
path = /tmp 
valid users = sl6xx 
write list = sl6xx 

這一段在samba上加了一台叫做fax的印表機。samba server收到client端 
傳來的資料,會執行/usr/bin/printfax.pl這個perl script去處理這 
傳來的資料。 %I, %s, %U, %m等是samba的參數,請參閱samba的文件。 

這裡比較值得說明的是print command這一行。一般我們用samba來當 
printer server,可能會寫成像是 

print command = lpr -s -r -P%p %s ; rm -f %s 

不過因為我們要把這個share當成傳真機,所以當然不能用lpr而必須找其 
他的程式來處理列印的資料。這個程式就是printfax.pl了。 

提到printfax.pl,這是Printfax.pl v1.3.2裡面的主菜:一個perl script。 

您在把它cp到/usr/bin底下,還必須稍加修改裡面的內容。主要是修改一些 
它會執行到的程式的路徑。由我的pintfax.pl已經修改很久了,也忘了改了 
哪些路徑,麻煩大家自己找找看吧! 

至valid users,是允許哪些使用者使用這個服務。sl6xx則是我的ID,請不 
要照抄。(就算是作弊,也不能連名字也照抄吧! 8-)因為我們內定的讀寫權是 
writable=no。也許您不希望每個人都能用這些設定吧! 
  

2. 修改mgetty+sendfax的設定檔: 

如果按照mgetty+sendfax的內定值,裝好它的設定檔應該是在 
/usr/local/etc/mgetty+sendfax/底下(FreeBSD的port可能不一樣吧?!) 
首先在mgetty.config裡面加上您的fax設定。假設我們的fax number是 
04-9876543,fax modem接在COM2。現在我們想在傳出去的fax表頭加上 
fax number 886 4 9876543,則要在mgetty.config加上這一行: 

fax-id 886 4 9876543 
  

數據機的設定如下: 

port ttyS1 
init-chat "" ATZ OK ATQ0V1E0 OK ATL0M0&K3S0=0 OK 
speed 115200 
switchbd 19200 
  

關數據機的設定,mgetty+sendfax的文件裡面討論了不少,建議一定要 

看,不同的作業系統及不同的數據機會有不同的設法。這裡寫的是Linux底 
下,使用聯強的33.6K數據機。switchbd這一行比較特殊,是針對使用 
Rockwell晶片,而且傳真會碰上問題的數據機。請您自個兒RTFM吧!附帶一 
提的,聯強的數據機前用的晶片不一樣,好像有Rockwell也有Cirrus的, 
我不清楚其他廠牌的是否也如此。此外,為何用ttyS1而不用cua1或modem, 
mgetty的文件有說明,若OS是FreeBSD又不一樣了! 

接下來修改sendfax.config。首先必須告訴mgetty用哪一部數據機(應該 
是說用哪一個port)來收發傳真。用COM2的話,應該如此設定: 

fax-devices ttyS1 

如果您的COM1/COM2都接上了數據機,而且都想用來收發傳真的話,必 
須這寫: 

fax-devices ttyS0:ttyS1 

也許您已經用mgetty+sendfax在當PPP server了。沒有關系,mgetty 
會自動判別。像我用Multi-Port Card就是 
fax-devices ttyS16:ttyS17:ttyS18:ttyS19:ttyS20:ttyS21:ttyS22:ttyS23 

別忘了,/etc/inittab裡面的mgetty設定不可以加上"-D"這個參數,否則就 
不會接傳真了。 

接下來是誰可以發傳真的設定。請在/usr/local/etc/mgetty+sendfax底下 
加上fax.allow這個檔案,裡面是可以發傳真的user id,一行一個。 

mgetty+sendfax的一堆config檔案屬性都必須是0600,否則mgetty不 
會work。 


接收fax方面,在mgetty+sendfax的package裡面附了一堆shell script, 
但是內定並沒有安裝,您必須在tar開mgetty的package,自己進到 
samples裡面去找。我是用new_fax.mail這個script再稍加修改如下並將之 
copy到/usr/local/lib/mgetty+sendfax/底下。記得檔名要改成 
"new_fax"。我的"new_fax"如下,只改了兩個地方。faxadmin是用來收這 
E-mail的alias。另外原來的script有先把fax用gzip壓過,我因為要直接在 
Win95底下看/印,就把它拿掉了。 

#!/bin/sh 

# sample script to automatically convert incoming faxes to pbm, uuencode 
# and gzip them, and send them to "MAILTO". 
# (FAX_NOTIFY_PROGRAM in policy.h) 

gert@greenie.muc.de 

MAILTO="faxadmin@domain.com.tw" 
MAILER=/usr/lib/sendmail 

PATH=$PATH:/usr/local/bin 
G3TOPBM=g32pbm 


HUP="$1" 
SENDER="$2" 
PAGES="$3" 

shift 3 
P=1 


while [ $P -le $PAGES ] 
do 
FAX=$1 
RES=`basename $FAX | sed 's/.\(.\).*/\1/'` 

if [ "$RES" = "n" ] 
then 
STRETCH="-s" 
else 
STRETCH="" 
fi 


echo "Subject: fax from $SENDER, page $P of $PAGES" 
echo "To: $MAILTO" 
echo "" 
$G3TOPBM $STRETCH $FAX \ 
| uuencode `basename $FAX`.pbm 
) | $MAILER $MAILTO 

shift 
P=`expr $P + 1` 
done 

exit 0 
  

3. Win95 Client的設定 

其實原來在Samba的site上面也有一份文件,說明如何用Samba來當成Fax 
Server,不過您必須在送出的文件上用特殊的格式打上WFax Number,並不 
方便。(老實說,我沒有用過那種方法!)現在我們要用的方法,則是Win95 

送完資料,回過頭來讓server問我們該傳哪個地方。Respond 1.4a就是 
這樣的程式。當您在Win95的機器上執行它,它便會監聽port 5555(要 
跑samba您的Win95至少得裝上TCP/IP吧!)。當samba收到列印資料,會 
執行printfax.pl來連上client的port 5555。這時Respond這支程式便會 
pop out。所以Respond程式的說明就是要您在裝好並執行它,從fax 
server上telnet您Win95機器的port 5555,看看是否Respond是否會回應。 
這是個德國程式,不過有英文的說明檔。 
  

再來是該送什資料給samba/mgetty來發傳真。當您照第一步的說明設定 
好samba,再送個HUP的signal給smbd/nmbd,您應該可以從Win95網路上的 
芳鄰看到server上多了一部叫做fax的印表機。既然要送資料到印表機,當 
然是要新增印表機了。關鍵在要讓mgetty傳真的資料最好是postscript 
格式。所以我們就來增加一部網路上的postscript印表機吧。 

請注意一下,實際上這部postscript印表機是不存在的。我們的目的是要 
讓印出來的資料是postscript的格式。我自己是選擇Apple LaserWriter。 
接下來是要點,因為M$的postscript implementation是很buggy的--這是 
和mgetty作者Gert, Mr. mgetty, Doering討論得出來的結果,所以我們 
必須把印表機的內容那一頁的PostScript格式改成"保存格式"。您可以試 
試看其他的PostScript印表機看看。歡迎您把結果告訴我! 

4. 從Win95收FAX 


從Win95上面收FAX是非常簡單而且直接的。由前面說明過的設定,Mgetty 
會把Fax轉成pbm檔再uuencode,再mail給指定的使用者。我個人是利用 
Netscape 4.02來收信,(因為我用IMAP而不是POP3,您高興也可以用其他可以 
直接decode的mail client,之前我就是用Internet Mail)。直接收過來 
decode,如果您有設定讓Paint Shop Pro來處理pbm格式的檔案的話,就可 
以直接看或印了。 

mgetty+sendfax除了會把進來的fax轉成e-mail外,所有傳進傳出的fax留一 
份在/var/spool/fax底下(包括您從Win95傳過來的),我習慣把它們備份到 
MO片上,再把原來的舊fax清掉。 
  

5. Samba Server的設定Part II 

其實我的smb.conf中,關fax的設定是這個樣子的: 

[fax] 
comment = Fax 
force user = root 
postscript = yes 
print command = /usr/bin/printfax.pl %I %s %U %m; rm %s ; 
/usr/local/bin/faxrunq 
printable = yes 
printer name = fax 
writable = no 
path = /tmp 

valid users = sl6xx 
write list = sl6xx 

和前面不一樣的地方是print command這一行多了兩個指令。rm %S是把列印 
過去的spool暫存檔案刪除。這還不是要點。最重要的,是面的faxrunq。 
原來mgetty在收到fax的資料,是先spool起來,等到執行faxrunq再撥 
號送出去。所以您也可以不在這邊執行faxrunq,而用其它的方式,例如用 
cron daemon來設定定時傳送。我是習慣直接傳出去所以把faxrunq直接寫在 
print command的最面。 
  
  

6. 記 

到此為止,應該所有的功能都能正確運作了。這樣子的方式,優點當然 
是省錢了。軟體不用錢,data/fax共用電話線,... 
不過這種方式也有缺點(不知道算不算是?),就是spool起來的傳真,萬一 
要砍掉,只能從server上面去砍。這一點對我們用Linux/FreeBSD的人並不 
是什大事。不過既然是用在Intranet,而且又是Win95的Client,一定是 
有一堆unix-phobia的user,(搞不好不止是unix-phobia,還是computer- 
phobia)必須靠root來幫他們。所以,對搞不定Unix的人,最簡單的方法, 
還是在Win95底下跑Exchange然share出來吧! 

除了mgetty+sendfax以外,還有一些傳真的程式,像是 
efax (http://www.picante.com/~gtaylor/pht/man/efax.html), 

而HylaFax(http://www.vix.com/hylafax/toc.html)也附有Win95的Client程 
式。不過我因為是先用mgetty架PPP Server的嘛,就順理成章用它的fax了。 
也許有網友願意來討論一下efax、HylaFax。 

這裡還有一個類似功能,不過要付錢的軟體:ESEMfax,詳細資料可以到這裡: 
http://www.esem.com/esemfax.html 

有關mgetty+sendfax,有一個news group是專門討論它的: 
de.alt.comm.mgetty。雖然是de開頭,但是這一區是用英文進行討論而非德 
。另外,mgetty+sendfax的作者Gert Doering實在是一個非常熱心的人。 
http://www.leo.org/~doering/有他帥哥的照片。如果您有mgetty+sendfax 
的問題,可以用英文發email到gert@greenie.muc.de 問他。不過記得要發問 
之前,先把您mgetty的debug level調高一點,然附上mgetty的log message。 
不知道Mr. Mgetty看到我叫一堆人去煩他會有什感想? 
  

7. 參考資料 

Samba Man Pages: http://lake.canberra.edu.au/pub/samba/samba.html#Docs 

Mgetty+sendfax Documentation: 
http://www.leo.org/~doering/mgetty/index.html 


Respond README.TXT: http://www.boerde.de/~horstf/download/readme.txt 

Linux Printing HOWTO: 
http://sunsite.unc.edu/LDP/HOWTO/Printing-HOWTO.html 

Linux Serial HOWTO: http://sunsite.unc.edu/LDP/HOWTO/Serial-HOWTO.html ? 
( http://www.fanqiang.com)

原文出處: [ 永遠的UNIX > 用Linux(FreeBSD)當Windows的Fax Server ]
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|