물론 실제 써먹을 기회가 무산되어 좀 아쉽긴 하지만 좋은 배움의 기회가 되었던 것 같습니다.
설치는 CentOS 구축, 관리의 교과서 격이라고 할 수 있는 슈퍼유저코리아에서 나온
"CentOS 리눅스 구축관리실무"를 보고 따라하였으며 아래는 그 과정을 정리해본 내용입니다.
슈퍼유저코리아 "CentOS 리눅스 구축관리실무" 사이트 바로가기 |
qmail을 설치하려면 당연히 CentOS가 먼저 깔려 있어야 하겠죠???
혹시라도 아직 준비가 안되신 분들이 계시다면 아래 글을 먼저 보고 CentOS를 설치한 다음에 다시 돌아오시기 바랍니다.
2009/05/07 - [Operating System/Linux] - MS VirtualPC에 CentOS v5.3 설치하기
먼저 다른 메일 발송 프로그램이 있는지 확인하고 있다면 관련 서비스들을 제거해 준다.
# 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 컴파일러가 깔려있는지 확인을 하여 깔려있지 않다면 깔아준다.
#
# yum install -y gcc
/usr/local/src/qmail 폴더를 만든 다음 그 폴더로 이동하여 설치와 패치에 필요한 파일들을 받는다.
# mkdir /usr/local/src/qmail
# cd /usr/local/src/qmail
#
# lftpget http://www.qmail.org/netqmail-1.05.tar.gz
# lftpget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
# lftpget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# lftpget http://www.alib.jp/files/qmail-date-localtime.patch
# lftpget http://shupp.org/patches/netqmail-1.05-tls-smtpauth-20070417.patch
받은 파일들 중에서 netqmail의 압축을 풀어준다.
이번에는 받은 파일중 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"에다가 풀어준다.
#
# mkdir -p /package
# chmod 1755 /package/
#
# tar -zxf daemontools-0.76.tar.gz -C /package/
압축을 풀었으면 "/package/admin/daemontools-0.76" 폴더로 이동하여 아래처럼 패치를 해주고
"package/install"으로 설치를 한다.
#
# patch -p1 < /usr/local/src/qmail/netqmail-1.05/other-patches/daemontools-0.76.errno.patch
# package/install
pstree 명령어를 통해 "svscanboot"와 하위의 "readproctitle", "svscan" 항목을 확인해 보거나
ps 명령어를 이용하여 svscan 라는 프로세스 설치가 제대로 되었는지 확인해볼 수 있다.
#
# ps -ef | grep svscan
체크한 항목들의 이상이 없음을 확인하였다면 가장 먼저 압축을 풀었던 netqmail 폴더로 가서 아래와 같은 작업을 한다.
#
# mkdir /var/qmail
#
# ./collate.sh
이제 qmail을 위한 그룹과 계정을 생성해주자.
사용자 계정 생성시에 아래의 이미지와 같이 이미 홈 디렉토리가 존재한다는 경고가 뜨는데, 가볍게 무시해 준다.
계정 생성이 완료되면 vipw 명령으로 방금 생성한 계정들을 확인할 수 있다.
# 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
그룹과 계정 생성 후, 확인까지 완료되었다면 아래처럼 폴더를 이동하고 두가지 패치작업을 한다.
#
# 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 setup check
# make cert
# make tmprsadh
# ./config-fast huikyun.com
이번에는 아래처럼 각각의 위치에 필요한 폴더와 파일을 만들고 권한 부여를 해준다.
# 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
위에서 생성한 파일들 각각의 내용은 다음과 같다.
=============================================
#!/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
=============================================
=============================================
#!/bin/sh
exec /var/qmail/rc
=============================================
=============================================
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail
=============================================
=============================================
#!/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
=============================================
=============================================
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail/smtpd
=============================================
이제 릴레이 클라이언트로 허용할 아이피 주소를 tcp.smtp 파일에 기록하여 적용해주고
qmail 시작 파일을 만들어서(내용이 너무 길어서 다운을 받았음) 서비스에 등록 해준다.
# 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 파일 생성시 입력할 내용이다.
공인아이피를 사용하고 있는 사용자라면 사용중인 공인아이피도 등록해주면 된다.
=============================================
127.0.0.1:allow,RELAYCLIENT=""
=============================================
그 다음에는 백업파일, 링크, 별칭 생성인 듯한 작업을 아래처럼 해주면 된다.
# 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 서비스를 시작하고 정상적으로 시작되었는지 확인해본다.
"ps ax", "pstree" 명령어에서 위에 이미지처럼 특별히 문제없이 뜬다면 설치가 완료된 것이다.