#!/bin/sh # Solaris 8 version by Matthew X. Economou. Caution: this copies # too many files. There is no need to copy libc.so and other files # that are already linked in before a Postfix daemon chroots itself. COMMAND_DIRECTORY="/usr/sbin" DAEMON_DIRECTORY="/usr/libexec/postfix" QUEUE_DIRECTORY="/var/spool/postfix" ## Copy any shared libraries, device entries, or configuration files ## needed by Postfix into the jail. binlist=" $DAEMON_DIRECTORY/virtual $DAEMON_DIRECTORY/trivial-rewrite $DAEMON_DIRECTORY/spawn $DAEMON_DIRECTORY/smtpd $DAEMON_DIRECTORY/smtp $DAEMON_DIRECTORY/showq $DAEMON_DIRECTORY/qmqpd $DAEMON_DIRECTORY/qmgr $DAEMON_DIRECTORY/proxymap $DAEMON_DIRECTORY/pipe $DAEMON_DIRECTORY/pickup $DAEMON_DIRECTORY/nqmgr $DAEMON_DIRECTORY/master $DAEMON_DIRECTORY/local $DAEMON_DIRECTORY/lmtp $DAEMON_DIRECTORY/flush $DAEMON_DIRECTORY/error $DAEMON_DIRECTORY/cleanup $DAEMON_DIRECTORY/bounce /usr/lib/sendmail $COMMAND_DIRECTORY/postsuper $COMMAND_DIRECTORY/postqueue $COMMAND_DIRECTORY/postmap $COMMAND_DIRECTORY/postlog $COMMAND_DIRECTORY/postlock $COMMAND_DIRECTORY/postkick $COMMAND_DIRECTORY/postfix $COMMAND_DIRECTORY/postdrop $COMMAND_DIRECTORY/postconf $COMMAND_DIRECTORY/postcat $COMMAND_DIRECTORY/postalias " ldd $binlist | awk '/[=]>/ { print $3 }' | sort -u | while read i do mkdir -p $QUEUE_DIRECTORY`dirname $i` ## Sun's version of tar sucks. We'll have to remove the leading ## slashes from file names ourself, otherwise the copy doesn't ## work. (cd / && tar cphf - `echo $i | sed -e 's/^\///'`) | (cd $QUEUE_DIRECTORY && tar xpf -) done ## More stuff for the jail, mostly discovered by inspection ## (e.g. strings, lsof). more=" /dev/zero /dev/null /dev/udp6 /dev/tcp6 /dev/udp /dev/tcp /dev/poll /dev/rawip /dev/ticlts /dev/ticotsord /dev/ticots /devices/pseudo/mm@0:zero /devices/pseudo/mm@0:null /devices/pseudo/udp6@0:udp6 /devices/pseudo/tcp6@0:tcp6 /devices/pseudo/udp@0:udp /devices/pseudo/tcp@0:tcp /devices/pseudo/poll@0:poll /devices/pseudo/icmp@0:icmp /devices/pseudo/tl@0:ticlts /devices/pseudo/tl@0:ticotsord /devices/pseudo/tl@0:ticots /etc/nsswitch.conf /etc/netconfig /etc/default/init /etc/inet/services /etc/resolv.conf /etc/services /usr/lib/ld.so /usr/lib/ld.so.1 /usr/lib/sparcv9/straddr.so /usr/lib/straddr.so /usr/lib/libintl.so /usr/lib/libintl.so.1 /usr/lib/libw.so /usr/lib/libw.so.1 /usr/lib/nss_nis.so.1 /usr/lib/nss_nisplus.so.1 /usr/lib/nss_dns.so.1 /usr/lib/nss_files.so.1 /usr/share/lib/zoneinfo /var/ld/ld.config " for i in $more; do mkdir -p $QUEUE_DIRECTORY`dirname $i` (cd / && tar cpf - `echo $i | sed -e 's/^\///'`) | (cd $QUEUE_DIRECTORY && tar xpf -) done exit 0