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