The Linux UUCP HOWTOGuylhem Aznar guylhem@oeil.qc.cav2.1.6 July 1998이 문서는 unix환경에서의 UUCP를 설치하고 관리하는 방법에 대하여 설명합니 다. UUCP나 모뎀, 직접(direct-connection) 또는 인터넷을 통하여 원격 싸이트를 연결하고자 한다면 이 문서를 읽으셔야 합니다. 물론 만약 UUCP에 관심이 없다 거나 그것의 의미조차 모르신다면 이 문서를 읽지 않으셔도 됩니다. 1. 소개, copyright & standard disclaimer1.1 메일과 spam메일(Email & spamming)우선, 이 문서에 표시된 모든 email 주소의 "at"은 "@"로 바꿉니다. 그것은 인간에게는 간단하지만 spam메일을 보내기위하여 web을 찾아 다니는 나쁜이들에게는 간단하지 않습니다. 그러므로 spam mail을 받는 것으로부터 일 반인들을 보호하는데 충분합니다. 1.2 목적(Goals)이 문서의 목적은 Linux Debian의 일반 버전과 RedHat의 몇 개의 버전하에서의 UUCP에 관하여 "자주 문의되는 질문"에서 접하게 되는 여러 질문들과 문서들 에 대하여 답하는 것 입니다. 1.3 새 버전(New versions)이 문서의 새 버전은 정기적으로 comp.os.linux.announce와 comp.answers & news.answers에 게쟤될 것입니다. 또한 새 버전의 문서들은 다양한 익명의 ftp 싸이트에 첨가될 것이며 sunsite.unc.edu/pub/Linux/docs/HOWTO 같은 sunsite FTP에도 정보가 첨가될 것입니다. 또한, LDP 페이지에 있는 Linux WorldWideWeb의 홈 페이지에서도 이 문서들 은 찾으실 수 있습니다. 1.4 반응(Feedback)이 문서에 대한 칭찬이든 질책이든 어떤 반응도 다 환영합니다..(e-mail을 이용 하세요) 만약 실수나 빠진부분등을 발견하시면 꼭 저에게 연락주세요. 저는 제가 받은 모든 메일을 읽습니다 -그러나 모든 메일에 꼭 답장을 하지는 않습니다. 더욱 향상된 문서를 위한 요구들은 심사숙고하여 그날그날의 제 기분 이나 제안의 잇점 그리고 시간이 가능함에따라 반영됩니다.:-) Flames은 삭제(go to /dev/null)되므로 걱정하지 않으셔도 됩니다. 이 문서의 형식에 관한 사항은 HOWTO의 코디네이터인 Greg Hankins ( sunsite.unc.edu의 greg)에게 보내셔야 합니다. 1.5 저작권(Copyright)UUCP-HOWTO의 저작권은 Guylhem Azar에게 있습니다(1997). LDP 저작권에 의하여 배포됩니다. 만약 이에 의문이 있으시면 Linux HOWTO의 코디네이터인 Greg Hankins( sunsite.unc.edu 의 greg) 에게 연락하세요. 1.6 제한사항물론 저는 이 문서의 내용에서 발생할 수도 있는 어떤 책임도 없음을 알려드립 니다. 이 문서의 어떤 개념이나 예제들 &/(?)를 사용하시는 것은 전적으로 여러 분의 책임입니다. 2. 이 외의 정보2.1 USENETLinux에서 UUCP를 구성하고 실행하는데에 특별함은 없습니다. 따라서 여러분 은 일반적인 UUCP, comp.os.linux.*newsgroups에 관계된 질문들을 받기를 원하 지 않을 것입니다. 예를들어 "Deban 1.2 uucp가 무엇이 잘못되었나요?' 또는 '실행시에 RedHat5.0 uucp가 충돌이 일어나는데...'와 같은 Linux에 관계된 질문이 아니면 comp.os.linux로 메일을 보내지 마세요. 다시한번 말합니다. comp.os.linux에 uucp에 관한 어떤것도 메일을 보내실 이유가 없습니다. 여러분 의 질문을 다루기 위하여 comp.mail.*안의 newsgroup이 존비되어 있습니다. 만약 여러분이 Linux와 관계없는 질문을 comp.os.linux.*에 보내신다면 도움을 받으실 수 없습니다. uucp 사용자들은 위에서 언급한 곳에서 해메이고 일반적으 로 linux를 운행하지 못합니다. Linux와 관계없는 질문을 linux hierarchy에 보내는 것은 여러분과 그외의 모든 이들의 시간을 낭비하는 것이며 원하시는 답을 얻기위한 시간을 지연시킵니다. uucp에 관한 질문은 comp.mail.uucp에 하시면 원하시는 도움을 받으실 겁니다. 2.2 Mailing ListsTaylor UUCP mailing list에 대하여 설명합니다. 다음 list를 연결하여 메일을 보내세요. taylor-uucp-request@gnu.ai.mit.edu 이 주소는 프로그램이 아닌 사람에게 보내어지길를 요구합니다. 따라서 text화일 로 메시지를 받기 원하는 mail 주소를 첨가해야 합니다. 다음 list에 메시지를 보내세요. taylor-uucp@gnu.ai.mit.edu 2.3 LDP로부터의 다른 문서자료다른 Linux HOWTO 문서와 Linux DOC project로부터 제공되는 특별한 자료가 많이 있습니다. 특히 다음자료들을 참조하는 것이 아주 유용할 것입니다. * 각자 compute의 /usr/doc/uucp 와 //usr/info/uucp* :-) * the Linux Networking Administrators' Guide * the Serial Communications HOWTO * the Ethernet HOWTO * the News HOWTO * the Mail HOWTO 2.4 참고서적UUCP의 HDB와 V2 버전은 대부분의 *nix communications 책 뿐만 아니라 판 매되고 있는 모든 관련문서에서 제공되고 있습니다. Taylor config. 파일은 현재 소스와 함께 제공되는 정보 파일에 기록되어 있습니 다. (그리고 아마 여러분의 배포분에서 제공됩니다) 다음은 도움이 될만한 참고 서적이다.
3. 요구사양(Requirements)3.1 HardwareLinux상에서 UUCP를 위해서 요구되는 특별한 hardware 사양은 없다. 기본적으 로 Hayes가능 모뎀이 UUCP와 함께 무리없이 작동하면 된다. 대부분의 경우에 여러분은 가장 빠른 모뎀을 원하고 또 예를들어 56000 bps모뎀 을 살수도 있다 일반적로 여러분은 serial board에 16550 UART를 또 9600 baud이상의 속도를 다루기 위하여 그것을 모뎀에 장착하기를 원한다 만약 마짐가 문장의 의미를 이해하지 못한다면 comp.dcom.modems group이나 the various fine modem과 serial communications FAQs와 앞에 언급한 USENET 주소에 메일을 통하여 자문을 구하면 됩니다. 3.2 Sofrwarelinux의 UUCP는 어디서나 구하실수 있습니다. 예를들어 sunsite.unc.edu에서 구 하시면 됩니다. 그러나 어느 버전을 구하시기 전에 현재 uucp를 설치하고 만들 어 보세요. 아마 각각의 linux 제품마다 작은 어려움들이 많이 있을 것입니다. 그러므로 몇 개의 옵션에 따라 소스를 직접 편집하거나 적당한 경로와 권한설 정,설치 등을 하는 것보다 여러분의 환경에 알맞는 uucp 제품을 설치(configure/ install)해보는 것이 더욱 쉬운 방법입니다. 그러나 만약 소스를 편집하는 것이 더 좋다면 ...
4. 환경화일 설정저는 여러분에게 설치시에 포함되어있는 환경화일을 권해드립니다. 파일들은 문서에 포함되어있습니다. 4.1 config. 파일설치이 파일을 uucp기본 디렉토리 즉 현 linux제품은 /etc/uucp에 이전 버젼은 /usr/lib/uucp에 위치시키세요. 그런다음 각 파일의 허용값(permissions)을 확인하세요.
(guylhem@barberouge:uucp)$ ls -l
total 11
-rw-r--r-- 1 uucp uucp 501 Jan 23 11:33 Poll
-rw-r----- 1 uucp uucp 589 Jan 23 11:34 call
-rw-r----- 1 uucp uucp 1184 Jan 23 12:06 config
-rw-r----- 1 uucp uucp 476 Jan 23 12:31 crontab
-rw-r----- 1 uucp uucp 1256 Jan 23 11:47 dial
-rw-r----- 1 uucp uucp 486 Jan 23 11:48 passwd
-rw-r----- 1 uucp uucp 810 Jan 23 11:55 port
-rw-r--r-- 1 uucp uucp 1690 Jan 23 12:04 sys
(guylhem@barberouge:uucp)$
파일의 소유주를 다음과 같이 변경시키세요.
(root@barberouge:uucp)$ chown uucp.uucp *
그런다음 다시한번 파일의 허용값(permissions)을 변경시키세요.
(root@barberouge:uucp)# chmod 640 *
(root@barberouge:uucp)# chmod +r Poll sys
4.2 "poll" 파일이 파일은 시스템의 polling timetables을 설정하는데 사용됩니다.
schedule polux 01
poll polux 01
제 기계는 01:00에 polux를 호출합니다. 이 기능이 다입니다.
여러분이 만약 많은 다른 기계들을 호출해야한다면 다른 명령들을 더 참가할 수
있습니다. 그러나 각 명령에 다음 두줄(schedue & poll)은 잊지말고 쓰셔야 합니
다.
4.3 "call" 파일이 파일은 여러분이 송신(poll)하는 모든 시스템마다 login/passwd화일을 포함합 니다.
polux uudan password
제 기계는 "polux"를 송신(poll)할 때 login으로 "uudan" 그리고 password로
"password"를 사용합니다 :-)
Poll은 여러분의 환경에 맞게 적용시킵니다.
4.4 "config" 파일
nodename barberouge # The UUCP name of this system spool /var/spool/uucp # The UUCP spool directory pubdir /var/spool/uucppublic # The UUCP public directory logfile /var/log/uucp/log # The UUCP log file statfile /var/log/uucp/stats # The UUCP statistics file debugfile /var/log/uucp/debug # The UUCP debugging file #sysfile /etc/uucp/sys # Default "sys" #portfile /etc/uucp/port # Default "port" #dialfile /etc/uucp/dial # Default "dial" #dialcodefile /etc/uucp/dialcode # Default "dialcode" #callfile /etc/uucp/call # Default "call" #passwdfile /etc/uucp/passwd # Default "passwd" # No commands may be executed by unknowns (empty list of permitted commands) # Upload is authorized in /var/spool/uucp unknown commands unknown pubdir /var/spool/uucp unknown remote-send ~ !~/upload unknown remote-receive ~/upload위에서 "barberouge"룰 여러분의 시스템이름으로 바꾸면 됩니다. 만약 시스템이름을 모르시면 "hostname"를 실행하면 이름을 확인하실 수 있습 니다. 4.5 "crontab" 파일
# Every day just before morning generate reports. # 0 7 * * * /usr/lib/uucp/uudemon.day root # # Every hour start the uudemon.hr. To actually poll a remote system, # enter its name in /etc/uucp/Poll. You are encouraged to change the "8". # 8 * * * * /usr/lib/uucp/uudemon.hr crontab 파일에 첨가하기 위하여 다음을 실행사키면 됩니다. "crontab -u uucp /etc/uucp/crontab" 4.6 "dial" 파일
# 1) expect nothing (i.e., continue with step 2)
# 2) send "ATZ", then a carriage return, then sleep for 1 to 2 seconds.
# The \c means to not send a final carriage return.
# 3) wait until the modem echoes "OK", then do the the same for "ATX4"
& "OK"
# 4) send "ATDT", then the telephone number (after translating any
dialcodes).
# 5) wait until the modem echoes "CONNECT"
# 6) if we get "BUSY", "NO CARRIER" ... during the chat script we abort
dialing
# 7) when the call is over, we make sure we hangup the modem
dialer hayes
chat "" ATZ\r\d\c OK\r \dATX4\r\d\c OK\r ATDT\D CONNECT
chat-fail RING
chat-fail NO\sCARRIER
chat-fail ERROR
chat-fail NO\sDIALTONE
chat-fail BUSY
chat-fail NO\sANSWER
chat-fail VOICE
complete \d\d+++\d\dATH\r\c
abort \d\d+++\d\dATH\r\c
# You can also add other dialers: inetd, nullmodem ...
#dialer nullmodem
#complete \d\dexit\r\c
#abort \d\dexit\r\c
문법이 완벽함으로 이 파일은 수정하지 않는 것이 더 바람직합니다. 그러나 저
는 모뎀 초기화 명령으로 "ATZ" & "ATX4"를 사용합니다.
4.7 "passwd" 파일
#uuguest guestpassword
만약 uucp dialin을 허용하시려면 단지 이 파일에 system/passwords를 첨가하면
됩니다. 아주 간단합니다.
안전상의 이유로 각각 분리된 계정과 홈 디렉토리를 가지는 것이 권고 됩니다.
그러면 여러분은 각각의 흔적을 찾을 수 있습니다(track).
4.8 "port" 파일
# Description for the modem entry
# Debianers, make SURE this device is root:dialout, mode 0660
(crw-rw---)
port ACU
type modem
device /dev/ttyS0
dialer hayes
speed 57600
# hardflow n
# Description for the TCP port - pretty trivial. DON'T DELETE.
# Change service number if non standard, cf /etc/services
port TCP
type tcp
#service 540
# Description for the nullmodem entry
# (ttyS1 means COM2)
port nullmodem
type direct
device /dev/ttyS1
dialer nullmodem
speed 115200
여러분의 모뎀포트번호를 제외하고 다른 것은 변경하지 마세요.
mgetty의 최근버젼은 /dev/ttySN 이전버전은 /dev/cuaN이다 여기서 N은 각자
의 serial port 이다.
0으로 시작하는 N과 ttyS(N)은 COM(N+1)을 의미한다. 예를들면 제 모뎀이
ttyS0(COM1)인 동안 null-modem은 ttyS1(COM2)입니다.
최근모뎀의 대부분은 hardware flow control을 지원합니다. 만약 여러분의 모뎀
이 이를 지원하지않는다면 "#hareflow n"의 "#"를 빼시면 됩니다.
4.9 "sys" 파일
# First some defaults. These are for ALL other entries (unless overridden).
#
protocol gvG
protocol-parameter G packet-size 1024
# protocol-parameter G window 7
protocol-parameter G short-packets
#
# Our remote uucp connection.
#
system polux
call-login *
call-password *
local-send /
local-receive /var/spool/uucppublic
remote-send /
remote-receive /var/spool/uucppublic
time any
phone 0111111110
port ACU
chat "" \r\c ogin:-BREAK-ogin:-BREAK- \L word: \P
#chat "" \d\d\r\c ogin: \d\L word: \P
# This is an alternate - it means that if a connection using the above
# "system polux" fails it falls through to this entry.
# Only useful if your service provider has more then one phone number for
UUCP.
#alternate polux-2 #alias polux-2
#phone 0222222220
# Here's another alternate - we poll the system over TCP/IP.
# This is useful if we have a PPP connection to our provider.
# The first two entries will fail because the modem is busy & we will poll
# over TCP/IP.
#
#alternate polux-tcp
#alias polux-tcp
#time any
#address uucp.polux
#port TCP
#protocol t
#
# Last example - a system that we poll over TCP/IP.
#
#system horizon
#call-login *
#call-password *
#time any
#chat "" \d\d\r\c ogin: \d\L word: \P
#address uucp.horizon.nl
#port TCP
#protocol t
"polux"를 여러분의 poll 시스템이름으로 "0111111110"를 전화번호로 바꿔야 합
니다.
"polux-2","polux-tcp" 그리고 "horizon"은 사용자 요구의 예입니다. 만약 여러분
이 송신(poll)하는 시스템이 하나 이상의 line을 가지고 있으면 "itsname-2"로 정
의합니다. 만약 때ㄸ로 PPP로 호출하면 "itsname-tcp"로 정의합니다.
이것은 통신대기(busy)시 유용합니다.
4.10 test우선 실행해본다. (root@barberouge:uucp)# su uucp (uucp@barberouge:uucp)# /usr/lib/uucp/uuchk Local node name barberouge Spool directory /var/spool/uucp Public directory /var/spool/uucppublic Lock directory /var/lock Log file /var/log/uucp/log Statistics file /var/log/uucp/stats Debug file /var/log/uucp/debug Global debugging level uucico -l will strip login names and passwords uucico will strip UUCP protocol commands Start uuxqt once per uucico invocation System: polux When called using any login name Call out using port ACU The possible ports are: Port name ACU Port type modem Device /dev/ttyS0 Speed 57600 Carrier available Hardware flow control available Dialer hayes Chat script "" ATZ\r\d\c OK\r \dATX4\r\d\c OK\r ATDT\D CONNECT Chat script timeout 60 Chat failure strings RING NO\sCARRIER ERROR NO\sDIALTONE BUSY NO\sANSWER VOICE Chat script incoming bytes stripped to seven bits Wait for dialtone , Pause while dialing , Carrier available Wait 60 seconds for carrier When complete chat script "" \d\d+++\d\dATH\r\c When complete chat script timeout 60 When complete chat script incoming bytes stripped to seven bits When aborting chat script "" \d\d+++\d\dATH\r\c When aborting chat script timeout 60 When aborting chat script incoming bytes stripped to seven bits Phone number 0111111110 Chat script "" \r\c ogin:-BREAK-ogin:-BREAK- \L word: \P Chat script timeout 10 Chat script incoming bytes stripped to seven bits Login name uudan Password your_password_here At any time may call if any work May retry the call up to 26 times May make local requests when calling May make local requests when called May send by local request: / May send by remote request: / May accept by local request: /var/spool/uucppublic May receive by remote request: /var/spool/uucppublic May execute /usr/bin/uucp /usr/bin/rmail /usr/bin/rnews Execution path /bin /usr/bin /usr/local/bin /usr/sbin Will leave 50000 bytes available Public directory is /var/spool/uucppublic Will use protocols gvG For protocol G will use the following parameters packet-size 1024 short-packets모든 정보들이 알맞게 설정되었는지 확인합니다. 경고 : 여러분의 실행결과(mileage?)가 다를수도 있습니다. 다른제품들은 비록 Linux FSSTD에도 불고하고 다른 경로를 사용합니다. 만약 모든 것이 제대로 실행되었다면 다음을 실행합니다.
/usr/sbin/uucico -r 1 -x 9 -s remote_system_name
옵션 -x 9는 초기설치시 도움이 되는 /var/log/uucp/debug화일에 쓰여지는 최대
debugging정보입니다.
저는 보통 -x 4로 실행합니다. 왜냐하면 그 정도가 login문제들을 자세히 확인
(log)할 수 있는 level입니다. 이 문장은 명백하게 여러분의 시스템 파일
(account/passwoed)으로부터 정보들을 지웁니다. 그래서 다른이들의 읽기로부터
보호해야 합니다.
4.11 추가정보emeraude.syseca.fr의 Pierre.Beyssac Taylor는 더 많은 logging 단계(level)을 제공합니다. -x all은 가능한 최대의 단 계를 의미합니다. 또한, fly(?) 도중 발생하는 상화을 확인하기 위한 debugging도중 다음을 실행합 니다. " tail -f /var/log/uucp/debug" 5. 작동되지 않는 경우 - 무엇이 문제인가 ?일반적으로 문제가 발생하면 위에서 언급된 문서를 참조합니다. 또한 경험이 풍보한 UUCP 전문가들에게 도움을 요청할 수도 있습니다.그런 어 쨌든 typo(?) 같은 것입니다. 6. Linux UUCP에 대하여 자주 문의되는 질문6.1 HDB mode는 무엇인가? HDB보다 Taylor환경의 UUCP 정보를 담은 이유?(종교적 모드(religious mode ?) - 나는 내가 "기준(being standard)"에 그렇듯이 "사용의 용이함(ease of use)"에 종교적인(religious ?) 몇몇을 안다. 그것이 바로 그들이 소스를 작성하고 그로부터 여러분이 자신의 것을 작성할 수 있는 이유입 니다. 왜냐하면 IMHO는 현재 de-facto standard uucp 도구이기 때문입니다. 경험이 풍부한 관리자가 운영하는 수많은 싸이트가 있으며 HDB설치에 관한 바로 훌륭한 정보를 얻을 수 있는 곳이 많이 있습니다. 더구나 만약 여러분이 HDB를 알고 있다면 물론 HOWTO를 읽을 필요가 없 습니다. :-) 환경화일의 모드(mode)를 바꾸기 위하여 /usr/sbin 에 있는 uuconv를 사용하세요. 6.2 UUCP-1.04로 업그레이드 시 접속도중 "timeout"이 발생하는 이유?
6.3 HDB anonymous uucp는 작동하지 않는가?HDB mode의 Taylo는 공백(white space)와 빈줄(blacn lines)에 민감한 것 같다. 안전을 위하여 권한이 주어진 화일안에 공백이나 빈줄이 없도록 합니다. 마지막으로 /usr/lib/uucp 또는 /etc/uucp에 remote.unknown화일이 존재하는지 그리고 그 화일의 실행권한이 없음을 확인합니다. 이 화일의 상세한 설명을 위하여 O'Reilly& Associates 의 "Managing UUCP & USENET"을 참조합니다. 6.4 "일치하는 포트를 발견하지 못함(no matching ports found"의 의미는?아마 존재하지 않는 dialer를 사용하려고 하거나 port화일에 명시된 dialer 와 dial 화일의 장치가 일치하지 않을경우 입니다. 6.5 HDB 모드의 바람직한 환경화일은?다음은 HoneyDanBer mode의 Linux환경에서의 Taylor1.05의 "권장(known -good)" 환경화일(config files)입니다. 이 화일들은 커널 0.99-8 또는 그 이후버 전에서 작동합니다. 모든 환경화일들은 여러분이 uucp library 위치를 소스에서 고치지 않았다면 /usr/lib/uucp 또는 /etc/uucp에 존재해야합니다. 만약 이 화일들이 이 이외의 다른 위치에 있다면 sendmail과 같은 프로프로그램 들의 혼란이 발생할 수도 있습니다. 따라서 "기준(standard)" 경로에 관계된 모 든 프로그램, 모든 환경이 알맞게 설정되어있어야만 합니다. #------------- Devices ------------- # make sure the device (cua1 here) matches your system # cua N = COM N+1 # # here "scout" is the Digicom Scout Plus 19.2 modem I use # tbfast etc. is for a Telebit Trailblazer Plus modem's various speeds # ACU cua1 - 19200 scout ACU cua1 - 9600 tbfast ACU cua1 - 1200 tbslow ACU cua1 - 2400 tbmed #------------- dialers -------------- # note the setting of the Trailblazer registers "on the fly" # "scout" is a Digicom Scout Plus (Hayes-like) modem I use here # scout =W-, "" ATM0DT\T CONNECT tbfast =W-, "" A\pA\pA\pT OK ATS50=255DT\T CONNECT\sFAST tbslow =W-, "" A\pA\pA\pT OK ATS50=2DT\T CONNECT\s1200 tbmed =W-, "" A\pA\pA\pT OK ATS50=3DT\T CONNECT\s2400 #-------------- Systems ------------- # this is a very generic entry that will work for most systems # # the Any;1 means that you can call once per minute with using -f (force) # the ACU,g means force "g" protocol rather than Taylor's default "i" # fredsys Any;1 ACU,g 19200 scout5555555 "" \r ogin:--ogin: uanon word: uanon #------------------------ Permissions ------------------------- # Taylor UUCP in HDB mode appears to be sensitive to blank lines. # Make sure all Permissions lines are real or commented out. # # this is a anonymous uucp entry # LOGNAME=nuucp MACHINE=OTHER \ READ=/var/spool/uucp/nuucp \ WRITE=/var/spool/uucp/nuucp \ SENDFILES=yes REQUEST=yes \ COMMANDS=/bin/rmail # # this is a normal setup for a remote system that talks to us # note the absolute path to rnews since this site puts things # in locations that aren't "standard" # LOGNAME=fredsys MACHINE=fredsys \ READ=/var/spool/uucp/fredsys:/var/spool/uucp/uucppublic:/files \ WRITE=/var/spool/uucp/fredsys:/var/spool/uucppublic \ SENDFILES=yes REQUEST=yes \ COMMANDS=/bin/rmail:/usr/bin/rnews #------------------------------------------------------------- 6.6 교체번호(alternate numbers)를 호출하기 위하여 uucico 얻기새 버전인 v1.05는 원격 시스템의 숫자를 고체할 수 있는 '-z' 옵션이 추가되었습니다. 여러분은 또 Taylir mode와 "systemyouarecalling-s"를 사용할 수 있습니다. (상세한 설명을 위하여 환경 파일부분(config. files section)에 있는 "sys"를 참조 합니다.) 7. 감사인사많은 정보와 경험으로 이 문서작성에 도움을 주신 분들입니다. Ed Carp, Steve Robbins, lan Taylor, Greg Naber, Matt Welsh, Pierre Beyssac 특히 이 거대한 작업을 가능하게 하신 Vince Skahan에게 많은 감사드립니다. 만약 제가 잊고 감사를 드리지 않은 분이 있다면 용서하십시요. : 저에게 메일을 보내세요. |











