다음 이전 차례

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 닫힌 메일링 리스트의 구현

여기에 설명할 내용은 위에 언급한 동아리에서 쓰던 설정의 일부이다. 우선 이 리스트는

  1. 졸업생 및 재학생 외엔 이 리스트에 가입할 수 없다.
  2. 게다가 어느 누구도 탈퇴하지 못한다! ^^;;
  3. 외부인은 리스트로 메일을 보낼 수 없다.
  4. 위쪽에는 쿨스게시판이라고 타이틀을 만들어 달았다.
  5. 리스트의 절반을 차지하는 학부생의 E-mail 주소가 한 서버에 몰려있으므로 누군가 큰 파일을 어태치해서 보내게 되면 그 때마다 그 서버는 같은 파일을 20정도씩 저장하며 하드 공간을 차지했다. 이에 용량이 큰 파일 제한을 두었다.

과 같은 성격을 지녔다. 위와 같은 설정을 위해 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로 했을때는 subscribe lists address 의 형식을 이용하여 다른 주소로 메일링 리스트를 신청할 수 있다. 혹은 타인을 대신해 신청가능하다. open일 경우 메일을 보낸 주소로만 가입이 가능하다. 이 항목에는 +confirm 이라는 형식을 이용할 수있다. 만일 open+confirm을 이용하면 가입 절차로 메이저도모가 가입자에게 인증넘버를 메일로 보내주고 그 인증넘버를 이용해 다시 가입(확인) 해 줘야 끝나게 된다. 아래와 같은 메일일 것이다.

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등 여러개의 그 문자, 하나이상 있어야 한다.

\ 여러 특수 형식문자 자체를 표시하고 싶을 때(. 이나 * 등을 직접 표현하고 싶을 때 \ 뒤에 쓴다. ;\. 문자그대로 마침표

^ 문자열의 시작 ;^a a로 시작하는 문자열의 시작

$ 문자열의 종료 ;$a a로 종료하는 문자열의 시작

부족한 설명만으로 이해가 안갈지도 모르겠다. 몇몇 예제를 통해 알아보도록 하자. 이 내용은 문서와 함께 제공되는 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 파일을 잘 읽어보고 세팅하기 바란다.


다음 이전 차례