1#!/bin/sh
2
3#
4# Copyright (c) 2002  Gregory Neil Shapiro.  All Rights Reserved.
5# Copyright (c) 2000, 2002  The FreeBSD Project
6# All rights reserved.
7#
8# Redistribution and use in source and binary forms, with or without
9# modification, are permitted provided that the following conditions
10# are met:
11# 1. Redistributions of source code must retain the above copyright
12#    notice, this list of conditions and the following disclaimer.
13# 2. Redistributions in binary form must reproduce the above copyright
14#    notice, this list of conditions and the following disclaimer in the
15#    documentation and/or other materials provided with the distribution.
16#
17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27# SUCH DAMAGE.
28#
29# $FreeBSD$
30#
31
32# This script is used by /etc/rc at boot time to start sendmail.  It
33# is meant to be sendmail specific and not a generic script for all
34# MTAs.  It is only called by /etc/rc if the rc.conf mta_start_script is
35# set to /etc/rc.sendmail.  This provides the opportunity for other MTAs
36# to provide their own startup script.
37
38# The script is also used by /etc/mail/Makefile to enable the
39# start/stop/restart targets.
40
41# The source for the script can be found in src/etc/sendmail/rc.sendmail.
42
43if [ -r /etc/defaults/rc.conf ]; then
44	. /etc/defaults/rc.conf
45	source_rc_confs
46elif [ -r /etc/rc.conf ]; then
47	. /etc/rc.conf
48fi
49
50# The sendmail binary
51sendmail_program=${sendmail_program:-/usr/sbin/sendmail}
52
53# The pid is used to stop and restart the running daemon(s).
54sendmail_pidfile=${sendmail_pidfile:-/var/run/sendmail.pid}
55sendmail_mspq_pidfile=${sendmail_mspq_pidfile:-/var/spool/clientmqueue/sm-client.pid}
56
57start_mta()
58{
59	case ${sendmail_enable} in
60	[Nn][Oo][Nn][Ee])
61		;;
62	[Yy][Ee][Ss])
63		echo -n ' sendmail'
64		${sendmail_program} ${sendmail_flags}
65		;;
66	*)
67		case ${sendmail_submit_enable} in
68		[Yy][Ee][Ss])
69			echo -n ' sendmail-submit'
70			${sendmail_program} ${sendmail_submit_flags}
71			;;
72		*)
73			case ${sendmail_outbound_enable} in
74			[Yy][Ee][Ss])
75				echo -n ' sendmail-outbound'
76				${sendmail_program} ${sendmail_outbound_flags}
77				;;
78			esac
79			;;
80		esac
81		;;
82	esac
83}
84
85stop_mta()
86{
87	# Check to make sure we are configured to start an MTA
88	case ${sendmail_enable} in
89	[Nn][Oo][Nn][Ee])
90		return
91		;;
92	[Yy][Ee][Ss])
93		;;
94	*)
95		case ${sendmail_submit_enable} in
96		[Yy][Ee][Ss])
97			;;
98		*)
99			case ${sendmail_outbound_enable} in
100			[Yy][Ee][Ss])
101				;;
102			*)
103				return
104				;;
105			esac
106			;;
107		esac
108		;;
109	esac
110
111	if [ -r ${sendmail_pidfile} ]; then
112		echo -n ' sendmail'
113		kill -TERM `head -1 ${sendmail_pidfile}`
114	else
115		echo "$0: stop-mta: ${sendmail_pidfile} not found"
116	fi
117}
118
119restart_mta()
120{
121	# Check to make sure we are configured to start an MTA
122	case ${sendmail_enable} in
123	[Nn][Oo][Nn][Ee])
124		return
125		;;
126	[Yy][Ee][Ss])
127		;;
128	*)
129		case ${sendmail_submit_enable} in
130		[Yy][Ee][Ss])
131			;;
132		*)
133			case ${sendmail_outbound_enable} in
134			[Yy][Ee][Ss])
135				;;
136			*)
137				return
138				;;
139			esac
140			;;
141		esac
142		;;
143	esac
144	if [ -r ${sendmail_pidfile} ]; then
145		echo -n ' sendmail'
146		kill -HUP `head -1 ${sendmail_pidfile}`
147	else
148		echo "$0: restart-mta: ${sendmail_pidfile} not found"
149	fi
150}
151
152start_mspq()
153{
154	case ${sendmail_enable} in
155	[Nn][Oo][Nn][Ee])
156		;;
157	*)
158		if [ -r /etc/mail/submit.cf ]; then
159			case ${sendmail_msp_queue_enable} in
160			[Yy][Ee][Ss])
161				echo -n ' sendmail-clientmqueue'
162				${sendmail_program} ${sendmail_msp_queue_flags}
163				;;
164			esac
165		fi
166		;;
167	esac
168}
169
170stop_mspq()
171{
172	# Check to make sure we are configured to start an MSP queue runner
173	case ${sendmail_enable} in
174	[Nn][Oo][Nn][Ee])
175		return
176		;;
177	*)
178		if [ -r /etc/mail/submit.cf ]; then
179			case ${sendmail_msp_queue_enable} in
180			[Yy][Ee][Ss])
181				;;
182			*)
183				return
184				;;
185			esac
186		fi
187		;;
188	esac
189
190	if [ -r ${sendmail_mspq_pidfile} ]; then
191		echo -n ' sendmail-clientmqueue'
192		kill -TERM `head -1 ${sendmail_mspq_pidfile}`
193	else
194		echo "$0: stop-mspq: ${sendmail_mspq_pidfile} not found"
195	fi
196}
197
198restart_mspq()
199{
200	# Check to make sure we are configured to start an MSP queue runner
201	case ${sendmail_enable} in
202	[Nn][Oo][Nn][Ee])
203		return
204		;;
205	*)
206		if [ -r /etc/mail/submit.cf ]; then
207			case ${sendmail_msp_queue_enable} in
208			[Yy][Ee][Ss])
209				;;
210			*)
211				return
212				;;
213			esac
214		fi
215		;;
216	esac
217
218	if [ -r ${sendmail_mspq_pidfile} ]; then
219		echo -n ' sendmail-clientmqueue'
220		kill -HUP `head -1 ${sendmail_mspq_pidfile}`
221	else
222		echo "$0: restart-mspq: ${sendmail_mspq_pidfile} not found"
223	fi
224}
225
226# If no argument is given, assume we are being called at boot time.
227_action=${1:-start}
228
229case ${_action} in
230start)
231	start_mta
232	start_mspq
233	;;
234
235stop)
236	stop_mta
237	stop_mspq
238	;;
239
240restart)
241	restart_mta
242	restart_mspq
243	;;
244
245start-mta)
246	start_mta
247	;;
248
249stop-mta)
250	stop_mta
251	;;
252
253restart-mta)
254	restart_mta
255	;;
256
257start-mspq)
258	start_mspq
259	;;
260
261stop-mspq)
262	stop_mspq
263	;;
264
265restart-mspq)
266	restart_mspq
267	;;
268
269*)
270	echo "usage: `basename $0` {start|stop|restart}" >&2
271	echo "       `basename $0` {start-mta|stop-mta|restart-mta}" >&2
272	echo "       `basename $0` {start-mspq|stop-mspq|restart-mspq}" >&2
273	exit 64
274	;;
275
276esac
277exit 0
278