% 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

#