Mailing list
이창희
대전광역시 대덕구 대화동 290-22
K&J Company Ltd.
E-mail : chlee@cre.co.kr
URL :
http://ns.cre.co.kr/chlee/
- Abstract:
- mailing list는 e-mail을 통해서 토론이나 공동 프로젝트를 진행하고자 할 때
유용한 도구이다. 본 강의에서는 mailing list에 대한 전반적인 내용과 multiple
mailing list를 관리하는 majordomo에 대해서 알아보겠다. 또한, 방대한 조직의
e-mail address를 관리하는 데 유용한 mail gateway의 setting방법에 대해서도
알아본다.
- Keywords:
- mailing,list,majordomo,mailgateway,gateway
1. Mailing list
1.1 메일링리스트의 용도
메일링리스트의 용도는 크게 세 가지로 볼 수 있다.
- announce: 새로운 소프트웨어, 온라인 잡지의 업데이트
- 특정 분야에 대한 토론: www-forum@cair.kaist.ac.kr, wsp@cre.co.kr(security)
- 공동 프로젝트의 진행: 기업 내부 프로젝트의 진행과정 및 문제점 공유
1.2 메일링리스트의 작동원리
우선 몇 가지 용어들에 대해서 정리한 후에 작동원리를 살펴보자.
1.2.1 용어
- UA(User Agent): 사용자가 메일을 작성하고 받을 수 있도록 인터페이스를
제공하는 소프트웨어이며, /bin/mail, Berkeley Mail, MH, mush, elm, pine등이 있다.
- MTA(Mail Transfer Agent): 메일이 최종 목적지에 도달할 수 있도록
또다른 MTA로 라우팅을 하는 프로그램이다. 흔히 mailer라고 불리워진다. 대표적으로
sendmail을 들수 있다.
MTA는 메일주소에 해당하는 mailbox로 e-mail을 보낸다. 그러면, 사용자는 UA를
이용하여 메일을 읽는다. mailbox는 도착한 메일이 사용자가 읽을 수 있도록 처리한 후
저장되는 화일이다. 이상을 그림으로 나타내면 다음과 같다.
1.3 메일링리스트의 설치실례
majordomo는 메일의 body부분의 내용을 명령어로 인식하고 실행하는 perl script이다.
따라서, majordomo를 설치하기 위해서는 perl language가 필요하다. 먼저 perl의 설치
과정을 살펴보고 majordomo의 설치에 대해서 알아보자.
1.3.1 perl install
- ftp://ftp.netlabs.com/pub/outgoing/perl5.0/
- Configure; make depend; make; make install;을 차례로 실행시킨다.
1.3.2 majordomo site
- ftp://ftp.greatcircle.com/pub/majordomo/
- ftp://ftp.kigam.re.kr/pub/tools/majordomo/
1.3.3 majordomo compile
- majordomo가 사용할 uid와 gid를 만든다. 로긴명은 majordomo으로 한다.
- majordomo의 홈디렉토리(예: /usr/local/majordomo/)와 mailing lists디렉토리
(/usr/local/mail/)의
owner, group, permission을 각각 majordomo, majordomo, 755(-rwxr-xr-x)로 설정되어야 한다.
- Makefile에서 W_BIN을 majordomo가 설치된 디렉토리로 설정한다.
- make; make install; su root; make install-wrapper;
1.3.4 /etc/majordomo.cf화일의 수정
변경해야할 중요한 몇 가지 변수들에 대해서 알아보자
- $whereami: majordomo를 설치해서 운영할 호스트명
- $whoami: majordomo의 mail address이다. majordomo프로그램으로 메일을
보내고자 할 때 이 주소를 사용하게 된다. 예를 들어 majordomo@cre.co.kr로 내용은
subscribe wsp라고 적어서 메일을 보내면 majordomo프로그램은 메일을 보낸 사람의
e-mail address를 wsp mailing list에 기록하게 된다. 일반적으로 이 변수의 값은
majordomo@$whereami가 된다.
- $whoami_owneri: majordomo를 관리하는 사람의 주소. 메일링 리스트에 있는
누군가에게 메일을 보내는 데 실패할 경우처럼 문제가 생겼을 때 이러한 것을 관리자의
주소로 메일을 보내서 알려주게 된다. 일반적으로는 이 변수의 값
은
Majordomo-Owner@$whereami로 하면
된다.
- $homedir: majordomo와 관련된perl script가 있는 디렉토리명이며, 대개는
majordomo를 설치한 디렉토리인 "/usr/local/majordomo"가 된다.
- $listdir: mailing list는 여러 개의 메일주소를 기록하고 있는 화일이다.
majordomo에 의해 관리되어져야할 mailing list가 있는 디렉토리이다. 일반적으로는
/usr/local/mail/이고 list화일들은 $listdir/lists에 있다.
1.3.5 /etc/aliases화일의 수정
majordomo로 메일이 왔을 때 이것을 처리할 수 있도록 /etc/aliases화일을 적당히
수정해야 한다. 다음 세라인을 /etc/aliases화일에 첨가해야 한다.
owner-majordomo: chlee
Majordomo-owner: chlee
majordomo:"|/usr/local/majordomo-1.93/wrapper majordomo"
첫 번째와 두번째 라인은 majordomo의 관리자가 local domain에 있는 chlee라는 사람이라는
것을 알려주는 것이다. 세번째라인은 majordomo로 메일이 도착했을 때 해야할 것을
알려주는 라인이다. 즉, /usr/local/majordomo-1.93/wrapper 프로그램을 majordomo라는
인수를 가지고 실행하게 된다.
1.3.6 메일링리스트 만들기
예로써 "test"라는 이름을 가진 메일링리스트를 만들어 보도록하자.
다음 예에서 $listdir은 /usr/local/mail이다. 물론 다른 패스를 가질수도 있다.
- $listdir에 test라고 불리는 화일을 mode 664(-rw-rw-r--)로 생성한다.
- $listdir에 test.passwd화일을 mode 664로 생성하고, list에 대한
"approve" 패스워드를 적는다. 이 패스워드는 "test"메일링리스트의 관리자의 패스워드가
된다.
- $listdir에 test.info화일을 mode 664로 생성하고, test list에 대한 소개를 쓴다.
이 화일의 내용은 test 메일링 리스트에 대한 정보를 요구할 때 요구한 사람에게 메일
로서 보여지게 된다.
- $listdir에 모든 화일은 user majordomo, group majordomo, mode 664로 해야한다.
test 메일링리스트로의 메일을 처리하기 위해서 /etc/aliases화일에 다음라인들을
첨가해야 한다.
test: :include:$listdir/test
owner-test: chlee
test-request: "|/usr/local/majordomo-1.93/wrapper request-answer test"
test-approval: chlee
첫번째 라인은 "test" 메일링 리스트에 가입한 사람들의 주소를 기록하고 있는 화일을 include
해서 test로의 메일이 "test" 메일링리스트에 가입한 모든 사람에게 가도록 한다. 두번째
라인은 test 메일링리스트의 관리자가 chlee라는 것을 나타내는 것이고, 네 번째 라인은
관리자에게 어떤 종류의 허락을 받아야 하는 경우의 메일 주소이다.
1.4 메일링리스트의 관리
majordomo를 통한 메일링리스트의 관리는 메일을 통해서 이루어진다. majordomo는
body부분에 있는 것들을 명령어로써 인식하고 처리한다. majordomo가 인식하는 명령어중에는 일
반명령어와
관리자용 명령어가 있다.
1.4.1 일반명령어
- subscribe test: 메일을 보낸사람을 test 메일링리스트에 가입시킨다.
- unsubscribe test: test 메일링리스트에서 제외시킨다.
- index test: test 메일링리스트와 관련된 파일리스트를 보여준다.
- get test file: test 메일링리스트에서 file이라는 화일을 얻는다.
- who test: test 메일링리스트에 가입한 사람들을 보여준다.
- info test: test 메일링리스트에 대한 소개정보를 얻는다.
- lists: majordomo에 의해 관리되고 있는 list들을 보여준다.
- Help: 명령어에 대한 도움말
- end: 진행되고 있는 명령을 중지시킨다.
1.4.2 관리자용 명령어
- approve password subscribe test address:
test 메일링리스트에 address를 가입시킨다.
- approve password unsubscribe test address:
test 메일링리스트에서 address를 제외시킨다.
- newinfo test password:
test 메일링리스트에 대한 소개정보를 바꾼다.
새로운 소개정보는 명령어라인 이후부터 EOF까지이다.
- pasword test old-password new-password:
관리자 패스워드를 old-password에서 new-password로 바꾼다.
- config test password:
test list에 대한 config화일을 얻는다.
- newconfig test password:
test list에 대한 config화일을 변경한다. 새로운 config화일은 명령어라인
이후부터 EOF까지이다.
- writeconfig test password:
모든 코멘트와 default값이 셋팅된 config화일로 test list의 config화일을 셋팅
2. Mail gateway
cre.co.kr도메인에 gateway를 설치하는 과정을 통해 Mail gateway에 대해서 살펴보자.
2.1 Mail gateway의 개념
일반적으로 메일 주소는 chlee@target.cre.co.kr과 같이 '@'다음에 호스트명이 나온다.
그런데, 간혹 보면 chlee@cre.co.kr과 같이 '@'이후에 도메인 명이 오는 경우가 있다.
이런 주소를 갖는 도메인의 경우 Mail gateway가 설치된 것이다. Mail gateway는
sendmail configuration을 조정하여 들어오고 나가는 메일이 모두 하나의 mail exchanger
만을 사용하도록 하는 것이다. Mail gateway를 설치했을 경우 여러가지 메일 라우팅이 어떻게
이루어지는 지 알아보고, 실제로 gateway를 어떻게 설정하는 지에 대해서 살펴보자.
2.1.1 메일과 DNS MX record
Mail gateway에 대해서 이해하기 위해서는 먼저 DNS와 메일과의 관계를 이해해야 한다.
- MX record format:
domain IN MX priority host
- 메일 전달과정:
MTA-->domain_part-->MX record 읽기-->priority가 큰 순서로 호스트 찾기-->수신가능한 호
스트가 메일을 받는다.
2.1.2 다른 도메인으로부터의 메일 라우팅
(1) any@remote.com의 주소를 가진 사람이 chlee@cre.co.kr로 메일을 보낼 경우에 메일 라우팅
과정을 설명하는 그림이다.
(2) remote.com의 MTA는 먼저 cre.co.kr로 메일을 전달하기 위해 DNS record를
찾아본다. 그리고는 cre.co.kr의 메일교환은 mailgw.cre.co.kr을 통해 일어난다는
것을 안다.
(3) mailgw.cre.co.kr로 메일을 보낸다.
(4, 5) mailgw.cre.co.kr은 메일을 받은 후에 메일을 chlee에게 전달하기 위해
aliases화일을 살펴보고 chlee가 chlee@target.cre.co.kr인 것을 발견한다.
(6) chlee@target.cre.co.kr로 메일을 보낸다.
(7) target.cre.co.kr에서는 chlee의 mailbox로 메일을 저장한다.
2.1.3 다른 도메인으로의 메일 라우팅
아래의 그림은 chlee@cre.co.kr이 who@rsaeuro.com으로 보내는 메일의 라우팅과정이다.
(2) local domain의 모든 메일은 mailgw.cre.co.kr로 보내진다.
(3) mailgw.cre.co.kr은rsaeuro.com에 대한 DNS record를 보고 rsaeuro.com에 대한
MX(Mail Exchanger)가 post.rsaeuro.com인 것을 안다.
(4) post.rsaeuro.com으로 메일을 보낸다.
2.1.4 같은 도메인에서의 메일 라우팅
(1) chlee가 같은 도메인의 golmong에게 메일을 보낸다.
(2) 메일은 mailgw.cre.co.kr로 보내진다.
(3) mailgw.cre.co.kr은 aliases화일에서 golmong의 주소를 찾아낸다.
(4) golmong@music.cre.co.kr로 메일을 보낸다.
(5) music.cre.co.kr은 golmong의 mailbox로 메일을 저장한다.
2.2 Mail gateway의 설치
Mail gateway의 설정을 위해서 먼저 DNS record에 다음 라인을 첨가해야 한다.
cre.co.kr. IN MX 10 mailgw.cre.co.kr.
2.2.1 sendmail.cf의 설정을 위한 macro얻기
다음의 장소에서 얻을 수 있다. ftp://ftp.tic.com/pub/cf.pn.tar.Z
2.2.2 mail gateway로 사용할 호스트의 sendmail.cf설정
- /etc/sendmail.cf화일
(1) DVgw.1.0
(2) DDcre.co.kr
(3) Dj$w
(4) Dmtcp
(5) include (general.m4)
(6) include (rules.m4)
(7) include (local.m4)
(8) include (tcp.m4)
(9) include (zeropre.m4)
(10) R$*<@$-.$D>$* $#$M $@$2.$D $:$1<@$2.$D>$3
(11) R$*<@$+>$* $#$M $@$2 $:$1<@$2>$3
(12) R$+%$+ $@$>29$1@$2
(13) R$+ $#local $:$1
- 설명
(1) "V" macro. 모든 매크로는 "D"로 시작된다.
이러한 매크로는 SMTP banner message에 나타난다.
(2) 해당되는 site에 대한 도메인 이름에 관한 매크로 정의
(3) "j"macro. 호스트에 대한 공식적인 이름.
sendmail이 실행되면 "w"매크로에 의해 치환된다.
(4) The name of the major relay mailer
(5-9) include file: general infomation, rulesets, local mailer setting, 등
변하지 않는 configuration부분의 화일을 포함시킴
(10) 해당되는 호스트의 MTA로 메일을 보내는 규칙
(11) local domain에 대한 모든 메일을 그 도메인의 메일 게이트웨이로 보내는 규칙
(12) 내부 라우팅 문법을 다루는 규칙
(13) default address를 다루는 규칙
2.2.3 mail gateway이외의 호스트들의 sendmail.cf설정
- sendmail.cf
(1) Dvsub.1.1
(2) DD
(3) FL/etc/local_names
(4) Dj$w
(5) Dmtcp
(6) Drmail_relay.$D
(7) include (general.m4)
(8) include (rules.m4)
(9) include (local.m4)
(10) include (tcp.m4)
(11) include (zeropre.m4)
(12) R$=L $#local $:$1
(13) R$+ $#$M $@$R $:$1
- 설명
(3) 모든 사용자들의 기록을 가지고 있는 화일의 이름
(6) An alias for the mail gateway machine
(12) 도메인 부분이 없는 메일을 전달하는 규칙
(13) default address를 다루는 규칙
2.3 Mail gateway와 POP
PC나 Machintosh의 경우 SMTP를 사용해서 메일을 주고 받을 수 없다. 또한, SLIP이나
PPP접속 사용자의 경우처럼 일시적인 접속의 경우에는 메일을 항상 받을 수는 없다.
이러한 경우 메일을 항상 수신할 수 있는 호스트가 있고 PC에서 remote login을 통하여
자신의 mailbox에 있는 메일을 읽게 된다.
POP 프로토콜은 앞의 경우처럼 SMTP를 사용해서 메일을 주고 받을 수 없는 호스트가
SMTP를 운영하고 있는 호스트로부터 메일을 가져와서 local mailbox에 저장하는 것을
가능하게 한다. 이 경우 SMTP를 사용할 수 있는 호스트의 POP protocol을 지원하는 프로그램을
POP server라고 하고 SMTP를 사용할 수 없는 호스트(PC나 Mac)의 UA를 POP client라고
한다.
2.3.1 POP server
다음에서 popper라는 프로그램을 얻는다.
ftp://mailer.fsu.edu/pub/Unix/Email/Server/
a>
ftp://ftp.CC.Berkeley.EDU/pub
그리고 나서 다음과 같이 인스톨한다.
(1)tar xvf popper*.tar; cd popper; make popper
(2)INSTALLDIR 수정; make install
(3)/etc/services화일에 다음을 써넣는다.
pop3 110/tcp
(4)/etc/inetd.conf화일을 수정한다.
pop3 stream tcp nowait root /usr/local/bin/popper popper
2.3.2 POP client
POP client로 유명한 것은 Eudora이다. Netscape Mail도 POP 프로토콜을 지원한다.
2.3.3 sendmail configuration
- sendmail configuration
(1) DV gw.1.0
(2) DD cre.co.kr
(3) Dj$w
(4) Dmtcp
(5) include (general.m4)
(6) include (rules.m4)
(7) include (local.m4)
(8) include (tcp.m4)
(9) include (pop.m4)
(10) include (zeropre.m4)
(11) R$*<@pop.$D> $#pop $@pop $:$1
(12) R$*<@$-.$D>$* $#$M $@$2.$D $:$1<@$2.$D>$3
(13) R$*<@$+>$* $#$M $@$2 $:$1<@$2>$3
(14) R$+%$+ $@$>29$1@$2
(15) R$+ $#local $:$1
- pop.m4
pop.m4화일에서 popper프로그램의 path를 수정해 주어야 한다. 다음은 path가 수정된
pop.m4화일이다.
Mpop, P=/usr/local/lib/popper, F=nsmFDM, S=17, R=27,
A=popper, $u
S17
S27
참고문헌(References)
- [Mail gateway]
- John S.Quarterman, The Internet Connection, April, 1994
Last-Modified : Sunday, 20-Oct-96 22:00:00