서버 설정 · 6 min read · Sep 26, 2025

Debian Squeeze에 iRedMail 및 Mailman 설치하기

Debian Squeeze에 iRedMail 및 Mailman 설치하기

버전: 1
저자: Jason Norwood-Young
최종 수정: 2011년 12월 22일

저는 iRedMail의 열렬한 팬입니다. iRedMail은 기본적으로 Postfix와 Spamassassin, 회색 목록 및 LDAP 또는 MySql 백엔드와 같은 Postfix를 멋지게 만드는 다른 구성 요소의 패키지 버전입니다. iRedMail에서 제가 원하는 한 가지는 제가 가장 좋아하는 메일링 리스트 서버인 Mailman입니다. 두 가지를 통합하는 것은 어려운 작업일 수 있으므로, 여러분의 고통을 덜어줄 수 있는 몇 가지 지침을 제공하겠습니다.

iRedMail 팀은 사용자 계정을 관리하기 위한 무료 관리 콘솔을 제공합니다. 저는 고객이 스스로 관리할 수 있도록 매우 유용한 iRedMail의 Pro 버전 관리 콘솔을 구독하고 있습니다. 저는 고객 외에는 iRedMail과 관련이 없습니다.

1. 서버 설정하기

저는 깨끗한 Debian Squeeze 설치에 설치하고 있습니다. 새로운 서버에서 항상 가장 먼저 하는 일은:

apt-get update   
apt-get upgrade   
dpkg-reconfigure tzdata

마지막 줄은 시간대를 설정할 수 있게 해줍니다. 우리의 목적에는 엄격히 필요하지 않지만, 이를 설정하는 것이 좋은 관행이라고 생각합니다.

이제 완전한 도메인 이름(FQDN)을 설정해야 합니다. 즉, mailserver 대신 mailserver.example.com과 같은 도메인이 필요합니다. 호스트 이름이 무엇인지 확인하려면 다음을 입력하세요:

hostname -f

참고: 선택한 도메인 이름은 사용하려는 이메일 도메인과 달라야 합니다. 이메일이 [email protected]에서 오기를 원한다면 서버 이름을 example.com으로 설정하지 마십시오. obiwan 또는 captainkirk와 같은 하위 도메인을 부여하거나(저처럼 지루하다면) mailserver로 설정하세요.

이미 FQDN이 있는 경우 2단계로 넘어갈 수 있습니다.

도메인 이름은 두 곳에 설정됩니다: /etc/hostname 및 /etc/hosts.

/etc/hostname을 편집하여 FQDN을 포함하도록 하세요(이 튜토리얼의 목적을 위해 mailserver.example.com을 사용할 것입니다).

/etc/hosts 파일의 첫 번째 줄은 다음과 같아야 합니다:

127.0.0.1     mailserver.example.com mailserver localhost localhost.localdomain

이제 시스템에 변경 사항을 등록하라고 지시해야 합니다:

/etc/init.d/hostname.sh   
hostname -f

이제 FQDN을 볼 수 있어야 합니다. 그렇지 않다면 당황하지 마세요! 음, 다시 부팅하고 다시 확인하세요.

2. iRedMail 설치하기

작성 시점에서 iRedMail 버전은 0.7.3입니다. 최신 버전은 www.iredmail.org에서 확인하고 그에 따라 조정하세요.

cd ~   
wget http://iredmail.googlecode.com/files/iRedMail-0.7.3.tar.bz2   
apt-get install bzip2   
tar xjf iRedMail-0.7.3.tar.bz2   
cd iRedMail-0.7.3   
bash iRedMail.sh

iRedMail은 필요한 모든 것을 설치합니다. 백엔드를 LDAP 대신 MySql로 선택하는 것을 제외하고 모든 기본값을 수락하세요. 첫 번째 가상 메일 도메인에 대해 example.com을 입력하고 mailserver.example.com은 입력하지 마세요. 프롬프트가 나타날 때마다 예라고 대답하세요.

이제 멋진 메일 서버가 생겼습니다! 쉽죠?

3. Mailman 설치하기

먼저 Mailman을 설치합니다:

apt-get install mailman

Mailman은 아직 시작되지 않는다는 점에 유의하세요. 먼저 Postfix에 특정 주소에서 메일을 수신할 때 Mailman으로 메일을 보내도록 지시해야 합니다.

4. 전송 및 별칭 계정 설정하기

우리는 lists.example.com이라는 가상 도메인을 생성할 것입니다. 이 도메인은 모든 Mailman 관련 작업에 사용할 것입니다. lists.example.com 도메인으로 전송되는 모든 것은 일반 메일처럼 처리하는 대신 Mailman 프로그램으로 전달할 것입니다.

우리는 메일링 리스트가 lists.example.com 도메인에 있기를 원하지 않고 단지 example.com에 있기를 원하므로, example.com의 Mailman 주소로 전송된 메일을 수락하고 대신 lists.example.com으로 라우팅하기 위해 여러 개의 별칭을 설정할 것입니다.

이 모든 작업은 MySql 데이터베이스를 통해 수행할 것입니다. 브라우저를 https://example.com/phpmyadmin에 가리키세요. https이고 단순한 http가 아님을 주의하세요. 또한 IP 주소를 가리키는 이름 서버가 없다면, 로컬 컴퓨터의 /etc/hosts 파일에 example.com을 추가해야 할 수도 있습니다.

사용자 root와 iRedMail 설치 중에 선택한 비밀번호로 로그인하세요. 세부 정보를 기억할 수 없다면 ~/iRedMail-0.7.3/iRedMail.tips를 확인하세요. iRedMail은 모든 iRedMail 서비스의 위치, 사용자 이름 및 비밀번호를 편리하게 저장합니다.

왼쪽 패널에서 “vmail” 데이터베이스를 클릭한 다음 “SQL” 탭을 클릭하세요. 다음 명령을 탭에 붙여넣고(물론 도메인을 자신의 것으로 변경한 후) 실행하세요:

INSERT INTO `vmail`.`domain` (`domain`, `description`, `disclaimer`, `aliases`, `mailboxes`, `maxquota`, `quota`, `transport`, `backupmx`, `defaultuserquota`, `defaultuseraliases`, `defaultpasswordscheme`, `minpasswordlength`, `maxpasswordlength`, `created`, `modified`, `expired`, `active`) VALUES ('lists.example.com', '', '', '0', '0', '0', '0', 'mailman:', '0', '1024', '', '', '0', '0', NOW(), '0000-00-00 00:00:00', '9999-12-31 00:00:00', '1');

이것은 lists.example.com에서 Mailman 앱으로 모든 것을 가져오는 전송을 설정했습니다.

이제 Mailman 별칭을 추가해야 합니다. 새 목록을 Mailman에 추가할 때마다 이 작업을 수행해야 하며, “mailman”을 새 목록 이름으로 검색 및 교체하고 SQL을 다시 실행하세요.

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

5. Postfix 설정하기

명령줄로 돌아갑니다. 다음을 실행해야 합니다:

postconf -e 'relay_domains = lists.example.com'   
postconf -e 'mailman_destination_recipient_limit = 1'   
/etc/init.d/postfix reload

6. 회색 목록 비활성화하기

이제 회색 목록을 비활성화하고 싶을 것입니다. 회색 목록은 새로운 발신자로부터 수신한 모든 메일을 단순히 반환합니다. 발신자가 잠시 후 다시 보내려고 하면, 아마도 스팸 봇이 아닐 것입니다. 스팸을 차단하는 데 매우 효과적이지만, 누군가가 메일을 보내고 수신하는 사이에 지연이 발생할 수 있습니다. Mailman의 경우, Mailman으로의 메시지가 한 시간 지연되면 시스템이 반응하지 않는 것처럼 느껴질 수 있습니다 - 특히 새로운 구독자에게 그렇습니다. 또한 테스트가 번거로워집니다. 비활성화할 필요는 없지만, 다음 단계는 선택 사항입니다.

/etc/postfix-policyd.conf를 편집하세요:

[...]
GREYLISTING=0
[...]

이제 Postfix 정책을 다시 시작하세요:

/etc/init.d/postfix-policyd restart

7. Mailman 구성하기

Mailman에 @lists.example.com 대신 @example.com에서 메일을 보내도록 지시할 것입니다. 그러나 보내는 모든 링크는 lists.example.com 도메인에서 와야 합니다. 이는 Mailman 전용 가상 도메인을 설정할 것이기 때문입니다.

pico /etc/mailman/mm_cfg.py
[...]
DEFAULT_URL_PATTERN = 'http://%s/'
[...]
DEFAULT_EMAIL_HOST = 'example.com'
[...]
DEFAULT_URL_HOST = 'lists.example.com'

8. Apache 구성하기

거의 다 왔습니다. lists.example.com으로 이동할 때 Mailman 웹사이트를 제공하도록 Apache 서버를 구성해야 합니다. 이 도메인을 /etc/hosts 또는 이름 서버에 설정하는 것을 잊지 마세요.

pico /etc/apache2/sites-available/mailman
ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/

    AllowOverride None
    Options ExecCGI
    AddHandler cgi-script .cgi
    Order allow,deny
    Allow from all
    Satisfy Any


    Options FollowSymlinks
    AllowOverride None
    Order allow,deny
    Allow from all


    AllowOverride None
    Order allow,deny
    Allow from all


    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

이제 이 가상 호스트를 활성화하기만 하면 됩니다.

a2ensite mailman   
mkdir /var/www/lists   
apache2ctl restart

9. 첫 번째 리스트 만들기

첫 번째 Mailman 리스트는 항상 “mailman”입니다. 이 리스트를 만들려면 다음을 실행하세요:

newlist mailman

관리자의 이메일 주소와 비밀번호를 입력하세요. 관리자에게 알리기 위해 Enter를 누르라는 메시지가 표시됩니다. 이 작업을 수행하면 즉시 이메일을 받지 않을 것입니다. 한 가지 단계를 더 수행해야 합니다:

/etc/init.d/mailman start

이 작업을 수행하면 리스트 관리자가 새 리스트의 관리 인터페이스에 대한 링크가 포함된 이메일을 받아야 합니다.

이것이 작동하면 구독 테스트도 해보세요(빈 메일을 [email protected]로 보내세요). 구독 확인 메일을 받고 링크를 클릭할 수 있다면, 대부분 모든 것이 100% 작동하고 있는 것입니다. 그렇지 않다면 당황하지 마세요! /var/log/mail.log를 확인하여 무엇이 잘못되었는지 알아보세요.

힌트: 메일 로그를 주시하려면 다음을 사용하세요:

tail -f /var/log/mail.log

Mailman 리스트를 다시 생성해야 하는 경우, 먼저 다음을 실행하세요:

rmlist mailman

10. 더 많은 리스트 만들기

“listname”이라는 리스트를 만들려면, 먼저 MySql vmail 데이터베이스의 별칭 테이블에 새 리스트의 별칭을 추가하세요:

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

작업이 완료되면 이 명령을 실행하여 새 리스트를 만드세요:

newlist listname

새로운 Mailman 서버로 즐거운 시간을 보내세요! 훌륭한 이메일 커뮤니티를 만드시길 바랍니다.

Share: X/Twitter LinkedIn

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

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