Qmail + Vpopmail + MySQL ???

글쓴이:Aki_Rose

Aki_Rose
http://www.nweaver.com

### 1. Qmail + Vpopmail + MySQL 설치

조민기 (akirose@iz4u.com) 2003/11/10

테스트환경 : Redhat 7.3 , Kernel 2.4.21

이 문서는 RedHat Linux 7.3을 기반으로 설명하였습니다.

Qmail 설치하기가 여간 힘든게 아니죠? 저도 처음에 좌절과 쓴맛을 보았고 많은 분들이 그러셧으리라 생각됩니다. 제가 설치해본 결과 vpopmail의 설치미스 또는 실행스크립트가 대부분 이더군요. 이 문서를 참고 하셔서 꼭 성공하시기를 빕니다. _(_ _)_

다음과 같은 소스를 준비합니다.
http://webmail.kldp.org/qmail/qmail-1.03.tar.gz
http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
http://kldp.org/~eunjea/qmail/patch/mysql/qmail-ej-cocktail-10+mysql-0.7.4.patch

1.Qmail에 필요한 유저 , 그룹을 추가합니다.

groupadd -f -g nofiles
useradd -c “Mail Server” -g nofiles -u 81 -s /bin/false -r -d /var/qmail qmaild
useradd -c “Mail Server” -g nofiles -u 86 -s /bin/false -r -d /var/qmail qmaill
useradd -c “Mail Server” -g nofiles -u 82 -s /bin/false -r -d /var/qmail/alias alias
useradd -c “Mail Server” -g nofiles -u 87 -s /bin/false -r -d /var/qmail qmailp
groupadd -f -g qmail
useradd -c “Mail Server” -g qmail -u 83 -s /bin/false -r -d /var/qmail qmailq
useradd -c “Mail Server” -g qmail -u 84 -s /bin/false -r -d /var/qmail qmailr
useradd -c “Mail Server” -g qmail -u 85 -s /bin/false -r -d /var/qmail qmails

2.SSL의 설치
OpenSSL을 최신버전의 RPM을 구하여 설치합니다. (http://rpmfind.net)

3.Qmail 패치
일단 qmail 소스의 압축을 풀어줍니다.
$ tar -zxvf qmail-1.03.tar.gz
$ cd qmail-1.03

미리 준비한 임은재님의 칵테일 패치를 적용합니다.
$ patch -p1 < ../qmail-ej-cocktail-10+mysql-0.7.4.patch $ make
$ make setup check

$ ./config-fast nweaver.com
위 명령에서 뒤의 nweaver.com은 qmail에서 사용할 기본 도메인을 지정하여 주는 것입니다. 각자 사용하실 기본 도메인을 적어주시면 됩니다.
위의 명령이 제대로 되었다면 /var/qmail/control/ 안에 qmail이 정상적으로 작동하기 위한 설정 파일들이 생성됩니다. 만약 그렇지 않다면 서버의 DNS 설정(MX 레코드)에 문제가 있는 것입니다.

4.Qmail에 필요한 패키지들 설치 (ucspi-tcp , daemontools)
[ucspi-tcp]
$ tar xzf ucspi-tcp-0.88.tar.gz
$ cd ucspi-tcp-0.88
$ make
$ make setup check
$ chmod 0510 /usr/bin/tcpserver
$ chmod 0510 /usr/bin/tcpclient

[daemontools]
$ mkdir /usr/package
$ chmod 1755 /usr/package
$ tar -zxvf daemontools-0.76.tar.gz -C /usr/package/
$ cd /usr/package/admin/daemontools-0.76/
$ package/install

5.Vpopmail 설치
vpopmail에 필요한 그룹과 유저를 추가합니다.
$ groupadd vchkpw
$ useradd -g vchkpw -d /home/mail vpopmail

vpopmail 소스
http://inter7.com/vpopmail/vpopmail-5.2.1.tar.gz

소스의 압축을 해재합니다.
$ tar -zxvf vpopmail-5.2.1.tar.gz
$ cd vpopmail-5.2.1

[*] 선택사항 ############################################################
아래 패치는 vmysql.h 파일을 편집하여 mysql의 정보를 컴파일 하지 않고 설정파일로 사용할 수 있게 하는 패치 입니다. 패치를 적용하게 되면 vpopmail의 홈디렉토리에 ‘mysqlconn.dat’라는 파일을 생성하신 후 파일 안에 다음과 같은 형태의 택스트를 저장하면 됩니다.
MYSQL_SERVER|MYSQL_USER|MYSQL_PASSWORD|MYSQL_DATABASE|
예제) localhost|test|test1234|test|
————————————————————————
http://kldp.org/~eunjea/qmail/patch/vpopmail/vpopmail-5.2.1-vmysql.patch
————————————————————————
만약 이 패치를 적용하고 mysqlconn.dat 파일을 생성하셧다면 다음과 같이 권한을 설정합니다.
$ chown root.vchkpw ~vpopmail/mysqlconn.dat
$ chmod 640 ~vpopmail/mysqlconn.dat
#########################################################################

위 패치를 적용하지 않으셧다면 소스에서 vmysql.h 파일의 다음과 같은 내용을 수정하여야 합니다.

#define MYSQL_UPDATE_SERVER “localhost”
#define MYSQL_UPDATE_USER “vpopmail”
#define MYSQL_UPDATE_PASSWD “secret”

#define MYSQL_READ_SERVER “localhost”
#define MYSQL_READ_USER “vpopmail”
#define MYSQL_READ_PASSWD “secret”

#define MYSQL_VPORT 0
#define MYSQL_DEFAULT_TABLE “vpopmail”
#define MYSQL_DATABASE “vpopmail”
#define MYSQL_DOT_CHAR ‘_’
#define MYSQL_LARGE_USERS_TABLE “users”

위에 적은 정보를 바탕으로 mysql에 vpopmail에 사용할 DB와 계정을 등록해 두어야 합니다. 필자는 vpopmail 이라는 DB와 계정을 만들었습니다. 테이블은 만들지 않아도 됩니다.
mysql -u root -p 디비루트비번
CREATE DATABASE vpopmail;
use mysql;
grant CREATE,INSERT,SELECT,DELETE,UPDATE on vpopmail.* to vpopmail;
grant CREATE,INSERT,SELECT,DELETE,UPDATE on vpopmail.* to vpopmail@localhost;
set password for ‘vpopmail’@’%’=password(‘패스워드’);
set password for ‘vpopmail’@’localhost’=password(‘패스워드’);
flush privileges

그리고 설치에 앞서 vpopmail의 홈 폴더에 etc폴더를 미리 만들어줍니다.
미리 만들어두지 않으면 inc_deps , lib_deps 파일이 생성되지 않습니다.
mkdir -p ~vpopmail/etc
chmod 777 ~/vpopmail/etc

[*] 설치 ————————————————–
$ ./configure –enable-default-domain=nweaver.com
–enable-mysql=y
–enable-roaming-users=y
–enable-tcprules-prog=/usr/local/bin/tcprules
———————————————————–
[#] 설정이 끝나면 한가지 확인할 것이 있습니다.
설정이 끝났다면 config.h 라는 파일이 생성되어 있을 것입니다. 이 파일을 열어서 다음 사항을 확인합니다.
가끔 아래의 라인이 #define TCP_FILE “/etc/tcp.smtp” 라고 되어 있는 경우가 있는데 이런 경우 아래와 같이 수정합니다.
–> #define TCP_FILE “/home/vpopmail/etc/tcp.smtp”
———————————————————–

[#] 컴파일
$ make
$ make install-strip
———————————————————–

[#] tcprule 파일 생성
/home/vpopmail/etc/tcp.smtp를 다음과 같이 생성
———————————————————–
127.0.0.1:allow,RELAYCLIENT=””
———————————————————–
$ chown vpopmail.vchkpw ~vpopmail/etc/tcp.smtp
$ ~vpopmail/bin/clearopensmtp

[#] 크론탭에 다음과 같은 내용 등록
$ crontab -e
40 * * * * /home/vpopmail/bin/clearopensmtp

[#] cdb 파일 생성
$ tcprules ~vpopmail/etc/tcp.smtp.cdb ~vpopmail/etc/tcp.smtp.tmp < ~vpopmail/etc/tcp.smtp
———————————————————–

6.실행스크립트 생성
/var/qmail/rc를 아래와 같은 내용으로 생성
———————————————–
#!/bin/bash
exec env – PATH=”/var/qmail/bin:$PATH”
qmail-start ./Maildir/
———————————————–

$ mkdir -p /var/qmail/supervise/qmail-send/log
$ mkdir -p /var/qmail/supervise/qmail-smtpd/log
$ chmod +t /var/qmail/supervise/qmail-send
$ chmod +t /var/qmail/supervise/qmail-smtpd

/var/qmail/supervise/qmail-send/run를 아래와 같은 내용으로 생성
———————————————–
#!/bin/sh
exec /var/qmail/rc
———————————————–

/var/qmail/supervise/qmail-send/log/run를 아래와 같은 내용으로 생성
———————————————–
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill
/usr/local/bin/multilog t /var/log/qmail
———————————————–

/var/qmail/supervise/qmail-smtpd/run를 아래와 같은 내용으로 생성
—————————————————————————–
#!/bin/sh
Q_UID=`id -u vpopmail`
Q_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 7340032
/usr/local/bin/tcpserver -vRH -l 0 -x /home/vpopmail/etc/tcp.smtp.cdb
-u $Q_UID -g $Q_GID 0 25
/var/qmail/bin/qmail-smtpd nweaver.com
/home/vpopmail/bin/vchkpw /bin/true 2>&1
—————————————————————————–

/var/qmail/supervise/qmail-smtpd/run를 아래와 같은 내용으로 생성
—————————————————
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill
/usr/local/bin/multilog t /var/log/qmail/smtpd
—————————————————

[#] vpopmail 실행스크립트
mkdir /var/qmail/supervise/vpop

/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 nweaver.com
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
——————————————————————————

생성한 스크립트 파일들의 퍼미션 변경
$ chmod 755 /var/qmail/supervise/qmail-send/run
$ chmod 755 /var/qmail/supervise/qmail-send/log/run
$ chmod 755 /var/qmail/supervise/qmail-smtpd/run
$ chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
$ chmod 755 /var/qmail/supervise/vpop/run

임은재님이 만드신 실행 스크립트를 가져옵니다.
$ cd /etc/rc.d/init.d/
$ wget http://kldp.org/~eunjea/qmail-startup.txt
$ mv qmail-startup.txt qmail
$ chmod 755 qmail
$ chkconfig –add qmail
$ chkconfig –level 345 qmail on

Sendmail을 사용하기 위해서 링크를 생성합니다.
$ ln -s /var/qmail/bin/sendmail /usr/lib
$ ln -s /var/qmail/bin/sendmail /usr/sbin

7.로그기록폴더 생성
mkdir -p /var/log/qmail/smtpd
chown qmaill /var/log/qmail /var/log/qmail/smtpd

[!] 서비스 시작
$ service qmail start
$ ln -s /var/qmail/supervise/vpop /service

처음쓰는 글이고 글재주가 부족하여 설명도 부족하고 부족한 점이 많습니다. 제가 하루종일 설치하며 실패하며 얻은결과이며 성공하기까지의 과정입니다.

다음번은 courier-imap, qmailadmin, SquirrelMail, Procmail의 설치를 다루도록 하겠습니다.

imcrazy 딴지!!!
./config
해서 설정 파일이 생성 되지 않을때가 MX설정이 잘못되었을 때 입니다.( 저는 djbdns 사용해서 설정이 제대로 되었다고 생각했는데도 안되더군요..)

./config-fast nweaver.com
이것은 ./config 로 자동 설정 되지 않을때.. 강제로 도메인을 지정해 주는 것 입니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다