
다음과 같은 상황이 있다:
방금 동료들과 함께 새로운 프로젝트를 시작했다. 첫 모임후 모두들 전체 구성원에게 주기적으로 각자의 진행상황을 메일로 보내기로 했다. 모두들 떠난후 동료들의 메일주소로 첫 메일을 보냈다. 잠시후 새로운 사람이 참가하기 전까지는 문제가 없었다. 이제 모두들 "To:"란에 긴 주소 목록을 갱신해야 한다. 만약 잊으면 새로운 사람은 메일을 못받는다고 불평을 할 것이다. 점점 상황을 꼬여간다.
상황이 점점 어려워지면서 당신은 한 주소로 메일을 보내면, 모두에게 메일이 가게할 수 없을까란 생각이 들 것이다. 그렇다, 가능하다. 메일링리스트를 사용하면 된다.
만약 리눅스를 오랜동안 사용하였다면 메일링리스트가 생소하지는 않을 것이다. 그러나 아직 메일링리스트에 익숙하지 않고 얼마나 편한지를 잘 모르는 사람들이 있다.이제 당신은 메일링리스트가 필요하다고는 생각한다. 그러나 만들 시간이 없다. 공개된 Bugtraq와 같이 바쁜 메일링리스트에 가입해있다면 그들이 Majordomo나 ezmlm과 같은 메일링리스트 관리 프로그램을 사용한다는 것을 알 것이다. 빠르고 쉽게 간단한 메일링리스트를 만들고 싶다면 이런 프로그램들이 제공하는 복잡한 기능은 원치않을 것이다. 보통 리눅스 시스템은 작은 그룹의 간단한 메일링리스트를 만드는데 충분하다.
(역주; 이 글의 목표는 최대한 "빨리" 만들수 있는 간단한 메일링리스트다. 그러나 기능이 다양한 메일링리스트 관리프로그램도 설치하는데 어렵지않고 장기적으로 훨씬 이득이다. 개인적으로 GNU Mailman을 추천한다.)
이 글은 sendmail, Postfix, exim과 같이 보통 리눅스 배포본에 포함되있는 표준 메일전송 프로그램(mail transfer agent, MTA)을 사용하여 간단한 메일링리스트를 만드는 방법을 다룬다. 그러나 목표는 간단하게다. 즉, 우리의 메일링리스트는 메일링리스트 관리 프로그램의 다양한 기능을 제공하지는 않는다.
추가로 이번 Linux Gazette의 다른 글("메일링리스트의 웹기반 기록 만들기")에서 이 메일링리스트를 사용하여 간단한 웹기반 기록(archive)을 만드는 방법을 설명한다. 그러나 필요한 것은 메일링리스트만이고 시간이 없다면, 이 글만 읽어도 된다.
메일링리스트를 만드는 방법은 매우 간단하다. 먼저 필요한 것을 설명한후 실제 만드는 과정에 들어간다.
먼저 메일링리스트를 만드는데 필요한 것은,
필요한 것이 모두 준비되었다면 MTA가 실제로 실행되고 있는지 먼저 검사해야 한다. 나는 항상 다음과 같이 netstat을 사용하여 검사한다.
lteo@mybox:~$ netstat -a | grep smtp tcp 0 0 *:smtp *:* LISTEN
위의 줄이 출력되면 MTA가 실행되고 있다는 뜻이다. 실행되지 않고있다면 실행해야 한다. 실제 방법은 시스템에 따라 다르다. Debian에서는 "/etc/init.d/sendmail start"이고 Red Hat에서는 "/etc/rc.d/init.d/sendmail start"이다. (시스템마다 스크립트의 장소가 다를 수 있다.) 활성화하려면 "chmod +x /etc/init.d/sendmail" 등을 실행한다. Slackware에서 sendmail을 활성화하려면 /etc/rc.d/rc.M에서 해당 줄의 주석을 제거한후 시스템을 재시작하거나 그 파일의 명령어를 사용하여 직접 실행하면 된다.
먼저 할 일은 메일링리스트 이름을 정하는 것이다. 예를 들어 사용하는 시스템이 mybox.example.com이라면 메일링리스트 주소를 "theproject@mybox.example.com"이라고 할 수 있다. theproject@mybox.example.com으로 보내는 메일은 등록된 모든 메일 주소로 전해진다. 이 글에서 나는 메일을 linus@mybox.example.com, alan@example.net, esr@example.org로 보내고 싶다.
다음은 MTA의 aliases 파일을 설정하는 일이다. aliases 파일은 배포본에 따라 보통 /etc/aliases 나 /etc/mail/aliases에 있다. 찾았다면 이 파일을 편집한다. 파일에는 "webmaster: root", "postmaster:root" 등의 기본적인 부분이 있다. 이 부분을 무시하고 파일 끝으로 가서 다음과 같이 추가한다.
# The Project mailing list theproject: linus, alan@example.net, esr@example.org
이제 저장하고 편집기를 끝낸다.
"linus@mybox.example.com" 대신 "linus"를 사용한 것을 볼 수 있다. 이는 현재 시스템이 mybox.example.com이고 사용자 계정이 이 시스템에 있기 때문이다. '#'뒤에 주석을 적을 수 있다. '#'은 줄의 첫문자이어야 한다.
중요! 이제 매우 중요한 과정이 남았다! 사용하는 MTA에 따라 aliases 파일의 수정할 때마다 변화를 반영하는 명령이 필요하다. 명령을 하지 않으면 메일링리스트가 작동하지 않는다! 다음 표는 aliases 파일을 편집한후 실행할 명령어를 보여준다.
| MTA | Command |
|---|---|
| sendmail | newaliases |
| Postfix | postaliases /etc/aliases |
| exim | [명령이 필요없다] |
축하한다! 이제 메일링리스트를 만들었다. 검사를 위해 theproject@mybox.example.com으로 메일을 보내서 linus@mybox.example.com, alan@example.net, esr@example.org 모두 메일을 받는지 확인해봐라. 나는 메일링리스트가 작동하는지 검사하기위해서 공짜 웹메일 계정을 사용한다.
[주의: example.com, example.net and example.org은 RFC 2606에서 예약된 테스트용 도메인명이다. 실제 사이트로 메일이 가지는 않는다. 많은 주소수집 프로그램이 이 주소를 보고 존재하지 않는 사이트로 스팸을 보내는 것을 봐라. 신난다! -Iron]
메일 주소를 추가하고 빼는 것은 쉽다. 편집기로 aliases 파일에서 메일 주소를 추가하거나 빼면 된다. 단 aliases 파일을 편집한후 MTA에게 변화를 알리기위한 명령어를 잊지마라.
메일링리스트에 대해서 알아야할 것이 하나 남았다. majordomo나 exmlm과 같은 완전한 메이링리스트와 달리, 제삼자가 우리의 메일링리스트 주소로 메일을 보내도 등록된 모든 주소로 메일이 간다. 그래서 보안문제가 남아있다. 그래서 내가 이 메일링리스트가 간단하다고 주장한 것이다. 그러나 소수의 믿을만한 그룹 내에서만 사용한다면 문제없다. 그래서 보안과 사생활과 스팸을 막기위해 메일링리스트 주소를 공개하지 않는 것이 좋다.
메일링리스트를 만들어봤다. 간단하지 않는가? 빼먹은 것이 없는지 확인하기위해 메일링리스트를 만드는 과정을 요약해보았다.
끝났다! 새 메일링리스트가 유용하길 바란다. 나는 여러번 작업그룹이나 친구 등 간단한 메일링리스트가 필요한 경우 이 방법으로 메일링리스트를 만들었다. 물론 다른 방법도 있을 것이다. 이 방법이 유용하다고 생각하거나 어떤 제안이 있다면 나에게 메일을 보내길 바란다. 나는 항상 환영이다.
이 메일링리스트로 웹기반 기록을 만들고 싶다면 이번 Linux Gazette의 "메일링리스트의 웹기반 기록 만들기"를 읽어봐라.
그럼 잘 사용하길 바란다!
Lawrence Teo