#!/bin/sh # # This script install qmail on OpenBSD. # Tested with OpenBSD 4.1. # By Guilherme M. Schroeder # 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 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" # create the users first. groupadd nofiles groupadd qmail useradd -g nofiles -d /var/qmail/alias -s /sbin/nologin alias 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 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 # create the directories mkdir /var/qmail mkdir /var/log/qmail /var/log/qmail/qmail-send mkdir /var/log/qmail/qmail-smtpd /var/log/qmail/qmail-pop3d chown -R qmaill.wheel /var/log/qmail chmod -R 750 /var/log/qmail mkdir /service /var/qmail/supervise mkdir /var/qmail/supervise/qmail-smtpd /var/qmail/supervise/qmail-smtpd/log chmod +t /var/qmail/supervise/qmail-smtpd mkdir /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-send/log chmod +t /var/qmail/supervise/qmail-send mkdir /var/qmail/supervise/qmail-pop3d /var/qmail/supervise/qmail-pop3d/log 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 /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp chmod 644 /etc/tcp.smtp.cdb echo "Reloaded /etc/tcp.smtp." ;; help) 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 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\` if [ -z "\$VPOPMAILUID" -o -z "\$VPOPMAILGID" -o -z "\$MAXSMTPD" -o -z "\$LOCAL" ]; then echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in echo /var/qmail/supervise/qmail-smtpd/run exit 1 fi if [ ! -f /var/qmail/control/rcpthosts ]; then echo "No /var/qmail/control/rcpthosts!" echo "Refusing to start SMTP listener because it'll create an open relay" exit 1 fi 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 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/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 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/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-pop3 /service qmailctl stop >/dev/null 2>&1 echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp qmailctl cdb >/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" 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 "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 "OBS: change your sendmail path at /etc/mailer.conf to /var/qmail/bin/sendmail" echo "OBS: comment the sendmail line at crontab job" echo "OBS: set sendmail_flags=NO at rc.conf and kill the sendmail proccess" echo "OBS: remove nosuid flag from /var filesystem in fstab, or use another partition for /var/qmail ;)"