1#!/bin/sh 2 3# Solaris 8 version by Matthew X. Economou. Caution: this copies 4# too many files. There is no need to copy libc.so and other files 5# that are already linked in before a Postfix daemon chroots itself. 6 7COMMAND_DIRECTORY="/usr/sbin" 8DAEMON_DIRECTORY="/usr/libexec/postfix" 9QUEUE_DIRECTORY="/var/spool/postfix" 10 11## Copy any shared libraries, device entries, or configuration files 12## needed by Postfix into the jail. 13binlist=" 14$DAEMON_DIRECTORY/virtual 15$DAEMON_DIRECTORY/trivial-rewrite 16$DAEMON_DIRECTORY/spawn 17$DAEMON_DIRECTORY/smtpd 18$DAEMON_DIRECTORY/smtp 19$DAEMON_DIRECTORY/showq 20$DAEMON_DIRECTORY/qmqpd 21$DAEMON_DIRECTORY/qmgr 22$DAEMON_DIRECTORY/proxymap 23$DAEMON_DIRECTORY/pipe 24$DAEMON_DIRECTORY/pickup 25$DAEMON_DIRECTORY/nqmgr 26$DAEMON_DIRECTORY/master 27$DAEMON_DIRECTORY/local 28$DAEMON_DIRECTORY/lmtp 29$DAEMON_DIRECTORY/flush 30$DAEMON_DIRECTORY/error 31$DAEMON_DIRECTORY/cleanup 32$DAEMON_DIRECTORY/bounce 33/usr/lib/sendmail 34$COMMAND_DIRECTORY/postsuper 35$COMMAND_DIRECTORY/postqueue 36$COMMAND_DIRECTORY/postmap 37$COMMAND_DIRECTORY/postlog 38$COMMAND_DIRECTORY/postlock 39$COMMAND_DIRECTORY/postkick 40$COMMAND_DIRECTORY/postfix 41$COMMAND_DIRECTORY/postdrop 42$COMMAND_DIRECTORY/postconf 43$COMMAND_DIRECTORY/postcat 44$COMMAND_DIRECTORY/postalias 45" 46ldd $binlist | awk '/[=]>/ { print $3 }' | sort -u | while read i 47do 48 mkdir -p $QUEUE_DIRECTORY`dirname $i` 49 ## Sun's version of tar sucks. We'll have to remove the leading 50 ## slashes from file names ourself, otherwise the copy doesn't 51 ## work. 52 (cd / && tar cphf - `echo $i | sed -e 's/^\///'`) | (cd $QUEUE_DIRECTORY && tar xpf -) 53done 54 55## More stuff for the jail, mostly discovered by inspection 56## (e.g. strings, lsof). 57more=" 58/dev/zero 59/dev/null 60/dev/udp6 61/dev/tcp6 62/dev/udp 63/dev/tcp 64/dev/poll 65/dev/rawip 66/dev/ticlts 67/dev/ticotsord 68/dev/ticots 69/devices/pseudo/mm@0:zero 70/devices/pseudo/mm@0:null 71/devices/pseudo/udp6@0:udp6 72/devices/pseudo/tcp6@0:tcp6 73/devices/pseudo/udp@0:udp 74/devices/pseudo/tcp@0:tcp 75/devices/pseudo/poll@0:poll 76/devices/pseudo/icmp@0:icmp 77/devices/pseudo/tl@0:ticlts 78/devices/pseudo/tl@0:ticotsord 79/devices/pseudo/tl@0:ticots 80/etc/nsswitch.conf 81/etc/netconfig 82/etc/default/init 83/etc/inet/services 84/etc/resolv.conf 85/etc/services 86/usr/lib/ld.so 87/usr/lib/ld.so.1 88/usr/lib/sparcv9/straddr.so 89/usr/lib/straddr.so 90/usr/lib/libintl.so 91/usr/lib/libintl.so.1 92/usr/lib/libw.so 93/usr/lib/libw.so.1 94/usr/lib/nss_nis.so.1 95/usr/lib/nss_nisplus.so.1 96/usr/lib/nss_dns.so.1 97/usr/lib/nss_files.so.1 98/usr/share/lib/zoneinfo 99/var/ld/ld.config 100" 101for i in $more; do 102 mkdir -p $QUEUE_DIRECTORY`dirname $i` 103 (cd / && tar cpf - `echo $i | sed -e 's/^\///'`) | (cd $QUEUE_DIRECTORY && tar xpf -) 104done 105 106exit 0 107