2008년 12월 4일 목요일

FAX서버 만들기

소개

    서버쪽에서 Hylafax 는 세 개의 데몬으로 이루어져 있다:

    ·faxq - 메인서버
    ·hfaxd - 네트워크 접속 관리
    ·faxgetty - 모뎀과의 교신 관리

    클라이언트 쪽에서는 다음 프로그램들이 있을 것이다. 물론 서버에 존재할 수도 있다.

    ·sendfax - 팩스 전송
    ·faxstat - 큐 검사
    ·faxrm - 큐로부터 작업 제거

    관련된 설정 파일은 /var/spool/fax/etc/ 디렉토리에서 찾을 수 있다.

 

설치

    ·ghostscript (ftp://ftp.cs.wisc.edu/pub/ghost/aladdin/)
    ·libtiff (ftp://rufus.w3.org/linux/redhat/)

    위 패키지들은 또한 http://www.hylafax.org/links.html 공식 사이트에서도 얻을 수 있다.

    Hylafax 가 디폴트로 설치되어 있지 않다면, 간단히 필요한 RPM 패키지들을 다음과 같이 설치해야 한다:

    rpm -ivh hylafax-*.rpm

    - hylafax를 설치 하는 과정에서 sharutils라는 패키지가 없다고 나오는 경우도 있다. 그럴때는

    sharutils-*.rpm 을 구하여

    rpm -ivh sharutils-*.rpm을 하여 설치를 미리 해주어야 한다.

 

Hylafax 설정

    서버를 설정하기 위해서 다음 명령을 루트 권한으로 실행시킨다:

    faxsetup -server

    디폴트 설정은 다음을 제외한 거의 모든 질문에 대해 동의하는 것이다:

    [root@fax sbin]# faxsetup -server

    Created for i686-pc-linux on Wed Aug 23 23:43:19 EDT 2000.

    Checking system for proper client configuration.
    Checking system for proper server configuration.

    Warning: /sbin/vgetty does not exist or is not an executable 
    program!

    The file:
    /sbin/vgetty

    does not exist or this file is not an executable program. The
    HylaFAX software optionally uses this program and the fact that
    it does not exist on the system is not a fatal error. If the
    program resides in a different location and you do not want to
    install a symbolic link for /sbin/vgetty that points to your 
    program
    then you must reconfigure and rebuild HylaFAX from source code.

    Warning: /bin/egetty does not exist or is not an executable 
    program!

    The file:
    /bin/egetty

    does not exist or this file is not an executable program. The
    HylaFAX software optionally uses this program and the fact that
    it does not exist on the system is not a fatal error. If the
    program resides in a different location and you do not want to
    install a symbolic link for /bin/egetty that points to your program
    then you must reconfigure and rebuild HylaFAX from source code.

    Make /var/spool/fax/bin/ps2fax a link 
    to /var/spool/fax/bin/ps2fax.gs.

    You do not appear to have a "fax" user in the password file.
    HylaFAX needs this to work properly, add it [yes]? 

    "fax"라는 계정을 추가할지 묻는 질문이다. yes를 선택 (엔터만 누르면 
    된다.)
    Added user "fax" to /etc/passwd.

    There does not appear to be an entry for the FaxMaster either in
    the YP/NIS database or in the /etc/aliases file. The FaxMaster 
    is the primary point of contact for HylaFAX problems.
    The HylaFAX client-server protocol server identifies this alias as
    the place to register complaints and HylaFAX directs automatic 
    mail
    messages to this user when problems are identified on a server
    machine or when the routine server maintainence scripts are run
    (e.g. faxcron).

    Should an entry be added for the FaxMaster to /etc/aliases [yes]? 
    Users to receive fax-related mail [root]? toy2
    위는 엔터를 누르고, 밑은 fax와 관련된 메일(문제라든지..)을 누구에
    게 보낼 것인지 묻는 질문이다. root혹은 자신의 계정아이디를 써준다.
    /etc/aliases: 15 aliases, longest 10 bytes, 165 bytes total
    Rebuilt /etc/aliases database.

    Modem support functions written to /var/spool/fax/etc/setup.modem.
    Configuration parameters written 
    to /var/spool/fax/etc/setup.cache.

    No scheduler config file exists, creating one from scratch.
    Country code [1]? 82 (국가코드를 묻는 질문이다. 우리나라는 82)
    Area code []? 43 (지역번호를 묻는 질문이다. 0은 생략한다. 43
    은 충북)
    Long distance dialing prefix [1]? (장거리 전화시 먼저 누르는 
    키를 말하는것인데, 그냥 엔터)
    International dialing prefix [011]? (이번엔 국제전화, 이것두 엔
    터)
    이 다음은 필요한 설명이 있는 부분만을 제외하고는 모두 엔터~
    Dial string rules file (relative to /var/spool/fax) 
    ["etc/dialrules"]?
    Tracing during normal server operation [1]?
    Default tracing during send and receive sessions [0xffffffff]?
    Continuation cover page (relative to /var/spool/fax) []?
    Timeout when converting PostScript documents (secs) [180]?
    Maximum number of concurrent jobs to a destination [1]?
    Define a group of modems []?
    Time of day restrictions for outbound jobs ["Any"]?
    Pathname of destination controls file (relative 
    to /var/spool/fax) []?
    Timeout before purging a stale UUCP lock file (secs) [30]?
    Max number of pages to permit in an outbound job [0xffffffff]?
    Syslog facility name for ServerTracing messages [daemon]?

    The non-default scheduler parameters are:

    CountryCode: 82
    AreaCode: 43

    Are these ok [yes]?

    Creating new configuration file /var/spool/fax/etc/config...

    Restarting HylaFAX server processes.
    Should I restart the HylaFAX server processes [yes]?

    /etc/rc.d/init.d/hylafax start
    HylaFAX: faxq hfaxd (without old protocol or SNPP support).

    You do not appear to have any modems configured for use. Modems 
    are configured for use with HylaFAX with the faxaddmodem(1M) command.
    Do you want to run faxaddmodem to configure a modem [yes]?
    Serial port that modem is connected to []? ttyS3
    위 부분은 자신의 컴퓨터에 꽂혀있을 fax모뎀의 시리얼 포트를 묻는 것
    이다. ttyS3는 com4이기 때문에 위와같이 쓴 것이다. com3일경우는 
    ttyS2...
    Hmm, there does not appear to be an fuser command on your machine.
    This means that I am unable to insure that all processes using the
    modem have been killed. I will keep going, but beware that you 
    may have competition for the modem.

    Ok, time to setup a configuration file for the modem. The manual
    page config(4F) may be useful during this process. Also be aware
    that at any time you can safely interrupt this procedure.

    Reading scheduler config file /var/spool/fax/etc/config.

    No existing configuration, let's do this from scratch.

    Country code [1]? 82 (국가코드)
    Area code [415]? 43 (지역번호 0빼고)
    Phone number of fax modem [+1.999.555.1212]? +82.43.xxx.xxxx (x
    는 fax 전화번호)
    Local identification string (for TSI/CIG) ["NothingSetup"]? (기
    관 명칭이나 지역 등 팩스 상단에 쓰여질 글자를 써넣는다.)
    Long distance dialing prefix [1]?
    International dialing prefix [011]?
    Dial string rules file (relative to /var/spool/fax) 
    [etc/dialrules]?
    Tracing during normal server operation [1]?
    Tracing during send and receive sessions [11]?
    Protection mode for received facsimile [0600]?
    Protection mode for session logs [0600]?
    Protection mode for ttyS3 [0600]?
    Rings to wait before answering [1]?
    Modem speaker volume [off]? on (설정이 잘 안되네요.. )
    Command line arguments to getty program ["-h %l dx_%s"]?
    Pathname of TSI access control list file (relative 
    to /var/spool/fax) [""]?
    Pathname of Caller-ID access control list file (relative 
    to /var/spool/fax) [""]?
    Tag line font file (relative to /var/spool/fax) [etc/lutRS18.pcf]?
    Tag line format string ["From %%l|%c|Page %%p of %%t"]?
    Time before purging a stale UUCP lock file (secs) [30]?
    Hold UUCP lockfile during inbound data calls [Yes]?
    Hold UUCP lockfile during inbound voice calls [Yes]?
    Percent good lines to accept during copy quality checking [95]?
    Max consecutive bad lines to accept during copy quality checking 
    [5]?
    Max number of pages to accept in a received facsimile [25]? 40 
    (한번에 최대로 받을 fax문서의 갯수..)
    Syslog facility name for ServerTracing messages [daemon]?
    Set UID to 0 to manipulate CLOCAL [""]?

    Your facsimile phone number (+82.43.xxx.xxxx) does not agree with 
    your country code (82) or area code (43). The number should be a 
    fully qualified international dialing number of the form:

    +82 43

    Spaces, hyphens, and periods can be included for legibility. For 
    example,

    +82.43.555.1212

    is a possible phone number (using your country and area codes).

    The non-default server configuration parameters are:

    CountryCode: 82
    AreaCode: 43
    FAXNumber: +82.43.xxx.xxxx
    LongDistancePrefix: 1
    InternationalPrefix: 011
    DialStringRules: etc/dialrules
    SessionTracing: 11
    RingsBeforeAnswer: 1
    SpeakerVolume: off
    GettyArgs: "-h %l dx_%s"
    LocalIdentifier: "NothingSetup"
    TagLineFont: etc/lutRS18.pcf
    TagLineFormat: "From %%l|%c|Page %%p of %%t"
    MaxRecvPages: 40

    Are these ok [yes]?

    Now we are going to probe the tty port to figure out the type
    of modem that is attached. This takes a few seconds, so be 
    patient.
    Note that if you do not have the modem cabled to the port, or the
    modem is turned off, this may hang (just go and cable up the 
    modem or turn it on, or whatever).

    Probing for best speed to talk to modem: 38400 OK.

    This modem looks to have support for both Class 1 and 2;
    how should it be configured [2]? 2 (자신의 fax모뎀이 지원하는 
    class)

    Hmm, this looks like a Class 2 modem.
    Modem manufacturer is "ROCKWELL".
    Modem model is "AC/K56 ".
    DTE-DCE flow control scheme [default]?
    grep: defaults: 디렉토리입니다

    Using prototype configuration file rockwell-k56...

    The modem configuration parameters are:

    ModemFlowControl: xonxoff
    ModemHardFlowCmd: AT&K3
    ModemNoFlowCmd: AT&K
    ModemRate: 38400
    ModemRecvFillOrder: MSB2LSB
    ModemSendFillOrder: LSB2MSB
    ModemSetupAACmd: AT+FCLASS=0;+FAA=1
    ModemSetupDCDCmd: AT&C1
    ModemSetupDTRCmd: AT&D3
    ModemSoftFlowCmd: AT&K4
    ModemWaitForConnect: yes
    Class2RecvDataTrigger: "

Hylafax 시작하기

    컴퓨터 시동시에 자동적으로 Hylafax 를 작동시키기 위해서는 맨드레이크 및 레드햇 배포판의 경우 각각 drakxservices 와 setup 명령을 사용한다. 그 후 다음 명령을 직접 실행시킨다:

    /etc/rc.d/init.d/hylafx start

    faxgetty 가 프로세스 목록(이는 ps -e 명령을 사용하여 확인할 수 있다) 에 없다면 다음 명령을 실행시킨다:

    /usr/sbin/faxgetty -D /dev/ttyS0

 

Hylafax 사용하기

    팩스를 보내기 위해서는 다음 명령을 실행시킨다:

    send -n -d number file1 file2 ..

    결과를 확인하기 위해서는 다음 명령을 실행시킨다:

    faxstat -s(전송 대기 중인 큐내의 팩스를 보여준다)
    faxstat -d(전송된 팩스를 보여준다)
    faxstat -r(수신된 팩스를 보여준다)

    팩스를 큐에서 제거하기 위해서는 다음 명령을 실행시킨다:

    faxrm number_of_job

    스풀을 청소하기 위해서는 다음 명령을 실행시킨다:

    faxclean

    통계를 보기 위해서는 다음 명령을 실행시킨다:

    faxcron

 

네트워크상에서 Hylafax 사용하기

    서버설정

    네트워크상에서 사용하기 위해 http://www.hylafax.org/links.html 
    로부터 얻을 수 있는 프로그램들을 선택한다. 
    특히, Printfax 와 Respond 는 http://www.boerde.de/~horstf/ 에서 얻을 수 있다:

    다음 세 파일을 다운로드한다:

    printfax.pl (펄 스크립트)
    respond.zip (respond.exe)
    smb_conf.add(/etc/smb.conf에 추가되는 모듈)

    printfax.pl 스크립트를 /usr/bin 디렉토리에 복사한 후 hylafax 와 함께 작동될 수 있도록 수정한다:
     

    ### 커맨드 라인 포맷
    #    $cmdlinefmt = 'mgetty' ;
          $cmdlinefmt = 'hylafax' ;   

    ### 팩스 스풀 프로그램
    ###   mgetty 와 sendfax를 사용하는 경우
    #        $faxspool = '/usr/bin/faxspool' ;
    ###   hylafax를 사용하는 경우
              $faxspool = '/usr/bin/sendfax' ; 

    ###   추가 팩스 스풀 인수 (예, 헤더, 커버페이지)
    ###   인수가 없는 경우 : 
              @faxspool_args = qw(-n) ;
    ###   특별한 헤더를 갖는 mgetty 와 sendfax를 사용하는 경우
    #        @faxspool_args = qw(-h /usr/local/etc/mgetty+sendfax/faxheader.smb) ;
    ###   작업이 종료되거나 다시 대기(requeue) 및 A4용지를 사용할 때 이메일을 보내는 
    ###   hylafa를 사용하는 경우
    ###   a4 sized paper :
    #        @faxspool_args = qw(-D -R -s a4) ;


    Note: printfax.pl 스크립트가 수정되었을 수 있기 때문에 이 버전을 대조 확인해라.

    복사/붙여 넣기를 사용하여 /etc/smb.conf 파일에 smb_conf.add 모듈을 추가한다:

      [Fax] comment = Fax Printer
      public = yes
      postscript = yes
      print command = ( /usr/bin/printfax.pl \I \s \U  rm \s ) &
      printable = yes
      writable = no
      path = /var/spool/samba 

    특히 윈도우 2000 과 함께 사용하기 위해서는 print command 라인을 확인한다.

    삼바가 다음과 같이 재시작되어야 한다:

       /etc/rc.d/init.d/smb restart

    클라이언트 설정

    윈도우 95, 98, NT 및 2000 에 대한 전형적인 클라이언트 설정이 설명되는데 config.exe 와 respond.exe 파일을 포함하는 Respond.zip 을 설치한다:

    ·c:\windows (또는 다른) 디렉토리에 두 파일을 복사한다.
    ·시작->프로그램->시작프로그램 메뉴에 respond.exe 파일 링크를 만든다.
    ·respond.exe를 실행시키거나 컴퓨터를 재시작한다.

    다음은 네트워크 프린터를 설치한다:

    ·시작->설정->프린터->프린터추가를 클릭한다.
    ·네트워크 프린터를 선택한다.
    ·찾아보기를 선택하여 네트워크상의 팩스 프린터를 선택한다(삼바 프린터).
    ·HP->HP Lajerjet 4/4m postscript 드라이버를 선택한다.
    ·테스트 페이지를 인쇄하지 않는다.
    ·프린터가 설치된 후 시작->설정->프린터 메뉴에서 팩스 프린터의 등록정보를 클릭한다.
    ·등록정보에서 자세히로 간 후 스풀설정을 클릭한다.
    ·마지막 페이지까지 스풀한 후 인쇄 시작을 선택한다.

    이것으로 클라이언트 설정은 끝났고 워드패드를 열어 아무 텍스트나 타이핑한 후 이를 팩스 프린터에 인쇄 해본다. respond.exe를 실행시켰다면 팩스 넘버를 묻는 응답 박스가 나타나는데 팩스 넘버를 쳐넣고 Ok 버튼을 누른다. 팩스가 hylafax 팩스 서버에 전송될 것이다.

    정확하게 동작하는지를 확인하기 위해 서버에 가서 faxstat -s 명령을 실행시키면 전송한 팩스가 나타날 것이다.

    리눅스 클라이언트 설정을 위해서는 Hylafax 사이에서 얻을 수 있는 유틸리티를 사용해라.

 

Fax 메일링

    팩스 메일링은 스타오피스를 사용하여 서버에서 지역적으로 이루어진다.

    한편, 데이터베이스는 네트워크상의 어느 곳이라도 있을 수 있으며 스타오피스(ODBC, JDBC 등) 를 사용하여 접근할 수 있다. spadmin 유틸리티를 사용하고 telefax output 을 설정한다: faxspool (PHONE) (TMP)

    보낼 문서 안의 @@#num_tel_fax@@ 에 num_tel_fax 대신 데이터베이스 필드 이름을 넣는다.

    스타오피스 도움말을 읽기 바란다. 알아야 할 모든 내용이 설명되어 있다.

    이 방법은 팩스 서버에 스타오피스를 설치해야 한다는 것이 단점이다. respond 를 사용하여 네트워크를 통해 팩스를 우송하는 것은 모든 수령자에 대한 팩스 넘버를 수작업으로 입력해야 하기 때문에 스타오피스를 사용하는 것은 그다지 간단하지 않다. 아마도 다른 대안이 있을 것이다.

0 개의 댓글:

 

심심풀이 한치 와 맥주. Design By: SkinCorner