본문 바로가기
Server&OS/Q-mail

Qmail 설치

by 백룡화검 2008. 7. 2.

기본적으로 여러 아이피에서 사용을 할경우에 이런 인증 절차를 거쳐야한다.
만약 고정 아이피에서 smtp 를 사용한다면 /etc/tcp.smtp 에 릴레이 아이피만
설정을 하면 된다는건 기본으로 알고 있으리라 생각한다 ^^
설치 하기 앞서 모든 소스에 관한 설치 메뉴얼은 꼭 한번 읽어보기 바란다.
여기서 사용되는 소스가 어느 쪽에서 어떤 파일 그리고 어떻게 돌아가니는지는
꼭 숙지가 필요하다. 걍 따라해서 깔아서 에러없이 실행된다고 해서 자기것이아니다.
0.download
wget http://monoline.co.kr/ftp/qmail_source/qmail-1.03.tar.gz
wget http://monoline.co.kr/ftp/qmail_source/daemontools-0.76.tar.gz
wget http://monoline.co.kr/ftp/qmail_source/autorespond-2.0.2.tar.gz
wget http://monoline.co.kr/ftp/qmail_source/ucspi-tcp-0.88.tar.gz
wget http://monoline.co.kr/ftp/qmail_source/qmail-103.patch
wget http://monoline.co.kr/ftp/qmail_source/qmail-boot
wget http://monoline.co.kr/ftp/qmail_source/qmail-smtpd.c
wget http://monoline.co.kr/ftp/qmail_source/qmail-queue
위 소스는 꼭 받아야 하는 소스이며 나머지는 선택 사항이니 알아서 해보시기를
wget http://monoline.co.kr/ftp/qmail_source/cmd5checkpw-0.22.tar.gz
wget http://monoline.co.kr/ftp/qmail_source/maildrop-1.4.0.tar.gz
wget http://monoline.co.kr/ftp/qmail_source/qmail-scanner-1.22.gz
1.patch
patch -p1 < ../qmail-103.patch
cp ../qmail-smtpd.c ./
2. 설치
ucspi-tcp
tar xzf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make
make setup check
daemontools
mkdir -p /package
chmod 1755 /package
cd /package
mv daemontools-0.76.tar.gz /package
tar xzf daemontools-0.76.tar.gz
rm daemontools-0.76.tar.gz
cd admin/daemontools-0.76
package/install
3. system configuration
mkdir /var/qmail
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
4. qmail install
$ make
$ make setup check
다음 기본 control 파일들의 설정을 위해
$ ./config
./config-fast phpsarang.com
위에서 ./config-fast phpsarang.com 하는 이유는 기본적으로 qmail이 환경 설정을 할때 control 파일밑에 생성되는 도메인을 /etc/resolv.conf 에서 도메인의 캐쉬값을 받아서 생성된다. 초기 세팅시는 도메인이 등록 되어 있지 않다면 ./config 할경우 에러가 난다. ./config-fast phpsarang.com 와 같이 하던지 resolv.conf  맨위에 search phpsarang.com 해주면 된다.
$ tar xzf autorespond-2.0.2.tar.gz
$ cd autorespond-2.0.2
$ make
$ cp autorespond /usr/local/bin/
5. 스크립트
/var/qmail/rc 의 내용
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/
chmod a+x /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
/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 qmaild`
Q_GID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000 \
     /usr/local/bin/tcpserver -vRHl 0 -x /etc/tcp.smtp.cdb \
     -u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1
/var/qmail/supervise/qmail-smtpd/log/run 의 내용
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
     /usr/local/bin/multilog t /var/log/qmail/smtpd
실행 권한을 준다.
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
qmail-smtpd 를 위한 로그 디렉토리 만들기
$ mkdir -p /var/log/qmail/smtpd
$ chown qmaill /var/log/qmail /var/log/qmail/smtpd
/etc/tcp.smtp의 내용
127.0.0.1:allow,RELAYCLIENT=""
192.168.1.1:allow,RELAYCLIENT=""
이 파일은 실제로 tcpserver가 읽을 수 있는 cdb 형식으로 바꿔야 하므로 다음과 같이 해준다.
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
6. pop 설치
checkpassword 설치
tar xzf checkpassword-0.90.tar.gz
cd checkpassword-0.90
make
make setup check
pop 서버 구동을 위한 디렉토리/파일 만들기
mkdir /var/qmail/supervise/qmail-pop3d
chmod +t /var/qmail/supervise/qmail-pop3d
mkdir /var/log/qmail/pop3d
chown qmaill /var/log/qmail/pop3d
/var/qmail/supervise/qmail-pop3d/run 파일
#!/bin/sh
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -H -l 0 0 110 /var/qmail/bin/qmail-popup \
phpsarang.com /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1
/var/qmail/supervise/qmail-pop3d/log/run 파일
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t \
     /var/log/qmail/pop3d  
파일에 실행 권한...
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
7. SMTP, POP 데몬 시작하기
sendmail 실행 파일
sendmail 바이너리를 사용하는 다른 어플리케이션들을 위해 대신 qmail의 그것을 링크 해줍니다.
ln -s /var/qmail/bin/sendmail /usr/lib
ln -s /var/qmail/bin/sendmail /usr/sbin
echo silver > /var/qmail/alias/.qmail-root
echo silver > /var/qmail/alias/.qmail-postmaster
echo silver > /var/qmail/alias/.qmail-mailer-daemon
cd /var/qmail/alias/
chmod 644 .qmail-root .qmail-postmaster .qmail-mailer-daemon
설치가 되면 부팅할 때마다 pop3가 자동으로 작동되도록 /etc/rc.d/rc.local의 맨 끝줄에 다음과 같은 내용을 적는다.
#start qmail POP3 server
/usr/local/bin/tcpserver 0 110 /var/qmail/bin/qmail-popup phpsarang.com /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &
ln -s /var/qmail/supervise/qmail-send /service/
ln -s /var/qmail/supervise/qmail-smtpd /service/
ln -s /var/qmail/supervise/qmail-pop3d /service
8. 구동스크립트
#!/bin/sh
# For Red Hat chkconfig
# chkconfig: - 80 30
# description: the qmail MTA
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH
case "$1" in
  start)
    echo "Starting qmail"
         if [ -e /service/qmail-send ] ; then
                 if svok /service/qmail-send ; then
                        svc -u /service/qmail-send
                else
                        echo qmail-send supervise not running
                fi
         else
                 ln -s /var/qmail/supervise/qmail-send /service/
         fi
         if [ -e /service/qmail-smtpd ] ; then
                 if svok /service/qmail-smtpd ; then
                        svc -u /service/qmail-smtpd
                else
                        echo qmail-smtpd supervise not running
                fi
         else
                 ln -s /var/qmail/supervise/qmail-smtpd /service/
         fi
    if [ -d /var/lock/subsys ]; then
      touch /var/lock/subsys/qmail
    fi
    ;;
  stop)
    echo "Stopping qmail..."
echo "  qmail-smtpd"
    svc -dx /service/qmail-smtpd /service/qmail-smtpd/log
         rm -f /service/qmail-smtpd
    echo "  qmail-send"
    svc -dx /service/qmail-send /service/qmail-send/log
         rm -f /service/qmail-send
    if [ -f /var/lock/subsys/qmail ]; then
      rm /var/lock/subsys/qmail
    fi
    ;;
  stat)
    svstat /service/qmail-send
    svstat /service/qmail-send/log
    svstat /service/qmail-smtpd
    svstat /service/qmail-smtpd/log
    qmail-qstat
    ;;
  doqueue|alrm|flush)
    echo "Flushing timeout table and sending ALRM signal to qmail-send."
    /var/qmail/bin/qmail-tcpok
    svc -a /service/qmail-send
    ;;
  queue)
    qmail-qstat
    qmail-qread
    ;;
  reload|hup)
    echo "Sending HUP signal to qmail-send."
    svc -h /service/qmail-send
    ;;
  pause)
    echo "Pausing qmail-send"
    svc -p /service/qmail-send
    echo "Pausing qmail-smtpd"
    svc -p /service/qmail-smtpd
    ;;
  cont)
    echo "Continuing qmail-send"
    svc -c /service/qmail-send
    echo "Continuing qmail-smtpd"
    svc -c /service/qmail-smtpd
    ;;
  restart)
    echo "Restarting qmail:"
    echo "* Stopping qmail-smtpd."
    svc -d /service/qmail-smtpd
    echo "* Sending qmail-send SIGTERM and restarting."
svc -t /service/qmail-send
    echo "* Restarting qmail-smtpd."
    svc -u /service/qmail-smtpd
    ;;
  cdb)
    tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
    chmod 644 /etc/tcp.smtp.cdb
    echo "Reloaded /etc/tcp.smtp."
    ;;
  help)
    cat <<HELP
   stop -- stops mail service (smtp connections refused, nothing goes out)
  start -- starts mail service (smtp connection accepted, mail can go out)
  pause -- temporarily stops mail service (connections accepted, nothing leaves)
   cont -- continues paused mail service
   stat -- displa
9. 사용자 추가
cd ~chaos
su - chaos
/var/qmail/bin/maildirmake $HOME/Maildir
echo ./Maildir/ > ~/.qmail
기존 모든 계정에 대해 위와 같은 일을 해주어야 한다. 그러나, 다음과 같이 /etc/skel 디렉토리를 수정해 주면, 앞으로 생성할 사용자에 대해서는 이런 작업을 해주지 않아도 된다.
cd /etc/skel
/var/qmail/bin/maildirmake Maildir
echo ./Maildir/ > .qmail
10. test
[root@night root]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 hostname.domain.com ESMTP
ehlo localhost
250-hostname.domain.com
250-AUTH=LOGIN
250-PIPELINING
250 8BITMIME
quit
221 hostname.domain.com
Connection closed by foreign host.
11. 도메인 추가
/var/qmail/control/locals 파일과 /var/qmail/control/rcpthosts
아웃룩에서 smtp phpsarang.com 인증체크 하면 된다.
the end  

'Server&OS > Q-mail' 카테고리의 다른 글

qmail 설치시 에러  (0) 2008.07.11
qmail 설치 따라하기  (0) 2008.07.10
qmail 설치 가이드  (0) 2008.07.10
qmail 설치  (0) 2008.07.02
qmail 설치  (0) 2008.07.02