Quoting Peter Wemm, "At great personal risk, touch the sendmail startup

again."

As an alternative to sendmail_enable=NONE, solve the boot time problem
for non-sendmail users completely by moving all of the sendmail startup
code from /etc/rc to /etc/rc.sendmail.  The source for that script will
be kept in src/etc/sendmail/rc.sendmail so make.conf's NO_SENDMAIL will
prevent it from being installed.  A new rc.conf variable,
mta_start_script specifies the script to run to start the user's
preferred MTA.  For backward compatibility, it will default to
/etc/rc.sendmail.  The specified script is called out of /etc/rc after
checking to make sure it exists.  A new rc.sendmail.8 man page has also
been added which now houses the sendmail_* variable descriptions
formerly in rc.conf.5.

Use /etc/rc.sendmail in /etc/mail/Makefile to reduce code duplication.

Reviewed by:	-current, -stable, obrien, peter, ru
MFC after:	1 week
This commit is contained in:
gshapiro 2002-04-05 02:30:49 +00:00
parent 293815b90a
commit cd7393b940
9 changed files with 703 additions and 219 deletions

View File

@ -324,17 +324,12 @@ allscreens_kbdflags="" # Set this kbdcontrol mode for all virtual screens
##############################################################
### Miscellaneous administrative options ###################
### Mail Transfer Agent (MTA) options ######################
##############################################################
cron_enable="YES" # Run the periodic job daemon.
cron_program="/usr/sbin/cron" # Which cron executable to run (if enabled).
cron_flags="" # Which options to pass to the cron daemon.
lpd_enable="NO" # Run the line printer daemon.
lpd_program="/usr/sbin/lpd" # path to lpd, if you want a different one.
lpd_flags="" # Flags to lpd (if enabled).
usbd_enable="NO" # Run the usbd daemon.
usbd_flags="" # Flags to usbd (if enabled).
mta_start_script="/etc/rc.sendmail"
# Script to start your chosen MTA, called by /etc/rc.
# Settings for /etc/rc.sendmail:
sendmail_enable="NO" # Run the sendmail inbound daemon (YES/NO/NONE).
# If NONE, don't start any sendmail processes.
sendmail_flags="-L sm-mta -bd -q30m" # Flags to sendmail (as a server)
@ -346,6 +341,20 @@ sendmail_outbound_flags="-L sm-queue -q30m" # Flags to sendmail (outbound only)
sendmail_msp_queue_enable="YES" # Dequeue stuck clientmqueue mail (YES/NO).
sendmail_msp_queue_flags="-L sm-msp-queue -Ac -q30m"
# Flags for sendmail_msp_queue daemon.
##############################################################
### Miscellaneous administrative options ###################
##############################################################
cron_enable="YES" # Run the periodic job daemon.
cron_program="/usr/sbin/cron" # Which cron executable to run (if enabled).
cron_flags="" # Which options to pass to the cron daemon.
lpd_enable="NO" # Run the line printer daemon.
lpd_program="/usr/sbin/lpd" # path to lpd, if you want a different one.
lpd_flags="" # Flags to lpd (if enabled).
usbd_enable="NO" # Run the usbd daemon.
usbd_flags="" # Flags to usbd (if enabled).
dumpdev="NO" # Device name to crashdump to (or NO).
dumpdir="/var/crash" # Directory where crash dumps are to be stored
savecore_flags="" # Used if dumpdev is enabled above, and present.

View File

@ -12,13 +12,22 @@
# aliases - Build the sendmail aliases
# install - Install the .cf file as /etc/mail/sendmail.cf
#
# For the MTA daemon:
# start - Start the sendmail daemon with the flags defined in
# /etc/defaults/rc.conf or /etc/rc.conf
# stop - Stop the sendmail daemon
# restart - Restart the sendmail daemon
# For acting on both the MTA daemon and MSP queue running daemon:
# start - Start both the sendmail MTA daemon and MSP queue running
# daemon with the flags defined in /etc/defaults/rc.conf or
# /etc/rc.conf
# stop - Stop both the sendmail MTA daemon and MSP queue running
# daemon
# restart - Restart both the sendmail MTA daemon and MSP queue running
# daemon
#
# For the MSP queue running daemon:
# For acting on just the MTA daemon:
# start-mta - Start the sendmail MTA daemon with the flags defined in
# /etc/defaults/rc.conf or /etc/rc.conf
# stop-mta - Stop the sendmail MTA daemon
# restart-mta - Restart the sendmail MTA daemon
#
# For acting on just the MSP queue running daemon:
# start-mspq - Start the sendmail MSP queue running daemon with the
# flags defined in /etc/defaults/rc.conf or /etc/rc.conf
# stop-mspq - Stop the sendmail MSP queue running daemon
@ -70,10 +79,9 @@ SENDMAIL_CF_DIR?= /usr/src/contrib/sendmail/cf
.endif
#
# The pid is used to stop and restart the running daemon.
# The sendmail startup script
#
SENDMAIL_PIDFILE?= /var/run/sendmail.pid
SENDMAIL_MSPQ_PIDFILE?= /var/spool/clientmqueue/sm-client.pid
SENDMAIL_START_SCRIPT?= /etc/rc.sendmail
#
# Some useful programs we need.
@ -81,7 +89,6 @@ SENDMAIL_MSPQ_PIDFILE?= /var/spool/clientmqueue/sm-client.pid
SENDMAIL?= /usr/sbin/sendmail
MAKEMAP?= /usr/sbin/makemap
M4?= /usr/bin/m4
KILL?= /bin/kill
# Set a reasonable default
.MAIN: all
@ -172,65 +179,26 @@ install: ${INSTALL_CF}
${INSTALL} -c -m ${SHAREMODE} ${INSTALL_CF} /etc/mail/sendmail.cf
.endif
start:
@(. /etc/defaults/rc.conf; source_rc_confs; \
case "$${sendmail_enable}" in \
[Nn][Oo][Nn][Ee]) \
echo "ERROR: sendmail_enable is set to $${sendmail_enable}" \
;; \
[Yy][Ee][Ss]) \
${SENDMAIL} $${sendmail_flags}; \
echo "${SENDMAIL} $${sendmail_flags}" \
;; \
*) \
case "$${sendmail_submit_enable}" in \
[Yy][Ee][Ss]) \
${SENDMAIL} $${sendmail_submit_flags}; \
echo "${SENDMAIL} $${sendmail_submit_flags}" \
;; \
*) \
case "$${sendmail_outbound_enable}" in \
[Yy][Ee][Ss]) \
${SENDMAIL} $${sendmail_outbound_flags}; \
echo "${SENDMAIL} $${sendmail_outbound_flags}" \
;; \
esac \
;; \
esac \
;; \
esac \
)
start start-mta start-mspq:
@if [ -r ${SENDMAIL_START_SCRIPT} ]; then \
echo -n 'Starting:'; \
sh ${SENDMAIL_START_SCRIPT} $@; \
echo '.'; \
fi
stop:
${KILL} -TERM `head -1 ${SENDMAIL_PIDFILE}`
stop stop-mta stop-mspq:
@if [ -r ${SENDMAIL_START_SCRIPT} ]; then \
echo -n 'Stopping:'; \
sh ${SENDMAIL_START_SCRIPT} $@; \
echo '.'; \
fi
restart:
${KILL} -HUP `head -1 ${SENDMAIL_PIDFILE}`
start-mspq:
@(. /etc/defaults/rc.conf; source_rc_confs; \
case "$${sendmail_enable}" in \
[Nn][Oo][Nn][Ee]) \
echo "ERROR: sendmail_enable is set to $${sendmail_enable}" \
;; \
*) \
if [ -r /etc/mail/submit.cf ]; then \
case "$${sendmail_msp_queue_enable}" in \
[Yy][Ee][Ss]) \
${SENDMAIL} $${sendmail_msp_queue_flags}; \
echo "${SENDMAIL} $${sendmail_msp_queue_flags}" \
;; \
esac \
fi \
;; \
esac \
)
stop-mspq:
${KILL} -TERM `head -1 ${SENDMAIL_MSPQ_PIDFILE}`
restart-mspq:
${KILL} -HUP `head -1 ${SENDMAIL_MSPQ_PIDFILE}`
restart restart-mta restart-mspq:
@if [ -r ${SENDMAIL_START_SCRIPT} ]; then \
echo -n 'Restarting:'; \
sh ${SENDMAIL_START_SCRIPT} $@; \
echo '.'; \
fi
# User defined targets
.if exists(Makefile.local)

42
etc/rc
View File

@ -702,44 +702,10 @@ case ${usbd_enable} in
;;
esac
# Note: Please keep the sendmail startup code here in sync with the code
# in src/etc/mail/Makefile.
case ${sendmail_enable} in
[Nn][Oo][Nn][Ee])
;;
[Yy][Ee][Ss])
echo -n ' sendmail'
/usr/sbin/sendmail ${sendmail_flags}
;;
*)
case ${sendmail_submit_enable} in
[Yy][Ee][Ss])
echo -n ' sendmail-submit'
/usr/sbin/sendmail ${sendmail_submit_flags}
;;
*)
case ${sendmail_outbound_enable} in
[Yy][Ee][Ss])
echo -n ' sendmail-outbound'
/usr/sbin/sendmail ${sendmail_outbound_flags}
;;
esac
;;
esac
;;
esac
case ${sendmail_enable} in
[Nn][Oo][Nn][Ee])
;;
*)
if [ -r /etc/mail/submit.cf ]; then
case ${sendmail_msp_queue_enable} in
[Yy][Ee][Ss])
echo -n ' sendmail-clientmqueue'
/usr/sbin/sendmail ${sendmail_msp_queue_flags}
;;
esac
case ${mta_start_script} in
/*)
if [ -r ${mta_start_script} ]; then
sh ${mta_start_script}
fi
;;
esac

193
etc/rc.sendmail Normal file
View File

@ -0,0 +1,193 @@
#!/bin/sh
#
# Copyright (c) 2000, 2002 The FreeBSD Project
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD$
#
# This script is used by /etc/rc at boot time to start sendmail. It
# is meant to be sendmail specific and not a generic script for all
# MTAs. It is only called by /etc/rc if the rc.conf mta_start_script is
# set to /etc/rc.sendmail. This provides the opportunity for other MTAs
# to provide their own startup script.
# The script is also used by /etc/mail/Makefile to enable the
# start/stop/restart targets.
# The source for the script can be found in src/etc/sendmail/rc.sendmail.
if [ -r /etc/defaults/rc.conf ]; then
. /etc/defaults/rc.conf
source_rc_confs
elif [ -r /etc/rc.conf ]; then
. /etc/rc.conf
fi
# The sendmail binary
sendmail_program=${sendmail_program:-/usr/sbin/sendmail}
# The pid is used to stop and restart the running daemon(s).
sendmail_pidfile=${sendmail_pidfile:-/var/run/sendmail.pid}
sendmail_mspq_pidfile=${sendmail_mspq_pidfile:-/var/spool/clientmqueue/sm-client.pid}
start_mta()
{
case ${sendmail_enable} in
[Nn][Oo][Nn][Ee])
;;
[Yy][Ee][Ss])
echo -n ' sendmail'
${sendmail_program} ${sendmail_flags}
;;
*)
case ${sendmail_submit_enable} in
[Yy][Ee][Ss])
echo -n ' sendmail-submit'
${sendmail_program} ${sendmail_submit_flags}
;;
*)
case ${sendmail_outbound_enable} in
[Yy][Ee][Ss])
echo -n ' sendmail-outbound'
${sendmail_program} ${sendmail_outbound_flags}
;;
esac
;;
esac
;;
esac
}
stop_mta()
{
if [ -r ${sendmail_pidfile} ]; then
echo -n ' sendmail'
kill -TERM `head -1 ${sendmail_pidfile}`
else
echo "$0: stop-mta: ${sendmail_pidfile} not found"
fi
}
restart_mta()
{
if [ -r ${sendmail_pidfile} ]; then
echo -n ' sendmail'
kill -HUP `head -1 ${sendmail_pidfile}`
else
echo "$0: restart-mta: ${sendmail_pidfile} not found"
fi
}
start_mspq()
{
case ${sendmail_enable} in
[Nn][Oo][Nn][Ee])
;;
*)
if [ -r /etc/mail/submit.cf ]; then
case ${sendmail_msp_queue_enable} in
[Yy][Ee][Ss])
echo -n ' sendmail-clientmqueue'
${sendmail_program} ${sendmail_msp_queue_flags}
;;
esac
fi
;;
esac
}
stop_mspq()
{
if [ -r ${sendmail_mspq_pidfile} ]; then
echo -n ' sendmail-clientmqueue'
kill -TERM `head -1 ${sendmail_mspq_pidfile}`
else
echo "$0: stop-mspq: ${sendmail_mspq_pidfile} not found"
fi
}
restart_mspq()
{
if [ -r ${sendmail_mspq_pidfile} ]; then
echo -n ' sendmail-clientmqueue'
kill -HUP `head -1 ${sendmail_mspq_pidfile}`
else
echo "$0: restart-mspq: ${sendmail_mspq_pidfile} not found"
fi
}
# If no argument is given, assume we are being called at boot time.
_action=${1:-start}
case ${_action} in
start)
start_mta
start_mspq
;;
stop)
stop_mta
stop_mspq
;;
restart)
restart_mta
restart_mspq
;;
start-mta)
start_mta
;;
stop-mta)
stop_mta
;;
restart-mta)
restart_mta
;;
start-mspq)
start_mspq
;;
stop-mspq)
stop_mspq
;;
restart-mspq)
restart_mspq
;;
*)
echo "Usage: `basename $0` {start|stop|restart}" >&2
echo " `basename $0` {start-mta|stop-mta|restart-mta}" >&2
echo " `basename $0` {start-mspq|stop-mspq|restart-mspq}" >&2
exit 64
;;
esac
exit 0

View File

@ -82,6 +82,8 @@ distribution: freebsd.cf freebsd.mc ${INSTALL_CF}
@echo ">>> ERROR: Both SENDMAIL_CF and SENDMAIL_MC can not be set"
@false
.endif
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 644 ${.CURDIR}/rc.sendmail \
${DESTDIR}/etc
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 644 ${.CURDIR}/freebsd.mc \
${DESTDIR}/etc/mail/freebsd.mc
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 644 freebsd.cf \

193
etc/sendmail/rc.sendmail Normal file
View File

@ -0,0 +1,193 @@
#!/bin/sh
#
# Copyright (c) 2000, 2002 The FreeBSD Project
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD$
#
# This script is used by /etc/rc at boot time to start sendmail. It
# is meant to be sendmail specific and not a generic script for all
# MTAs. It is only called by /etc/rc if the rc.conf mta_start_script is
# set to /etc/rc.sendmail. This provides the opportunity for other MTAs
# to provide their own startup script.
# The script is also used by /etc/mail/Makefile to enable the
# start/stop/restart targets.
# The source for the script can be found in src/etc/sendmail/rc.sendmail.
if [ -r /etc/defaults/rc.conf ]; then
. /etc/defaults/rc.conf
source_rc_confs
elif [ -r /etc/rc.conf ]; then
. /etc/rc.conf
fi
# The sendmail binary
sendmail_program=${sendmail_program:-/usr/sbin/sendmail}
# The pid is used to stop and restart the running daemon(s).
sendmail_pidfile=${sendmail_pidfile:-/var/run/sendmail.pid}
sendmail_mspq_pidfile=${sendmail_mspq_pidfile:-/var/spool/clientmqueue/sm-client.pid}
start_mta()
{
case ${sendmail_enable} in
[Nn][Oo][Nn][Ee])
;;
[Yy][Ee][Ss])
echo -n ' sendmail'
${sendmail_program} ${sendmail_flags}
;;
*)
case ${sendmail_submit_enable} in
[Yy][Ee][Ss])
echo -n ' sendmail-submit'
${sendmail_program} ${sendmail_submit_flags}
;;
*)
case ${sendmail_outbound_enable} in
[Yy][Ee][Ss])
echo -n ' sendmail-outbound'
${sendmail_program} ${sendmail_outbound_flags}
;;
esac
;;
esac
;;
esac
}
stop_mta()
{
if [ -r ${sendmail_pidfile} ]; then
echo -n ' sendmail'
kill -TERM `head -1 ${sendmail_pidfile}`
else
echo "$0: stop-mta: ${sendmail_pidfile} not found"
fi
}
restart_mta()
{
if [ -r ${sendmail_pidfile} ]; then
echo -n ' sendmail'
kill -HUP `head -1 ${sendmail_pidfile}`
else
echo "$0: restart-mta: ${sendmail_pidfile} not found"
fi
}
start_mspq()
{
case ${sendmail_enable} in
[Nn][Oo][Nn][Ee])
;;
*)
if [ -r /etc/mail/submit.cf ]; then
case ${sendmail_msp_queue_enable} in
[Yy][Ee][Ss])
echo -n ' sendmail-clientmqueue'
${sendmail_program} ${sendmail_msp_queue_flags}
;;
esac
fi
;;
esac
}
stop_mspq()
{
if [ -r ${sendmail_mspq_pidfile} ]; then
echo -n ' sendmail-clientmqueue'
kill -TERM `head -1 ${sendmail_mspq_pidfile}`
else
echo "$0: stop-mspq: ${sendmail_mspq_pidfile} not found"
fi
}
restart_mspq()
{
if [ -r ${sendmail_mspq_pidfile} ]; then
echo -n ' sendmail-clientmqueue'
kill -HUP `head -1 ${sendmail_mspq_pidfile}`
else
echo "$0: restart-mspq: ${sendmail_mspq_pidfile} not found"
fi
}
# If no argument is given, assume we are being called at boot time.
_action=${1:-start}
case ${_action} in
start)
start_mta
start_mspq
;;
stop)
stop_mta
stop_mspq
;;
restart)
restart_mta
restart_mspq
;;
start-mta)
start_mta
;;
stop-mta)
stop_mta
;;
restart-mta)
restart_mta
;;
start-mspq)
start_mspq
;;
stop-mspq)
stop_mspq
;;
restart-mspq)
restart_mspq
;;
*)
echo "Usage: `basename $0` {start|stop|restart}" >&2
echo " `basename $0` {start-mta|stop-mta|restart-mta}" >&2
echo " `basename $0` {start-mspq|stop-mspq|restart-mspq}" >&2
exit 64
;;
esac
exit 0

View File

@ -1716,111 +1716,19 @@ is set to
these are the flags to pass to the
.Xr lpd 8
daemon.
.It Va sendmail_enable
.It Va mta_start_script
.Pq Vt str
If set to
.Dq Li YES ,
run the
.Xr sendmail 8
daemon at system boot time.
If set to
.Dq Li NONE ,
do not run any
.Xr sendmail 8
daemons at system boot time.
.It Va sendmail_flags
.Pq Vt str
If
.Va sendmail_enable
is set to
.Dq Li YES ,
these are the flags to pass to the
.Xr sendmail 8
daemon.
.It Va sendmail_submit_enable
.Pq Vt bool
If set to
.Dq Li YES
and
.Va sendmail_enable
is set to
.Dq Li NO ,
run
.Xr sendmail 8
using
.Va sendmail_submit_flags
instead of
.Va sendmail_flags .
This is intended to allow local mail submission via
a localhost-only listening SMTP service required for running
.Xr sendmail 8
as a non-set-user-ID binary.
.It Va sendmail_submit_flags
.Pq Vt str
If
.Va sendmail_enable
is set to
.Dq Li NO
and
.Va sendmail_submit_enable
is set to
.Dq Li YES ,
these are the flags to pass to the
.Xr sendmail 8
daemon.
.It Va sendmail_outbound_enable
.Pq Vt bool
If set to
.Dq Li YES
and both
.Va sendmail_enable
and
.Va sendmail_submit_enable
are set to
.Dq Li NO ,
run
.Xr sendmail 8
using
.Va sendmail_outbound_flags
instead of
.Va sendmail_flags .
This is intended to allow local mail queue management
for systems that do not offer a listening SMTP service.
.It Va sendmail_outbound_flags
.Pq Vt str
If both
.Va sendmail_enable
and
.Va sendmail_submit_enable
are set to
.Dq Li NO
and
.Va sendmail_outbound_enable
is set to
.Dq Li YES ,
these are the flags to pass to the
.Xr sendmail 8
daemon.
.It Va sendmail_msp_queue_enable
.Pq Vt bool
If set to
.Dq Li YES ,
start a client (MSP) queue runner
.Xr sendmail 8
daemon at system boot time.
As of sendmail 8.12, a separate queue is used for command line
submissions.
The client queue runner assures that nothing is
left behind in the submission queue.
.It Va sendmail_msp_queue_flags
.Pq Vt str
If
.Va sendmail_msp_queue_enable
is set to
.Dq Li YES ,
these are the flags to pass to the
.Xr sendmail 8
daemon.
This variable specifies the full path to the script to run to start
a mail transfer agent.
The default is
.Pa /etc/rc.sendmail .
The
.Va sendmail_*
variables which
.Pa /etc/rc.sendmail
uses are documented in the
.Xr rc.sendmail 8
man page.
.It Va dumpdev
.Pq Vt str
Indicates the device (usually a swap partition) to which a crash dump
@ -2091,6 +1999,7 @@ Flags for
.Xr quotacheck 8 ,
.Xr quotaon 8 ,
.Xr rc 8 ,
.Xr rc.sendmail 8 ,
.Xr route 8 ,
.Xr routed 8 ,
.Xr rpc.lockd 8 ,
@ -2098,7 +2007,6 @@ Flags for
.Xr rpcbind 8 ,
.Xr rwhod 8 ,
.Xr savecore 8 ,
.Xr sendmail 8 ,
.Xr sshd 8 ,
.Xr swapon 8 ,
.Xr sysctl 8 ,

View File

@ -10,6 +10,10 @@ MAN= adding_user.8 \
sticky.8 \
yp.8
.if !defined(NO_SENDMAIL)
MAN+= rc.sendmail.8
.endif
MLINKS= rc.8 rc.early.8 rc.8 rc.serial.8 rc.8 rc.pccard.8 rc.8 rc.network.8
MLINKS+=rc.8 rc.firewall.8 rc.8 rc.atm.8 rc.8 rc.local.8 rc.8 rc.shutdown.8
MLINKS+=yp.8 YP.8 yp.8 NIS.8 yp.8 nis.8

View File

@ -0,0 +1,241 @@
.\" Copyright (c) 1995
.\" Jordan K. Hubbard
.\" Copyright (c) 2002 The FreeBSD Project
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.\"
.Dd March 30, 2002
.Dt RC.SENDMAIL 8
.Os
.Sh NAME
.Nm rc.sendmail
.Nd
.Xr sendmail 8
startup script
.Sh DESCRIPTION
The
.Nm
script is used by
.Pa /etc/rc
at boot time to start
.Xr sendmail 8 .
It is meant to be
.Xr sendmail 8
specific and not a generic script for all MTAs.
It is only called by
.Pa /etc/rc
if the
.Xr rc.conf 5
.Va mta_start_script
variable is set to
.Pa /etc/rc.sendmail .
.Pp
The
.Nm
script can take an optional argument specifying the action to
perform.
The available actions are:
.Bl -tag -width ".Cm restart-mspq"
.It Cm start
Starts both the MTA and the MSP queue runner.
.It Cm stop
Stops both the MTA and the MSP queue runner.
.It Cm restart
Restarts both the MTA and the MSP queue runner.
.It Cm start-mta
Starts just the MTA.
.It Cm stop-mta
Stops just the MTA.
.It Cm restart-mta
Restarts just the MTA.
.It Cm start-mspq
Starts just the MSP queue runner.
.It Cm stop-mspq
Stops just the MSP queue runner.
.It Cm restart-mspq
Restarts just the MSP queue runner.
.El
.Pp
If no action is specified,
.Cm start
is assumed.
.Pp
The
.Nm
script is also used by
.Pa /etc/mail/Makefile
to enable the
.Pa Makefile Ns 's
.Cm start , stop ,
and
.Cm restart
targets.
.Sh RC.CONF VARIABLES
The following variables effect the behavior of
.Nm .
They are defined in
.Pa /etc/defaults/rc.conf
and can be changed in
.Pa /etc/rc.conf .
.Bl -tag -width indent
.It Va sendmail_enable
.Pq Vt str
If set to
.Dq Li YES ,
run the
.Xr sendmail 8
daemon at system boot time.
If set to
.Dq Li NONE ,
do not run any
.Xr sendmail 8
daemons at system boot time.
.It Va sendmail_flags
.Pq Vt str
If
.Va sendmail_enable
is set to
.Dq Li YES ,
these are the flags to pass to the
.Xr sendmail 8
daemon.
.It Va sendmail_submit_enable
.Pq Vt bool
If set to
.Dq Li YES
and
.Va sendmail_enable
is set to
.Dq Li NO ,
run
.Xr sendmail 8
using
.Va sendmail_submit_flags
instead of
.Va sendmail_flags .
This is intended to allow local mail submission via
a localhost-only listening SMTP service required for running
.Xr sendmail 8
as a non-set-user-ID binary.
.It Va sendmail_submit_flags
.Pq Vt str
If
.Va sendmail_enable
is set to
.Dq Li NO
and
.Va sendmail_submit_enable
is set to
.Dq Li YES ,
these are the flags to pass to the
.Xr sendmail 8
daemon.
.It Va sendmail_outbound_enable
.Pq Vt bool
If set to
.Dq Li YES
and both
.Va sendmail_enable
and
.Va sendmail_submit_enable
are set to
.Dq Li NO ,
run
.Xr sendmail 8
using
.Va sendmail_outbound_flags
instead of
.Va sendmail_flags .
This is intended to allow local mail queue management
for systems that do not offer a listening SMTP service.
.It Va sendmail_outbound_flags
.Pq Vt str
If both
.Va sendmail_enable
and
.Va sendmail_submit_enable
are set to
.Dq Li NO
and
.Va sendmail_outbound_enable
is set to
.Dq Li YES ,
these are the flags to pass to the
.Xr sendmail 8
daemon.
.It Va sendmail_msp_queue_enable
.Pq Vt bool
If set to
.Dq Li YES ,
start a client (MSP) queue runner
.Xr sendmail 8
daemon at system boot time.
As of sendmail 8.12, a separate queue is used for command line
submissions.
The client queue runner assures that nothing is
left behind in the submission queue.
.It Va sendmail_msp_queue_flags
.Pq Vt str
If
.Va sendmail_msp_queue_enable
is set to
.Dq Li YES ,
these are the flags to pass to the
.Xr sendmail 8
daemon.
.El
.Pp
These variables are used to determine how the
.Xr sendmail 8
daemons are started:
.Pp
.Bd -literal -offset indent
# MTA
if (${sendmail_enable} == NONE)
# Do nothing
else if (${sendmail_enable} == YES)
start sendmail with ${sendmail_flags}
else if (${sendmail_submit_enable} == YES)
start sendmail with ${sendmail_submit_flags}
else if (${sendmail_outbound_enable} == YES)
start sendmail with ${sendmail_outbound_flags}
endif
# MSP Queue Runner
if (${sendmail_enable} != NONE &&
[ -r /etc/mail/submit.cf] &&
${sendmail_msp_queue_enable} == YES)
start sendmail with ${sendmail_msp_queue_flags}
endif
.Ed
.Sh SEE ALSO
.Xr rc.conf 5 ,
.Xr rc 8 ,
.Xr sendmail 8
.Sh HISTORY
The
.Nm
file appeared in
.Fx 4.6 .