a7627e5f06
that might block startup, and be more permissive in general about allowing the daemons to start. Add some descriptive comments to the top of the smmsp script that describe the purpose of the process.
107 lines
2.9 KiB
Bash
Executable File
107 lines
2.9 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# $NetBSD: sendmail,v 1.16 2003/04/02 18:00:13 atatat Exp $
|
|
#
|
|
|
|
# PROVIDE: mail
|
|
# REQUIRE: LOGIN
|
|
# we make mail start late, so that things like .forward's are not
|
|
# processed until the system is fully operational
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="sendmail"
|
|
rcvar=$name
|
|
command="/usr/sbin/${name}"
|
|
pidfile="/var/run/${name}.pid"
|
|
required_files="/etc/mail/sendmail.cf"
|
|
start_precmd="sendmail_precmd"
|
|
|
|
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 sendmail && [ -f "/etc/${name}.cf" ]; then
|
|
if ! cmp -s "/etc/mail/${name}.cf" "/etc/${name}.cf"; then
|
|
warn \
|
|
"${name} was not started; you have multiple copies of sendmail.cf."
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
# check modifications on /etc/mail/aliases
|
|
if [ -f "/etc/mail/aliases.db" ]; then
|
|
if [ "/etc/mail/aliases" -nt "/etc/mail/aliases.db" ]; then
|
|
echo \
|
|
"${name}: /etc/mail/aliases newer than /etc/mail/aliases.db, regenerating"
|
|
/usr/bin/newaliases
|
|
fi
|
|
else
|
|
echo \
|
|
"${name}: /etc/mail/aliases.db not present, generating"
|
|
/usr/bin/newaliases
|
|
fi
|
|
|
|
# check couple of common db files, too
|
|
for f in access genericstable virtusertable domaintable mailertable; do
|
|
if [ -r "/etc/mail/$f" -a \
|
|
"/etc/mail/$f" -nt "/etc/mail/$f.db" ]; then
|
|
echo \
|
|
"${name}: /etc/mail/$f newer than /etc/mail/$f.db, regenerating"
|
|
/usr/sbin/makemap hash /etc/mail/$f < /etc/mail/$f
|
|
fi
|
|
done
|
|
|
|
if checkyesno sendmail_suidroot; then
|
|
_owner_fmt="%p %Su"
|
|
_def_owner="104555 root"
|
|
_sm_root="true"
|
|
else
|
|
_owner_fmt="%p %Su %Sg"
|
|
_def_owner="102555 root smmsp"
|
|
_sm_root="false"
|
|
fi
|
|
_def_version="10"
|
|
_def_cqueuemode="40770 smmsp smmsp"
|
|
|
|
_owner=$(stat -qf"${_owner_fmt}" /usr/libexec/sendmail/sendmail)
|
|
_cfversion=$(sed -n 's/^V *\([0-9]*\).*/\1/p' /etc/mail/sendmail.cf)
|
|
_cqueuemode="${_def_cqueuemode}" # changed later, if needed
|
|
|
|
# check owner and mode of real sendmail binary
|
|
if [ "${_owner}" != "${_def_owner}" ]; then
|
|
warn "/usr/libexec/sendmail/sendmail has wrong owner/mode"
|
|
fi
|
|
|
|
# check .cf file version
|
|
if [ "${_cfversion}" != "${_def_version}" ]; then
|
|
warn "${name}.cf has wrong version " \
|
|
"(have ${_cfversion}, should be ${_def_version})"
|
|
fi
|
|
|
|
# check submit.cf existence
|
|
if ${_sm_root}; then
|
|
if [ -f "/etc/mail/submit.cf" ]; then
|
|
warn "${name} is suid root, but submit.cf exists"
|
|
fi
|
|
else
|
|
if [ ! -f "/etc/mail/submit.cf" ]; then
|
|
warn "${name} is sgid smmsp, but submit.cf is missing"
|
|
else
|
|
_cqueue=$(awk 'match($0,"^O *QueueDirectory=") {
|
|
print(substr($0, RSTART+RLENGTH))
|
|
}' "/etc/mail/submit.cf")
|
|
_cqueuemode=$(stat -qf"%p %Su %Sg" "${_cqueue}")
|
|
fi
|
|
fi
|
|
|
|
# look at clientmqueue's owner, group, and mode
|
|
if [ "${_cqueuemode}" != "${_def_cqueuemode}" ]; then
|
|
warn "sendmail client queue ${_cqueue} has wrong owner/mode"
|
|
fi
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|