#!/bin/sh
cd /
-/usr/bin/exim_tidydb -t 28d /var/spool/exim retry
-/usr/bin/exim_tidydb -f /var/spool/exim retry
-/usr/bin/exim_tidydb -t 28d /var/spool/exim wait-smtp
-/usr/bin/exim_tidydb -f /var/spool/exim wait-smtp
+
+SPOOLDIR="$(/usr/bin/exim -bP spool_directory 2> /dev/null | /bin/sed 's/.*=[[:space:]]\(.*\)/\1/')"
+
+[ ! -d "$SPOOLDIR" ] && echo "Spooldir [$SPOOLDIR] is not a directory" && exit 1
+
+for db in $(/usr/bin/find $SPOOLDIR/db -maxdepth 1 -name '*.lockfile' -or -type f -printf '%f\n'); do
+ t=
+ case "$db" in
+ callout)
+ t="-t 7d"
+ ;;
+ *)
+ ;;
+ esac
+ /usr/bin/exim_tidydb $t $SPOOLDIR $db > /dev/null
+ # Try to lower it's size if it is bigger than 300M. Result still can be bigger if the db contains
+ # so much unexpired data.
+ toobig=$(/usr/bin/find $SPOOLDIR/db/$db -size +300M)
+ if [ -n "$toobig" ]; then
+ /usr/bin/exim_dumpdb $SPOOLDIR $db | /usr/bin/exim_dbmbuild -nowarn - $SPOOLDIR/db/$db.new > /dev/null
+ chown exim:exim $SPOOLDIR/db/$db.new
+ chmod 640 $SPOOLDIR/db/$db.new
+ mv $SPOOLDIR/db/$db.new $SPOOLDIR/db/$db
+ fi
+
+done
+
+exit 0