Import Debian changes 4.89-2+deb9u4
[hcoop/debian/exim4.git] / debian / exim4-base.postinst
1 #!/bin/sh
2
3 set -e
4 . /usr/share/debconf/confmodule
5
6 if [ -n "$EX4DEBUG" ]; then
7 echo "now debugging $0 $@"
8 set -x
9 fi
10
11 db_version 2.0
12
13 BDBVERSION=5.3
14
15 case "$1" in
16 configure)
17
18 if ! getent passwd Debian-exim > /dev/null ; then
19 echo 'Adding system-user for exim (v4)' 1>&2
20 adduser --system --group --quiet --home /var/spool/exim4 \
21 --no-create-home --disabled-login --force-badname Debian-exim
22 fi
23 # Create directories for log etc
24 # install also fixes permissions.
25 install -d -oDebian-exim -gadm -m2750 /var/log/exim4
26 install -d -oDebian-exim -gDebian-exim -m750 /run/exim4
27 install -d -oDebian-exim -gDebian-exim -m750 /var/spool/exim4
28 install -d -oDebian-exim -gDebian-exim -m750 /var/spool/exim4/db \
29 /var/spool/exim4/input /var/spool/exim4/msglog
30
31 # fix permissions on upgrades
32 if dpkg --compare-versions "$2" le "4.30-1" ; then
33 find /var/log/exim4 /var/spool/exim4 -group mail \
34 \( -type f -or -type d \) -print0 | \
35 xargs -0r chgrp Debian-exim
36 find /var/log/exim4 /var/spool/exim4 -user mail \
37 \( -type f -or -type d \) -print0 | \
38 xargs -0r chown Debian-exim
39 fi
40
41 # Paranoia check: On any db upgrade throw away hints
42 # databases.
43 if test -r /var/lib/exim4/berkeleydbvers.txt ; then
44 OLDBDB=`head -n1 /var/lib/exim4/berkeleydbvers.txt`
45 else
46 OLDBDB="unknown"
47 fi
48 if [ "$BDBVERSION" != "$OLDBDB" ] ; then
49 echo exim: DB upgrade, deleting hints-db 1>&2
50 rm -f /var/spool/exim4/db/misc-* /var/spool/exim4/db/wait-* \
51 /var/spool/exim4/db/callout* \
52 /var/spool/exim4/db/retry* \
53 /var/spool/exim4/db/ratelimit* \
54 /var/spool/exim4/db/__db.retry \
55 /var/spool/exim4/db/__db.misc* \
56 /var/spool/exim4/db/__db.callout \
57 /var/spool/exim4/db/__db.ratelimit \
58 /var/spool/exim4/db/__db.wait* \
59 /var/spool/exim4/db/log.*
60 echo "$BDBVERSION" > /var/lib/exim4/berkeleydbvers.txt
61 fi
62 # Check that db files are readable by this Exim's db library
63 dbfiles=""
64 for f in /var/spool/exim4/db/misc-* /var/spool/exim4/db/wait-* \
65 /var/spool/exim4/db/callout* /var/spool/exim4/db/retry* \
66 /var/spool/exim4/db/ratelimit* ; do
67 if [ -f "$f" ]; then
68 if echo $f | grep \.lockfile\$ >/dev/null 2>&1; then
69 : # ignore lock files
70 else
71 dbfiles="$dbfiles $(basename $f)"
72 fi
73 fi
74 done
75 for dbfile in $dbfiles; do
76 if exim_dumpdb /var/spool/exim4 $dbfile >/dev/null 2>&1; then
77 : # File OK
78 else
79 echo "Resetting invalid $dbfile hints db" 1>&2
80 rm -f /var/spool/exim4/db/$dbfile \
81 /var/spool/exim4/db/$dbfile.* \
82 /var/spool/exim4/db/__db.${dbfile}.* \
83 /var/spool/exim4/db/log.*
84 fi
85 done
86
87 if [ -x "/etc/init.d/exim4" ]; then
88 update-rc.d exim4 defaults >/dev/null
89 fi
90
91 # honor dpkg-statoverride settings for files not managed with dpkg
92 for pat in /var/\*/exim4 /var/\*/exim4/\*; do
93 [ $EX4DEBUG ] && eval echo "evaluate statoverride $pat"
94 eval dpkg-statoverride --list $pat | while read USER GROUP MODE FILE; do
95 [ $EX4DEBUG ] && echo "statoverride $USER $GROUP $MODE $FILE"
96 chown ${USER}:${GROUP} $FILE
97 chmod $MODE $FILE
98 done
99 done
100 ;;
101 esac
102
103 #DEBHELPER#