리눅스가 팩스를 받는다.
리눅스에 팩스 모뎀을 연결하여 팩스를 받은 후 리눅스와 랜으로 연결된 윈도우 피시에서 팩스 내용을 메일로 받는 방법을 설명한다. 팩스 내용은 gif 파일 형태로 메일에 첨부되므로 네트스케이프나 익스플로러의 메일 화면에서 팩스 내용을 확인 가능하다. 팩스 내용을 메일로만 받을 수 있는게 아니라 팩스가 도착하자마자 프린터로 출력하게 할 수 도 있고 사용자가 로긴해 있으면 사용자의 터미널에 팩스가 도착했다는 메시지를 보내게도 할 수 있다.
리눅스용 팩스 서버 프로그램은 여러가지가 있지만 여기서는 mgetty를 이용하기로한다. mgetty는 특히 모뎀 통신(dial-in)에서 널리 알려진 프로그램이지만 팩스 송수신 기능도 뛰어나다. 여기서는 일단 팩스를 받는 경우만 설명한다. 보내는 방법은 다음 기회로 미룬다.
리눅스를 팩스서버(수신)에 사용하면 좋은 점이 많다.
. 수신한 팩스 내용을 화면으로 확인 가능하다. 따라서 종이 값이 절약된다.
. 팩스 내용을 레이저프린터로 인쇄하면 팩스머신보다 더 선명하다.
. 수신 팩스 내용이 파일에 저장되므로 팩스 내용을 언제든지 불러보거나 재 인쇄 할수 있고 여러 장을 출력할 수 있다.
. 팩스 수신이 많다면 리눅스에 멀피포트와 여러대의 팩스모뎀을 장착하여 동시에 수많은 팩스 수신을 처리할수 있으므로 팩스머신을 여러대 구입하는 것 보다 경제적이다.
여러분의 집에 있는 모뎀은 대부분 팩스 기능도 겸하고 있으므로 아래 방법을 사용해서 팩스 머신 없이도 팩스를 받아 화면에서 보거나 프린터에 인쇄할수 있으므로 지금 시험해 보기 바란다.
1. 준비 사항
1.1 팩스모뎀 : 필자가 시험해 본 일부 저가 팩스모뎀은 팩스머신과 연결되지 않았다. 팩스모뎀을 업무용으로 사용하는 경우 유명업체의 제품을 사용하는게 좋다. 여기서는 3COM USRobotics Sportster 56k 외장형을 대상으로 설명한다.
1.2 외장형 모뎀은 RS-232 케이블이 필요하겠죠. 피시 쪽은 9핀 암 커넥터이고 모뎀 쪽은 25핀 숫 커넥터여야 하는데 일부 구형 피시는 피시 쪽에 25핀을 사용하는 경우도 있으니 미리 피시의 시리얼 포트를 확인해야 한다.
1.3 전화선을 팩스모뎀과 연결하는데는 RJ-11 컨넥터가 사용된다.
2. 설치 환경
2.1 피시 : 팩스를 받는데 요구되는 피시 사양은 없다. 외장형 모뎀을 사용하는 경우는 시리얼포트가 한 개 있어야 한다. (시리얼포트 없는 피시는 없겠죠?) 이 글에서 설치한 피시는 펜티엄 프로 피시이다.
2.2 리눅스 배포본
팩스서버에 사용하는 리눅스 배포본은 아무 상관이 없다. 팩스서버에 사용하는 모든 프로그램은 새로 설치하기 때문이다. 여기서는 레드햇 6.0 (영문판, cheapbytes 제품)을 사용했다.
3 팩스서버 설치에 필요한 프로그램
3.1 mgetty1.1.21-Jul24.tar.gz
원격지에서 모뎀을 통해 리눅스로의 접근을 허용하는 getty 프로그램으로 유명한 mgetty 프로그램이다. 모든 배포본에 기본으로 설치되어 있으나 배포본마다 버전 및 디렉토리가 다르므로 여기서는 소스를 받아 새로 설치하기로 한다.
ftp://ftp.leo.org/pub/comp/os/unix/networking/mgetty에서 구할 수 있다.
3.2 pbmplus
이 프로그램은 리눅스에서 그래픽 포맷을 변경하는데 많이 사용된다. 팩스 파일(g3 포맷)을 GIF 그래픽 파일로 변환하는데 이 패키지에 있는 g32pbm, pnmscale, ppmtogif 등이 사용된다.
sunsite.unc.edu 에서 anonymous ftp로 "/pub/linux/apps/graphics/convert" 디렉토리에 있는 pbmplus-10dec91-bin.tar.gz 파일을 가져온다.
(또는 위의 mgetty 사이트의 같은 디렉토리에도 있다. 이름은 pbm10dec91.tgz 이다. 여기에 있는 것은 소스이므로 컴파일해야 한다. 그런데 컴파일이 무척 어렵다.)
3.3 ksh (korn 쉘)
리눅스에서는 born 쉘을 사용하나 팩스서버의 일부 프로그램(new_fax)에서 ksh를 사용한다. 리눅스 CD에 있다.
4. 설치 절차
이 글은 인천해양과학고등학교에 설치한 내용을 그대로 인용했다. 팩스모뎀은 com1에 연결했다. com2 나 com3인 경우는 ttySX 에서 X 부분을 바꾼다. 아래에서 팩스머신이라 함은 단독으로 사용하는 일반 팩스 기계를 지칭한다.
4.1 모뎀 연결
여기서는 외장모뎀을 com1 포트에 연결했다. 그러나 모뎀은 com2에 연결하는게 보다 바람직하다. 이유는 com2 시리얼 포트가 IRQ가 3이므로 com1(IRQ가 4임) 보다 우선 순위가 빠르기 때문이다.
내장형 팩스모뎀(ISA)을 사용한다면 시리얼 마우스 및 랜카드와 IRQ 충돌 여부를 확인해야 한다. 팩스 모뎀이 com3로 셋팅되어 있다면 마우스를 com1에 연결하면 안된다. 또 일부 대만제 ISA 랜카드는 IRQ 3번을 사용하므로 com2 포트에 외장형 팩스모뎀을 연결하거나 내장 팩스모뎀을 com2나 com4에 셋팅하면 IRQ 충돌이 난다.
또한 모뎀 중에서 포장이나 매뉴얼에 윈95/98 전용이라 표시되어 있는 모뎀은 리눅스에서 사용할 수 없다. 이는 모뎀 기능의 상당 부분을 피시의 CPU 즉 윈도우에 설치됀 드라이버 프로그램에 의존하기 때문이다. PCI 모뎀도 아직 문제가 있다.
4.2 mgetty 설치
mgetty1.1.21-Jul24.tar.gz 프로그램을 임의의 디렉토리에 넣고 압축을 푼다. 필자는 보통 /apps란 디렉토리에 각종 프로그램을 저장한다. 아래 명령을 실행한다.
. tar zxvf mgetty1.1.21-Jul24.tar.gz
mgetty-1.1.21 란 디렉토리가 만들어 지고 그 안에 mgetty 소스 파일들이 위치한다.
이제 mgetty를 컴파일해야 한다. 컴파일한다고 C 언어에 대한 지식을 필요로 하지는 않는다. 단지 편집 정도만 할 수 있으면 됀다.
4.2.1 cd mgetty-1.1.21
4.2.2 policy.h-dist 를 policy.h로 복사한다.(cp policy.h-dist policy.h)
4.2.3 아래 과정은 꼭 필요하지는 않으나 실제 운영에서 조금 더 편하게 해준다.
1) policy.h에서 일부 내용을 수정한다.
#define MODEM_CHECK_TIME 3600 -> 3600을 ?1로 바꾼다.
(변경 않아도 사용에 지장이 없다)
#ifndef MAILER
# define MAILER "/usr/lib/sendmail"
# define NEED_MAIL_HEADERS
#endif
리눅스의 sendmail 프로그램 위치를 지정하는 부분이다. 팩스 내용을 메일로 받으므로 메일 프로그램의 위치가 틀리면 메일이 오지 않는다. ls ?l /usr/lib/sendmail 명령으로 확인해 본다. 레드햇이나 데비안, 수세는 문제가 없다.
4.2.4 make
4.2.5 make install
이 단계까지 진행 했으면 mgetty 설치가 끝났다. mgetty 실행 파일은 /usr/local/sbin/mgetty 이고 셋업 파일은 /usr/local/etc/mgetty+sendfax/mgetty.config 이다.
4.2.6 mgetty.config 파일을 수정한다.
1) debug 4 -> debug 9 (보다 상세한 연결정보가 표시됀다)
2) fax-id 49 115 xxxxxxxx 부분은 팩스 수신시 상대 팩스에 나타나는 번호이다. 자신의 번호를 넣는다.
(예 fax-id 82-2-2205-1986)
3) 아래는 헤이즈 모뎀의 경우에만 필요하다. 로보틱스 모뎀은 필요없다. 일부 국산 모뎀의 경우 필요하다. (팩스 모뎀 이 팩스머신에서 연결이 된 후 팩스 수신을 못하면 아래 라인을 넣어 본다)
제일 마지막 줄에 아래처럼 넣는다.
port ttyS0
switchbd 19200
(위는 모뎀이 com1에 연결됀 경우이다. com2라면 ttyS1, com3라면 ttyS2가 됀다)
4) fax-only yes
mgetty를 설치하면 다른 피시에서 전화선으로 로그인할 수도 있다. 따라서 다른 사람이 모뎀으로 연결해서 접근하는걸 방지하고 오직 팩스 수신용으로만 사용하려면 필요하다. 넣지 않으면 모뎀 및 팩스 양쪽 다 사용한다.
4.2.7 mgetty-1.1.21/g3 디렉토리에 있는 g32pbm 파일을 /usr/bin에 복사한다. chmod 755 g32pbm 명령을 준다. 이 파일은 팩스파일을 gif로 변환하는데 필요하다.
4 4.2.8 new_fax 스크립트 설치
mgetty가 팩스를 받으면 /var/spool/fax/incoming 디렉토리에 g3 팩스 포맷으로 팩스 내용을 파일로 저장한다. 그러나 이 파일은 g3 포맷이므로 그 내용을 일반적인 방법으로는 볼 수 없다. 화면에서 볼려면 gif 파일로 바꾸던지 프린터 로 인쇄하려면 postscript 파일로 변환해야 한다.
이 부분을 자동화하기 위해 mgetty에서는 팩스가 도착시 자동으로 실행되는 스크립트가 지정되어 있다. /usr/local/lib/mgetty+sendfax 에 있는 new_fax이다. mgetty 설치시 이 파일은 자동으로 설치되지 않으므로 수동으로 설치해야한다.
mgetty-1.1.21/samples/new_fax.all 디렉토리에 파일이 있으므로 이를 일부 수정해 설치한다.
아래는 파일 목록이다
-rw-r--r-- 1 202 ftp 553 Jul 28 1996 INSTALL
-rw-r--r-- 1 202 ftp 5128 Jul 28 1996 README
-rw-r--r-- 1 202 ftp 238 Jul 28 1996 archive.module
-rw-r--r-- 1 202 ftp 155 Jul 28 1996 delete.module
-rw-r--r-- 1 202 ftp 134 Jul 28 1996 fax.module
-rw-r--r-- 1 202 ftp 966 Jul 29 1996 faxlist
-rw-r--r-- 1 202 ftp 481 Jul 28 1996 faxlist.dist
-rw-r--r-- 1 202 ftp 199 Jul 28 1996 list.module
-rw-r--r-- 1 202 ftp 1125 Jan 2 1997 mail.module
-rwxr-xr-x 1 202 ftp 1886 Jul 27 1996 new_fax
-rw-r--r-- 1 202 ftp 134 Jul 28 1996 notify.module
-rw-r--r-- 1 202 ftp 368 Jan 2 1997 print.module
-rw-r--r-- 1 202 ftp 272 Jul 28 1996 write.module
이 파일들 전체를 /usr/local/lib/mgetty+sendfax 디렉토리에 복사한다.
그리고서 아래 파일들을 수정한다.
4.2.8.1 new_fax
1) 이 프로그램은 korn 쉘을 사용하므로 ksh의 위치를 지정해야한다. 데비안의 경우는 ksh가 /usr/bin에 위치하므로 첫번 줄을 아래처럼 변경한다.
#!/usr/bin/ksh
2) 9번째 줄을 아래처럼 변경한다.
home=/usr/local/lib/mgetty+sendfax
4.2.8.2 faxlist 파일은 팩스 수신시 어떤 작업을 할지를 지정한다. 즉 메일로 변화, 프린트 등.
아래는 예이다.
id
mail bae@linuxlab.co.kr
write hanbi root
print hplj
[참고] 팩스 도착시 new_fax에서 가능한 설정은 아래와 같다.
1) write : 사용자가 로그인 해 있으면 터미널 화면에 팩스 도착을 알려준다. 사용자가 로그인하지 않았으면 알려주지 않는다. 또 사용자의 message 수신 기능이 켜져 있어야 한다.
(홈디렉토리의 .profile 파일에 mesg y 를 넣는다)
2) notify : 사용자에게 메일로 팩스 도착 사실을 알려준다. 단지 도착했다는 메시지만 보내주며 팩스 내용은 들어있지 않다.
3) mail : 팩스 내용을 그래픽파일(GIF)로 변환 후에 메일에 첨부해서 보내준다.
4) print : 팩스 내용을 프린터로 찍어냄.
(1) mail bae@linuxlab.co.kr
팩스 내용을 gif 파일로 바꾼 후 bae@linuxlab.co.kr 에게 메일로 보내라는 뜻이다. 여기서는 메일 수신자는 팩스서버에 있는 계정일 필요는 없다. 팩스서버가 인터넷에 연결돼 있다면 전세계 어디에나 보낼 수 있다.(단 팩스서버에 메일서 프로그램이 가동되고 있어야 한다)
(2) write hanbi root
팩스가 도착하면 도착했다는 메시지를 hanbi 와 root에게 리눅스의 write 명령으로 보낸다. Login이 되어 있어야 받을 수 있다.
(3) print hplj
HP 의 레이저 프린터로 팩스 내용을 인쇄하라는 뜻이다. 프린터는 팩스 수신시 꺼져 있어도 상관없다. 팩스 내용은 프린트 스풀에 저장되므로 나중에 피린터를 켜면 인쇄 됀다. 단 print를 할려면 프린터 설정이 돼 있어야 하고 pbmplus 에 있는 몇 개의 파일을 추가해야 한다. 자세한 것은 위의 README 파일을 참고하기 바란다.
[주의 ]
도착한 팩스를 그래픽으로 변환해 메일로 보내는 부분은 mail.module 파일에 있다. 이 파일도 일부 수정하는게 좋다. 즉 g32pbm 위치를 절대 경로로 바꾸어야 한다. 이유는 일부 배포본에 이미 g32pbm이 들어 있기 때문에 경로를 지정 않으면 이 파일이 사용될 우려가 있다. mgetty에서 제공하는 g32pbm을 안쓰면 문제가 발생한다.
---------------------------------------------------------------------
mail()
{
mailer="/usr/sbin/sendmail -t"
log "mail to $data"
(
# some settings
tmp=/tmp/`basename $0`.$$
bound=Newfax_-${$}${$}
# optionally use the name
if [ -z "$name" ]
then
name=$id
fi
# write the mail
echo "\
Subject: Fax from $name ($pages pages)
From: faxadmin@xplor.ipf.de (Fax Subsystem)
To: $data
MIME-Version: 1.0
Content-type: multipart/mixed; boundary=\"$bound\"
--$bound
Content-Type: text/plain;
A new fax has arrived
Sender ID: $id
Name: $name
Pages: $pages
"
for file in $*
do
echo $file
done
for file in $*
do
echo "--$bound"
page=`echo $file | /usr/bin/awk -F\. '{ printf "%d", $NF }' -`
echo "Content-Type: application/octet-stream; name=\"page${page}.gif\
";"
echo "Content-transfer-encoding: x-uuencode"
echo
/usr/sbin/g32pbm $file 2>>$log \
| pnmscale 0.5 2>>$log \
| ppmtogif 2>>$log \
| uuencode 2>>$log "page${page}.gif"
echo
done
echo "--$bound--"
) | tee /var/log/faxmail | $mailer
}
-----------------------------------------------------------------------
위에서 보듯 아래 프로그램들이 설치되어 있어야 작동한다.
1 /usr/sbin/sendmail : 메일을 보내는 프로그램이다. 리눅스 CD에 있다.
2 /usr/bin/awk : 리눅스 CD에 있다.
3 /usr/bin/g32pbm : mgetty-1.1.21/g3 디렉토리에 있다.
*. /usr/local/bin/ 에도 g32pbm이 있다. Mgetty에서 제공하는 것을 쓸 것. Mail.module에는 g32pbm을 절대 경로를 넣어야 한다.
4 /usr/bin/pnmscale : pbmplus 패키지에 있다.
5 /usr/bin/ppmtogif : pbmplus 패키지에 있다.
6 /usr/bin/uuencode : 리눅스 CD에 있다.
*. uuencode 대신 uuview를 쓰면 문제 발생함.
4.3 pbmplus 파일 설치
tar zxvf pbmplus-10dec91-bin.tar.gz 명령을 주면 pbmplus10dec91 디렉토리가 만들어지고 이 안에 파일 들이 들어 있다. 이 중에서 bin 디렉토리에 있는 pnmscale, ppmtogif 두개의 파일을 /usr/bin에 옮긴다.(위의 mail.module에서 사용한다) 이 파일들은 실행모드로 지정해야 한다(chmod 755 파일명)
4.4 /etc/inittab 파일에 아래 라인을 추가한다.
팩스모뎀이 연결됀 포트를 활성화 시켜주는 절차다.
s0:2345:respawn:/usr/local/sbin/mgetty ttyS0
이 줄을 추가 후 init q 명령을 주면 이제 팩스 모뎀이 전화를 받는다. 전화를 못 받게 하려면 맨 앞에 “#”를 넣고 다시 init q 명령을 준다.
4.5 /etc/aliases 파일 수정
맨 아래에 다음 줄을 추가한다.
faxadmin: hanbi
이는 팩스프로그램이 팩스를 정상적으로 받았는지를 알려주는 메일을 보내는 계정을 지정한다. 실패한 경우도 메일이 온다. 여기의 메일은 팩스 내용을 담고 있지 않다. 단지 관리를 위한 메일이다.
4.6 korn shell 설치
new_fax 프로그램이 ksh를 사용한다
(#!/bin/ksh)
4.6.1 레드햇 6.0은 “Redhat/RPM” 디렉토리에 있다. ( pdksh-5.2.13-3.i386.rpm)
rpm -i pdksh-5.2.13-3.i386.rpm 명령으로 설치한다.
4.6.2 데비안이라면 dselect 명령을 실행해서 “Available Standard packages in section shells” 에서 pdksh를 설치한다.
4.6.3 SuSE의 경우는 1번 CD를 넣고 아래 순서로 설치한다.
1) YaST를 가동해 Adjustments of installation 메뉴의 select installation medium에서 CD-ROM 을 선택
2) Choose/Install package 메뉴의 Package information에서 F9를 누른다.(맨 위의 Search install media 왼쪽 괄호에 “X”가 표시됀다.) 검색 입력 라인(청색 라인)에 ksh를 입력해서 F5를 누르면 korn shell 설치 여부를 확인할 수 있다. 이름은 pdksh이다. 설치되어 있다면 맨 앞에 [I]가 나온다. 설치가 안되어 있으면 [space] 키를 눌러 선택 후 F10 키를 누르면 설치됀다.
5.테스트
프로그램 정상 작동 여부를 확인하기 위해 서버를 리부팅한다. (리부팅은 필수는 아니나 확실히 하기 위해서 이다)
5.1 root 로 로긴해 ps ax 명령을 실행하면 아래 라인이 있어야한다.
475 ? S 0:00 /usr/local/sbin/mgetty ttyS0
5.2 /var/log/mgetty.ttyS0 파일을 본다.
10/24 18:52:20 yS0 mgetty: experimental test release 1.1.21-Jul24
10/24 18:52:20 yS0 check for lockfiles
10/24 18:52:20 yS0 checklock: stat failed, no file
10/24 18:52:20 yS0 locking the line
10/24 18:52:20 yS0 makelock(ttyS0) called
10/24 18:52:20 yS0 do_makelock: lock='/var/lock/LCK..ttyS0'
10/24 18:52:20 yS0 lock made
10/24 18:52:21 yS0 tio_get_rs232_lines: status: RTS CTS DSR DTR
10/24 18:52:21 yS0 lowering DTR to reset Modem
10/24 18:52:22 yS0 tss: set speed to 38400 (017)
10/24 18:52:22 yS0 tio_set_flow_control( HARD )
10/24 18:52:22 yS0 waiting for line to clear (VTIME), read:
10/24 18:52:22 yS0 send: \dATQ0V1H0[0d]
10/24 18:52:22 yS0 waiting for ``OK''
10/24 18:52:22 yS0 got: ATQ0V1H0[0d]
10/24 18:52:22 yS0 CND: ATQ0V1H0[0d][0a]OK ** found **
10/24 18:52:22 yS0 send: ATS0=0Q0&D3&C1[0d]
10/24 18:52:22 yS0 waiting for ``OK''
10/24 18:52:22 yS0 got: [0d]
10/24 18:52:22 yS0 CND: OK[0a]ATS0=0Q0&D3&C1[0d]
10/24 18:52:22 yS0 CND: ATS0=0Q0&D3&C1[0d][0a]OK ** found **
10/24 18:52:23 yS0 USR Courier/Sportster 56k detected
10/24 18:52:23 yS0 mdm_gis: string 1: 'U.S. Robotics 56K FAX EXT Rev. 11.1.14'
10/24 18:52:23 yS0 got:[0a][0d][0a]OK[0d]
10/24 18:52:23 yS0 additional info: 'U.S. Robotics 56K FAX EXT Rev. 11.1.14'
10/24 18:52:23 yS0 mdm_send: 'AT+FCLASS=2.0'
10/24 18:52:23 yS0 got:[0a]AT+FCLASS=2.0[0d]
10/24 18:52:23 yS0 mdm_command: string 'AT+FCLASS=2.0'
10/24 18:52:23 yS0 got:[0d][0a]OK[0d]
10/24 18:52:23 yS0 mdm_command: string 'OK' -> OK
10/24 18:52:24 yS0 mdm_send: 'AT+FLI="032 832 5081"'
10/24 18:52:24 yS0 got:[0a]AT+FLI="032 832 5081"[0d]
10/24 18:52:24 yS0 mdm_command: string 'AT+FLI="032 832 5081"'
10/24 18:52:24 yS0 got:[0d][0a]OK[0d]
10/24 18:52:24 yS0 mdm_command: string 'OK' -> OK
10/24 18:52:24 yS0 mdm_send: 'AT+FCC=1,5,0,2,0,0,0,0'
10/24 18:52:24 yS0 got:[0a]AT+FCC=1,5,0,2,0,0,0,0[0d]
10/24 18:52:24 yS0 mdm_command: string 'AT+FCC=1,5,0,2,0,0,0,0'
10/24 18:52:24 yS0 got:[0d][0a]OK[0d]
10/24 18:52:24 yS0 mdm_command: string 'OK' -> OK
10/24 18:52:24 yS0 waiting for line to clear (VTIME), read:
10/24 18:52:24 yS0 removing lock file
10/24 18:52:24 yS0 waiting...
(내용이 많아 일부 생략했다)
5.3 이제 일반 팩스머신에서 팩스모뎀으로 팩스를 보낸다.
(아래는 리눅스 월드 팩스머신에서 보낸 결과다)
5.3.1 팩스 수신이 끝날 때 ps ax 명령을 주면 아래처럼 나온다.
516 ttyS0 S 0:00 sh -c /usr/local/lib/mgetty+sendfax/new_fax 0 '
517 ttyS0 S 0:00 ksh /usr/local/lib/mgetty+sendfax/new_fax 0 82+
519 ? S 0:00 in.comsat
537 ttyS0 S 0:00 ksh /usr/local/lib/mgetty+sendfax/new_fax 0 82+
552 ttyS0 S 0:00 ksh /usr/local/lib/mgetty+sendfax/new_fax 0 82+
553 ttyS0 S 0:00 tee /var/log/faxmail
554 ttyS0 S 0:00 /usr/sbin/sendmail -t
558 ttyS0 S 0:00 g32pbm /var/spool/fax/incoming/fn812d977S0-82+2+2205+
559 ttyS0 R 0:00 pnmscale 0.5
560 ttyS0 S 0:00 ppmtogif
561 ttyS0 S 0:00 uuencode page1.gif
5.3.2 /var/log/mgetty.ttyS0 파일 끝 부분이 아래처럼 나온다.
10/24 19:04:33 yS0 fax receiver: hangup & end
10/24 19:04:33 yS0 fax_notify_mail: sending mail to: faxadmin
10/24 19:04:34 yS0 notify: '/usr/local/lib/mgetty+sendfax/new_fax 0
'82+2+2205+1986' 1 /var/spool/fax/incoming/fn812d977S0-82+2+2205+1986.01 >/dev/console 2>&1 </dev/null'
10/24 19:04:34 ##### fax dev=ttyS0, pid=475, caller='none', name='', id=' 82+2+2205+1986', +FHNG=000, pages=1/0, time=00:00:58
5.3.3 /etc/aliases 에서 지정한 계정에 아래처럼 메일이 온다.
N 7 root@ims.inchon-mah. Sun Oct 24 19:04 37/900 "fax from 82+2+2"
Message 7:
From root Sun Oct 24 19:04:34 1999
Date: Sun, 24 Oct 1999 19:04:33 +0900
Subject: fax from 82+2+2205+1986
To: faxadmin@ims.inchon-mah.ed.inchon.kr
From: root@ims.inchon-mah.ed.inchon.kr (Fax Getty)
A fax was successfully received:
Sender ID: 82+2+2205+1986
Pages received: 1
Modem device: ttyS0
Communication parameters: +FCS:0,3,0,2,0,0,0,0
Resolution : normal
Bit Rate : 9600
Page Width : 1728 pixels
Page Length: unlimited
Compression: 0 (1d mod Huffman)
Error Corr.: none
Scan Time : 0
Reception Time : 00:58
Spooled G3 fax files:
/var/spool/fax/incoming/fn812d977S0-82+2+2205+1986.01
regards, your modem subsystem.
1) Sender ID 는 팩스 발신자 전화번호이다.( 2205-1986은 리눅스 월드 팩스 번호임)
2) /var/spool/fax/incoming/fn812d977S0-82+2+2205+1986.01 는 수신 팩스 파일 이름이며 g3 포맷이다. (이 파일을 mgetty의 sendfax 명령으로 팩스 모뎀을 통해 다른 팩스머신에 보내면 팩스 내용이 나타난다)
5.3.4 /var/log/faxlog 파일을 본다.
24.10.99 19:04 fax received (id 82+2+2205+1986, 1 pages)
24.10.99 19:04 module archive
24.10.99 19:04 module delete
24.10.99 19:04 module fax
24.10.99 19:04 module list
24.10.99 19:04 module mail
24.10.99 19:04 module notify
24.10.99 19:04 module print
24.10.99 19:04 module write
24.10.99 19:04 default section
24.10.99 19:04 id 82+2+2205+1986 matches section
24.10.99 19:04 mail to abc@ns.inchon-mah.ed.inchon.kr
pnmscale: promoting from PBM to PGM
ppmtogif: computing colormap...
ppmtogif: 3 colors found
24.10.99 19:04 mail to bae@www.linuxlab.co.kr
pnmscale: promoting from PBM to PGM
ppmtogif: computing colormap...
ppmtogif: 3 colors found
10월 24일 19시에 팩스가 왔고 그 내용이 두 사람에게 메일로 보내졌다.
즉 abc@ns.inchon-mah.ed.inchon.kr, bae@www.linuxlab.co.kr이다.
5.3.5 아래는 bae@www.linuxlab.co.kr 로 온 메일이다. 팩스 내용이 그래픽 파일로 화면에 나타난다.(그래픽 화면은 표시 않았다) 메일 내용을 프린터로 인쇄하면 팩스 내용을 볼수 있고 팩스 내용만 따로 저장할수도 있다.
6. 실제 사용 예
팩스 송수신이 많은 회사의 경우 여러대의 팩스머신을 설치할 필요가 없이 리눅스의 팩스모뎀을 팩스 수신용으로 전용하고 일반 팩스머신을 팩스 송신 전용으로 하면 이점이 많다. 리눅스에 포트만 추가하면 여러대의 팩스모뎀을 연결해 동시에 팩스 수신이 가능하기 때문이다.
팩스용 전화 라인이 한 개인 경우는 팩스 전화 라인을 먼저 리눅스의 팩스 모뎀의 라인 쪽 콘넥터에 연결하고, 팩스모뎀의 전화 쪽 콘넥터와 팩스머신의 라인 쪽 콘넥터를 양쪽에 RJ-11 콘넥터가 있는 라인으로 연결하면 팩스모뎀은 수신 전용이 되고 팩스머신은 발신 전용이 된다. Dl 방법은 팩스모뎀과 팩스머신이 멀리 떨어져 있어도 가능하다.
7. 덤
여기까지 잘 설치해서 사용한 사람을 위해 덤으로 한가지를 추가한다.
수신한 팩스 파일은 /var/spool/fax/incoming 디렉토리에 저장됀다.
이파일 이름은 아래와 같다.
fn812d977S0-82+2+2205+1986.01
1) 두번째의 n은 해상도가 normal
2) 3 ~ 9 숫자는 일련번호
3) 10 ~ 11은 tty 번호(S0 는 com1 포트)
4) “82+2+2205+1986”은 보낸 팩스의 ID (법에의해 모든 팩스머신은 팩스번호를 입력하게 되어 있음)
5) 끝의 01은 페이지 번호
이 파일은 g3 포맷으로 이 파일을 팩스머신으로 보내면 팩스가 수신됀다.
방법은 다음과 같다.
/usr/local/etc/mgetty+sendfax 디렉토리의 sendfax.config 파일에서 아래 라인을 수정한다.
fax-devices ttyS0
(팩스모뎀이 com1 포트에 있을 경우)
이제 수신한 팩스 파일을 mgetty 에 있는 sendfax 프로그램을 이용해 다른 팩스머신으로 다시 보내보자.
/usr/local/sbin/sendfax ?n 2205-1986 fn812d977S0-82+2+2205+1986.01
* sendfax 프로그램은 절대 경로를 쓸 것. 리눅스에 다른 sendfax 프로그램이 설치돼 있을 수 있음
* ?n 은 normal 해상도
* 2205-1986은 전화번호
* 끝은 보낼 파일 이름
이방법으로 수신한 팩스 내용을 다른 팩스머신으로 인쇄 할수 도 있고 여러군데의 팩스에 똑 같은 팩스를 자동으로 내보낼수도 있다.