GNU 메일링 리스트 시스템 Mailman
GNU 메일링 리스트 시스템 Mailman
v0.1 2000년 5월 24일
이 문서는 GNU 메일링 리스트 시스템인 Mailman의 설치방법에 대해서 설명해 놓았습니다. 제가 영어가 많이 딸리는 관계로 많은 Mailman 의 많은 부분이 이해가 되지 않았지만
이 문서에서는 Mailman 소스에 포함되어 있는 INSTALL문서에 따라 설치를 하고, 실제로 제가 Mailman을 활용해 메일링 리스트릍 운영하면서 경험한
것들을 나누는 방법으로 문서를 업그레이드 해 나갈 생각입니다.
필자는 예전부터 메일링 리스트에 관심이 무척이나 많았었다. 하지만 메일링 리스트에 알고 있는것이라고는, 유명한 프로그램으로 Majordomo가 있다는 정도 외에는
알지를 못했었다. 언젠가 한번 직접 설치를 해봐야지 하며서 이리저리 미루고 있다가, 마침 리눅스 관련 프로젝트를 진행하는데 있어서 필수요소로 메일링리스트가
필요하게 되었다
그래서 Majordomo를 설치하기로 결심을 했다. 이리저리 문서를 뒤져서 Majordomo의 설치에 성공을 했는데, 설치법이 그리 어려운 편이 아니었지만
조금 번거로운 편이었고, 결정적으로 웹기반 인터페이스를 제공하지 않는다는 것이었다. Majordomo의 다른문서 정보에 보니 웹기반인터페이스를 제공하는
프로젝트들도 있었지만, Majordomo를 설치하고 또 그것까지 설치하려니 이만저만 번거로운 일이 아니었다.
'필요는 발명(=발견)을 낳는다'고 했던가? 그 시기에 마침 KLDP에서 운영하고 있던 GNU의 메일링 리스트 프로그램인
Mailman을 발견하게 되었다.
가장 마음에 드는 구석은 역시 웹기반의 인터페이스를 기본적으로 제공한다는 것이었다. 약간의 수고만 들이면, 전제적인 HTML 폼도 고칠 수 있을것 같고
한글 localization 도 쉬울것 같았다.
이렇게 해서 선택한 Mailman 이다. 지금 설치한지 얼마 안되고 본격적인 운영에 들어가지는 아니었지만, 이만저만 귀엽고 편리한 놈이 아닐 수 없다.
이제 여러분들을 재미나는 Mailman의 세계에 초대를 합니다.
먼저 Mailman을 인스톨 하기전에 필요한것이 세가지가 있습니다.
당연한 이야기 이겠지만 첫번째로 Mailman 소스코드, 그리고 일반적인 배포판을 쓰신다면 아마도 다 준비가 되어 있을거라고 생각되는 C Compiler와 Python 인터프리터. 하지만, 혹시 모르니 체크를 해봅시다.
필요한것은 아래와 같습니다
- 최신 Mailman 소스코드
-
mailman-1.1.tar.gz
- Python 인터프리터
-
현재 1.5 혹은 그 이후의 버젼이 필요합니다. 'whereis python' 으로 Python 인터프리터의 위치를 알아놓습니다. Python이 설치되어 있지
않다면은
<http://www.python.org>을 방문해 보시기 바랍니다.
- C 컴파일러
-
wrapper를 컴파일하기 위해서 C 컴파일러가 필요합니다. 우리들이 가지고 있는 GNU C compiler면 좋습니다.
이제 본격적으로 Mailman 설치에 들어가 보도록 합니다. 이번장의 시스템 셋업 작업은 root 계정으로 수행을 하면 됩니다.
Mailman을 인스톨하기전에 당신의 시스템을 아래와 같이 몇가지 세팅을 해 주면 됩니다.
- 'mailman'이라는 그룹/유저를 생성한다. 일반적인 리눅스 시스템에서는
# adduser mailman
이라고 하면, mailman 이라는 그룹/유저로 새로운 계정이 생성될 것입니다.
- Mailman이 설치될 디렉토리 (이하 $prefix) 를 결정합니다. 모든 Mailman 파일들은 $prefix 디렉토리 밑에 설치가 됩니다.
만약에 당신이 mailman 유저를 추가했다면은 기본적으로 설치될 기본 디렉토리(/home/mailman)은 이미 만들어져 있을것입니다. 저는 기본적으로 /home/mailman 을
설치 디렉토리로 결정을 했습니다.
- 실제로 .bash_profile 을 편집해서, $prefix 환경변수를 설정해 놓는것도 좋은 방법입니다.
다음한줄을 ~/.bash_profile에 추가합니다.
export prefix=/home/mailman
- $prefix 디렉토리는 'mailman' 그룹의 소유로 반드시 되어 있어야 하며, setgid bit set 이 설정되어 있어야 하고, 모든 유저에게 읽기,실행 권한이 주어져야 합니다.
아래와 같이 해줍니다.
% cd $prefix
% chgrp mailman .
% chmod a+rx,g+ws .
이제 Mailman 을 설치하기 위한 시스템의 준비는 끝났습니다.
이 장의 각 단계의 실행은 root 계정이 아닌 새로만들어진 mailman 계정으로 수행하면 됩니다.
아마도 당신이 다른 GNU 소프트웨어들을 인스톨해본 경험이 있다면, 아마도 쉽게 설치할 수 있을것입니다.
일반적인 경우에는 단지 Mailman 의 압축을 풀고 아무런 옵션없이 configure 스크립트를 사용하면 성공할 수 있을것입니다.
- 먼저 다운받은 소스코드의 압축을 해제하고 컴파일을 합니다.
% tar -xvzf mailman-<version>.tar.gz
% cd mailman-<version>
% ./configure
(필자의 경우는 ./configure --prefix=$prefix --with-python=/usr/bin/python 으로 했습니다.)
% make install
configure시 아래와 같은 옵션을 사용해서 여러분의 시스템에 최적화 시킬 수 있습니다.
--prefix=dir
Mailman이 인스톨될 디렉토리를 지정해 줍니다.
기본값으로 /home/mailman 이 세팅되어 있고 이미 위에서 언급했던 것처럼 디렉토리가 준비되어 있을것입니다.
--with-python=</path/to/python>
python이 설치되어 있는 디렉토리를 지정해 준다.
make install 이 끝나면 아마도 다음과 같은 메세지를 받을수 있을것입니다.
*****
***** If you are installing over an old installation, please
***** run "make update". See the UPGRADING file for details.
*****
필자의 경우는 configure시 아무런 옵션없이도 설치에 성공을 했습니다. 이외의 더 많은 옵션이 궁금하신 분은 Mailman 소스코드에 포함되어 있는
INSTALL 문서를 참조하시면 됩니다.
아마도 일반적인 리눅스 시스템에서는 아무 문제없이 설치가 되었으리라고 생각이 됩니다. 하지만 혹시 모르니 제대로 설치가 되었나 확인을 해봅시다. check_perms라는
유틸리티를 활용해서 Mailman이 제대로된 퍼미션으로 설치가 되었나 자동으로 검사를 해 봅니다.
- check_perm를 수행합니다.
% cd $prefix
% ./bin/check_perms
만약 문제가 있다면 다음과 같은 메세지를 받을수 있을 것입니다.
Problems found: <발견된 에러의 갯수>
Re-run as root with -f flag until no errors are found
위의 메세지처럼 root 계정으로
$ ./bin/check_perms -f
를 수행하면 퍼미션을 자동으로 조정해주게 됩니다.
다시한번 mailman 계정으로 check_perms를 수행합니다.
만약 "No problems found" 라는 메세지를 받게되면 모든것이 올바르게 세팅이 된것입니다.
먼저 축하드립니다. ^^ 여기까지 아무 문제없이 따라 왔다면, 일단 Mailman은 성공적으로 설치가 된 것입니다.
이제는 Mailman이 올바르게 작동하기 위해, 웹서버와 메일서버를 설정해 봅시다.
- 웹서버에게 $prefix/cgi-bin 의 CGI 스크립트를 수행할 수 있도록 설정을 해줍니다.
root계정으로 Apache 웹서버 설정화일인 httpd.conf의 Aliases 설정부분에 다음 한줄을 추가해줍니다.
ScriptAlias /mailman/ "$prefix/cgi-bin/"
- Mailman의 로고 화일을(압축을 푼 디렉토리의 misc/mailman.jpg) 웹서버의 images 디렉토리로 카피를 합니다.
웹서버의 htdocs 디렉토리 밑에 images 디렉토리를 생성하고 그 디렉토리로 카피를 하면 됩니다.
$ mkdir <웹서버 루트 디렉토리>/images
$ cp $prefix/mics/mailman.jpg <웹서버 루트 디렉토리>/images
- 그 다음에 $prefix/Mailman/mm_cfg.py에 로고화일위치를 다음과 같이 한줄을 추가해 줍니다.
DELIVERED_BY_URL = '/images/mailman.jpg'
- 웹서버에 Pipermail을 mailing list archives 로 설정을 해줍니다. 다음 한줄을 httpd.conf에 추가해 준다.
Alias /pipermail/ "$prefix/archives/public/"
그리고 잊지말고 웹서버를 재시작 시킵니다.
- crontab 엔트리 셋업을 합니다. Mailman은 패스워드 기억등을 자동으로 보내는데 있어서 Cron 작업을 하게 됩니다. 'mailman' 계정으로 다음을 수행합니다.
% su - mailman
% cd $prefix/cron
% crontab crontab.in
- 'mailman' 과 'owner-mailman' 을 시스템의 mail alias database에 추가를 시킵니다.
% su
만약에 당신의 메일 계정이 musica@list.org 라고 가정을 한다면 '/etc/aliases'에 다음을 추가합니다.
mailman: musica@list.org
mailman-owner:mailman
newaliases 명령으로 시스템의 mail alias database 를 갱신시킵니다.
$ newaliases
여기까지 잘 따라오셨죠? 이제 mailman 계정으로 두가지를 더 해야할 일이 남아있습니다.
- $prefix/Mailman/mm_cfg.py 화일을 체크해 본다. 특히 DEFAULT_HOST_NAME 과 DEFAULT_URL 이 맞는지 체크해 보고, 틀린곳이 있다면 수동으로 수정해 주시면 됩니다.
'$prefix/Mailman/mm_cfg.py' 화일은 '$prefix/Mailman/Default.py' 화일에 똑같이 적용이 됩니다. 모든 설정은 'mm_cfg.py'을 통해 하고, 'Default.py'은 수정하면 안됩니다.
DEFAULT_HOST_NAME
Mailman이 설치된 당신의 컴퓨터 호스트 이름입니다.
DEFAULT_URL
Mailman 의 설정을 웹브라우져로 할때의 URL 입니다.
* 주의 : HOME_DIR, MAIL_DIR 은 편집하면 안됩니다. 이들은 configure 스크립트에 의해서 자동으로 설저이 됩니다.
- mailman의 패스워드를 설정해 준다.
% $prefix/bin/mmsitepass <당신의 패스워드>
이렇게 해서 Mailman 설치는 모두 끝이 났습니다. 이제는 새로운 메일링리스트를 만들고 설정하는 일만 남았습니다.
- 이제 'test'라는 이름의 메일링리스트를 만들어 보겠습니다. 'newlist'를 통해 새로운 메일링리스트를 생성할 수 있습니다.
% $prefix/bin/newlist
Enter the name of the list: <새로만들 리스트 이름을 입력합니다. 여기서는 'test'>
Enter the email of the person running the list: <생성될 메일링리스트 관리자의 메일주소를 입력합니다.>
Initial test password: <생성될 메일링리스트의 암호를 입력합니다.>
위의 3가지 메세지에 답변을 하고 엔터를 치면 다음과 같은 메세지를 볼 수 있을 것입니다.
## test mailing list
## created: 25-May-2000 mailman
test: "|/home/mailman/mail/wrapper post test"
test-admin: "|/home/mailman/mail/wrapper mailowner test"
test-request: "|/home/mailman/mail/wrapper mailcmd test"
owner-test: test-admin
test-owner: test-admin
위에서 받은 메세지를 root 계정으로 시스템 mail alias database에 추가를 해줍니다.
% su -
$ vi /etc/aliases
위의 aliases 추가
그리고 시스템 mail alias database 갱신시키는것을 잊지 맙시다
$ newaliases
Tip 하나 : 깔끔한 Alias 관리 !
만약에 sendmail 8.6.X 이상을 쓰고 있다면, 좀더 깔끔하게 Alias 화일을 관리할 수 있다. sendmail.cf에 "O"라인을 추가한다.
자세한 것은 sendmail 설명서를 참고하기 바란다.
간단하게 $prefix/mailman.aliases 화일을 만들고 이 파일에 새로이 생성되는 메일링리스트의 Alias를 추가한다.
% su -
% vi /etc/mailman.aliases
그리고 sendmail.cf에 다음 한 라인을 추가한다.
O AliasFile=/etc/mailman.aliase
그리고나서 'newalias' 명령으로 갱신시키는것을 잊지말자
$ newaliases
이렇게 하면 앞으로 새로운 메일링 리스트를 생성할때 마다 생성되는 alias 들은 $prefix/mailman.aliases 에
추가해 줌으로 인해서 깔끔한 Alias 관리를 할 수 있게 되었다.
- 이때쯤 되었으면 위의 email of the person running the list 에서 입력한 메일주소로 안내메일이 왔을것입니다. 주의깊게 읽어봅시다
- 위에서 받은 메일을 한번 확인해 봅시다.
- Your mailing<당신이 설정한 패스워드>
새로이 생성한 메일링리스트의 패스워드입니다.
- You can configure your mailing list at the following web page:
(메일링리스트의 제반 설정을 할 수 있는 URL 입니다. 물론 관리자만이 할 수 있겠죠>
http://<your-domain>/mailman/admin/<새로생성한 메일링리스트명>
- The web page for users of your mailing list is:
(메일링리스트에 가입할 수 있는 폼을 제공하는 URL 입니다)
http://<your-domain>/mailman/listinfo/test
이렇게 해서 기본적으로 새로운 메일링 리스트를 만들어 봤습니다. 이제는 웹페이지를 통해서 메일링리스트를 조정하고, 가입자를 관리하는 일만이 남았습니다.
이제 위에서 설정한 'test' 라는 이름의 메일링 리스트에 새로운 가입자를 받아보도록 하겠습니다.
이제부턴는 거의 웹기반이기 때문에, 무척 쉽습니다. 먼저 홈페이지에서 메일링리스트 가입폼을 공개합니다.
가입폼은 이전장에서 관리자로 받은 메일에 안내되어 있습니다.
- 메일링 리스트 가입폼을 공개합니다.
http://<your-domain>/mailman/listinfo/test
메일링리스트에 가입하려는 일반사용자들이 위의 URL을 방문하면, 영어가 조금 된다면 ^^ 누구라고 쉽게 가입할 수 있을것입니다.
- 먼저 Your email address: 에 가입하고자 하는 메일 주소를 적고
- Pick a password:, Reenter password to confirm: 에 패스워드를 적습니다.
- Would you like to receive list mail batched in a daily digest?
에서 digest 기능이란 조그만 크기의 메일이 자주오고가는 메일링 리스트의 경우에는 매번 메일을 수신하기에는 번거로움이 있으므로
메일링 리스트 메시지를 한꺼번에 모아 하루에 한 번만 받아보고자 하는 사용자는 'yes'를 합니다.
- 가입신청을 한 사용자는, mailman 으로부터 새로생성한 리스트 이름 -- confirmation of subscription -- request ] 라는 제목의자동으로 메일을 받게 됩니다.
사용자는 단지 이 메일에 'Re:'라는 제목으로 답장을 하면 자동으로 메일링 리스트에 가입이 됩니다.
* 유의사항
아마도 Redhat 6.x 이상 sendmail 8.9.X 이상을 이용하는 시스템에서는 올바르게 설정이 된것 같은데 올바르게 작동하지 않는다는 것을 알수있을것입니다.
큰 문제는 아니니 걱정하지 맙시다. 먼저 검사를 해봅시다.
- sendmail -v 모드로 검사를 해봅니다.
% date | /usr/lib/sendmail -v <생성된메일링리스트 메일주소>
아무 문제가 없다면 좋겠지만, 아마도 대부분의 시스템에서는 아래와 같은 에러를 만날 수 있을것입니다.
"|/home/mailman/mail/wrapper post test"... Connecting to prog...
"|/home/mailman/mail/wrapper post test"... Service unavailable
- 해결방법
이문제는 센드메일 앨리어스를 통해 불리우는 프로그램이 과연 수행해도 좋은 프로그램인지를 확인하는 과정에서 생기는 문제로
sendmail에 mailman의 wrapper를 간단히 등록해주면 해결이 됩니다. 다음과 같이 하면 됩니다.
% su -
$ cd /etc/smrsh
$ ln -sf $prefix/mail/wrapper .
- 다시한번 테스트를 해봅니다.
% date | /usr/lib/sendmail -v <생성된메일링리스트 메일주소>
아마도 다음과 같은 메세지를 받을 수 있을 것입니다.
"|/home/mailman/mail/wrapper post test"... Connecting to prog...
"|/home/mailman/mail/wrapper post test"... Sent
성공입니다.!!
이제 다시한번 일반 사용자에게 가입을 받아보면 잘 된다는것을 알 수 있을것입니다.
지금까지 다룬 내용들은 Mailman의 시작에 불과하다. Mailman은 웹브라우져를 통해서 수많은 기능들을 세세하게 조절할 수가 있다.
새로운 메일링 리스트 프로그램인 Mailman을 좀더 많은 사람들이 사용함으로 인해서, 이제 대한 좀더 기술적인
토의가 이루어 졌으면 하는 필자의 개인적인 바램이다.
참고로 이 문서를 읽고 처음으로 Mailman을 설치해 보는 사람, 이 과정에서 문제가 생긴사람, 아니면 이전부터 사용해와서
많은 노하우를 가지고 있는, 모든 사람들이 서로 협력해서 도울수 있도록 게시판을 하나 개설해 놓으려고 한다.
Mailman 게시판 http://mailman.linuxproject.co.kr
이곳을 통해 이루어지는 모든 정보들을 토대로 계속해서 이 문서들을 버젼업 해 나갈 생각입니다.
마지막으로 KLDP를 통해 Mailman을 알게해 주신 권순선님과 'Majordomo' 하우투 문서를 통해 메일링리스트를 소개해 주신
심상현님께 감사를 드립니다.