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 를 사용하여 네트워크를 통해 팩스를 우송하는 것은 모든 수령자에 대한 팩스 넘버를 수작업으로 입력해야 하기 때문에 스타오피스를 사용하는 것은 그다지 간단하지 않다. 아마도 다른 대안이 있을 것이다.

HalaFax로FAX Server만들기

HylaFAX로 FAX Server만들기

김재우, evacuee@hyowon.cc.pusan.ac.kr

v0.2, 1999년 2월 1일


이 문서는 HylaFAX로 팩스 서버를 구축하는 방법과, Windog에서 팩스서버를 통해 팩스를 보내는 방법에 관한 글이다.

1. 소개

1.1 팩스 서버에 대해

팩스 서버란, 팩스 모뎀을 가지고 팩스를 주고 받을 수 있고, 네트웍으로 연결된 클라이언트(팩스 모뎀이 없는)에서도 자신을 통에 팩스를 보낼 수 있도록 하는 기능을 하는 녀석(?)을 말한다.

받은 메일을 팩스로 전송하거나, Web을 통해서도 팩스를 보내는 기능도 가지고 있다.

1.2 HylaFAX

HylaFAX란 SGI(Sillicon Graphics Inc.)에서 만든 팩스 프로그램으로 유닉스 환경에서 간단히 팩스 서버를 구축할 수 있게 해준다.

HylaFAX와 Client프로그램으로 할 수 있는 일들은 대강 다음의 것들이다.

  • 팩스를 보내고 받기
  • 클라이언트에서 HylaFAX를 통해 팩스 보내기
  • 삐삐 호출
  • 메일을 팩스로 보내기
  • Web으로 FAX서비스 제공.

A4나 B5등 어떠한 크기의 문서라도 전송할 수 있으며, 98또는 196lpi의 해상도를 지원하고, Class 1, Class2, 또는 Class 2.0의 팩스 모뎀을 사용할 수 있다. Client는 Window series, MAC, UNIX, Java용이 있어 대부분의 OS에서 HylaFAX를 통해 팩스를 보낼 수 있다.

팩스를 주고 받는데는 TIFF형식의 이미지를 사용한다. 물론 받은 팩스는 TIFF형식으로 저장이 된다. 많은 윈도용 팩스 서버 프로그램들이 자기 자신만의 포멧을 사용하는데 HylaFAX는 TIFF형식을 사용하기에 PDF형식등으로의 변환이 쉽다.

HylaFAX에대해 자세히 알고 싶으면 http://www.hylafax.org에 가보라.

2. HylaFAX 설치하기

여기서는 Linux(RPM package를 사용할 수 있는)에서의 설치와, Windows용 Client의 설치만을 다룬다.

2.1 HylaFAX의 설치

설치

나는 RedHat Linux를 사용하고 있고, HylaFAX를 별로 컴파일해 보고 싶지 않기에, 이 글에서 소스를 컴파일해서 설치하는 방법은 다루지 않는다.

설치 순서는 다음과 같다.

  1. HylaFAX의 rpm package를 구한다. ftp://ftp.hylafax.org/hylafax/binary/linux/rpms/에 가면 libc, glibc용 바이너리가 있다.
  2. 설치한다.
        rpm -Uvh hylafax-4.0pl2-3rh5.i386.rpm      
  3. 대부분의 경우 ghostscript-font-std 5.2가 필요하다면서 설치되지 않을 것이다. 이건 무시해도 된다. 찝찝하다면, Hylafax를 받은 곳에 있는 ghostscript와 font들을 받아서 설치하면 된다. 다시 --nodeps옵션을 주고 설치한다. 만약 ghostscript-font-std 외에 다른 package가 필요하다면 구해서 설치한다.
  4. 설치는 끝났다.

설정

설정할게 많긴 한데, 별로 어려울건 없다.

  1. 먼저 모뎀이 어느 포트에 붙어 있는지 알아본다. 그리고 그걸 /dev/modem으로 link한다. 만약 COM4에 모뎀이 있다면, 다음과 같이 한다.
            ln -s /dev/cua3 /dev/modem          
  2. 다음은, 사용하는 모뎀이 어떤 Class를 지원하는지 알아본다. gau나 minicom등에서 다음과 같이 해본다.
            at         OK         at+fclass=?         0,1,2.0         OK          
    위와 같이 나온다면 당신은 Class 1, Class 2.0을 지원하는 모뎀을 사용하고 있는 것이다.
  3. /usr/bin/faxsetup을 실행한다. HylaFAX에 관한 설정을 하는 프로그램이다. 커널 컴파일시 make config할 때와 똑같은 user interface를 사용하기에 좀 불편할지도 모르겠다. 물어보는 것에 대해 하나씩 답해준다. 국가번호, 지역번호, 모뎀이 지원하는 Class만 정확히 답해주면 될것이다. 나머지는 그냥 Enter를 치면 default값이 들어간다. 그런데, 처음 HylaFAX를 소개할때 말했듯이 HylaFAX는 어떤 Class든지 사용할 수 있으나, 진짜 FAX기계 중 오래된 것들은 Class 1만을 지원하는 것이 많이 때문에 모뎀이 Class 2나, Class 2.0을 지원하더라도 Class 1을 사용하도록 하는 것이 좋다. 많은 모뎀을 테스트해봤는데, Class 2나 Class 2.0이 제대로 되는 것은 없었다. 팩스를 보내는 것이나 받는 것중 적어도 하나는 작동하질 않았다.
  4. HylaFAX daemon을 다시 시작할지 물어볼때, yes라 답하면 모뎀을 설정하기 위한 faxaddmodem을 실행할지 물어본다. 역시 yes라 답한다.
  5. faxaddmodem에서도 대부분은 default값을 사용한다. 지역번호, 팩스의 전화번호, ``Local identification string'', 받은 팩스의 퍼미션 정도만 똑바로 입력하면 된다.
  6. 위의 과정이 끝나면 입력한 정보를 보여주고, 맞게 입력했는지 물어본다. 맞다면 `yes'를 입력하고, 잘못된게 있다면, `no'를 입력하고 다시 설정하라.
  7. 다음엔 모뎀에 관한 정보를 물어본다. 먼저 모뎀이 어떤 속도에서 잘 동작하는지 테스트한다. 사용가능한 Class를 보여주며 어떤 Class를 사용할 것인지 물어보는데, 앞에서 말했듯이 가능하면 Class 1을 사용한다. 좀 더 자세히 모뎀에 대해 물어볼 수도 있고, 그러지 않을 수도 있다. 자세히 물어보더라도, 그냥 Enter만 치고 넘어간다.
  8. 모뎀에 관한 설정이 끝나면 또 다른 모뎀을 추가할 것인가를 물어보는데 모뎀이 하나 더 있고 이것 역시 팩스로 사용할 것이라면 yes를 답한다.
  9. 설정된 모뎀에 대해 faxmodem명령을 실행할 것인지 물어보는데, yes라 답하면 모든 설정은 끝난다.
설정하는 것 하나하나 들어가며 설명하진 않았으나, HylaFAX의 설치문서를 같이 본다면 별로 어렵진 않을 것이다.

2.2 Client측 설치.

윈도용 클라이언트로는 WHFC(A Windows HylaFAX Client)를 사용한다. Win3.1을 제외한 모든 버전의 윈도(win95, win98, winnt)에서 동작한다.

  1. http://www.transcom.de/whfc에서 윈도 버전에 맞는 프로그램을 구한다.
  2. 설치한다. 버그 때문인지는 몰라도 두번을 설치해야지 제대로 동작하는것 같다. 설치하는 도중 dll에 관련된 에러가 뜨는데, 알아서 잘 해결하라.(나는 윈도에서 생긴 에러는 어떻게 해야할지 모른다) 만약, 이 프로그램 설치중 윈도에 심각한 문제가 생겼다고해서 나에게 질문 멜을 보내지 말길...
  3. WHFC의 메뉴얼을 보면서 설정한다. Server의 주소, 사용자의 이름, login id, e-mail등 몇가지만 입력하면 된다.
  4. Server에서 위에서 적은 login id를 추가한다. id가 evcauee이고 클라이언트의 ip가 203.228.84.130이라면, etc/hosts^evacuee@203\.228\.84\.130$란 줄을 추가한다. 주의할 것은 /etc/hosts가 아니라 HylaFAX가 설치된 디렉토리에 있는 etc/hosts파일이란 것이다. RPM으로 설치했다면, /var/spool/fax/etc/hosts일 것이다. 사용자 등록에 관한 자세한 사항은 man hosts해 보면 된다. 또는HylaFAX FAQ의 Q.105번을 참고한다.
  5. 이제 팩스로 사용할 프린터를 추가한다. HylaFAX는 Postscript파일을 TIFF로 변환하여 팩스를 보내므로, Postscript 프린터를 추가한다. APPLE의 ``Apple LaserWriter 16/600 PS''를 설치한다. 사용할 포트에 보면 WHFCFAX가 새로 등록되어있을 것이다. 이 포트로 출력하도록 한다. MS Word를 사용할 경우 문제가 생긴다면 ``HP 4/4M Postscript'' driver를 사용한다.

3. 사용하기

  • 서버에선 sendfax란 프로그램을 팩스를 전송하는데 쓴다. 5102424로 /tmp/zactHong란 파일을 보낸다면 다음과 같이 한다.
        sendfax -n -d 5102424 /tmp/zactHong      
    -n 옵션은 Cover page를 보내지 않을 때 사용하는 것이다. 일반 텍스트 파일을 보낼 땐 한글이 깨진다. 한글을 보내려면 tex으로 ps파일을 만들거나, nh2ps등의 프로그램을 사용하여 ps파일로 변환한 뒤에 전송한다.
  • 윈도 클라이언트도 사용하긴 쉽다. Word나 HWP등 프로그램에서 사용할 프린터를 위에서 설치한 AppleLaserWriter로 설정하고, 프린트한다. 그러면 WHFC가 실행되면서 보낼 곳의 전화번호를 물어본다. 전화번호를 적고 보내면 끝이다. 클라이언트에서 보낸 팩스는 서버가 받아서 잘 처리한다.

팩스를 받기위해선 faxgetty /dev/modem이란 명령을 실행해야한다. 받은 팩스는 /var/spool/fax/recvq에 쌓이게 된다. 팩스를 받았을때 자동으로 프린트하도록 하려면 bin/faxrcvd를 사용하면 된다.

4. 끝으로

본 문서에서 잘못된 점이나, 고쳐야할 부분이 있으면 필자에게 메일을 보내길 바란다. 다음 버전의 문서가 나올때 고쳐질 수 있도록...

리눅스웹사이트

 리눅스 웹사이트 mini-Howto

  1. 웹사이트, 웹서버, 홈페이지의 차이점

    이 셋은 구분이 애매하나 구별해서 사용해야 한다.

    웹사이트란 웹 데이타를 서비스하는데 관련된 모든 하드웨어 및 소프트웨어, 데이타 등을 총칭한다. 즉 컴퓨터, 통신망, 웹서버 프로그램, HTML문서 등을 모두 합한걸 말한다.

    웹서버란 좁은 의미로는 웹형태의 정보를 제공하는데 필요한 프로그램(httpd : 즉 Apache)을 말하나 넓은 의미로는 이 프로그램이 돌아가는 컴퓨터까지 포함한다.

    홈페이지는 단순히 웹서버에 올려진 HTML문서만을 말한다고 보면 된다.

  2. 웹사이트 구축 준비사항

    웹사이트를 구축하려면 인터넷을 연결하고 서버용 컴퓨터를 갖추어야 한다. 아래에 웹사이트 구축을 위한 사전 준비사항을 자세히 설명한다.

    1. 컴퓨터
      웹사이트를 운영하는데 필요한 컴퓨터는 우선 사용빈도, 데이타량, 동시사용자수, 서비스 정보 종류 등에 따라 크기를 결정해야 한다.

      본인의 생각으로 동시 사용자수가 20여명 정도라면 구태여 수천만원씩 소요되는 호스트급 컴퓨터를 쓰기보다는 몇 백만원하는 펜티엄급 PC를 사용하는게 낫다. 속도나 안정성면에서도 큰 차이가 없다고 본다.

      외국의 여러 사이트를 보면 우리나라의 대기업 정도되는 큰 회사가 아니면 거의 PC에 웹서버를 구축하는데 우리나라는 중소기업에서도 호스트급에 웹사이트를 개설하는 경우가 많다. 한마디로 너무 자원낭비가 심하다고 할까.

      본인이 이제까지 PC와 리눅스로 웹서버를 설치해준 경험을 토대로 웹서버를 설치하려는 PC의 사양을 권한다면,

      • CPU
        CPU로는 펜티엄이나 펜티엄 프로를 써야 한다.
        중요한 건 웹서버는 멀티유저 시스템이므로 CPU 클록속도보다는 버스의 클록속도가 더 중요하다는 것이다.
      • 메모리
        리눅스에서는 동시 사용자 1명당 1메가의 메모리가 필요하다고 한다. 다음에 운영체제 자신이 사용하는 기본 메모리가 8메가 정도이다. 따라서 동시사용자가 20여명이라면 최소 32메가 메모리가 필요하다.
      • 마더보드
        본인이 사용해본 일부 대만제 저가 마더보드에서는 리눅스의 커널이 컴파일되지 않는 경우가 있었다. 리눅스에서 추천할만한 마더보드는 인텔, Asus 등이다.
      • 랜카드
        랜카드는 3COM사 제품이 리눅스에서 가장 잘 지원된다. 각종 벤치마크에서도 3com 제품이 가장 좋은 결과를 보인다. 주의할건 일부 대만제 허브가 3com 카드와 안 맞는 경우가 있다. 따라서 허브가 대만제라면 3com 카드 사용을 조심해야 한다.
      • 멀티포트카드
        리눅스에 3 개 이상의 모뎀을 연결하겠다면 멀티포트카드를 써야 한다. 멀티포트카드 중 dummy 형은 CPU에 부하를 많이 주므로 통신속도를 38,400bps(시리얼포트 속도 기준) 이상으로 올리기 힘들다. 따라서 별도의 CPU를 갖는 인텔리전트형을 쓰는게 좋은데 Cyclade 와 Rocket 포트가 가장 설치도 쉽고 속도도 빠르며 안정적이다. 국산 멀티포트카드는 이들에 비해 속도가 20% 정도 늦다.
      • 하드 디스크
        리눅스에서 CPU보다 더 중요한 건 하드 디스크이다. 하드 디스크는 IDE 방식보다는 SCSI 방식이 당연히 낫다. 유닉스에서 철칙은 항상 가장 빠른 하드 디스크를 쓰라는 것이다. 일반 SCSI 보다는 WIDE SCSI를 또는 그보다 더 빠른 Ultra Wide SCSI를 쓰는게 좋다. 추천할만한 하드 디스크는 퀀텀, 시게이트 등이다. 삼성하드는 외국의 벤치마크 테스트에서 저질품으로 평가가 나온다. 안정성도 문제가 있다.
      • SCSI 콘트롤러
        SCSI 콘트롤러를 ISA 방식을 쓴다면 Wide SCSI 하드 디스크의 전송속도를 감당하지 못한다. 따라서 당연히 PCI 버스용을 써야 한다. 또한 Wide SCSI 하드를 쓴다면 당연히 Wide SCSI 콘트롤러나 Ultra Wide SCSI 콘트롤러를 써야 한다.
        본인이 추천하는 콘트롤러는 Adaptec사의 AHA2940-UW이다.
      • UPS
        유닉스에서 UPS를 쓰지 않는다면 UPS 값에 해당하는 대가를 언젠가는 치를 것 이라는 걸 명심해야 한다. 그리고 UPS를 쓴다면 멍텅구리(Dummy) 몇 개보다는 똑똑한 녀석(Intelligent) 한 개가 낫다.
        더미(Dummy)형의 경우 축전지를 몇 톤을 달아도 기껏 한 두시간 밖에 못 버티는데 만약 퇴근 후 전원이 나가면 어떻게 되겠는가? 있으나 마나 한 존재가 될 것이다.

        그러나 인텔리전트형의 경우 전원이 나간 후 지정한 시간내에 전원이 복귀하지 않으면 서버에 명령을 주어서 자동으로 서버를 다운시키므로 무인 운전이 가능하다.

        따라서 인텔리전트형 UPS의 경우는 UPS와 서버가 케이블로 연결되고 UPS를 모니터하는 소프트웨어가 서버에 설치된다. UPS 중 가장 성가가 높은 제품은 미국의 APC사 제품이다.

      • 백업장치
        이세상에 무결점 컴퓨터란 없다. 또 완벽한 핵킹 방지 시스템이란것도 없다고 보면 된다. 따라서 완벽한 컴퓨터나 핵킹 방지에 많은 돈과 노력을 쓰는 것보다는 데이타백업을 주기적으로 받아서 피해를 최소화 하는게 가장 나은 해결책이다. 
        백업 장치로 본인이 추천하는건 DAT(Digital Audio Tape)다. 장치 값이 약간 비싸지만 테이프 한개로 8기가 저장이 가능하고 백업 속도도 상당히 빠른 편이다.
      • 모뎀(팩스 모뎀)
        리눅스를 PPP서버로 사용하거나 다이얼업 접속을 허용하려면 모뎀을 장착하여야 한다. 또한 리눅스에 팩스모뎀을 장착하여 한푼의 비용도 추가하지 않고 훌륭한 팩스서버를 만들 수 있다.
        모뎀 구입의 철칙은 항상 그 시점에서 가장 빠르고 안정적인 제품을 구매하라는 것이다. 이유는 간단하다. 가장 좋은 모뎀과 나쁜 모뎀의 가격 차이가 불과 몇 만원인데 데이타 전송시 모뎀의 잘못으로 재전송을 받는다면 통신비와 시간 손실은 몇달 안에 모뎀 구입시 절약한 비용을 초과한다.

        모뎀업체로 비교적 좋은 평가를 받는 업체는 USRobotics, Practical Periperals, BOCA 등이다.

      참고
      ----
      팩스서버란 리눅스에 팩스모뎀을 장착해서 리눅스와 랜으로 연결된 모든 PC의 팩스 송수신을 리눅스에서 처리하는걸 말한다. 팩스 수신의 경우는 수신과 동시에 프린터로 팩스를 인쇄하게 하거나 인터넷 메일로 사용자에게 팩스 도착사실을 알려주기도 하고, 팩스 내용을 GIF파일로 변환하여 PC에서 화면으로 팩스 내용을 확인할 수 있는 등의 장점이 있다.

      팩스 송신의 경우는 팩스서버와 랜으로 연결된 win95 PC에서만 가능한데 사용법은 아주 간편하다. 즉 윈95에서 돌아가는 아무 어플리케이션에서든 팩스라는 프린터로 인쇄만하면 바로 전화번호 입력화면이 뜨고 전화번호를 입력하면 팩스 송신이 개시된다.

      사용해 본 결과 몇 백 만원씩하는 상용 팩스서버보다 리눅스 팩스서버가 훨씬 안정성이 높다는 것이다.

    2. 운영체제

      웹서버 운영체제로 가장 많이 사용되는 운영체제는 리눅스/유닉스이다. 하지만 리눅스/유닉스에서 웹서버를 운영하려면 최소 3개월여 정도는 공부를 해야 한다.

    3. 인터넷 연결

      웹서버를 자기 혼자 쓰든가 아니면 사내에서만 사용할 계획이 아니라면 다음은 웹서버를 인터넷과 연결하여야 한다. 웹서버를 인터넷과 연결하려면 인터넷 서비스 업체(ISP)를 통해야 하는데 ISP는 통신망 연결부터 도메인네임을 받는 것까지 모두 처리해 준다. 연결에 필요한 장비는 구매할 수도 있고 ISP에게서 대여받아도 된다.

      아래에 대체적인 비용과 장비를 소개하면,

      • LAN TO LAN
        가장 안정적이며 보통 64 개 정도의 공인 IP를 받을 수 있다. 단지 비용이 조금 비싸다.

        비용 : 월 50-60만원( 128 k : 할인시)
        장비 : 라우터, FDSU

      • 호스트접속
        호스트 컴퓨터 한대에만 IP 어드레스를 부여 받는 후 이 어드레스를 호스트에 계정을 갖고 있는 모든 사용자나 랜으로 연결된 다른 컴퓨터에서 공유하여 사용하는 방식이다. ?DSL 이라는 장비를 이용해서 일부 업체가 서비스하고 있다. 이방식으로는 웹서버를 구축하는건 문제가 없으나, 이호스트와 랜으로 연결된 다른 컴퓨터에서 인터넷의 일부 서비스를 사용하는데는 약간의 제한이 따른다.
        하지만 리눅스를 쓸 경우 slirp, proxy 서버, IP Masquerade 등의 기법을 사용함으로서 이 한계를 대부분 극복할 수 있다.

        비용 : 월 20-30만원(128kbps)
        장비 : 업체에서 빌려줌.

      • CO-LAN (115.2k)
        한국통신에서만 서비스하고 있으며 위의 호스트 접속과 같으나 단지 기존의 음성전화선을 사용하므로 설치가 간편하다.

        비용 : 월 20만원
        장비 : VDM

      • ADSL
        한국통신에서만 현재 고정 IP 서비스를 제공하고 있다. (유동 IP는 웹서버를 구축할 수 없음.) 아래 두 종류가 있다.
        • ADSL My IP : IP 1 개이며 속도(업로드)는 최대 384kbps
        • ADSL Multi IP : IP 5 개이며 속도는 512k. IP 추가가 가능함. 
            ADSL의 경우 다운로드 속도는 2 메가도 가능하나 웹서버의 경우는 업로드 속도가 중요하다.

        비용 : My IP(월 90,000원), Multi IP(월 190,000원) 
        장비 : 한국통신에서 대여해줌.

      필자의 견해로는 속도 대 비용 관점에서 ADSL이 가장 낫다. 단지 안정성에서 떨어진다. 피시가 많지 않은 경우 추천할 만하다.

      만약 네트웍에 자신이 있다면 주위에 LAN to LAN으로 인터넷을 사용 중인 다른 업체에 전용선이나 TT선을 연결하여 인터넷을 나누어 쓰는 방법이 있다. 하이텔 OSC 랜 강좌/정보란에 이에 대한 자세한 글을 쓴 적이 있으니 참고 하기 바란다. 이 경우는 비용은 월 25,000원(TT선)부터 125,000원(56k 전용선)이다.

  3. 웹서버 프로그램(httpd)

    웹서버 프로그램은 운영 체제에 따라 다르지만 쉐어웨어나 프리웨어를 쓰면 충분하므로 구태여 비싼 상용프로그램을 쓸 필요가 없다. 리눅스에서 웹서버 프로그램으로 가장 많이 쓰이는 프로그램은 apache와 CERN이다.

    설치방법은 cern은 http://www.w3.org
    apache는 http://www.apache.org 를 참고 하면 된다.

  4. 버츄얼(Virtual) 웹서버(웹호스팅)

    컴퓨터 한대로 여러 도메인 네임에 속하는 웹서버를 돌리는걸 버츄얼 웹서버라고 한다. 즉 www.linuxlab.co.kr 과 www.linuxjournal.co.kr을 한대의 컴퓨터에서 모두 지원되게 하는걸 말한다. 물론 기계만 한대이지 외부에는 전혀 다른 홈페이지가 뜨므로 다른 사람들은 전혀 별개의 기계에서 가동되는걸로 알게된다.

    현재 여러 인터넷서비스업체에서 월 일정비용을 받고 웹서버를 운영해 주고 있는데 이때 한 업체마다 별도의 웹서버를 두는게 아니라 바로 버츄얼 웹 기법을 써서 한대의 큰 호스트에 여러 업체의 홈페이지를 모두 가동해주고 있다.
    버츄얼웹을 웹 호스팅이라고도 한다.

    리눅스에서 버츄얼 웹을 쓰려면 아래 순서를 밟아야 한다.(아래의 경우는 서버 한 대에 여러개의 IP를 부여해 각 IP 별로 별도의 웹서버를 돌리는 방식이다. IP 한 개로 여러개의 홈페이지를 돌리는 도메인네임 버츄얼서버의 경우는 단지 Apache에서의 설정만 필요하다.)

    1. 라우팅 테이블 조정

      먼저 ISP와 연결된 라우터에 2개 이상의 네트웍 어드레스를 버츄얼웹을 담당할 컴퓨터가 연결된 랜으로 라우트 되도록 라우팅 테이블을 바꾸어야 한다. 네트워크 어드레스가 여러개인 경우 보통 ISP가 이 부분을 설정해주나 직접 라우터를 설치한다면 필요하다.

      네트웍이 다르지 않고 단지 ip 주소만 다르게 할 경우(ip aliasing)는 이 과정은 필요없다.

    2. 리눅스에서의 조정
      • 커널 컴파일
        커널을 컴파일해서 network aliasing 과 ip aliasing 을 enable시켜준다.
        (커널 2.0 이상에서만 가능함)
      • 라우팅 테이블 작성
        한개의 랜카드가 두개 이상의 ip address를 인식케 하기 위해서는 IP aliasing을 써야 한다. 두번째의 주소를 eth0에 할당하려면,
        ifconfig eth0:0 w.x.y.z
        route add w.x.y.z
        위 두 명령이 필요하다.
      • 버츄얼 웹서버 프로그램
        아파치 웹서버 프로그램에서 setup을 조정하여 서로 다른 도메인네임에 대해서 다른 디렉토리에 있는 홈페이지가 뜨도록 조정하면 된다.

        예를 들면

         

        <>   ServerName www.test.com   ServerAdmin webmaster@test.com   DocumentRoot /usr/web/test.docs        ..        ..       < /virtualHost >  

        이상이다.

  5. IP 어드레스 공유하기

    웹서버 구축을 위해서 호스트 접속 방식으로 인터넷을 연결한 경우 IP 어드레스는 한개 밖에 나오지 않는다. 그런데 이 한개를 웹서버 PC에 쓰고 나면 이 PC와 랜으로 연결된 다른 PC들은 이 웹서버에 쉘어 카운트로 login하여 인터넷을 써야 하므로 인터넷의 대부분의 서비스를 사용할 수 없다.
    즉, 가장 중요한 WEB서비스를 쓸 수 없다.

    이걸 해결하는 방법은 아래에 3가지가 있다.

    1. Pseudo PPP

      이는 쉘어카운트 상태에서 특정한 프로그램을 실행하여 PPP모드를 흉내내므로서 WEB을 볼 수 있게 한다. 상용으로는 TIA가 있고 프리웨어로는 Slirp가 있다.

    2. IP masquerade

      현재 리눅스에서만 가능한걸로 알고 있다. 인터넷 정식 어드레스가 부여된 서버의 리눅스에 이 기법을 쓰면 이서버와 lan 또는 PPP로 연결된 다른 PC에서도 리눅스 서버의 인터넷 어드레스를 공유하여 인터넷의 대부분의 서비스를 이용할 수 있다.(WEB, telnet, ftp 등) 자세한건 IP Masquerade-Howto를 참조하기 바란다.

    3. proxy server

      인터넷 정식 어드레스가 있는 서버에 설치된 프로그램(proxy server)이 이서버와 랜으로 연결된 다른 클라이언트 PC의 인터넷 서비스 요청을 받아서 인터넷의 실제 호스트에서 데이타를 가져다 넘겨주는 방식이다.
      따라서 인터넷 어드레스는 proxy server가 설치된 PC에만 부여하면 되고 클라이언트 피시는 내부 어드레스를 쓰면 된다.

      대부분의 웹서버 프로그램(CERN, Apache 등)은 proxy server의 기능도 갖고 있다. proxy server와 IP masquerade는 그 기능은 유사하나 작동원리는 전혀 다르다. IP masquerade는 서비스 종류에 따라 사용 가능여부가 결정된다. 즉, ftp가 가능하다면 client 프로그램은 어떤 ftp 프로그램을 써도 가능하다. 이에비해 proxy server는 client 프로그램에 의해 서비스 종류가 결정된다. 예를 들면 netscape는 proxy server를 지원하는데 여기서 지원하는 서비스는 http(WEB), FTP, Gopher, WAIS등이다.

      본인의 개인적인 견해로는 IP Masquerade가 proxy server 보다 속도도 빠르고 사용도 편하다. 안정성면이나 캐쉬 기능은 proxy server가 낫다.

  6. 방화벽(firewall)

    방화벽이란 인터넷이 연결된 외부망과 사내의 랜을 분리 시켜주는 컴퓨터를 말한다. 두 망이 물리적으로 완전히 분리된다면 방화벽은 존재 이유가 없다. 대부분의 방화벽의 목적은 내부랜에 있는 컴퓨터끼리는 서로 자유로운 억세스가 가능하되, 외부망의 컴퓨터는 내부랜의 컴퓨터로의 억세스가 불가능하도록 하고, 내부랜의 컴퓨터는 외부망에 있는 컴퓨터에 제한적으로 억세스가 가능하도록 하는데 그 목적이 있다.

    따라서 방화벽으로는 그 목적에 따라 컴퓨터를 쓰기도 하고 라우터를 쓰기도 한다.
    보통은 컴퓨터에 두개의 인터페이스를 설치하여 한개는 내부랜에 다른 한 개는 외부망에 연결한 후 해당 컴퓨터의 라우팅 테이블을 조정하거나, 필요한 소프트웨어를 설치해서 그 목적을 달성한다.

    방화벽을 설치할 경우 당연히 내부랜에 있는 컴퓨터의 인터넷 사용은 상당한 제약이 따르는데 이를 완화할 경우 그 만큼 방화벽의 본래 목적인 보안 기능은 약화되고, 반대로 방화벽 고유의 기능을 강화하면 인터넷 서비스 사용 범위는 좁아진다.

    리눅스에서 가장 손 쉬운 방화벽 구축은 port fortwarding 기법이다. 더 많은 기능을 요한다면 TIS Firewall Tool Kit을 쓰면 된다.

배철수
 

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