#!/bin/sh

config() {
  NEW="$1"
  OLD="$(dirname $NEW)/$(basename $NEW .new)"
  # If there's no config file by that name, mv it over:
  if [ ! -r $OLD ]; then
    mv $NEW $OLD
  elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
    # toss the redundant copy
    rm $NEW
  fi
  # Otherwise, we leave the .new copy for the admin to consider...
}

# Keep same perms on rc.dovecot.new:
if [ -e etc/rc.d/rc.dovecot ]; then
  cp -a etc/rc.d/rc.dovecot etc/rc.d/rc.dovecot.new.incoming
  cat etc/rc.d/rc.dovecot.new > etc/rc.d/rc.dovecot.new.incoming
  mv etc/rc.d/rc.dovecot.new.incoming etc/rc.d/rc.dovecot.new
fi

config etc/rc.d/rc.dovecot.new
config etc/dovecot.conf.new

# Bail if user isn't valid on your system
if ! grep -q ^dovecot: /etc/passwd ; then
    groupadd -g 202 dovecot
    useradd -d /dev/null -s /bin/false -u 202 -g 202 dovecot
fi          
( cd usr/lib/dovecot/lda ; rm -rf lib21_fts_squat_plugin.so )
( cd usr/lib/dovecot/lda ; ln -sf ../lib21_fts_squat_plugin.so lib21_fts_squat_plugin.so )
( cd usr/lib/dovecot/lda ; rm -rf lib20_fts_plugin.so )
( cd usr/lib/dovecot/lda ; ln -sf ../lib20_fts_plugin.so lib20_fts_plugin.so )
( cd usr/lib/dovecot/lda ; rm -rf lib10_quota_plugin.so )
( cd usr/lib/dovecot/lda ; ln -sf ../lib10_quota_plugin.so lib10_quota_plugin.so )
( cd usr/lib/dovecot/lda ; rm -rf lib01_acl_plugin.so )
( cd usr/lib/dovecot/lda ; ln -sf ../lib01_acl_plugin.so lib01_acl_plugin.so )
( cd usr/lib/dovecot/lda ; rm -rf lib20_listescape_plugin.so )
( cd usr/lib/dovecot/lda ; ln -sf ../lib20_listescape_plugin.so lib20_listescape_plugin.so )
( cd usr/lib/dovecot/lda ; rm -rf lib20_mail_log_plugin.so )
( cd usr/lib/dovecot/lda ; ln -sf ../lib20_mail_log_plugin.so lib20_mail_log_plugin.so )
( cd usr/lib/dovecot/lda ; rm -rf lib20_convert_plugin.so )
( cd usr/lib/dovecot/lda ; ln -sf ../lib20_convert_plugin.so lib20_convert_plugin.so )
( cd usr/lib/dovecot/lda ; rm -rf lib20_autocreate_plugin.so )
( cd usr/lib/dovecot/lda ; ln -sf ../lib20_autocreate_plugin.so lib20_autocreate_plugin.so )
( cd usr/lib/dovecot/lda ; rm -rf lib11_trash_plugin.so )
( cd usr/lib/dovecot/lda ; ln -sf ../lib11_trash_plugin.so lib11_trash_plugin.so )
( cd usr/lib/dovecot/lda ; rm -rf lib20_virtual_plugin.so )
( cd usr/lib/dovecot/lda ; ln -sf ../lib20_virtual_plugin.so lib20_virtual_plugin.so )
( cd usr/lib/dovecot/lda ; rm -rf lib20_expire_plugin.so )
( cd usr/lib/dovecot/lda ; ln -sf ../lib20_expire_plugin.so lib20_expire_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib21_fts_squat_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib21_fts_squat_plugin.so lib21_fts_squat_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib20_fts_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib20_fts_plugin.so lib20_fts_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib10_quota_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib10_quota_plugin.so lib10_quota_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib01_acl_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib01_acl_plugin.so lib01_acl_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib20_listescape_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib20_listescape_plugin.so lib20_listescape_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib20_mail_log_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib20_mail_log_plugin.so lib20_mail_log_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib20_zlib_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib20_zlib_plugin.so lib20_zlib_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib20_mbox_snarf_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib20_mbox_snarf_plugin.so lib20_mbox_snarf_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib20_convert_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib20_convert_plugin.so lib20_convert_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib20_autocreate_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib20_autocreate_plugin.so lib20_autocreate_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib11_trash_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib11_trash_plugin.so lib11_trash_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib02_lazy_expunge_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib02_lazy_expunge_plugin.so lib02_lazy_expunge_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib20_virtual_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib20_virtual_plugin.so lib20_virtual_plugin.so )
( cd usr/lib/dovecot/imap ; rm -rf lib20_expire_plugin.so )
( cd usr/lib/dovecot/imap ; ln -sf ../lib20_expire_plugin.so lib20_expire_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib21_fts_squat_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib21_fts_squat_plugin.so lib21_fts_squat_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib20_fts_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib20_fts_plugin.so lib20_fts_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib10_quota_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib10_quota_plugin.so lib10_quota_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib20_listescape_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib20_listescape_plugin.so lib20_listescape_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib20_mail_log_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib20_mail_log_plugin.so lib20_mail_log_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib20_zlib_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib20_zlib_plugin.so lib20_zlib_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib20_mbox_snarf_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib20_mbox_snarf_plugin.so lib20_mbox_snarf_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib20_convert_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib20_convert_plugin.so lib20_convert_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib20_autocreate_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib20_autocreate_plugin.so lib20_autocreate_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib02_lazy_expunge_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib02_lazy_expunge_plugin.so lib02_lazy_expunge_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib20_virtual_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib20_virtual_plugin.so lib20_virtual_plugin.so )
( cd usr/lib/dovecot/pop3 ; rm -rf lib20_expire_plugin.so )
( cd usr/lib/dovecot/pop3 ; ln -sf ../lib20_expire_plugin.so lib20_expire_plugin.so )
