changeset 900:3d3031f8451d draft

added ./contrib/peer2anonet/peer2anonet --setup-qmail :-)
author d3v11 <d3v11@d3v11.ano>
date Sun, 29 Jan 2012 00:37:55 +0000
parents 9b7f52cfc228
children c678f1f6a7e3
files contrib/peer2anonet/peer2anonet
diffstat 1 files changed, 121 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/peer2anonet/peer2anonet	Sat Jan 28 02:20:54 2012 +0000
+++ b/contrib/peer2anonet/peer2anonet	Sun Jan 29 00:37:55 2012 +0000
@@ -25,6 +25,7 @@
     echo -e '\n    ./contrib/peer2anonet/peer2anonet --install-ucspi-tcp     installs ucspi-tcp'
     echo -e '\n    ./contrib/peer2anonet/peer2anonet --install-djbdns        installs djbdns'
     echo -e '\n    ./contrib/peer2anonet/peer2anonet --install-nacl          installs nacl'
+    echo -e '\n    ./contrib/peer2anonet/peer2anonet --setup-qmail           installs and configures qmail'
     echo -e '\n    ./contrib/peer2anonet/peer2anonet --configure-dns         configures dnscache and tinydns zones'
     echo -e '\n    ./contrib/peer2anonet/peer2anonet --update-dns            updates tinydns-ano zone\n'
     exit 0
@@ -370,6 +371,124 @@
     make setup check
     }
 
+SETUP_QMAIL(){
+    echo -e '\nSETUP QMAIL:\n'
+    [[ $(echo X`which gcc`) == X ]] && echo '   fatal error: cannot find gcc'
+    [[ $(echo X`which gcc`) == X ]] && exit 1
+    [[ $(echo X`which make`) == X ]] && echo '   fatal error: cannot find make'
+    [[ $(echo X`which make`) == X ]] && exit 1
+    [[ $(echo X`which tcpserver`) == X ]] && echo '   fatal error: needs ./contrib/peer2anonet/peer2nonet --install-ucspi-tcp'
+    [[ $(echo X`which tcpserver`) == X ]] && exit 1
+    [[ $(echo X`which svscanboot`) == X ]] && echo '   fatal error: needs ./contrib/peer2anonet/peer2nonet --install-daemontools'
+    [[ $(echo X`which svscanboot`) == X ]] && exit 1
+
+    NICK=`cat conf/git_name` || exit 1
+    MX_IP=`cat conf/gitd_ip` || exit 1
+    MX_DOMAIN="a.mx.$NICK.ano" || exit 1
+
+    echo "@$NICK.ano:$MX_IP:a:12801:86400">>/services/tinydns/root/data || 
+        echo '   fatal error: needs ./contrib/peer2anonet/peer2nonet --install-daemontools' &&
+        exit 1
+
+    if [ -e /services/tinydns ]; then
+        ( 
+            cd /services
+            echo "creating /etc/peer2anonet/tinydns.tar backup"
+            tar cf /etc/peer2anonet/tinydns.tar tinydns
+        )
+    fi
+
+    ( 
+        cd /services/tinydns/root
+        make
+        cd /service
+        sleep 5
+        svc -t dnscache tinydns tinydns-ano tinydns-root
+    )
+
+    useradd qmaillog || exit 1
+
+    if [ -w /etc/rc.local ]; then
+        if [[ $(cat /etc/rc.local) != *"ip addr add $MX_IP/32 dev lo &"* ]]; then
+            echo "ip addr add $MX_IP/32 dev lo &" >> /etc/rc.local
+        fi
+    elif [ -w /etc/rc.d/rc.local ]; then
+        if [[ $(cat /etc/rc.d/rc.local) != *"ip addr add $MX_IP/32 dev lo &"* ]]; then
+            echo "ip addr add $MX_IP/32 dev lo &" >> /etc/rc.d/rc.local
+        fi
+    else
+        echo "   fatal error: cannot reliably assign ip's to startup"
+        exit 1
+    fi
+
+    ip addr add $MX_IP/32 dev lo > /dev/null 2>&1
+
+    if [ -e '/var/qmail/bin/qmail-qmtpd' ] || ! [ -e '/var/qmail/bin/qmail-smtpd' ]; then
+        cd /usr/local/src
+        wget http://www.srn.ano/software/qmail-1.03.tar.gz
+        tar xzf qmail-1.03.tgz
+        cd qmail-1.03
+        wget -O- http://www.srn.ano/patches/qmail-1.03-qmtpc.patch | patch -p1
+        mkdir /var/qmail
+        groupadd nofiles
+        useradd -g nofiles -d /var/qmail/alias alias
+        useradd -g nofiles -d /var/qmail qmaild
+        useradd -g nofiles -d /var/qmail qmaill
+        useradd -g nofiles -d /var/qmail qmailp
+        groupadd qmail
+        useradd -g qmail -d /var/qmail qmailq
+        useradd -g qmail -d /var/qmail qmailr
+        useradd -g qmail -d /var/qmail qmails
+        sed -i 's/gcc/gcc -include errno.h/g' conf-cc
+        make setup check
+        ./config-fast $MX_DOMAIN
+        echo yourdomain.ano >>/var/qmail/control/locals
+        echo yourdomain.ano >>/var/qmail/control/rcpthosts
+        (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)
+        chmod 644 ~alias/.qmail*
+    fi
+
+    mkdir -p /services/qmail
+    mkdir -p /services/qmail/log
+    mkdir -p /services/qmail/log/main
+    chown qmaillog /services/qmail/log/main
+    echo -e '#!/bin/sh\nexec env - PATH="/var/qmail/bin:/usr/local/bin:/usr/bin:/bin" qmail-start ./Mailbox' >/services/qmail/run
+    chmod +x /services/qmail/run
+    echo -e '#!/bin/sh\nexec setuidgid qmaillog multilog t s10000 n4 ./main' >/services/qmail/log/run
+    chmod +x /services/qmail/log/run
+
+    ( cd / ; ln -s /services/qmail /service )
+
+    mkdir -p /services/qmail-smtpd
+    mkdir -p /services/qmail-smtpd/log
+    mkdir -p /services/qmail-smtpd/log/main
+    chown qmaillog /services/qmail-smtpd/log/main
+    echo -e echo -e '#!/bin/sh\nexec envuidgid qmaild tcpserver -U -c 100 '$MX_IP' smtp /var/qmail/bin/qmail-smtpd' >/services/qmail-smtpd/run
+    chmod +x /services/qmail-smtpd/run
+    echo -e '#!/bin/sh\nexec setuidgid qmaillog multilog t s10000 n4 ./main' >/services/qmail-smtpd/log/run
+    chmod +x /services/qmail-smtpd/log/run
+
+    ( cd / ; ln -s /services/qmail-smtpd /service )
+
+    mkdir -p /services/qmail-qmtpd
+    mkdir -p /services/qmail-qmtpd/log
+    mkdir -p /services/qmail-qmtpd/log/main
+    chown qmaillog /services/qmail-qmtpd/log/main
+    echo -e echo -e '#!/bin/sh\nexec envuidgid qmaild tcpserver -U -c 100 '$MX_IP' qmtp /var/qmail/bin/qmail-qmtpd' >/services/qmail-qmtpd/run
+    chmod +x /services/qmail-qmtpd/run
+    echo -e '#!/bin/sh\nexec setuidgid qmaillog multilog t s10000 n4 ./main' >/services/qmail-qmtpd/log/run
+    chmod +x /services/qmail-qmtpd/log/run
+
+    ( cd / ; ln -s /services/qmail-qmtpd /service )
+
+    (
+        cd /
+        [ -e /usr/sbin/sendmail ] && mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
+        ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
+    )
+
+    echo 'export MAIL=~/Mailbox' >>/etc/profile
+
 INSTALL_DJBDNS(){
     echo -e '\nINSTALL DJBDNS:\n'
     [[ $(echo X`which gcc`) == X ]] && echo '   fatal error: cannot find gcc'
@@ -594,6 +713,8 @@
     INSTALL_DJBDNS
 elif [ "$1" == '--install-nacl' ]; then
     INSTALL_NACL
+elif [ "$1" == '--setup-qmail' ]; then
+    SETUP_QMAIL
 elif [ "$1" == '--configure-dns' ]; then
     CONFIGURE_DNS
 elif [ "$1" == '--update-dns' ]; then