sendmail revision 103264
1285163Sdim#!/bin/sh
2285163Sdim#
3285163Sdim# $NetBSD: sendmail,v 1.14 2002/02/12 01:26:36 lukem Exp $
4285163Sdim# $FreeBSD: head/etc/rc.d/sendmail 103264 2002-09-12 17:31:09Z gordon $
5285163Sdim#
6285163Sdim
7285163Sdim# PROVIDE: mail
8285163Sdim# REQUIRE: LOGIN
9285163Sdim# KEYWORD: FreeBSD NetBSD
10285163Sdim#	we make mail start late, so that things like .forward's are not
11341825Sdim#	processed until the system is fully operational
12285163Sdim
13285163Sdim# XXX - Get together with sendmail mantainer to figure out how to
14285163Sdim#	better handle SENDMAIL_ENABLE and 3rd party MTAs.
15285163Sdim#
16285163Sdim. /etc/rc.subr
17285163Sdim
18285163Sdimname="sendmail"
19327952Sdimrcvar=`set_rcvar`
20285163Sdimrequired_files="/etc/mail/${name}.cf"
21285163Sdim
22309124Sdimcase ${OSTYPE} in
23285163SdimFreeBSD)
24285163Sdim	command=${sendmail_program:-/usr/sbin/sendmail}
25309124Sdim	pidfile=${sendmail_pidfile:-/var/run/sendmail.pid}
26309124Sdim
27309124Sdim	load_rc_config $name
28309124Sdim
29309124Sdim	case ${sendmail_enable} in
30309124Sdim	[Nn][Oo][Nn][Ee])
31285163Sdim		sendmail_enable="NO"
32285163Sdim		sendmail_submit_enable="NO"
33285163Sdim		sendmail_outbound_enable="NO"
34285163Sdim		sendmail_msp_queue_enable="NO"
35285163Sdim		;;
36285163Sdim	esac
37309124Sdim	;;
38309124SdimNetBSD)
39309124Sdim	command="/usr/sbin/${name}"
40285163Sdim	pidfile="/var/run/${name}.pid"
41285163Sdim	start_precmd="sendmail_precmd"
42285163Sdim
43285163Sdim	load_rc_config $name
44285163Sdim	;;
45285163Sdimesac
46285163Sdim
47309124Sdimsendmail_precmd()
48309124Sdim{
49314564Sdim	# Die if there's pre-8.10 custom configuration file.  This check is
50309124Sdim	# mandatory for smooth upgrade.  See NetBSD PR 10100 for details.
51309124Sdim	#
52309124Sdim	if checkyesno ${rcvar} && [ -f "/etc/${name}.cf" ]; then
53285163Sdim		if ! cmp -s "/etc/mail/${name}.cf" "/etc/${name}.cf"; then
54285163Sdim			warn \
55309124Sdim    "${name} was not started; you have multiple copies of sendmail.cf."
56285163Sdim			return 1
57285163Sdim		fi
58	fi
59
60	# check modifications on /etc/mail/aliases
61	if [ -f "/etc/mail/aliases.db" ]; then
62		if [ "/etc/mail/aliases" -nt "/etc/mail/aliases.db" ]; then
63			echo \
64	    "${name}: /etc/mail/aliases newer than /etc/mail/aliases.db, regenerating"
65			/usr/bin/newaliases
66		fi
67	else
68		echo \
69	    "${name}: /etc/mail/aliases.db not present, generating"
70			/usr/bin/newaliases
71	fi
72
73	# check couple of common db files, too
74	for f in genericstable virtusertable domaintable mailertable; do
75		if [ -r "/etc/mail/$f" -a \
76		    "/etc/mail/$f" -nt "/etc/mail/$f.db" ]; then
77			echo \
78    "${name}: /etc/mail/$f newer than /etc/mail/$f.db, regenerating"
79			/usr/sbin/makemap hash /etc/mail/$f < /etc/mail/$f
80		fi
81	done
82}
83
84run_rc_command "$1"
85
86case ${OSTYPE} in
87FreeBSD)
88	required_files=
89	
90	if ! checkyesno sendmail_enable; then
91		name="sendmail_submit"
92		rcvar=`set_rcvar`
93		start_cmd="${command} ${sendmail_submit_flags}"
94		run_rc_command "$1"
95	fi
96
97	if ! checkyesno sendmail_outbound_enable; then
98		name="sendmail_outbound"
99		rcvar=`set_rcvar`
100		start_cmd="${command} ${sendmail_outbound_flags}"
101		run_rc_command "$1"
102	fi
103
104	name="sendmail_clientmqueue"
105	rcvar="sendmail_msp_queue_enable"
106	start_cmd="${command} ${sendmail_msp_queue_flags}"
107	pidfile="${sendmail_mspq_pidfile:-/var/spool/clientmqueue/sm-client.pid}"
108	required_files="/etc/mail/submit.cf"
109	run_rc_command "$1"
110	;;
111esac
112