#! /bin/sh # postinst script for cyrus-common # Copyright (c) 2002 by Henrique de Moraes Holschuh # Distributed under the GNU General Public License version 2 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-deconfigure' `in-favour' # `removing' # # for details, see /usr/doc/packaging-manual/ # # quoting from the policy: # Any necessary prompting should almost always be confined to the # post-installation script, and should be protected with a conditional # so that unnecessary prompting doesn't happen if a package's # installation fails and the `postinst' is called with `abort-upgrade', # `abort-remove' or `abort-deconfigure'. export PATH=/sbin:/usr/sbin:/bin:/usr/bin # Source debconf library. . /usr/share/debconf/confmodule CONF="/etc/imapd.conf" CYRUS_CONFIG_DIR="/var/lib/cyrus" [ -r /etc/default/cyrus-imapd ] && . /etc/default/cyrus-imapd getconf () { if [ -r "${CONF}" ]; then confvalue=$(sed --silent -e "/^[[:blank:]]*${1}:/ { \ s#^[[:blank:]]*${1}:[[:blank:]]*## \ p }" < "${CONF}" | head -1) result=${confvalue:-$2} else result=${2} fi } upgradesieve () { if [ -z "$1" ] || $(dpkg --compare-versions $1 gt 3~); then return fi CYRUS_SIEVE_DIR="/var/spool/sieve" getconf sievedir ${CYRUS_SIEVE_DIR} CYRUS_SIEVE_DIR=$result find ${CYRUS_SIEVE_DIR} -type d -regextype sed -regex '.*/[^/]\+^[^/]\+' -print | awk '{system("mv " $0 " " gensub("\\^", ".", "g", $1))}' su cyrus -c '/usr/lib/cyrus/upgrade/masssievec /usr/lib/cyrus/bin/sievec' } case "$1" in configure) # Refuse to update if previous version is lower than 3.2.6-2+deb11u2~ if [ ! -z "$2" ] && $(dpkg --compare-versions $2 lt '3.2.6-2+deb11u2~'); then echo "You must update cyrus-imapd to at least version 3.2.6-2+deb11u2~" >&2 echo "before updating it to version 3.6.x and run it, else your mailboxes" >&2 echo "may be corrupted" >&2 exit 1 fi systemd-sysusers ${DPKG_ROOT:+--root="$DPKG_ROOT"} cyrus-common.conf systemd-tmpfiles ${DPKG_ROOT:+--root="$DPKG_ROOT"} --create cyrus-common.conf # Remove old statoverrides if dpkg-statoverride --list /var/run/cyrus >/dev/null 2>&1; then dpkg-statoverride --update --remove /var/run/cyrus; fi if dpkg-statoverride --list /var/run/cyrus/socket >/dev/null 2>&1; then dpkg-statoverride --remove /var/run/cyrus/socket; fi if [ -z "$2" ]; then echo -n "cyrus-common: Creating cyrus-imapd directories..." cyrus makedirs --cleansquat echo "done." fi # Add USERDENY database if doesn't exist getconf configdirectory ${CYRUS_CONFIG_DIR} CYRUS_CONFIG_DIR=$result if [ -f /usr/lib/cyrus/cyrus-db-types.active ]; then /usr/lib/cyrus/bin/upgrade-db RET="$?" case "$RET" in 0) ;; 2) echo "ERROR: Upgrading of database backends failed." 1>&2 echo "ERROR: Please check the output, fix errors and re-run /usr/lib/cyrus/bin/upgrade-db" 1>&2 echo "ERROR: script, before trying to start cyrus-imapd." 1>&2 ;; 1|*) echo "ERROR: Upgrading of database backends failed with a fatal error." 1>&2 echo "ERROR: Please check /usr/share/doc/cyrus-common/README.Debian*" 1>&2 echo "ERROR: for instructions how to upgrade cyrus databases manually." 1>&2 exit $RET; ;; esac fi # Legacy code / needed in case something will change in future # Hopefully this will be handled by upstream next time cp -p /usr/lib/cyrus/cyrus-hardwired-config.txt \ /usr/lib/cyrus/cyrus-hardwired-config.active upgradesieve $2 ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 0 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. # Automatically added by dh_installsysusers/14.3 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then systemd-sysusers ${DPKG_ROOT:+--root="$DPKG_ROOT"} cyrus-common.conf fi # End automatically added section # Automatically added by dh_installtmpfiles/14.3 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then systemd-tmpfiles ${DPKG_ROOT:+--root="$DPKG_ROOT"} --create cyrus-common.conf fi # End automatically added section # Automatically added by dh_installinit/14.3 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then if [ -x "$DPKG_ROOT/etc/init.d/cyrus-imapd" ]; then update-rc.d cyrus-imapd defaults >/dev/null if [ -n "$2" ]; then _dh_action=restart else _dh_action=start fi if [ -z "$DPKG_ROOT" ]; then invoke-rc.d --skip-systemd-native cyrus-imapd $_dh_action || exit 1 fi fi fi # End automatically added section # Automatically added by dh_installsystemd/14.3 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then # The following line should be removed in trixie or trixie+1 deb-systemd-helper unmask 'cyrus-imapd.service' >/dev/null || true # was-enabled defaults to true, so new installations run enable. if deb-systemd-helper --quiet was-enabled 'cyrus-imapd.service'; then # Enables the unit on first installation, creates new # symlinks on upgrades if the unit file has changed. deb-systemd-helper enable 'cyrus-imapd.service' >/dev/null || true else # Update the statefile to add new symlinks (if any), which need to be # cleaned up on purge. Also remove old symlinks. deb-systemd-helper update-state 'cyrus-imapd.service' >/dev/null || true fi fi # End automatically added section # Automatically added by dh_installsystemd/14.3 if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then if [ -z "$DPKG_ROOT" ] && [ -d /run/systemd/system ]; then systemctl --system daemon-reload >/dev/null || true if [ -n "$2" ]; then _dh_action=restart else _dh_action=start fi deb-systemd-invoke $_dh_action 'cyrus-imapd.service' >/dev/null || true fi fi # End automatically added section exit 0