메일링리스트의 웹기반 기록 만들기

By Lawrence Teo

한글번역 전정호

이 글은 한글번역판입니다. 원문은 여기에서 볼 수 있습니다.


1. 소개

이 글에서 나는 메일링리스트의 웹기반 기록(archive)을 만드는 방법을 설명한다. 이 글은 같은 Linux Gazette의 "메일링리스트를 만드는 빠르고 쉬운 방법"을 기초로 한다. 아직 읽지않았다면 먼저 그 글을 읽길 바란다. 많은 내용이 그 글에서 설명한 방법에서 나온 것이다.

1.1 메일링리스트 만들기

먼저 이 글에서 사용할 메일링리스트를 간단히 설명한다. 저번 글을 읽었다면 이 과정은 익숙해 보일 것이다.

mybox.example.com이라는 리눅스 시스템에 theproject@mybox.example.com이라는 메일링리스트를 만들자. 이 리스트에 가입한 전자메일 주소는 inus@mybox.example.com, alan@example.net, esr@example.org이다. 메일 전송프로그램(MTA)의 aliases 파일을 (배포본에 따라 /etc/mail/aliases 나 /etc/aliases) 사용한다. 우리의 메일링리스트는 aliases 파일에 다음과 같이 설정한다.

theproject:
  linus,
  alan@example.net,
  esr@example.org

이제 전자메일을 theproject@mybox.example.com으로 보내면 자동으로 linus@mybox.example.com, alan@example.net, esr@example.org에게 전달된다.

2. 웹기반 기록 만들기

우리가 원하는 것은 작업그룹 구성원들이 메일링리스트 기록을 담은 웹사이트를 볼 수 있게하는 것이다. 예를 들어, http://mybox.example.com/theproject/ 에 메일링리스트 기록을 저장하여 모든 작업그룹 구성원들이 볼 수 있게 만든다.

웹기반 기록은 논의된 내용을 확인하기 쉽게한다. 또 문서나 다른 첨부파일의 중앙 저장소 역할도 한다. 또 (안일어나길 바라지만) 메일을 잃은 불행한 경우에 백업으로 사용할 수도 있다.

메일링리스트의 웹기반 기록을 만들기위해 필요한 것은 다음과 같다.

먼저 웹서버가 실행되는지 확인하자. 확인을 위해 이번에도 netstat 명령어를 사용한다.

lteo@mybox:~$ netstat -a | grep www
tcp        0      0 *:www                   *:*                     LISTEN

위와 같은 줄이 출력된다면 이미 웹서버가 실행중이다. 아니라면 웹서버를 실행시켜야 한다. 시작하는 명령어는 Debian에서는 "/etc/init.d/apache start", Red Hat에서는 같거나 "/etc/rc.d/init.d/httpd start", Slackware에서는 "/etc/rc.d/rc.httpd start"이다.

2.1 hypermail 설치하기

hypermail을 다운받은 후 README 파일을 따라 설치한다. 설치과정은 매우 표준적이다. 급하면 다음과 같이 실행한다. (이는 hypermail 2.1.2에 대한 것이다. 다운받은 hypermail 버전으로 수정하라.)

root@mybox:~# tar zxf hypermail-2.1.2.tgz
root@mybox:~# cd hypermail-2.1.2
root@mybox:~/hypermail-2.1.2# ./configure
root@mybox:~/hypermail-2.1.2# make
root@mybox:~/hypermail-2.1.2# make install

2.2 가짜 계정 만들기

다음 할 일은 시스템에 가짜 계정을 만드는 일이다. 이 계정은 메일링리스트에 등록하여 메일링리스트로 오는 메일을 수집하는데 사용한다. 그런 다음 가짜 계정의 mailbox를 사용하여 메일링리스트 기록을 만든다.

가짜 계정을 "projarc"이라 하자. 리눅스에서 보통 사용자 계정과 같은 방법으로 가짜 계정을 만들 수 있다. 나는 개인적으로 Debian GNU/Linux 시스템에서 adduser 명령어를 사용한다.

root@mybox:~# adduser
Enter a username to add: projarc
Adding user projarc...
Adding new group projarc (1004).
Adding new user projarc (1004) with group projarc.
Creating home directory /home/projarc.
Copying files from /etc/skel
Enter new UNIX password: <password>
Retype new UNIX password: <password>
passwd: password updated successfully
Changing the user information for projarc
Enter the new value, or press return for the default
        Full Name []: Dummy user
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [y/n] y

이 사용자를 aliases 파일에 (/etc/mail/aliases 나 /etc/aliases) 추가하여 메일링리스트에 가입시킨다. 파일을 편집하여 사용자명을 리스트에 추가한다. aliases 파일에서 메일링리스트 구성원 부분은 다음과 같게 된다.

# The Project mailing list
theproject:
  projarc,
  linus,
  alan@example.net,
  esr@example.org

수정한 후 MTA에 변화를 알리는 명령어를 실행하는 것을 잊지말라.

projarc의 웹페이지에 메일링리스트 기록을 담을 것이다. 이를 위해 projarc의 홈디렉토리에 public_html 디렉토리를 만든다.

lteo@mybox:~$ su - projarc
Password: <password>
projarc@mybox:~$ mkdir public_html

사용자 웹페이지는 public_html이 아닌 다른 이름일 수 있다. 이는 사용하는 웹서버 설정에 달렸다. 또 웹서버가 이런 방법으로 사용자 웹페이지를 허용하는지도 확인해야 한다. 다음 절에서 이 방법을 설명한다.

2.3 Apache 설정하기

다음 과정은 시스템 사용자가 자신의 웹페이지를 가질 수 있게 Apache를 설정한다. 수정할 Apache 설정파일은 /etc/apache/httpd.conf 이다. 배포본에 따라 장소가 다를 수 있다. 그 장소에 없다면 "locate httpd.conf" 나 "find / -name httpd.conf"로 찾아본다. 찾았다면 편집기로 열어서 다음 줄이 주석처리 안된 것을 확인한다. (앞에 # 기호가 없음을 의미한다.)

<IfModule mod_userdir.c>
    UserDir public_html
</IfModule>

UserDir 값이 public_html이 아니라 www 같은 것일 수도 있다. 어떤 디렉토리명이든 사용자 웹페이지 공간을 나타낸다.

이제 http://mybox.example.com/theproject/ 와 같은 주소로 기록에 접근하기를 원한다면, Apache 루트 웹페이지에서 projarc 웹페이지로 심볼릭 링크를 만든다. Apache 루트 웹페이지가 어디있는지 알려면 /etc/apache/httpd.conf 에서 DocumentRoot 값을 살펴본다.

root@mybox:~# grep ^DocumentRoot /etc/apache/httpd.conf
DocumentRoot /var/www

위의 경우 Apache 루트 웹페이지는 /var/www 에 있다. projarc 웹페이지로 심볼릭 링크를 만드려면 다음 명령어를 사용한다.

root@mybox:~# cd /var/www
root@mybox:/var/www# ln -s /home/projarc/public_html theproject

2.4 hypermail 테스트하기

사용자가 메일을 받으면 메일은 /var/mail/username 파일에 저장된다. projarc의 경우 파일은 /var/mail/projarc 이다. (어떤 배포본에서는 /var/spool/mail/projarc 이다.)

웹기반 기록을 만들기위해 hypermail은 그 파일을 읽는다. 그러나 projarc 계정이 새로 만들어졌을때 그 파일은 아직 없다. theproject@mybox.example.com으로 메일을 보내면 파일이 만들어진다.

테스트 메일을 보낸후 projarc으로 다음 명령어를 실행한다.

projarc@mybox:~$ hypermail -m /var/mail/projarc -l "The Project" -d /home/projarc/public_html

이제 웹브라우저로 http://mybox.example.com/theproject/ 를 열면 메일링리스트 기록을 볼 수 있다. 다음과 같을 것이다.

The Project
By Thread

Most recent messages
1 messages sorted by: [ author ] [ date ] [ subject ] [ attachment ]

Starting: Sat Oct 20 2001 - 01:45:23 EDT
Ending: Sat Oct 20 2001 - 01:45:23 EDT

  • This is the first message Lawrence Teo (Sat Oct 20 2001 - 01:45:23 EDT)

Last message date: Sat Oct 20 2001 - 01:45:23 EDT
Archived on: Sun Oct 21 2001 - 01:50:56 EDT


1 messages sorted by: [ author ] [ date ] [ subject ] [ attachment ]

매번 명령행 파라미터를 입력하는 대신 hypermail 설정파일을 사용하는 것이 더 편하다. 설정파일을 만드려면, /home/projarc/projarc-hmrc 파일을 만들고 다음을 내용으로 입력한다.

mbox = /var/mail/projarc
label = The Project
dir = /home/projarc/public_html

이제 다음과 같이 메일링리스트 기록을 만들 수 있다.

projarc@mybox:~$ hypermail -c /home/projarc/projarc-hmrc

2.5 cron 설정하기

이제 메일링리스트로 메일을 보낼때마다 자동으로 메일링리스트 기록을 갱신하게 만들고 싶다. 우리는 이를 위해 cron을 사용한다. 실시간으로 (매일을 보낼때마다) 갱신되지는 않지만, 간단한 메일링리스트에 충분한 5 분마다 hypermail을 실행하게 cron을 설정할 수 있다. 물론 2 분 같이 더 짧은 간격을 사용할 수도 있다. 전적으로 당신에게 달렸다. 다만 간격이 짧아질수록 시스템의 로드가 증가함을 기억하라. 만약 많은 첨부파일로 메일 파일이 매우 크거나 시스템이 느린 경우에 여러 메일링리스트를 제공한다면 좋지 않다.

그럼 cron을 설정하자. cron 목록을 편집하기위해 다음 명령어를 실행한다.

projarc@mybox:~$ crontab -e

편집기가 crontab 파일을 열 것이다. hypermail이 5 분마다 실행되게 하려면 다음을 입력한다.

# Update The Project mailing list archive every 5 minutes
*/5 * * * * /usr/bin/hypermail -c /home/projarc/projarc-hmrc

마쳤다면 저장하고 종료한다. 테스트를 위해 5 분을 기다린후 브라우저로 http://mybox.example.com/theproject/ 에 다시 방문한다. hypermail이 실행된후 "Archived on" 시간이 변한 것을 확인할 수 있다.

2.6 요약

다음은 웹기반 메일링리스트 기록을 만드는 과정의 요약이다.

  1. Apache 웹서버가 실행되고 있는지 확인한다. 확인을 위해 "netstat -a | grep www" 명령어를 사용한다.
  2. 시스템에 hypermail을 설치한다.
  3. 메일링리스트 기록을 담을 가짜 계정을 만든다. 예를 들어, projarc.
  4. 가짜 계정을 aliases 파일에 (/etc/aliases 나 /etc/mail/aliases) 추가한다. MTA에 변화를 알리기위해 (sendmail에서) "newaliases"나 (Postfix에서) "postalias /etc/aliases"를 실행한다. exim에서는 어떤 명령어도 필요없다.
  5. projarc 사용자의 웹페이지 디렉토리를 만든다. 예를 들어, "mkdir public_html"
  6. Apache가 사용자의 웹페이지 공간을 허용하게 /etc/apache/httpd.conf 파일을 설정한다.
  7. projarc 웹페이지로 심볼릭 링크를 만든다. 예를 들어, "ln -s /home/projarc/public_html theproject"
  8. 'hypermail -m /var/mail/projarc -l "The Project" -d /home/projarc/public_html'을 실행하여 hypermail을 테스트한다. 그런 다음 "http://mybox.example.com/theproject/"에서 메일링리스트 기록을 볼 수 있다.
  9. hypermail이 5 분마다 (혹은 원하는 간격으로) 실행되게 cron을 설정한다.

당신이 나와 같이 웹기반 메일링리스트 기록을 유용하게 사용하길 바란다. 어떤 의견이나 제안이 있다면 주저말고 나에게 메일을 보내라.

Lawrence Teo

Lawrence Teo는 Charlotte에 있는 University of North Carolina의 박사과정 학생이다. 그는 Laboratory of Information Integration, Security, and Privacy (LIISP)에서 침입탐지와 중요구조보호를 연구한다. Lawrence는 전에 Lycos, Singapore에서 계약직 스프트웨어 엔지니어로 일했고, 호주 Melbourne의 DSTC에서 연구원으로 일했다. 그는 호주 Monash University in Melbourne의 컴퓨터 학사과정을 우등 졸업했다. lawrenceteo<SPAM>@lycos.com로 메일을 보낼 수 있다.


Copyright © 2001, Lawrence Teo.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 72 of Linux Gazette, November 2001