freebsd-ports/mail/mailscanner/files/mta.in

150 lines
4.1 KiB
Bash

#!/bin/sh
#
# mta.sh - start multiple MTA instances, e.g. for MailScanner
# PROVIDE: mta
# REQUIRE: LOGIN cleanvar
# BEFORE:
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable mta at boot-up time:
# mta_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable mta
# mta_type (str): Type of MTA (sendmail, exim, unknown), defaults to "sendmail"
# mta_profiles (string): Undefined by default. Define your profiles here.
# mta_flags (str): Set to "" by default.
# Extra flags passed to start command.
# mta_program (str): Path to program, defaults depending on $mta_type
# either to "/usr/sbin/sendmail" or "/usr/local/sbin/exim"
# mta_configfile (str): Config file, defaults depending on $mta_type either
# to "/etc/mail/sendmail.cf" or "/usr/local/etc/exim/configure"
# mta_pidfile (str): PID file, defaults depending on $mta_type either
# to "/var/run/sendmail.pid" or "/var/run/exim.pid"
#
#
# ATTENTION: All of the above entries are necessary in order for mta.sh to work correctly!
#
#
# Examples:
#
# Exim, 2 instances (for MailScanner):
#
# mta_enable="YES"
# mta_type="exim"
# mta_profiles="incoming outgoing"
# mta_incoming_configfile="/usr/local/etc/exim/configure.in"
# mta_incoming_flags="-bd"
# mta_incoming_pidfile="/var/run/exim_in.pid"
# mta_outgoing_configfile="/usr/local/etc/exim/configure.out"
# mta_outgoing_flags="-q15m"
# mta_outgoing_pidfile="/var/run/exim_out.pid"
#
# Sendmail, 3 instances (for MailScanner):
#
# mta_enable="YES"
# mta_type="sendmail"
# mta_profiles="incoming outgoing submitqueue"
# mta_incoming_flags="-L sm-mta-in -bd -OPrivacyOptions=noetrn -OQueueDirectory=/var/spool/mqueue.in -ODeliveryMode=queueonly"
# mta_incoming_pidfile="/var/run/sendmail_in.pid"
# mta_incoming_configfile="/etc/mail/sendmail.cf"
# mta_outgoing_flags="-L sm-mta-out -q15m"
# mta_outgoing_pidfile="/var/run/sendmail_out.pid"
# mta_outgoing_configfile="/etc/mail/sendmail.cf"
# mta_submitqueue_flags="-L sm-msp-queue -Ac -q15m"
# mta_submitqueue_pidfile="/var/spool/clientmqueue/sm-client.pid"
# mta_submitqueue_configfile="/etc/mail/submit.cf"
PATH=$PATH:/sbin:/usr/sbin; export PATH
. /etc/rc.subr
name="mta"
rcvar=`set_rcvar`
_mta_rc_script="%%PREFIX%%/etc/rc.d/mta"
load_rc_config $name
: ${mta_enable="NO"}
: ${mta_type="sendmail"}
case "${mta_type}" in
sendmail)
_mta_program="/usr/sbin/sendmail"
_mta_configfile="/etc/mail/sendmail.cf"
_mta_pidfile="/var/run/sendmail.pid"
;;
exim)
_mta_program="/usr/local/sbin/exim"
_mta_configfile="/usr/local/etc/exim/configure"
_mta_pidfile="/var/run/exim.pid"
;;
esac
: ${mta_program=${_mta_program}}
: ${mta_configfile=${_mta_configfile}}
: ${mta_pidfile=${_mta_pidfile}}
# support SIGHUP to reparse configuration file
extra_commands="reload"
# command and arguments
command="${mta_program}"
if [ -n "${2}" -o -n "$profile" ]; then
profile=${profile-$2}
export profile
if [ "x${mta_profiles}" != "x" ]; then
eval mta_configfile=\${mta_${profile}_configfile}
[ "x${mta_configfile}" = "x" ] && {
echo "You must define a configuration file (mta_${profile}_configfile)"
exit 1
}
eval mta_enable=\${mta_${profile}_enable:-YES}
eval mta_flags=\${mta_${profile}_flags:-${mta_flags}}
eval mta_configfile=\${mta_${profile}_configfile:-${mta_configfile}}
eval mta_pidfile=\${mta_${profile}_pidfile:-${mta_pidfile}}
pidfile="${_pidprefix}.${profile}.pid"
else
echo "$_mta_rc_script: extra argument ignored"
fi
else
if [ "x${mta_profiles}" != "x" ]; then
for profile in ${mta_profiles}; do
echo "===> mta profile: ${profile}"
$_mta_rc_script $1 $profile
retcode=$?
if [ "$?" -ne 0 ]; then
failed="${profile} ({$retcode}) ${failed}"
else
success="${profile} ${success}"
fi
done
exit 0
fi
fi
pidfile=${mta_pidfile}
required_files="${mta_configfile}"
# select correct command arguments
case "${mta_type}" in
sendmail)
command_args="-C'${mta_configfile}' -OPidFile='${pidfile}'"
;;
exim)
command_args="-C '${mta_configfile}' -oP '${pidfile}'"
;;
*)
command_args=""
;;
esac
run_rc_command "$1"