4. vpopmail 설치

vpopmail 은 가상 도메인 추가, 설정, pop 유저 설정과 pop3 데몬등의 기능을 한다.

4.1. vpopmail 계정 추가

vpopmail이 제대로 작동하려면 vpopmail 이 사용할 유저와 그룹을 만들어야 한다.

groupadd vchkpw
useradd -g vchkpw vpopmail

이때 생성되는 vpopmail 홈 디렉토리에는 앞으로 추가할 도메인들의 모든 이메일 계정, 이메일들이 저장될 곳이므로, 공간이 넉넉한 파티션을 고르는 것이 좋겠다. 다른 파티션을 사용할 것이라면 다음과 같이 할수 있다.

useradd -g vchkpw -d /원하는/파티션의/디렉토리를/지정 vpopmail

4.2. smtp 릴레이 설정

vpopmail의 로밍서비스는 고정되어 있지 않은 IP사용자들이 smtp 릴레이를 원할때 사용할수 있는 기능이다. vpopmail은 먼저 POP 메일 유저의 암호를 확인한다음 얼마만큼의 시간동안 그 IP주소의 smtp 릴레이를 열어 놓게 된다. 사용자들에게 vpopmail의 로밍서비스를 이용한 smtp 릴레이를 허용할 것 이라면 다음과 같이 tcp.smtp 파일을 하나 만들어 둔다.

echo "127.0.0.:allow,RELAYCLIENT=\"\"" > ~vpopmail/etc/tcp.smtp

이것은 가장 기본적인 설정이며, 다음과 같이 고정 IP(또는 대역)를 추가할수도 있다. 다음의 설정은 C class 10.1.1.x 대의 IP 주소로 부터의 릴레이를 허용한다.

echo "10.1.1.:allow,RELAYCLIENT=\"\"" >> ~vpopmail/etc/tcp.smtp

마지막으로 crontab을 하나 설정해야 하는데, 이것은 주기적으로 열려 있는 릴레이 주소들중 3시간 이상된것들만 지워준다. 기본 3시간으로 설정되어 있는데, 이것은 vpopmail 설정 옵션중 --enable-relay-clear-minutes= 으로 바꿔줄수 있다.

# crontab -e
40 * * * * /vpopmail-디렉토리/bin/clearopensmtp 2>&1 > /dev/null

이 로밍 서비스를 사용할 것이라면 밑에 컴파일시 ./configure 설정 옵션에 --enable-roaming-users=y 를 잊지 말고 넣어주어야 한다!

또한 qmail 시동 스크립트도 다음과 같이 vpopmail에서 조정하는 tcp.smtp 파일을 사용해야 하므로 다음과 같이 달라져야 한다.

/var/qmail/supervise/qmail-smtpd/run 의 내용

#!/bin/sh
ALIAS_UID=`id -u alias`
ALIAS_GID=`id -g alias`
exec /usr/local/bin/softlimit -m 2000000 \
	/usr/local/bin/tcpserver -H -R -x /vpopmail 디렉토리/etc/tcp.smtp.cdb \
	-u $ALIAS_UID -g $ALIAS_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1

4.3. 컴파일

이제 vpopmail 을 설치하자.

tar xzf vpopmail-4.9.tar.gz
cd vpopmail-4.9

MySQL 사용하지 않을 경우

sql를 사용하지 않는다면 보통 다음 옵션만 주고 컴파일 하면 된다.

./configure --enable-default-domain=babo.org
make
make install-strip

MySQL을 사용 할 경우

MySQL db를 사용하려 한다면, 컴파일 하기전에 먼저 vmysql.h 를 열어서 sql 서버를 억세스 할수 있는 user와 암호등을 설정해주어야 한다. 테이블을 생성/삭제 할수 있는 사용자 이여야 하므로 보통 root 나 해당 유저로 설정해 준다.

./configure --enable-default-domain=babo.org --enable-mysql=y
make
make install-strip

이때 --enable-large-site=n|y 옵션을 사용할수도 있는데 이것은, 디폴트로 vpopmail은 모든 도메인, 유저 정보를 한개의 테이블에서 관리한다. 만약 각각의 도메인에 매우 많은 메일유저가 있다면 y 로 설정하면, vpopmail은 도메인별로 테이블을 생성,유저정보를 관리한다.

만약 sql 헤더파일이나 라이브러리를 찾지 못한다며 컴파일에 실패한다면, --enable-sqlincdir= sql 헤더파일 경로. --enable-sqllibdir= sql 라이브러리 경로 등을 ./configure 할때 추가 해준다.

위의 예에서 babo.org 는 주 서버의 도메인 이름이다. 이것을 설정하면 주서버의 메일 계정도 모두 가상 도메인의 메일 계정과 동일하게 관리 할수 있다. (이렇게 하는 것을 권장한다)

설치가 되었다면 ~vpopmail 안에는

bin
doc
domains
etc
include
lib
users
등의 디렉토리과 필요한 바이너리들이 생겼을 것이다.

4.4. pop3 데몬 시동 파일

vpopmail 의 pop3 데몬 시동 파일을 만들자.

#!/bin/sh
env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver 0 pop-3 /var/qmail/bin/qmail-popup babo.org \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &

babo.org 는 주서버의 도메인이다. vpopmail 설치시 --enable-default-domain 를 주고 설치했다면 더 안전하게 pop3 데몬을 vpopmail 유저 권한으로 실행시킬수 있다.

#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
env - PATH="/var/qmail/bin:/usr/local/bin" \
tcpserver -u $VPOP_UID -g $VPOP_GID 0 pop-3 /var/qmail/bin/qmail-popup babo.org \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &

위 와 같이 만든 시동파일을 vpop3_start 등의 이름으로 저장후, 실행 퍼미션을 주고 부팅시 실행되도록 /etc/rc.d/rc.local 등에 적어 놓는다.

4.5. 도메인, 메일 계정 추가하기

~vpopmail/bin 디렉토리 안에 가상 도메인 관리를 위한 바이너리들이 있는데 다음과 같은 기능을 한다.

표 1. 각 바이너리들의 용도

vadddomain가상 도메인을 추가한다. postmaster 암호를 물어보는데 이것은 다음에 설치할 qmailadmin 웹 인터페이스에서 로그인 할때 물어볼 암호이다. 형식은 vadddomain 도메인명
vdeldomain가상 도메인과 모든 유저를 삭제한다. vdeldomain 도메인명
vadduserpop 메일 유저 계정을 만든다. vadduser babo@babo.org
vdeluserpop 메일 유저 삭제. vdeluser babo@babo.org
vpasswd메일 유저의 암호 바꾸기. vpasswd babo@babo.org
vsetuserquota각 유저 별로 quota 설정을 할수 있다. vsetuserquota babo@babo.org 51200 (단위는 byte 이다).
vpopbull서버에 설정되어 있는 모든 유저들에게 한번에 메일을 보낼때 유용하게 사용할수 있다.

이제 도메인을 추가하자. 위에서 주 도메인도 vpopmail에서 관리하기로 했다면 주 도메인과 메일 계정들도 추가해야 한다.

만약 주 도메인이 babo.org 이고, 추가할 가상 도메인이 babo1.org, babo2.org 라고 한다면 다음과 같이 한다 (추가하기 전에 가상 도메인들의 DNS MX 레코드의 IP주소가 주 서버로 되어있는지 확인 해보자).

adddomain babo.org
adddomain babo1.org
adddomain babo2.org

다음 qmail 설정 파일들이 제대로 바뀌었는지 확인해보자. 주 도메인도 vpopmail이 관리하기로 했다면 /var/qmail/control/locals 파일의 내용은 localhost 만이 있어야 정상이다. qmail smtpd가 이 서버의 것이라고 인식하며 메일을 수신할 도메인들은 다음과 같이 rcpthosts 에 저장될 것이다.

localhost
babo.org
babo1.org
babo2.org

virtualdomains 파일의 내용은

babo.org:babo.org
babo1.org:babo1.org
babo2.org:babo2.org

/var/qmail/users/assign 의 내용은

+babo.org-:babo.org:512:507:/home/vpopmail/domains/babo.org:-::
+babo1.org-:babo1.org:512:507:/home/vpopmail/domains/babo1.org:-::
+babo2.org-:babo2.org:512:507:/home/vpopmail/domains/babo2.org:-::
.

필요한 도메인, 메일 계정을 모두 추가했다면 우리는 이제 준비가 끝난 셈이다.