| 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# |