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