++qmail script

Signed-off-by: Nico Schottelius <nico@brief.schottelius.org>
This commit is contained in:
Nico Schottelius 2011-11-02 23:45:48 +01:00
parent 12236805c3
commit 9009f9646d

160
install-qmail Executable file
View file

@ -0,0 +1,160 @@
#!/bin/sh
# (c) Nico Schottelius 2003
# Last Modified: So Okt 2 17:07:44 CEST 2005
# install qmail
# - now with netqmail patch
# - tls/ssl
# - "errno patch"
#
##export DIETLIBC_HOME=/usr/packages/dietlibc
QMAIL_HOME=/usr/packages/qmail-1.03-ssl
UCSPI_TCP_HOME=/usr/packages/ucspi-tcp-0.88
TMP=/tmp/qmail-build # where to build, download
WGET="wget -c"
# qmail
export HOSTNAME=creme.schottelius.org
export POSTMASTER=nico-root@creme.schottelius.org
export RELAYHOSTS="213.146.113.242"
set -e # exit on error
mkdir -p "${TMP}"; cd "${TMP}"
##echo "========= installing dietlibc ============="
##echo retrieving dietlibc..
##cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co dietlibc
##cd dietlibc
##make prefix=${DIETLIBC_HOME}
##make prefix=${DIETLIBC_HOME} install
##ln -fs ${DIETLIBC_HOME}/bin/diet /usr/bin
##cd ..
echo "========= installing qmail ============="
# cleanup, double patching is bad!
rm -rf qmail-1.03
echo retrieving qmail..
$WGET ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
echo unpacking...
tar xfz qmail-1.03.tar.gz
echo retrieving netqmail-patch..
NETQMAILPATCH=qmail-1.03-netqmail-1.05-fefe3.diff.bz2
$WGET http://www.fefe.de/qmail/$NETQMAILPATCH
echo patching...
cd qmail-1.03
bunzip2 -c ../$NETQMAILPATCH | patch -p1
echo '#include <time.h>' > TMPFILE
cat qmail-smtpd.c >> TMPFILE
mv TMPFILE qmail-smtpd.c
echo setting up dir...
mkdir -p "$QMAIL_HOME"
echo install qmail users/groups..
# may already exist
set +e
groupadd nofiles
useradd -g nofiles -d $QMAIL_HOME/alias alias
useradd -g nofiles -d $QMAIL_HOME qmaild
useradd -g nofiles -d $QMAIL_HOME qmaill
useradd -g nofiles -d $QMAIL_HOME qmailp
groupadd qmail
useradd -g qmail -d $QMAIL_HOME qmailq
useradd -g qmail -d $QMAIL_HOME qmailr
useradd -g qmail -d $QMAIL_HOME qmails
set -e
echo preparing qmail..
##echo 'diet -Os gcc -O2 -I/usr/include/openssl' > conf-cc
echo 'gcc -O2 -I/usr/include/openssl -include /usr/include/errno.h' > conf-cc
echo 'gcc -s' > conf-ld
echo "$QMAIL_HOME" > conf-qmail
echo building qmail..
make setup check
echo configuring qmail..
./config-fast $HOSTNAME
echo "&$POSTMASTER" > ~alias/.qmail-postmaster
echo "&$POSTMASTER" > ~alias/.qmail-root
echo "&$POSTMASTER" > ~alias/.qmail-mailer-daemon
chmod 644 ~alias/.qmail*
echo "PATH=\"$QMAIL_HOME/bin:\$PATH\" qmail-start ./Maildir/ splogger qmail &" > $QMAIL_HOME/rc
chmod 750 $QMAIL_HOME/rc
echo creating defaults for new users..
for dir in tmp cur new; do
mkdir -p /etc/skel/Maildir/$dir
done
echo "./Maildir/" > /etc/skel/.qmail
echo done with qmail...now setting up ucspi-tcp
cd ..
# ucspi
echo "========= installing ucspi-tcp ============="
echo retrieving ucspi-tcp..
$WGET http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
echo unpacking ucspi-tcp..
tar xfz ucspi-tcp-0.88.tar.gz
echo building ucspi-tcp..
cd ucspi-tcp-0.88
echo "$UCSPI_TCP_HOME" > conf-home
echo 'gcc -O2 -include /usr/include/errno.h' > conf-cc
make setup check
for bin in $UCSPI_TCP_HOME/bin/*; do
ln -sf "$UCSPI_TCP_HOME/bin/$bin" /usr/bin
done
echo configurinc ucspi-tcp..
for hosts in $RELAYHOSTS; do
echo "$hosts:allow,RELAYCLIENT=\"\"" >> /etc/tcp.smtp
done
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
# init script
# header
cat << EOF > /etc/init.d/qmail
#
# qmail init: autogenerated by install-qmail by Nico Schottelius
#
EOF
echo MAILHOST="$HOSTNAME" >> /etc/init.d/qmail
echo "QMAILD=`cat /etc/passwd|grep qmaild | awk -F':' '{ print $3 }'`" >> /etc/init.d/qmail
echo "NOFILES=`cat /etc/group|grep nofiles | awk -F':' '{ print $3 }'`" >> /etc/init.d/qmail
cat << EOF >> /etc/init.d/qmail
case "\$1" in
start)
# ferne
tcpserver -x /etc/tcp.smtp.cdb -v -u \$QMAILD -g \$NOFILES 0 smtp $QMAIL_HOME/bin/qmail-smtpd 2>&1 | $QMAIL_HOME/bin/splogger smtpd 3 &
# lokal
$QMAIL_HOME/rc
# pop3
tcpserver 0 110 $QMAIL_HOME/bin/qmail-popup \$MAILHOST /bin/checkpassword $QMAIL_HOME/bin/qmail-pop3d Maildir &
;;
stop)
killall qmail-send tcpserver
;;
esac
EOF
chmod 750 /etc/init.d/qmail
echo "Installation done."