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