2008. 9. 18.

큐메일 서버 구축 #5-2 - vpopmail + mysql 설치

이 강좌는 vpopmail의 도메인과 사용자를 mysql database에서 관리하는 방법 입니다.
2003년에 작성된 강좌라 비공개로 해두었는데, 생각보다 많은 분들께서 강좌를 공개해달라고
이메일과 쪽지로 연락을 주시기에 다시 강좌로 쓰게 되었습니다.
예전에는 mysql을 연동하는 방법이 꽤 귀찮은 작업이 많았는데, vpopmail의 버전이 5.4로
올라오면서 기존 roaming을 이용하는 방법과 크게 다른 작업을 하실 내용이 없습니다.
거의 대부분의 내용이 중복되는 사항이니 어쩌면 '뭐가 달라?' 라고 하시는 분이 계실지도 모르겠습니다.
다만 주의사항이 있다면 vpopmail을 설치하기 전에 mysql이 먼저 설치가 되어 있어야 됩니다.

1. 유저, 그룹 추가
vpopmail 운영을 위한 유저와 그룹을 생성하셔야 됩니다.
※ 아래 -r 옵션은 시스템 계정(uid 500미만)으로 유저를 생성하겠다는 의미 입니다.
[root@localhost]# groupadd -r vchkpw
[root@localhost]# useradd -r -g vchkpw vpopmail
[root@localhost]# mkdir -p /home/vpopmail/etc/
[root@localhost]# chmod 755 /home/vpopmail

※ vpopmail의 기본디렉토리는 /home/vpopmail/ 입니다.

2. vpopmail 설치 (최신버전: http://sourceforge.net/projects/vpopmail/)
[root@localhost]# chmod 777 /home/vpopmail/etc/
[root@localhost]# touch /home/vpopmail/etc/tcp.smtp
[root@localhost]# wget http://nchc.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.17.tar.gz
[root@localhost]# tar xfz vpopmail-5.4.17.tar.gz
[root@localhost]# cd vpopmail-5.4.17
[root@localhost]# ./configure \
--enable-roaming-users=y \
--enable-tcprules-prog=/usr/local/bin/tcprules \
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
--enable-relay-clear-minutes=15 \
--enable-auth-logging=y \
--enable-logging=e \
--enable-auth-module=mysql
[root@localhost]# make
[root@localhost]# make install-strip
[root@localhost]# chmod 755 /home/vpopmail/etc/
[root@localhost]# chown vpopmail.vchkpw /home/vpopmail/etc/

※ 위 configure 옵션으로 pop3 인증후 15분동안 아무런 서버 사용이 없으면 자동으로 relay를 닫아
open relay가 되어 스패머들의 타겟이 되는것을 막도록 합니다.
그리고 tcp.smtp 릴레이 파일을 임시생성하는 이유는 위 옵션에 파일경로를 지정해줬기 때문입니다.
자동설정을 사용하지 않고 굳이 tcpserver-file 경로를 지정해주는 이유는 아무런 옵션이 없는 경우
시스템에서 자동으로 찾게 되는데, 이런 경우 /etc/tcp.smtp를 대부분 찾기 때문 입니다.

그리고 mysql을 소스컴파일 설치한 경우 mysql library를 못찾는 머신이 있을겁니다.
그런 경우에는 아래와 같이 library option을 추가로 넣어주시면 됩니다.
--enable-incdir=/mysql/path/to/include \
--enable-libdir=/mysql/path/to/lib


3. mysql db 추가
[root@localhost]# mysql -u root -p mysql
mysql> create database vpopmail;
mysql> insert into user (host, user, password) values('localhost','vpopmail',password('1234'));
mysql> insert into db values('localhost','vpopmail','vpopmail','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

※ 위 insert문은 mysql 5.0 기준이므로, db 추가는 데이터베이스 강좌를 참조하시기 바랍니다.

4. 기본 도메인 설정, MySQL 설정, SMTP 릴레이 설정
vpopmail 5.2.4 버전부터는 기본도메인 설정옵션인 --enable-default-domain이 사라지고
~vpopmail/etc/defaultdomain 에서 관리되며, vpopmail 5.4.x 버전부터는 mysql과 연동시 했던
기존 vmysql.c 파일을 수정하던 작업이 사라지고 ~vpopmail/etc/vpopmail.mysql에서
mysql의 관련 정보를 적용시킬 수 있습니다.
[root@localhost]# echo "foobar.com" > /home/vpopmail/etc/defaultdomain
[root@localhost]# chown vpopmail.vchkpw /home/vpopmail/etc/defaultdomain
[root@localhost]# chmod 640 /home/vpopmail/etc/defaultdomain
[root@localhost]# vi /home/vpopmail/etc/vpopmail.mysql
localhost|0|vpopmail|1234|vpopmail
[root@localhost]# chmod 640 /home/vpopmail/etc/vpopmail.mysql
[root@localhost]# vi /home/vpopmail/etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
192.168.0.2:allow,RELAYCLIENT=""
[root@localhost]# chmod 640 /home/vpopmail/etc/tcp.smtp
[root@localhost]# /home/vpopmail/bin/clearopensmtp

※ 위에서 clearopensmtp를 해주는 이유는 tcp.smtp를 이용해 tcp.smtp.cdb 파일을 생성하기 위함입니다.

5. crontab 설정
clearopensmtp를 자동으로 한번씩 실행해주기 위해 crond 데몬을 이용 합니다.
필자는 15분에 한번씩 실행되도록 설정하겠습니다.
[root@localhost]# crontab -e
*/15 * * * * /home/vpopmail/bin/clearopensmtp


6. qmail smtp 스크립트 변경
tcp.smtp 파일이 변경되었으므로 qmail을 설치할 때 작성한 run script중 하나를 수정해줘야 됩니다.
[root@localhost]# vi /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
Q_UID=`id -u qmaild`
Q_GID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -vRHl 0 \
-x /home/vpopmail/etc/tcp.smtp.cdb \ <--- 이부분
-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1


6. vpopmail을 위한 디렉토리와 스크립트 생성
[root@localhost]# mkdir /var/qmail/supervise/vpop
[root@localhost]# vi /var/qmail/supervise/vpop/run
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`

exec /usr/local/bin/softlimit -m 2500000 \
tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \
/var/qmail/bin/qmail-popup foobar.com \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
[root@localhost]# chmod 755 /var/qmail/supervise/vpop/run


7. 도메인과 메일계정 생성
[root@localhost]# /home/vpopmail/bin/vadddomain foobar.com
[root@localhost]# /home/vpopmail/bin/vadduser webmaster@foobar.com 1234

※ vadddomain실행시 나오는 패스워드는 qmailadmin에서 사용할 비밀번호 입니다.
또한 vadddomain [도메인] [postmaster 비밀번호] 로도 사용가능합니다.
vadduser 사용법은 vadduser [메일계정] [비밀번호] 입니다.

댓글 없음: