xref: /dflybsd-src/etc/rc.sendmail (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
186d7f5d3SJohn Marino#!/bin/sh
286d7f5d3SJohn Marino
386d7f5d3SJohn Marino#
486d7f5d3SJohn Marino# Copyright (c) 2002  Gregory Neil Shapiro.  All Rights Reserved.
586d7f5d3SJohn Marino# Copyright (c) 2000, 2002  The FreeBSD Project
686d7f5d3SJohn Marino# All rights reserved.
786d7f5d3SJohn Marino#
886d7f5d3SJohn Marino# Redistribution and use in source and binary forms, with or without
986d7f5d3SJohn Marino# modification, are permitted provided that the following conditions
1086d7f5d3SJohn Marino# are met:
1186d7f5d3SJohn Marino# 1. Redistributions of source code must retain the above copyright
1286d7f5d3SJohn Marino#    notice, this list of conditions and the following disclaimer.
1386d7f5d3SJohn Marino# 2. Redistributions in binary form must reproduce the above copyright
1486d7f5d3SJohn Marino#    notice, this list of conditions and the following disclaimer in the
1586d7f5d3SJohn Marino#    documentation and/or other materials provided with the distribution.
1686d7f5d3SJohn Marino#
1786d7f5d3SJohn Marino# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1886d7f5d3SJohn Marino# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1986d7f5d3SJohn Marino# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2086d7f5d3SJohn Marino# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2186d7f5d3SJohn Marino# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2286d7f5d3SJohn Marino# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2386d7f5d3SJohn Marino# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2486d7f5d3SJohn Marino# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2586d7f5d3SJohn Marino# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2686d7f5d3SJohn Marino# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2786d7f5d3SJohn Marino# SUCH DAMAGE.
2886d7f5d3SJohn Marino#
2986d7f5d3SJohn Marino# $FreeBSD: src/etc/rc.sendmail,v 1.3.2.1 2002/04/24 17:28:08 gshapiro Exp $
3086d7f5d3SJohn Marino# $DragonFly: src/etc/rc.sendmail,v 1.3 2005/07/25 00:24:31 gshapiro Exp $
3186d7f5d3SJohn Marino#
3286d7f5d3SJohn Marino
3386d7f5d3SJohn Marino# This script is used by /etc/rc at boot time to start sendmail.  It
3486d7f5d3SJohn Marino# is meant to be sendmail specific and not a generic script for all
3586d7f5d3SJohn Marino# MTAs.  It is only called by /etc/rc if the rc.conf mta_start_script is
3686d7f5d3SJohn Marino# set to /etc/rc.sendmail.  This provides the opportunity for other MTAs
3786d7f5d3SJohn Marino# to provide their own startup script.
3886d7f5d3SJohn Marino
3986d7f5d3SJohn Marino# The script is also used by /etc/mail/Makefile to enable the
4086d7f5d3SJohn Marino# start/stop/restart targets.
4186d7f5d3SJohn Marino
4286d7f5d3SJohn Marino# The source for the script can be found in src/etc/sendmail/rc.sendmail.
4386d7f5d3SJohn Marino
4486d7f5d3SJohn Marinoif [ -r /etc/defaults/rc.conf ]; then
4586d7f5d3SJohn Marino	. /etc/defaults/rc.conf
4686d7f5d3SJohn Marino	source_rc_confs
4786d7f5d3SJohn Marinoelif [ -r /etc/rc.conf ]; then
4886d7f5d3SJohn Marino	. /etc/rc.conf
4986d7f5d3SJohn Marinofi
5086d7f5d3SJohn Marino
5186d7f5d3SJohn Marino# The sendmail binary
5286d7f5d3SJohn Marinosendmail_program=${sendmail_program:-/usr/sbin/sendmail}
5386d7f5d3SJohn Marino
5486d7f5d3SJohn Marino# The pid is used to stop and restart the running daemon(s).
5586d7f5d3SJohn Marinosendmail_pidfile=${sendmail_pidfile:-/var/run/sendmail.pid}
5686d7f5d3SJohn Marinosendmail_mspq_pidfile=${sendmail_mspq_pidfile:-/var/spool/clientmqueue/sm-client.pid}
5786d7f5d3SJohn Marino
5886d7f5d3SJohn Marinostart_mta()
5986d7f5d3SJohn Marino{
6086d7f5d3SJohn Marino	case ${sendmail_enable} in
6186d7f5d3SJohn Marino	[Nn][Oo][Nn][Ee])
6286d7f5d3SJohn Marino		;;
6386d7f5d3SJohn Marino	[Yy][Ee][Ss])
6486d7f5d3SJohn Marino		echo -n ' sendmail'
6586d7f5d3SJohn Marino		${sendmail_program} ${sendmail_flags}
6686d7f5d3SJohn Marino		;;
6786d7f5d3SJohn Marino	*)
6886d7f5d3SJohn Marino		case ${sendmail_submit_enable} in
6986d7f5d3SJohn Marino		[Yy][Ee][Ss])
7086d7f5d3SJohn Marino			echo -n ' sendmail-submit'
7186d7f5d3SJohn Marino			${sendmail_program} ${sendmail_submit_flags}
7286d7f5d3SJohn Marino			;;
7386d7f5d3SJohn Marino		*)
7486d7f5d3SJohn Marino			case ${sendmail_outbound_enable} in
7586d7f5d3SJohn Marino			[Yy][Ee][Ss])
7686d7f5d3SJohn Marino				echo -n ' sendmail-outbound'
7786d7f5d3SJohn Marino				${sendmail_program} ${sendmail_outbound_flags}
7886d7f5d3SJohn Marino				;;
7986d7f5d3SJohn Marino			esac
8086d7f5d3SJohn Marino			;;
8186d7f5d3SJohn Marino		esac
8286d7f5d3SJohn Marino		;;
8386d7f5d3SJohn Marino	esac
8486d7f5d3SJohn Marino}
8586d7f5d3SJohn Marino
8686d7f5d3SJohn Marinostop_mta()
8786d7f5d3SJohn Marino{
8886d7f5d3SJohn Marino	# Check to make sure we are configured to start an MTA
8986d7f5d3SJohn Marino	case ${sendmail_enable} in
9086d7f5d3SJohn Marino	[Nn][Oo][Nn][Ee])
9186d7f5d3SJohn Marino		return
9286d7f5d3SJohn Marino		;;
9386d7f5d3SJohn Marino	[Yy][Ee][Ss])
9486d7f5d3SJohn Marino		;;
9586d7f5d3SJohn Marino	*)
9686d7f5d3SJohn Marino		case ${sendmail_submit_enable} in
9786d7f5d3SJohn Marino		[Yy][Ee][Ss])
9886d7f5d3SJohn Marino			;;
9986d7f5d3SJohn Marino		*)
10086d7f5d3SJohn Marino			case ${sendmail_outbound_enable} in
10186d7f5d3SJohn Marino			[Yy][Ee][Ss])
10286d7f5d3SJohn Marino				;;
10386d7f5d3SJohn Marino			*)
10486d7f5d3SJohn Marino				return
10586d7f5d3SJohn Marino				;;
10686d7f5d3SJohn Marino			esac
10786d7f5d3SJohn Marino			;;
10886d7f5d3SJohn Marino		esac
10986d7f5d3SJohn Marino		;;
11086d7f5d3SJohn Marino	esac
11186d7f5d3SJohn Marino
11286d7f5d3SJohn Marino	if [ -r ${sendmail_pidfile} ]; then
11386d7f5d3SJohn Marino		echo -n ' sendmail'
11486d7f5d3SJohn Marino		kill -TERM `head -1 ${sendmail_pidfile}`
11586d7f5d3SJohn Marino	else
11686d7f5d3SJohn Marino		echo "$0: stop-mta: ${sendmail_pidfile} not found"
11786d7f5d3SJohn Marino	fi
11886d7f5d3SJohn Marino}
11986d7f5d3SJohn Marino
12086d7f5d3SJohn Marinorestart_mta()
12186d7f5d3SJohn Marino{
12286d7f5d3SJohn Marino	# Check to make sure we are configured to start an MTA
12386d7f5d3SJohn Marino	case ${sendmail_enable} in
12486d7f5d3SJohn Marino	[Nn][Oo][Nn][Ee])
12586d7f5d3SJohn Marino		return
12686d7f5d3SJohn Marino		;;
12786d7f5d3SJohn Marino	[Yy][Ee][Ss])
12886d7f5d3SJohn Marino		;;
12986d7f5d3SJohn Marino	*)
13086d7f5d3SJohn Marino		case ${sendmail_submit_enable} in
13186d7f5d3SJohn Marino		[Yy][Ee][Ss])
13286d7f5d3SJohn Marino			;;
13386d7f5d3SJohn Marino		*)
13486d7f5d3SJohn Marino			case ${sendmail_outbound_enable} in
13586d7f5d3SJohn Marino			[Yy][Ee][Ss])
13686d7f5d3SJohn Marino				;;
13786d7f5d3SJohn Marino			*)
13886d7f5d3SJohn Marino				return
13986d7f5d3SJohn Marino				;;
14086d7f5d3SJohn Marino			esac
14186d7f5d3SJohn Marino			;;
14286d7f5d3SJohn Marino		esac
14386d7f5d3SJohn Marino		;;
14486d7f5d3SJohn Marino	esac
14586d7f5d3SJohn Marino
14686d7f5d3SJohn Marino	if [ -r ${sendmail_pidfile} ]; then
14786d7f5d3SJohn Marino		echo -n ' sendmail'
14886d7f5d3SJohn Marino		kill -HUP `head -1 ${sendmail_pidfile}`
14986d7f5d3SJohn Marino	else
15086d7f5d3SJohn Marino		echo "$0: restart-mta: ${sendmail_pidfile} not found"
15186d7f5d3SJohn Marino	fi
15286d7f5d3SJohn Marino}
15386d7f5d3SJohn Marino
15486d7f5d3SJohn Marinostart_mspq()
15586d7f5d3SJohn Marino{
15686d7f5d3SJohn Marino	case ${sendmail_enable} in
15786d7f5d3SJohn Marino	[Nn][Oo][Nn][Ee])
15886d7f5d3SJohn Marino		;;
15986d7f5d3SJohn Marino	*)
16086d7f5d3SJohn Marino		if [ -r /etc/mail/submit.cf ]; then
16186d7f5d3SJohn Marino			case ${sendmail_msp_queue_enable} in
16286d7f5d3SJohn Marino			[Yy][Ee][Ss])
16386d7f5d3SJohn Marino				echo -n ' sendmail-clientmqueue'
16486d7f5d3SJohn Marino				${sendmail_program} ${sendmail_msp_queue_flags}
16586d7f5d3SJohn Marino				;;
16686d7f5d3SJohn Marino			esac
16786d7f5d3SJohn Marino		fi
16886d7f5d3SJohn Marino		;;
16986d7f5d3SJohn Marino	esac
17086d7f5d3SJohn Marino}
17186d7f5d3SJohn Marino
17286d7f5d3SJohn Marinostop_mspq()
17386d7f5d3SJohn Marino{
17486d7f5d3SJohn Marino	# Check to make sure we are configured to start an MSP queue runner
17586d7f5d3SJohn Marino	case ${sendmail_enable} in
17686d7f5d3SJohn Marino	[Nn][Oo][Nn][Ee])
17786d7f5d3SJohn Marino		return
17886d7f5d3SJohn Marino		;;
17986d7f5d3SJohn Marino	*)
18086d7f5d3SJohn Marino		if [ -r /etc/mail/submit.cf ]; then
18186d7f5d3SJohn Marino			case ${sendmail_msp_queue_enable} in
18286d7f5d3SJohn Marino			[Yy][Ee][Ss])
18386d7f5d3SJohn Marino				;;
18486d7f5d3SJohn Marino			*)
18586d7f5d3SJohn Marino				return
18686d7f5d3SJohn Marino				;;
18786d7f5d3SJohn Marino			esac
18886d7f5d3SJohn Marino		fi
18986d7f5d3SJohn Marino		;;
19086d7f5d3SJohn Marino	esac
19186d7f5d3SJohn Marino
19286d7f5d3SJohn Marino	if [ -r ${sendmail_mspq_pidfile} ]; then
19386d7f5d3SJohn Marino		echo -n ' sendmail-clientmqueue'
19486d7f5d3SJohn Marino		kill -TERM `head -1 ${sendmail_mspq_pidfile}`
19586d7f5d3SJohn Marino	else
19686d7f5d3SJohn Marino		echo "$0: stop-mspq: ${sendmail_mspq_pidfile} not found"
19786d7f5d3SJohn Marino	fi
19886d7f5d3SJohn Marino}
19986d7f5d3SJohn Marino
20086d7f5d3SJohn Marinorestart_mspq()
20186d7f5d3SJohn Marino{
20286d7f5d3SJohn Marino	# Check to make sure we are configured to start an MSP queue runner
20386d7f5d3SJohn Marino	case ${sendmail_enable} in
20486d7f5d3SJohn Marino	[Nn][Oo][Nn][Ee])
20586d7f5d3SJohn Marino		return
20686d7f5d3SJohn Marino		;;
20786d7f5d3SJohn Marino	*)
20886d7f5d3SJohn Marino		if [ -r /etc/mail/submit.cf ]; then
20986d7f5d3SJohn Marino			case ${sendmail_msp_queue_enable} in
21086d7f5d3SJohn Marino			[Yy][Ee][Ss])
21186d7f5d3SJohn Marino				;;
21286d7f5d3SJohn Marino			*)
21386d7f5d3SJohn Marino				return
21486d7f5d3SJohn Marino				;;
21586d7f5d3SJohn Marino			esac
21686d7f5d3SJohn Marino		fi
21786d7f5d3SJohn Marino		;;
21886d7f5d3SJohn Marino	esac
21986d7f5d3SJohn Marino
22086d7f5d3SJohn Marino	if [ -r ${sendmail_mspq_pidfile} ]; then
22186d7f5d3SJohn Marino		echo -n ' sendmail-clientmqueue'
22286d7f5d3SJohn Marino		kill -HUP `head -1 ${sendmail_mspq_pidfile}`
22386d7f5d3SJohn Marino	else
22486d7f5d3SJohn Marino		echo "$0: restart-mspq: ${sendmail_mspq_pidfile} not found"
22586d7f5d3SJohn Marino	fi
22686d7f5d3SJohn Marino}
22786d7f5d3SJohn Marino
22886d7f5d3SJohn Marino# If no argument is given, assume we are being called at boot time.
22986d7f5d3SJohn Marino_action=${1:-start}
23086d7f5d3SJohn Marino
23186d7f5d3SJohn Marinocase ${_action} in
23286d7f5d3SJohn Marinostart)
23386d7f5d3SJohn Marino	start_mta
23486d7f5d3SJohn Marino	start_mspq
23586d7f5d3SJohn Marino	;;
23686d7f5d3SJohn Marino
23786d7f5d3SJohn Marinostop)
23886d7f5d3SJohn Marino	stop_mta
23986d7f5d3SJohn Marino	stop_mspq
24086d7f5d3SJohn Marino	;;
24186d7f5d3SJohn Marino
24286d7f5d3SJohn Marinorestart)
24386d7f5d3SJohn Marino	restart_mta
24486d7f5d3SJohn Marino	restart_mspq
24586d7f5d3SJohn Marino	;;
24686d7f5d3SJohn Marino
24786d7f5d3SJohn Marinostart-mta)
24886d7f5d3SJohn Marino	start_mta
24986d7f5d3SJohn Marino	;;
25086d7f5d3SJohn Marino
25186d7f5d3SJohn Marinostop-mta)
25286d7f5d3SJohn Marino	stop_mta
25386d7f5d3SJohn Marino	;;
25486d7f5d3SJohn Marino
25586d7f5d3SJohn Marinorestart-mta)
25686d7f5d3SJohn Marino	restart_mta
25786d7f5d3SJohn Marino	;;
25886d7f5d3SJohn Marino
25986d7f5d3SJohn Marinostart-mspq)
26086d7f5d3SJohn Marino	start_mspq
26186d7f5d3SJohn Marino	;;
26286d7f5d3SJohn Marino
26386d7f5d3SJohn Marinostop-mspq)
26486d7f5d3SJohn Marino	stop_mspq
26586d7f5d3SJohn Marino	;;
26686d7f5d3SJohn Marino
26786d7f5d3SJohn Marinorestart-mspq)
26886d7f5d3SJohn Marino	restart_mspq
26986d7f5d3SJohn Marino	;;
27086d7f5d3SJohn Marino
27186d7f5d3SJohn Marino*)
27286d7f5d3SJohn Marino	echo "Usage: `basename $0` {start|stop|restart}" >&2
27386d7f5d3SJohn Marino	echo "       `basename $0` {start-mta|stop-mta|restart-mta}" >&2
27486d7f5d3SJohn Marino	echo "       `basename $0` {start-mspq|stop-mspq|restart-mspq}" >&2
27586d7f5d3SJohn Marino	exit 64
27686d7f5d3SJohn Marino	;;
27786d7f5d3SJohn Marino
27886d7f5d3SJohn Marinoesac
27986d7f5d3SJohn Marinoexit 0
280