lkundrak / rpms / sendmail

Forked from rpms/sendmail 4 years ago
Clone
a5550f2
#!/bin/sh
a5550f2
# Generate db and cf files if necessary. This used to be handled by
a5550f2
# /etc/mail/Makefile.
a5550f2
a5550f2
teste() {
a5550f2
  if ! test -e "$1"; then
a5550f2
    echo "$1 doesn't exist"
a5550f2
    exit 2
a5550f2
  fi
a5550f2
}
a5550f2
a5550f2
makedb() {
a5550f2
  teste "${1%.db}"
a5550f2
a5550f2
  if [ -z "$SM_FORCE_DBREBUILD" ]; then
a5550f2
    test "${1%.db}" -nt "$1" || return 0
a5550f2
  fi
a5550f2
a5550f2
  if [ "$1" = userdb.db ]; then
a5550f2
    makemap btree "$1" < "${1%.db}"
a5550f2
  else
a5550f2
    makemap hash "$1" < "${1%.db}"
a5550f2
  fi
a5550f2
}
a5550f2
a5550f2
makecf() {
a5550f2
  mc=${1%.cf}.mc
a5550f2
a5550f2
  teste "$mc"
a5550f2
a5550f2
  if [ -z "$SM_FORCE_CFREBUILD" ]; then
a5550f2
    test "$mc" -nt "$1" || return 0
a5550f2
  fi
a5550f2
a5550f2
  if test -f /usr/share/sendmail-cf/m4/cf.m4; then
a5550f2
    umask 022
a5550f2
    [ -e "$1" ] && mv -f "$1" "$1".bak
a5550f2
    m4 "$mc" > "$1"
a5550f2
  else
a5550f2
    echo "WARNING: '$mc' is modified. Please install package sendmail-cf to update your configuration."
a5550f2
    exit 15
a5550f2
  fi
a5550f2
}
a5550f2
a5550f2
makeall() {
a5550f2
  # These could be used by sendmail, but are not part of the default install.
a5550f2
  # To use them you will have to generate your own sendmail.cf with
a5550f2
  # FEATURE('whatever')
a5550f2
  test -f bitdomain && makedb bitdomain.db
a5550f2
  test -f uudomain && makedb uudomain.db
a5550f2
  test -f genericstable && makedb genericstable.db
a5550f2
  test -f userdb && makedb userdb.db
a5550f2
  test -f authinfo && makedb authinfo.db
a5550f2
a5550f2
  makedb virtusertable.db
a5550f2
  makedb access.db
a5550f2
  makedb domaintable.db
a5550f2
  makedb mailertable.db
a5550f2
a5550f2
  makecf sendmail.cf
a5550f2
  makecf submit.cf
a5550f2
}
a5550f2
a5550f2
cd /etc/mail || exit 1
a5550f2
a5550f2
[ $# -eq 0 ] && makeall
a5550f2
a5550f2
for target; do
a5550f2
  case "$target" in
a5550f2
    *.db)
a5550f2
      makedb "$target"
a5550f2
      ;;
a5550f2
    *.cf)
a5550f2
      makecf "$target"
a5550f2
      ;;
a5550f2
    all)
a5550f2
      makeall
a5550f2
      ;;
a5550f2
    clean)
a5550f2
      rm -f *.db *~
a5550f2
      ;;
a5550f2
    start|stop|restart)
a5550f2
      service sendmail "$target"
a5550f2
      ;;
a5550f2
    *)
a5550f2
      echo "Don't know how to make $target"
a5550f2
      exit 2
a5550f2
  esac
a5550f2
done