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
bibaram