summaryrefslogtreecommitdiffstats
path: root/usr.sbin/sendmail/contrib/etrn.pl
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/sendmail/contrib/etrn.pl')
-rwxr-xr-xusr.sbin/sendmail/contrib/etrn.pl324
1 files changed, 0 insertions, 324 deletions
diff --git a/usr.sbin/sendmail/contrib/etrn.pl b/usr.sbin/sendmail/contrib/etrn.pl
deleted file mode 100755
index 1e2cba9..0000000
--- a/usr.sbin/sendmail/contrib/etrn.pl
+++ /dev/null
@@ -1,324 +0,0 @@
-#!/usr/local/bin/perl
-'di ';
-'ds 00 \\"';
-'ig 00 ';
-#
-# THIS PROGRAM IS ITS OWN MANUAL PAGE. INSTALL IN man & bin.
-#
-
-# hardcoded constants, should work fine for BSD-based systems
-use Socket;
-use Getopt::Std;
-$sockaddr = 'S n a4 x8';
-
-# system requirements:
-# must have 'hostname' program.
-
-#############################################################################
-# Copyright (c) 1996 John T. Beck <john@beck.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by John T. Beck.
-# 4. The name of John Beck may not be used to endorse or promote products
-# derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY JOHN T. BECK ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL JOHN T. BECK BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# This copyright notice derived from material copyrighted by the Regents
-# of the University of California.
-#
-# Contributions accepted.
-#############################################################################
-# Further disclaimer: the etrn.pl script was highly leveraged from the
-# expn.pl script which is (C) 1993 David Muir Sharnoff.
-#############################################################################
-
-$port = 'smtp';
-$av0 = $0;
-select(STDERR);
-
-$0 = "$av0 - running hostname";
-chop($name = `hostname || uname -n`);
-
-$0 = "$av0 - lookup host FQDN and IP addr";
-($hostname,$aliases,$type,$len,$thisaddr) = gethostbyname($name);
-
-$0 = "$av0 - parsing args";
-$usage = "Usage: $av0 [-wd] host [args]";
-getopts('dw');
-$watch = $opt_w;
-$debug = $opt_d;
-$server = shift(@ARGV);
-@hosts = @ARGV;
-die $usage unless $server;
-@cwfiles = ();
-
-if (!@hosts) {
- push(@hosts,$hostname);
-
- $0 = "$av0 - parsing sendmail.cf";
- open(CF, "</etc/sendmail.cf") || die "open /etc/sendmail.cf: $!";
- while (<CF>){
- if (/^Fw.*$/){ # look for a line starting with "Fw"
- $cwfile = $_;
- chop($cwfile);
- $optional = /^Fw-o/;
- $cwfile =~ s,^Fw[^/]*,,; # extract the file name
-
- if (-r $cwfile) {
- push (@cwfiles, $cwfile);
- } else {
- die "$cwfile is not readable" unless $optional;
- }
- }
- if (/^Cw(.*)$/){ # look for a line starting with "Cw"
- @cws = split (' ', $1);
- while (@cws) {
- $thishost = shift(@cws);
- push(@hosts, $thishost) unless $thishost =~ "$hostname|localhost";
- }
- }
- }
- close(CF);
-
- for $cwfile (@cwfiles) {
- $0 = "$av0 - reading $cwfile";
- if (open(CW, "<$cwfile")){
- while (<CW>){
- next if /^\#/;
- $thishost = $_;
- chop($thishost);
- push(@hosts, $thishost) unless $thishost =~ $hostname;
- }
- close(CW);
- } else {
- die "open $cwfile: $!";
- }
- }
-}
-
-$0 = "$av0 - building local socket";
-($name,$aliases,$proto) = getprotobyname('tcp');
-($name,$aliases,$port) = getservbyname($port,'tcp')
- unless $port =~ /^\d+/;
-
-# look it up
-$0 = "$av0 - gethostbyname($server)";
-
-($name,$aliases,$type,$len,$thataddr) = gethostbyname($server);
-
-# get a connection
-$0 = "$av0 - socket to $server";
-$that = pack($sockaddr, &AF_INET, $port, $thataddr);
-socket(S, &AF_INET, &SOCK_STREAM, $proto)
- || die "socket: $!";
-$0 = "$av0 - connect to $server";
-print "debug = $debug server = $server\n" if $debug > 8;
-if (! connect(S, $that)) {
- $0 = "$av0 - $server: could not connect: $!\n";
-}
-select((select(S),$| = 1)[0]); # don't buffer output to S
-
-# read the greeting
-$0 = "$av0 - talking to $server";
-&alarm("greeting with $server",'');
-while(<S>) {
- alarm(0);
- print if $watch;
- if (/^(\d+)([- ])/) {
- if ($1 != 220) {
- $0 = "$av0 - bad numeric response from $server";
- &alarm("giving up after bad response from $server",'');
- &read_response($2,$watch);
- alarm(0);
- print STDERR "$server: NOT 220 greeting: $_"
- if ($debug || $watch);
- }
- last if ($2 eq " ");
- } else {
- $0 = "$av0 - bad response from $server";
- print STDERR "$server: NOT 220 greeting: $_"
- if ($debug || $watch);
- close(S);
- }
- &alarm("greeting with $server",'');
-}
-alarm(0);
-
-# if this causes problems, remove it
-$0 = "$av0 - sending helo to $server";
-&alarm("sending ehlo to $server","");
-&ps("ehlo $hostname");
-$etrn_support = 0;
-while(<S>) {
- if (/^250([- ])ETRN(.+)$/){
- $etrn_support = 1;
- }
- print if $watch;
- last if /^\d+ /;
-}
-alarm(0);
-
-if ($etrn_support){
- print "ETRN supported\n" if ($debug);
- &alarm("sending etrn to $server",'');
- while (@hosts) {
- $server = shift(@hosts);
- &ps("etrn $server");
- while(<S>) {
- print if $watch;
- last if /^\d+ /;
- }
- sleep(1);
- }
-} else {
- print "\nETRN not supported\n\n"
-}
-
-&alarm("sending 'quit' to $server",'');
-$0 = "$av0 - sending 'quit' to $server";
-&ps("quit");
-while(<S>) {
- print if $watch;
- last if /^\d+ /;
-}
-close(S);
-alarm(0);
-
-select(STDOUT);
-exit(0);
-
-# print to the server (also to stdout, if -w)
-sub ps
-{
- local($p) = @_;
- print ">>> $p\n" if $watch;
- print S "$p\n";
-}
-
-sub alarm
-{
- local($alarm_action,$alarm_redirect,$alarm_user) = @_;
- alarm(3600);
- $SIG{ALRM} = 'handle_alarm';
-}
-
-sub handle_alarm
-{
- &giveup($alarm_redirect,"Timed out during $alarm_action",$alarm_user);
-}
-
-# read the rest of the current smtp daemon's response (and toss it away)
-sub read_response
-{
- local($done,$watch) = @_;
- local(@resp);
- print $s if $watch;
- while(($done eq "-") && ($s = <S>) && ($s =~ /^\d+([- ])/)) {
- print $s if $watch;
- $done = $1;
- push(@resp,$s);
- }
- return @resp;
-}
-# to pass perl -w:
-@tp;
-$flag_a;
-$flag_d;
-&handle_alarm;
-################### BEGIN PERL/TROFF TRANSITION
-.00 ;
-
-'di
-.nr nl 0-1
-.nr % 0
-.\\"'; __END__
-.\" ############## END PERL/TROFF TRANSITION
-.TH ETRN 1 "January 25, 1997"
-.AT 3
-.SH NAME
-etrn \- start mail queue run
-.SH SYNOPSIS
-.B etrn
-.RI [ -w ]
-.RI [ -d ]
-.IR hostname
-.RI [ args ]
-.SH DESCRIPTION
-.B etrn
-will use the SMTP
-.B etrn
-command to start mail delivery from the host given on the command line.
-.B etrn
-usually sends an
-.B etrn
-for each host the local sendmail accepts e-mail for, but if
-.IR args
-are specified,
-.B etrn
-uses these as arguments for the SMTP
-.B etrn
-commands passed to the host given on the command line.
-.SH OPTIONS
-.LP
-The normal mode of operation for
-.B etrn
-is to do all of its work silently.
-The following options make it more verbose.
-It is not necessary to make it verbose to see what it is
-doing because as it works, it changes its
-.BR argv [0]
-variable to reflect its current activity.
-The
-.IR -w ,
-watch, flag will cause
-.B etrn
-to show you its conversations with the mail daemons.
-The
-.IR -d ,
-debug, flag will expose many of the inner workings so that
-it is possible to eliminate bugs.
-.SH ENVIRONMENT
-No enviroment variables are used.
-.SH FILES
-.B /etc/sendmail.cf
-.SH SEE ALSO
-.BR sendmail (8),
-RFC 1985.
-.SH BUGS
-Not all mail daemons will implement
-.B etrn .
-.LP
-It is assumed that you are running domain names.
-.SH CREDITS
-Leveraged from David Muir Sharnoff's expn.pl script.
-Christian von Roques added support for
-.IR args
-and fixed a couple of bugs.
-.SH AVAILABILITY
-The latest version of
-.B etrn
-is available in the contrib directory of the sendmail
-distribution through anonymous ftp at
-.IR ftp://ftp.sendmail.org/ucb/src/sendmail/ .
-.SH AUTHOR
-.I John T. Beck\ \ \ \ <john@beck.org>
OpenPOWER on IntegriCloud