All pastes #583799 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-06-22 14:57 UTC
rendered paste body
#!/bin/sh
# 
# This script install qmail on OpenBSD.
# Tested with OpenBSD 4.1.
# By Guilherme M. Schroeder <skanabiz at gmail>
# 

echo "==> Getting sources"
mkdir sources
cd sources
ftp http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
ftp http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
ftp http://www.qmail.org/netqmail-1.05.tar.gz 
ftp http://www.linuxti.pro.br/patches/netqmail-1.05-but3k4-V2-20070101.patch 
ftp http://ufpr.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.17.tar.gz 
#ftp http://www.inter7.com/devel/autorespond-2.0.5.tar.gz 
#ftp http://ufpr.dl.sourceforge.net/sourceforge/qmailadmin/qmailadmin-1.2.9.tar.gz

echo "==> Installing daemontools"
tar xzf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
./package/install >/dev/null 2>&1
rm /command/*
cp ../daemontools/command/* /command
cd ../../

echo "==> Installing ucspi"
tar xzf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make >/dev/null 2>&1
make setup check >/dev/null 2>&1
cd ../

echo "==> Installing qmail"

# qmail

# create some directories.
mkdir -p /var/qmail/alias
mkdir -p /var/log/qmail/qmail-{smtpd,pop3d,send}
mkdir -p /var/qmail/supervise/qmail-{smtpd,send,pop3d}/log

# create the users.
groupadd nofiles
groupadd qmail
useradd -g qmail -d /var/qmail -s /sbin/nologin qmailq
useradd -g qmail -d /var/qmail -s /sbin/nologin qmailr
useradd -g qmail -d /var/qmail -s /sbin/nologin qmails
useradd -g nofiles -d /var/qmail -s /sbin/nologin qmaild
useradd -g nofiles -d /var/qmail -s /sbin/nologin qmaill
useradd -g nofiles -d /var/qmail -s /sbin/nologin qmailp
useradd -g nofiles -d /var/qmail/alias -s /sbin/nologin alias 

# set permissions.
chown -R qmaill.wheel /var/log/qmail
chmod -R 750 /var/log/qmail
chmod +t /var/qmail/supervise/qmail-smtpd
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-pop3d

# now compile qmail.
tar xzf netqmail-1.05.tar.gz
cd netqmail-1.05
./collate.sh >/dev/null 2>&1
cd netqmail-1.05
patch -p0 < ../../netqmail-1.05-but3k4-V2-20070101.patch >/dev/null 2>&1
make setup check  >/dev/null 2>&1
./config-fast `hostname` >/dev/null 2>&1

# configuration.
echo "./Maildir" > /var/qmail/control/defaultdelivery

# /var/qmail/rc
cat > /var/qmail/rc << EOF
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" qmail-start "\`cat /var/qmail/control/defaultdelivery\`" 
EOF

chmod 755 /var/qmail/rc

# qmailctl
cat > /var/qmail/bin/qmailctl << EOF
#!/bin/sh
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH

QMAILDUID=\`id -u qmaild\`
NOFILESGID=\`id -g qmaild\`

case "\$1" in
  start)
    echo "Starting qmail"
    if svok /service/qmail-send ; then
      svc -u /service/qmail-send
    else
      echo qmail-send supervise not running
    fi
    if svok /service/qmail-smtpd ; then
      svc -u /service/qmail-smtpd
    else
      echo qmail-smtpd supervise not running
    fi
    if [ -d /var/lock/subsys ]; then
      touch /var/lock/subsys/qmail
    fi
    ;;
  stop)
    echo "Stopping qmail..."
    echo "  qmail-smtpd"
    svc -d /service/qmail-smtpd
    echo "  qmail-send"
    svc -d /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 /var/vpopmail/etc/tcp.smtp.cdb /var/vpopmail/etc/tcp.smtp.tmp < /var/vpopmail/etc/tcp.smtp
    chmod 644 /var/vpopmail/etc/tcp.smtp.cdb
    echo "Reloaded /var/vpopmail/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 -- schedules queued messages for immediate delivery
 reload -- sends qmail-send HUP, rereading locals and virtualdomains
  queue -- shows status of queue
   alrm -- same as doqueue
  flush -- same as doqueue
    hup -- same as reload
HELP
    ;;
  *)
    echo "Usage: \$0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"
    exit 1
    ;;
esac

exit 0
EOF

chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin

# qmail-send/run
cat > /var/qmail/supervise/qmail-send/run << EOF
#!/bin/sh
exec /var/qmail/rc
EOF

# qmail-send/log/run
cat > /var/qmail/supervise/qmail-send/log/run << EOF
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s5000000 /var/log/qmail/qmail-send
EOF

# qmail-smtpd/run
cat > /var/qmail/supervise/qmail-smtpd/run << EOF
#!/bin/sh
VPOPMAILUID=\`id -u vpopmail\`
VPOPMAILGID=\`id -g vpopmail\`
MAXSMTPD=\`cat /var/qmail/control/concurrencyincoming\`
LOCAL=\`head -1 /var/qmail/control/me\`                

exec /usr/local/bin/softlimit -m 5000000 \
	/usr/local/bin/tcpserver -v -R -l "\$LOCAL" -x /var/vpopmail/etc/tcp.smtp.cdb -c "\$MAXSMTPD" \
	-u "\$VPOPMAILUID" -g "\$VPOPMAILGID" 0 smtp /usr/local/bin/rblsmtpd -r bl.spamcop.net -r sbl-xbl.spamhaus.org \
	/var/qmail/bin/qmail-smtpd /var/vpopmail/bin/vchkpw /usr/bin/true 2>&1
EOF

# qmail-smtpd/log/run
cat > /var/qmail/supervise/qmail-smtpd/log/run << EOF
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s5000000 /var/log/qmail/qmail-smtpd
EOF

# qmail-pop3d/run
cat > /var/qmail/supervise/qmail-pop3d/run << EOF
#!/bin/sh
DOMAIN=\`cat /var/qmail/control/defaultdomain\`
	exec /usr/local/bin/softlimit -m 5000000 \
	/usr/local/bin/tcpserver -v -R -H -l 0 110 /var/qmail/bin/qmail-popup \
	\$DOMAIN /var/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
EOF

# qmail-pop3d/log/run
cat > /var/qmail/supervise/qmail-pop3d/log/run << EOF
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s5000000 /var/log/qmail/qmail-pop3d
EOF

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-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run

ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /var/qmail/supervise/qmail-pop3d /service
qmailctl stop >/dev/null 2>&1

echo admin > /var/qmail/alias/.qmail-root
echo admin > /var/qmail/alias/.qmail-postmaster
ln -s /var/qmail/alias/.qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon
echo admin > /var/qmail/alias/.qmail-webmaster
echo admin > /var/qmail/alias/.qmail-hostmaster
chmod 644 /var/qmail/alias/.qmail-*

echo "[!%#:*^(){}]" > /var/qmail/control/badmailfrom
echo "[!%#:*^(){}]" > /var/qmail/control/badmailto
echo error > /var/qmail/control/bouncefrom
cat /var/qmail/control/defaultdomain > /var/qmail/control/bouncehost
echo 60 > /var/qmail/control/concurrencylocal
echo 60 > /var/qmail/control/concurrencyremote
echo 60 > /var/qmail/control/concurrencyincoming
echo 1 > /var/qmail/control/heloreq
echo 60 > /var/qmail/control/tarpitcount
echo 60 > /var/qmail/control/tarpitdelay
chmod 644 /var/qmail/control/badmailfrom
chmod 644 /var/qmail/control/badmailto
chmod 644 /var/qmail/control/bouncefrom
chmod 644 /var/qmail/control/bouncehost
chmod 644 /var/qmail/control/concurrencylocal
chmod 644 /var/qmail/control/concurrencyremote
chmod 644 /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/heloreq
chmod 644 /var/qmail/control/tarpitcount
chmod 644 /var/qmail/control/tarpitdelay

# vpopmail
echo "==> Installing vpopmail with mysql support"
mkdir -p /var/vpopmail/etc
groupadd vchkpw 
useradd -g vchkpw -d /var/vpopmail -s /sbin/nologin vpopmail
cd ../../
tar xzf vpopmail-5.4.17.tar.gz
cd vpopmail-5.4.17
./configure --enable-roaming-users \
--enable-relay-clear-minutes=30 \
--enable-auth-module=mysql \
--enable-incdir=/usr/local/include/mysql \
--enable-libdir=/usr/local/lib/mysql \
--disable-man-domains >/dev/null 2>&1
make >/dev/null 2>&1
make install-strip >/dev/null 2>&1
crontab -l > /tmp/crontab.vpopmail
echo "# Clear relay after 30 minutes #
30 * * * * /var/vpopmail/bin/clearopensmtp >/dev/null 2>&1 " >> /tmp/crontab.vpopmail
crontab /tmp/crontab.vpopmail -u root
rm /tmp/crontab.vpopmail

echo '127.:allow,RELAYCLIENT=""' >/var/vpopmail/etc/tcp.smtp
qmailctl cdb >/dev/null 2>&1

echo "create database vpopmail" | mysql
echo "grant all privileges on vpopmail.* to 'vpopmail'@'localhost' identified by 'lerolero'" | mysql
echo "flush privileges" | mysql
echo "localhost|0|vpopmail|lerolero|vpopmail" > /var/vpopmail/etc/vpopmail.mysql

echo "==> Installation finished"
echo "==> Next steps:"
echo "-> Set sendmail_flags=NO at rc.conf and kill sendmail proccess"
echo "-> Change your sendmail path in /etc/mailer.conf to /var/qmail/bin/sendmail"
echo "-> Comment the sendmail line at crontab jobs"
echo "-> Remove nosuid flag from /var filesystem in fstab, or use another partition for /var/qmail ;)"
echo "-> Reboot to start svscaboot"