% sudo -s
Password:
# system_profiler SPSoftwareDataType |grep Version
System Version: Mac OS X 10.3.4 (7H63)
Kernel Version: Darwin 7.4.0
# umask 022
# mkdir -p /usr/local/src
# cd /usr/local/src
# curl http://www.qmail.org/netqmail-1.05.tar.gz -RO
...
# curl http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz -RO
...
# curl http://cr.yp.to/daemontools/daemontools-0.76.tar.gz -RO
...
# mkdir /var/qmail
# nireport . /groups name gid
...
# niload group . <<EOF
? qmail:*:2107:
? nofiles:*:2108:
? EOF
# nidump group . >/etc/group
# nireport . /users name uid
...
# niload passwd . <<EOF
? alias:*:7790:2108::0:0::/var/qmail/alias:/bin/true
? qmaild:*:7791:2108::0:0::/var/qmail:/bin/true
? qmaill:*:7792:2108::0:0::/var/qmail:/bin/true
? qmailp:*:7793:2108::0:0::/var/qmail:/bin/true
? qmailq:*:7794:2107::0:0::/var/qmail:/bin/true
? qmailr:*:7795:2107::0:0::/var/qmail:/bin/true
? qmails:*:7796:2107::0:0::/var/qmail:/bin/true
? EOF
# nidump passwd . >/etc/passwd
# gunzip -cd netqmail-1.05.tar.gz |tar -xf -
# cd netqmail-1.05
# ./collate.sh
...
# cd netqmail-1.05
# patch </path/to/panther.patch
...
# make setup check
...
# ./config
...
# cd ../..
# gunzip -cd ucspi-tcp-0.88.tar.gz |tar -xf -
# cd ucspi-tcp-0.88
# make setup check
...
# cd ..
# mkdir -p /package
# mv daemontools-0.76.tar.gz /package
# chmod 1755 /package
# cd /package
# gunzip -cd daemontools-0.76.tar.gz |tar -xf -
# cd admin/daemontools-0.76
# package/install
...
# cat /etc/rc.local
csh -cf '/command/svscanboot &'
# rm /etc/rc.local
# mkdir /Library/StartupItems/svscanboot
# cd /Library/StartupItems/svscanboot
# cat >svscanboot <<EOF
? #!/bin/sh
? . /etc/rc.common
? StartService( )
? {
? ConsoleMessage "Starting svscanboot"
? csh -cf '/command/svscanboot &'
? }
? RunService "\$1"
? EOF
# chmod 755 svscanboot
# cat >StartupParameters.plist <<EOF
? {
? Description = svscanboot;
? Provides = (svscanboot);
? Requires = (Network);
? OrderPreference = None;
? }
? EOF
# cat >/var/qmail/rc <<EOF
? #!/bin/sh
? # Using stdout for logging
? # Using control/defaultdelivery from qmail-local to deliver messages by default
? exec env - PATH="/var/qmail/bin:\$PATH" \
? qmail-start "\`cat /var/qmail/control/defaultdelivery\`"
? EOF
# chmod 755 /var/qmail/rc
# echo ./Maildir/ >/var/qmail/control/defaultdelivery
# cd /var/qmail/bin
# rehash
# http@ lifewithqmail.org /qmailctl-script-dt70 >qmailctl
# chmod 755 qmailctl
# ln -s /var/qmail/bin/qmailctl /usr/bin
# cp -p /etc/periodic/daily/500.daily /etc/periodic/500.daily.0
# sh -c "cat /etc/periodic/daily/500.daily |sed -e s/mailq/qmailctl\ queue/ >/etc/periodic/daily/500.daily"
# mkdir -p /var/qmail/supervise/qmail-send/log
# mkdir -p /var/qmail/supervise/qmail-smtpd/log
# cat >/var/qmail/supervise/qmail-send/run <<EOF
? #!/bin/sh
? exec /var/qmail/rc
? EOF
# cat >/var/qmail/supervise/qmail-send/log/run <<EOF
? #!/bin/sh
? exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
? EOF
# cat >/var/qmail/supervise/qmail-smtpd/run <<EOF
? #!/bin/sh
? QMAILDUID=\`id -u qmaild\`
? NOFILESGID=\`id -g qmaild\`
? MAXSMTPD=\`cat /var/qmail/control/concurrencyincoming\`
? LOCAL=\`head -1 /var/qmail/control/me\`
? if [ -z "\$QMAILDUID" -o -z "\$NOFILESGID" -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 2000000 \
? /usr/local/bin/tcpserver -v -R -l "\$LOCAL" -x /etc/tcp.smtp.cdb -c "\$MAXSMTPD" \
? -u "\$QMAILDUID" -g "\$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
? EOF
# echo 20 >/var/qmail/control/concurrencyincoming
# chmod 644 /var/qmail/control/concurrencyincoming
# cat >/var/qmail/supervise/qmail-smtpd/log/run <<EOF
? #!/bin/sh
? exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd
? 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
# mkdir -p /var/log/qmail/smtpd
# chown qmaill /var/log/qmail /var/log/qmail/smtpd
# ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
# echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp
# qmailctl cdb
...
# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
# chmod 0 /usr/sbin/sendmail.old
# ln -s /var/qmail/bin/sendmail /usr/sbin
# echo mary >/var/qmail/alias/.qmail-root
# echo mary >/var/qmail/alias/.qmail-postmaster
# ln -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon
# chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster
# sudo -u mary -s
% cd ~mary
% /var/qmail/bin/maildirmake Maildir
% echo ./Maildir/ >.qmail
% /Developer/Tools/SetFile -a V Maildir
% exit
# reboot
...
# qmailctl stat
/service/qmail-send: up (pid 245) 75 seconds
/service/qmail-send/log: up (pid 247) 75 seconds
/service/qmail-smtpd: up (pid 248) 75 seconds
/service/qmail-smtpd/log: up (pid 253) 75 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0
#