
이 글에서 나는 메일링리스트의 웹기반 기록(archive)을 만드는 방법을 설명한다. 이 글은 같은 Linux Gazette의 "메일링리스트를 만드는 빠르고 쉬운 방법"을 기초로 한다. 아직 읽지않았다면 먼저 그 글을 읽길 바란다. 많은 내용이 그 글에서 설명한 방법에서 나온 것이다.
먼저 이 글에서 사용할 메일링리스트를 간단히 설명한다. 저번 글을 읽었다면 이 과정은 익숙해 보일 것이다.
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에게 전달된다.
우리가 원하는 것은 작업그룹 구성원들이 메일링리스트 기록을 담은 웹사이트를 볼 수 있게하는 것이다. 예를 들어, 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"이다.
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
다음 할 일은 시스템에 가짜 계정을 만드는 일이다. 이 계정은 메일링리스트에 등록하여 메일링리스트로 오는 메일을 수집하는데 사용한다. 그런 다음 가짜 계정의 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이 아닌 다른 이름일 수 있다. 이는 사용하는 웹서버 설정에 달렸다. 또 웹서버가 이런 방법으로 사용자 웹페이지를 허용하는지도 확인해야 한다. 다음 절에서 이 방법을 설명한다.
다음 과정은 시스템 사용자가 자신의 웹페이지를 가질 수 있게 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
사용자가 메일을 받으면 메일은 /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
Most recent messages |
매번 명령행 파라미터를 입력하는 대신 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
이제 메일링리스트로 메일을 보낼때마다 자동으로 메일링리스트 기록을 갱신하게 만들고 싶다. 우리는 이를 위해 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" 시간이 변한 것을 확인할 수 있다.
다음은 웹기반 메일링리스트 기록을 만드는 과정의 요약이다.
당신이 나와 같이 웹기반 메일링리스트 기록을 유용하게 사용하길 바란다. 어떤 의견이나 제안이 있다면 주저말고 나에게 메일을 보내라.
Lawrence Teo