레이블이 큐메일인 게시물을 표시합니다. 모든 게시물 표시
레이블이 큐메일인 게시물을 표시합니다. 모든 게시물 표시

2012-09-16

Linux]suse linux qmail 설치하기


 SuSE Linux 9.2 Professional 상에서 qmail+mysql+vpopmail+qmailadmin+qmail-scanner+spamassassin+courier-imap+squirrelmail 설치하기


 목적 :

   1. 사용자 계정을 mysql 을 이용함으로써 추가나 삭제를 할수 있다.
   2. vpopmail 을 설치함으로써 가상 도메인에 대한 관리를 손쉽게 할수 있다.
   3. qmail-scanner 을 설치함으로써 바이러스에 대한 필터링을 한다.
   4. squirrelmail로 웹상에서 메일을 사용할 수 있게 한다.
   5. qmailadmin으로 웹상에서 메일계정을 쉽게 관리할 수 있게 한다.
   6. qmailMrtg로 웹상에서 메일서버의 트래픽을 쉽게 관찰할 수 있게 한다.


 아래의 파일은 2005.05.09 현재 최신 버전을 다운 받은 리스트이며, 위와 같은 조합의 메일 시스템을 구축하기 위한 모듈들입니다.



 qmail 관련

   http://qmail.kldp.org/src       : qmail-1.03,
   http://inter7.com               : vpopmail, qmailadmin, autoresponder
   http://www.ezmlm.org/           : ezmlm, ezmlm-idx
   http://qmail.org/netqmail/      : netqmail 패치
   autorespond-2.0.4.tar.gz        // 자동응답담당하는 모듈
   daemontools-0.76.tar.gz         // qmail 자동화 관리툴
   ezmlm-0.53.tar.gz               // qmail 지원하는 메일링리스트
   ezmlm-idx-0.440.tar.gz          //            
   maildrop-1.8.0.tar.bz2          // qmail-scanner에 연동되는 모듈
   netqmail-1.05.tar.gz            // qmail 패치
   qmail-1.03.tar.gz              
   qmailadmin-1.2.7.tar.gz         // 웹상에서 메일계정관리
   ucspi-tcp-0.88.tar.gz
   vpopmail-5.4.2.tar.gz           // 가상 메일지원모듈
   qmailmrtg7-4.2.tar.gz           // qmail 트래픽 모니터링
   qmail-scanner-1.25.tgz          // qmail-scanner (바이러스 필터링)
   Mail-SpamAssassin-3.0.3.tar.gz  // spamAssassin         http://spamassassin.apache.org
   Time-HiRes-1.67.tar.gz          // qmail-scanner설치시 필요
   clamav-0.84.tar.gz              // qmail-scanner 애드온
 
  mysql
   mysql-4.x.x.tar.gz              // http://www.mysql.com



  imapd
   (http://inter7.com/
        courier-imap-4.0.2.20050403.tar.bz2     // 웹메일을 지원하기 위한 모듈


  web

  httpd-2.0.54.tar.gz                     // http://www.apache.org
  php-5.0.4.tar.gz                        // http://www.php.net
  squirrelmail-1.4.4.tar.gz               // 웹메일 클라이언트    http://www.squirrelmail.org



 기타

  텍스트상에서 웹서핑하기 위한 도구
     lynx-2.8.5-26.i586.rpm          // http://www.rpmfind.net,  http://www.lynx.org

 

 패치
  qmail-1_03-mysql-0_6_6.patch
           -> 사용자 여부를 시스템 계정이 아닌 mysql 에서 하기 위한 패치.

  qmail-103.patch
           -> oversize dns 을 위한 패치

  checkpassword-0.81--mysql-0.6.6.patch
          -> pop3 사용시 사용자에 대한 패스워드 확인을  mysql 에서 하기 위한 패치. vpopmail 을 설치한다면 필요없습니다.

  qmailqueue-patch          
          -> qmail-scanner 를 위한 queue 패치입니다.

  qmail-smtp-auth.tar.gz
          -> 이것은 smtp 사용시 팝계정을 가진 사용자에 한해 smtp 를 사용하게 하자는 패치입니다. 좋더군요.

  relaymailfrom.patch
            -> 옵션으로 보내는 사람의 메일 주소로 smtp 릴레이를 막자는 패치입니다.



   패치가 많다고 해서 한번에 다 적용하려고 하지 말고. 하나씩 설치할때마다 필요한 패치를 그때 그때 적용하고 qmail 을 재 빌드하고 컴파일 하면 됩니다.
    ** 위의 netqmail을 이용해서 패치를 해도 됩니다.



 설치 순서



 * qmail 압축 풀기


 # tar -xvzf qmail-1.03.tar.gz
 # cd qmail-1.03


 * qmail 설치를 위한 디렉토리 생성

 # mkdir  /var/qmail


 * qmail 운영을 위한 유저, 그룹을 만들어 주기 위해 운영체제에 따라 INSTALL.ids를 편집한다. 리눅스상에서는 다음과 같다.
   INSTALL.ids 는 qmail-1.03 디렉토리에 존재한다.


   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



 * qmail과 부수적인 패키지 설치

qmail]FreeBSD + qmail+qmail-smtp_auth+tls+ checkpasswd

FreeBSD + qmail + qmail-smtp_auth+tls

copyleft 2003/08/15 - Powered by chabrothers.com
  update 2005/01/17

최 대한 손쉽게 설치하는데 주안점을 두었으니 문제점이 있다고 생각되시는 분은 san@chabrothers.com 으로 연락주시기 바랍니다.
FreeBSD 4.11-stable 에서 설치운영중입니다.

1. ucspi-tcp
2. qmail
3. qmail-smtp_auth+tls
4. checkpassword

위 의 4가지만 설치하였습니다.
daemontools 를 설치하지 않은 것은 지적받을만 하고요
ports collection 을 이용한 설치는 프비를 사랑하기 때문입니다.

-------------------------------------------------------------------------------

0. 관련패키지 설치

0.1 ucspi-tcp ( UNIX Client-Server Program Interface)

# cd /usr/ports/sysutils/ucspi-tcp/
# make install clean

--------------------------------------------------------------------------------
1. qmail + man page 설치

# cd /usr/ports/mail/qmail/
# make install clean
# make disable-sendmail
# make enable-qmail
# echo "OPTIONAL_MANPATH /var/qmail/man" >> /etc/manpath.config
# makewhatis
# man qmail

1.1 qmail-smtp_auth+tls 설치
tls 부분의 설명이 없는 이유는 제가 이해하지 못하고 있는점과 /usr/ports/mail/qmail-smtp_auth 가 따로없기 때문입니다.

# cd /usr/ports/mail/qmail-smtp_auth+tls
# make install clean

1.2 유저인증을 위해서 checkpassword 설치 - 보내기,받기에 모두 사용

# cd /usr/ports/security/checkpassword
# make install clean

-----------------------------------------------------------------------------------

2. SMTP 에 접근가능한 IP 를 설정하고 cdb 파일을 만들어 줍니다

# echo 127.0.0.1:allow,RELAYCLIENT="" > /etc/tcp.smtp
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp


--------------------------------------------------------------------------------

3. 관련 파일편집

3.1 새로생성되는 유저들은 홈디렉에 Maildir을 만들며 메일이 전달되게한다.

# cd /usr/share/skel

# vi dot.cshrc

  아래의 라인을 찾아 주석처리를 하고
  #set mail = (/var/mail/$USER)

  아래의 라인을 추가한다
  setenv MAIL ~/Mailbox
  setenv MAILDIR ~/Maildir
  setenv MAILTMP ~/Maildir/tmp/tmpfile
  alias mail '/var/qmail/bin/maildir2mbox;/var/qmail/bin/qail'
  alias pine '/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq'
  alias elm '/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq'

  :wq

# vi dot.shrc

  아래의 라인을 추가한다

  MAIL=~/Mailbox
  MAILDIR=~/Maildir
  MAILTMP=~/Maildir/tmp/tmpfile
  export MAIL MAILDIR MAILTMP
  alias mail='/var/qmail/bin/maildir2mbox;/var/qmail/bin/qail'
  alias pine='/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq'
  alias elm='/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq'

  :wq

# echo ./Maildir/ > dot.qmail

# /var/qmail/bin/maildirmake /usr/share/skel/Maildir

3.2 이미 존재하는 유저에게 메일전달되게 만들기.

# cp -R /usr/share/skel/Maildir ~USERSNAME/Maildir/
# chown -R USERSNAME ~USERSNAME/Maildir/
# cp /usr/share/skel/dot.qmail ~USERSNAME/.qmail
# chown USERSNAME ~USERSNAME/.qmail

--------------------------------------------------------------------------------

4. /var/qmail/rc 큐메일 작동파일만들기

# vi rc

#!/bin/sh
Q_UID='id -u qmaild'
Q_GID='id -g qmaild'
#
# This script starts and stops the qmail mail functions.
#

# Suck in the configuration variables.
if [ -r /etc/defaults/rc.conf ]; then
        . /etc/defaults/rc.conf
        source_rc_confs
elif [ -r /etc/rc.conf ]; then
        . /etc/rc.conf
fi

case "$1" in
start)
        case ${qmail_smtp_enable} in
        [Yy][Ee][Ss])
                # Start the qmail smtp daemon
                /usr/local/bin/tcpserver -H -R -c 255 -x /etc/tcp.smtp.cdb \
                        -u Q_UID -g Q_GID 0 25 /var/qmail/bin/qmail-smtpd domain.name \
                        /usr/local/bin/checkpassword /usr/bin/true &
                echo -n " qmail-smtp"
                ;;
        esac

        case ${qmail_pop_enable} in
        [Yy][Ee][Ss])
                # Start the qmail pop daemon
                /usr/local/bin/tcpserver -H -R -c 255 0 110 \
                        /var/qmail/bin/qmail-popup domain.name \
                        /usr/local/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &
                echo -n " qmail-pop"
                ;;
        esac

        case ${qmail_enable} in
        [Yy][Ee][Ss])
                # Start qmail
                exec env - PATH="/var/qmail/bin:$PATH" \
                        qmail-start ./Maildir splogger qmail &
                echo -n " qmail"
                ;;
        esac
        ;;
stop)
        # Stop the smtp daemon
        smtppid=`ps -axw | grep tcpserver | grep smtp | grep -v grep | awk '{ print $1 }'`
        if [ "$smtppid" != "" ]; then
                kill $smtppid
                echo -n " qmail-smtp"
        fi

        # Stop the pop daemon
        poppid=`ps -axw | grep tcpserver | grep popup | grep -v grep | awk '{ print $1 }'`
        if [ "$poppid" != "" ]; then
                kill $poppid
                echo -n " qmail-pop"
        fi

        # Stop qmail
        qmailpid=`ps -axw | grep qmail-send | grep -v grep | awk '{ print $1 }'`
        if [ "$qmailpid" != "" ]; then
                kill $qmailpid
                echo -n " qmail"
        fi
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        ;;
esac

exit 0


실 행파일 모드로 바꾸어준다

# chmod 750 /var/qmail/rc

--------------------------------------------------------------------------------

5. control 파일만들기

# echo domain.name > /var/qmail/control/defaultdomain
# echo host > /var/qmail/control/defaulthost

# echo host.domain.name > /var/qmail/control/locals
# echo domain.name >> /var/qmail/control/locals

# echo host.domain.name > /var/qmail/control/me

# echo host > /var/qmail/control/plusdomain

# echo host.domain.name > /var/qmail/control/rcpthosts
# echo domain.name >> /var/qmail/control/rcpthosts

/var/qmail/configure/config-fast 를 이용해서 쉽게 만들수도 있으며 아래의 기본적인 파일들이 만들어졌는지를 확인하여야 한다.

/var/qmail/control/defaultdomain
/var/qmail/control/defaulthost
/var/qmail/control/locals
/var/qmail/control/me
/var/qmail/control/plusdomain
/var/qmail/control/rcpthosts

5.1 alias 파일만들기

# echo your-admin@email.address > /var/qmail/alias/.qmail-root
# echo your-admin@email.address > /var/qmail/alias/.qmail-postmaster
# echo your-admin@email.address > /var/qmail/alias/.qmail-mailer-daemon


--------------------------------------------------------------------------------

6. sendmail 죽이기

# killall sendmail
# rm /var/run/sendmail.pid

# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

--------------------------------------------------------------------------------

7. qmail 가동하기

# /usr/local/etc/rc.d/qmail.sh start


--------------------------------------------------------------------------------

8. 작동여부 확인

# ps -ax | grep tcpserver
# ps -ax | grep qmail


--------------------------------------------------------------------------------

qmail 설치 (text문서)


#시스템 필요사항
#Mysql이 먼저 설치되어 있어야 합니다.
#큐메일은 대부분의 유닉스와 유닉스류 시스템에 설치되고 운영됩니다만 몇가지 필요사항이 있습니다.
#
#
#컴파일동안 컴파일부분에 약 10메가바잇의 여유공간. 컴파일후 옵젝트파일을 제거하면 4메가만 남습니다.
#컴파일러, 시스템헤더파일, 그리고 라입러리 등을 포함하는 완전한 C 개발시스템. 컴파일지시사항은 필요한 부분이 있으면 알려줍니다.
#바이너리, 문서, 그리고 설정 등의 파일에 대해 2-3메가바잇.
#큐에 대한 충분한 디스크공간. 소규모 단일사용자 시스템은 2-3메가바잇만 있으면 됩니다.
대용량 서버는 2-3 기가바잇이 있어야 될지도 모릅니다.
#호환 운영 시스템. 대부분의 유닉스종은 됩니다. 소스트리의 README를 보면 호환판의 리스트가 있습니다.
#DNS로의 접근을 강력히 권장합니다. 그렇지 않으면 큐메일은 smtproutes의 config 파일에 설정된 원격시스템으로만 보냅니다.
#적절한 넷웍 연결. 큐메일은 잘 연결된 시스템에 대해 설계되어서 28.8k 다이얼업에서 멜링리스트를 사용하고 싶지 않을지도 모릅니다. 큐메일을 연결이 나쁜 시스템에서 사용할 수 있도록 하려고 serialmail 패키지가 설계되었습니다. 더 많은 정보는 관련패키지 부록의 시리얼항목을 보시면 됩니다.
#
#2.4 소스를 받으십시오.
#오우케이, 이제 큐메일을 설치할 수 있도록 필요사항에 맞는 시스템을 준비하셨군요.
첫번째 단계는 큐메일과 다른 애드온의 소스코드를 다운로드하는 것입니다.
큐메일은 당연히 필요하고요, ucspi-tcp와 daemontools도 필요할 것입니다.
#
#
#qmail, ftp://koobera.math.uic.edu/www/software/qmail-1.03.tar.gz
#ucspi-tcp, http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
#daemontools, ftp://koobera.math.uic.edu/www/daemontools/daemontools-0.61.tar.gz
#
#웹브라우저나 FTP 클라이언트를 이용해서 이 파일들을 가져오세요.
#
#
#
#2.5 소스를 컴파일하세요.
#컴파일환경을 검증하세요.
#첫번째 할일은 프로그램을 컴파일하기에 필요한 툴을 갖추었는 지의 확인입니다.
이것을 결정하는 것은 사용중인 유닉스종류에 따릅니다. 말씀드릴 수 있는 가장 쉬운 방법은, 보장되지는 않지만, 해보는 겁니다.
#
#
#-----------------------------------------------------------------------------
#유의점: 이것들중 하나라도 통과하면, 다음 항목으로 넘어가셔도 됩니다.
#-----------------------------------------------------------------------------
#
#
#명령행프롬트에서, cc라 쓰고, 엔터를 누르세요:
#$ cc cc: No input files specified $
#
#
#
#답이 비슷하게 나오면, C 컴파일러가 경로에 있는 것입니다.
그렇지 않더라도, 설치되어 있지 않다는 것은 아닙니다.
설치되어 있을 지 모르지만, 경로에 포함되어 있지 않을 수도 있습니다.
 물론, 설치되어 있지 않을 수도 있습니다. 이렇게 해보세요.
#
#/usr/bin/cc
#/usr/bin/gcc
#/usr/local/bin/cc
#/usr/local/bin/gcc
#/usr/ccs/bin/cc
#
#소용이 없으면, 플랫폼 특성에 맞는 방법으로 하셔야 합니다.
프롬트에서 다음 중 하나를 하시는데, 사용중인 OS에 따르셔야 합니다.
#
#Red Hat Linux: rpm -qa | grep gcc or rpm -qa | grep egcs
#FreeBSD: GCC가 디폴트로 포함됩니다.
#이번 항목에서는 큐메일을 실제로 컴파일하는 단계를 거칩니다.
오려붙이기가 간편하지만, 그렇게 필요하지는 않습니다.
#
#
#배포판을 풉니다.
#여기까지 오셨으면, 이미 C 컴파일러와 tarball을 준비하신 겁니다.
타볼을 작업하실 디렉토리로 복사하거나 옮기세요. /usr/local/src가 좋은데,
이 경우에는 /usr/local/src/qmail를 세 패케지 모두에 사용할 수 있습니다.
#
#
mkdir -p /usr/local/src/qmail
#         mv *.tar.gz /usr/local/src/qmail
#
#
#/usr/local/src/qmail에 세 패케지가 전부 있으므로, 그것들을 푸십시오.
 룻이 아니라면 여기에서는 룻이 되셔야 합니다.
프롬트에서 다음과 같이 하세요:
#
#


gunzip qmail-1.03.tar.gz;

tar xvf qmail-1.03.tar;



gzip -d qmail-1.03-mysql-0.6.6.patch.gz;



gunzip checkpassword-0.81.tar.gz;

tar xvf checkpassword-0.81.tar;



gzip -d checkpassword-0.81-mysql-0.6.6.patch.gz;



gunzip ucspi-tcp-0.84.tar.gz;

tar xvf ucspi-tcp-0.84.tar;



gunzip daemontools-0.61.tar.gz;

tar xvf daemontools-0.61.tar;



gunzip rblsmtpd-0.70.tar.gz;

tar xvf rblsmtpd-0.70.tar;



rm *.tar;

cd /usr/local/src/qmail/qmail-1.03;



patch -p1 < ../qmail-1.03-mysql-0.6.6.patch;



#
#
#qmail-1.03, ucspi-tcp-0.84, daemontools-0.61 등의 섭디렉토리가 생깁니다.
qmail-1.03 디렉토리로 가시면 시작하겠습니다.
#
#
#
#디렉토리를 만듭니다.
#필요한 섭디렉토리는 큐메일 설치 프로그램이 만들므로, 큐메일 홈디렉토리만 만들어 주면 됩니다.
#
#
mkdir /var/qmail;
#
#
#그러면 다음 항목으로 갑니다.
#
#
#------------------------------------------------------------------------------
#유의점: 큐메일파일들을 /var가 아닌 다른 곳에 놓고 싶으시면, /var/qmail디렉토리에
#        그곳을 가리키는 심볼릭 링크를 만드시면 됩니다.
#
#        예를 들면, 다음과 같이 하시면 됩니다.
#
#        mkdir /var/qmail
#        ln -s /usr/man /var/qmail/man
#        mkdir /etc/qmail
#        ln -s /etc/qmail /var/qmail/control
#        ln -s /usr/sbin /var/qmail/bin
#--------------------------------------------------------------------------------
#
#
#사용자와 그룹을 만듭니다.
#필요한 사용자와 그룹을 만드는 가장 쉬운 방법은 작은 스크립트를 만들어서 하는 것입니다. 소스디렉토리에 INSTALL.ids 파일이 있습니다. 거기에는 여러 프랫폼에 해당하는 명령행이 있는데, 그 파일을 다른 이름으로 복사해서 편집하면 빠르고 쉽습니다.
#
#
#   cp INSTALL.ids IDS
#
#
#좋아하시는 에디터로 필요한 행을 빼고 다 지웁니다.
# 예를 들면, 편집후에 FreeBSD에 대한 IDS는 다음과 같습니다.
#
#


pw groupadd nofiles;

pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent;

pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent;

pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent;

pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent;

pw groupadd qmail;

pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent;

pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent;

pw useradd qmails -g qmail -d /var/qmail -s /nonexistent;


#        pw groupadd nofiles
#        pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
#        pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
#        pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
#        pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
#        pw groupadd qmail
#        pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
#        pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
#   pw useradd qmails -g qmail -d /var/qmail -s /nonexistent
#
#
#실행하려면, chmod를 써서 실행파일로 만드시거나 sh로 실행하십시오.
#
#
#첫번째 방법:
#
#  chmod 700 IDS
#  ./IDS
#
#
#두번째 방법:
#
#  /bin/sh IDS
#
#
#스크립트의 실행이 완료되어 사용자와 그룹이 생기면 다음항목으로 갑니다.
#
#그러나, INSTALL.ids에 해당 시스템이 없으면 어쩝니까? 수동으로 그것들을 만들어야 합니다. 좋아하는 에디터를 사용해서 /etc/group을 편집하세요. 다음 두 줄을 그 파일끝에 첨가하십시오.
#
#
#
#  qmail:*:2107:
#  nofiles:*:2108:
#
#
#-------------------------------------------------------------------------
#유의점: 2107과 2108이 사용중인 것이 아님을 확인하셔야 합니다.
#-------------------------------------------------------------------------
#
#
#다음으로는, vipw를 이용해서 다음 줄들을 그 파일의 끝에 붙이십시오. (대부분의 시스템에 vipw가 있지만, 없으면 에디터로 /etc/passwd를 편집합니다.)
#
#
#        alias:*:7790:2108::/var/qmail/alias:/bin/true
#        qmaild:*:7791:2108::/var/qmail:/bin/true
#        qmaill:*:7792:2108::/var/qmail:/bin/true
#        qmailp:*:7793:2108::/var/qmail:/bin/true
#        qmailq:*:7794:2107::/var/qmail:/bin/true
#        qmailr:*:7795:2107::/var/qmail:/bin/true
#        qmails:*:7796:2107::/var/qmail:/bin/true
#
#
#------------------------------------------------------------------------------------
#유의점: 7790-7796이 사용중이지 않는다는 것과 2107과 2108이 위에서 만든 그룹아이디와
#        같다는 것을 확인하십시오.
#------------------------------------------------------------------------------------
#
#
#이런 것들을 해당파일의 끝에만 첨가해야 하는 것은 아니지만, 그래야 설명하기가 제일 쉽습니다.
#
#
#다음 항목으로 가실 준비가 되셨군요.
#
#
#컴파일을 하세요.
#이제 큐메일을 컴파일하실 준비가 되었습니다.
#
#
#'컴파일환경을 검증한다'항목에서, C 컴파일러를 지정하셨습니다.
그것이 cc가 아니거나 디렉토리가 PATH환경변수에 있지 않으면 conf-cc와 conf-ld를 편집하십시오.
컴파일러가 gcc이고, PATH에 있다고 하면, conf-cc와 conf-ld를 가볍게 편집하고, cc를 gcc로 바꾸십시오.
#
#
#그렇게 하셨으면 명령행 프롬트에 다음과 같이 하세요.
#
# qmail 에 mysql 을 patch가 되어 있어야 합니다.
# patch를 안하셨으면 위에서 확인후 패치 하십시요.
# 참고 : 모든 patch 는 /usr/local/src/qmail/patch 에 있습니다.
# patch -p1 < ../patch/qmail-1.03-mysql-0.6.6.patch


vi Makefile

#MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz -lcrypt

 ==>로 고침고, 경로 확인

#MYSQL_INCLUDE=-Iusr/local/mysql/include  ==> 경로 확인



make;



make setup check;

#
#큐메일이 시스템에 설치되어서 가동될 준비가 되었습니다!
 다음항목은 큐메일을 가동하고 시험하는 단계를 안내합니다.
#


#
#2.6 ucspi-tcp를 설치합니다.
#먼저번에 qmail, ucpsi-tcp, daemontools 타볼을 풀었습니다.
예제에서 그것들을 /usr/local/src/qmail에 풀었습니다. 자 ucpsi-tcp디렉토리로 옮깁시다.
#
#

cd /usr/local/src/qmail/ucspi-tcp-0.84;

#
#
#'컴파일을 하세요'항목에서, conf-cc와 conf-ld를 고치셨으면, 이 디렉토리에서도 똑같이 해줍니다.
#
#
#그런뒤에 다음과 같이 하십시오.
#
#

make;



make setup check;

#
#
#2.7 daemontools를 설치합니다.
#daemontools 컴파일디렉토리로 이통합니다.
#
#

cd /usr/local/src/qmail/daemontools-0.61;

#
#
#또 한번, conf-cc와 conf-ld를 qmail과 ucspi-tcp 컴파일시 고쳤으면, 이 디렉토리에서도 똑같이 합니다.
#
#
#그리고 다음과 같이 합니다.
#
#

make;



make setup check;

#
#rblsmptd를 설치합니다.

cd /usr/local/src/qmail/rblsmtpd-0.70;

make;



make setup check;





#checkpassword를 설치합니다.

cd /usr/local/src/qmail/checkpassword-0.81;

patch -p1 < ../checkpassword-0.81-mysql-0.6.6.patch;



vi Makefile

#MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz -lcrypt  ==>로 고침고, 경로 확인

#MYSQL_INCLUDE=-Iusr/local/mysql/include  ==> 경로 확인



make;



make setup check;



vi /etc/inetd.conf

#아래와 같이 pop-3부분을 수정합니다.

#pop3  stream  tcp     nowait  root    /var/qmail/bin/qmail-popup      qmail-popup     co2.ritsworld.com       /bin/checkpassword      /var/qmail/bin/qmail-pop3d      Maildir

#pop-3 stream tcp nowait root /usr/sbin/tcpd /var/qmail/bin/qmail-popup mail.ritsworld.com /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir

#(한줄에 적어줍니다)



killall -HUP inetd



#제대로 설치가 되었는지 확인을 합니다
#printf "www\0com1212\0Y123456\0" | /bin/checkpassword `which id` 3<&0
#printf "test\0test\0Y123456\0" | /bin/checkpassword 'id' 3<&0
#printf "test\0test\0Y123456\0" | /bin/checkpassword env 3<&0
#printf "test\0test1212\0Y123456\0" | /bin/checkpassword `/usr/bin/id` 3<&0
#"계정\0패스워드\0아무것이나...\0" 의 순입니다
#uid=101(popori) gid=100(users) groups=100(users)
#위와 같은 결과가 나오면 제대로 설치가 된것입니다.
#위와 같은 결과가 안나오고 밑의 결과가 나올때는
#Missing name for redirect



#
#DNS가 제대로 설정되었다면, 다음 스크립트를 실행하기만 하면 됩니다.
#
#

cd /usr/local/src/qmail/qmail-1.03;

./config;



#
#
#어떤 이유로 config가 DNS에서 hostname을 찾지 못하면, config-fast script를 실행하셔야 합니다.
#
#
#  ./config-fast 호스트네임.완전.경로
#
#
#예를 들면, 도메인이 example.com이고, 당신컴퓨터의 호스트네임이 dolphin이라면, config-fast를 다음과 같이 실행합니다.
#
#
#  ./config-fast dolphin.example.com
#
#



#2.8 큐메일을 가동합니다.

vi /var/qmail/rc

#/var/qmail/boot디렉토리에는 여러가지 설정에 대한 본보기 큐메일 붓 스크립트가 있습니다. /var/spool/mail 대 $HOME/Mailbox, procmail 또는 dot-forward를 이용하기, 그리고 이것들의 다양한 결합. 한번 부담없이 검토해보시기 바랍니다. 우리는 설치를 위해서 다음을 이용하겠습니다.:
#
############################################################################################



#!/bin/sh


# Using stdout for logging
# Using control/defaultdelivery from qmail-local to deliver messages by default



exec env - PATH="/var/qmail/bin:$PATH" \

qmail-start "`cat /var/qmail/control/defaultdelivery`"



############################################################################################



#
#에디터로 위의 내용을 /var/qmail/rc로 만드시고, 다음과 같이 명령합니다.
#
#

chmod 755 /var/qmail/rc;

mkdir /var/log/qmail;

#
#
#이쯤에서, .qmail파일이 전달하지 못하는 메세지들에 대한 기본전달모드를 결정해야 합니다.
#다음의 테이블에 몇가지 공통선택이 간략히 예시되어 있습니다.
#
#
 #Mailbox
# format     Name       Location        defaultdelivery  Comments
#
 #mbox       Mailbox    $HOME           ./Mailbox        most common, works
#                                                             with most MUA's
#
 #maildir    Maildir    $HOME           ./Maildir/       more reliable, less
#                                                             MUA support
#
 #mbox        username  /var/spool/mail See INSTALL.vsm  traditional UNIX
#                                                             mailbox
#
#
#정보를 더 원하시면 INSTALL.mbox, INSTALL.maildir, INSTALL.vsm 등을 보십시오.
#
#
#기본 멜복스 형태를 고르시려면, 위의 테이블의 defaultdelivery 값을
#/var/qmail/control/defaultdelivery에 적어넣으십시오.
#예) 표준 큐메일 Mailbox 전달을 선택하시려면 다음과 같이 합니다.
#
#
#echo ./Mailbox >/var/qmail/control/defaultdelivery



echo ./Maildir/ >/var/qmail/control/defaultdelivery



# /var/qmail/bin/maildirmake  /usr1/mailmaster/test/Maildir;
#
#
#----------------------------------------------------------------------------------
#유의점: defaultdelivery는 표준 큐메일 통제 파일이 아닙니다. 위의 /var/qmail/rc파일의
#        특징입니다.
#----------------------------------------------------------------------------------
#
#
#시스템 기동 파일
#/var/qmail/rc 스크립트를 수동으로 실행하셔야 하면, 큐메일은 부분가동합니다. 그러나, 우리는 큐메일이 시스템이 부팅할때마다 자동으로 가동하기를 원하고, 시스템이 정지할 때는 깨끗하게 꺼지기를 원합니다.
#
#
#이것은 startup/shutdown스크립트를 다음과 같이 작성하면 됩니다.
#

vi /var/qmail/bin/qmail.sh;

###########################################################################################



#!/bin/sh



PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin

export PATH



case "$1" in

   start)

     echo -n "Starting qmail: svscan"

     cd /var/qmail/supervise

     env - PATH="$PATH" svscan &

     echo $! > /var/run/svscan.pid

     echo "."

     ;;

   stop)

     echo -n "Stopping qmail: svscan"

     kill `cat /var/run/svscan.pid`

     echo -n " qmail"

     svc -dx /var/qmail/supervise/*

     echo -n " logging"

     svc -dx /var/qmail/supervise/*/log

     echo "."

     ;;

   stat)

     cd /var/qmail/supervise

     svstat * */log

     ;;

   doqueue|alrm)

     echo "Sending ALRM signal to qmail-send."

     svc -a /var/qmail/supervise/qmail-send

     ;;

   queue)

     qmail-qstat

     qmail-qread

     ;;

   reload|hup)

     echo "Sending HUP signal to qmail-send."

     svc -h /var/qmail/supervise/qmail-send

     ;;

   pause)

     echo "Pausing qmail-send"

     svc -p /var/qmail/supervise/qmail-send

     echo "Pausing qmail-smtpd"

     svc -p /var/qmail/supervise/qmail-smtpd

     ;;

   cont)

     echo "Continuing qmail-send"

     svc -c /var/qmail/supervise/qmail-send

     echo "Continuing qmail-smtpd"

     svc -c /var/qmail/supervise/qmail-smtpd

     ;;

   restart)

     echo "Restarting qmail:"

     echo "* Stopping qmail-smtpd."

     svc -d /var/qmail/supervise/qmail-smtpd

     echo "* Sending qmail-send SIGTERM and restarting."

     svc -t /var/qmail/supervise/qmail-send

     echo "* Restarting qmail-smtpd."

     svc -u /var/qmail/supervise/qmail-smtpd

     ;;

   cdb)

     tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

     chmod 644 /etc/tcp.smtp*

     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 -- displays status of mail service

    cdb -- rebuild the tcpserver cdb file for smtp

restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it

doqueue -- sends qmail-send ALRM, scheduling queued messages for delivery

 reload -- sends qmail-send HUP, rereading locals and virtualdomains

  queue -- shows status of queue

   alrm -- same as doqueue

    hup -- same as reload

HELP

     ;;

   *)

     echo "Usage: $0 {start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue|help}"

     exit 1

     ;;

esac



exit 0



###########################################################################################

#

chmod 755 /var/qmail/bin/qmail.sh

#이 스크립트는 http://Web.InfoAve.net/~dsill/qmail-script-dt61.txt에서도 구할 수 있습니다.
#
#
#-------------------------------------------------------------------------------------
#유의점: 시스템이 재부팅한다음에 큐메일이 곧 없어지면, 스크립트의 "start"항목에 있는
#        env 명령을 nohup으로 덧붙입니다.
#
#        예)
#        nohup env - PATH="$PATH" svscan &
#-------------------------------------------------------------------------------------
#
#
#에디터로 스크립트를 만들거나 웹브라우저로 다운로드해서 시스템의 init.d디렉토리에 설치하시는데,
# 다음과 같은 장소가 됩니다.
#
#
#/etc/init.d
#/sbin/init.d
#/etc/rc.d/init.d
#
#스크립트를 qmail이라고 이름붙이십시오. 스크립트를 몇개의 rc디렉토리에 링크시키셔야 합니다.
# 이 데렉토리들은 rcN.d같이 되어있는데, N은 적용 runlevel입니다.
#기동디렉토리 구조가 복잡해서 본 문서에는 다루지 않습니다.
#그러니 간단한 지시사항이 맘에 차지 않으시면 시스템문서를 참조하십시오.
#rc 디렉토리는 다음중 하나일 겁니다.
#
#
#/etc
#/sbin
#/etc/rc.d
#
#링크를 만드시는데, 다음과 같이 하십시오. RCDIR를 시스템의 rc 디렉토리의 장소로 바꾸십시오.
#
#
#    ln -s ../init.d/qmail RCDIR/rc0.d/K30qmail
#         ln -s ../init.d/qmail RCDIR/rc1.d/K30qmail
#         ln -s ../init.d/qmail RCDIR/rc2.d/S80qmail
#         ln -s ../init.d/qmail RCDIR/rc4.d/S80qmail
#         ln -s ../init.d/qmail RCDIR/rc5.d/S80qmail
#         ln -s ../init.d/qmail RCDIR/rc6.d/K80qmail
#
#
#--------------------------------------------------------------------------------------
#유의점: 전단계의 숫자는 매우 시스템에 의존합니다. 그렇지만 다소 유연합니다.
#        Sendmail이 현재 설치되어 있으면, "find RCDIR -name "*sendmail" -print" 명령을
#        실행하면 시스템에 적용할 수 있는 숫자를 알려줍니다.
#--------------------------------------------------------------------------------------
#
#
#이제 큐메일서비스를 위해 감독디렉토리를 만드십시오.
#
#

mkdir -p /var/qmail/supervise/qmail-send/log;

mkdir -p /var/qmail/supervise/qmail-smtpd/log;

mkdir -p /var/qmail/supervise/qmail-pop3/log;

chmod +t /var/qmail/supervise/qmail-send;

chmod +t /var/qmail/supervise/qmail-smtpd;

chmod +t /var/qmail/supervise/qmail-pop3;

#
#
#/var/qmail/supervise/qmail-send/run파일을 만드십시오.
#

vi /var/qmail/supervise/qmail-send/run

############################################################################################

#!/bin/sh



exec /var/qmail/rc

############################################################################################



#
#/var/qmail/supervise/qmail-send/log/run파일을 만드십시오.
#

vi /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파일을 만드십시오.
#

vi /var/qmail/supervise/qmail-smtpd/run

#############################################################################################

#!/bin/sh



QMAILDUID=`id -u qmaild`

NOFILESGID=`id -g qmaild`

exec /usr/local/bin/softlimit -m 2000000 \

    /usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \

        -u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

#############################################################################################

#예제

##############################################################################################

##!/bin/sh
#
#QMAILDUID=`id -u qmaild`
#NOFILESGID=`id -g qmaild`
#exec /usr/local/bin/softlimit -m 2000000 \
#    /usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
#        -u $QMAILDUID -g $NOFILESGID 0 smtp /usr/local/bin/rblsmtpd /var/qmail/bin/qmail-smtpd 2>&1

#############################################################################################



#
#/var/qmail/supervise/qmail-smtpd/log/run파일을 만드십시오.
#

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

#############################################################################################





#
#/var/qmail/supervise/qmail-pop3/run파일을 만드십시오.
#

vi /var/qmail/supervise/qmail-pop3/run

#############################################################################################

#!/bin/sh



exec /usr/local/bin/tcpserver -v -R 0 pop3 /var/qmail/bin/qmail-popup 211.234.7.126 \

     /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1



#############################################################################################

##############################################################################################

##!/bin/sh
#
#exec /usr/local/bin/tcpserver -v -R 0 pop3 /var/qmail/bin/qmail-popup 211.234.7.126 \
#     /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1 | \
#     /var/qmail/bin/splogger pop3d &
#
##############################################################################################



#
#/var/qmail/supervise/qmail-pop3/log/run파일을 만드십시오.
#

vi /var/qmail/supervise/qmail-pop3/log/run

#############################################################################################

#!/bin/sh



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



#############################################################################################



#
#
#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;

chmod 755 /var/qmail/supervise/qmail-pop3/run

chmod 755 /var/qmail/supervise/qmail-pop3/log/run;

#
#
#그런 다음에, 로그디렉토리를 만듭니다.
#
#

mkdir -p /var/log/qmail/smtpd;

mkdir -p /var/log/qmail/pop3d;

chown qmaill /var/log/qmail /var/log/qmail/smtpd /var/log/qmail/pop3d;

#
#
#기동스크립트에 실행권한을 부여하고, 실행경로에 있는 디렉토리로 링크합니다.
#
#
#   # substitute the correct location of your rc dir on the next two lines
#        chmod 755 /etc/init.d/qmail                                          
#        ln -s /etc/init.d/qmail /usr/local/sbin                              
#
#
#로컬호스트가 SMTP를 통해서 멜을 삽입 (inject)하도록 합니다.
#
#

echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp;

echo '211.234.7.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp;

/var/qmail/bin/qmail.sh cdb;

#
#
#기존에 설치된 MTA를 멈추고 무력하게 합니다.
#큐메일과 현존하는 MTA, 대개 Sendmail, 두개를 사용할 수도 있지만, 그렇게 하지 않을 것을 강력히 권고합니다.

그리고, 솔직히 말해서, 이 글을 읽고 계신다면, 그게 무엇을 뜻하는 지 모르실 겁니다. :-)
#
#
#현존 MTA가 Sendmail이라면, init.d 스크립트를 stop인수를 주어 실행하여 멈출 수 있습니다.

예) 다음 중 하나가 유효할 겁니다.

#
#
#  /etc/init.d/sendmail stop    
#  /sbin/init.d/sendmail stop  
#  /etc/rc.d/init.d/sendmail stop
#
#
#init.d/sendmail 스크립트를 찾을 수 없다면, "ps -ef|grep sendmail" 또는 "ps waux|grep sendmail"을 사용해서 sendmail의 PID를 알아낸 뒤에, 다음과 같이 해서 멈춥니다.
#
#
#  kill PID-of-sendmail
#

killall sendmail

#
#MTA가 Sendmail이 아니면, 해당문서에서 바른 멈춤 절차를 참고하십시오.
#
#
#시스템에서 기존의 MTA를 완전히 제거하는 것도 고려해볼 만합니다. 적어도 init.d 스크립트를 무력하게 하면 시스템이 재부팅할 때 다시는 가동하지 않습니다.

#
#
#레드햇리눅스에서는 다음과 같이 해서 Sendmail을 제거합니다.
#
#
#  rpm -e --nodeps sendmail
#
#
#끝으로, 기존의 /usr/lib/sendmail을 큐메일판으로 바꿉니다.
#
#

mv /usr/lib/sendmail /usr/lib/sendmail.old;

mv /usr/sbin/sendmail /usr/sbin/sendmail.old;

chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old;

ln -s /var/qmail/bin/sendmail /usr/lib;

ln -s /var/qmail/bin/sendmail /usr/sbin;

#
#
#이제는 큐메일가동이 가깝습니다. 끝단계는 시스템앨리어스를 두어개 만드는 것입니다.
#
#
#시스템앨리어스를 만듭니다.
#모든 큐메일설치에서는 시스템앨리어스를 세개 만들어야 합니다.
#
#
#앨리어스            목적
#postmaster          RFC 821 요구사항이며, 멜애드민 (당신)을 가리킵니다.
#mailer-daemon       바운스멜에 대한 사실상의 표준수취인
#root                특권계정에서 온 멜을 시스템애드민에게 보낸다.
#
#
#이 앨리어스들을 만들려면, 그것들 하나하나가 어디에 놓여져야 하는 지 (로컬사용자, 또는 원격주소) 결정하고, .qmail파일을 만들어서 갖다놓으면 됩니다. 예를 들어, 로컬사용자 dave는 시스템과 멜의 애드민이라고 하면 다음과 같이 합니다.
#
#

adduser master



echo master > /var/qmail/alias/.qmail-root;                              

echo master > /var/qmail/alias/.qmail-postmaster;

ln -s /var/qmail/alias/.qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon;

chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster;

#
#
#mysql 연동
#마찬가지로 README.mysql.en 파일이 생성되어 있으므로 설치에 참고하시고
#컴파일과 설치를 진행합니다. 역시 설치시에는 root 로...



#/var/qmail/control/sqlserver 파일을 다음과 같은 내용으로 생성합니다.

vi /var/qmail/control/sqlserver

#########################################################################

mysql_use     yes

server        localhost

login         m

password      su

db            qmail

table         users

check_host    no

#########################################################################

또 다른 예

#########################################################################

#mysql_use     yes
#server        localhost
#login         m
#password      su
#db            ritsworld
#table         userinfo
#check_host    no
#quota         yes
#ignore_validity yes
#########################################################################





#간략하게 설명하면...
#
#  mysql_use     yes          ... mysql 을 사용한다.
#  server        localhost    ... 서버는 현재의 mysql 서버를 사용한다.
#  login         qmail        ... mysql DB에 접근하는 사용자명
#  password      su           ... mysql DB에 접근시에 필요한 비밀번호
#  db            qmail        ... 사용자 계정을 가지고 있는 DB명
#  table         users        ... 사용자 계정이 들어있는 테이블명
#  check_host    no           ... 이것이 yes 이면 mysql DB에 있는 이용자명과
#                                 도메인 (호스트)로 부터만 메일을 수신한다.
#                                 (무슨소리인지 잘 모르겠음...)
#
#로그인은 MySQL 에 접근하는것을 사전에 확인해 보도록 해야 합니다.
#즉 mysql -u <id> qmail 로 접근해 봐서 비밀번호를 넣고 설정한 qmail DB 에 들어갈
#수 있는지를 확인하라는 것입니다.
#즉, 이때에 login 은 DB의 접근권한(?)을 가지는 id를 이용하라는 것입니다.
#mysql의 access 모드와 password의 적절한 조정이 필요할 것 입니다..
#최초에 오픈시라면 mysql의 DB접근권한을 예제와 같는 test db와 같이 모두 열어놓고
#인터페이스가 완료 된후에 테스트를 거쳐서 적당하게 권한을 조정하는것이 속을 썩지
#않을 것입니다. 모두 열었을 경우에는 password 항목을 지정할 필요가 없습니다.
#(외부로도 열린것이 이므로 웨퍼나 파이어 월을 설정하지 않았으면 보안에 심각한 문
#제가 있음은 당연합니다.)
#
#설치되어 운영되고 있는 mysql DB 에 위에서 언급한 db 명 테이블명및 해당 이용자의
#권한을 설정합니다.
#
#먼저 qmail이란 db를 하나 만듭니다.
mysqladmin create qmail
#MySQL안에 popori란 계정을 추가하고(user table) popori가 qmail db를 사용할 수 있도록 권한을 줍니다(db table).

#이용자 테이블을 생성합니다.  이것은 필요에 따라서 만드는 것이므로 메일의 서비스
#에 필요한 항목을 추가해서 테이블을 만들어도 됩니다.  즉 해당 항목만 있으면 된다
#는 이야기 입니다.
#

CREATE TABLE users (

id char(32) NOT NULL,

crypt char(32) binary DEFAULT '' NOT NULL,

passwd char(32) NOT NULL,

uid int(10) unsigned DEFAULT '65534' NOT NULL,

gid int(10) unsigned DEFAULT '65534' NOT NULL,

shell char(100) DEFAULT '/sbin/nologin' NOT NULL,

home char(100) DEFAULT '' NOT NULL,

start_date date DEFAULT '0000-00-00' NOT NULL,

expire_date date DEFAULT '2030-01-01' NOT NULL,

active enum('Y','N') DEFAULT 'Y' NOT NULL,

KEY id (id(10)),

KEY start_date (start_date),

KEY expire_date (expire_date),

KEY active (active)

);



#insert into users(id, crypt, home) values ('test', encrypt('test1212'), '/usr/home/master/test');
#
#각 필드의 간단한 설명은...
#
#  id field:         이용자 id
#  uid field:        이용자 번호
#  gid field:        이용자 그룹번호
#  home field:       이용자의 메일박스 디렉토리 패스 (풀 패스이어야 함)
#  shell field:      이용자의 SHELL (보통은  /bin/false를 지정)
#  mbox_host field:  잘모름. 하여튼 NULL 이어야 한다고 함...
#          원문 : Recieve a mail when one's address ("To: xxx@xxx") is
#                 'id'@'mbox_host'. must be accepted NULL.
#          수정 : To 에 기본적으로 E-mail 주소 설정을 해주는거라는거 같음.
#                 Not Null 은 데이터가 없을때 NULL로 설정 함으로 DB 의 속
#                 도 향상을 기대한것으로 보임.
#
#  active:           메일을 이용할 수 있는 상태 플래그
#  start_date:       메일의 이용기간을 정함. 시작일
#  expire_date:      메일의 이용 기간을 정함. 끝일
#
#테이블을 생성후에 이용자의 계정을 DB에 등록 합니다.
#passwd 기록시에는 encryption 을 하기위에 mysql 매크로 거맨드인 password () 를
#사용합니다.  이용자가 등록되었으면 DB에 기록한 home 디렉토리를 생성 합니다.
#
#예제:
 #MySQL table
#+----------+-------+------+---------------------+------------
#+   id     |  uid  | gid  |  home               | shell    
#+----------+-------+------+---------------------+------------
#+ username |  65534 | 65534 | /somewhere/username | /bin/false
#
#
#와 같이 DB에 등록되어 있으면...
#

mkdir /usr/home/master/test;

/var/qmail/bin/maildirmake  /usr/home/master/test/Maildir;

chown -R 65534 /usr/home/master/test;

chgrp -R 65534 /usr/home/master/test;

#
#
#와 같이하여 Maildir 구조의 메일박스를 생성합니다. 꼭 해당 ID로 소유가 설정 되도
#록 하여야 합니다.  (아니면 수신되지 않음)  이때 Maildir 로 서비스가 되게 하려면
#해당이용자의 홈디렉토리의 .qmail 파일에  ./Maildir/ 문장을 넣어 놓거나 qmail 실
#행시에 기본 서비스가 ./Maildir/ 서비스가 되도록 구동합니다.
#qmail-start ./Maildir/ 로 실행하는데 /var/qmail/rc 의 스크립트 파일을 수정 합니
#다. 아니면 그냥 Mailbox 를 사용하셔도 됩니다.
#
#
#설정되었으면 테스트를 해봅니다.
#

/var/qmail/bin/qmail-getpw test localhost

#username12346789/home1/qmail-box/g/gumdong
#
#위와 같이 id, uid, gid, home 을 돌려줄것입니다.  제대로 DB를 접근하지 못하면 DB
#의 내용과는 다른 alias의 기본값이 나타나게 됩니다.  이때는 mysql을 log파일을 남
#기도록 실행을 시켜서 적절한 시점에 SQL 쿼리를 내는지 확인하십시오.  mysqld를 로
#그를 남기도록 실행하는 방법은 다음과 같습니다.  단일 프로세스로 구동되는 것이므
#로 실제 서비스에는 적용하지 마십시요.
#
#   # /var/libexec/mysqld --log=/tmp/mysql.log
#
#
#그러면 테스트 메일을 보내 봅니다.
#
#   # echo to:username | /var/qmail/bin/qmail-inject
#
#성공적으로 메일이 보내졌는지 ~username/Maildir/new 디렉토리의 파일을 참조하십시
#요. 만약에 파일이 보내지지 않으면 /var/mail/maillog 파일을 확인하여 원인을 찾아
#보도록 하여야 합니다.
#
#파일의 수신은 성공적으로 이루어 졌는데  POP-3 와 연동하는 checkpassword 가 정상
#적으로 동작하는 지 다음과 같이 확인합니다.
#
#   # telnet localhost pop3
#   Trying 127.0.0.1...
#   Connected to localhost.
#   Escape character is '^]'.
#   +OK <6195.936784767@calypso.mydomain.or.kr>
#   user username
#   +OK
#   pass 1234
#   +OK
#   quit
#   +OK
#   Connection closed by foreign host.
#
#이렇게 pass 까지 DB에 넣어진 내용과 일치하여 +OK 가 나오면은 확인 된것입니다.
#만일 제대로 되지 않으면 DB의   crypt 항목에 있는 비밀번호와 일치하는지 확인해야
#합니다.
#
#crypt 항목에 비밀번호를 넣을 때는 encrypt() 의 mysql 매크로를 이용합니다.
#
#   > update users set crypt=encrypt('1234') where id='gumdong'\g
#
#정상적으로 동작하지 않을시에 앞에서 언급한 큐메일의 로그와  mysql의 로그를 참조
#하십시요.
#
#
#아래에 적는 내용은 사용자 quota제한에 대한 내용입니다. 웹메일을 써보면 사용자별로 10M, 20M의 용량을 주고 제한을 하지요. 그런 방법입니다.
#몇가지의 추가로 쉽게 제한이 가능합니다.
#quota제한은 unix의 quota를 이용한 것이 아니라 내부적으로 du명령을 이용해서 구현이 되있습니다.



#1. MySQL안에 있는 users테이블에 필드를 1개 추가합니다.
#mysql> alter table users add quota_size int unsigned default 0 not null;


#2. /var/qmail/control/sqlserver 파일에 다음의 1줄을 추가합니다.
#quota yes





#단지 위의 두가지 설정으로 quota가 제한됩니다. 저의 경우 qmail과 tcpserver를 restart시켰는데 시켜주지 않아도 가능한지 확인은 못했습니다.

#용량제한은 MySQL의 users테이블에서 quota_size필드에서 정합니다. 필드값이 0이라면 제한을 안합니다. 500이면 500k로 제한을 두는겁니다. 1 = 1kbyte입니다.

#만약 제한된 용량을 초과하는 메일이 들어오면 보낸사람에게 Mailbox is Full이라는 메세지와 함께 바로 리턴이 됩니다.



#--------------------------------------------------------------------------------
#큐메일을 가동합니다.
#마지막으로, 큐메일을 가동합니다.
#
#외부에서 메일을 수신하기 위해서는 /var/qmail/control/rcpthost 파일을 삭제한다.

rm /var/qmail/control/rcpthosts



/var/qmail/bin/qmail.sh start

#
#
#
#
#
#  imap을 설치합니다.
#imap-4.7b.tar.Z 과 imap-4.7b-maildir-mysql.patch을 /usr/local에 복사합니다.



tar -xzvf /usr/local/imap-4.7b.tar.Z;

mv /usr/local/imap-4.7  /usr/local/imap;

#(이름을 바꿔 주시구요)



cd /usr/local/imap;

patch -p1 < ../imap-4.7b-maildir-mysql.patch

make bsf;



ln -s /usr/local/imap/c-client /usr/local/imap/include;

ln -s /usr/local/imap/c-client /usr/local/imap/lib;

cp /usr/local/imap/ipopd/ipop2d /usr/sbin;

cp /usr/local/imap/ipopd/ipop3d /usr/sbin;

cp /usr/local/imap/imapd/imapd /usr/sbin;



vi /etc/services;

#    하시고 pop-2 pop-3  imap 에 #이 있으면 풀어주시면 되구요!!
###########################################################################

pop2            109/tcp    postoffice   #Post Office Protocol - Version 2

pop2            109/udp    postoffice   #Post Office Protocol - Version 2

pop3            110/tcp    postoffice   #Post Office Protocol - Version 3

pop3            110/udp    postoffice   #Post Office Protocol - Version 3

imap            143/tcp         imap

imap            143/udp         imap

##############################################################################



vi /etc/inetd.conf;

##############################################################################

pop2   stream  tcp     nowait  root    /usr/sbin/ipop2d        ipop2d

imap    stream  tcp     nowait  root    /usr/sbin/imapd imapd



##############################################################################
# 하시고 pop-2 pop-3  imap 에 #이 있으면 풀어주시면 되구요!!





killall -HUP inetd;

# imap test
##############################################################################
#telnet localhost 143
#Trying ::1...
#Trying 127.0.0.1...
#Connected to localhost.
#Escape character is '^]'.
#* OK localhost IMAP4rev1 v12.264 server ready
#^]
#telnet> quit
#Connection closed.
##############################################################################
#telnet 0 143
#Trying 0.0.0.0...
#Connected to 0.
#Escape character is '^]'.
#* OK [211.234.7.126] IMAP4rev1 v12.264 server ready
#aaa login master su
#aaa OK LOGIN completed
#lll logout
#* BYE co2.ritsworld.com IMAP4rev1 server terminating connection
#lll OK LOGOUT completed
#Connection closed by foreign host.
 

##############################################################################
#
#
#
#
# 기본설치 끝
#
--------------------------------------------------------------------------------

7. PHP4설치



[root@www /apache_1.3.14]#cd ..

[root@www /tmp]#cd php-4.0.4pl1

[root@www /php-4.0.4pl1]#../configure --with-apache=../apache --with-mysql=/usr/local/mysql \

    --with-imap=/usr/local/imap \

     --enable-track-vars --disable-debug



옵션에 대한 추가 설명은 PHP메뉴얼을 참고하기 바랍니다.

만약 PostgeSQL이나 mSQL을 사용한다면 --with-pgsql=디렉토리경로 --with-msql=디렉토리 경로와 같이 옵션을 사용하면 된다.

--enable-track-vars  옵션은 HTTP_GET_VARS, HTTP_POST_VARS, HTTP_COOKIE_VARS 배열에 들어 있는 GET, POST, cookie 변수들이 어디서 왔는지 기억하도록 합니다. 꼭 설정해 두세요.



위의 많은 옵션들을 모두 설치하실 필요는 없습니다. 배포판인 레드햇의 기본설정에서 저가 필요한 것들을 예를 들어 나열한 것이므로 꼭 필요한 옵션만 사용하시면 됩니다.

그중에서 파란색으로 되어 있는 옵션은 기본적으로 권장하는 옵션들입니다.



[root@www /php-4.0.4pl1]#make    컴파일을 하고,

[root@www /php-4.0.4pl1]#make install    인스톨을 한다.







8. Apache Configure(2), 컴파일



[root@www /php-4.0.4pl1]#cd /tmp/apache_1.3.14

[root@www /apache_1.3.14]#./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a



단골로 묻는 질문의 원인 중에 하나가 위의 옵션 때문입니다. 옵션을 줄 때 그냥 TAB key를 두르리지 말고 위 옵션을 잘 보고 입력하세요.



[root@www /apache_1.3.14]#make    아파치를 컴파일한다.

[root@www /apache_1.3.14]#make install    아파치 인스톨







10. 환경설정 파일 편집


[root@www /tmp]# cp /tmp/php/php.ini-dist   /etc/httpd/php.ini


[root@www /tmp]#vi /etc/httpd/php.ini  


[root@www /tmp]#vi /usr/local/apache/conf/httpd.conf    아파치의 환경설정 파일을 열어서 다음과 같은 설정을 한다.  



360라인쯤에 Default 시작페이지 설정을 해 준다

<IfModule mod_dir.c>

DirectoryIndex index.php index.php3  index.php4 index.html index.htm

</IfModule>



720라인 정도에서 다음 내용의 주석을 풀고 원하는 환경으로 설정을 한다.



AddType application/x-httpd-php .php .php3 .ph

AddType application/x-httpd-php-source .phps







[root@www /root]# /usr/local/apache/bin/httpd -t    엔터를 두드리고  다음과 같은 메시지만 있으면 아파치 환경이 잘 설정되었다.



Syntex OK



만일 에러가 발생하면 몇 번째 라인에서 잘못되었다는 메시지를 잘 보고 수정하기 바랍니다.



[root@www root]# /usr/local/apache/bin/apachectl start

/usr/bin/apachectl start: httpd started    이런 메세지가 보인다면 아파치가 정상적인 실행이 된 것이다.







11. Test 하기



테스트 화일을 만들어 확인을 해 보세요. 물론 홈페이지가 뜰 수 있는 디렉토리가 되어야 합니다.

메인 홈페이지 경로는 아파치 환경설정파일 281라인 정도에서 DocumentRoot "/usr/local/apache/htdocs"에 의해 설정된 경로입니다.



[root@www /root]#vim /usr/local/apache/htdocs/test.php



에디터 창에서 다음내용을 입력합니다.



<?

phpinfo();

?>



저장을 하고 브라우저에서 http://localhost/test.php 또는 홈페이지URL/test.php를 입력하여 어떤 내용이 출력되는지 봅시다.



다음과 같은 내용이 출력된다면 정상적으로 설치가 잘 되었습니다.



PHP Version 4.0.4pl1







System Linux linux.kyungsung.ac.kr 2.2.16-22smp #1 SMP Tue Aug 22 16:39:21 EDT 2000 i686 unknown

Build Date Nov 27 2000

Configure Command './configure' '--with-config-file-path=/etc/httpd' '--disable-debug' '--with-imap=/usr/local/imap' '--with-mysql=/usr/local/mysql' '--with-apache=../apache_1.3.14' '--enable-track-vars' '--prefix=/usr' '--with-regex=system' '--with-gettext' '--with-gd=shared' '--with-jpeg-dir=/usr' '--with-png' '--with-zlib' '--enable-pic' '--with-db2' '--with-db3' '--with-gdbm' '--enable-debugger' '--enable-magic-quotes' '--enable-safe-mode' '--enable-sysvsem' '--enable-sysvshm' '--with-exec-dir=/usr/bin' '--enable-ftp' '--enable-inline-optimization' '--with-xml' '--with-ldap' '--enable-shared' '--enable-yp'



Server API Apache

Virtual Directory Support disabled

Configuration File (php.ini) Path /etc/httpd

ZEND_DEBUG disabled

Thread Safety disabled







 This program makes use of the Zend scripting language engine:

Zend Engine v1.0.3, Copyright (c) 1998-2000 Zend Technologies

    with Zend Optimizer v1.0.0, Copyright (c) 1998-2000, by Zend Technologies











속도 테스트



자신의 시스템에서 다음과 같은 프로그래밍으로 Optimizer하기전과 비교해 보세요.



<?

    $start = time();

    for ( $i = 1; $i <= 5000000; $i++ );

    $t_time = time() - $start;

    echo "Time : $t_time";

?>            


참고로 저의 PC에서는 처음 14초가 나왔는데 Optimizer를 하고난후 7초가 나왔습니다.





12. 시스템 부팅시 자동으로 아파치 데몬과 MySQL데몬 실행하기

/etc/rc.d/rc.local 파일을 열어서 마지막 줄에 다음 명령을 입력한다.


[root@www /root]#vim /etc/rc.d/rc.local


/usr/local/apache/bin/apachectl start

/usr/local/mysql/bin/mysql.server &



또는 다음과 같이 배포판처럼 부팅시 실행과정을 확인하도록 만들 수도 있다.



[root@www root]# cp -p /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd

[root@www root]# cp -p /usr/local/mysql/bin/mysql.server /etc/rc.d/init.d/mysqld

[root@www root]# cd /etc/rc.d/rc3.d

[root@www rc3.d]# ln -s /etc/rc.d/init.d/httpd S85httpd

[root@www rc3.d]# ln -s /etc/rc.d/init.d/mysqld S85mysqld



혹시 서버를 xwindow로 부팅되도록 해두었다면 /etc/rc.d/rc5.d 디렉토리에 같은 방법으로 설정해 두면 된다



[root@www2 rc3.d]#reboot    리부팅을 시켜 잘 실행이 되는지 확인하자.





이상으로 MySQL+Apache+PHP4+IMAP+Zend Optimizer 의 설정을 모두 마쳤습니다.

부족한 내용이 많지만 이 글을 통해 리눅스에 입문하는 분들께 많은 도움이 되기를 바랍니다.



2001. 1. 28     백명훈(mhbaek@chollian.net)

###################################################################################################



또 좀 다른 아파치 + PHP 설치 방법...





설치하기



    %주의 : 여기서는 쓰고자 하는 DB들과 gd, imap이 깔려있는 상태라 가정한다.

     위의 부분들에 대해서는 kldp내의 문서를 참조하기 바란다.





    # 패키지 풀기

    $ gzip -d -c apache_1.3.12.tar.gz | tar xvf -

    $ gzip -d -c mod_ssl-2.6.2-1.3.12.tar.gz | tar xvf -

    $ gzip -d -c php-4.0.0.tar.gz | tar xvf -



    # 아파치 소스 위치 확인 => 아파치를 설치하는 곳이 아닌 소스 위치다 헷갈리지 말기.

    %참고로 필자는 apache는 /usr/local/src/apache-1.3.12에

     mod_ssl-2.6.2-1.3.12는 /usr/local/src/mod_ssl-2.6.2-1.3.12에 소스를 풀었다

    $ cd mod_ssl-2.6.2-1.3.12

    $ ./configure \

          --with-apache=../apache_1.3.12

    $ cd ..

    # mv apache_1.3.12 apache

    #  PHP를 컴파일 하기 전의 아파치 사전 설정

    $ cd apache

    $ ./configure --prefix=/usr/local/apache

    $ cd ..



    # PHP컴파일 하기 (DB,imap,gd,apache)

    $ cd ../php-4.0.0

    $ CFLAGS='-O2 -I/path/to/openssl/include' \

      ./configure --with-apache=../apache --with-mysql=/usr/local/mysql --with-imap=/usr/local/imap \

   --enable-track-vars --disable-debug



    $ gmake

    $ gmake install

    $ cd ..



    # Apache 와 mod_ssl, PHP3, etc...컴파일하기.(마무리 하기)

    $ cd apache_1.3.x

    $ SSL_BASE=/path/to/openssl \

      ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a \

     --enable-module=php4

    $ make

    $ make certificate

    $ make install



이제 다 마무리 되었다.

+--------------------------------------------------------+
| You now have successfully built and installed the      |
| Apache 1.3 HTTP server. To verify that Apache actually |
| works correctly you now should first check the         |
| (initially created or preserved) configuration files   |
|                                                        |
|   /usr/local/apache/conf/httpd.conf
|                                                        |
| and then you should be able to immediately fire up     |
| Apache the first time by running:                      |
|                                                        |
|   /usr/local/apache/bin/apachectl start
|                                                        |
| Or when you want to run it with SSL enabled use:       |
|                                                        |
|   /usr/local/apache/bin/apachectl startssl
|                                                        |
| Thanks for using Apache.       The Apache Group        |
|                                http://www.apache.org/  |
+--------------------------------------------------------+



위 안내 메세지가 제대로 뜬다면 성공한 것이다.

conf파일을 수정하여 기동하자.

$cd /usr/local/apache/bin/apachectl startssl

설치중에 넣었던 패스워드를 넣으면 기동이 된다. ps ax | grep httpd로 확인해 본다.

:)







--------------------------------------------------------------------------------

다음 이전 차례