summaryrefslogtreecommitdiff
path: root/debian/local/update_tcpd
blob: ca19b79cf123729d474e4700e41202b02d127d4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/sh -e
#-----------------------------------------------------------------------------
#
# Update TCPD environment (TCP Wrappers) for sendmail
#
# Copyright (c) 2001-2001 Richard Nelson.  All Rights Reserved.
# Time-stamp: <2001/01/17 10:00:00 cowboy>
#
# Notes (to all):
#
# Notes (to self):
#
#-----------------------------------------------------------------------------
set -e

#------------------------------------------------------------------------------
# Check to see if sendmail is mentioned in /etc/hosts.allow
#	Note:  This check is far from perfect - it requires sendmail and : be
#		   on the same line.  If you've got a better approach, I'd love to
#		   see it (Maybe awk/perl)!

# Path to other sendmail helpers
if [ -x ./update_sendmail ]; then
	sm_path='.';
elif [ -x $(dirname $0)/update_sendmail ]; then
	sm_path=$(dirname $0);
else
	sm_path=/usr/share/sendmail;
	fi;
# Bring in sendmail.conf for the network definitions
if [ ! -f /etc/mail/sendmail.conf ]; then
	if [ -x $sm_path/update_conf ]; then
		$sm_path/update_conf;
		fi;
	fi; 
if [ -f /etc/mail/sendmail.conf ]; then
	. /etc/mail/sendmail.conf;
	fi;
if [ "$HANDS_OFF" != 'No' ]; then
	exit 0;
	fi;

if grep -qEe "^[^#:]*sendmail[^:]*[:]" /etc/hosts.allow 2>/dev/null; then
	need_tcpd=0
else
	need_tcpd=1
	fi

if [ ! -e /etc/hosts.allow ]; then
	need_tcpd=0
	fi

if [ $need_tcpd -eq 1 ]; then
	cat <<-EOT
	 
	Updating /etc/hosts.allow, adding "sendmail: all".
	
	Please edit /etc/hosts.allow and check the rules location to
	make sure your security measures have not been overridden -
	it is common to move the sendmail:all line to the *end* of
	the file, so your more selective rules take precedence.
EOT

	echo "sendmail: all" | cat - /etc/hosts.allow >/etc/hosts.allow.new
	mv -f /etc/hosts.allow.new /etc/hosts.allow
	
	if [ -e /etc/init.d/netbase ]; then
		/etc/init.d/netbase reload >/dev/null
	elif [ -e /etc/init.d/inetd ]; then
		/etc/init.d/inetd reload >/dev/null
		fi
	fi

exit 0