summaryrefslogtreecommitdiff
path: root/debian/local/dynamic
diff options
context:
space:
mode:
Diffstat (limited to 'debian/local/dynamic')
-rw-r--r--debian/local/dynamic435
1 files changed, 0 insertions, 435 deletions
diff --git a/debian/local/dynamic b/debian/local/dynamic
deleted file mode 100644
index 7a72732..0000000
--- a/debian/local/dynamic
+++ /dev/null
@@ -1,435 +0,0 @@
-#!/bin/sh
-#------------------------------------------------------------------------
-#
-# $Sendmail: dynamic,v 8.14.2 2007-11-02 22:20:56 cowboy Exp $
-#
-# Shell functions to handle dynamic network updates.
-# Supports ppp, dhcp, ifup/down, etc.
-#
-# Copyright (c) 2004-2007 Richard Nelson. All Rights Reserved.
-#
-# This script is called from the following places:
-# /etc/ppp/ip-down.d/sendmail #\
-# /etc/ppp/ip-up.d/sendmail # | These are deprecated
-# /etc/dhcp3/dhclient-exit-hooks.d/sendmail #/
-# /etc/network/if-down.d/sendmail #standard
-# /etc/network/if-post-down.d/sendmail #standard
-# /etc/network/if-up.d/sendmail #standard
-# /etc/resolvconf/update-libc.d/sendmail #More or less useless :(
-#
-# The other half of the logic is in /etc/mail/sendmail.conf
-#
-# DAEMON_NETMODE="Dynamic"; Keyword SMTP network mode
-# static: Do not monitor any network interfaces for changes
-# dynamic: Monitor one or more interfaces for changes
-#
-# DAEMON_NETIF="eth0"; string SMTP interface(s)
-# This parameter defines the network interface(s) that the daemon
-# will monitor for status changes (via ppp, dhcp, ifup/down hooks).
-#
-# NOTES:
-# 1) Only list more than one interfaces if they only used for fallback,
-# otherwise the daemon will wind up ping-ponging between interfaces.
-# 2) Do not use 'lo' unless your daemon only listens on the localhost.
-#
-# LOG_CMDS="No"; Binary command logging flag
-# Will cause syslog entries for many of the sendmail related commands
-# like runq, mailq, etc - you'll also see cron jobs (if enabled).
-#
-# HANDS_OFF="No"; Binary Do *NOT* touch the configuration
-# Set this *ONLY* if you are going to be fully responsible for the entire
-# setup of sendmail - the directories, permissions, databases, etc. With
-# this variable set to "Yes", nothing will be done for you during
-# updates.
-#
-# In other words, "The blood be upon your hands" if you set this...
-# My ability to help with problems will be greatly reduced !
-#
-# "Well, a pet peeve of mine is people who directly edit the
-# .cf file instead of using the m4 configuration files.
-# Don't do it! [laughs] I treat the .cf file as a binary
-# file - you should too."
-# -- Eric Allman 1999/10/18
-#
-#------------------------------------------------------------------------
-#
-
-# The files we may alter
-provider_m4='/etc/mail/m4/provider.m4';
-dialup_m4='/etc/mail/m4/dialup.m4';
-
-# Default values
-SM_ignore=0; # Ignore any changes
-SM_changed=0; # Something has changed, dunno what
-SM_delay=0; # Expect another call soon, do work then
-SM_interface=''; # The interface that changed
-SM_state=''; # How the interface changed
-SM_provider=''; # ISP/domain name/IPPARM/etc
-SM_ip=''; # IP for the interface
-SM_host=''; # Reverse FQDN of IP
-SM_debug=1; # Of minimal value
-
-# Path to other sendmail helpers
-if [ -x ./update_sendmail ]; then
- sm_path='.';
-elif [ -x $(/usr/bin/dirname $0)/update_sendmail ]; then
- sm_path=$(/usr/bin/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;
-DAEMON_NETMODE='Static';
-DAEMON_NETIF='';
-HANDS_OFF='No';
-LOG_CMDS='Yes';
-if [ -f /etc/mail/sendmail.conf ]; then
- . /etc/mail/sendmail.conf;
- fi;
-
-# Record information on an interface and its status
-update_interface() {
- SM_interface="$1";
- SM_reason="$2";
-
- # Translate DHCP style actions to a simple up/down
- case "$SM_reason" in
- DOWN|EXPIRE|FAIL|RELEASE|STOP) # and TIMEOUT too ???
- SM_state='down';
- ;;
- UP|BOUND|RENEW|REBIND|REBOOT|TIMEOUT) # why TIMEOUT here ???
- SM_state='up';
- if [ "$SM_reason" = "BOUND" ]; then
- SM_changed=1;
- fi;
- ;;
- *)
- SM_state='unknown';
- ;;
- esac;
-
- # Mark what we're doing...
- local msg="$SM_interface $SM_state $SM_provider $SM_ip $SM_host";
- if [ "$LOG_CMDS" != 'No' ]; then
- /usr/bin/logger -i -p mail.debug -- "$0 (dynamic) update_interface: $msg";
- fi;
-
- # Do absolutely nothing if they say so...
- if [ "$HANDS_OFF" != 'No' ]; then
- SM_ignore=1;
- fi;
- if [ -z "$SM_interface" ]; then
- SM_ignore=1;
- fi;
-
- # Check to see if we care about this interface
- if [ $SM_ignore -eq 0 ]; then
- SM_ignore=1;
- for if in $DAEMON_NETIF; do
- if [ "$if" = "$SM_interface" ]; then
- SM_ignore=0;
- break;
- fi;
- done;
- fi;
-
- if [ $SM_ignore -ne 0 ]; then
- return;
- fi;
- };
-
-# Record information about the upstream provider
-update_provider() {
- SM_provider="$1";
-
- # Mark what we're doing...
- local msg="$SM_interface $SM_state $SM_provider $SM_ip $SM_host";
- if [ "$LOG_CMDS" != 'No' ]; then
- /usr/bin/logger -i -p mail.debug -- "$0 (dynamic) update_provider: $msg";
- fi;
-
- # Do absolutely nothing if they say so...
- if [ "$HANDS_OFF" != 'No' ]; then
- SM_ignore=1;
- fi;
- if [ $SM_ignore -ne 0 ]; then
- return;
- fi;
- # Add smarthost information (if any)...
- # But not if provider.m4 is a link !
- if [ -z "$SM_provider" ]; then
- return;
- fi;
- if [ ! -e "/etc/mail/peers/$SM_provider" ]; then
- SM_provider='default';
- fi;
- if [ -e "/etc/mail/peers/$SM_provider" ] \
- && [ ! -L "$provider_m4" ]; then
- SM_changed=1;
- cat <<-EOT > "$provider_m4";
- LOCAL_CONFIG
- #------------------------------------------------------------
- #
- # Dynamic provider updates from $0:
- # Device=$SM_interface
- # State=$SM_state
- # Provider=$SM_provider
- #
- # NOTE: The following line *MUST* be in /etc/mail/sendmail.mc
- #dnl include(\`/etc/mail/provider.m4')dnl
- #
- # You may also need to include this file in submit.mc !
- #
- # Provider information from /etc/mail/peers/$SM_provider
- EOT
- cat "/etc/mail/peers/$SM_provider" >> "$provider_m4";
- cat <<-EOT >> "$provider_m4";
- #------------------------------------------------------------
- EOT
- fi;
- };
-
-# Record information on an ip/host
-update_host() {
- SM_ip="$1";
-
- # Mark what we're doing...
- local msg="$SM_interface $SM_state $SM_provider $SM_ip $SM_host";
- if [ "$LOG_CMDS" != 'No' ]; then
- /usr/bin/logger -i -p mail.debug -- "$0 (dynamic) update_host: $msg";
- fi;
-
- # Do absolutely nothing if they say so...
- if [ "$HANDS_OFF" != 'No' ]; then
- SM_ignore=1;
- fi;
- if [ $SM_ignore -ne 0 ]; then
- return;
- fi;
- if [ -z "$SM_ip" ]; then
- return;
- fi;
- find_host;
- if [ $SM_ignore -ne 0 ]; then
- return;
- fi;
- # Add ip related information (if any)...
- # But not if dialup.m4 is a link !
- if [ ! -L "$dialup_m4" ]; then
- SM_changed=1;
- cat <<-EOT > "$dialup_m4";
- LOCAL_CONFIG
- #------------------------------------------------------------
- #
- # Dynamic host/ip updates from $0:
- # Device=$SM_interface
- # State=$SM_state
- # Provider=$SM_provider
- # IP=$SM_ip
- # Host=$SM_host
- #
- # NOTE: The following line *MUST* be in /etc/mail/sendmail.mc
- #dnl include(\`/etc/mail/dialup.m4')dnl
- #
- # This should *NOT* be included in submit.mc !
- #
- # Make sure we accept mail as this ip (for bounces, etc)
- Cw$SM_ip
- EOT
- if [ -z "$SM_host" ]; then
- cat <<-EOT >> "$dialup_m4";
- #
- # Rats... FQDN lookup failed, your kit is incomplete :(
- EOT
- else
- cat <<-EOT >> "$dialup_m4";
- #
- # Define our true hostname (from our ISP) - becomes \$j
- define(\`confDOMAIN_NAME', \`$SM_host')dnl
- #
- # Make sure we accept mail as this name (for bounces, etc)
- Cw$SM_host
- #
- # Add our hostname to class G for genericstable support
- CG$SM_host
- #------------------------------------------------------------
- EOT
- fi;
- fi;
- };
-
-# DNS support changed, we may (or may not) have a new name
-# but in any case, we may have stale host info in the queue
-update_resolv() {
-
- # Mark what we're doing...
- local msg="$SM_interface $SM_state $SM_provider $SM_ip $SM_host";
- if [ "$LOG_CMDS" != 'No' ]; then
- /usr/bin/logger -i -p mail.debug -- "$0 (dynamic) update_resolv: $msg";
- fi;
-
- # Do absolutely nothing if they say so...
- if [ "$HANDS_OFF" != 'No' ]; then
- SM_ignore=1;
- fi;
- if [ $SM_ignore -ne 0 ]; then
- return;
- fi;
-
- # Ideally, we should re-check our IP if we didn't find the
- # FQDN previously - but we need a state file to do that :(
- #
- # Hell, we don't even know what IF is, and if it is up or down :(
-
- #SM_interface='?'; #\
- #SM_state='up'; # \
- #SM_provider='?'; # | Need to get these from somewhere !
- #SM_ip='?'; # /
- #SM_host='?'; #/
- #find_host;
-
- # Purge any latent host status that might cause us to *NOT* send mail
- if [ -x /etc/init.d/sendmail ]; then
- /etc/init.d/sendmail purgestat now
- fi;
-
- # resolvconf is called as a DHCP pre-exit, so we'll defer any changes
- SM_changed=0;
- }
-
-# Attempt to locate our FQDN
-find_host() {
- # Determine our fqdn from our ISP
- maxloop=30;
- cntr=0;
- SM_host='';
- until (test ! -z "$SM_host"); do
- cntr=`expr $cntr + 1`;
- if [ $cntr -gt $maxloop ]; then
- SM_host='';
- break;
- fi;
- rev=$(host $SM_ip);
- SM_host=$(echo "$rev" | grep '^Name:' | awk '{print $2}');
- if [ -z "$SM_host" ]; then
- test=$(echo "$rev" | egrep -e 'not found:');
- if [ -n "$test" ]; then
- continue;
- else
- SM_host=${rev##*domain name pointer };
- SM_host=${SM_host%.};
- fi;
- fi;
- test=$(echo $SM_host | cut -d ' ' -f 1);
- # continue scanning if we get this:
- # ;; connection timed out; no servers could be reached
- if [ "$test" = ";;" ]; then
- SM_host='';
- elif [ "$test" != "**" ]; then
- break;
- fi;
- sleep 1s;
- done;
-
- # See if we actually found a host !
- if [ -z "$SM_host" ]; then
- # Drats, no host name :(
- # We have a few choices - none pretty
- # 1) Do not start sendmail
- # 2) Use the info we have (ip) - but
- # then we may not accept mail we should,
- # accept mail we should not,
- # and our ougoing name may be wrong
- # 3) Use the last known hostname
- # If it is not correct, we have the same
- # exposurs as option 2 !
- #
- # For the nonce, I choose option 2
- :
- fi;
-
- if [ $SM_debug -ne 0 ]; then
- echo "addr=$SM_ip, name=$SM_host";
- fi;
- };
-
-# If our state has changed in any way, update sendmail
-update_sendmail() {
- SM_caller="$1";
- SM_opts="$2";
-
- # Mark what we're doing...
- local msg="$SM_interface $SM_state $SM_provider $SM_ip $SM_host";
- if [ "$LOG_CMDS" != 'No' ]; then
- /usr/bin/logger -i -p mail.debug -- "$0 (dynamic) update_sendmail: $msg";
- fi;
-
- # Do absolutely nothing if they say so...
- if [ "$HANDS_OFF" != 'No' ]; then
- SM_ignore=1;
- fi;
- if [ $SM_ignore -ne 0 ]; then
- return;
- fi;
-
- # Check for a delayed restart (for DHCP/PPP)
- case "$SM_opts" in
- [Dd]*)
- if [ "$SM_state" = 'up' ]; then
- SM_delay=1;
- fi;
- ;;
- esac;
-
- if [ "$SM_state" = 'down' ]; then
- SM_changed=1;
- cat <<-EOT > "$dialup_m4";
- LOCAL_CONFIG
- #------------------------------------------------------------
- # Dynamic host/ip updates from $0:
- # Device=$SM_interface
- # State=$SM_state
- # Provider=$SM_provider
- # IP=$SM_ip
- # Host=$SM_host
- #
- # NOTE: The following line *MUST* be in /etc/mail/sendmail.mc
- #dnl include(\`/etc/mail/dialup.m4')dnl
- # This should *NOT* be included in submit.mc !
- #
- # sendmail is to only queue messages until connected again
- define(\`confDELIVERY_MODE', \`deferred')dnl
- #
- # Allow the queue to age without carping every four hours
- define(\`confTO_QUEUEWARN',\`1d')dnl
- #
- # Don't keep host status while the network is down
- define(\`confHOST_STATUS_DIRECTORY')dnl
- #------------------------------------------------------------
- EOT
- fi;
-
- if [ $SM_changed -eq 1 ]; then
- # Build a new sendmail.cf from sendmail.mc, including our address.
- /usr/bin/make -f /etc/mail/Makefile sendmail.cf;
- /usr/bin/make -f /etc/mail/Makefile;
-
- # Purge any latent host status that might cause us to *NOT* send mail
- # Reload sendmail, IFF already running
- if [ -x /etc/init.d/sendmail ]; then
- /etc/init.d/sendmail purgestat now
- /etc/init.d/sendmail reload-if-running; # up, or down
- fi;
- fi;
-
- # Process the sendmail queue
- # (background so as to not defer other ip-up work)
- # This can be fatal on IF ping-pongs :(
- # runq &
- };
-