Blame SOURCES/sendmail.etc-mail-make

f67e08
#!/bin/sh
f67e08
# Generate db and cf files if necessary. This used to be handled by
f67e08
# /etc/mail/Makefile.
f67e08
f67e08
teste() {
f67e08
  if ! test -e "$1"; then
f67e08
    echo "$1 doesn't exist"
f67e08
    exit 2
f67e08
  fi
f67e08
}
f67e08
f67e08
makedb() {
f67e08
  teste "${1%.db}"
f67e08
f67e08
  if [ -z "$SM_FORCE_DBREBUILD" ]; then
f67e08
    test "${1%.db}" -nt "$1" || return 0
f67e08
  fi
f67e08
f67e08
  if [ "$1" = userdb.db ]; then
f67e08
    makemap btree "$1" < "${1%.db}"
f67e08
  else
f67e08
    makemap hash "$1" < "${1%.db}"
f67e08
  fi
f67e08
}
f67e08
f67e08
makealiasesdb() {
f67e08
  uptodate=1
f67e08
f67e08
  if [ -z "$SM_FORCE_DBREBUILD" ]; then
f67e08
    files=$(grep '^O AliasFile=' sendmail.cf |
f67e08
      while read a; do echo ${a#*=}; done)
f67e08
f67e08
    for a in $files; do
f67e08
      if [ "$a" = /etc/aliases ]; then
f67e08
        # /etc/aliases.db may be used by other MTA, make sure nothing
f67e08
        # has touched it since our last newaliases call
f67e08
        test "$a" -nt "${a}.db" ||
f67e08
          test aliasesdb-stamp -nt "${a}.db" ||
f67e08
          test aliasesdb-stamp -ot "${a}.db" || continue
f67e08
      else
f67e08
        test "$a" -nt "${a}.db" || continue
f67e08
      fi
f67e08
f67e08
      uptodate=0
f67e08
      break
f67e08
    done
f67e08
  else
f67e08
    uptodate=0
f67e08
  fi
f67e08
f67e08
  [ $uptodate = 1 ] && return 0
f67e08
f67e08
  # check if alternatives is configured to sendmail
f67e08
  if [ "$(readlink -e /usr/bin/newaliases)" = /usr/sbin/sendmail.sendmail ]
f67e08
  then
f67e08
    /usr/bin/newaliases > /dev/null
f67e08
    touch -r /etc/aliases.db aliasesdb-stamp 2> /dev/null
f67e08
  else
f67e08
    rm -f aliasesdb-stamp
f67e08
  fi
f67e08
}
f67e08
f67e08
makecf() {
f67e08
  mc=${1%.cf}.mc
f67e08
f67e08
  teste "$mc"
f67e08
f67e08
  if [ -z "$SM_FORCE_CFREBUILD" ]; then
f67e08
    test "$mc" -nt "$1" || return 0
f67e08
  fi
f67e08
f67e08
  if test -f /usr/share/sendmail-cf/m4/cf.m4; then
f67e08
    umask 022
f67e08
    [ -e "$1" ] && mv -f "$1" "$1".bak
f67e08
    m4 "$mc" > "$1"
f67e08
  else
f67e08
    echo "WARNING: '$mc' is modified. Please install package sendmail-cf to update your configuration."
f67e08
    exit 15
f67e08
  fi
f67e08
}
f67e08
f67e08
makeall() {
f67e08
  # These could be used by sendmail, but are not part of the default install.
f67e08
  # To use them you will have to generate your own sendmail.cf with
f67e08
  # FEATURE('whatever')
f67e08
  test -f bitdomain && makedb bitdomain.db
f67e08
  test -f uudomain && makedb uudomain.db
f67e08
  test -f genericstable && makedb genericstable.db
f67e08
  test -f userdb && makedb userdb.db
f67e08
  test -f authinfo && makedb authinfo.db
f67e08
f67e08
  makedb virtusertable.db
f67e08
  makedb access.db
f67e08
  makedb domaintable.db
f67e08
  makedb mailertable.db
f67e08
f67e08
  makecf sendmail.cf
f67e08
  makecf submit.cf
f67e08
}
f67e08
f67e08
cd /etc/mail || exit 1
f67e08
f67e08
[ $# -eq 0 ] && makeall
f67e08
f67e08
for target; do
f67e08
  case "$target" in
f67e08
    *.db)
f67e08
      makedb "$target"
f67e08
      ;;
f67e08
    *.cf)
f67e08
      makecf "$target"
f67e08
      ;;
f67e08
    all)
f67e08
      makeall
f67e08
      ;;
f67e08
    aliases)
f67e08
      makealiasesdb
f67e08
      ;;
f67e08
    clean)
f67e08
      rm -f *.db *~ aliasesdb-stamp
f67e08
      ;;
f67e08
    start|stop|restart)
f67e08
      service sendmail "$target"
f67e08
      ;;
f67e08
    *)
f67e08
      echo "Don't know how to make $target"
f67e08
      exit 2
f67e08
  esac
f67e08
done