Package: opensmtpd
Version: 6.6.1p1-1
Severity: wishlist

Would it be possible to make the opensmtpd config file configurable?
Some code in the init file like


        test -f /etc/default/opensmtpd.conf && source 
/etc/default/opensmtpd.conf
        : ${CONFIG:="/etc/smtpd.conf"}

        :
        start-stop-daemon --start -p "${PIDFILE}" --exec ${DAEMON} -- -f 
"${CONFIG}"
        :

would do. See attachment.

That would allow me to run a private "/etc/smarthost.smtpd.conf" (just as an
example) without conflict to the default config file provided in the
package.


Thanx in advance
Harri
#!/bin/sh
# /etc/init.d/opensmtpd
#
# Written by Daniel Walrond <deb...@djw.org.uk>
#        and Ryan Kavanagh <r...@debian.org>

### BEGIN INIT INFO
# Provides:          opensmtpd mail-transport-agent
# Required-Start:    $local_fs $remote_fs $syslog $network
# Required-Stop:     $local_fs $remote_fs $syslog $network
# Should-Start:      postgresql mysql dovecot
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: opensmtpd Mail Transport Agent
# Description:       OpenSMTPD
### END INIT INFO

# Do not "set -e"; /lib/lsb/init-functions included below may fail if "set -e"
# is in effect and echoing status messages to the console fails.
set -u

BASE="smtpd"
DAEMON="/usr/sbin/smtpd"
CONTROL="/usr/sbin/smtpctl"
PIDFILE="/run/${BASE}.pid"
DESC="opensmtpd"

test -f /etc/default/opensmtpd.conf && source /etc/default/opensmtpd.conf

: ${CONFIG:="/etc/smtpd.conf"}

test -x /usr/sbin/smtpd || exit 0

. /lib/lsb/init-functions

smtpd_start()
{
  if start-stop-daemon \
      --start \
      --pidfile "${PIDFILE}" \
      --exec "${DAEMON}" \
      -- -f "${CONFIG}"; then
    log_progress_msg "opensmtpd"
    return 0
  else
    log_progress_msg "opensmtpd"
    return 1
  fi
}

smtpd_stop()
{
  if start-stop-daemon --stop --pidfile "${PIDFILE}" -- -f "${CONFIG}"; then
    log_progress_msg "opensmtpd"
    return 0
  else
    log_progress_msg "opensmtpd"
    return 1
  fi
}

smtpd_config_check()
{
# ${DAEMON} -n checks the config file's validity
if "${DAEMON}" -f "${CONFIG}" -n >/dev/null 2>&1; then
  return 0
else
  log_end_msg 1
  "${DAEMON}" -f "${CONFIG}" -n
  return 1
fi
}

case "$1" in
start)
  log_daemon_msg "Starting MTA"
  # Although smtpd checks the config automatically on startup,
  # check it manually ourselves so that error messages are
  # printed after our "failed!" instead of between it and
  # "Starting MTA"
  if smtpd_config_check; then
    smtpd_start
    log_end_msg $?
  fi
  ;;
stop)
  log_daemon_msg "Stopping MTA"
  smtpd_stop
  log_end_msg $?
  ;;
restart)
  log_daemon_msg "Stopping MTA for restart"
  # If the check fails, the log_end_msg in smtpd_config_check
  # will output "failed!" for us.
  if smtpd_config_check; then
    smtpd_stop
    log_end_msg $?
    log_daemon_msg "Restarting MTA"
    smtpd_start
    log_end_msg $?
  fi
  ;;
force-reload)
  log_daemon_msg "Stopping MTA for reload"
  smtpd_stop
  log_end_msg $?
  log_daemon_msg "Restarting MTA"
  smtpd_start
  log_end_msg $?
  ;;
check)
  log_daemon_msg "Checking MTA configuration"
  if smtpd_config_check; then
    log_progress_msg "success"
    log_end_msg $?
  fi
  ;;
status)
  status_of_proc "${DAEMON}" "MTA ${DESC}"
  ;;
*)
  echo "Usage: $0 {start|stop|restart|force-reload|status|check}"
  exit 1
  ;;
esac

exit 0

# vim:set sw=2:

Reply via email to