Operating System/Linux2009. 10. 10. 22:45

지인을 도와줄 일이 생길지도 몰라서 잠시 qmail 서버 구축을 해보았습니다.

물론 실제 써먹을 기회가 무산되어 좀 아쉽긴 하지만 좋은 배움의 기회가 되었던 것 같습니다.

설치는 CentOS 구축, 관리의 교과서 격이라고 할 수 있는 슈퍼유저코리아에서 나온

"CentOS 리눅스 구축관리실무"를 보고 따라하였으며 아래는 그 과정을 정리해본 내용입니다.
 
 
 슈퍼유저코리아 "CentOS 리눅스 구축관리실무" 사이트 바로가기


qmail을 설치하려면 당연히 CentOS가 먼저 깔려 있어야 하겠죠???

혹시라도 아직 준비가 안되신 분들이 계시다면 아래 글을 먼저 보고 CentOS를 설치한 다음에 다시 돌아오시기 바랍니다.

2009/05/07 - [Operating System/Linux] - MS VirtualPC에 CentOS v5.3 설치하기


먼저 다른 메일 발송 프로그램이 있는지 확인하고 있다면 관련 서비스들을 제거해 준다.

# ls /etc/rc.d/init.d/saslauthd
# ls /etc/rc.d/init.d/dovecot
# ls /etc/rc.d/init.d/sendmail
#
# /etc/rc.d/init.d/saslauthd stop
# /etc/rc.d/init.d/dovecot stop
# /etc/rc.d/init.d/sendmail stop
#
# chkconfig --del saslauthd
# chkconfig --del dovecot
# chkconfig --del sendmail
#
# chkconfig --list | grep saslauthd
# chkconfig --list | grep dovecot
# chkconfig --list | grep sendmail





앞의 확인 및 제거 작업을 마쳤다면 gcc 컴파일러가 깔려있는지 확인을 하여 깔려있지 않다면 깔아준다.

# gcc --version
#
# yum install -y gcc



/usr/local/src/qmail 폴더를 만든 다음 그 폴더로 이동하여 설치와 패치에 필요한 파일들을 받는다.



받은 파일들 중에서 netqmail의 압축을 풀어준다.

# tar -zxf netqmail-1.05.tar.gz





이번에는 받은 파일중 ucspi-tcp-0.88의 압축을 풀고 해당 폴더로 내려가서

아래에서처럼 패치를 해주고 make, make setup check를 실행 시킨다.

# cd /usr/local/src/qmail
# tar -zxf ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88
#
# patch -p1 < /usr/local/src/qmail/netqmail-1.05/other-patches/ucspi-tcp-0.88.errno.patch
# patch -p1 < /usr/local/src/qmail/netqmail-1.05/other-patches/ucspi-tcp-0.88.a_record.patch
# patch -p1 < /usr/local/src/qmail/netqmail-1.05/other-patches/ucspi-tcp-0.88.nodefaultrbl.patch
#
# make
# make setup check







다시 이전 폴더인 "/usr/local/src/qmail"으로 돌아와서 "/package" 폴더를 만들어 주고 daemontools의 압축을

"/package"에다가 풀어준다.

# cd /usr/local/src/qmail
#
# mkdir -p /package
# chmod 1755 /package/
#
# tar -zxf daemontools-0.76.tar.gz -C /package/



압축을 풀었으면 "/package/admin/daemontools-0.76" 폴더로 이동하여 아래처럼 패치를 해주고

"package/install"으로 설치를 한다.

# cd /package/admin/daemontools-0.76/
#
# patch -p1 < /usr/local/src/qmail/netqmail-1.05/other-patches/daemontools-0.76.errno.patch
# package/install





pstree 명령어를 통해 "svscanboot"와 하위의 "readproctitle", "svscan" 항목을 확인해 보거나
 
ps 명령어를 이용하여 svscan 라는 프로세스 설치가 제대로 되었는지 확인해볼 수 있다.

# pstree
#
# ps -ef | grep svscan





체크한 항목들의 이상이 없음을 확인하였다면 가장 먼저 압축을 풀었던 netqmail 폴더로 가서 아래와 같은 작업을 한다.

# cd /usr/local/src/qmail/netqmail-1.05
#
# mkdir /var/qmail
#
# ./collate.sh





이제 qmail을 위한 그룹과 계정을 생성해주자.

사용자 계정 생성시에 아래의 이미지와 같이 이미 홈 디렉토리가 존재한다는 경고가 뜨는데, 가볍게 무시해 준다.

계정 생성이 완료되면 vipw 명령으로 방금 생성한 계정들을 확인할 수 있다.

# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias alias
# useradd -g nofiles -d /var/qmail qmaild
# useradd -g nofiles -d /var/qmail qmaill
# useradd -g nofiles -d /var/qmail qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail qmailq
# useradd -g qmail -d /var/qmail qmailr
# useradd -g qmail -d /var/qmail qmails
#
# vipw







그룹과 계정 생성 후, 확인까지 완료되었다면 아래처럼 폴더를 이동하고 두가지 패치작업을 한다.

# cd /usr/local/src/qmail/netqmail-1.05/netqmail-1.05
#
# patch -p1 < /usr/local/src/qmail/qmail-date/localtime.patch
# patch -p0 < /usr/local/src/qmail/netqmail-1.05-tls-smtpauth-20070417.patch





패치가 완료되면 아래처럼 "make" 명령어를 시리즈로 실행해준다.

캡쳐한 이미지에는 빠진 부분도 있으니 반드시 노란 박스를 보고 따라하해야 한다.

# make
# make setup check
# make cert
# make tmprsadh
# ./config-fast huikyun.com







이번에는 아래처럼 각각의 위치에 필요한 폴더와 파일을 만들고 권한 부여를 해준다.

# vi /var/qmail/rc
# chmod 755 /var/qmail/rc
#
# 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
#
# vi /var/qmail/supervise/qmail-send/run
# vi /var/qmail/supervise/qmail-send/log/run
# vi /var/qmail/supervise/qmail-smtpd/run
# vi /var/qmail/supervise/qmail-smtpd/log/run
#
# 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
#
# mkdir -p /var/log/qmail/smtpd
# chown qmaill /var/log/qmail /var/log/qmail/smtpd



위에서 생성한 파일들 각각의 내용은 다음과 같다.

# vi /var/qmail/rc
=============================================
#!/bin/sh

# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to ~/Maildir/ by default.

exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail
=============================================


 

# vi /var/qmail/supervise/qmail-send/run
=============================================
#!/bin/sh

exec /var/qmail/rc
=============================================


 

# vi /var/qmail/supervise/qmail-send/log/run
=============================================
#!/bin/sh

exec /usr/local/bin/setuidgid qmaill \
 /usr/local/bin/multilog t /var/log/qmail
=============================================


 

# 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 20000000 \
 /usr/local/bin/tcpserver -vRHI 0 -x /etc/tcp.smtp.cdb \
 -u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2 > &1
=============================================

 

# vi /var/qmail/supervise/qmail-smtpd/log/run
=============================================
#!/bin/sh

exec /usr/local/bin/setuidgid qmaill \
 /usr/local/bin/multilog t /var/log/qmail/smtpd
=============================================





이제 릴레이 클라이언트로 허용할 아이피 주소를 tcp.smtp 파일에 기록하여 적용해주고

qmail 시작 파일을 만들어서(내용이 너무 길어서 다운을 받았음) 서비스에 등록 해준다.

# vi /etc/tcp.smtp
# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
#
# lftpget http://www.lug.or.kr/book/qmail/qmail_start.txt
# mv qmail_start.txt /etc/rc.d/init.d/qmail
# chmod 755 /etc/rc.d/init.d/qmail
#
# chkconfig --add qmail
# chkconfig --level 35 qmail on
# chkconfig --list | grep qmail



아래는 /etc/tcp.smtp 파일 생성시 입력할 내용이다.

공인아이피를 사용하고 있는 사용자라면 사용중인 공인아이피도 등록해주면 된다.

# vi /etc/tcp.smtp
=============================================
127.0.0.1:allow,RELAYCLIENT=""
=============================================





그 다음에는 백업파일, 링크, 별칭 생성인 듯한 작업을 아래처럼 해주면 된다.

# mv /usr/lib/sendmail /usr/lib/sendmail.backup
# mv /usr/sbin/sendmail /usr/sbin/sendmail.backup
# ln -s /var/qmail/bin/sendmail /usr/lib
# ln -s /var/qmail/bin/sendmail /usr/sbin
#
# echo master > /var/qmail/alias/.qmail-root
# echo master > /var/qmail/alias/.qmail-postmaster
# echo master > /var/qmail/alias/.qmail-mailer-daemon
# chmod 644 /var/qmail/alias/.qmail*





이상 위에 있는 모든 작업을 완료하였다면 아래 명령어로 qmail 서비스를 시작하고 정상적으로 시작되었는지 확인해본다.

# service qmail start


 

# ps ax





# pstree





"ps ax", "pstree" 명령어에서 위에 이미지처럼 특별히 문제없이 뜬다면 설치가 완료된 것이다.

 

Posted by Huikyun