MGETTY MANUAL
MGETTY MANUAL
Gert Doering
1999년 5월 15일 토요일 (번역)
YOON, Joo-Yung 윤주영 (번역)
mgetty+sendfax application의 tex info중에서 일차로 mgetty와
software ftp place를 번역하였습니다. 추후 빠른 시일에 나머지 부분인
sendfax를 번역하여 올리겠습니다.
mgetty는 unix환경에서 모뎀과 팩스모뎀을 가장 잘 활용하게 해줍니다.
outgoing call들을 방해하지 않고 incoming call들을 다룹니다. 모뎀의
fax class가 2 또는 2.0이면 fax를 받을수 있게 해줍니다.
sendfax는 fax를 보내는 standalone backend program입니다.
이 매뉴얼은 package를 여러 os와 modem에 어떻게 설정하고 설치하며,
프로그램들을 어떻게 사용하는 지를 설명합니다.
WARNING: 이 패키지는 아직 BETA software이고, 전혀보증되지 않았으니
귀하의 책임하에 사용하십시오. harddisk에 있는 data가 전부 지워지거나,
hardware가 망가지거나, kills your dog하는 것들은 전부 귀하의
문제입니다. 다만, 저와 수많은 다른 사람들에게는 잘 되었습니다.
mgetty+sendfax package는 Copyright (C) 1993-1997 Gert Doering입니다.
귀하께서는 mgetty+sendfax를 다시 배포하고, 고치고, 다른 program에
포함시킬 수 있지만, 밑에서 설명한 바와 같이 mgetty를 판매하여 이익을
보지 마시고, mgetty source를 그대로 포함시키시고, 제 이름을 빼지
마셔야 합니다. 수정본을 배포하시거나 mgetty code를 귀하의 project에
포함시키실 때에는 다음의 문구를 분명히 적어주시기 바랍니다.
``... derived from mgetty+sendfax by Gert Doering.''
program이 잘 실행되고, 제 노고가 값지다고 여기시면, 원하시는 만큼
기부하셔도 됩니다.
위의 "mgetty를 판매하여 이익을 보지 마시고"란 말은 다음과 같습니다.
mgetty를 보조수단으로 해서 돈을 벌 수 있고, CD-ROM collection 등에
다른 것들과 함께 mgetty를 포함시켜서 배포할 수는 있지만, mgetty를
faxmodem과 함께 팔면서 "unix fax package"
나 "unix software포함"
이라고
하거나, 조금 개선하고서 많은 돈을 받고 팔거나 하시면, 저에게 이익을
나누어 주시기 바랍니다. 이해되지 않으시면 저에게 여쭤주십시오.
이 license의 제한사항이 맘에 들지 않으실때 언제든지 연락을 주시면
공동으로 좋은 방책을 찾을 수 있겠습니다.
이 license는 release date이후 5년만에 소멸되어 이 mgetty+sendfax
release는 public domain으로 되고, 누구든지 code를 원하는 대로 할 수
있습니다.
- 이 package에는 두개의 주요 program인 mgetty와 sendfax가 들어있습니다.
- 귀하께서 갖고 계신 fax modem이 standard fax class 2라면 sendfax로
다음과 같은 일들을 하실 수 있습니다.
- 직접 또는 shell script를 이용해서 fax를 보냅니다.
- fax polling을 함. 예를 들면, 기상국에 call해서 현재의 기후지도를
fax로 보내게 할 수 있습니다. (모든 modem 제조자가 이 기능을
구현하지는 않습니다.)
- fax queue를 만들면, 나가는 fax가 자동으로 보내지고 사용자는 그 결과를
메일로 통보받습니다.
- 단일모뎀선으로 전화를 받고 외부로 걸 수 있습니다.
- smart modem에 관해서 잘되어 있어서 modem은 언제나 정의된상태로
있습니다. 특정modem초기화가 가능합니다.
- 들어오는 전화를 수동으로 받을 수 있는데, auto-answer인 ATS0=1대신에,
신호가 울리면 ATA를 치고 받으면 됩니다. 이렇게 하면 시스템이
다운되었거나 login이 되지 않을 때에는 modem이 전화를 받지 않게 할 수
있습니다.
- uugetty의 모든 특성을 포함함 : uucico 또는 다른 통신프로그램들이
만드는 LCL.*의 파일을 인정하고, 수신중일 때는 걸수 없게하여 다른
program들이 모뎀을 사용하는데 혼동을 일으키지 않습니다.
- fax를 수신할 수 있습니다. (fax class 2 또는 2.0을 지원하는 modem인 경우)
- 들어오는 FidoNet call을 인식합니다.
- 확장되는 logging과 debugging 특성이 있습니다.
- fax poll sending을 하면 시스템을 fax poll server로 만들어서 fax poll을
요청한 상대방에게 fax를 보낼 수 있게 됩니다. (예로서, 시스템정보,
현재 기후 지도 등을 보냅니다.). 소수의 modem들만이 이 특성을 지원합니다.
- Callerid가 맞을 때만 응답하게 할 수 있는데, modem이 지원되어야 하고 그
서비스에 가입되어야 합니다. callerID도 log됩니다.
- disk용량이 부족하면 들어오는 fax를 거부하게 할 수 있습니다.
Bug report, 권고사항 등을
gert@greenie.muc.de로 보내주시고, 여의치 않을 때만
gert@space.net로 보내주시기 바랍니다.
문제점과 권고사항 등을 논하기 위해 mgetty mailing list도 만들었습니다.
mgetty-request@muc.de로 요청하시면 가입하실 수 있고
(Crynwr.com으로 forward되어서 처리됨),
mgetty@muc.de로 기사들을 보내시면
됩니다. 저에게 보내시는 멜주소를 정확히 해주시지 않으면 주소들이 잘못
적용되어 모든 list 멜이 저에게로 bounce back되어 곤란합니다.
mailing list는 현재 양쪽으로 gate되어 de.alt.comm.mgetty newsgroup로
보내집니다. 독어계층구조이지만 그 group은 영어를 씁니다. 독어로
보내시면 무시됩니다.
mailing list는 WWW에 archive되오니
http://www.elilabs.com/mgarc/index.html를 참조하십시오.
(Robert J. Brown,
rj@eli.elilabs.com께 감사드립니다.)
다음의 system에 설치하고 움직이는데 성공했습니다.
SCO Unix 3.2.1 (ODT 1.0) (well tested)
SCO Unix 3.2.4 (ODT 2.0 + 3.0) (very well tested)
SCO Open Server 5.0 (well tested)
Linux (everything from 0.99pl1 up) (very well tested)
ISC Unix 3.0 (tested)
SVR4 Unix (well tested)
SVR4.2 Unix (needs more testing)
AT&T 3B1 3.51m (well tested)
HP-UX 8.x and 9.x (well tested)
AIX 3.2.5, 4.1 and 4.2 (very well tested)
SunOS 4 (well tested)
Solaris 2.x (well tested)
NetBSD / FreeBSD (all versions) (very well tested)
그밖의 Unix에서도 termio.h나 termios.h가 있으면 가능합니다. 결과가
가장 좋게 나에게 하려면 select(s) 또는 poll(s) 등의 library function을
쓰시라고 권장합니다. 그러나 system이 여의치 않으면 다른 방법도
있습니다. (Warning: Unix SVR3.1이전의 system에서 poll()을 쓰면 tty
device를 작동시키지 못하게 되니 사용하지 마십시오.
fax mode에서는 지금까지 다음의 modem들과 잘 어울렸습니다. (다 적지는
못했습니다.)
ZyXEL U1496 (various ROM releases)
(very well tested, a couple of problems remain, depending on the
ROM release)
ZyXEL 2864/2864I (various ROM releases)
(very well tested, some firmware versions have problems)
USR Courier/Sportster series
(well tested, Couriers work great, Sportsters are ok)
MultiTech (various models)
(tested, works very well, very good fax implementation)
SupraFAX v32bis
(tested, works well, no fax polling available)
GVC FM144/+
(tested, works well, no fax polling available)
TKR DM-24VF+ (Deltafax)
(tested, works quite well)
Zoom V.FAST 24K/28K
(tested, works, some problems with fax/data distinction)
모든 class 2 faxmodem에 적용됩니다. faxrec.c에 의한 page의 첫부분에서
DC2 character가 보내지는데, (매우 오래된 standard draft를 구현하는)
구식 class 2 modem은 이것을 XON으로 바꿔줘야 합니다. (
modem section
참조)
data mode에서는 Hayes 호환인 modem이면 다 잘됩니다.
compile은 매우 쉽습니다. policy.h-dist를 policy.h로 복사한 후에 그
file에 있는 comment를 보고 편집해서 local policy option을
설정하십시오.
다음에는 Makefile을 편집해서 installation path, system define, 그리고,
system에 의존적인 library를 표시하십시오 . (그 파일내에 설명되어
있습니다.)
make로 build하고, make install로 설치하십시오.
compiler가 RCS용으로 넣은 #ident줄때문에 문제가 있다고 하면 make
noident로 build하면 될것입니다.
unresolved symboss라는 error message가 link시에 생기면 Makefile에서
-DUSE_SELECT 또는 -DUSE_POLL flag을 정의해줘서 select(s)나 poll(s)
등의 system call이 있다는 것을 package에 알려줘야 합니다. (잘
모르겠으면 error가 없어질 때까지 둘 다 해보십시오.) select나 poll과
상관없으면, 어느 library를 link할 지 systems man page를 참고하여
LIBS에 -l <library>라고 적당히 넣어주세요.
select(s) call이나 poll(s) call 등은 다른 process가 전화를 걸려고 할
때 character를 먹어치우지 않도록 하는 유일한 방법이기 때문에 system에
이들이 둘 다 없으면 완전히 동작하지는 못하게 됩니다.
그렇더라도 -DUSE_READ라고 Makefile에 명시하면 다른 program이 전화를
걸려고 할 때 적어도 한 개의 character를 먹어치우지만 사용할 수는
있습니다. 예를 들어서 만일 CONNECT string이 엉망이 되면 심각하게 나쁜
결과가 되겠지만, 대부분의 경우에 먹어치우는 것은 cr이나 nl 또는
modem이 반향시키는 명령의 일부분입니다.
mgetty와 sendfax를 컴파일하면서 (Unix류의 system에서만 -- MS-DOS 나
Window는 지원되지 않는다.) 어떤 문제가 있으면 제게 연락을 주십시요.
그러나 먼저 이 설명서를 읽으십시오!
mgetty와 sendfax가 있는 그대로 사용되면, policy.h로부터 default로
compile된 것을 이용합니다.
mgetty.config (
runtime-mgetty section
참조) 과
sendfax.config (
runtime-sendfax section
참조) 등의
설정파일이 있고 읽을 수 있으면, run-time 설정을 거기에서 얻습니다.
거기에 명시되지 않은 항목들은 compile시 입력된 default에서 얻어집니다.
명령행에서 주어지는 switch는 언제나 이들 설정값들을 대체합니다. 설정
file들은 보통 /usr/local/etc/mgetty+sendfax/에 있습니다.
명령행 인수들(자세한 것은 mgetty(1)과 sendfax(8) man pages를
보십시요.)을 명시하면 이것들은 compile된 그리고 설정 file의 default를
대체합니다.
mgetty는 init process로 직접 호출해야만 login이 가능하기 때문에
/etc/rc같은 shell script, 또는 대화적으로 호출할 수 없습니다. 다음의
section에서 어떻게 이것을 하는 지 설명합니다.
어떻게 mgetty가 동작하는 지를 이해하기 쉽게하기 위해서 modem이
/dev/tty2a에 연결되어 있다고 가정하고 여러 상황에서 serial line에
연결된 모뎀을 control할 때 무엇이 발생하는 지를 예를 들면서
알아보겠습니다.
computer가 booting될 때 virtual terminal, serial line, 그리고 modem 등
적절한 i/o device들에서 동작하는 getty들을 호출하는 init process를
시작합니다. init은 mgetty에게 /dev/tty2a line을 control하도록 하는
설정file인 /etc/inittab (System V의 경우)을 읽어들입니다. 다음에
/etc/utmp에 입력하고 (login은 이것이 필요하고, 따라서 수동으로
mgetty를 기동하려고 하면 login할 수 없습니다.) 명시된 명령행에 따라서
새 mgetty process를 fork합니다.
mgetty는 시작할 때 먼저 다른 process가 잡고 있는 유효한 lock file이
있는지 점검합니다. 있으면 이 port는 사용중이기때문에 mgetty은 lock
file이 사라질 때까지 기다립니다. 존재하지 않는 process들 (stale
locks)의 유효하지 않은 lock file들은 무시됩니다.
port가 열리면 mgetty는 자신의 lock file을 만들고, modem을 초기화한
다음에 lock file을 없앱니다. 그리고서는 port에 무엇인가가 발생하기를
기다립니다. character를 읽는 것이 아니고 poll()이나 select()를
이용해서 읽을 만한 것이 있는지 알아볼 분입니다.
character가 도착되면 uucico등 다른 program이 전화를 걸기 시작했거나
아니면 modem이 RING을 보냈거나 하는 두 가지의 가능성이 있습니다.
첫번째 경우, mgetty는 port를 건드리지 않습니다. 이것은 전화거는
프로그램이 유효한 lock file을 만들었으면 쉽습니다. mgetty는 그것을
알아차리고, 사라지기를 기다립니다. (init은 다음 call을 기다리는 새
mgetty process를 시작합니다.)
두번째 경우, lock file이 없으면 mgetty는 전화가 울린다고 여기고, lock
file을 만들고 가능한 character를 읽습니다. RING을 찾으면 ATA를 보내서
전화를 들고 CONNECT message를 기다립니다. 상대방이 fax machine이면
FAX_SPOOL_IN (보통 /var/spool/fax/incoming) 디렉토리에 fax를 저장한
후에 나갑니다. modem이면 /etc/issue를 인쇄하고 login prompt를
표시합니다. login string을 받아들였으면 /bin/login을 호출하여
여기서부터의 일들을 처리하게 합니다. login은 password를 읽고 user의
login shell이나 uucico이나 dialup SLIP link 등 무엇이 됐던지
시작하지만, mgetty는 그것에 관여하지 않습니다. 누군가가 login되어
있는 동안에는 다른 program들이 modem을 사용하지 못하도록 lock file이
존재합니다.
(login.config설정file을 사용하면, /bin/login이 아닌 다른 login
program을 부를 수도 있습니다. 자세한 것은 밑을 보십시오.)
어떤 이유에서든지 mgetty가 종료되면 init은 해당 port를
reinitialize하고 (이래서 mgetty는 즉시 종료하지 않고 lock file이
없어지기를 기다립니다.) 바로 전의 login이 남겨놓은 lock file을
제거하는 새로운 mgetty process를 시작합니다.
lock file 취급은 까다롭지만 매우 중요합니다. modem을 사용하는 모든
program은 한가지의 locking protocol에 동의하는것이 필수입니다. 그렇지
않으면 program은 modem이 사용중인 줄 모르고 어쨌든 전화를 걸려고 할
것입니다. 전형적인 lock file은 /var/lock/LCK...ttyxx이고 현재 modem을
사용중인 process의 process ID (PID)를 포함합니다. 다른 process들은
그것을 읽어서 현존하는 process에 속하는 지, stale이어서 제거할 수 있는
지를 알 수 있습니다. process가 lock file을 다른 곳에서 찾거나 어떤
것은 ASCII로 PID를 적고, 어떤 것은 binary number로 된 PID를 읽으려
하면 유효하지 않게 됩니다. (mgetty와 sendfax는 외부 lock file이
binary이든지 ascii든지 상관없지만 다른 program들은 상관있습니다.
mgetty는 어떤때는 이러한 문제를 알아차려서 warning을 log합니다.)
전형적인 mgetty의 inittab 등록은 다음과 같이 합니다. (SystemV-style
OS's)
<tt>:rlevel:<respawn|off>:/usr/local/sbin/mgetty [options] <device>
여기서 tt는 init과 내부용의 who가 사용하는 device명의 간략형입니다.
보통 S0 또는 2A 등으로 됩니다.
rlevel은 네번찌 field의 command가 가동되는 runlevel로서 23 또는 56
등으로 되는데 man init과 현존하는 /etc/inittab을 보시기 바랍니다.
다음 field는 init에게 해당항목이 active(respawn)한지 그렇지 않은지
(off) 알려줍니다. 그리고 네번째 field는 가동할 program의 full path를
명시합니다.
다음의 선택사항들이 가능합니다.
- -x <level>
-
이것은 debugging level을 정합니다. 높은 level을 주면 내부작동에
대한 매우 자세한 정보가 log file에 적히기 때문에 문제를 진단하는데
매우 중요합니다.
- -s <speed>
-
이것은 port의 speed를 정합니다. 명시하지 않으면 policy.h
(definition DEFAULT_PORTSPEED)에 있는 default가 사용됩니다.
- -k <space>
-
이것은 incoming FAX spool directory에 요구되는 최소 kbyte을
정합니다. spool directory에 이만큼의 space가 없으면 연결은
종료됩니다. default는 1 megabyte입니다.
- -m 'expect send ...'
-
이것은 modem 초기화 sequence를 정합니다.
- -r
-
이것은 직접연결선에 사용합니다. (modem chat이 되지 않습니다.)
- -p <login prompt>
-
이것은 (다양한 escape가 허용되는) login promt를 정합니다.
- -n <rings>
-
이것은 전화를 받기 위한 ATA를 보내기 전에 받아들일 RING
message의 수를 정합니다. default는 한개의 RING입니다.
- -R <sec>
-
이것은 ring-back나 ring-twince를 가능하게 합니다. 이렇게 하면
mgetty는 call을 즉시 pick-up하지 않고 전화를 건사람은 첫번째 ring뒤에
전화를 끊었다가 <sec>초 뒤에 다시 걸어야 합니다.
- -i '/etc/issue'
-
이것은 login을 prompt하기 전에 보여줄 issue file을 명시합니다.
- -S '<fax_document>'
-
이것은 (full path를 적어서) polling을 요구하는 fax
machine에 보내줄 문서, 또는 (한 줄에 한 file씩) G3 fax file을 list한
text file을 명시합니다.
/etc/inittab의 등록 본보기는 다음과 같습니다.
F1a:23:respawn:/usr/local/sbin/mgetty -x 3 tty2a
option에 대해 더 자세한 설명을 원하시면 mgetty(1) man page를 보십시오.
serial line마다 별도의 device를 두 개씩 마련하는 operating system들도
있는데, 그중에서 하나는 getty에게 특별히 할당됩니다. 이것은
mgetty와는 잘 맞지 않기때문에 좋은 방법은 아니고 auto-answer mode에
주로 적용됩니다.
밖으로 전화를 거는 device를 같이 사용할 때에만 mgetty가 전화를
수동으로 받게할 수 있습니다. /dev/modem으로 symlink를 만드는 사람들도
있는데, 이때는 모든 comm program들도 똑 같이 적용해야지 그렇지 않으면
lock file name때문에 문제가 생깁니다.
여러 system에 대한 보기는 다음과 같습니다 (역자주: Linux만을 예로 듭니다).
- Linux:
-
/dev/ttyS* 입니다. (/dev/cua*가 아닙니다.
Linux Section
을 보십시오.)
mgetty는 모든 일을 LOG_PATH.<device>라는 logfile에 적습니다.
(LOG_PATH는 policy.h에 정의되어 있습니다.)
예를 들면 /var/log/mgetty.ttyxx에 system에서 일어나는 사항을 볼 수
있습니다. (fatal error가 있으면 console에도 적는데 가능하지 않으면
ADMIN에게 mail을 보냅니다.) log file의 명칭은 policy.h에서 바꿀 수
있습니다.
-DSYSLOG 옵션으로 mgetty를 compile하면 auditing과 error log message를
syslog에도 적습니다. (system이 지원해야 합니다.)
mgetty가 전화를 받지 않게 하려면 /etc/nologin.<device> (예를 들면
/etc/nologin.tty2a) file을 만듭니다. mgetty가 incoming call을
알아차렸는데 이 file이 있으면 전화를 받지 않습니다. 이렇게 해야
전화를 거는 사람은 login이 허락되지 않는 상황에서 쓸데없는 전화로 돈을
허비하지 않게 됩니다. policy.h에 있는 NOLOGIN_FILE를 변경해서
filename을 바꿀 수 있습니다.)
이렇게 하면 - 낮에는 음성통신으로 쓰는 전화선에 연결된 modem의 경우
등에 - 꽤 세련된 scheduling을 할수 있습니다. modem이 저녁 9시부터
아침 7시까지만 전화를 받게 할 수 있습니다. cron으로 하여금
/etc/nologin.device file을 아침 7시에 만들어서 modem이 낮동안에는
전화를 받지 않게 하고, 저녁 9시에 지워서 밤에는 전화를 받게 하면
됩니다.
자연적으로 확장시킬 수 있습니다. 예를 들면, 주말에만 전화를 받게
한다든지 (비슷한 cron job입니다.), disk의 용량이 5 Mbyte보다 적으면
번화를 받지 않게 한다든지 (주기적으로 process가 free disk space를
검사해서 /etc/nologin.* file을 만들게 합니다.) 등입니다.
두 unix machine 또는 unix machine과 다른 것이 direct serial line으로
연결되어 있고 outgoing traffic과 충돌하지 않는 unix쪽에 getty
program을 운영하고자 할 때도 (예를 들면, 두 unix machine이 있어서 모두
getty를 운영하고 있고, 모두 uucp 연결을 기동할 수 있는 경우) mgetty를
쓸 수 있습니다. -r 옵션으로 시작하면 modem을 initialize하지도 RING을
기다리지도 않습니다. 다만 port에서 조용히 기다릴 뿐입니다.
상대편에서는 mgetty가 최소 한 character를 받기 전에는 /etc/issue를 볼
수 없기 때문에 두 mgetty는 서로 예기할 수 없습니다.
이러한 방법은 leased line with modem에 대해여 lease line mode에서도
유효할 것이지만 modem setup에 따를 지도 모릅니다.
보통 전화건 사람이 login name을 넣으면 mgetty는 /bin/login을 불러서
password를 검사하고 system login을 합니다.
특별한 경우로는 /bin/login대신에 다른 program을 부를 수 있습니다.
예를 들면, U*로 시작하는 login name들에게는 (uucico가 authentication을
하는) /usr/lib/uucp/uucico -L <username>을 부르거나 (이 때에는 taylor
uucp 1.05나 patches/taylor.pl에 있는 patch를 적용한 taylor uucp 1.04을
같이 사용혜야 합니다.), incoming Fidonet call에 대하여 (Eugene
Crosser의 ifmail package에 있는 ifcico를 사용하여)
/usr/lib/fnet/ifcico를 부를 수도 있습니다.
mgetty로 이 모든 것을 할 수 있습니다. login.config 설정 file로
조정하는 데, 이것은 보통 (policy.h의 LOGIN_CFG_FILE로 정의된)
/usr/local/etc/mgetty+sendfax/에 있습니다. 저는 comment를 많이
사용하여 sample file을 준비했으니 거기에 있는 사용구문을 보아주시기
바랍니다. mgetty는 -DFIDO로 compile되어야 incoming fido call을
알아차릴 수 있습니다.
보안때문에 걱정되시면 다음의 방법을 적용하시기 바랍니다. 신뢰하고
이미 아는 사용자들에 대해서만 /bin/login을 부르고, /bin/false는 다른
login name에 대해서 불러서 login.config에 기재된 사람들만 log in할 수
있도록 합니다.
2.8
Using Caller-ID to selectively accept or reject calls
어떤 전화회사들은 Caller ID라는 service를 가입자들에게 제공하여
전화건사람의 전화번호가 전송되어도록 합니다. 지원여부는 해당회사에
알아보셔야 합니다.
modem이 callerid 정보를 추출할 수 있고, mgetty가 policy.h에 정의된
CNDFILE로 compile되었으면 mgetty는 전화를 받기전에 전화건사람의 번호를
검사할 수 있습니다. (지금 당장은 ZyXEL에만 적용된다고 알고 있습니다.
Rockwell용도 만들었지만 아직 feedback을 얻지 못했습니다. 지원자는
나서 주시기 바랍니다.) CNDFILE이 정의되지 않았거나 그 file이 없다면
모든 전화가 허용됩니다.
중요사항 : 대부분의 analog modem들은 (mgetty.config에 'rings 2'라고
설정하여) 대기 RING수를 2개 이상으로 해야 합니다. ID code가 첫번째와
두번째 RING 사이에 보내지기 때문입니다. mgetty가 너무 빨리 전화를
들면 modem은 이 정보를 얻을 수 없습니다.
전화를 받을 지 받지 않을 지는 policy.h의 CNDFILE로 정해진 설정 file로
조정합니다. 보통 /usr/local/etc/mgetty+sendfax/dialin.config가
default입니다. (보기 file은 default에 의거하여 설치되었습니다.)
그 file에는 일련의 token들이 newline, comma, tab, space 등으로
구분되어 있습니다. 맞는 token이 있을 때까지 callerid 숫자는 각각의
token과 차례대로 비교됩니다. callerid 정보가 token의 길이만큼
비교되어 같으면 일치되는 것입니다. token앞에 '!'이 붙어 있으면 전화를
받지말라는 뜻입니다. 'all'은 어떤 전화번호든지 일치시키기 때문에
cndfile을 더이상 scan하지 않습니다. callerid 숫자가 없으면 'none'으로
가정합니다. '#'로 시작되면 comment입니다. file의 맨 끝에는 'all'이
있다고 가정됩니다.
예를 들면 다음과 같습니다.
# list of my friends' data lines
3433535, 7445343, 5551212
# dad's fax
4164646777
# disallow [other] calls from numbers matching the following prefix:
!416
# disallow that speed dialer that keeps hitting my machine
!3444444
# allow all calls with the following prefixes
832, 555
# don't allow calls when there's no callerid:
!none
# It's okay to accept calls from out of area
# ("OUT_OF_AREA" token seems ZyXEL specific)
OUT_OF_AREA
# disallow all other calls
!all
앞으로 Chris Lewis가 상대방 전화 번호에 따른 특별한 modem
initialization string (예를 들면 2400 bps용, fax용 등)을 더할
계획입니다.
대부분의 경우에는 이러한 정적 설정으로도 충분합니다. 특별히
필요하다면 이것을 결정하기 위해 외적 program을 실행시킬 수도 있습니다.
그 program 이름은 mgetty.config에 있는 cnd-program statement로 설정할
수 있습니다. 그 명령행 인수는 다음과 같습니다.
<program> <tty> <CallerID> <Name> <dist-ring-nr.> <Called Nr.>
CallerID는 알려진다면 상대방전화의 번호이고, 그렇지 않으면
'none'입니다. Name은 상대방의 이름이거나, 알려지지 않았을 경우에는 '
'입니다. dist-ring-nr는 전화선에 독특한 RING이 있고 modem이 이를
지원할 때의 RING type이거나 알려지지 않은 전화에 대해서는 '0'입니다.
Called Nr.는 (ISDN이고, ELSA나 ZyXEL 2864I가 하듯이 modem이 host에
걸려진 전체번호를 signal해야만 의미가 있는) 걸려진 번호입니다.
예를 들면 ISDN을 사용할 때 12345에서 56789로 건 전화가 ttyS3로 왔으면
다음과 같이 어떤 program으로 연결됩니다.
check.cnd ttyS3 12345 '' 0 56789
그 program은 전화를 받아들일 지 결정할 값을 반환하는데, 일반적으로
다음의 값들이 정의되어 있습니다.
0 - accept call, no specific preferences
1 - reject call
장래의 version에서는 mgetty/vgetty가 전화를 받도록 되어 있는
방식(data/voice/fax/...)을 외적으로 선택하도록 하겠지만 아직은
구현되지 않았습니다.
주의 : 이것은 전화를 받아들일 것인가 아닌가를 결정하는 데에만 쓰이는
것이 아닙니다. caller ID를 X11 window하에서 외부 LCD screen에
표시하든지, 인쇄하거나 D-Channel Callback을 하든지 간에 Caller ID
data를 필요로 하는 것이면 무엇이든지 할 수 있습니다.
주의2 : 부르는 program의 특성에 조심하십시오. user id 0 (root)로
실행되기 때문에 조심하지 않으면 security에 위험할 수도 있습니다.
2.9
Runtime configuration for mgetty: 'mgetty.config'
compile되어진 default만으로도 mgetty는 썩 잘 됩니다. (그것은 오랫동안
유일한 설정방법이었습니다.) 그러나, 그것은 융통성이 그리 많지 않고,
특히 다른 modem type을 쓰고 있으면 매우 불편합니다. 명령행 option으로
built-in default를 바꿔줄 수는 있지만, 이 방법도 /etc/inittab의
기재사항을 너무 길고 읽기 어렵게 만들기 때문에 완전하지는 않습니다.
(policy.h의 MGETTY_CONFIG로 정의된) config file support로
compile되었다면 mgetty는 Taylor UUCP와 매우 유사하게 설정 file을
사용하여 동적설정을 아주 쉽게 할 수 있습니다.
config file은 보통 /usr/local/etc/mgetty+sendfax에 있고
mgetty.config로 되어 있습니다.
그 형식은 매우 쉽습니다. 줄마다 keyword가 있고, 공백으로 구분된
인수가 있을 수 있습니다. 빈줄과 (#로 시작되는) comment line도
허용됩니다.
config file은 port <tty-name> line마다 구분된 port별 section으로
묶여져 있습니다. 첫번째 port line 전에 있는 모든 사항은 global
default를 명시하고, 두 port statement의 사이에 있는 모든 사항은 바로
뒤이어 오는 device에만 유효한 설정을 명시합니다. 제가 보기를
들겠습니다.
# global defaults:
# fax station id is always the same
fax-id ++49-89-1234
# per port stuff
port tty1a
# This modem can't fax
modem-type data
port tty2a
# more verbose logging for this modem
debug 9
각 줄의 data 부분은 (대부분의 경우) string이거나, (modem talk을
명시하는, whitespace로 구분되어지는 일련의 string으로서 expect로
시작하고 send가 오고 다시 expect를 적는) chat sequence이거나, (leading
character인 1-9/O/Ox 등에 따라서 10진수, 8진수, 또는 16진수 등으로
해석되는) 정수이거나, (y(es)나 t(rue), 그 반대인 n(o)나 f(alse)인)
boolean입니다. boolean value이외에는 인수를 명시하지 않으면
(허용된다면) 'value not set'로 되거나, (value가 의무사항이면)
'error'로 됩니다. Boolean의 경우에는 'true'로 해석됩니다.
명령행에 적으면 설정항목을 많이 대체할 수 있습니다. 그 때에는
명령행의 option이 설정 file의 설정에 우선합니다. (그리고 built-in
default보다 우선합니다.) 보통 built-in default는 policy.h에서
정해집니다.
가능한 설정항목은 다음과 같습니다. (명령행 option이 가능한것은
bracket에 나타냈습니다.)
- `speed' [-s] PORT SPEED
-
사용할 port speed를 정수값으로 명시합니다. Default는
DEFAULT_PORTSPEED입니다. 주어진 speed가 유효하지 않다면 mgetty는
심하게 불평하고 종료합니다.
- `switchbd' FAX RECV. SPEED
-
주로 Rockwell chipset이 그렇지만, 어떤 modem은 fax mode로 될 때 19200
bps로 돌려집니다. 다른 것들은 다른 speed로 바뀔 수도 있습니다. (제가
아는 바는 없습니다.) modem이 Rockwell 기반이고 fax가 잘 수신되지
않으면 switchbd를 19200으로 해보십시오. (Warning: 이것이 잘못
정해지면 fax 수신은 틀림없이 실패합니다. 대부분의 정상적인 modem에는
필요 없습니다.) Default는 FAX_RECV_SWITCHBD입니다.
- `direct' YES/NO [-r]
-
Direct line을 사용할 것이라고 mgetty에게 알립니다. Mgetty는 modem을
초기화하지 않으며, RING을 기다리지도 않을 것입니다. 다만 character를
기다려서 issue file과 login prompt를 내보냅니다. nullmodem cable으로
연결하려면 이 option이 필요합니다. Mgetty는 modem용으로 설계되어서
default는 no입니다.
- `blocking' YES/NO [-b]
-
mgetty가 blocking mode로 device를 열도록 합니다. 이는 carrier
detect가 set되기까지는 open() system call은 이루어지지 않음을
말합니다. 이것은 mgetty가 getty로 call되면 set됩니다. 이 기능이
얼마나 유용할 지는 모르겠지만 완전히 하기 위해 포함시켰습니다.
Default는 no입니다.
- `port-owner' USERNAME/USERID
-
mgetty가 username에 tty line을 chown하게 합니다. (string이나 integer
uid로 명시하여야 하며, 이때 integer는 유효한 수여야 합니다.) 이것은
security목적상 강력하게 권장됩다. modem line을 그릇되게 사용되지
않으려면 오직 신뢰하는 사용자에게만 port access를 주십시오. Default는
PORT_OWNER입니다.
- `port-owner' USERNAME/USERID
-
mgetty가 이 group id에게 tty line을 chgrp하게 합니다. (group name이나
integer gid로 주어질 수 있습니다.) 주어지지 않거나 유효하지 않으면
port owner의 primary group id가 사용됩니다. Default는
PORT_GROUP입니다.
- `port-mode' PERMISSONS
-
device를 chmod할 permission을 명시합니다. 결코 modem device를
전방위접근가능하도록 하지 마시고 0660이나 더 나아가서는 0600을
사용해야 좋습니다. Default는 PORT_MODE입니다.
- `toggle-dtr' YES/NO
-
시작할때 modem을 reset하기 위해서 DTR line을 lower해야 하는지를
mgetty에게 알립니다. Default는 yes이지만 어떤 (소수의) modem들은
알레르기 반응을 하여 crash됩니다.
- `toggle-dtr-waittime' MSECS
-
DTR line을 low로 유지할 시간을 명시합니다. Default는 500
millisecond입니다.
- `data-only' YES/NO [-D]
-
mgetty가 modem의 성능중에서 data 부분만 쓰도록 하고 fax 부분은 쓰지
않도록 합니다. Default는 false입니다. modem이 incoming fax와 data의
call을 구분하지 못할 경우에 유용합니다.
- `fax-only' YES/NO [-F]
-
mgetty가 fax 전용 mode로 됩니다. modem이 incoming fax와 data의 call을
구별하지 못하고, fax가 data보다 더 중요하다고 판단될 때 유용합니다.
security 이유로 data call을 멈추고 싶을 때에도 유용합니다. (이것은
login.config로도 할 수 있습니다.)
- `modem-type' [-C] MTYPE
-
port에 연결된 modem의 종류를 명시합니다. Default는
DEFAULT_MODEMTYPE입니다. 유효한 option들은 다음과 같습니다.
- auto
-
mgetty가 알아서 modem type을 찾아냅니다. (이것은 경우에 따라서는
바람직하지 않거나 구식 modem에서는 실패할 지도 모릅니다. Mgetty가 ATI
명령으로 modem type을 찾아내고 그에 따른 적당한 fax class를
선정합니다. (미확인 modem type이라서) 그렇게 할 수 없을 때에는 class
2.0을 먼저 해보고, 그 다음으로는 class 2를 시도합니다.
- c2.0
-
Modem이 class 2.0 fax mode입니다. Class 2보다 더 나은 표준이라서 두개
다 가능하면 class 2.0이 더 잘 작동됩니다. USR, ZyXEL 1496과 2864,
그리고 ELSA 등의 modem에 적용된다고 알려졌습니다.
- cls2
-
Modem이 class 2 fax modem이고 mgetty는 class 2.0을 시도하지 않습니다.
- c2.1
-
Modem이 새로운 ITU T.32 standard (class 2.1)에 부합합니다. 제가
알기로는 아직까지 여기에 맞는 modem은 없지만, class 2.1은 class 2.0과
흡사하므로 쉽게 지원할 수 있을 겁니다.
- cls1
-
Modem은 class 1 fax만 할 수 있습니다. 아직 구현되지 않았습니다.
(게다가 조금도 권장하지 않습니다.)
- c1.0
-
Modem이 ITU T.31 standard에 맞는 class 1 fax를 할 수 있습니다. 이것은
class 1보다 많이 좋지는 않지만 (가능하면 class 2나 2.0을 쓰십시오.),
어쨌든 더 좋은 겁니다. 아직 구현되지 않았습니다.
- cls2ok
-
(더이상 쓰이지 않습니다. modem-quirks 02를 사용하십시오)
- data
-
'-D'와 같아서 fax 초기화를 하지 않습니다.
(아직까지는) 이 option으로 mgetty가 fax mode만 하고 data call을
거부하도록 할 수는 없으니꼬 fax-only true statement을 사용토록
하십시오.
- `modem-quirks' BITMASK
-
어떤 모뎀은 fax standard를 특이하게 해석합니다.. mgetty+sendfax의
내부 작동중에는 그런 modem에 적용되는 것입니다. 인수는 fax_lib.h에
있는 값에서 조성된 것으로서 quirk당 한 bit입니다. 이것을 쓰는 modem이
있다면 그것은 자동적으로 검출되어서 적당하게 처리되기 때문에 이
option을 쓸 일은 거의 없을 것입니다.
지금으로서는 다음과 같이 quirk가 정의되어 있습니다.
0x01 leave the modem in class 2 mode instead of switching
to class 0 before sending ATA (you might try this if
adaptive fax/data answer doesn't work).
0x02 class 2 bit order is correct (MultiTech) - unimplemented
0x04 do not trust +FPTS:x,lc,blc values
0x08 do not wait for XON character when sending pages
0x20 old USR Courier V.32 AT+FCC/+FMINSP bug workaround
- `init-chat' [-m] EXPECT SEND EXPECT SEND ...
-
mgetty에게 modem을 initializing하도록 chat sequence를 알려줍니다.
주의 : 그 sequence는 expect로 시작하는데 대부분의 경우에 '""'
(nothing)입니다. UUCP가 이런식으로 하고 저도 혼란을 일으키지 않으려고
순서를 이렇게 정했습니다.
보기 :
init-chat "" ATQ0E1V1H0 OK ATL0M0S0=0 OK AT&K3 OK
- `force-init-chat' EXPECT SEND EXPECT SEND ...
-
modem이 간단한 AT 명령에도 반응하지 않는 mode에서 교착되는 때도
있습니다. 이것은 보통 modem이 DTR drop을 무시하도록 설정되어 있으면서
아직 상대방으로 data 연결이 되어있기 때문에 발생합니다. voice modem을
사용한다면 voice mode에서 교착될 수가 있습니다.
이러한 상황에서는 modem이 적당한 response를 돌려보내지 않기 때문에
정상적인 init-chat은 time-out이 됩니다.
force-init-chat chat sequence를 써서 modem을 정상적인 상태로 돌릴 수가
있습니다. default 설정에서는 DLE ETX character를 보내서 voice modem을
살리고 (pause)+++(pause)ATH0 sequence를 보내서 modem을 data mode에서
command mode로 돌려 놓습니다.
이 sequence를 (아무 불편 없이) init-chat의 앞부분에 붙일 수도
있습니다만 '+++'의 앞뒤에 있는 pause때문에 매우 늦어집니다. .
- @minus ????????
-
어떤 모뎀은 initializing하면서 data mode에서 fax mode로 아니면 그
반대로 될 때 부분적인 설정이 무시되는 경우도 있습니다. 예를 들면, USR
model중에는 'Caller ID delivery' (AT#CID=1) 설정이 무시되기 때문에,
ELSA modem중에는 voice mode에서 data mode로 바뀔 때 현재의 DTE port
speed가 무시되기 때문에, RING message를 틀린 baud rate와 함께 내보내게
합니다.
이런 modem들은 이 명령을 써서 fax와 voice의 initializing이 모두 된
다음에 AT command가 실행되도록 할 수 있습니다. 하지만 조심하십시오!
만약 이때에 ATZ (modem reset)이나 그 비슷한 것을 쓰면 fax/voice 설정
모두가 지워집니다.
- `MODEM-check-time' SECONDS
-
소리도 없이 무너져 내리고는 하는 modem도 있습니다. 이 option을 주면
mgetty는 modem이 아직도 반응하는 지를 간단한 'AT...OK' sequence로 매
수초마다 검사합니다. 반응하지 않으면 mgetty는 재가동하고 전체 modem
reset을 합니다. Default는 MODEM_CHECK_TIME입니다.
- `rings' [-n] NNN
-
mgetty가 전화를 받기까지 기다려야 할 RING message 수를 정합니다.
Default는 1입니다. 주의: 무슨 이유로든지 modem이 자동으로 전화를
받으면 ATS0=mmm으로 설정한 값과는 다른 것으로 설정하십시오. 그렇게
하지 않으면 modem의 자동전화받기와 mgetty의 수동전화받기가 충돌합니다.
(대부분의 modem은 자동전화받기를 하는 중에 명령이 들어오면 전화를
내려놓습니다.)
- @minus????????????????????????????
-
ISDN modem이 전화건 상대방의 번호 (MSN)을 host로 signal해줄 수 있다면
이 option으로 그 MSN을 특별히 지정된 RING에 붙일 수 있습니다. 그
MSN은 list와 비교되어서 첫번째로 맞는 것이 특별히 지정된 RING 번호로
사용됩니다.. 왼쪽에서 오른쪽으로 list를 조사합니다.
이것은 ELSA와 ZyXEL의 ISDN terminal adaptor에서 작동한다고 알려져
있습니다.
- `get-cnd-chat' CHAT SEQUENCE
-
이것은 modem이 'Caller ID' 찾아내기를 지원하지만 특수한 명령을 주어야
CID information을 얻을 때 필요합니다. 지금은 일부 ELINK ISDN adaptors
(Elink-ISDN section 잠조)에만 필요하고, 다른 대부분의 CID가능
modem들은 알아서 CID른 보내기때문에 이것이 필요없습니다.
ring을 2 이상으로 설정하십시오. 그렇지 않으면 CID얻기 code가 작동되지
않습니다.
- @minus ?????????????
-
incoming call을 받기전에 가동할 program을 명시합니다. (polich.h의)
CNDFILE이서 정적 Caller ID selection이 충분치 않거나 Caller ID data를
다른 목적(예를 들면 displaying)으로 쓰려면 이것을 사용하십시오.
Caller-ID section
참조.
- `answer-chat' CHAT SEQUENCE
-
이것은 전화를 받으려고 쓰는 명령 sequence입니다. 보통 default인 '""
ATA CONNECT \c \r '로 하면 되지만 (ATA가 허용되지 않기 때문에) `ATA'
대신에 `ATS0=1'으로 해야하는 modem도 있습니다. 여분의 '\r' expect
string을 주어야 code가 전체 CONNECT xyz\r string을 잡을 수 있습니다.
\r이 없어도 작동은 되지만 logging information이 자세하지 않을
것입니다. 지금은 \r이 구현되지 않았으므로 작동하지 않습니다. 쓰지
마십시오.
- `answer-chat-timeout' SECS
-
anser-chat동안에는 여기에서 명시한 시간내에 expect string이 보여져야
합니다. Default는 80초입니다. 이 시간은 ATS7=...의 modem
설정명령으로 정한 시간보다 적어도 5초정도 더 길어야 합니다.
- `autobauding' YES/NO [-a]
-
어떤 modem은 연결후에 DTE line speed를 통신선 speed로 전환합니다.
예를 들면 'CONNECT 2400'을 보낸 다음에 modem은 2400 bps로 전환합니다.
새 modem은 보통 DTE baud rate를 lock하는 switch가 있는데 이것을 강력히
권장합니다. modem이 자꾸 이 speed switch를 할 때 autobauding을 true로
설정하면 mgetty는 거기에 따를 것입니다.
- `ringback' YES/NO [-R]
-
modem과 전화를 같은 선에서 사용해야만 할 때 ringback이나 ring-twice를
이용할 수 있습니다. mgetty는 첫번째는 전화를 받지는 않고 기억하고
있다가, (ringback-time으로 명시된 시간내에 다시 걸려오는) 두번째
전화를 받습니다.
- `ringback-time' SECS
-
ringback이 활성화되어 있다면 첫번째와 두번째 전화의 경과시간을
명시합니다. Default는 30초입니다.
- `ignore-carrier'
-
modem이 DCD (carrier detect) line을 표시하지 않거나, serial port나
cable 또는 serial driver가 망가졌으면 CONNECT까지는 잘돼고 나서
mgetty나 login이 block할 수가 있습니다. (이때 모든 것이 잘 작동하다가
갑자기 port로 더이상 아무것도 보내지지 않게 됩니다.) operating
system에 따라서 '/etc/issue'를 print하기전이거나 'password:'
prompt다음일 수 있습니다. 이것을 풀려면 ignore-carrier를 true로
설정하여 carrier detection의 switch를 끄십시오. Default는
false입니다. 주의: 이렇게 하면 전화한 사람이 깨끗이 logging out하지
않고 그저 전화를 끊으면 system은 그것을 알아채지 못하게 됩니다.
이것은 modem을 hanging하게 만드는 등의 결과가 되게 합니다.
- `issue-file' [-i] FILE
-
이것은 login prompt에 앞서서 print되는 file입니다. Default는
'/etc/issue'입니다. connect speed, date 등등으로 특별한 character를
대체할 수 있습니다. 밑에 있는 (login-prompt) list를 보십시오.
- `prompt-waittime' MSECS
-
이것은 isuue file과 login prompt를 print하기 전에 modem과 선이 조정될
때까지 기다릴 시간을 명시합니다. Default는 500 millisecond입니다.
- `login-prompt' [-p] PROMPT
-
이것은 mgetty가 내보낼 login prompt를 경시합니다. 이 string(과 issue
file)에 있는 특별한 character들이 인식되면 다른 것으로 교체됩니다.
- @ system name
- \n newline
- \r carriage return
- \g bell
- \b backspace (ascii 010)
- \f form feed (ascii 013)
- \t TAB
- \P (and \L) port name (e.g. ttyS0)
- \C date and time, in "ctime()" format
- \I Connection string (e.g. 2400/REL)
- \N (and \U) number of users currently logged in
- \S Port speed (e.g. 38400)
- \D current date in dd/mm/yy format
- \T current time in hh:mm:ss format
- \DIGIT character with the specified octal code
login prompt의 최대길이는 (확장후의) 140 character로 제한됩니다.
- `login-time' SECS
-
사용자가 log in할 수 있는 최대 시간입니다. 그 시간내에 login이
이루어지지 않으면 mgetty는 전화를 끊습니다. Default는 policy.h에 있는
MAX_LOGIN_TIME입니다.
- `fido-send-emsi' YES/NO
-
이것은 mgetty가 -DFIDO로 compile됐을 때문 유효합니다. mgetty가
login을 prompt하기 전에 FidoNET style ``EMSI_REQA77E'' packet을 보내야
하는 지를 통제합니다. Default는 on입니다. FIDO 지원으로
compile했어도 PPP client (또는 사용자)가 그 string때문에 혼란스러워
하는 문제를 경험하신다면 이것을 끄십시오.
- `fax-id' [-I] LOCAL FAX NUMBER
-
이것은 fax mode에서 전화건 상대방에게 알릴 fax station ID를 정합니다.
(보통 fax 전화번호입니다.) Default는 FAX_STATION_ID입니다.
- `fax-server-file' [-S] POLL CONTROL FILE
-
이것은 누군가 fax polling mode로 전화해왔을 때 상대방이 받을 문서인
fax file입니다.
보통 그 file은 text file로서 전하한 상대방 machine으로 보낼 G3 file을
한 줄에 한 개씩 적습니다. Comment line은 (#로 시작하는데) 무시됩니다.
후진일관성을 위해서 mgetty는 이 file자체가 G3 file인지 검사해서
그렇다면 이 file을 보냅니다. (이때는 한 page만 보낼 수 있습니다.)
모든 modem이 fax poll server mode를 지원하지는 않습니다. ZyXEL과
MultiTech는 지원하고 USR은 그렇지 않다고 알고 있습니다.
- `diskspace' [-k] KBYTES
-
이것은 fax 수신을 허락할 용도로 fax spool directory에서 쓸 수 있는
disk space의 최소량을 mgetty에게 알립니다. Default는 1 Mbyte입니다.
- `notify' MAIL ADDRESS
-
이것은 fax가 수신되었을 때 mail을 받을 주소입니다. 충분히 시험되지
않았습니다.
- `fax-owner' USERNAME/UID
-
- `fax-group' GROUPNAME/GID
-
- `fax-mode' PERMS
-
이것은 port-owner/group/mode와 비슷해서 fax가 들어올 때 mgetty가 쓰기
위해서 owner, group, 그리고 file mode를 명시합니다. Default는
FAX_IN_OWNER, FAX_IN_GROUP, and FAX_FILE_MODE에서 얻어집니다.
- `debug' [-x] DEBUG LEVEL
-
이것은 mgetty가 할 logging량을 정합니다. 4는 적당하고 5는 자세하고
9는 정말이지 지저분합니다. 시험해보십시오! log data는 'policy.h'의
LOG_PATH로 명시하는데 대개 `/var/log/mgetty.ttyxx'입니다.
- `gettydefs' GD TAG
-
이것은 mgetty의 gettydefs feature를 쓴다면, 권장하지 않습니다만,
주어진 line에 사용할 gettydefs tag을 명시합니다. gettydefs manpage,
mgettydefs manpage를 참조하십시오.
- `term' TERMINAL TYPE
-
이것은 TERM=xxx terminal type variable을 getty가 정하도록 하는 Linux
또는 이와 비슷한 OS에서 (예를들면 '/etc/profile 또는
'$HOME/.profile'에서) 그것을 정하지 않았으면 mgetty로 하실 수
있습니다. 'term vt100'과 같이 적으십시오. 제가 볼때는 per line
base에서 terminal type을 명시하는 것은 좋지 않습니다. (전화거는
사람들마다 다른 terminal type을 쓴다면 어쩌시겠습니까?) 그래서
default는 정해지지 않았습니다.
3.8
Runtime configuration for sendfax: `sendfax.config'
5.1
Modems
Problems common to many modem types
ZyXEL
Telelink IMS 08 Faxline+ Modems
Rockwell-based modems, e.g. Supra
Zoom VFP/VFX 24K FaxModem (V.FAST modem, 24,000 bps)
Best 14496 EC fax modem
GVC FM-144Vbis+/1 (Rockwell-based)
CREATIX Modem (Rockwell-Based)
German Telekom approved GVC modems
Dallas Fax 14.4
Everex
Exar 9624 fax modem
Tornado / Lightspeed modems
Zoltrix Platinum Series 14.4
MultiTech modems (MT1432BG and MT2834BG)
US Robotics (now 3com) Courier/Sportster Fax/Data modems
Elink ISDN Terminal Adaptors 293, 310, 393 with X.75 and V.110
Class 1 Faxmodems
Generic problems and common mistakes
SCO Unix 3.2.2 (ODT 1.0 / 1.1)
SCO Unix 3.2.4 (ODT 2.0 and ODT 3.0)
Linux
ISC
SVR4 Unix
SVR4.2 - Onsite Unix, UnixWare, ...
BSD-like flavours of Unix
IBM's AIX Operating System
SunOS 4.1.1 and up
Solaris 2.3 and 2.4
AT&T 3b1
The HP-UX operating system
The NEXTSTEP operating system
pbmtog3
Lock files
mgetty works, /bin/login hangs
ECU 3.20 or earlier on SCO collides with mgetty
mgetty, incoming data call
mgetty, incoming fax call
mgetty, logging into syslog
sendfax, sending a single page
이 문서에서 언급된 대부분의 software는 대부분의 주요 ftp site에서 얻을
수 있습니다. 그런데도 저는 software에 대해서 많은 질문을 받았기에
여기에 site들을 기재합니다.
게다가 저와는 다른 환경에서 mgetty+sendfax를 쓰고자 할 때 흥미있을
만한 다른 software도 기재합니다.
- mgetty+sendfax
-
현행 release는 보통 다음의 장소에서 찾아집니다.
sunsite.unc.edu:`/pub/Linux/system/serial/getty/mgetty+sendfax*'
tsx-11.mit.edu:`/pub/linux/sources/sbin/mgetty+send-fax*'
alpha.greenie.net:`/pub/mgetty/source/*'
ftp.leo.org:`/pub/comp/os/unix/networking/mgetty/*'
ftp.mathematik.th-darmstadt.de:`/pub/linux/mir-rors/misc/mgetty/*'
linux.nrao.edu:`/pub/src/mgetty/*'
ftp.chem.tue.nl:`/pub/mgetty/*'
http://linux.mit-lab.co.kr/mgetty/*
ftp.uvt.ro:`/pub/mgetty/*'
... 그리고 SunSITE.unc.edu 또는 tsx-11을 mirror하는 모든 site들입니다.
가장 최근의 beta release는 alpha.greenie.net, ftp.leo.org 그리고
mirror site인 th-darmstadt.de과 linux.nrao.edu에서 얻을 수 있습니다.
SunSITE와 TSX-11에서는 (짝수 version 번호로 되어 있고, file명에는 date
stamp가 없는) 안정된 release만 있습니다.
자신의 책임하에 beta release를 사용하십시오!
- pbmplus
-
(bitmap 조작 tool인) pbmplus package를 다음의 장소에서 찾았습니다.
(X11을 mirror하는 대부분의 다른 site에도 있습니다.)
src.doc.ic.ak.uk:`/computing/graphics/pbmplus10dec91.tar.Z'
wuarchive.wustl.edu:`/packages/X11R5/contrib-pub/pbmplus10dec91.tar.Z'
ftp.germany.eu.net:`/X11/contrib/pbmplus10dec91.tar.Z'
ftp.leo.org:`/pub/comp/os/unix/networking/mgetty/'
pbmplus package는 conversion tool이 더 많은 (bug도 더 많은) NetPBM
package로 이어졌습니다. 이것은 같은 site에서 얻어질 수 있습니다.
다음을 알아볼 수 있습니다.
wuarchive.wstl.edu:`/graphics/graphics/packages/NetPBM'
ftp.rahul.net:`/pub/davidsen/source'
ftp.informatik.uni-oldenburg.de:`/???'
fax chapter에서 말씀드린 pbmtodot program은 다른데 없을지라도
ftp.leo.org에 있는 mgetty directory에서 찾을 수 있습니다. (위를
보십시오.)
- FAS
-
SCO Unix와 ISC 등에 쓸 fas serial driver를 갖고 있는 site들은 ...:
ftp.fu-berlin.de:`/pub/unix/driver/fas/fas-2.11.tar.gz'
ftp.germany.eu.net:`/pub/newsarchive/comp.sources.unix/volume27/fas-2.11.0/*'
src.doc.ic.ac.uk:`/usenet/comp.sources.unix/volume27/fas-2.11.0/*'
제가 아는 한 현행 version은 2.12입니다만 2.11과 같은 장소에서
찾을 수 있습니다. 저는 upgrade를 하지 않았는데 2.11이
저에게는 잘 됩니다. :)
- GhostScript
-
postscript interpreter인 GNU GhostScript는 GNU Software를 갖고 있는
모든 site에서 찾을 수 있습니다. 주요 GNU site는
prep.ai.mit.edu입니다.
새 version인 3.x는 더이상 GNU software가 아니지만 특별한 license를
사용합니다. ftp.cs.wisc.edu의 /pub/ghost/aladdin와 (ftp.leo.org 등의)
다른 mirror site에서 찾을 수 있습니다.
- hp2pbm
-
GhostScript는 덩치가 크고 느리기 때문에 다른 목적으로 쓰지 않으신다면
Chris Lewis의 hp2pbm package를 쓰실 수 있습니다. 그 장소는
ftp.uunet.ca:`distrib/chris_lewis/hp2pbm/*'
그리고
ftp.leo.org as `hp2pbm*' (위에서 말씀드린 mgetty directory에 있습니다.)
이 package는 ASCII, LJ PCL4 등을 PBM, GC, PS, X windows, Epson 24 pin
등으로 변환하는 데 필요한 모든 것을 갖추고 있습니다. mgetty의
g32pbm과 같이 사용하시면 ASCII나 HP LJ를 fax로 보내실 수 있고, fax를
X, PS, LJ, Epson 등에서 display하거나 인쇄하실 수 있으며 PBM utility를
거쳐서 display하거나 인쇄하실 수 있습니다.
이것은 비슷한 PBMPLUS utility들보다 더 잘 작동합니다. 사용하시는
application이 LJ와 PS를 만들 수 있다면 LJ를 만들어서 hp2pbm을 거쳐서
G3로 변환하는것이 PS를 만든 다음에 GhostScript를 거쳐서 변환하는
것보다 훨씬 빠릅니다.
[Chris를 인용함: 뜻밖이지만, g32pbm에 저의 pbm2lj를 더하니까
g3tolj보다 많이 빨랐습니다. 왜그런지는 아직 모르겠습니다. g32pbm과
pbm2lj는 하지 않는 scaling과 어떤 관계가 있는 것 같습니다.]
- psroff
-
ftp.uunet.ca:`/distrib/chris_lewis/psroff3.0pl17/*'
[Chris: 이것은 psroff/*로 되어야 하지만, 제 symlink를
고쳐달라고 요청했지만 아직 답을 주지 않습니다.]
ditroff, CAT troff, groff 등에서 PS, LJ, ditroff 등을 만드는
데 필요한 모든 것을 포함하고 있습니다. hp2pbm과 같이 쓰시면
fax를 만들 수 있습니다. 아주 많은 LJ font, font 조작, font
scaling utility 등을 갖추고 있습니다.
바로 위의 두 tool만 있으면 pbmplus나 GhostScript나 다른 것들이
없어도 단지 mgetty와 hp2pbm (그리고 Laserjet printer ;-)만으로
fax를 보내고, 받고, print할 수 있습니다.
- Ifmail
-
Ifmail은 Eugene Crosser의 FidoNet (tm)과 호환되는 mailer +
gateway software로서 Unix와 Linux용입니다. mgetty와 같이
쓰시면 Unix-login과 fax뿐만 아니라 incoming Fido call을
허용하는 등 완전한 modem solution을 제공합니다. 다음의
장소에서 찾아집니다.
tsx-11.mit.edu:`/pub/linux/sources/usr.bin/ifmail*'
sunsite.unc.edu:`/pub/Linux/system/Fido/ifmail*'
- dialog
-
Dialog는 shell script에서 input/output function을 간단히 하는
매우 좋은 shell tool입니다. mgetty/frontends/dialog에 있는
모든 program들이 이것에 의존합니다. curses library가 있으면
(FreeBSD를 제외한) 대부분의 operating system에서 운영됩니다.
source는 다음의 장소에서 찾아집니다.
sunsite.unc.edu:`/pub/Linux/utils/shell/dialog*'
- ps2g3
-
mgetty+sendfax를 NeXTStep operating system에 합치는 조그마한
package입니다.
ftp.leo.org/pub/comp/platforms/next/Tools/postscript/ps2g3.s.tar.gz에
있습니다.
- dvips5.47
-
Dvips 5.x와 그 이상의 version은 좀 이상한 postscript를
만들어서, 그것을 Ghostscript 3.x로 변환시킬 때 행폭이 꼭 1728
pixel이 되지 않아서 (modem은 잘 동작하지만) 종이 fax
machine으로 보낼 수 없는 fax를 만듦니다. Dvips 5.47은 그렇지
않습니다. 다음의 장소에서 찾아집니다.
`ftp.leo.org:/pub/comp/os/unix/networking/mgetty/dvips*'
`midway.uchicago.edu:pub/tex/dvips/dvips547.tar.Z'
- g3vga
-
(X11이 아니고 standard console mode의) Linux와 SVGALIB에
쓰이는 훌륭하고 빠른 G3 viewer입니다. SunSITE.unc.edu의 모든
mirror사이트에 있는 .../apps/graphics/viewers에서 찾을 수
있습니다.
FTP access가 없는 분들은 전 section에서 언급한 모든 software를 다음의
UUCP site에서 찾으실 수 있습니다.
- GREENIE (저의 system입니다.):
-
++49-89-35663089, V32bis/V.34,
greenie! /green.files.gz을 얻으십시오.
- CameloT (Frank Bartels):
-
++49-89-8948040, V34+,
다음분들께 감사를 드립니다. (특별한 순서로 되어있지 않습니다.)
- Peter Bechtold,
peter@fns.greenie.muc.de : 저에게 많은 fax를 보내서
mgetty를 시험하셨고, 제가 그분께 sendfax로 fax보내기를 실패한
후에 저에게 전화를 걸어 주셨습니다.
더우기 수신된 fax의 filename에 원격지 fax id를 사용하도록
idea를 주셨습니다.
- Klaus Weidner,
klaus@greenie.muc.de: 최초로 linux로
porting하셨고, pre-release를 많이 시험하셨고, 처음으로
texinfo문서를 작성하셨고, 끝으로, vgetty를 만드셨습니다.
- Lawrence 'dreamer' Chen,
lawrence@combdyn.com: 처음의 ISC porting과
SupraFAX-Modem으로 그 package를 시험해 주신 데 대해
감사드립니다.
- Kay Schulz,
kschulz@gold.t-informatik.ba-stuttgart.de:
ISC에서 시험해 주셨고, README file을 전혀 읽지 않았어도
많은 질문을 할 수 있다고 말씀해주셨습니다.
- Georg Edelmann,
georg@alpha.saar.de: Linux에서 시험해 주셨고, 유치한
bug를 많이 찾아주셨습니다.
- Uwe S. Fuerst,
uwe@phiger.com: SCO 3.2v4에서 시험해주셨습니다. (또한
dial-in/dial-out 문제를 좁혀가는데 많이 도와주셨습니다.)
- Bodo Bauer,
bodo@hal.nbg.sub.org: (fax receiver가 동작하지
않는다고 주장해서 저를 많이 헛갈리게 하셨지만) mgetty를
SVR4로 porting해주신데 대해, 그 뒤로는, bodo@suse.de,
faxrunqd daemon에 대해 감사드립니다.
- Christoph Adomeit: fax sending/receiving에서 XON/XOFF를
구현하도록 아주 오랫동안 저에게 bug를 제공해주셨고, 제가
faxing (fax sending)일을 하는 데 쓰도록 그분의 GVC
modem중에서 한대를 꽤 오래 빌려 주셨습니다.
- Christopher M. Ward: 다른 GVC modem으로 SCO에서 시험해주셨습니다.
- Ralf Stephan: CD를 너무 빨리 lower하는 modem들에 있어서
sendfax의 문제를 찾아주셨습니다.
- John C. Peterson: mgetty/faxrec에서 비슷한 문제를
바로잡아주셨습니다.
- Chel van Gennip: pbmscale, g3toxwd, g3tolj program에 대해서
감사드립니다.
- Glenn Thobe and Chris Lewis: 3B1 port를 해주셨습니다.
- Chris Lewis: /etc/gettdefs, CallerID, space limiting에 대해서,
source를 정말이지 굉장하게 만들어 주신데 대해서 (K&R C
지원), 여러 자그마한 수정들에 대해서, 그리고 어떤때는
그분의 제안에 대해서 짜증을 부린것을 참아주셔서
고맙습니다.
- Caz Yokoyama: faxpool과 mail-to-fax gateway에 대해
제안해주셨습니다.
- Martin Husemann: (ESIX가 두통거리인) SVR4 시험을 해주셨고,
NetBSD 386에 porting해주셨습니다.
- Michael A. Meiszl,
mam@mamunx.werries.de: 저에게 웃으라고 부탁하셨고,
귀찮지만 작은 것들을 많이 찾아내서 고치셨습니다.
- Brent Mosbrook, ZyXEL USA,
brentm@zyxel.com:
ZyXEL 고유의 질문과 일반 fax에 대한 질문은 해결해
주셨습니다.
- ELSA Computer GmbH, Germany: ELSA 28.8 TQV voice/fax modem을
시험용으로 주셨습니다. (매우 저렴하게 값을 치르고
가졌습니다.)
- Sam Leffler,
sam@sgi.com: 많은 흥미로운 논의와 통찰에 대해서
감사드립니다.
- Christian Starkjohann,
cs@ds1.kph.tuwien.ac.at: NeXT로 porting하는 데
대해서 중요한 부분을 해주셨습니다.
- Geoffrey Collyer and Henry Spencer: 제가 faxrunq에서 쓰고 있는
newslock.c program을 작성해주셨습니다.
- Simone ``Neko'' Demmel: 일찍 잠자리에 들어서 제가 시간을 갖고 이
manual을 읽고 모든 지저분한 bug을 고치도록 해주셨습니다.
- Russel Nelson,
nelson@crynwr.com: 1996년 12월부터 mgetty mailing
list를 host해주셨습니다.
- Medat Computer GmbH, Munich: mgetty+sendfax를 사용하셔서 제가
(faxrunqd의 재작성과 수많은 세부작업 등의) 개선을 하도록
해주셨습니다.
- SpaceNet GmbH, Munich: alpha.greenie.net로의 IP 연결을
후원해주셨습니다. 독일에서 Internet Service Provider가
필요하시다면
http://www.space.net/를 보십시오.
- Wiebke Baars: 참말로 좋은 친구가 되주었고, 함께 멋진 나날을
보냈습니다.
- ... 그리고 어떻게든 공헌하신 모든 다른 분들게 감사드립니다.