메일링 리스트 · 4 min read · Sep 09, 2025

Debian Squeeze에서 Mailman (Postfix와 함께) 설치 및 구성 방법

Debian Squeeze에서 Mailman (Postfix와 함께) 설치 및 구성 방법

버전 1.0
저자: Falko Timme
Twitter에서 나를 팔로우하세요

Mailman은 오픈 소스 메일링 리스트 관리자입니다. 즉, 이메일 토론 및 뉴스레터 목록을 관리하는 데 사용할 수 있습니다. 아마도 인터넷에서 가장 인기 있고 널리 사용되는 메일링 리스트 관리자일 것입니다. 이 튜토리얼에서는 Postfix 메일 서버와 함께 Debian Squeeze 서버에 Mailman을 설치하고 구성하는 방법을 설명합니다.

이것이 당신에게 작동할 것이라는 보장을 하지 않습니다!

1. 사전 참고

이 튜토리얼에서는 Mailman을 설치할 호스트 이름 lists.example.com으로 가상 호스트를 구성합니다. lists.example.com은 Mailman에서 구성될 메일링 리스트 이메일 주소의 오른쪽 부분이기도 합니다. 즉, 메일링 리스트에 대한 메일은 @lists.example.com 주소로 전송되어야 합니다.

당신의 호스트 이름은 다를 것이므로 이 튜토리얼을 적절히 조정하십시오. 또한 호스트 이름이 DNS에 존재하는지 확인하십시오.

Mailman은 많은 메일 서버(예: Postfix, Exim, Sendmail, Qmail)와 함께 사용할 수 있습니다. 이 튜토리얼에서는 Postfix를 사용할 것입니다. 예를 들어, 이 튜토리얼: Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail (Debian Squeeze)에서 보여준 것처럼 작동하는 Postfix 설치가 있는지 확인하십시오.

2. Mailman 및 Apache 설치

Mailman은 웹 프론트엔드를 제공하므로 Mailman 외에 웹 서버가 필요합니다. 저는 Apache를 선택했습니다. Mailman과 Apache는 다음과 같이 설치할 수 있습니다:

apt-get install mailman apache2

다음 질문/메시지가 표시됩니다:

지원할 언어: <– en (영어)
누락된 사이트 목록
Mailman은 비밀번호 알림 등이 발송되는 목록인 이른바 “사이트 목록”이 필요합니다. 이 목록은 Mailman이 시작되기 전에 생성되어야 합니다. 목록을 생성하려면 “newlist mailman”을 실행하고 화면의 지침을 따르십시오. 그 후에 /etc/init.d/mailman start를 사용하여 Mailman을 시작해야 합니다. <– 확인

Mailman은 /etc/mailman/apache.conf라는 Apache 구성 파일을 제공하며, 이를 /etc/apache2/sites-available/mailman.conf로 복사합니다:

cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman.conf

/etc/apache2/sites-available/mailman.conf를 열고…

vi /etc/apache2/sites-available/mailman.conf

… 다음 vhost 구성을 파일에 추가합니다(파일에는 주석 처리된 lists.example.net에 대한 vhost가 이미 있습니다. 그러나 제 vhost 구성은 약간 다르므로 해당 vhost를 사용하지 마십시오):

| [...] ServerName lists.example.com DocumentRoot /var/www/lists ErrorLog /var/log/apache2/lists-error.log CustomLog /var/log/apache2/lists-access.log combined Options FollowSymLinks AllowOverride None Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm ScriptAlias /create /usr/lib/cgi-bin/mailman/create ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo ScriptAlias /options /usr/lib/cgi-bin/mailman/options ScriptAlias /private /usr/lib/cgi-bin/mailman/private ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/ ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo |

마지막에서 두 번째 줄 ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo는 선택 사항입니다. 이는 http://lists.example.com/에 접근할 때 http://lists.example.com/listinfo로 리디렉션되도록 합니다. /var/www/lists의 문서 루트에 제공할 파일이 없다면 이 설정이 의미가 있습니다.

다음으로 문서 루트 /var/www/lists를 생성하고 lists.example.com vhost 구성을 활성화한 후 Apache를 재시작합니다:

mkdir /var/www/lists
a2ensite mailman.conf
/etc/init.d/apache2 restart

여기서 vhost를 사용하고 있으므로 /etc/mailman/mm_cfg.py에서 다음 변수를 조정해야 합니다:

vi /etc/mailman/mm_cfg.py

| [...] DEFAULT_URL_PATTERN = 'http://%s/' [...] DEFAULT_EMAIL_HOST = 'lists.example.com' [...] DEFAULT_URL_HOST = 'lists.example.com' [...] |

3. Postfix 구성

이제 Postfix를 구성해야 합니다. 먼저 다음을 실행합니다:

postconf -e ‘relay_domains = lists.example.com’
postconf -e ‘mailman_destination_recipient_limit = 1’

그런 다음 /etc/postfix/master.cf를 엽니다…

vi /etc/postfix/master.cf

… 그리고 다음 줄이 포함되어 있는지 확인합니다(기본적으로 있어야 합니다):

| [...] mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} [...] |

다음으로 lists.example.com 도메인을 mailman: transport에 연결해야 합니다. 이를 수행하는 방법은 Postfix 구성에 따라 다릅니다. 예를 들어, Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail (Debian Squeeze) 튜토리얼에 따라 서버를 설정한 경우, transports는 MySQL 데이터베이스에 저장됩니다. 대부분의 다른 설정에서는 /etc/postfix/transport 파일을 사용하여 transports를 생성합니다. 두 경우를 3.1 및 3.2 장에서 설명하겠습니다.

3.1 MySQL 데이터베이스의 Transports

Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail (Debian Squeeze) 튜토리얼에 따라 서버를 설정한 경우, transports는 mail MySQL 데이터베이스의 transport 테이블에 저장됩니다. 필요한 transport를 생성하려면 MySQL에 로그인합니다…

mysql -u root -p

… 다음 MySQL 명령을 실행합니다:

USE mail;
INSERT INTO transport (domain, transport) VALUES (‘lists.example.com’, ‘mailman:’);
quit;

그 후 Postfix를 재시작합니다:

/etc/init.d/postfix restart

3.2 /etc/postfix/transport의 Transports

MySQL 데이터베이스에 transport가 없는 경우, 아마도 /etc/postfix/transport 파일을 사용할 것입니다. 이 경우 필요한 transport를 다음과 같이 설정할 수 있습니다:

postconf -e 'transport_maps = hash:/etc/postfix/transport'

/etc/postfix/transport를 엽니다…

vi /etc/postfix/transport

… 다음 줄을 추가합니다:

| lists.example.com mailman: |

그 후

postmap -v /etc/postfix/transport

을 실행하고 Postfix를 재시작합니다:

/etc/init.d/postfix restart   

4. mailman 메일링 리스트 생성

Mailman 사용을 시작하기 전에 mailman이라는 메일링 리스트를 생성해야 합니다. 이는 필수입니다 - 없으면 Mailman이 시작되지 않습니다:

newlist --urlhost=lists.example.com --emailhost=lists.example.com mailman

대부분의 경우 –urlhost 및 –emailhost 스위치는 필요하지 않습니다. 왜냐하면 우리의 vhost는 이미 lists.example.com으로 명명되어 있고, /etc/mailman/mm_cfg.py에도 (DEFAULT_EMAIL_HOST 및 DEFAULT_URL_HOST) 포함되어 있기 때문입니다. 그러나 Mailman이 올바른 호스트 이름을 사용하도록 하려면 이러한 스위치를 사용하십시오.

root@server1:~# newlist –urlhost=lists.example.com –emailhost=lists.example.com mailman
리스트를 운영하는 사람의 이메일을 입력하세요: <– 리스트 관리자 이메일 주소를 지정하십시오, 예: [email protected]
초기 mailman 비밀번호: <– mailman_password
메일링 리스트 생성을 완료하려면 /etc/aliases (또는 동등한) 파일을 편집하여 다음 줄을 추가하고, 필요에 따라 newaliases 프로그램을 실행해야 합니다:

mailman 메일링 리스트

mailman: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”

mailman 소유자에게 알리려면 Enter를 누르십시오… <– ENTER

root@server1:~#

이제 /etc/aliases를 열고 newlist 명령의 출력에서 볼 수 있는 별칭을 추가합니다(이는 생성하는 각 새 리스트에 대해 수동으로 수행해야 합니다):

vi /etc/aliases

| [...] ## mailman 메일링 리스트 mailman: "|/var/lib/mailman/mail/mailman post mailman" mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/var/lib/mailman/mail/mailman join mailman" mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" mailman-request: "|/var/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" |

/etc/aliases를 수정할 때마다

newaliases
/etc/init.d/postfix restart

를 실행해야 합니다.

이제 드디어 Mailman을 시작할 수 있습니다:

/etc/init.d/mailman start

root@server1:~# /etc/init.d/mailman start
Mailman 마스터 qrunner 시작: mailmanctl.
root@server1:~#

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.