Qmail+VPOP+qmailAdmin 설치 스크립트

Qmail+VPOP+qmailAdmin 설치 스크립트입니다.
기존 http://qmail.kldp.org 에 있는 Qmail설치스크립트를 가상사용자용으로
만든것으로 레드햇 8.0에서만 테스트되었습니다.
만약 다른버젼에서 문제점이나 기타 문의사항은 제 블로그에 남겨주시면....
친절히...는 못되더라도 도움되도록 노력하겠습니다.
Qmail 설치압박에서 벗어나길 빌며 이 스크립트를 바칩니다.

아참 필요프로그램은 제가 지워버리는바람에 따로 받으셔야 합니다.
구글에서 파일명치면 다 나오니 어렵지 않으실겁니다. 해당 파일을 모으시는 수고는
감수해야겠지만 ㅠ.ㅠ 제가 따로 시간날때 모아 제 블로그에 올려놓을테니 현재로서는
수고스럽더라도 이해해주시고요. 성공을 빌겠습니다.

#!/bin/sh
################################################################
#                                       
#                Qmail Setup               
#                                       
# Author    : Blueⓘ                         
# Homepage  : http://bluei.softhi.com                   
# E-Mail    : bluei@softhi.com                   
# Created date : 2004-09-19                       
# Updated date : 2004-09-20                       
# Version    : 0.0.1                         
################################################################

################################################################
# 기본 변수 설정
################################################################
pw_dir=`pwd`
QMAILADMIN_ROOT="/home/bluei/SOFTHI.COM/softhi.com/cgi-bin"

QMAIL="qmail-1.03"
DAEMONTOOL="daemontools-0.76"
RBLSMTPD="rblsmtpd-0.70"
UCSPI="ucspi-tcp-0.88"
QMAILADMIN="qmailadmin-1.2.1"
AUTORESPOND="autorespond-2.0.4"
VPOP="vpopmail-5.4.6"
EZMLM="ezmlm-0.53"
EZMLMIDX="ezmlm-idx-0.42"

QMAIL_FILE=$QMAIL.tar.gz
DAEMONTOOL_FILE="$DAEMONTOOL.tar.gz"
RBLSMTPD_FILE="$RBLSMTPD.tar.gz"
UCSPI_FILE="$UCSPI.tar.gz"
QMAILADMIN_FILE="$QMAILADMIN.tar.gz"
AUTORESPOND_FILE="$AUTORESPOND.tar.gz"
VPOP_FILE="$VPOP.tar.gz"
EZMLM_FILE="$EZMLM.tar.gz"
EZMLMIDX_FILE="$EZMLMIDX.tar.gz"

################################################################
# Qmail 필요 라이브러리 설치
################################################################
    # 설치 리포트 파일 삭제
    rm -f $pw_dir/.report_setupreport
   
    LibFile="LibFile.tar.gz"
    Lib_asm="libasm.tar.gz"
    Lib_linux="liblinux.tar.gz"
    Lib_arpa="libarpa.tar.gz"
   
    cp $pw_dir/$LibFile /usr/include/
    cd /usr/include/
    tar xvzf $LibFile
   
    if [ -d /usr/include/asm ]; then
        echo "Already installed $Lib_asm"
    else
        tar xvzf $Lib_asm
    fi
    if [ -d /usr/include/asm ]; then
        echo "Already installed $Lib_linux"
    else
        tar xvzf $Lib_linux
    fi
    if [ -d /usr/include/asm ]; then
        echo "Already installed $Lib_arpa"
    else
        tar xvzf $Lib_arpa
    fi
    rm -f    $LibFile $Lib_asm $Lib_linux $Lib_arpa
    cd $pw_dir

################################################################
# 기본 정보 입력
################################################################
    clear

    # 도메인 이름 입력
    echo -n "Input your domain name:"
    read do_m
        if [ "$do_m" == "" ]; then
        echo "ERROR: You must input your domain name!"
        exit
    fi
    echo -n "Input user name of postmaster:"
        read p_name
        if [ "$p_name" == "" ]; then
        echo "ERROR: You must input user name of postmaster!"
        exit
    fi
    echo
   
    # 포스트마스터 정보 입력
    echo "Your domain name is "$do_m" and postmaster is "$p_name"."
        echo -n "Right ?(y/n)"
        read a_ns
    if [ "$a_ns" != "y" ]; then
          if [ "$a_ns" != "Y" ]; then
        echo "OK. retry next time. bye."
            exit
      fi
    fi
    pw_dir=$PWD

################################################################
# Qmail 설치 여부 체크
################################################################
    echo
    echo -n "Now checking & deleting your old program......"
    if [ -e /usr/local/sbin/qmail ]; then
        rm -rf /usr/local/sbin/qmail
    fi
    if [ -e /etc/rc.d/rc0.d/K30qmail ]; then
        rm -rf /etc/rc.d/rc0.d/K30qmail
    fi
    if [ -e /etc/rc.d/rc1.d/K30qmail ]; then
        rm -rf /etc/rc.d/rc1.d/K30qmail
    fi
    if [ -e /etc/rc.d/rc2.d/S80qmail ]; then
        rm -rf /etc/rc.d/rc2.d/S80qmail
    fi
    if [ -e /etc/rc.d/rc3.d/S80qmail ]; then
        rm -rf /etc/rc.d/rc3.d/S80qmail
    fi
    if [ -e /etc/rc.d/rc4.d/S80qmail ]; then
        rm -rf /etc/rc.d/rc4.d/S80qmail
    fi
    if [ -e /etc/rc.d/rc5.d/S80qmail ]; then
        rm -rf /etc/rc.d/rc5.d/S80qmail
    fi
    if [ -e /etc/rc.d/rc6.d/K80qmail ]; then
        rm -rf /etc/rc.d/rc6.d/K80qmail
    fi
    if [ -e /etc/rc.d/init.d/qmail ]; then
        /etc/rc.d/init.d/qmail stop &> $pw_dir/.report_setupreport
    fi
    if [ -e /usr/local/src/qmail ]; then
        rm -rf /usr/local/src/qmail
    fi
    if [ -e /var/qmail ]; then
        rm -rf /var/qmail
    fi
    if [ -e /var/log/qmail ]; then
        rm -rf /var/log/qmail
    fi
    if [ -e /etc/rc.d/init.d/qmail ]; then
        rm -rf /etc/rc.d/init.d/qmail
    fi
    if [ -e /home/vpopmail ]; then
        rm -rf /home/vpopmain
    fi
    rm -rf /home/vpopmain
    rm -rf /var/qmail
    echo "Done."

################################################################
# Qmail 설치 소스 복사
################################################################
    echo -n "Now copying source files & making qmail script file......"
    mkdir -p /usr/local/src/qmail
    cp -f $QMAIL_FILE $DAEMONTOOL_FILE $RBLSMTPD_FILE $UCSPI_FILE $VPOP_FILE $QMAILADMIN_FILE $AUTORESPOND_FILE $EZMLM_FILE $EZMLMIDX_FILE /usr/local/src/qmail

################################################################
# Qmail 실행 스크립트 작성
################################################################
    cp qmail /etc/rc.d/init.d/qmail
    echo "Done."

################################################################
# Qmail 설치 소스 압축해제
################################################################
    echo -n "Now uncompressing source tar files......"
    cd /usr/local/src/qmail
    tar xvzf $QMAIL_FILE &> $pw_dir/.report_setupreport
    cd /usr/local/src/qmail
    tar xvzf $UCSPI_FILE &> $pw_dir/.report_setupreport
    cd /usr/local/src/qmail
    tar xvzf $DAEMONTOOL_FILE &> $pw_dir/.report_setupreport 
    cd /usr/local/src/qmail 
    tar zxvf $AUTORESPOND_FILE &> $pw_dir/.report_setupreport 
    cd /usr/local/src/qmail 
    tar zxvf $QMAILADMIN_FILE &> $pw_dir/.report_setupreport 
    cd /usr/local/src/qmail 
    tar zxvf $VPOP_FILE &> $pw_dir/.report_setupreport 
    cd /usr/local/src/qmail 
    tar zxf $EZMLM_FILE &> $pw_dir/.report_setupreport 
    cd /usr/local/src/qmail 
    tar zxf $EZMLMIDX_FILE &> $pw_dir/.report_setupreport
    echo "Done."
################################################################

################################################################
# Qmail 실행 관련 설정
################################################################
    echo -n "Now making qmail directory & adding daemon users......"
   
    mkdir /var/qmail        # Qmail 디렉토리 생성
   
    PATH=/usr/sbin:$PATH
    export PATH
    groupadd nofiles &> $pw_dir/.report_setupreport
    useradd -g nofiles -d /var/qmail/alias alias &> $pw_dir/.report_setupreport
    useradd -g nofiles -d /var/qmail qmaild &> $pw_dir/.report_setupreport
    useradd -g nofiles -d /var/qmail qmaill &> $pw_dir/.report_setupreport
    useradd -g nofiles -d /var/qmail qmailp &> $pw_dir/.report_setupreport
    groupadd qmail &> $pw_dir/.report_setupreport
    useradd -g qmail -d /var/qmail qmailq &> $pw_dir/.report_setupreport
    useradd -g qmail -d /var/qmail qmailr &> $pw_dir/.report_setupreport
    useradd -g qmail -d /var/qmail qmails &> $pw_dir/.report_setupreport
    groupadd vchkpw &> $pw_dir/.report_setupreport
    useradd -g vchkpw vpopmail &> $pw_dir/.report_setupreport
   
    echo "Done."

################################################################
# Qmail 컴파일
################################################################
    echo -n "Now compiling source (it takes a few minute)"
    echo; echo

    # Qmail 설치
    cd /usr/local/src/qmail/$QMAIL
    patch -p1 < $pw_dir/qmail-103.patch
    echo -n "Qmail compiling"
    make &> $pw_dir/.report_setupreport
    make setup check &> $pw_dir/.report_setupreport
    echo "......Done"
   
    # UCSPI 설치
    echo -n "UCSPI compiling"
    cd /usr/local/src/qmail/$UCSPI
    make &> $pw_dir/.report_setupreport
    make setup check &> $pw_dir/.report_setupreport
    echo "......Done"
   
    # Daemontool 설치
    echo -n "Daemontool compiling"
    cd /usr/local/src/qmail/$DAEMONTOOL
    ./package/install &> $pw_dir/.report_setupreport
    echo "......Done"
   
    # Autorespond 설치
    echo -n "Autorespond compiling"
    cd /usr/local/src/qmail/$AUTORESPOND
    make &> $pw_dir/.report_setupreport
    cp autorespond /usr/local/bin/ &> $pw_dir/.report_setupreport
    echo "......Done"
   
    # VPOP 설치
    echo -n "VPOP compiling"
    cd /usr/local/src/qmail/$VPOP
    ./configure --enable-logging=v --enable-roaming-users=y &> $pw_dir/.report_setupreport
    #./configure --enable-logging=v --enable-roaming-users=y --enable-mysql=y --enable-many-domains=n   

    # mysql 사용할경우
    make &> $pw_dir/.report_setupreport
    make install-strip &> $pw_dir/.report_setupreport 

    # VPOP에 Default Domain 설정
    echo "$do_m" > ~vpopmail/etc/defaultdomain
    echo "......Done"
   
    # EZMLM 설치
    echo -n "Ezmlm compiling"
    cd /usr/local/src/qmail
    mv -f $EZMLMIDX/* $EZMLM/
    cd /usr/local/src/qmail/$EZMLM
    patch < idx.patch &> $pw_dir/.report_setupreport
    make &> $pw_dir/.report_setupreport
    make man &> $pw_dir/.report_setupreport
    make setup    &> $pw_dir/.report_setupreport
    echo "......Done"
   
    # QmailAdmin 설치
    echo -n "QmailAdmin compiling"
    cd /usr/local/src/qmail/$QMAILADMIN
    mkdir -p $QMAILADMIN_ROOT
    ./configure --enable-cgibindir=$QMAILADMIN_ROOT &> $pw_dir/.report_setupreport
    make &> $pw_dir/.report_setupreport
    make install-strip &> $pw_dir/.report_setupreport
    echo "......Done"

################################################################
# Qmail 환경설정
################################################################
    echo; echo
    echo -n "Now setup environment......"

    /usr/local/src/qmail/$QMAIL/config-fast $do_m &> $pw_dir/.report_setupreport

    # default delivery를 위한 파일을 편집
    echo "./Mailbox" >/var/qmail/control/defaultdelivery

    # 2.8 큐메일을 가동합니다.
    # /var/qmail/boot디렉토리에는 여러가지 설정에 대한 본보기 큐메일 붓
      스크립트가 있습니다.
    # /var/spool/mail 대 $HOME/Mailbox, procmail# 또는 dot-forward를 이용하기,
    # 그리고 이것들의 다양한 결합. 한번 부담없이 검토해보시기 바랍니다. 우리는 설치를
      위해서 다음을 이용하겠습니다.:
   
    # /var/qmail/rc
    echo "#!/bin/sh" > /var/qmail/rc
    echo "# Using stdout for logging" >> /var/qmail/rc
    echo "# Using control/defaultdelivery from qmail-local to deliver messages by default" >> /var/qmail/rc
    echo "exec env - PATH="/var/qmail/bin:$PATH" " >> /var/qmail/rc
    echo "qmail-start ./Maildir/ ">> /var/qmail/rc

    # 이상의 rc 파일에 실행권한을 준다.
    chmod 755 /var/qmail/rc
   
    # qmail log dircetory를 만들어준다.
    mkdir /var/log/qmail
    mkdir -p /var/log/qmail/qmail-pop3d
   
    # run 레벨에 따른 simbolic link
    ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc0.d/K30qmail
    ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc1.d/K30qmail
    ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc2.d/S80qmail
    ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc3.d/S80qmail
    ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc4.d/S80qmail
    ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc5.d/S80qmail
    ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc6.d/K80qmail

    # supervise를 위한 log 파일을 만들어주고 권한을 부여.
    mkdir -p /var/qmail/supervise/qmail-send/log
    mkdir -p /var/qmail/supervise/qmail-smtpd/log
    mkdir -p /var/qmail/supervise/vpop
    mkdir -p /var/qmail/supervise/qmail-pop3d
    mkdir -p /var/qmail/supervise/qmail-pop3d/log
    mkdir -p /var/qmail/supervise/qmail-pop3d/supervise
    chmod +t /var/qmail/supervise/qmail-send
    chmod +t /var/qmail/supervise/qmail-smtpd
    chmod +t /var/qmail/supervise/vpop
    chmod +t /var/qmail/supervise/qmail-pop3d
    chmod +t /var/qmail/supervise/*
    chmod +t /var/qmail/supervise/*/log
   
    # /var/qmail/supervise/vpop/run 파일
    echo "#!/bin/sh" > /var/qmail/supervise/vpop/run
    echo "    VPOP_UID=`id -u vpopmail`" >> /var/qmail/supervise/vpop/run
    echo "    VPOP_GID=`id -g vpopmail`" >> /var/qmail/supervise/vpop/run
    echo "    exec /usr/local/bin/softlimit -m 2500000 " >> /var/qmail/supervise/vpop/run
    echo "    tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 " >> /var/qmail/supervise/vpop/run
    echo "    /var/qmail/bin/qmail-popup $do_m " >> /var/qmail/supervise/vpop/run
    echo "    /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1" >> /var/qmail/supervise/vpop/run

    # /var/qmail/supervise/qmail-send/run
    echo "#!/bin/sh" > /var/qmail/supervise/qmail-send/run
    echo "exec /var/qmail/rc" >> /var/qmail/supervise/qmail-send/run

    # /var/qmail/supervise/qmail-send/log/run
    echo "#!/bin/sh" > /var/qmail/supervise/qmail-send/log/run
    echo "exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail" >> /var/qmail/supervise/qmail-send/log/run

    # /var/qmail/supervise/qmail-pop3d/run
    echo "#!/bin/sh" > /var/qmail/supervise/qmail-pop3d/run
    echo "exec /usr/local/bin/tcpserver -v -R 0 pop3 /var/qmail/bin/qmail-popup "$do_m" /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1" >> /var/qmail/supervise/qmail-pop3d/run
   
    # /var/qmail/supervise/qmail-pop3d/log/run
    echo "#!/bin/sh" > /var/qmail/supervise/qmail-pop3d/log/run
    echo "exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 /var/log/qmail/qmail-pop3d" >> /var/qmail/supervise/qmail-pop3d/log/run
   
    # /var/qmail/supervise/qmail-smtpd/run
    echo "#!/bin/sh" > /var/qmail/supervise/qmail-smtpd/run
    echo "QMAILDUID=`id -u qmaild`" >> /var/qmail/supervise/qmail-smtpd/run
    echo "NOFILESGID=`id -g qmaild`" >> /var/qmail/supervise/qmail-smtpd/run
    echo "exec /usr/local/bin/softlimit -m 2000000 " >> /var/qmail/supervise/qmail-smtpd/run
    echo "  /usr/local/bin/tcpserver -vRHl 0 -x /etc/tcp.smtp.cdb " >> /var/qmail/supervise/qmail-smtpd/run
    #echo "  -x /home/vpopmail/etc/tcp.smtp.cdb " >> /var/qmail/supervise/qmail-smtpd/run
    echo "  -u $QMAILDUID -g $NOFILESGID 0 25 /var/qmail/bin/qmail-smtpd 2>&1 " >> /var/qmail/supervise/qmail-smtpd/run

    # /var/qmail/supervise/qmail-smtpd/log/run
    echo "#!/bin/sh" > /var/qmail/supervise/qmail-smtpd/log/run
    echo "exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd" >> /var/qmail/supervise/qmail-smtpd/log/run

    # 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/vpop/run
    chmod +x /var/qmail/supervise/*/run
    chmod +x /var/qmail/supervise/*/log/run

    # 그런 다음에, 로그디렉토리를 만듭니다.
    mkdir -p /var/log/qmail/smtpd           
    chown qmaill /var/log/qmail /var/log/qmail/smtpd
    chown qmaill:root /var/log/qmail/qmail-pop3d/

    # 기동스크립트에 실행권한을 부여하고, 실행경로에 있는 디렉토리로 링크합니다.
    # substitute the correct location of your rc dir on the next two lines
    chmod 755 /etc/rc.d/init.d/qmail                           
    ln -s /etc/rc.d/init.d/qmail /usr/local/sbin                   

    # 로컬호스트가 SMTP를 통해서 멜을 삽입 (inject)하도록 합니다.
    echo "127.0.0.1:allow,RELAYCLIENT=""" >/etc/tcp.smtp 
    echo "210.127.243.137:allow,RELAYCLIENT=""" >>/etc/tcp.smtp 
    /usr/local/sbin/qmail cdb &> $pw_dir/.report_setupreport               

    # 현존 MTA가 Sendmail이라면, init.d 스크립트를 stop인수를 주어 실행하여 멈출
      수 있습니다.
    if [ -e /etc/rc.d/init.d/sendmail ]; then
        /etc/rc.d/init.d/sendmail stop &> $pw_dir/.report_setupreport
    fi

    # 끝으로, 기존의 /usr/lib/sendmail을 큐메일판으로 바꿉니다.
    if [ -e /usr/lib/sendmail ]; then
        mv /usr/lib/sendmail /usr/lib/sendmail.old
        #chmod 0 /usr/lib/sendmail.old
    fi
    if [ -e /usr/sbin/sendmail ]; then
        mv /usr/sbin/sendmail /usr/sbin/sendmail.old
        #chmod 0 /usr/sbin/sendmail.old
        #rpm -e --nodeps sendmail &> $pw_dir/.report_setupreport
    fi
   
    # link
    chmod 755 /var/qmail/bin/sendmail
    ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
    ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

    # 시스템앨리어스를 만듭니다.
    echo $p_name > /var/qmail/alias/.qmail-root                     
    echo $p_name > /var/qmail/alias/.qmail-postmaster                 

    echo $p_name > /var/qmail/alias/.qmail-mailer-daemon     
    chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster
    echo "Done."
   
    # qmail daemon을 실행
    echo "Now starting qmail."; echo
    /usr/local/sbin/qmail start
    #rm -rf /usr/local/src/qmail
   
    # 도메인추가
    echo ; echo "Set Postmaster Password"; echo
    cd ~vpopmail/bin
    ./vadddomain $do_m
   
    # 기존POP3사용자 VPOP으로 전환
    echo ;echo "Converting System Pop3 User to VPOP User"
    ./vconvert -e -m

    echo; echo
    echo "All Done.";
    echo "Thank you for using this script !"; echo

Press ESC to close