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