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 7 COMMAND_DIRECTORY="/usr/sbin" 8 DAEMON_DIRECTORY="/usr/libexec/postfix" 9 QUEUE_DIRECTORY="/var/spool/postfix" 10 11 ## Copy any shared libraries, device entries, or configuration files 12 ## needed by Postfix into the jail. 13 binlist=" 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 " 46 ldd $binlist | awk '/[=]>/ { print $3 }' | sort -u | while read i 47 do 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 -) 53 done 54 55 ## More stuff for the jail, mostly discovered by inspection 56 ## (e.g. strings, lsof). 57 more=" 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 " 101 for 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 -) 104 done 105 106 exit 0 107