mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-12-04 15:13:58 +01:00
rc.d/sendmail: Fix error with some configurations
The sendmail startup script can run 4 daemons: sendmail, sendmail_submit,
sendmail_outbound, and sendmail_msp_queue. Of the first 3 at most one
can be enabled. There's a run_rc_command call for each and the ones for
sendmail and sendmail_msp_queue run unconditionally. For some rc
commands this triggers warnings or errors when sendmail_enable="NO" or
sendmail_msp_queue_enable="NO". Since d2e7bb630b
these errors are
propagated and the whole script fails.
Fix this by first determining which daemons are enabled, setting ${name}
and ${rcvar} accordingly, and then always calling run_rc_command
conditionally.
Also replace ${name}.cf with sendmail.cf because ${name} isn't always
sendmail.
PR: 282585
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D47757
This commit is contained in:
parent
057db5b227
commit
6b17d944a1
@ -42,11 +42,28 @@ esac
|
||||
if checkyesno sendmail_enable; then
|
||||
sendmail_submit_enable="NO"
|
||||
sendmail_outbound_enable="NO"
|
||||
_sendmail_run=true
|
||||
fi
|
||||
|
||||
# If sendmail_submit_enable=yes, don't need outbound daemon
|
||||
if checkyesno sendmail_submit_enable; then
|
||||
name="sendmail_submit"
|
||||
rcvar="sendmail_submit_enable"
|
||||
sendmail_outbound_enable="NO"
|
||||
_sendmail_run=true
|
||||
fi
|
||||
|
||||
if checkyesno sendmail_outbound_enable; then
|
||||
name="sendmail_outbound"
|
||||
rcvar="sendmail_outbound_enable"
|
||||
_sendmail_run=true
|
||||
fi
|
||||
|
||||
if checkyesno sendmail_msp_queue_enable; then
|
||||
_sendmail_msp_queue_run=true
|
||||
else
|
||||
# Make sure run_rc_command is called at least once.
|
||||
_sendmail_run=true
|
||||
fi
|
||||
|
||||
sendmail_cert_create()
|
||||
@ -166,8 +183,8 @@ sendmail_precmd()
|
||||
# Die if there's pre-8.10 custom configuration file. This check is
|
||||
# mandatory for smooth upgrade. See NetBSD PR 10100 for details.
|
||||
#
|
||||
if checkyesno ${rcvar} && [ -f "/etc/${name}.cf" ]; then
|
||||
if ! cmp -s "/etc/mail/${name}.cf" "/etc/${name}.cf"; then
|
||||
if checkyesno ${rcvar} && [ -f "/etc/sendmail.cf" ]; then
|
||||
if ! cmp -s "/etc/mail/sendmail.cf" "/etc/sendmail.cf"; then
|
||||
warn \
|
||||
"${name} was not started; you have multiple copies of sendmail.cf."
|
||||
return 1
|
||||
@ -205,27 +222,12 @@ sendmail_precmd()
|
||||
fi
|
||||
}
|
||||
|
||||
if ${_sendmail_run:-false}; then
|
||||
run_rc_command "$1"
|
||||
fi
|
||||
_ret=$?
|
||||
|
||||
required_files=
|
||||
|
||||
if checkyesno sendmail_submit_enable; then
|
||||
name="sendmail_submit"
|
||||
rcvar="sendmail_submit_enable"
|
||||
_rc_restart_done=false
|
||||
run_rc_command "$1"
|
||||
_ret=$(( _ret > $? ? _ret : $? ))
|
||||
fi
|
||||
|
||||
if checkyesno sendmail_outbound_enable; then
|
||||
name="sendmail_outbound"
|
||||
rcvar="sendmail_outbound_enable"
|
||||
_rc_restart_done=false
|
||||
run_rc_command "$1"
|
||||
_ret=$(( _ret > $? ? _ret : $? ))
|
||||
fi
|
||||
|
||||
if ${_sendmail_msp_queue_run:-false}; then
|
||||
name="sendmail_msp_queue"
|
||||
rcvar="sendmail_msp_queue_enable"
|
||||
pidfile="${sendmail_msp_queue_pidfile:-/var/spool/clientmqueue/sm-client.pid}"
|
||||
@ -233,5 +235,6 @@ required_files="/etc/mail/submit.cf"
|
||||
_rc_restart_done=false
|
||||
run_rc_command "$1"
|
||||
_ret=$(( _ret > $? ? _ret : $? ))
|
||||
fi
|
||||
|
||||
(exit "$_ret")
|
||||
|
Loading…
Reference in New Issue
Block a user