完整介紹hylafax安裝及設定
作者:csc@ocean-pioneer.com
建立日期:2003/04/05
更新日期:2009/03/23

注意的問題
RedHat9.0的問題,如果你要使用本文下面的faxrcvd,則 metasend並沒有在套件中,你可以自己下載metamail套件及安裝,否則將無法執行mail的傳送問題,再者faxrcvd的參數是6 還是4要參考原始安裝的faxrcvd
目前版本為了和一般的軟體設定相同在/etc建立了hylafax的目錄
當你設定好要更新時請記得要先備份faxrcvd
硬體設備建議使用外接式數據機,不要使用內接式的數據卡,而外接式數據機最好 能支援class2或2.0

FAQ:
  1. 傳真和電話有什麼不一樣?
    傳真和一般的電話都是利用電話線路,因此只要是電話線路就可以來當傳真使用,但是傳真使用自己的通訊協定,必須另外加一台終端設 備(數據機+電腦軟體或傳真機等)才可以收送傳真
  2. 為什麼需要傳真伺服器?
    一般在買數據機時會包含了一些傳真的軟體,你可以使用它,也十分好用,但是在公司時你總不會為每一個人裝一台數據機一條電話線,及一套軟體吧,而且電腦要一 直開著才可以,因此共用一台來收送不是比較好嗎?把他當做一般的傳真機看,是相同的道理
  3. 這堜瓵蛌熄ヵu伺服器是什麼?
    我們這堜w義的傳真伺服器的運作流程如下:
    電腦->區域網路->linux傳真伺服器->數據機->電話網路->對方公司的傳真機

以下就 linux fax伺服器及windows client之設定做說明 :
  1. 下載軟體:
伺服器的軟體(hylafax)
請至www.hylafax.org下載程式,本網站還包含了相關程式網站 鍵結及文件
註:你可以看到一雙綠色青蛙(hyla)就是一種雨蛙的名稱
  1. 安裝:
  2. 載檔案linux伺服器端的程式後執行rpm -ivh 檔案名稱
  3. 設定:
    1. 確定數據機

    2. 檢查數據機是否裝好,電源是否打開,及連接埠是那一個(一般是ttyS0)
      ,在linux下com port去出一般稱"cua?",進來的叫"ttyS?" 因為com port具有雙向的功能然而現在
      己經合併使用ttyS?來代表serial port (問號是以0開始遞增的數字) 例如:
      內定為COM 1ttyS0,COM 2ttyS1(請注意大小寫,是有分別)
      有時我們會以modem鏈結到ttyS?
    3. 執行faxsetup
    4. 首先會秀出一些說明,接著第一個問題是
      You do not appear to have a "fax" user in the password file.
      HylaFax needs this to work properly. add it [yes]?

      新增一個使用者fax,YES 按enter
      Should an entry be added for the FaxMaster to /etc/aliases [yes]?
      在/etc/aliases加入別名,YES 按enter
      Users to receive fax related mail [root]?
      root將收到的傳真相關的mail(如果統計報表等) ,enter
      Country code [1]?
      電話國碼886(台灣)輸入886 enter
      Area code []?
      區碼(台北2)(就是02去掉0) 輸入2 enter
      Long distance dialing prefix [1]?
      長途碼 0 ,輸入0 Enter
      International dialing prefix [011]?
      國際電話前置碼002,輸入002 Enter
      Dial string rules file (relative to /var/spool/hylafax)["etc/dialrules"]?
      撥號規則檔設為/var/spool/hylafax/etc/dialrule,按enter
      Tracing during normal server operation [1]?
      啟動除錯選項按enter
      Default tracing during send and receive session [0xfffffffff]?
      收送傳真的除錯,我也不懂按enter吧
      Continuation cover page (relative to /var/spool/hylafax) []?
      設定封面的頁的所在目錄,enter
      Timeout when converting PostScript documents (secs) [180]?
      設定轉換為ps文件的逾時時間180秒,enter
      Maximum number of concurrent jobs to a destination[1]?
      最大同時傳送一個目的的工作數,當然是1了
      Define a group of modems []
      除非你有好幾台數據機,enter
      Time of day restrictions for outbound jobs ["Any"]?
      限制外送傳真的時間Any(任何時間),enter
      Pathname of destination controls file (relative to /var/spool/hylafax) []?
      所有安裝目的控制檔的所在目錄 相對於/var/spool/hylafax,enter
      Timeout before purging a stale UUCP lock file (secs) [30]
      好像不使用了,按enter
      Max number of pages to permit in an outbound job [0xffffffff]
      外送傳真的最多頁數,enter
      Syslog facility name for ServerTracing messages [daemon]?
      相關於記錄檔是記錄在/var/log/messages中
      接著秀出你先前的設定問你要不要更改
      沒錯的話就按enter
      Restarting Hylafax server process.
      Should I restart the Hylafax server process [yes]?

      要啟動hylafax了,按enter
      You do not appear to have any modem configured for use. Modems are
      ocnfigured for use with HylaFax with the faxaddmodem[8C] command.
      Do you want to run faxaddmomdem to configure a modme [yes]?

      你尚未指定任何數據機.現在是否要設定使用faxaddmodem命令(這個命令可以新增數據機),Enter
      Serial port that modem is connected to []?
      數據機的連接埠一般為ttyS0
      country code[1]
      886
      Area code [415]?
      (台北,基隆) 2
      Phone number of fax modem [+1,9999.5555.1212]?
      你數據機所接的電話號碼,+1是國碼(台灣+886)逗點後面就是區碼加電話號碼
      Local Identifications string (for TS/CIG) ["NothingEtup"]?
      傳真機的識別ID,一般使用電話號碼或是公司的英文縮寫不可太長 如 sony,當你傳真
      時顯示在對方傳真機LCD的字
      Long distance dialing prefix [1]?
      0
      International dialing prefix [011]?
      002
      Dial string rules file (relative to /var/spool/hylafax) [etc/dialrules]?
      enter
      Tracing during normal server operation [1]?
      enter
      Tracing during send and receive sessions [11]?
      enter
      Protection mode for received facsimile [0600]?
      收到傳真的檔案權限,如果你要以samba開放目錄,讓使用者讀取請最好改為0644
      Protection mode for session logs [0600]?
      記錄檔的檔案權限
      Protection mode for ttyS0 [0600]?
      連接埠的存取權限
      Rings to wait before answering [1]?
      enter
      Modem speaker volume [off]?
      enter
      Command line arguments to getty program ["-h %l dx_%s"]?
      enter
      Pathname of Tsi access control list file (relative to /var/spool/hylafax)[""]?
      Tsi存取控制檔的目錄所在
      Pathname of Caller-ID access control list file (relative to /var/spool/hylafax)[""]?
      Caller-ID 存取控制檔的目錄所在
      Tag line font file (relative to /var/spool/hylafax) [etc/lutRS18.pcf]?
      所有的傳真最上面有一行包含了(送件人,收件人,日期,公司等)資料我們稱為tag line所使用的字型
      Tag line form string ["From %%1|%c|Page %%P of %%T"]?
      Tag line的格式
      Time before purging a stale UUCP lock file (secs) [30]?
      enter
      Hold UUCP lockfile during inbound data calls [Yes]?
      enter
      Hold UUCP lockfile during inbound voice calls [Yes]?
      enter
      Percent good lines to accept during copy quality checking [95]?
      enter
      Max consecutive bad lines to accept during copy quality checking [5]?
      enter
      Max number of pages to accept in a received facsimile [25]?
      (一次)傳真進來的最大可接收頁數
      Syslog faxility name for ServerTracing messages [daemon]?
      enter
      Set UID to 0 to manipulate CLOCAL [""]?
      enter
      Use available proiority job scheduling mechanism [""]?
      enter
      Are these ok [yes]?
      上述設定對不對

      接下來........

      Probing for best speed to talk to modem:
      測試你的數據機的速度,請選擇數據機使用class 1不管它是否支援class2 或是class2.0會比較不會有問題,
      如果你的支援且要使用2或2.0,最好是監測fax server數天或數週,因為和不同傳真機溝通過程中可
      能會出現問題(傳完後掛不斷,在溝通後立即斷線等)
      不同的傳真機或數據機支援不同的class,但是便宜機器一般只支援class 1,且有一些bug會存在因此我測試的結果最好是使用class1
      #很多人常問到它的數據機,無法正常的收送傳真:在/var/spool/hylafax/config中有不同的晶片組的設定檔,你可以到網路查詢你的
      數據機的晶片組,使用上述目錄的相關設定檔來測試
       


  4. hylafax的檔案結構
    1. 所有的設定檔主要目錄是放在/var/spool/hylafax有的是/var/spool/fax

    2. 如果你要查詢所有的hylafax檔案所在的,請打rpm -ql hylafax
      假設目錄在/var/spool/hylafax
      其重要目錄說明如下:
      bin 這裡存放一些程式,如收傳真,及不同格式的轉換程式等
      config 數據機的樣本設定檔
      etc 所有真正的設定檔
      pollq,docq,doneq,
      sendq,recvq
      所有的queue
      log 記錄了每一筆的收送的交談內容
      info 記錄了每一台曾經收送的傳真機(有call id)的一些參數,以加速傳真不用再查詢一次
      status 傳真機的狀態檔
    3. bin

    4. faxrcvd 收到傳真所要做的動作(收到傳真內定會送給FAXMaster一封信內使用超連結(ftp)來取回傳真檔
      我們可以修改其收到傳真的方式,如將傳真以附件檔寄給你,或是送到印表機等
      notify,notify.awk 收送傳真的通知動作
      pdf2fax 將pdf檔轉為可傳真的格式tiff class F
      ps2fax 將ps檔轉為可傳真的格式tiff class F
      tiff2fax 將tiff傳為可傳真的格式tiff class F
    5. etc

    6. config.* 你的連接埠的設定,config.連接埠的名稱,如config.ttyS0
      hosts.hfaxd client存取傳真伺服器的設定檔
      lastrun 傳真伺服器最後收送的時間
      setup.modem 測試數據機的程式
      lutRS18.pcf tag line的字型檔
      xferfaxlog 收送傳真的記錄檔
    7. status

    8. any.info 你的hylafax的版本資料
      ttyS0 依你連接埠的名稱而有不同,內容為傳真伺服器的狀態

  5. 基本操作
    1. 新增使用者

    2. faxadduser #其實它就是在/var/spool/hylafax/etc/hosts.hfaxd加入使用者
      例如:
      faxadduser -p password username
      faxadduser username #不指定密碼則密碼是空白的(只要user對了不用密碼就可以傳真)
    3. 刪除使用者

    4. faxdeluser #在/var/spool/hylafax/etc/hosts.hfaxd刪除使用者
      例如:
      faxdeluser username
    5. 查詢傳真機的狀態

    6. faxstat 查詢/var/spool/hylafax/status/ttyS0內容
      faxstat -r 查詢/var/spool/hylafax/recvq 收到的傳真
      faxstat -s 查詢/var/spool/hylafax/sendq 等待傳送的傳真
      faxstat -d 查詢/var/spool/hylafax/doneq 完成的傳真
      (指令好像無法正確回應)

    7. 查詢傳真的報表(本月以內)

    8. xferfaxstats 其實它是依據/var/spool/hylafax/etc/xferfaxlog檔案來分析
      必須要有root或是fax的權限才可以執行
    9. 送傳真(snedfax)

    10. 在faxserver可以使用命令列來送傳真,其命令是sendfax,可以直接使用的檔有文字檔(不支援中文),如果要有中文必需使用bg5ps將其轉換 才可以
      ps檔,pdf檔,tiff檔
      sendfax -n [-d 傳真號碼] 檔案名稱 #-n 不使用封面檔
      sendfax -n -d 1234567 -d 2345678 mytestfile #可指定多個傳真號碼
      sendfax -n -d 1234567 -a 時間 mytestfile #可以使用-a 排程
      由於選項過多因此其它請自己參考man sendfax
    11. 移除尚未傳送的傳真(faxrm)

    12. 一般來講自己只可以移除自己的傳真,除非你有管理者的權限,在傳真工作交付hylafax會傳回一個工作id 你可以根據工作id來刪除它
      faxrm id
    13. 新增數據機(faxaddmodem)
      根據互動式交談設定之
  6. whfc設定(Windows HylaFax Client尚有其它的軟體可以使用,你可以在sourceforge.net上搜尋)

(wiin xp/2000建議不要使用本程式,因為要先執行wfhc的程式才可以傳真)
一般的傳真軟體都是使用列印傳真,其好處是不管原來是那一種格式都會轉成同一種格式ps
再傳送到fax server上等待傳真
安裝時選unstanrd將德文版的部份取消(有時會造成顯示錯亂)
      安裝完畢後:
    新增印表機 http://www.frogfax.com/modules/spxsection/item.php?itemid=7
    95->apple laser writer
    98-> apple laser writer 16/600 ps
    port:WHFC FAX : (WHFC faxprinter port)

    設定whfc
    1. 先在server上執行faxadduser test
    2. 請在程式集whfc執行 whfc
    3. 在fax選單中選user preferences 填入name:test,login:test,e-mail:test

    4. HYLAFAX基本上是以E-MAIL來通知使用者你所交付傳真的狀況
    5. 在fax 選單中選system preferences 填入host name 可填入ip(裝有hylafax的linux server)
    現在使用列印到apple laser writer 印表機時會有呼叫whfc填入號碼就可以傳真了
  1. 接收傳真的設定

  2. hylafax的收/送傳真是分開設定的如下介紹如何設定接收部份
    要設定接收傳真必須使用faxgetty 詳細的內容可以使用man faxgetty
    請在/etc/inittab中找到#run gettys in standard runlevels下
    加入一行7:2345:respawn:/usr/sbin/faxgetty ttyS0 #其中ttyS0是你數據機的連接埠
    如此faxgetty便可以監聽ttyS0以便回應傳入的要求
    重新開機
    #新版的linux改用upstart來取代inittab ,
    因此改用下面的方法:
       /etc/event.d
      在本目錄建一個檔案叫ttyS0內容如下:
      start on runlevel 2
      start on runlevel 3
      start on runlevel 4
      start on runlevel 5

      stop on runlevel 0

      respawn
      exec /usr/sbin/faxgetty ttyS0
  3. 收 到傳真轉為mail的副件寄給使用者-(目前程式有個功能FaxDispatch(派發收到傳真)
    修改收到的傳真變成e-mail寄給一堆人,只要修改/etc/hylafax/etc/FaxDispatch中的檔案格式(我有試過tif,及 pdf),及別名/etc/aliases中 Faxrecv,其中的收件人就可以收到傳進來的傳真,可以是pdf也可以是tif的格式

  4. *現在可以收傳真但是,我想將傳真直接e-mail給使用者則管理接收傳真後的通知程式位於
    /var/spool/fax/bin/faxrcvd,修改其通知部份為使用metasend這個軟體其內容為下:
    ============================================================================
    #! /bin/sh 
    # faxrcvd file devID commID error-msg
    # 變數為四個最新版已經改為6個

    if [ $# != 4 ]; then
    echo "Usage: $0 file devID commID error-msg"
    exit 1
    fi
    test -f etc/setup.cache || {
    SPOOL=`pwd`
    cat<" -f $FILE -m image/tiff -s "FaxGetty $SENDER" -S 4000000 -t $TOADDR
    #刪除收到的檔案(其實不刪除hylafax也會自動七天後刪除,要依的收到的量為主,收到傳真量大
    #則每收一通刪一通
    rm $FILE
    這是我後來修改的,另外將收到的傳真依時間給標題
    RECV_DATE=`date +%c` 
    metasend -b -F "Hylafax 傳真接收代理" -f $FILE -m image/tiff -s "$RECV_DATE $SENDER" -S 4000000 -t $TOADDR
    ==========================================================================================
    metasend使用參數
    -b 非互動式(批次模式)
    -F 送件者
    -f 檔名
    -m 指定MIME-type(image/tiff)
    -s 標題
    -S 超過大小分割郵件(不指定也可以)
    -t 收件人,因為此程式設為FaxMaster,只要在/etc/aliase加入 FaxMaster: e-mail1,e-mail2
    就可以指定多個收件人


  5. 如果你是用分機來做fax server.

  6. 1. 不要檢查撥號音
    2. 外線撥0或9
    ModemDialCmd: ATDT9W%s #撥 9
    ModemDialCmd: ATDT0W%s #撥 0
     

雜項:
hosts.hfaxd的格式:
除了一般主機的名字外使用者的格式為
client:uid:passwd:adminwd(簡易設法只設名字)
-------------------------------------------
test
my
teddy
===========================================
即可
目前這個檔案格式有變,請使用faxadduser /faxdeluser,其內容我看變為如下
^test@

win98看tif檔的程式
最好的程式是98內建的程式,我試過大部份別的透圖軟體,均不及格(顯示的比例有誤)
在win98我的電腦->控制台->新增移除程式->windows 安裝程式->選附屬應用程式->imaging
將其打勾裝上去,就可以看tif檔
tif的好處是分頁

為什麼要設定列印傳真
一般的client 軟體是利用Apple Laser Writer(印表機的驅動程式)將原始資料列印為ps檔,再將這個檔案傳送到hylafax來傳送
這樣我不管是什麼資料都可以傳送

收到傳真後列印
會使用到fax2ps 及 gs 
先用fax2ps將收到的傳真轉為ps,再使用gs 處理後印出來(印到那塈A自己決定)
修改faxrcvd內容中metamail那一行以下面這一行取代,再依據自己環境更改
/usr/bin/fax2ps $1 | gs -q -sDEVICE=ljet3 -dNOPAUSE -sOutputFile=- | lp

統計報表
在你裝好之後它會在/etc下的crond.daily及crond.hourly各加入一個檔hylafax,
在crond.daily使用程式faxcron的工作後送一份統計報表給faxmaster
在crond.hourly使用程式faxqclean清除一些舊的收送檔
以上你均可以也可以手動操作

使用samba的印表機來傳真
有一種方法是使用samba分享的印表機來傳真
其原理是在samba建立一個虛擬印表機,一收到ps檔後會email送給使用者一封信(因為尚未指定傳真號碼)
使用者由email-link到網頁,再由網頁輸入傳真號碼,正式交付傳真
請參考http://inconnu.isu.edu/~ink/new/projects/smbfax

其實hylafax上面的HYLAFAXFAQ有詳細的資料可以參考
和其它CLIENT 的軟體

其它windows clinet軟體介紹
1.winprinthylafx
(http://winprinthylafax.sourceforge.net/):這個軟體是最簡單的client軟體,但有兩個問題,
  1. 不可以使用其首頁所寫的12/640 的印表機(中文字會支離破碎),要使用16/600或其它
  2. 一般設定好了傳送出去的文件每頁的抬頭會被截斷,經測試因其預設的文件為US Letter(你要將其改為A4,除了印表機,連接埠也要設)
2.frogfax
(http://www.frogfax.com/modules/spxsection/item.php?itemid=7):設是新釋放出來的免費軟體,功能較完整,我只在xp上試用,還不錯