메이저도모 하우투메이저도모 설치, 관리 및 그 사용법심상현 artsilly@kuls.korea.ac.kr1999년 9월 30일 v0.8 (레드햇 6.0 문제 해결판 ^^)이 문서는 메일링 리스트에 대한 간략한 정보와 리눅스 시스템에서 널리 쓰이고 있는 메일링 리스트 매니저(MLM)인 메이저도모를 설치, 운영하는 방법에 대해 담고 있다. 1. Quick Links아직까지는 HTML 버전에서만 Quick Links 가 가능합니다. 문서의 작성이 정리되면 몇째줄에 있다는 식으로 명시하도록 하죠. 여기에 있는 것은 여러 질문이 많이 나오는 내용에 대한 것입니다. 2. 문서의 소개2.1 작성동기학교 학회에서 졸업한 선배들과의 긴요한 연락을 위해 메일링리스트를 운영하려 했는데 메이저도모의 설치가 그리 간단하지 않았다. 함께 제공되는 문서를 읽어보는 것도 시간이 오래 걸리고 그리 쉽지 않았다 - 영어니까 ^^;;. 설정이 올바로 되지 않아, 메일이 보낸 사람에게 되돌아 가거나 없어져 버리곤 했다. 혹은 아예 메일링리스트 관리자에게 메일을 보내지 못하는 일까지 있었다! 이에 설치했던 경험을 살려 새로 메일링 리스트를 운영하려는 리눅서를 위해 도움이 될까 하고 이 문서를 작성하게 되었다. 2.2 이 문서의 최신 버전이 문서의 최신 버전은 http://kulsnet.korea.ac.kr/~artsilly/을 통해서 txt, html 형식과 두 형식을 압축한 tgz파일로 구할 수 있다. 또한 어느 정도 문서의 신뢰성이 갖추어진다면, 리눅스 한글문서 프로젝트 http://kldp.linux-kr.org를 통해서도 문서를 구할 수 있을 것이다. 정식버전 이전에는 홈페이지를 이용하기 바란다. 이 문서의 버전 정보 및 변경사항은 말미의 버전정보를 참고하기 바란다. 2.3 저작권This document is copyrighted (C) 1999 Korea University Linux Study, KULS. Distributed under LDP copyright license. 특별한 말이 없을 경우 리눅스 하우투 문서의 저작권은 그 문서를 작성한 사람에게 있다. 리눅스의 하우투 문서는 여러가지 방법을 통해 일부나 전체를 임의로 바꾸거나 배포할 수 있다. 상업적인 재 배포 역시 권장되고 허락된다. 그러나 그럴 상황이 되면 꼭 필자에게 공적으로 연락해 주길 바란다. 이 문서에 대한 번역이나 이 문서로부터의 발췌, 혹은 재 편집에 대한 내용에도 저작권을 꼭 표시해 주기 바란다. 다른 리눅스 하우투 문서 역시 이런 규칙을 지켜주기 바란다. 규칙을 지키지 않고는 이 글을 이용한 다른 문서의 작성은 허용되지 않는다. 특정 상황 하에서 예외가 인정될 수 있다. - 이 경우는 리눅스 하우투 관리자와 접촉하기 바란다. 결론적으로 많은 방법으로 이 문서가 배포되고 전달되기를 바란다. 그러나 모든 경우에 있어서 저작권을 표시해 주고 재배포시는 필자에게 통보해주길 바란다. 2.4 도움을 주신 분들이 문서를 작성하는 동안 많은 분들이 E메일과 비비에스, 유즈넷을 통해 필자가 알지 못하는 점에 대한 정보를 주거나, 문서의 내용을 검증해 주었다. 문서 곳곳에서 도움을 주신분의 이름을 찾을 수 있다. 특별히 언급하지 않았어도 많은 질문을 통해 좀 더 창조적인 생각과 여러 테스트를 하게 해주신 분들께 감사의 말을 전한다. 그밖에 이 문서를 시작하는 계기가 되게 해 준 꼬마전구의 모든 사람들과 조그마한 그 사람에게 감사드린다. 3. 시작하기3.1 메일링 리스트란 무엇인가?메일링 리스트는 일정 주제에 대해 관심이 있는 사람들이 그 주제에 대해 메일을 통해 서로의 생각을 나누는 일종의 토론 그룹이다. 토론 그룹은 유즈넷이나, 비비에스등의 다른 방법을 통해서도 구현되고 있으며 메일링 리스트 역시 이런 토론 그룹과 크게 다르지 않다. 다른 토론 그룹과 비교하자면 다음과 같은 특징을 지녔다고 할 수 있다.
3.2 왜 메일링 리스트 매니저(MLM)를 써야하는가?여러 사람이 어떤 주제에 대해 메일을 통해
대화를 나눈다고 생각해 보자. 몇몇 안되는 사람 사이라면 각기 메일을
보낼 때
3.3 왜 메이저도모인가?리눅스에서 사용가능한 메일링 리스트 매니저로는 본 문서에서 다룰 메이저도모를 비롯하여, 리스트서브(LISTSERV), 리스트프로크(Listproc), 스마트 리스트(SmartList)등 몇몇 가지가 있다. 선택하는 기준으로는 여러가지가 있겠지만 다음과 같은 것들을 일반적으로 생각해 봐야 할 것이다.
메이저도모는 위의 기준에 맞추어 보았을 때, 리눅스 사용자들에게 꽤나
적합한 프로그램이라 할 수 있겠다. 우선 GPL을 따르는 프로그램이고,
소스가 공개되어 있어 특정 목적에 맞추어 변경가능하다(한글 명령어
지원등). 물론 사용하기에 무리 없을 정도의 가입자를 수용할 수
있다. 게다가 메이저도모는 시스템 자원을 안쓰기로 유명한
프로그램이다.( 마지막으로 메이저도모는 한국에서 운영되고 있는 메일링 리스트에서 광범위하게 쓰여지고 있어 여러모로 편리할 것이다. 또한 메이저도모와 웹을 연동하는 여러 프로젝트가 진행되고 있으므로 요즘에 유행하는 웹 인터페이스를 지원하기에도 쉬울 것이다. 다음의 URL을 참고하기 바란다.
만일 유즈넷과의 연동을 준비한다면 newsgate라는 프로그램을 이용할 수도 있을 것이다.
각 메일링 리스트에 대해 좀 더 알고 싶다면 ftp://ftp.uu.net/usenet/news.answers/mail/list-admin/software-faq을 구해 읽어보기 바란다. 각각의 MLM에 대해서 비교와, 소개를 한 문서이다. 마지막으로 메이저도모를 이용하다가 생기는 여러 오류들에 대해서는 메이저도모와 함께 배포되는 FAQ를 반드시 참조하기 바란다. 가장 최신의 FAQ는 http://www.greatcircle.com/majordomo/majordomo-faq.html에서 구할 수 있다. 3.4 메이저도모 구하기, 그밖의 프로그램들.이 문서를 작성하는 시점에서 메이저도모의 최신 버전은 1.94.4였으며 곧 2.0 버전이 나올 것이라는 프로그램 제작자의 홍보가 있었다. 메이저도모는 다음 공식 ftp를 비롯한 여러 미러 사이트에서 구할 수 있다. ftp://ftp.greatcircle.com/pub/majordomo 또한 홈페이지에서는 메이저도모에 대한 내용을 알아볼 수 있다. http://www.greatcircle.com/majordomo/ 레드햇 사용자일 경우 레드햇사의 ftp를 통해 RPM으로도 구할 수 있다. 레드햇 4.x대의 사용자는 ftp://contrib.redhat.com/libc5/RPMS/ 에서 레드햇 5.x대의 사용자는 ftp://contrib.redhat.com/libc6/RPMS/ 에서 구할 수 있다. 레드햇의 미러 사이트는 http://www.redhat.com을 통해 알아보기 바란다. 우리나라의 인증 미러 사이트는 보라넷이다. 데비안 패키지 역시 쉽게 구할 수 있다. 그러나 데비안에서는 메이저도모를 설치하는 것이 그리 쉽지 않다. 오히려 데비안에서 권장하는 스마트리스트(SmartList)를 권한다. 뒤에 나오는 '데비안 사용자는' 절을 참고하라. 이 문서에서는 메이저도모와 sendmail을 연동하는 것에 대해 설명한다. 다른 MTA를 사용할 경우에는 조금 다른 설정이 필요할 것이다. Exim과 Qmail에 대한 프로젝트가 진행중에 있다.
메이저도모는 펄 스크립트(Perl Script - 아하 펄)로 이루어진 프로그램이다. 메이저도모를 사용할 리눅스 박스에 펄이 없다면 프로그램이 실행되지 않을 것이다. 다음의 명령으로 리눅스 박스에 펄이 설치되어 있는지 확인해 보라.
[root@kuls /root]# find / -name perl 일반적인 배포본이라면
[root@kuls /root]# whereis perl 펄을 찾으면 펄이 있는 디렉토리를 보여 줄 것이다. 그러면
[root@kuls /root]# 펄의 패스/perl -V 을 통해 버전을 확인한다. 펄이 없다면 펄을 구해서 설치 해야 한다. 펄의 버전은 4.019이상 이어야 한다.(1.94.4버전에서). 펄의 버전이 4.019 이하라면 설치과정에서 에러를 내며 설치가 되지 않을 것이다. 최신 버전의 white펄로 업그레이드 하기 바란다. 펄의 최신버전은 5.x 일 것이다. 펄 5는 현재 진행형으로 만들어지고 디버깅하고 있는 버전이기 때문에 좀 더 신중하게 선택해야 한다. 메이저도모 2.0버전부터는 펄4에 대한 지원을 더 이상 하지 않겠다고 했다. 게다가 펄을 쓰는 다른 프로그램들도 펄5 환경으로 거의 옮겨진 상태이므로 펄5로 업그레이드 하는 것은 좋은 생각이다. 아마도 배포본으로 구입한 리눅스를 쓰고 있다면 거의 대부분이 알게 모르게 펄5를 설치해 놓고 사용중에 있을 것이다. 충분히 동작이 검증된 펄의 버전은 4.036버전과 5.002버전인다. 5.001버전에서는 동작하지 않는다!! 또한 레귤러 익스프레션의 변화가 생긴 펄 5.004 버전에서 동작시키려면 최소한 1.94.3 이상의 메이저도모를 써야 할 것이다. 또한 5.005_01 버전에서는 펄의 버그로 인해 메이저도모를 사용할 수 없다. 우리나라에서 많은 사용자층을 가지고 있는 배포본으로는 레드햇을 들 수 있다. 안타깝게도 레드햇의 몇몇 배포본에 포함된 펄에서 메이저도모가 돌아가지 않는다. 위의 펄 버전을 구하는 명령을 통해 나온 버전 정보에서 MAINT_TRIAL_4 - 5.004_05 maintenance trial 4를 발견할 수 있다면 이것은 5.004m4 버전으로 알려진 트라이얼 버전이다. 이 버전에서는 "Unknown mailer error 9" 라는 에러를 날려준다. 반드시 펄을 업그레이드 하기 바란다. 배포본으로 레드햇 5.2 가 속한다. 레드햇 5.1의 펄은 버전이 5.004_6으로 이런 문제가 생기지 않는다고 이재광 leesop@uriweb.net님께서 연락주셨다. 레드햇 5.2를 사용중인 사용자는 반드시 펄의 버전을 확인하고, 펄의 판올림을 해야 할 것이다. 레드햇 6.0 및 그것의 한글화 버전인 여러 배포본에 들어있는 펄에서는 아직 아무런 문제도 발견되지 않았다. 4. 최종점검4.1 메일링 리스트 설치를 위해 필요한 사항위에 언급한 것처럼 메이저도모는 펄 스크립트로 되어있기 때문에 펄이 설치되어 있어야 한다. 또한 메이저도모의 소스를 가지고 설치하려고 할 때는 gcc나 egcs와 같은 c 컴파일러가 필요하다. 메이저도모는 모두 설치하게 되면 약 500KB정도의 적은 용량만을 차지하게 됨으로 디스크 용량에 대해서는 그리 걱정할 필요가 없다. 물론 오가는 메일을 파일로 보관하겠다고 한다면 메일이 오가는 수준에 맞추어 적절한 저장공간이 필요할 것이다. 4.2 메일링 리스트 관리자 만들기수퍼유저의 권한으로 메일링 리스트 관리자를 만들어야 한다. 보통은 majordom.daemon등으로 아이디를 만들어 준다. 그밖에 자신이 사용하기를 바라는 다양한 아이디를 사용할 수 있을 것이다. 자신의 서버에 적합한 관리자 아이디를 만드는 것도 좋을 것이다. 만일 그룹을 daemon이 아닌 다른 것으로 정했다면 메일링 리스트 관리자 ID는 반드시 /etc/senmail.cf에 있는 Trusted users 섹션에 등록이 되어 있어야 한다. 즉
##################### # Trusted users # ##################### # this is equivalent to setting class "t" #Ft/etc/sendmail.ct Troot Tdaemon Tuucp T메일링 리스트 관리자 아이디 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 과 같이 sendmail.cf에 등록을 해 주어야 한다. 'T'를 붙여주는 것을 잊지 말자. 이 문서에서는 kulslist.daemon을 메일링 리스트 관리자로 하도록 하겠다. 사실 이 유저는 동아리에서 쓰는 아이디이다. 그룹이 daemon이기 때문에 특별히 'Trusted users' 섹션에 넣을 필요는 없다. 5. 일반적인 방법으로 설치하기이 방법은 직접 소스를 받아 컴파일하고 설치하는 방법이다. 모든 리눅스 유저에게 유용하고 특히 슬렉웨어 사용자에게 더욱 그렇다. 내가 선호하는 방법이기도 하다. ^^; (메이저도모는 특성상 패키지 방식의 인스톨 보다는 수동으로 직접 설치하는 것이 어쩜 더 편할 지도 모르겠다. 위의 ftp사이트로부터 다운로딩한 majordomo-1.94.4.tgz를 푼다. tar.Z나 tar파일도 찾아볼 수 있다. 적당한 디렉토리 밑에 메이저도모를 푼다.
[root@kuls /root]# tar xvfz majordomo-1.94.4.tgz 다운로딩에 실패하지 않았거나 믿을 수 있는 사이트에서 받았다면 아무런 에러없이 풀릴 것이다. 메이저도모를 컴파일하고 설치하는 것은 무척이나 간단하다. 이제
[root@kuls /root]# cd majordomo-1.94.4 를 통해 메이저도모 디렉토리로 들어가 다음의 과정을 따르도록 한다.^^;; 5.1 Makefile 설정하기지금부터는 루트 권한으로 프로그램을 설치하고, 설정한다. 개인의 디렉토리에 설치할 수도 있으나 몇몇 과정은 루트가 아니면 안된다. 그 첫째로 Makefile을 바꾸어주어야 한다. 자신에게 익숙한 에디터를 이용하여 Makefile을 연다. 우선은 Perl과 C 컴파일러에 대한 설정을 맞추어주어야 한다. C 컴파일러의 경우 일반적인 리눅스 배포본이라면 특별히 손대지 않아도 될 것이다. 펄의 경우에는 좀 더 신경을 쓰고 정확한 디렉토리를 맞추어주기 바란다. 펄의 위치를 찾는 방법은 위에서 한번 언급했다. 이제 메이저도모의 설치 디렉토리를 정해주어야 한다. 특별히 손대지 않을
경우 디폴트로
# Put the location of your Perl binary here: PERL = /usr/bin/perl ^^^^^^^^^^^^^^^^^^^^ # What do you call your C compiler? CC = cc # Where do you want Majordomo to be installed? This CANNOT be the # current directory (where you unpacked the distribution) W_HOME = /usr/lib/majordomo ^^^^^^^^^^^^^^^^^^^^^^^^^^^ # Where do you want man pages to be installed? MAN = $(W_HOME)/man #MAN = /usr/man #이런 식으로 매뉴얼 디렉토리에 모으는 것도 좋은 생각이다. ^^^^^^^^^^^^^^^ # You need to have or create a user and group which majordomo will run as. # Enter the numeric UID and GID (not their names!) here: W_USER = 503 W_GROUP = 2 물론 그렇겠지만, 위의 내용은 나의 시스템에 맞추어져 있다! 그냥 배껴서는 안된다. 5.2 majordomo.cf 설정하기소스와 함께 제공되는 sample.cf를 majordomo.cf로 복사한다.
[root@kuls /root/majordomo-1.94.4]# cp sample.cf majordomo.cf majordomo.cf에서는 다음의 내용을 고쳐야 한다. $whereami : 메일링 리스트를 운영할 서버의 도메인 네임을 써준다. $whoami : 메일링 리스트에서 가입자의 요청을 처리하는 메일 엘리어스, 에이전트, 디폴트 값인 majordomo를 쓰도록 하자. 반드시 "사용자@도메인이름"의 형식으로 써주어야 한다. 밑에 예제와 같이 변수 형태로 써주어도 된다. $whoami_owner : owner라는 단어가 많이 나오는데 이에 대해서는 뒤에 설명하도록 한다. 여기에는 우리가 만든 메일링 리스트 관리자 kulslist를 써주도록 한다. $homedir : 당연히, Makefile에서와 똑같은 곳이어야 한다. $listdir, $log : 특별히 변경하지 않아도 된다. 설치 후 자동으로 만들어진다. $sendmail_command : 펄의 위치 다음으로 중요하다. 펄의 위치를 확인하는 방법과 비슷한 방법을 써서 정확히 적도록 한다.
$whereami "kuls.korea.ac.kr"; #서버이름 $whoami "Majordomo\@$whereami"; #메일링 리스트 에이전트 #이 에이전트는 특별히 바꾸지 않는 것이 가입자들에게 편리하다. $whoami_owner "kulslist\@$whereami"; #메일링 리스트 에이전트 소유자(?) $homedir "/usr/lib/majordomo"; #Makefile에서와 같이 $listdir "$homedir/lists"; #리스트 디렉토리 $log "$homedir/Log"; #로그 파일 디렉토리 $sendmail_command "/usr/lib/sendmail"; #sendmail이 있는 위치 나머지는 아직까지 특별히 변경할 필요가 없다. 추후 필요한 경우 설정하도록 한다. 설치 과정에서는 위의 내용정도만 정확히 써 주면 될 것이다. 펄 형식에 맞게 ;를 붙이는 것을 잊지 말자. 5.3 컴파일 및 설치하기이제 다음 명령을 통해 설치을 해야 한다. 각 과정에서 에러가 발생하지 않는다면 다음 과정으로 넘어간다. 에러가 난다면 gcc의 버전이 너무 낮거나, 펄의 위치가 잘못되었거나, Makefile이 잘못되었거나등의 원인을 찾아볼 수 있다.
[root@kuls /root/majordomo-1.94.4]# make wrapper [root@kuls /root/majordomo-1.94.4]# make install [root@kuls /root/majordomo-1.94.4]# make install-wrapper 중요한 것은 메이저도모와 wrapper의 설치가 올바르게 되었는지 확인하기 위해서 메이저도모 디렉토리로 이동한 후 메일링 리스트 관리자나 루트가 아닌 일반계정으로 다음 명령을 수행한다. wrapper는 일종의 "권한얻기" 프로그램인데 이 프로그램이 올바로 수행되기 위해서는 일반 계정으로 동작하는지 알아봐야 하기 때문이다.
[kuls /usr/lib/majordomo]$ cd /usr/lib/majordomo [kuls /usr/lib/majordomo]$ ./wrapper config-test 위의 명령은 설치 확인 과정인 동시에 설치의 마지막 과정을
수행한다. 메일링 리스트가 들어갈
--------------------- Obvious things: --------------------- ------------------ environment variables ------------------ HOME=/usr/lib/majordomo LOGNAME=kulslist MAJORDOMO_CF=/usr/lib/majordomo/majordomo.cf PATH=/bin:/usr/bin:/usr/ucb SHELL=/bin/sh USER=kulslist --------------------- euid/egid checks --------------------- effective user = kulslist (uid 503) effective group = daemon daemon (gid 2 2 ) ---------------------- uid/gid checks ---------------------- real user = kulslist (uid 503) real group = daemon daemon (gid 2 2 ) ------------------------------------------------------------ Good: 'require'd /usr/lib/majordomo/majordomo.cf okay. Good: found ctime.pl okay. Good: found majordomo_version.pl okay. Good: found majordomo.pl okay. Good: found shlock.pl okay. Good: found config_parse.pl okay. You're running Majordomo Version 1.94.4. --==> Majordomo home directory is /usr/lib/majordomo. ------------------- Include directories ------------------- /usr/lib/majordomo /usr/lib/perl5/5.00502/i386-linux-thread /usr/lib/perl5/5.00502 /usr/lib/perl5/site_perl/5.005/i386-linux-thread /usr/lib/perl5/site_perl/5.005 . --------------------------- Home --------------------------- Good: changedir to /usr/lib/majordomo succeeded. Good: Created a mock lock file. ---------------------- temp directory ---------------------- Good: Created a temp file in $TMPDIR (/usr/tmp). ---------------------- list directory ---------------------- Good: list directory /usr/lib/majordomo/lists has good permissions. --------------------------- log --------------------------- Good: logfile /usr/lib/majordomo/Log exists and is writeable. ------------------------- Mailers ------------------------- You have defined a mailer for delivery. Attempting to verify that this is a valid mailer...looks okay. You have defined a mailer for delivering administrative messages. Attempting to verify that this is a valid mailer...looks okay. ------------------ Checking majordomo.cf ------------------ Checking to see if there are new variables that should be in your majordomo.cf file...Nope, none that I see. Have you configured where Majordomo is? $whereami is kuls.korea.ac.kr Good: yup! ----------------------- end of tests ----------------------- Nothing bad found! Majordomo _should_ work correctly. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 밑으로는 제작자의 프로그램 제작에 사용하기 위한 레지스터 요청이 나올것이다. 특별히 숨어살고 싶은 사람이 아니라면 등록을 하기 바란다. 만일 'no'라고 대답하면 '어라? 죽고 잡냐? 잉?(Ooooh, like to live dangerously, eh?!)' 이란 메세지가 나온다.:) 에러가 나와서 멈춘다면 에러 메세지를 확인하고 위의 과정을 되풀이하기
바란다. 모든 것이 올바르게 된 것 같은데에도 잘 되지 않는다면 Makefile,
majordomo.cf 그리고 5.4 sendmail 엘리어스 설정하기만일 메일링 리스트 관리자의 그룹이 daemon이 아니라면 위에 언급하고 지나갔던 sendmail.cf에 메일링 리스트 관리자를 'Trusted user'로 등록하는 것을 잊지 말자. 지금 하는 말이 무슨 말인지 모르겠는 독자는 '메일링 리스트 관리자 만들기' 절을 다시 읽어보기 바란다. 이제는 메이저도모에 관계된 엘리어스를 sendmail의 엘리어스 파일에
추가해 주는 것이다. 일반적으로
OA/usr/lib/majordomo/majordomo.aliases 혹은
O AliasFile=/usr/lib/majordomo/majordomo.aliases 를 추가한다. 아마 자신의 sendmail.cf 가 어떤 스타일의 문법을 쓰는지 금새 알 수 있을 것이다. 이제는 majordomo.aliases 파일을 작성해야 한다. 프로그램을 설치하면 설치된 디렉토리에 majordomo.aliases가 없을 것이다. 맨손으로 시작해도 되지만 좀 더 쉽게 하기 위해 압축을 푼 디렉토리에 있는 majordomo.aliases를 메이저도모 디렉토리로 카피해서 쓰도록 하자.
[root@kuls /root/majordomo-1.94.4]# cp majordomo.aliases /usr/lib/majordomo/majordomo.aliases 만일 소유자가 메일링 리스트 관리자가 아니라면 소유자를 바꿔주도록 한다.
[kulslist@kuls majordomo]$ chown kulslist.daemon /usr/lib/majordomo/majordomo.aliases 이제 메일링 리스트 관리자로 majordomo.aliases파일을 편집하도록 한다..
majordomo: "|/usr/lib/majordomo/wrapper majordomo" majordomo-owner: kulslist owner-majordomo: kulslist test: "|/usr/lib/majordomo/wrapper resend -l test test-list" test-list: :include:/usr/lib/majordomo/lists/test owner-test: kulslist test-owner: kulslist test-request: kulslist 위의 파일은 소스와 함께 제공되는 예제파일에서 'you' 만 'kulslist'로
바꾸고 디렉토리 설정을 위에서 설치한 디렉토리로 바꾸어 준 것
뿐이다. majordomo.aliases를 설정하는 것에 대해서는 뒤쪽에 한 챕터로
분리해서 다룰 것이다. 지금은 설치와
설치확인과정이다. 위의 -owner 와 등에 majordomo를 쓰는 것은 치명적인 결과를 낳을 수 있다. 즉 위의 -owner 등의 앨리어스는 문제가 생기거나 결과등을 보내주는 메일 엘리어스인데 만일 그곳에다가 majordomo를 써 놓는다면 리스트의 가입 탈퇴등 리스트에 사용하는 명령들을 받는 이 majordomo라는 아이디로 메일을 보내게 된다. 이 경우 만일 문제가 생겨서 메일이 -owner에게로 포워딩 되는 경우 majordomo는 명령이 아닌 메일을 받게 되고 이 메일은 잘 못 된 형식이라고 -owner 에게 보내게 되고 이것은 다시 majordomo에게 가는 치명적인 결과를 낳게 된다. 물론 여기서는 majordomo라고 딱 잘라 말했지만 위의 majordomo.cf설정에서 $whoami를 다르게 설정한 사람은 다른 아이디가 될 것이다. 하여간 주의하기 바란다. sendmail에서는 이 aliases들을 바이너리의 데이터 베이스로
관리한다. 위와 같이 텍스트로 제작된 aliases를
이다. 만일 루트가 한 번만 도와준다고 한다면 sendmail.cf 내에 어쨌든 루트로 aliases를 갱신한다.
[root@kuls /root]# newaliases 이때 majordomo.aliases를 위 예제와 같이 /usr/lib/majordomo/ 에 위치시켰다면 데이터 베이스를 생성할 수 없다면서 에러를 낸다. 즉 newaliases를 해주기 전에 다음과 같이 데이터베이스 파일을 만들어 주어야 할 것이다. 이때는 반드시 root가 해주어야 한다. 일반 계정으로 하게 되면 생성이 안된다는 에러메세지를 만나게 될 것이다. 아래 majordomo.aliases.db 파일은 root.root소유에 644로 생기게 된다.
[kulslist@kuls majordomo]$ su - [root@kuls /root]# touch /usr/lib/majordomo/majordomo.aliases.db [root@kuls /root]# newaliases 또한 보안문제로 majordomo.aliases.db가 위치하는 디렉토리의 퍼미션 역시 주의하여야 한다. 물론 디렉토리 퍼미션을 777같은 식으로 만들지는 않으리라 믿는다. 아래와 같이 majordomo.aliases.db 파일이 올바르게 갱신되었다면 설치는 끝난 것이다.
/etc/aliases: 16 aliases, longest 17 bytes, 190 bytes total /usr/lib/majordomo/majordomo.aliases: 15 aliases, longest 141 bytes, 782 bytes total 위에서 살펴본 내용은 대부분 메일링 리스트 관리자의 관점에서 생각한 것이다. 필자에게 온 메일중에 계정 서비스를 하는 시스템이나 자신이 관리하는 서버에 사용자가 메일링 리스트를 운영하고자 하는데 어떻게 해야 하느냐는 질문이 몇몇 왔다. 만일 위에서와 같이 자동 엘리어스 갱신 옵션을 켜 놓고, 각 메일링 리스트 관리자로 하여금 각자의 메일링 리스트 엘리어스 파일(majordomo.aliases)를 수정하게끔 했을 경우, 메일링 리스트 관리자가 악의를 품고 엘리어스를 마음대로 수정했을 경우 심각한 보안문제를 일으킬 수 있다. 따라서 메일링 리스트 관리는 시스템 관리자에 준하는 신뢰를 갖춘 사람에게 맡겨야 할 것이다. 5.5 최종점검하기설치의 최종단계로는 다음과 같이 리스트 디렉토리에 test라는 가짜 리스트를 만들어 메이저도모를 테스트 하는 것이다. 이 리스트에 대한 엘리어스는 이미 위에서 만들어 놓았다.(혹은 만들어져 있었다.)
[kulslist@kuls majordomo]$ touch /usr/lib/majordomo/lists/test [kulslist@kuls majordomo]$ echo 'lists' | /usr/lib/sendmail -v majordomo ^^^^^^^^^^^^^^^^^ 자신의 sendmail 디렉토리 위의 과정은 메일링 리스트 관리자 아이디로 하기 바란다. 더 이상 루트는 필요치 않다! 메일의 대상이 majordomo임을 명심하라! 이것은 우리가 만든 majordomo.aliases에 있는 대상중의 하나이다. 다음과 같은 메세지가 출력될 것이다.
majordomo... aliased to "|/usr/lib/majordomo/wrapper majordomo" "|/usr/lib/majordomo/wrapper majordomo"... Connecting to prog... ^^^^^^^^^^^^^^^^^^^^^^^^^ "|/usr/lib/majordomo/wrapper majordomo"... Sent ^^^^^^^^ 밑줄 친 부분을 주의해 보도록 하자. 에러가 난다면 거의 모든 경우에 밑줄친 부분에서 나게 될 것이다. 잠시 기다리면 메일이 다시 날아올 것이다. 밑줄 부분에 에러가 난다면 가끔 만나게 되는(잘못된 주소로 메일을 보냈다던지, 네트워크가 고장났던지 하는 이유로) MAILER-DAEMON 이란 작자에게서 메일이 되돌아 오게 될 것이다. 아마 밤 샐 각오하고 위의 과정을 반복하거나 모두 때려치고 밖에 나가서 술을 마셔야 할 것이다. 무언가 잘못되었다!! 그밖에 잘못된 것이 없지만 다음과 같은 메시지가 나올 수도 있다. majordomo... aliased to "|/usr/lib/majordomo/wrapper majordomo" "|/usr/lib/majordomo/wrapper majordomo"... Connecting to prog... "|/usr/lib/majordomo/wrapper majordomo"... Service unavailable postmaster... aliased to root root... Connecting to local... root... Sent 꾸엑. 그러나 지금까지의 설정에서 잘못된 것은 없는 것 같다. 이것은 레드햇 6.0의 sendmail설정이 바뀌어서 센드메일 앨리어스를 통해 불리우는 프로그램이 과연 수행해도 좋은 프로그램인지를 확인하는 과정에서 생기는 문제이다. 실제로 문제이기 보다는 메이저도모의 wrapper 프로그램을 등록하지 않아 생기는 에러메시지이다. sendmail에 wrapper를 등록하는 과정은 무척이나 간단하여 /etc/smrsh (이것은 아마 SendMailReliableSHell과 같이 들린다.)에 앨리어스를 통해 불릴 프로그램을 링크하는 것으로 해결된다. 즉
# cd /etc/smrsh # ln -sf /usr/lib/majordomo/wrapper . 물론 etc 디렉토리 밑을 건드리는 것이기 때문에 루트계정으로 수행해야 한다. 위의 두 라인을 해결한다면 레드햇 6에서도 메이저도모는 쉽게 설치된다. 사실 최근 메이저도모 질문의 90%가 위의 내용에 관한 것이다. 이제 아래와 같은 메일이 와야 하며, 메일이 온다면 성공한 것이다. Date: Sun, 3 Jan 1999 16:21:54 +0900 From: majordomo@kuls.korea.ac.kr To: kulslist@kuls.korea.ac.kr Subject: Majordomo results -- >>>> lists majordomo@kuls.korea.ac.kr serves the following lists: test Use the 'info <list>' command to get more information about a specific list. 지금 설치된 메일링 리스트에는 test라는 메일링 리스트가 있다는 응답이다. 하여간 위와 같이 메이저도모에게서 메일이 온다면, 이제 성공한 것이다. 나가서 술한잔 하고 오자. 여기까지 성공했으면 필자에게 메일을 보내도 좋다. artsilly@kuls.korea.ac.kr ^^;; 이제 리스트를 추가하도록 하자! 오! 아직! 마지막 한가지가 남았다. 위와 같이 메일링 리스트가 다 된다고 안심하면 그것으로 끝나지 않는다. 즉 내부 사용자들에게는 majordomo나 test가 보이지만 외부에서는 여전히 보이지 않는다. 이를 위해 sendmail을 재시동 시켜 주어야 한다. 레드햇 사용자라면
[root@kuls /root]# /etc/rc.d/init.d/sendmail restart 와 같이 해 주면 될 것이다. 일반적으로 sendmail의 PID를 찾아 프로세스를 닫고
[root@kuls /root]# /usr/lib/sendmail -bd와 같이 다시 실행시키면 될 것이다. 5.6 좀 더 편한 사용을 위해
6. 레드햇에서 설치여기서는 레드햇을 사용하며 직접 소스를 가지고 설치하지 않고 패키지를 이용해 이미 컴파일 된 바이너리를 이용하는 방법에 대해 설명한다. 물론 레드햇에서도 위와같은 방법으로 직접 인스톨하여 사용하여도 된다. 6.1 패키지 다운로딩 하기위의 레드햇 ftp를 이용하여 메이저도모 패키지를 다운로딩 한다. 이 문서 작성시 인텔버전으로는 majordomo-1.94.4-6.i386.rpm 이 최신버전이다. 6.2 패키지 설치하기glint나 rpm명령을 이용하여 설치한다. 나는 보통 rpm명령을 더 선호한다.
[root@kuls /root]# rpm -Uvh majordomo-1.94.4-6.i386.rpm 레드햇 rpm 패키지를 이용하여 인스톨 했을 경우 다음과 같은 것들이 달라진다.
6.3 설치후 해야 할 것그밖의 내용은 위 과정과 다를 바 없다. majordomo.cf 설정하기 과정 이하를 따라야 한다. 특히 메일링 리스트 관리자 그룹이 majordomo이므로 sendmail.cf에 Trusted users 섹션에 추가하는 것을 잊지 말도록 하자. 7. 데비안에서 설치데비안 사용자에게는 메이저도모가 그리 권장할 만한 것이 되지 못한다. 다음은 박주연 kokids@wdb.co.kr님이 유즈넷을 통해 전해준 정보이다.
하지만, 데비안에서는 메이저도모가 권장 사항은 아닙니다. Debian-KR 메일링 리스트도 메이저도모를 설정해서 사용하지만 이만저만 문제가 많은 게 아닙니다. 설정도 복잡하구요. 그래서 데비안에서는 smartlist를 권장 사항으로 하고 있습니다. 순전히 처음 만들어 놓을 때 손에 익은 것(majordomo)을 사용했었는데 제 생각엔 procmail을 기반으로 한 smartlist도 문서 번역이 이루어지는 것이 좋겠습니다. 데비안에서는 남들이 안쓰는(?) 것들을 주로 씁니다. 데비안 표준 MTA로는 smail을 사용하고, 메일링 리스트용으로는 smartlist를 사용합니다. 8. FreeBSD에서 설치여기서는 FreeBSD에서 majordomo패키지를 설치하는 방법에 대해 설명한다. 이 절은 최준호님 junker@jazz.snu.ac.kr에 의해 작성되었다. 여기의 내용은 문서 전체에서 다루는 예제 설정(관리자 ID나 디렉토리등)과는 조금 다르므로 혼란이 없기를 바란다. 최준호님께 감사를 드린다. 8.1 포트 스켈러튼 다운로딩majordomo는 설치하기 위해 다른 프로그램을 필요로 하지 않지만, FreeBSD CDROM이나 FTP사이트에서 패키지를 구할 수는 없다. 그 이유는 majordomo설치 과정에서 패키지로 해결할 수 없는 몇몇 질문을 설치 시스템이 하기 때문이다. 이런 패키지(대화형(interactive)패키지라한다)은 포트의 Makefile에 IS_INTERACTIVE=yes로 지정되어 있다(포트에 대한 자세한 내용은 FreeBSD 핸드북의 포트에 대한 장( http://www.kr.freebsd.org/handbook/ports.shtml)을 보기 바란다. FreeBSD의 프로그램 포팅 시스템인 포트에서는 mail카테고리에서 majordomo를 찾을 수 있다. 본인의 시스템에 FreeBSD를 설치할 때 포트 콜렉션을 설치하도록 하였거나(그렇지 않은 사람은 /stand/sysinstall을 실행하고 Configure - Distribution옵션을 선택하여 ports를 추가로 선택해 주고 CDROM이나 FTP사이트를 지정해 주면 된다) CVS/CVSup을 통해 포트 소스를 받은 경우에는 /usr/ports/mail/majordomo디렉토리에서 majordomo를 설치하기 위한 스켈러튼 파일을 찾을 수 있다. 그렇지 않고 해당 패키지의 포트만을 구하기 위해서는, 다음과 같이 하기 바란다.
# ftp ftp.kr.freebsd.org (또는 다른 FreeBSD미러 사이트) ....anonymous로 로그인한다... ftp> cd pub/FreeBSD/ports/mail ftp> get majordomo.tar.gz ...majordomo디렉토리를 압축해서 tar.gz로 묶어준다... ftp> quit 이후 받은 majordomo.tar.gz를 아무 디렉토리에 풀면 된다.
# cd your/work/dir # tar xzvf majordomo.tar.gz 8.2 컴파일하여 설치하기포트 시스템에서 majordomo를 설치하려면 루트 권한으로 다음과 같이 한다.
# cd /usr/ports/mail/majordomo (또는 majordomo를 풀어놓은 디렉토리) # make install clean 만약 여러분이 지금 인터넷에 연결되어 있다면 포트 시스템은 자동적으로
majordomo의 소스를 받아온다. 하지만 지금 인터넷에 연결되어 있지
않다면, 그 디렉토리의 Makefile에 있는 MASTER_SITES에 지정된 FTP경로 중
어느 한 곳에 접속해서 majordomo-1.94.4.tgz(또는 해당 버전)을 받아
/usr/ports/distfiles디렉토리(없다면 만들기 바란다)에 넣고 다시
# make install clean ... ===> Installing for majordomo-1.94.4 Testing for perl (/usr/bin/perl)... Configuring scripts... ./install.sh -m 751 -O 54 -g 54 . /usr/local/majordomo ./install.sh -m 755 -O 54 -g 54 . /usr/local/majordomo/bin Copying tools to /usr/local/majordomo/bin Copying Majordomo files to /usr/local/majordomo Copying archiving and other tools to /usr/local/majordomo/Tools ./install.sh -m 755 -O 54 -g 54 . /usr/local/majordomo/Tools Using majordomo.cf Installing manual pages in /usr/local/man To finish the installation, 'su' to root and type: make install-wrapper If not installing the wrapper, type cd /usr/local/majordomo; ./wrapper config-test (no 'su' necessary) to verify the installation. ./install.sh -o root -g 54 -m 4755 wrapper /usr/local/majordomo/wrapper To verify that all the permissions and etc are correct, run the command cd /usr/local/majordomo; ./wrapper config-test ===> Generating temporary packing list Post-Install Notes for Majordomo ================================ ...(여러분은 이 메시지를 반드시 읽어보아야 한다)... ===> Compressing manual pages for majordomo-1.94.4 ===> Registering installation for majordomo-1.94.4 ===> Cleaning for majordomo-1.94.4 이제 설치가 끝났다. majordomo는 설치하기 위해 사용자와 그룹 ID를 필요로 하는데, 최근의 FreeBSD시스템에서는 /etc/passwd안에 uid/gid 54로 설정이 되어 있다(없다면 하나 만들기 바란다).
majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent 8.3 설치후 주의사항majordomo 파일은 /usr/local/majordomo에 설치되는 것을 주의하기 바란다. 모든 설정 파일과 문서 파일은 그 안에 들어간다. 9. 리스트 추가하기9.1 어떤 리스트를 만들 것인가?어떤 리스트를 만들 것인가에 대해 고민해 본 적이 있는가? 우선 리스트의 이름은 반드시 "[a-z0-9_-]+" 형태를 따라야 한다. 즉 영문자(대문자 포함, 그러나 여러가지 이유로 소문자로 만드는 것을 권장한다) 및 숫자, 언더바(_), 빼기가 된다는 것이다.(빼기를 대쉬라 하기도 하더군요... ^^) 구형시스템과의 호환을 생각하여 길이가 8자 이내의 리스트를 만드는 것은 꽤나 괜찮은 생각이다. 본 예제에서는 bbs이라는 리스트를 추가 하겠다. 9.2 리스트 파일의 작성우리가 설정한 $listdir로 가서 다음과 같은 파일들을 만든다. '.*'이 붙지 않는 화일이 우리가 만들 리스트 화일이다. 참고로 리스트 디렉토리에는 각 메일링 리스트의 관리에 필요한 '.config', 정보를 담고 있는 '.info', 메일링 리스트의 쓰기 권한을 가진 '.allow'등의 여러 화일이 있다. '.config'파일은 저절로 생기니 특별히 만들어 줄 필요는 없다.
[kulslist@kuls majordomo]$ cd /usr/lib/majordomo/lists/ [kulslist@kuls lists]$ touch bbs [kulslist@kuls lists]$ touch bbs.info [kulslist@kuls lists]$ touch bbs.intro 나의 경우는 알짜 레드햇 5.2를 사용하는데 touch로 작성하면 644 모드로 생긴다. 그렇지 않다면 다음과 같이 모드를 바꿔준다.
[kulslist@kuls lists]$ chmod 644 bbs [kulslist@kuls lists]$ chmod 644 bbs.info [kulslist@kuls lists]$ chmod 644 bbs.intro 9.3 majordomo.aliases의 설정 - 시작 수준프로그램 작성자의 메뉴얼에 보면 세가지로 구분을 해 놓았다. 첫째는 그냥 동작만 하게 하는 방법, 두번째는 메이저도모의 중계기능을 이용하는 방법, 세번째로는 메이저도모의 보관 기능을 이용하는 방법으로 나눠놓았다. 우선은 첫번째 방법을 보도록 하자. 위에 만든 list를 사용하기 위해서 majordomo.aliases 파일에 다음과 같은
라인을 추가한다. 이제 위에 만들었던 test 화일과 test 섹션을 지우도록
하자. 반드시 지우도록 하자. 나중에라도 제게 멜 보내서 함께 고민을
나누신 분들은 제가 꼭 test가 있는지 확인해 보도록 하겠습니다.
# 쿨스게시판 메일링 리스트 - bbs bbs: :include:/usr/lib/majordomo/lists/bbs owner-bbs: kulslist bbs-request: "|/usr/lib/majordomo/wrapper request-answer bbs" bbs-approval: kulslist 위의 각 항목 - 엘리어스 이름 - 은 다음과 같다. 우선은 bbs, 이것은 리스트 이름이고, owner-bbs은 잘못된 일이 생길 때 bbs에 대한 에러를 보내줄 소유자이다. bbs-request는 메일링 리스트에 가입한 가입자가 보내는 여러 명령 메세지(subscribe, unsubscribe등)을 처리해 달라고 보내는 메일 엘리어스가 쓰는 명령행이다. bbs-approval은 가입/탈퇴등 메이저도모가 자동으로 한 일에대한 결과 메세지를 보내는 엘리어스이다. 이 내용이 이해가 되든 안 되든 간에 위의 설정한 aliases를 쓰기 위해서는 반드시 newaliases명령으로 갱신 시켜주어야 하는 것을 잊지말자. 지금까지의 모든 과정이 올바르게 되었다면 다음과 같은 상황에서 올바른
결과를 낼 것이다.
artsilly@kuls.korea.ac.kr neokim@kuls.korea.ac.kr 이제 다음과 같은 상황에서 어떤 결과가 일어날지에 대해 알아보고 그것을 통해 메이저 도모의 운영방식을 이해하도록 하자.
간단한 결과를 예측해 보자. 우선 메일링 리스트로 메일을 보낼 때는 그 리스트 이름으로 보내야 한다. 우리가 쓰는 메일링 리스트는 bbs 이므로 bbs로 보내는 메일은 전체 메일링 리스트 가입자에게 보내질 것이다. 그리고 majordomo는 메일링 리스트의 가입 및 탈퇴 및 여러 가입자의 요청(가입자 확인, 도움말)의 요청을 받는 아이디이다. 메일링 리스트를 운영할 때 많은 가입자들이 이 점을 모르고 탈퇴를 하고 싶었을 때 메일링 리스트로 메일을 보내기 때문에 수 많은 메일링 리스트 가입자들은 쓰레기 같은 탈퇴 메세지를 받게 되고 탈퇴가 되지 않는 일이 많이 벌어지고 있다.
위와 같이 올바르게 동작하지 않을 경우에는 대부분 kulslist(관리자,
-owner)에게로 에러 메세지가 담긴 메일이 갈 것이다. 설치의 마지막
부분까지 이 문서에 설명한대로 되었다면 에러가 발생할 확률이 적겠지만,
만일 에러 메세지를 받게 된다면 꼼꼼히 읽어보고 대처하기 바란다. 위
예제의 올바로 작동하지 않을 때
bbs... aliased to :include:/usr/lib/majordomo/lists/bbs :include:/usr/lib/majordomo/lists/bbs... including file /usr/lib/majordomo/lists/bbs :include:/usr/lib/majordomo/lists/bbs... Cannot open /usr/lib/majordomo/lists/bbs: Group writable directory bbs... aliasing/forwarding loop broken /usr/lib/majordomo/dead.letter... Saved message in /usr/lib/majordomo/dead.letter 우선 리스트 파일 안에 가입자가 한명도 없다면 위와 같은 메세지가 나올
수 있다는 점을 언급하고 넘어가자. 그러나 지금처럼 가입자가 있을
경우에도 위와 같은 메세지가 나온다면 lists 디렉토리의 모드를
751로 바꾸고(자동으로 생성된 default는 770) 다시 한번 1번과 같이
메일을 보내보자. 아마 잘 될 것이다. 이것에 대한 문제는 sendmail의
버전과 관계 있는 것 같다.(이 의문점에 대해서는 여전히 궁금증으로
남는다. 즉 자동으로 생성하는 코드에서 751로 만들어야 하는데 770으로
잘못 만드는 즉 majordomo의 버그인지 혹은 sendmail에서 읽는 형식이
버전에 따라 좀 달라져서 동작을 안하는지는 모르겠다. 내가 쓰는
sendmail은 8.9.1a인데 혹 다른 버전에서 lists의 모드를 770으로 놓고
성공한 사례가 있다면 꼭 알려주기 바란다. 혹, 자동으로 생성될 때 모드가
다른 것으로 나오는 지에 대해서도 알려주기 바란다.) 모드(퍼미션)을
바꾸는 것은 지금 우선은 메일링 리스트가 된다는 것에 감동하는 사람이 있을 지도 모르겠다. 혹은 이게 뭐야? 라며 불만을 토로하는 사람도 있을 것이다. 사실 첫번째 방법은 많은 문제점을 가지고 있다. 우선은 스팸 메일에 무방비로 노출되어 있다는 점이다. 또한 전반적으로 메일링 리스트를 관리하도록 구성이 되어있지 않다. 실제로 위와 같은 설정만으로 사용하는 것은 권장하지 않는다. 보통은 두번, 세번째 방법을 사용한다. 9.4 majordomo.aliases의 설정 - 중급수준중급 정도의 수준에서는 메이저도모의 중계기능을 쓰는 것이다. 이 방법을 이용하면 메이저도모의 여러 메일링 리스트 매니저로서의 기능 - 헤더 조작, 스팸 걸러내기, 머릿말 꼬릿말 추가등을 할 수 있다. 실제로 위의 방법은 메이저도모를 쓴다기 보다는 단지 센드메일의 엘리어스를 적절히 이용했다는 표현이 맞을 것이다. 이제부터 실제 메이저도모의 기능을 쓰는 것이라 보아도 무방하다. 우선 위에서 majordomo.aliases에 추가한 bbs의 엘리어스를 '#'을 이용해 주석처리 하든지 삭제 함으로 지금부터 설정할 내용을 사용할 준비를 한다.(둘다 써 놓고 이상하게 동작하거나 메일이 2개씩 온다고 질문 하면 안됩니다.TT;;) 추가할 내용은 다음과 같다.
bbs: "|/usr/lib/majordomo/wrapper resend -l bbs bbs-list" bbs-list: :include:/usr/lib/majordomo/lists/bbs owner-bbs: kulslist bbs-owner: kulslist bbs-request: "|/usr/lib/majordomo/wrapper majordomo -l bbs" bbs-approval: kulslist 위와 같이 동작하는 것은 마찬가지이다. 그러나 한번 메일을 보내보도록 하자. 계속 작업은 메일링 리스트 관리자로 하는 것으로 한다.
[kulslist@kuls majordomo]$ echo 'Bbs open!!' | /usr/lib/sendmail -v bbs 다음과 비슷한 메시지가 출력될 것이다.
bbs... aliased to "|/usr/lib/majordomo/wrapper resend -l bbs bbs-list" "|/usr/lib/majordomo/wrapper resend -l bbs bbs-list"... Connecting to prog... "|/usr/lib/majordomo/wrapper resend -l bbs bbs-list"... Sent 위와 같은 메시지가 아닌 에러가 난다면, 역시 같은 list디렉토리 퍼미션에 대한 문제일 지도 모른다. lists 디렉토리의 모드가 770일 때 메일 보낸 사람이 아래와 같은 메일을 받게 되고 메일이 올바로 전달되지 않을 지도 모른다. 이 경우 부담없이 751로 lists 디렉토리의 퍼미션을 바꿔주기 바란다. 아마 올바로 동작할 것이다. 첫번째 방법을 테스트해 보고 따라온 독자의 경우 아무런 문제가 없을 것이다. 아래는 에러 메일의 예이다.
----- The following addresses had permanent fatal errors ----- bbs-list :include:/usr/lib/majordomo/lists/bbs (expanded from: bbs-list) ----- Transcript of session follows ----- 550 :include:/usr/lib/majordomo/lists/bbs... Cannot open /usr/lib/majordomo/lists/bbs: Group writable directory 554 bbs-list... aliasing/forwarding loop broken 올바르게 된다면 artsilly와 neokim이 kulslist로부터 메일을 받게 된다. 또한 kulslist는 자기자신이 보낸 메일을 되돌려 받게 된다. 그렇다면 첫번째 것과 달라진 것이 특별히 무엇인가? 거의 아무것도 변화없지 않은가? 그렇지 않다. lists 디렉토리로 가보기 바란다. 올바로 메일이 보내진다면(혹은 보내지지 않더라도) bbs.config 파일이 생길 것이다. 이것이 바라던(?) 메일링 리스트 설정 파일이다. 앞으로 이것을 통해서 좀 더 세밀한 설정을 할 수 있을 것이다. 9.5 majordomo.aliases의 설정 - 고급수준이런 식으로 단계를 나눈 것(제가 나눈 것입니다^^;)은 사실 우습기도 하다. 프로그램 제작자의 말로는 이 마지막 방법의 aliases를 이용함으로 보관 기능과 헤더 조작 기능을 추가할 수 있다고 한다. 보관은 아카이브(archive)라 불리우는 기능이며 헤더 조작 기능은 다이제스트(digest)라 한다. 아카이브는 일정기간(1달)동안 메일링 리스트를 통해 나누어진 모든 메일을 mbox 형식의 하나의 파일로 만든다. 이 파일은 가입자가 메일을 통하거나 ftp, 웹등을 통해 쉽게 가져갈 수 있으며 일반적인 메일러(pine등)를 통해 개개의 메일처럼 조회할 수 있다. 다이제스트는 용량이 작은 여러 메일이 자주 메일링 리스트를 통해 전달되는 것을 보완한 기능으로 일반적으로 리스트이름-digest라는 새로운 메일링 리스트를 만들게 된다. 다이제스트를 이용하면 우선 메일에서 헤더를 선별하여 제거하고, 메일 본문만으로 정리한 후 이렇게 모인 메일이 특정 용량 이상되면 하나의 메일로 한번에 보내게 된다. cron과 연동하여 너무 가끔 메일이 전달되는 것을 막기위해 용량에 다 차지 않더라도 일정 기간안에 메일을 보내도록 할 수 있다. 이 기능은 비록 메일을 바로 바로 받아볼 수는 없지만 그렇게 급하지 않은 메일링 리스트를 운영하며 메일의 내용이 짧고, 하루에 오가는 메일이 많다면 다이제스트 기능을 운영하여 가입자로 하여금 메일링 리스트에 가입한 메일의 폭주를 막을 수 있을 것이다. 물론 이런 기능은 리스트이름-digest에 가입한 사람에 한해 사용가능하다. 즉 다이제스트 기능을 하는 메일링 리스트를 하나 더 추가하는 것이다. 9.6 주의사항리스트를 추가하고는 다음과 같은 사항을 꼭 지켜서 올바르게 사용할 수 있도록 한다.
10. 고급수준의 설정 I - 아카이브의 설정여기에서는 아카이브의 설정 및 아카이브에 저장된 파일을 어떻게 가져갈 것인가에 대해 이야기 하도록 하겠다. 10.1 아카이브를 위한 majordomo.aliases 설정하기아래는 아카이브를 위한 majordomo.aliases 파일의 예이다. 설명의 편의를 위해 #으로 막아놓은 주석문으로 설명하였다.
bbs: "|/usr/lib/majordomo/wrapper resend -l bbs bbs-outgoing" # 위에서 bbs-list이던 엘리어스가 bbs-outgoing으로 바뀌었다. bbs-outgoing: :include:/usr/lib/majordomo/lists/bbs, "|/usr/lib/majordomo/wrapper archive2.pl -a -m -f /usr/lib/majordomo/archive/bbs/bbs.archive" # 일반적인 리스트 파일 인클루드 외에 , 로 구분된 아카이브 프로그램과 # 연결되었다. 아카이브 프로그램의 옵션을 보면 '-a'는 mbox 형식으로 # 아카이브를 만든다는 옵션이고 -m 은 매월 단위로 아카이브 파일을 # 만든다는 옵션이다. -f로는 아카이브 파일 이름을 적는다. owner-bbs-outgoing:owner-bbs owner-bbs: kulslist bbs-request: "|/usr/lib/majordomo/wrapper majordomo -l bbs" bbs-approval: kulslist # bbs-outgoing의 owner- 엘리어스가 생긴 것 외에 다른 것은 없다. 위 설정에 대해 알아보기 전에 세번째 방법을 사용하려는 서버는 반드시 다음 사항을 주지하기 바란다! 일반적으로 -outgoing 엘리어스를 통해 직접 메일을 보냄으로 외부인이 서버에 스패밍 공격을 할 수 있다. 특별히 심각한 보안문제는 아니지만 서버의 하드디스크 공간을 차지하게 만들거나 가입자에게 올바로된 아카이브를 제공할 수 없다. 일반적으로 서버의 하드 공간이 모자라게 되면 몇몇 프로그램을 올바로 수행시킬 수 없다. 따라서 이 방법을 시험해 보고자 하는 사람은 -outgoing이라 되어있는 엘리어스를 자신만이 알 수 있는 다른, 특히 -outgoing 이라 짐작도 할 수 없는 엘리어스를 만들기 바란다. 필자는 보통 만든날의 날짜나 그냥 주섬주섬 생각나는 것으로 만든다. 아카이브는 archive2.pl 파일에 의해 생성된다. archive2.pl 역시 펄스크립트 이고 주석으로 옵션들에 대한 설명이 주어진다. 좀 더 자세히 알고 싶은 사람은 자신에게 익숙한 에디터를 사용하여 확인해 보기 바란다. 다음은 일반적인 옵션이다.
archive2.pl -f archive {-u|-a} [-d|-m|-y] -f archive 아카이브 파일 이름은 이 옵션 다음에 절대경로나 상대경로로 표시되며 우리가 주어준 파일 이름 뒤에는 날짜 구분용 확장자가 붙게된다. {-u|-a} 아카이브 파일 형식이다. 일반적으로 -a를 쓰면 될 것이다. -m 옵션 몇일 단위로 아카이브를 만들 것인가와 아카이브 파일 확장자의 형식을 정해준다. 단위는 하루(d), 한달(m), 일년(y)이며 만일 대문자를 이용한다면 년도를 4자리로 표시한다. 일반적인 소문자일때는 년도는 2자리로 표현된다. 위의 예제와 같은 설정을 통해 메일링 리스트를 운영하면 위의 디렉토리에 다음과 같은 파일이 생성되게 된다.
[kulslist@kuls bbs]$ pwd /usr/lib/majordomo/archive/bbs [kulslist@kuls bbs]$ ls total 24 20 bbs.archive.9901 4 bbs.archive.9902 [kulslist@kuls bbs]$ 일반적인 메일링 리스트라면 한달단위로 저장하는 것으로도 충분할 것이다. 10.2 아카이브를 제공하기 위한 설정사항들지금까지 설정한 것을 통해 아카이브 파일이 만들어졌다. 사실 아카이브 파일의 목적은 가입자로 하여금 가입 이전 메일의 내용을 얻을 수 있도록 해 주거나, 실수로 지워버린 메일을 다시 가져갈 수 있게 해 주는데 있다. 따라서 이 절에서는 가입자를 위한 설정을 하도록 하겠다. majordomo.cf 에서 다음 설정사항을 찾아보자.
#-------------------------------------------------------------------- # Stuff below here isn't commonly changed.... #-------------------------------------------------------------------- # # Majordomo will look for "get" and "index" files related to $list in # directory "$filedir/$list$filedir_suffix", so set $filedir and # $filedir_suffix appropriately. For instance, to look in # /usr/local/mail/files/$list, use: # $filedir = "/usr/local/mail/files"; # $filedir_suffix = ""; # empty string # or to look in $listdir/$list.archive, use: # $filedir = "$listdir"; # $filedir_suffix = ".archive"; $filedir = "/usr/lib/majordomo/archive/$list"; $filedir_suffix = ""; # What command should I use to process an "index" request? # $index_command = "/bin/ls -lRL"; 가입자는 index 명령을 통해 사용가능한 파일을 알아볼 수 있다. 위의
설정에서는 절대경로나 상대경로, 또한 $로 시작하는 변수들을 이용하여
설정가능하다. 하나의 메일링 리스트를 운영한다면 단지 디렉토리만을
써주면 되겠지만, 여러개의 메일링 리스트라면 적절히 변수를 이용해 모든
메일링 리스트가 공통된 형식을 유지할 수 있도록 하는 것이 좋을
것이다. index명령은 내부적으로 'ls -lRL'로 사용되게 된다. 가입자가
참고로 $filedir = "/usr/lib/majordomo/archive/$list" 에 설정된 디렉토리는 만들어 주어야 한다.
Date: Wed, 3 Feb 1999 23:16:48 +0900 From: majordomo@kuls.korea.ac.kr To: artsilly@kuls.korea.ac.kr Subject: Majordomo results -- >>>> index bbs total 24 -rw-rw---- 1 kulslist daemon 18480 Feb 3 21:19 bbs.archive.9901 -rw-rw---- 1 kulslist daemon 3282 Feb 3 21:19 bbs.archive.9902 가입자는 목록을 살펴보고 원하는 파일이 있다면 서비스 제공자는 아카이브 디렉토리에 아카이브 파일 외에 가입자에게 제공하려는 파일을 만들어 놓음으로 가입자를 위한 서비스를 개선할 수 있다. 만일 아카이브 파일을 index, get등 명령으로 전송해 주는 것 외에 웹이나 ftp등의 파일전송 프로토콜을 이용하려 한다면 아카이브 저장 디렉토리를 좀 더 평범한(COMMON) 곳에 위치시키는 것은 좋은 생각일 것이다. /var/mail/archive나 /var/majordomo/archive 등을 생각해 볼 수 있다. 웹과 FTP등과의 연동에 대해서는 추후 논의하도록 한다. 11. 고급수준의 설정 II - 다이제스트의 설정다이제스트는 필요로 하는 사람이 적고 해서 여기서는 특별히 다루지 않도록 하겠다. 방학중 갱신된 문서를 참고하기 바란다. 12. 메일링 리스트의 설정위의 약간은 복잡하고, 약간은 헛갈리는 작업을 통해서 메이저도모를 인스톨할 수 있었을 것이다. 이제는 서비스 하고자하는 리스트를 각 서비스의 특성에 맞추어 설정해 주는 과정이 필요하다. 각 설정에 대한 설명 보다는 예제 중심으로 하나씩 설명하는 방식으로 정리해 보도록 하겠다. 여기에 나온 설정을 위해서는 majordomo.aliases를 최소한 두번째 방법으로 사용해야 한다. 메일링 리스트를 설정하기위해 .config, .allow, .info, .intro등 수정해야 한다. 설정을 모두 마치고 나서 메일링 리스트를 운영하자면 가입자도 메이저도모 메일링 리스트 사용법을 어느정도는 알아야겠지만 특히나 운영자는 메이저도모 사용법에 대해 꽤 많은 정도 알고 있어야 하겠다. 두번째 문서에서는 메이저도모 사용법에 대해 다루도록 하겠다. 12.1 안내 파일의 작성안내 파일로는 .info, .intro 파일등을 들 수있다. 우선 .intro 파일은 가입자가 각 리스트에 가입했을 때 가입 환영 메세지와 함께 전달된다. 손에 익숙한 에디터를 이용하여 이 파일을 편집한다.(* 계속 해서 나오는 .info, .intro등은 특정 리스트와 결합된 파일 형식이다. 즉 bbs 리스트의 정보 파일은 bbs.info 라는 의미이다. ".info" 라는 파일이 아님을 기억하기 바란다.) 그렇다면 .intro 파일에는 어떤 내용을 담을 것인가? 메일링 리스트 운영자라고 가입한번 해보지 않고, 운영하는 사람은 이번기회에 자신이 운영하는 메일링 리스트에 한번 가입해보고 어떤 식으로 운영되는지 확인해 보기 바란다. 일반적인 형식은 다음과 같다. 각기 내용은 보내는 메일의 내용이다.
가입자 : 가입 - ( - 인증답장 - ) 운영자 : 가입답장 + (인증요청 인증확인) + 환영메일 물론 운영자 측에서 해주는 일은 메이저도모가 자동으로 해주는 것이기 때문에 그리 걱정하지 않아도 된다. 인증하게 끔 설정이 되어있지 않을 경우 ()의 과정이 생략된다. 인증 설정에 대한 것은 아래에 설명하도록 하겠다. .intro 파일은 위에 과정 중 제일 마지막 과정인 환영 메일에 포함되어 전달된다. 환영 메일에는 메이저도모에서 제공하는 일반적인 환영메세지와 .intro 파일의 내용이 들어가게 된다. 따라서 .intro 에는 가입자를 위한 인사말과 주의사항, 메일링 리스트 운영 방향등에 대한 내용 및 문제가 있을 경우, 사람이 받을 수 있는 E메일 주소등을 담으면 된다. 마지막으로 이 파일은 사용자가 intro 명령을 이용해서도 전달된다. .intro 파일과 .info 파일에는 몇몇 차이점이 있다. 쉽게 이야기 하자면 .intro 파일은 가입자에게 주어지는 안내이고 .info 파일은 누구에게나 열려있는 정보이다. 메일링 리스트 설정에 따라 다르겠지만 아래 설명할 닫힌 메일링 리스트일 경우 가입자는 .info 파일과 .intro 파일 모두를 각각 info 명령과 intro 명령을 통해 얻을 수 있으나, 비 가입자는 info 명령만을 이용할 수 있다. 위의 내용을 인식하고 .info 파일을 작성하면 될 것이다. 귀찮은 경우에는 .intro 파일과 같은 내용으로 해도 된다. 메일링 리스트 운영중에 관리자가 직접 받게되는 많은 요청이나, 질문, 또한 사용법을 잘 몰라서 생기는 바운스 메일들을 원하지 않는다면 .info 파일과 .intro 파일을 구체적으로 작성해서 가입자가 쉽게 정보를 얻게 하는 것이 좋을 것이다. 본인의 경우 보통 메이저도모 가입자 하우투 문서를 .intro 파일로 링크시켜 놓는다. 12.2 닫힌 메일링 리스트의 구현여기에 설명할 내용은 위에 언급한 동아리에서 쓰던 설정의 일부이다. 우선 이 리스트는
과 같은 성격을 지녔다. 위와 같은 설정을 위해 bbs.config 파일을 적절히 바꾸어 주어야 한다. 이 파일에 대해서는 특별히 문서나, 매뉴얼이 제공되지 않고 파일안의 주석에 충분한 설명이 주어진다 - 물론 영어다. 만일 쓰고 있는 메이저도모가 구버전이라면 .config 파일 형식이 조금은 다를 것이다. 각 항목은 아래와 같은 형식을 가지고 있다. # admin_passwd [word] (bbs.admin) <majordomo> / / ==> ~~~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~ 항목 데이터 형식 디폴트 값 사용프로그램 가능한 값 # The password for handling administrative tasks on the list. admin_passwd = bbs.admin 주석문 첫줄에는 항목, 데이터 형식, 디폴트 값, 항목을 사용하는 프로그램, 그리고 [enum]형식에만 쓰이는 사용 가능한 값들이 나열된 부분이 있다. 아랫 줄에는 항목에 대한 간단한 설명이 나와있고, 마지막으로는 주석이 아닌, 실제 적용되는 라인이 있다. 여기에서는 데이터 형식 을 주의해서 사용해야 한다. 데이터 형식은 .config 파일 윗쪽에 나와있다. 특히 다음 형식은 주의해서 사용해야 한다. absolute_* 이 형식으로는 absolute_dir, absolute_file 등이 있다. / 부터 시작하는 경로를 모두 써주어야 한다. enum 위에 간단히 설명한대로 이 형식에는 가능한 값이 항목 설명부분에 나열된다. 가능한 값 중 하나를 써 주어야 한다. word 공백 없는 문자 string 문자열 string-array 뒤에 나오는 예를 보도록 한다. regexp '/'로 시작하거나 끝나는 펄 스타일의 레귤러 익스프레션 regexp의 형식이 쓰이는 곳을 살펴보면, taboo_body나 taboo_header등으로 메일링 리스트를 어지럽히는 몰지각한 사람의 무분별한 메일링이나, 상업 광고등을 적절히 추출해내는 부분쪽에 쓰인다. 생각에 따라서는 그리 필요치 않을 지도 모르지만 때로는 무척 유용할 것이다. 자 이제는 우리의 설정에 맞추어 bbs.config 파일을 바꾸어 보도록 하자. 우선 이 메일링 리스트는 가입자의 가입(subscribe)과 탈퇴(unsubscribe)을 모두 받아들이지 않는다. 다음처럼 해 줘야 한다. 물론 이렇게 해 놓으면 메일링 리스트 관리자가 일일이 수동으로 파일을 편집해야 한다. 귀찮지만 몇몇 되지 않기 때문에 그냥 닫아버리자.
subscribe_policy = close 이 항목의 가능한 값으로는 open, auto, close 가 있다. auto로 했을때는
Someone (possibly you) has requested that your email address be added to or deleted from the mailing list "bbs@kuls.korea.ac.kr". If you really want this action to be taken, please send the following commands (exactly as shown) back to "majordomo@kuls.korea.ac.kr": auth f7972eb6 subscribe bbs shadow@linux.korea.ac.kr : : 번역하자면 다음과 같이 시작된다. 당신의 email 주소가 "bbs@kuls.korea.ac.kr" 메일링 리스트에 가입이나 탈퇴를 요청하였습니다. 만일 정말로 위의 요청을 수행하고 싶다면 다음의 내용을 가진 메일을 "majordomo@kuls.korea.ac.kr" 에게로 보내주시기 바랍니다. auth f7972eb6 subscribe bbs shadow@linux.korea.ac.kr 아직은 영문 메세지이지만 곧 한글화 작업에 착수할 것이다. 하여간 이것으로 우리는 아무도 마음대로 가입을 못하게 하였다. 비슷하게 unsubscribe_policy 가 있다. 이 역시 close로 해 준다. 메이저도모에서는 탈퇴시에는 확인을 하지 않는다. 메이저도모 2에서는 이 기능이 추가되길 바란다. 두번째 요구사항은 가장 중요한 내용으로 생각된다. 즉 비 가입자의 메일링 리스트에 포스팅을 막는 것이다. 이것은 일반적인 리스트에도 유용하다. 가입자만 메일을 보낼 수 있도록 하고, 가입자중 악의를 가지고 스패밍을 하거나 메일링 리스트의 주제에 맞지 않는 메일을 계속해서 포스팅할 경우 단지 좇아내기만 하면 된다. 이렇게 함으로 악성 스팸 메일로부터 리스트를 보호할 수 있다. 메이저도모의 보안문제에 대해서는 다음 버전에 추가할 것이다.
restrict_post = bbs bbs.allow 이 항목에는 특정한 형식이 사용된다. 여러개의 파일 이름이 공백이나 : 을 통해 사용된다. 또한 파일 이름은 절대 경로가 사용되지 않고 $listdir을 기준으로한 상대경로가 사용된다. 우리의 메일링 리스트에는 가입자만 포스팅이 가능하게 해 주어야 한다. 따라서 메일링 리스트 파일인 bbs에 있는 사람이 포트팅 가능하며 bbs.allow라는 특정 파일에 있는 사용자만 추가로 포스팅 가능하게 하였다. 위와 같은 형식은 소수의 안정적인 폐쇄 그룹에 맞을 듯 싶다. 수가 많지 않고, 변동 없는 사람들을 관리자가 직접 가입시키고, 관리자를 통해 탈퇴를 하는 형식이다. 사람이 많아지면 이런 방식은 조금 운영하기에 벅차다. 위 리스트에는 학부생 20여명 정도였고 신입생이 들어 오거나 할 때 정도만 URL을 바꿔주면 되기 때문에 그리 부담없는 수준이었다. 메일의 길이는 다음과 같이 설정해 줄 수 있다. maxlength = 40000 이 값은 캐릭터 갯수를 나타내므로 대충 byte로 계산해도 될 것이다. 바이너리 데이터를 많이 보내며 쓰는 메일링 리스트의 경우 이 값을 늘려주어야 할 것이다. 마지막으로 메일의 머리말이나 꼬리말을 장식해 보도록 하자.
message_footer << END ------------------------------------------ $LIST!! 쿨스게시판 메일링 리스트 입니다. ------------------------------------------ END 이런 식으로 설정해 주면 이 메일링 리스트를 통과하는 메일의 맨 마지막 중간 쯤에 위와 같은 글이 붙게 된다. 그러나 메일을 실제로 받아보면 꼬리가 붙지 않는다. 이 항목의 형식은 string-array인데 여기서는 '빈 공백들 + 개행문자'나 'END'를 끝으로 알아듣는다. 한줄 띄기 위해서 비워놓은 줄을 끝으로 알고 끝나게 되는 것이다. 또한 그 문제를 단순히 없에기 위해 한 줄 띄어놓은 줄을 삭제하고 바로 글자가 나오게 했을 때 즉
message_footer << END ------------------------------------------ $LIST!! 쿨스게시판 메일링 리스트 입니다. ------------------------------------------ END 이런 식으로 만들었을 때 받은 메일은 꼬리말이 나오긴 하지만 좀 이상하다.
Date: Tue, 12 Jan 1999 04:21:01 +0900 From: neokim <neokim@kuls.korea.ac.kr> 테스트 메일입니다. ------------------------------------------ bbs!! 쿨스게시판 메일링 리스트 입니다. ------------------------------------------ 그리 원하지 않은 결과를 낳게 된다. 이 역시 '개행문자 + 빈 공백들' = 없다 로 알아듣기 때문이다 이를 위해 메이저도모 제작자는 '-'표시를 사용함으로 이 문제에 대한 문법을 설정해 주고 있다. 위의 예제에서 예리한 사람은 알아채렸을 지도 모르지만 '-'를 연결한 줄이 설정한 것보다 하나 줄었다는 것을 알 수 있다.(사실 아무도 못 알아 차릴 것 같다. --;) 이는 문법에 의해 맨 처음의 '-'가 control 문자로 쓰였기 때문이다. 따라서 다음과 같이 설정해 줘야 한다.
message_footer << END - - ------------------------------------------ - $LIST!! 쿨스게시판 메일링 리스트 입니다. - ------------------------------------------ END 빈 줄은 '-' 하나를 쓰고, '-'로 시작하는 줄은 하나 더 써주고, 빈칸으로 시작하는 줄은 '-'로 시작해야 한다. 이런 식으로 설정해 주면 우리가 원하는 결과 - 가운데 정렬한 꼬리말- 가 나오게 될 것이다. 12.3 뉴스 메일링 리스트 만들기본인의 E메일 주소로도 IBM으로부터 메일이 온다. 이 메일은 약 2주에 한번씩 IBM의 새소식을 알려준다. 물론 이 메일링 리스트로 가입자가 메일을 쓰는 것은 금지되어있다. 오직 사업체에서 허용된 사람(홍보부등)만이 쓸 수 있다. 이 방식은 위에 언급한대로 꼭 사업체가 아니더래도, 정보를 원하는 사람에게 일방적인 정보를 줄 수 있는 기능을 제공해준다. 예를 들어 학부 사무실에서 제공하는 메세지나, 프로그램 제작자가 배포처에 제공하는 메세지등 여러가지 목적으로 쓸 수 있다. 위와 같은 스타일의 메일링 리스트를 만드는 것은 무척 쉽다. 우선은 가입과 탈퇴는 자유로워야 한다. 기본 설정값으로 놓아두면 된다. 그리고 허용된 사람에게만 쓰기를 허용함으로 bbs.allow 파일만 restrict_post에 설정해 주고 쓰기 가능한 사람만을 담은 파일로 생성해 주면 된다. 물론 뉴스의 목적에 맞게 머리말 꼬리말을 이용하여 적절한 장식을 해 줄 수 있을 것이다. 12.4 제한 사항 설정보안 문제라든지 정보유출 그 밖의 여러 문제로 인해 가입자가 사용할 수 있는 여러 명령들을 사용하지 못하게 막을 수 있다. *_access 등의 항목이 그것이다. open의 경우 모든 사람이 사용 가능하고, close의 경우는 모든 사람이 사용할 수 없다. lists로 되어있는 경우 restrict_post에 설정된, 즉 메일링 리스트에 쓰기 가능한 가입자만이 사용가능하다. 각각의 경우를 읽어보고 적절히 사용하면 유용할 것이다. 일례로
info_access = open info 명령은 리스트이름.info 파일, 위의 예에서 bbs.info 파일을 메일로 보내주는 역할을 한다. 일반적으로 위 파일은 그 메일링 리스트에 대한 정보를 담고 있다. 가입자및 미래의 가입자를 위해서 info_access 를 open으로 해놓는 것은 좋을 것이다. 그러나 특정리스트의 가입자의 주소를 알려주는 who 명령이나 메일링 리스트의 문자열 검색을 해주는 which 명령은 보안 관계로 사용하지 못하게 하는 것도 좋을 것이다.(실제로 많은 리스트들이 이 명령을 사용하지 못하게 하고 있다.) 12.5 (펄형식)레귤러 익스프레션을 이용한 메일의 필터링위에 언급한 것처럼 레귤러 익스프레션을 이용하여 올바르지 못한 메일을 필터링 할 수 있다. 레귤러 익스프레션에는 다음과 같은 형식문자가 쓰이며 반드시 '/' 사이에 둘러쌓여야 한다. \@ @ 문자 자체 . 한글자의 문자, 쉘에서 와일드카드 문자 ? 와 같음 .* 여러글자, 쉘에서 와일드카드 문자 * 와 같음 a* a나 aa, aaa등 여러개의 그 문자, 아무 것도 없어도 된다. a+ a나 aa, aaa등 여러개의 그 문자, 하나이상 있어야 한다. \ 여러 특수 형식문자 자체를 표시하고 싶을 때(. 이나 * 등을
직접 표현하고 싶을 때 \ 뒤에 쓴다. ; ^ 문자열의 시작 ; $ 문자열의 종료 ; 부족한 설명만으로 이해가 안갈지도 모르겠다. 몇몇 예제를 통해 알아보도록 하자. 이 내용은 문서와 함께 제공되는 list-owner-info를 통해 원문으로 알아볼 수 있다.
/.*\@.*korea\.ac\.kr/ 위 구문은 다음과 같은 문자열을 의미한다.
artsilly@kuls.korea.ac.kr artsilly@kuls.korea.ac.kr neokim@brain.korea.ac.kr 만일 아래와 같이 바뀐다면
/^a.*\@.*korea\.ac\.kr/ 다음과 같이 a로 시작하는 문자열만을 올바른 구문으로 인정할 것이다.
artsilly@kuls.korea.ac.kr acim@rio.korea.ac.kr Andongkim@case.korea.ac.kr일반적으로 위 구문은 대소문자를 구분하지 않는다. 이경우 대소문자를 구분하고 싶다면 구문 뒤에 i를 붙여준다. 즉 /^a.*\@.*korea\.ac\.kr/i 처럼 해준다. 그렇다면 소문자로
시작하는 것만이 선택된다.
구문에 사용하는 형식문자를 직접표시하고 싶다면 '\'를 쓴다.
/\*\..*/ 이 구문은
*.this *.kamnth 등 직접 * 와 . 이 들어있는 문자가 된다. 마지막의 .* 는 '어떤 문자들' 이라는 의미로 쓰였다. 자 이제는 이 레귤러 익스프레션을 이용하여 taboo_body를 작성해보자. 아직도 우리나라에는 비비에스나 유즈넷, 메일링 리스트에 욕설을 담거나 주제에 맞지 않는 글을 올리는 사람이 많다. 이런 것을 방지하기 위해 필터링을 해준다면 메일링 리스트를 운영하는데 많은 도움이 될 것이다.
taboo_body << END /씨팔//좆.*//개새.*//병신//지랄/ /.*팝니다//.*팔아요//.*파라요//싸게//.*판매.*/ /야.*씨디//게.*씨디//VCD/ /사오정/ END 위와 같은 필터링을 통해 욕설이나, 판매광고, 그리고 이제는 더이상 재미없는 사오정 시리즈를 필터링 할 수 있다. 필터링 된 메일은 가입자들에게 전달되지 않고 '리스트이름-owner'에게로 바운스 메일이라는 제목으로 날아가게 된다. 관리자는 금지해 놓은 말을 사용하는 불량 가입자를 바운스 메일을 통해 확인해 볼 수 있고 계속될 경우 탈퇴 시킬 수 있다. 제목을 통해 나쁜 말이 날아오는 것은 taboo_header를 통해 막을 수 있다. 물론 적절히 사용해야 사용자의 불편을 막을수 있다. 12.6 그 밖의 옵션들에 대해서...administrivia 누군가가 리스트로 명령을 보내면 그 명령을 어떻게 할 것인지 결정한다. 이 옵션을 yes로 해 놓으면 그 명령을 관리자에게로 돌려 버리고 잘못된 메일이 리스트로 가지 않게 한다. advertise 여기에 설정된 호스트로부터 어떤 요청이 오면 항상 자동으로 lists 명령을 해서 지금 어떤 메일링 리스트가 운영되고 있는지를 알려준다. announcements 가입이나 탈퇴의 상황을 리스트이름-approval이라는 엘리어스에게 알려준다. description lists 명령을 이용해서 한 서버에서 사용중인 메일링 리스트의 종류를 알아볼 때 함께 출력되는 각 리스트에 대한 간략한 소개이다.(50자 이내) subject_prefix 메일의 제목에 일정한 문자열을 추가시킨다. 이 밖에도 많은 옵션이 있으니 각 운영자들은 .config 파일을 잘 읽어보고 세팅하기 바란다. 13. 고급 사용자를 위한 설정여기에 설명하는 내용은 메이저도모를 이용하는 메일링 리스트 서버를 좀 더 고급사양에 대해 설정한다. 메이저도모의 요약, 압축 기능 사용에 대한 내용과 ftp나 유즈넷, WEB과 연동하는 방법, 그리고 메일링 리스트 성능 개선을 위해 벌크메일러를 사용하는 방법등에 대해 이야기 하도록 한다. 아직! 여기의 내용은 완전한 것이 아니다. 13.1 스패머로부터 메일링 리스트 보호하기기본적으로는 메이저도모가 스팸 메일을 처리하지 않는 것 보다는 서버 자체가 스팸 메일 자체를 거부해 버리는 것이 더 함당한 것 같이 보인다. 스팸 메일이 날아오는 주소들을 정리해 놓아 서버가 메일을 받지 않도록 설정하도록 한다. 다음을 참고하기 바란다. http://spam.abuse.net/ 그리고 위에 설명한 것 처럼 restrict_post를 통해 메일링 리스트에 가입하지 않는 이상 포스팅 하지 못하도록 제한을 두는 것도 좋을 것이다. 물론 위와 같은 방법으로도 치고 빠지는 스패밍을 방지하기에는 어느정도 힘겹긴 하다. 통신망의 자료실에 보니까 삐삐 쳐주는 프로그램이 있던데... 메일링 리스트에 몇개 이상의 메일이 오면 삐삐를 쳐주도록 스크립트를 짜 놓는 것은 급작스런 스패밍 공격을 방지하는데 좋은 방법인 것 같다. 하여간 항상 주의하는 것은 나쁘지 않다. 13.2 좀 더 효율적인 메이저도모이절의 내용과 벌크메이러의 내용은 지승훈 shjee@metaland.com님께서 작성하신 글을 인용, 변환한 글이다. 원문에 충실하려고 노력했으며 이 글의 원문을 원하는 사람은 다음 홈페이지에서 구할 수 있다. http://ns.metaland.com/~shjee/system/majordomo.html 지승훈님께 다시 한번 감사를 드린다. 위에 말한 첫번째 방법만을 보았을 때 메이저도모는 메일을 리스트 내의 사용자에게 넘겨주는 단순한 역할을 한다. 두번째 세번째 방법등, resend 기능을 사용하는 경우는 좀 더 복잡하지만 이 역시 리스트의 내용을 메일러를 통해 전달하는 것은 동일하다 할 수 있다. 대용량의 메일링 리스트를 운영하는 시스템에서 메이저도모의 기능을 개선하기 위해서는 우선 다음과 같은 부분들을 점검하고 개선할 필요가 있다.
이렇게 함으로써 무척 빠르면서도 효율적인 메일링 리스트를 만들수가 있다. (영문에서는 dramatic speedups in delivery 라고 표현하고 있다.) 이런 bulk mailer는 다음의 URL에서 구할 수 있다.
위 내용은 메이저도모 FAQ에 있는 'How can I improve Majordomo's performance ?' 라는 부분을 요약, 정리한 것이다. 13.3 벌크메일러 소개 및 설치 방법메이저도모 같은 메일링 리스트 프로그램을 보면 리스트에 포함되어 있는
이용자에게 메일을 보내기 위해 한번씩 Sendmail process를 띄워서 해당
호스트에 접속을 하게 된다. 그러나 다수의 이용자에게 메일을 보낼 경우
이런 방법은 상당한 시간이 걸릴 뿐더러 각각의 메일큐를 관리해야 하기
때문에 시스템 성능을 저하시키는 요인이 된다. 이런 단점을 개선하기 위해
만들어진 것이 벌크메일러 류의 프로그램이다. 이것은 리스트에 포함된
수신자를 도메인별로 구분하고 해당 도메인에 단 한번 접속을 통해 해당
이용자에게 메일을 보낸다. 이 방법은 벌크메일러의 문서 파일을 보면 이 프로그램은 5000명에게 동시에 보내기 위해 디자인되었으며 짧은 시간내에 12.000명에게 메일을 보내는데 무리가 없다고 한다. Qmail www.qmail.org을 사용할 경우에는 자체가 그런 기능을 가지고 있기 때문에 이것을 적용하는게 의미가 없다고 한다. 현재 공개되어 있는 몇개의 bulk mailer 중 메이저도모개발자가 추천하는 벌크메일러 를 설치해 보기로 하자. 우선 위의 Site에서 builk_mailer.tar.gz 파일을 받아서 푼다.
# tar xvfz builk_mailer.tar.gz 그 다음 해당 디렉토리로 가서 다음과 같이 컴파일 한다.
# ./configure # make # make install 위와 같이 하면 /usr/local/bin 에 bulk_mailer 라는 실행파일이 생긴다. 이를 적용하기 위해 majordomo.aliases 를 다음과 같이 수정한다. test 라는 메일링 리스트에 적용해 보면 다음과 같다.
# test mailing-list aliases test : "|/usr/local/majordomo-1.94.4/wrapper resend -l test -h metaland.com test-outgoing,nobody" test-owner : shjee@metaland.com test-outgoing : "|/usr/local/bin/bulk_mailer -domain metaland.com owner-test@metaland.com /usr/local/majordomo-1.94.4/lists/test" owner-test : shjee@metaland.com test-request : shjee@metaland.com test-approval : shjee@metaland.com 자 이제 test 라는 메일링 리스트에 메일을 보내 보자.. 엄청난 속도 향상을 느낄수 있을 것이다. ^^; 사실 엄청난 속도 향상을 느껴보진 못했습니다. -_-; test 메일링 리스트에 겨우 10명도 들어있지 않거든요. 이용자가 많은 메일링 리스트를 운영하시는 분이라면 꼭 한번 적용해 보시길 바랍니다. 13.4 다음버전의 메이저도모, v2.0저자도 밝혔지만 메이저도모는 처음에는 무척 작고 작은 프로그램에서 시작되었다. 지금 1.94.x 버전까지 왔지만 많은 사람들이 더 이상 뜯어고칠 수 없는 프로그램임을 알게되었고, 새로운 v2.0 이 준비되고 있다. v2.0은 거의 모든 것을 처음부터 작성하고 있으며 새롭고 더욱 강력해진 많은 내용을 담고있다. v2.0은 아직 제작중이며 곧! 새롭게 등장할 것이다. 관심있는 사람은 http://www.hpc.uh.edu/majordomo/을 참고하기 바란다. 메이저도모2의 주요 변동 사항
13.5 한글 메이저도모 1.94.4본 필자가 메이저도모의 메시지를 한글화 한 l10n 타입의 한글 메이저도모를 테스트 중이다. 메이저도모의 배포에 대한 라이센스로 쉽게 배포하기 어렵지만 베타 테스트가 거의 끝나서 메이저도모 메인 사이트를 통해 7-8월 중에 배포가 가능할 것이다. 14. 버전정보
|