1114522Sdougb#!/bin/sh
2114522Sdougb
3114522Sdougb#
4114522Sdougb# Copyright (c) 2002  Gregory Neil Shapiro.  All Rights Reserved.
5114522Sdougb# Copyright (c) 2000, 2002  The FreeBSD Project
6114522Sdougb# All rights reserved.
7114522Sdougb#
8114522Sdougb# Redistribution and use in source and binary forms, with or without
9114522Sdougb# modification, are permitted provided that the following conditions
10114522Sdougb# are met:
11114522Sdougb# 1. Redistributions of source code must retain the above copyright
12114522Sdougb#    notice, this list of conditions and the following disclaimer.
13114522Sdougb# 2. Redistributions in binary form must reproduce the above copyright
14114522Sdougb#    notice, this list of conditions and the following disclaimer in the
15114522Sdougb#    documentation and/or other materials provided with the distribution.
16114522Sdougb#
17114522Sdougb# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18114522Sdougb# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19114522Sdougb# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20114522Sdougb# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21114522Sdougb# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22114522Sdougb# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23114522Sdougb# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24114522Sdougb# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25114522Sdougb# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26114522Sdougb# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27114522Sdougb# SUCH DAMAGE.
28114522Sdougb#
29114522Sdougb# $FreeBSD$
30114522Sdougb#
31114522Sdougb
32114522Sdougb# This script is used by /etc/rc at boot time to start sendmail.  It
33114522Sdougb# is meant to be sendmail specific and not a generic script for all
34114522Sdougb# MTAs.  It is only called by /etc/rc if the rc.conf mta_start_script is
35114522Sdougb# set to /etc/rc.sendmail.  This provides the opportunity for other MTAs
36114522Sdougb# to provide their own startup script.
37114522Sdougb
38114522Sdougb# The script is also used by /etc/mail/Makefile to enable the
39114522Sdougb# start/stop/restart targets.
40114522Sdougb
41114522Sdougb# The source for the script can be found in src/etc/sendmail/rc.sendmail.
42114522Sdougb
43114522Sdougbif [ -r /etc/defaults/rc.conf ]; then
44114522Sdougb	. /etc/defaults/rc.conf
45114522Sdougb	source_rc_confs
46114522Sdougbelif [ -r /etc/rc.conf ]; then
47114522Sdougb	. /etc/rc.conf
48114522Sdougbfi
49114522Sdougb
50114522Sdougb# The sendmail binary
51114522Sdougbsendmail_program=${sendmail_program:-/usr/sbin/sendmail}
52114522Sdougb
53114522Sdougb# The pid is used to stop and restart the running daemon(s).
54114522Sdougbsendmail_pidfile=${sendmail_pidfile:-/var/run/sendmail.pid}
55114522Sdougbsendmail_mspq_pidfile=${sendmail_mspq_pidfile:-/var/spool/clientmqueue/sm-client.pid}
56114522Sdougb
57114522Sdougbstart_mta()
58114522Sdougb{
59114522Sdougb	case ${sendmail_enable} in
60114522Sdougb	[Nn][Oo][Nn][Ee])
61114522Sdougb		;;
62114522Sdougb	[Yy][Ee][Ss])
63114522Sdougb		echo -n ' sendmail'
64114522Sdougb		${sendmail_program} ${sendmail_flags}
65114522Sdougb		;;
66114522Sdougb	*)
67114522Sdougb		case ${sendmail_submit_enable} in
68114522Sdougb		[Yy][Ee][Ss])
69114522Sdougb			echo -n ' sendmail-submit'
70114522Sdougb			${sendmail_program} ${sendmail_submit_flags}
71114522Sdougb			;;
72114522Sdougb		*)
73114522Sdougb			case ${sendmail_outbound_enable} in
74114522Sdougb			[Yy][Ee][Ss])
75114522Sdougb				echo -n ' sendmail-outbound'
76114522Sdougb				${sendmail_program} ${sendmail_outbound_flags}
77114522Sdougb				;;
78114522Sdougb			esac
79114522Sdougb			;;
80114522Sdougb		esac
81114522Sdougb		;;
82114522Sdougb	esac
83114522Sdougb}
84114522Sdougb
85114522Sdougbstop_mta()
86114522Sdougb{
87121234Sgshapiro	# Check to make sure we are configured to start an MTA
88121234Sgshapiro	case ${sendmail_enable} in
89121234Sgshapiro	[Nn][Oo][Nn][Ee])
90121234Sgshapiro		return
91121234Sgshapiro		;;
92121234Sgshapiro	[Yy][Ee][Ss])
93121234Sgshapiro		;;
94121234Sgshapiro	*)
95121234Sgshapiro		case ${sendmail_submit_enable} in
96121234Sgshapiro		[Yy][Ee][Ss])
97121234Sgshapiro			;;
98121234Sgshapiro		*)
99121234Sgshapiro			case ${sendmail_outbound_enable} in
100121234Sgshapiro			[Yy][Ee][Ss])
101121234Sgshapiro				;;
102121234Sgshapiro			*)
103121234Sgshapiro				return
104121234Sgshapiro				;;
105121234Sgshapiro			esac
106121234Sgshapiro			;;
107121234Sgshapiro		esac
108121234Sgshapiro		;;
109121234Sgshapiro	esac
110121234Sgshapiro
111114522Sdougb	if [ -r ${sendmail_pidfile} ]; then
112114522Sdougb		echo -n ' sendmail'
113114522Sdougb		kill -TERM `head -1 ${sendmail_pidfile}`
114114522Sdougb	else
115114522Sdougb		echo "$0: stop-mta: ${sendmail_pidfile} not found"
116114522Sdougb	fi
117114522Sdougb}
118114522Sdougb
119114522Sdougbrestart_mta()
120114522Sdougb{
121121234Sgshapiro	# Check to make sure we are configured to start an MTA
122121234Sgshapiro	case ${sendmail_enable} in
123121234Sgshapiro	[Nn][Oo][Nn][Ee])
124121234Sgshapiro		return
125121234Sgshapiro		;;
126121234Sgshapiro	[Yy][Ee][Ss])
127121234Sgshapiro		;;
128121234Sgshapiro	*)
129121234Sgshapiro		case ${sendmail_submit_enable} in
130121234Sgshapiro		[Yy][Ee][Ss])
131121234Sgshapiro			;;
132121234Sgshapiro		*)
133121234Sgshapiro			case ${sendmail_outbound_enable} in
134121234Sgshapiro			[Yy][Ee][Ss])
135121234Sgshapiro				;;
136121234Sgshapiro			*)
137121234Sgshapiro				return
138121234Sgshapiro				;;
139121234Sgshapiro			esac
140121234Sgshapiro			;;
141121234Sgshapiro		esac
142121234Sgshapiro		;;
143121234Sgshapiro	esac
144114522Sdougb	if [ -r ${sendmail_pidfile} ]; then
145114522Sdougb		echo -n ' sendmail'
146114522Sdougb		kill -HUP `head -1 ${sendmail_pidfile}`
147114522Sdougb	else
148114522Sdougb		echo "$0: restart-mta: ${sendmail_pidfile} not found"
149114522Sdougb	fi
150114522Sdougb}
151114522Sdougb
152114522Sdougbstart_mspq()
153114522Sdougb{
154114522Sdougb	case ${sendmail_enable} in
155114522Sdougb	[Nn][Oo][Nn][Ee])
156114522Sdougb		;;
157114522Sdougb	*)
158114522Sdougb		if [ -r /etc/mail/submit.cf ]; then
159114522Sdougb			case ${sendmail_msp_queue_enable} in
160114522Sdougb			[Yy][Ee][Ss])
161114522Sdougb				echo -n ' sendmail-clientmqueue'
162114522Sdougb				${sendmail_program} ${sendmail_msp_queue_flags}
163114522Sdougb				;;
164114522Sdougb			esac
165114522Sdougb		fi
166114522Sdougb		;;
167114522Sdougb	esac
168114522Sdougb}
169114522Sdougb
170114522Sdougbstop_mspq()
171114522Sdougb{
172121234Sgshapiro	# Check to make sure we are configured to start an MSP queue runner
173121234Sgshapiro	case ${sendmail_enable} in
174121234Sgshapiro	[Nn][Oo][Nn][Ee])
175121234Sgshapiro		return
176121234Sgshapiro		;;
177121234Sgshapiro	*)
178121234Sgshapiro		if [ -r /etc/mail/submit.cf ]; then
179121234Sgshapiro			case ${sendmail_msp_queue_enable} in
180121234Sgshapiro			[Yy][Ee][Ss])
181121234Sgshapiro				;;
182121234Sgshapiro			*)
183121234Sgshapiro				return
184121234Sgshapiro				;;
185121234Sgshapiro			esac
186121234Sgshapiro		fi
187121234Sgshapiro		;;
188121234Sgshapiro	esac
189121234Sgshapiro
190114522Sdougb	if [ -r ${sendmail_mspq_pidfile} ]; then
191114522Sdougb		echo -n ' sendmail-clientmqueue'
192114522Sdougb		kill -TERM `head -1 ${sendmail_mspq_pidfile}`
193114522Sdougb	else
194114522Sdougb		echo "$0: stop-mspq: ${sendmail_mspq_pidfile} not found"
195114522Sdougb	fi
196114522Sdougb}
197114522Sdougb
198114522Sdougbrestart_mspq()
199114522Sdougb{
200121234Sgshapiro	# Check to make sure we are configured to start an MSP queue runner
201121234Sgshapiro	case ${sendmail_enable} in
202121234Sgshapiro	[Nn][Oo][Nn][Ee])
203121234Sgshapiro		return
204121234Sgshapiro		;;
205121234Sgshapiro	*)
206121234Sgshapiro		if [ -r /etc/mail/submit.cf ]; then
207121234Sgshapiro			case ${sendmail_msp_queue_enable} in
208121234Sgshapiro			[Yy][Ee][Ss])
209121234Sgshapiro				;;
210121234Sgshapiro			*)
211121234Sgshapiro				return
212121234Sgshapiro				;;
213121234Sgshapiro			esac
214121234Sgshapiro		fi
215121234Sgshapiro		;;
216121234Sgshapiro	esac
217121234Sgshapiro
218114522Sdougb	if [ -r ${sendmail_mspq_pidfile} ]; then
219114522Sdougb		echo -n ' sendmail-clientmqueue'
220114522Sdougb		kill -HUP `head -1 ${sendmail_mspq_pidfile}`
221114522Sdougb	else
222114522Sdougb		echo "$0: restart-mspq: ${sendmail_mspq_pidfile} not found"
223114522Sdougb	fi
224114522Sdougb}
225114522Sdougb
226114522Sdougb# If no argument is given, assume we are being called at boot time.
227114522Sdougb_action=${1:-start}
228114522Sdougb
229114522Sdougbcase ${_action} in
230114522Sdougbstart)
231114522Sdougb	start_mta
232114522Sdougb	start_mspq
233114522Sdougb	;;
234114522Sdougb
235114522Sdougbstop)
236114522Sdougb	stop_mta
237114522Sdougb	stop_mspq
238114522Sdougb	;;
239114522Sdougb
240114522Sdougbrestart)
241114522Sdougb	restart_mta
242114522Sdougb	restart_mspq
243114522Sdougb	;;
244114522Sdougb
245114522Sdougbstart-mta)
246114522Sdougb	start_mta
247114522Sdougb	;;
248114522Sdougb
249114522Sdougbstop-mta)
250114522Sdougb	stop_mta
251114522Sdougb	;;
252114522Sdougb
253114522Sdougbrestart-mta)
254114522Sdougb	restart_mta
255114522Sdougb	;;
256114522Sdougb
257114522Sdougbstart-mspq)
258114522Sdougb	start_mspq
259114522Sdougb	;;
260114522Sdougb
261114522Sdougbstop-mspq)
262114522Sdougb	stop_mspq
263114522Sdougb	;;
264114522Sdougb
265114522Sdougbrestart-mspq)
266114522Sdougb	restart_mspq
267114522Sdougb	;;
268114522Sdougb
269114522Sdougb*)
270114522Sdougb	echo "usage: `basename $0` {start|stop|restart}" >&2
271114522Sdougb	echo "       `basename $0` {start-mta|stop-mta|restart-mta}" >&2
272114522Sdougb	echo "       `basename $0` {start-mspq|stop-mspq|restart-mspq}" >&2
273114522Sdougb	exit 64
274114522Sdougb	;;
275114522Sdougb
276114522Sdougbesac
277114522Sdougbexit 0
278