r11: Preliminary etch package.
[amavisd-cn.git] / debian / postinst
index 811121e..4ce2de2 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
-# last update: jelly+paketi@srce.hr  Mon Oct 30 14:37:06 CET 2006
+# last update: zoran.dzelajlija@carnet.hr  Fri, 19 Oct 2007 00:34:32 +0200
 
 set -e
 
@@ -31,220 +31,40 @@ export PATH
 # Place configuration tweaks done on upgrades into this function
 update_conf() {
   [ "$DEBIAN_SCRIPT_DEBUG" ] && set -vx
-  # comment out spam alerts if we're upgrading from
-  # << 20030616p10-4 in woody, or << 2:20030616p10-5 in sarge,
-  # or a fresh installation is taking place
-  if dpkg --compare-versions "$2" lt 20030616p10-4 || \
-    { dpkg --compare-versions "$2" ge 2:0 && \
-      dpkg --compare-versions "$2" lt 2:20030616p10-5; }; then
-    if cp_check_and_sed '^\$spam_admin = "spamalert\\@\$mydomain";$' \
-       's/^\(\$spam_admin\b\)/# \1/' $ACONF; then
-      cp_echo "CN: commented \$spam_admin in $ACONF."
-      cp_echo "CN: Be sure to whitelist that address if you reenable it!"
-      cp_echo "    If spam detection is enabled for that address, loops may occur."
-      restart_daemon=1
-    fi
-  fi
-  # saner defaults - silently discard viruses, and do SMTP-time reject for
-  # explicitely banned attachments instead of bounces
-  if dpkg --compare-versions "$2" lt 2:20030616p10-8; then
-    if cp_check_and_sed \
-      '^[      ]*\$final_virus_destiny[        ]*=[    ]*D_BOUNCE' \
-      's/^\([ \t]*\$final_virus_destiny[ \t]*=[ \t]*\)D_BOUNCE/\1D_DISCARD/' \
-      $ACONF; then
-      cp_echo "CN: Discarding viruses (option \$final_virus_destiny)."
-      restart_daemon=1
-    fi
-    if cp_check_and_sed \
-      '^[      ]*\$final_banned_destiny[       ]*=[    ]*D_BOUNCE' \
-      's/^\([ \t]*\$final_banned_destiny[ \t]*=[ \t]*\)D_BOUNCE/\1D_REJECT/' \
-      $ACONF; then
-      cp_echo "CN: Rejecting banned files at SMTP time (option \$final_banned_destiny)."
-      restart_daemon=1
-    fi
-  fi
-  if dpkg --compare-versions "$2" lt 2:20030616p10-11 && \
-     [ "$domain" != "$host" ]; then
-    if cp_check_and_sed \
-      '^[      ]*\$mydomain[   ]*=[    ]* ["'"']$host['"'"]' \
-      's/^\([ \t]*\$mydomain[ \t]*=[ \t]*\)["'"']$host['"'"]/\1'"'$domain'"/ \
-      $ACONF; then
-      cp_echo "CN: MX for $domain detected, updating \$mydomain."
-      restart_daemon=1
-    fi
-  fi
+  # placeholder.
+  # remember to set changed_config=1 and restart_daemon=1 if necessary
+  :
 }
 
-# find out which MTA, assume postfix
 mta=postfix
-ACONFTMPL=$POSTTMPL
-TMPLVERSION=$POSTTMPLVERSION
-if dpkg -l postfix | grep -q '^.i'; then
-  . /usr/share/amavisd-cn/postfix.sh
-elif dpkg -l sendmail | grep -q '^.i'; then
-  mta=sendmail
-  ACONFTMPL=$SENDTMPL
-  TMPLVERSION=$SENDTMPLVERSION
-  . /usr/share/amavisd-cn/sendmail.sh
-else
-  # should never happen, we check for this in preinst too!
-  echo "CN: Ugh, no supported mail-transported-agent could be found?!" >&2
-  echo "CN: If you really have a MTA supported by CARNet installed," >&2
-  echo "CN: Please inform the maintainer.  Assuming ${mta}..." >&2
-fi 
-
-# XXX remove at least some of woody cruft for CARNet Debian 2.1+1
-# convert sweep-cn back to "sweep" account, fix uid/gid
-if getent passwd sweep > /dev/null; then
-  check_and_update_ugid sweep /etc/sweep /var/lib/sav /var/spool/intercheck /var/log/sweep.log || true
-  # chown stuff I forgot in previous versions
-  if dpkg --compare-versions "$2" lt 20030616p10-3; then
-    chown -R sweep:sweep /var/spool/intercheck /var/log/sweep.log 2> /dev/null || true
-  fi
-  if cp_check_and_sed viruser s/viruser/sweep/ /etc/cron.d/sweep-cn /usr/bin/sophos-ide-update; then
-    did_sweep="sweep "
-  fi
-  if cp_check_and_sed viruser "s/sweep viruser/sweep/g; s/viruser/sweep/g" /etc/samba/smb.conf; then
-    /etc/init.d/samba reload || true
-    did_sweep="${did_sweep}smb.conf "
-  fi
-fi # sweep
-
-# get rid of viruser
-if getent passwd viruser > /dev/null || [ -n "$did_sweep" ]; then
-  # remove viruser account usage
-  echo -n "CN: Removing viruser: "
-  [ "$did_sweep" ] && echo -n "$did_sweep"
-  if cp_check_and_sed '^viruser' s/viruser/clamav/ $ALIASES; then
-    newaliases 2>&1 > /dev/null
-    echo -n "aliases "
-  fi
-  if cp_check_and_sed "User viruser" \
-       s/viruser/clamav/ /etc/clamav/clamd.conf; then
-    clamav_changed=1
-  fi
-  if cp_check_and_sed "DatabaseOwner viruser" \
-       s/viruser/clamav/ /etc/clamav/freshclam.conf; then
-    clamav_changed=1
-  fi
-  if [ -n "$clamav_changed" ]; then
-    # add clamav to amavis group
-    echo -n "c"
-    id clamav | grep -q amavis || adduser clamav amavis > /dev/null
-    echo -n "l"
-    /etc/init.d/clamav-daemon stop > /dev/null || true
-    pkill -9 /usr/sbin/clamd || true
-    echo -n "a"
-    /etc/init.d/clamav-freshclam stop > /dev/null || true
-    pkill -9 /usr/bin/freshclam || true
-    echo -n "m"
-    chown -R clamav:clamav \
-      /var/lib/clamav /var/log/clamav /var/run/clamav || true
-    echo -n "a"
-    # Don't abort if clamav services do not restart.
-    /etc/init.d/clamav-daemon start > /dev/null || failed clamav-daemon
-    /etc/init.d/clamav-freshclam start > /dev/null || failed clamav-freshclam
-    echo -n "v "
-  fi
-  # We'll catch other changes later, just fix user now
-  if cp_check_and_sed '$daemon_user.*viruser' s/viruser/amavis/g $ACONF; then
-    stop_amavisd_now=1
-  fi
-  if getent passwd viruser >/dev/null; then
-    if ls -lnG /var/run/amavis $AHOME |grep -q " $(id -u viruser) " || \
-        pgrep -u viruser -f /usr/sbin/amavis-milter > /dev/null || \
-        pgrep -u viruser amavisd > /dev/null; then
-      stop_amavisd_now=1
-    fi
-  fi
-  if [ -n "$stop_amavisd_now" ]; then
-    echo -n "a"
-    if [ -x /etc/init.d/$mta ]; then
-      /etc/init.d/$mta stop > /dev/null
-    else
-      # shouldn't happen either XXX catch it and send to maintainer?
-      echo -n "iee, no init script for $mta! ignoring... a"
-    fi
-    echo -n "m"
-    if [ -x /etc/init.d/amavisd-new-milter ]; then
-      /etc/init.d/amavisd-new-milter stop > /dev/null
-    fi
-    echo -n "a"
-    pkill -9 -u viruser -f /usr/sbin/amavis-milter || true
-    echo -n "v"
-    /etc/init.d/amavis stop > /dev/null
-    echo -n "i"
-    pkill -9 -u viruser -x amavisd || true
-    chown_ahome=1 # do it later
-    echo -n "s "
-    restart_daemon=1
-    [ $mta = sendmail ] && restart_milter=1 || true
-    restart_mta=1
-  fi
-  if getent passwd viruser >/dev/null; then
-    echo -n "userdel"
-    userdel viruser
-  fi
-  echo "."
-  cp_echo -mailonly "CN: Removed user viruser."
-fi # viruser
-# added later
-if cp_check_and_sed viruser s/viruser/clamav/ \
-   /etc/logrotate.d/clamav-daemon /etc/logrotate.d/clamav-freshclam; then
-  :
-fi # viruser
+. /usr/share/amavisd-cn/postfix.sh
 
 # $domain will be equal to $host if nothing better can be found
 cp_get_mx_domain
 domain=$RET
 
-# sendmail config
-if [ "$mta" = sendmail ]; then
-  update_sendmail
-  conf_sendmailize
-fi # end sendmail config
-
-# postfix config
-if [ "$mta" = postfix ]; then
-  update_postfix
-  conf_postfixize
-fi # end postfix config
+update_postfix
 
 # amavisd.conf
 if [ -f "$ACONFOLD" ]; then
   cp_echo "CN: Amavisd configuration is now in $ACONF."
   cp_echo "    Previous location was $ACONFOLD."
-  if [ ! -e "$ACONFMOVED" ]; then
-    mv "$ACONFOLD" "$ACONFMOVED" 
-    cp_echo "    Old file renamed to $ACONFMOVED."
+  cp_backup_conffile "$ACONFOLD"
+  rm -f "$ACONFOLD"
+  cp_echo "    Old file renamed to $ACONFMOVED."
   fi
   cp_echo ""
-  cp_echo "CN: If you made any changes to $ACONFOLD, they will NOT be moved"
-  cp_echo "CN: to the new location automatically.  You must update the new file"
-  cp_echo "CN: by yourself, and remove the old file afterwards."
-elif [ -f "$ACONFMOVED" ]; then
-  cp_echo "CN: Remember to remove the old $ACONFMOVED file."
+  cp_echo "CN: Please read /usr/share/doc/amavisd-cn/README.CARNet."
+elif [ -f "$ACONFOLD.disabled" ]; then
+  cp_backup_conffile "$ACONFOLD.disabled" "$(basename $ACONFOLD)"
+  rm -f "$ACONFOLD.disabled"
+  cp_echo "CN: Removed $ACONFOLD.disabled."
+  cp_echo "    Please read /usr/share/doc/amavisd-cn/README.CARNet."
 fi
+
 if [ -f $ACONF ]; then
-  if grep -q _CN_ $ACONF; then
-    # This is unlikely, actually
-    if cp_check_and_sed "s/_CN_DOMAIN_/$domain/g; s/_CN_HOST_/$domain/g" $ACONF; then
-      restart_daemon=1
-    fi
-  else
-    if egrep -q "^\\\$mydomain = 'example.com'" $ACONF; then
-      # Debian default or lame sysadmin detected, replace it by template
-      conf_from_template
-    elif egrep -q "#CARNet#\\\$mydomain = 'example.com';" $ACONF &&
-       dpkg --compare-versions "$2" eq 2:20030616p5-0; then
-      # CARNet Debian 2.1 (sarge) CDROM installation detected
-      noisy_backup $ACONF
-      conf_from_template
-    else
-      # add other fixups to update_conf() above
-      update_conf $*
-    fi
-  fi
+  # add other fixups to function update_conf(), way above
+  update_conf $*
 fi
 # nonexistent or empty config
 if [ ! -f $ACONF -o ! -s $ACONF ]; then
@@ -254,9 +74,7 @@ fi
 
 # check for SAVI:
 # if not there, comment it out, if there, uncomment and restart
-if ! dpkg -l libsavi-perl bunch-perl-modules-cn 2> /dev/null | \
-       egrep -q '^.i' || \
-   ! [ -f /usr/lib/libsavi.so ]; then
+if ! dpkg -l libsavi-perl 2> /dev/null | egrep -q '^.i' || ! [ -f /usr/lib/libsavi.so ]; then
   if cp_check_and_sed "^\['Sophos SAVI'" \
      "s/^\(\['Sophos SAVI', ..sophos_savi \]\)/#\1/" $ACONF; then
     cp_echo "CN: Disabled SAVI::Perl usage in ${ACONF}."
@@ -273,17 +91,6 @@ fi
 check_and_add_alias virusalert root
 check_and_add_alias spamalert root
 
-# touch some required files XXX check if necessary for 2.4
-if [ ! -f $WLIST ]; then
-  touch $WLIST
-  chown_ahome=1
-fi
-
-if [ ! -f $BLIST ]; then
-  touch $BLIST
-  chown_ahome=1
-fi
-
 if [ ! -f $AHOME/.spamassassin/user_prefs ] ; then
   [ -d $AHOME/.spamassassin ] || mkdir -p $AHOME/.spamassassin
   cat > $AHOME/.spamassassin/user_prefs <<-EEND
@@ -299,15 +106,8 @@ if [ ! -f $AHOME/.spamassassin/auto-whitelist ] ; then
   chown_ahome=1
 fi
 
-# Raid over rc2.d
-if [ -x "/etc/init.d/sendmail" -a -e /etc/rc2.d/S20sendmail ]; then
-  update-rc.d -f sendmail remove >/dev/null 2>/dev/null
-  update-rc.d sendmail defaults 21 19 >/dev/null
-fi
-if [ -n "$(find /etc/rc2.d -name S18clam\*)" ]; then
-  update-rc.d -f clamav-daemon remove >/dev/null
-  update-rc.d clamav-daemon defaults 22 18 >/dev/null
-fi
+# No sysvinit order fixes
+:
 
 # Cleanup and finalization
 if dpkg --compare-versions "$2" lt 2:20030616p10-4; then
@@ -327,8 +127,8 @@ if [ -n "$chown_ahome" ]; then
   cp_echo -mailonly "CN: Fixed ownerships in /var/*/amavis."
 fi
 
-# kill naughty pyzor descendants
-if dpkg --compare-versions "$2" lt "2:20030616p10-7" && \
+# kill naughty pyzor descendants -- XXX needed for 2.4 or not?
+if dpkg --compare-versions "$2" lt 2:20030616p10-7 && \
     pgrep -u amavis -f '/usr/bin/pyzor check' > /dev/null; then
   /etc/init.d/amavisd-cn stop
   pkill -9 -u amavis -f '/usr/bin/pyzor check' > /dev/null || true
@@ -347,18 +147,7 @@ if ! wait_for_fds amavis; then
   /etc/init.d/amavis.amavisd-new start
   wait_for_fds amavis
 fi
-if [ "$mta" = sendmail ]; then
-  if [ "$restart_daemon" -a -x /etc/init.d/amavisd-new-milter ]; then
-    /etc/init.d/amavisd-new-milter restart
-    restart_mta=1
-  fi
-  # always check that the daemons are running
-  if ! wait_for_fds milter; then
-    /etc/init.d/amavisd-new-milter start
-    wait_for_fds milter
-    restart_mta=1
-  fi
-elif [ "$restart_mta" ]; then
+if [ "$restart_mta" ]; then
   /etc/init.d/$mta restart
 fi
 
@@ -370,12 +159,13 @@ if dpkg --compare-versions "$2" lt "2:20030616p10-4"; then
   cp_echo "CN: Deleting virus-mail older than 7 days every day at 04:25 AM"
   cp_echo "    (can be changed in $CRONTAB)"
 fi
-# display this message just once... maybe use debconf instead
-if dpkg --compare-versions "$2" lt "2:20030616p10-4"; then
-  cp_echo ""
-  cp_echo "CN: To stop, start or restart all of the clamav+amavis+mta components,"
-  cp_echo "CN: use the /etc/init.d/amavisd-cn script."
-fi
+# This script is, hopefully, not needed any more.  Hide it.
+## display this message just once... maybe use debconf instead
+#if dpkg --compare-versions "$2" lt "2:20030616p10-4"; then
+#  cp_echo ""
+#  cp_echo "CN: To stop, start or restart all of the clamav+amavis+mta components,"
+#  cp_echo "CN: use the /etc/init.d/amavisd-cn script."
+#fi
 if [ "$failed" ]; then
   cp_echo ""
   cp_echo "CN: Services $failed failed to restart!"