[comp.sources.unix] v16i073: IDA Sendmail kit, Part01/08

rsalz@uunet.uu.net (Rich Salz) (11/14/88)

Submitted-by: Lennart Lovstrand <lovstran@arisia.xerox.com>
Posting-number: Volume 16, Issue 73
Archive-name: ida2/part01

Hello & Welcome to the IDA* Sendmail Enhancement Kit (rev 1.2.5).

The Kit includes a set of source code modifications to the BSD 4.3
sendmail program version 5.59.  The changes will enable sendmail to have
direct access to dbm(3) files and Sun's Yellow Pages, separate envelope/
header rewriting rulesets, and multi-token class matches among other
things.  Various bug fixes and other improvements has also been included.

As a separate part of the Kit is the IDA Sendmail Master Configuration
file and a sample setups used at the CIS Dept, U of Linkoping and at
Rank Xerox EuroPARC.  The configuration file together with the supplied
data files and utility programs implement such nice features as pathalias
based systems routing within sendmail, fully !-/@-translating rulesets,
and generic local user addresses and again much more.  See the "M4
IDENTIFIERS" section in ida/cf/Sendmail.mc for details and options.

Finally, there is an accompanying paper on mail addressing issues in
general and hybrid addresses in particular.  Included in the paper is a
description of the changes to sendmail and the configuration setup.
Note however that the paper was written for the original (1.0) revision
of the Kit and that it therefore may be out of date on some details.  See
the supplied README and INSTALL files for up-to-date information.

To unpack the Kit, preferrably first cd to your sendmail source directory
and then send the rest of this message and the following seven through
/bin/sh or unshar.  This should create a new "ida" subdirectory with all
the Kit's files.

If you are on the ARPA Internet, you may choose to retrieve the Kit
in compressed tar format from ~ftp/pub1/ida.tar.Z on Arisia.Xerox.COM
using anonymous ftp.  A compressed executable binary of IDA sendmail for
Sun-3/SunOS 3.x is also available as ~ftp/pub1/ida-sendmail-sun3.Z.

Enjoy!
--Lennart

*) IDA is an abbreviation of "Institutionen for Datavetenskap", Swedish
   for "The Department of Computer and Information Science".  Under no
   circumstance should it be confused with the IDA that stands for the
   Institute for Defense Analysis, with which the author has no
   relationship to nor wish to become associated with.

--cut--here--cut--here--cut--here--cut--here--cut--here--cut--here-->8--
#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 8)."
# Contents:  ida ida/Makefile ida/aux ida/aux/Makefile ida/aux/header.c
#   ida/aux/mkdomext.c ida/aux/scanf.c ida/cf ida/cf/Makefile
#   ida/cf/Makefile.europarc ida/cf/Makefile.generic
#   ida/cf/Makefile.ida ida/cf/asterix.m4 ida/cf/cftest
#   ida/cf/client.m4 ida/cf/europarc.m4 ida/cf/majestix.m4
#   ida/cf/newaliases.m4 ida/cf/obelix.m4 ida/cf/tests ida/doc
#   ida/doc/Makefile ida/doc/cover.tr ida/doc/mkdomext.1
#   ida/doc/xalparse.8 ida/lib ida/lib/Makefile
#   ida/lib/Makefile.europarc ida/lib/Makefile.generic ida/lib/decnet
#   ida/lib/decnet/nodes ida/lib/decnet/xtable ida/lib/mailertable
#   ida/lib/restart_clients ida/lib/sendmail.hf ida/lib/sendmail.st
#   ida/lib/stop_clients ida/lib/uucp ida/lib/uucp/relays
#   ida/lib/uucp/xtable ida/patches ida/patches/MDBM.edit
#   ida/patches/Makefile ida/patches/Makefile.diff
#   ida/patches/Version.c.diff ida/patches/arpadate.c.diff
#   ida/patches/conf.c.diff ida/patches/conf.h.diff
#   ida/patches/domain.c.diff ida/patches/headers.c.diff
#   ida/patches/mdbm_compat.h ida/patches/queue.c.diff
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test ! -d ida ; then
    echo shar: Creating directory \"ida\"
    mkdir ida
fi
if test -f ida/Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/Makefile\"
else
echo shar: Extracting \"ida/Makefile\" \(1424 characters\)
sed "s/^X//" >ida/Makefile <<'END_OF_ida/Makefile'
X#
X#  MAKEFILE -- The IDA Sendmail Enhancement Kit.
X#  Copyright (c) 1987 Lennart Lovstrand
X#  CIS Dept, Univ of Linkoping, Sweden
X#
X#  Use it, abuse it, but don't sell it.
X#
X
X#  Global definitions; will be exported to all Makefiles
XMAN8DIR=	/usr/man/manl		# Place for the section 8 manuals
XMAN8EXT=	.l			# Extension for section 8 manuals
XMAN1DIR=	/usr/man/manl		# Place for the section 1 manuals
XMAN1EXT=	.l			# Extension for section 1 manuals
XBINDIR=		/usr/local/bin		# Where the binary aux files should go
XLIBDIR=		/usr/lib/mail		# Where the data files should be
XSRCDIR=		../../src		# The sendmail src subdirectory
XINCLUDEDIR=	../../include		# The sendmail include subdirectory
XDOCDIR=		../../doc		# The sendmail doc subdirctory
XMDBM=		#-DMDBM -I$(SRCDIR)	# Only defined if you want to use mdbm
XDBMLIB=		-ldbm			# Change to -lmdbm if you use mdbm
XDBMDIREXT=	.dir			# Change to .map for mdbm
XDBMPAGEXT=	.pag			# Change to .dat for mdbm
XTROFF=		pstroff			# The [nt]roff program of your choice
X
Xconfigure:	config.ed
X		@echo ">>> Propagating changes to subdirectories."
X		for M in */Makefile; do \
X			ed $$M <config.ed; \
X		done
X
Xconfig.ed:	Makefile
X		egrep '^[^#	].*=' Makefile | \
X		sed -e 's/[ 	]*#.*$$//' -e 's/#.*$$//' \
X			-e 's/^\(.*=\).*$$/g\/^\1\/c\\;&\\;./' | \
X		tr ';' '\012' >$@
X		echo w >>$@
X		echo q >>$@
X
Xclean:
X		-rm -f \#* *~ config.ed
X
Xspotless:	clean
X		for d in */.; do \
X			(cd $$d; make clean); \
X		done
END_OF_ida/Makefile
if test 1424 -ne `wc -c <ida/Makefile`; then
    echo shar: \"ida/Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test ! -d ida/aux ; then
    echo shar: Creating directory \"ida/aux\"
    mkdir ida/aux
fi
if test -f ida/aux/Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/aux/Makefile\"
else
echo shar: Extracting \"ida/aux/Makefile\" \(938 characters\)
sed "s/^X//" >ida/aux/Makefile <<'END_OF_ida/aux/Makefile'
X#
X#  MAKEFILE -- Auxiliary Files.
X#  Copyright (c) 1987 Lennart Lovstrand
X#  CIS Dept, Univ of Linkoping, Sweden
X#
X#  Use it, abuse it, but don't sell it.
X#
X#  Rmail has it's own options, go change them there.
X#
X
XBINS=		dbm mkdomext scanf xalparse
XCFLAGS=		-O -DVMUNIX -I$(INCLUDEDIR)
X
X#  The following definitions are inserted by ../Makefile
X#  Change them there--not here!
XBINDIR=		/usr/local/bin
XLIBDIR=		/usr/lib/mail
XSRCDIR=		../../src
XINCLUDEDIR=	../../include
XDBMLIB=		-ldbm
X
Xall:		$(BINS) rmail
X
Xdbm:		dbm.c
X		$(CC) $(CFLAGS) $(MDBM) -o dbm dbm.c $(DBMLIB)
X
Xrmail:		rmail.c
X		$(CC) $(CFLAGS) $(MDBM) -o rmail rmail.c $(DBMLIB)
X
Xinstall:	$(BINS)
X		cp $(BINS) $(BINDIR)
X		cd $(BINDIR); strip $(BINS)
X		@echo '>>> Do "make install-rmail" to explitly install rmail.'
X
Xinstall-rmail:	rmail
X		install -m 4755 -o root -s rmail /bin
X
Xclean:
X		-rm -f \#* *~ *.o $(BINS) rmail
X
X.c.o:
X		$(CC) $(CFLAGS) -c $<
X
X.c:
X		$(CC) $(CFLAGS) -o $@ $<
END_OF_ida/aux/Makefile
if test 938 -ne `wc -c <ida/aux/Makefile`; then
    echo shar: \"ida/aux/Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/aux/header.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/aux/header.c\"
else
echo shar: Extracting \"ida/aux/header.c\" \(1683 characters\)
sed "s/^X//" >ida/aux/header.c <<'END_OF_ida/aux/header.c'
X/*
X**  HEADER -- Header line parser.
X**  Copyright (c) 1985 Lennart Lovstrand
X**  CIS Dept, Univ of Linkoping, Sweden
X**
X**  Use it, abuse it, but don't sell it.
X**
X**  Version of 14-Apr-85.
X*/
X
X#include <stdio.h>
X#include <strings.h>
X#include <ctype.h>
X#include "useful.h"
X
X#define H_CC		"cc"
X#define H_FROM		"from"
X#define H_MESSAGE_ID	"message_id"
X#define H_RETURN_PATH	"return-path"
X#define H_TO		"to"
X#define H_VIA		"via"
X
X#define COMMA	','
X
X#define MAKELC(C)	(isupper(C) ? tolower(C) : C)
X
X/*
X *	iskey: checks if the line is prefixed by
X *	the supplied keyword (immediately followed by
X *	a colon)
X */
Xiskey(key, line)
Xchar *key, *line;
X{
X	for (; *key != NULL && *line != NULL; key++, line++)
X		if (MAKELC(*key) != MAKELC(*line))
X			break;
X
X	return *key == NULL && *line == ':';
X}
X
Xchar *eat(str, ch)
Xchar *str, ch;
X{
X	for(; *str == ch; str++);
X	return str;
X}
X
X/*
X *	extract_address:
X *	finds and extracts the machine address part of an address field
X */
X
Xchar *extract_address(field, address)
Xchar *field, *address;
X{
X	char *address_start = address;
X
X	while(*field && *field != COMMA && *field != '>')
X		switch (*field) {
X			case '<':
X				return extract_address(field, address_start);
X			case '(':
X				while (*field && *field != ')');
X					field++;
X				break;
X			case '"':
X				do
X					*address++ = *field++;
X				while (*field && *field != '"');
X				if (*field)
X					*address++ = *field++;
X				break;
X			case ' ':
X				*address++ = *field++;
X				field = eat(field, ' ');
X				break;
X			case '\\':
X				*address++ = *field++;
X				/* fall through */
X			default:
X				*address++ = *field++;
X		}
X	*address = NULL;
X	if (*field)
X		return index(field, COMMA)+1;
X	else
X		return field;
X}
X
X
END_OF_ida/aux/header.c
if test 1683 -ne `wc -c <ida/aux/header.c`; then
    echo shar: \"ida/aux/header.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/aux/mkdomext.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/aux/mkdomext.c\"
else
echo shar: Extracting \"ida/aux/mkdomext.c\" \(2248 characters\)
sed "s/^X//" >ida/aux/mkdomext.c <<'END_OF_ida/aux/mkdomext.c'
X/*
X**  MKDOMEXT -- Extend domain names
X**  Copyright (c) 1987 Lennart Lovstrand
X**  CIS Dept, Univ of Linkoping, Sweden
X**
X**  Use it, abuse it, but don't sell it.
X*/
X
X#include "useful.h"
X#include <stdio.h>
X#include <ctype.h>
X
X#ifndef lint
Xstatic char	SccsId[] = "@(#)mkdomext.c 1.5 (lel@ida.liu.se) 4/24/87";
X#endif !lint
X
Xvoid printf(), fprintf();
X
Xchar *Progname;
X
Xmain(argc, argv)
X     int argc;
X     char **argv;
X{
X    char buf[BUFSIZ];
X    char domains[BUFSIZ];
X    char *tab, *p, *index();
X
X    Progname = argv[0];
X
X    if (argc == 1) {
X	fprintf(stderr, "%s: no domains?\n", Progname);
X	exit(1);
X    }
X
X    /* collect the argument domain names */
X    domains[0] = '\0';
X    for (argc--, argv++; argc > 0; argc--, argv++) {
X	if (strlen(*argv) + 3 > sizeof(domains)) {
X	    fprintf(stderr, "%s: too many domain arguments--\n %s %s %s\n",
X		    Progname,
X		    "chain two instances of", Progname,
X		    "together or recompile with larger ``domains'' array");
X	    exit(1);
X	}
X	(void) strcat(domains, " .");
X	(void) strcat(domains, *argv);
X    }
X
X    while (gets(buf) != NULL) {
X	tab = index(buf, '\t');
X	if (tab != NULL)
X	    *tab = '\0';
X
X	for (p = index(buf, '.'); p != NULL; p = index(p + 1, '.')) {
X	    if (instring(domains, p)) {
X		for (; p != NULL; p = index(p + 1, '.')) {
X		    *p = '\0';
X		    if (tab != NULL)
X			printf("%s\t%s\n", buf, tab + 1);
X		    else
X			printf("%s\n", buf);
X		    *p = '.';
X		}
X		break;
X	    }
X	}
X	if (tab != NULL)
X	    *tab = '\t';
X	puts(buf);
X    }
X}
X
X/*
X**	INSTRING -- Returns TRUE if the source string ``s'' can be found
X**		as a substring in target string ``t''.
X*/
X
Xinstring(t, s)
X     char *t, *s;
X{
X    extern char *index();
X    register char *p;
X    register int len = strlen(s);
X
X    for (p = index(t, *s); p != NULL; p = index(p + 1, *s))
X	if (ispart(p, s, len))
X	    return TRUE;
X    return FALSE;
X}
X
X/*
X**	ISPART -- Compare at most the first n chars of two strings
X**		without respect to upper/lower case.
X*/
X
Xispart(s, t, n)
X     register char *s, *t;
X     register int n;
X{
X    for (; n > 0 && *s != '\0' && *t != '\0'; s++, t++, n--)
X	if ((isupper(*s) ? tolower(*s) : *s) !=
X	    (isupper(*t) ? tolower(*t) : *t))
X	    break;
X    return (n == 0 || *s == *t); /* really *s == 0 && *t == 0 */
X}
END_OF_ida/aux/mkdomext.c
if test 2248 -ne `wc -c <ida/aux/mkdomext.c`; then
    echo shar: \"ida/aux/mkdomext.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/aux/scanf.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/aux/scanf.c\"
else
echo shar: Extracting \"ida/aux/scanf.c\" \(1089 characters\)
sed "s/^X//" >ida/aux/scanf.c <<'END_OF_ida/aux/scanf.c'
X/*
X**  SCANF -- Program to scan & extract input lines.
X**  Copyright (c) 1987, 1988 Lennart Lovstrand
X**  CIS Dept, Univ of Linkoping, Sweden
X**
X**  Use it, abuse it, but don't sell it.
X**
X**  Very simple version 0.11 of Tue Aug 23 12:01:10 BST 1988
X*/
X
X#include "useful.h"
X#include <stdio.h>
X#include <ctype.h>
X
Xmain(argc, argv)
X    int argc;
X    char **argv;
X{
X    char buf[BUFSIZ], val[BUFSIZ];
X    FILE *input;
X    bool ignore_case = FALSE;
X
X    if (argc > 1 && strcmp(argv[1], "-i") == 0) {
X	ignore_case = TRUE;
X	argc--; argv++;
X    }
X
X    if (argc < 2 || argc > 3) {
X	fprintf(stderr, "usage: scanf [-i] scanf_pattern [file]\n");
X	exit(1);
X    }
X
X    if (ignore_case)
X	lower(argv[1]);
X
X    if (argc == 2)
X	input = stdin;
X    else {
X	input = fopen(argv[2], "r");
X	if (input == NULL) {
X	    perror(argv[2]);
X	    exit(1);
X	}
X    }
X
X    while (fgets(buf, sizeof(buf), input) != NULL) {
X	if (ignore_case)
X	    lower(buf);
X	if (sscanf(buf, argv[1], val) == 1)
X	    puts(val);
X    }
X}
X
Xlower(p)
X    register char *p;
X{
X    for (; *p != '\0'; p++)
X	if (isupper(*p))
X	    *p = tolower(*p);
X}
END_OF_ida/aux/scanf.c
if test 1089 -ne `wc -c <ida/aux/scanf.c`; then
    echo shar: \"ida/aux/scanf.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test ! -d ida/cf ; then
    echo shar: Creating directory \"ida/cf\"
    mkdir ida/cf
fi
if test -f ida/cf/Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/Makefile\"
else
echo shar: Extracting \"ida/cf/Makefile\" \(900 characters\)
sed "s/^X//" >ida/cf/Makefile <<'END_OF_ida/cf/Makefile'
X#
X#  MAKEFILE -- Configuration Files.
X#  Copyright (c) 1987 Lennart Lovstrand
X#  CIS Dept, Univ of Linkoping, Sweden
X#
X#  Use it, abuse it, but don't sell it.
X#
X#  Generic version.
X
XSITENAME=	europarc
XCONFIGS=	$(SITENAME).cf newaliases.cf
X
X#  The following definitions are inserted by ../Makefile
X#  Change them there--not here!
XLIBDIR=		/usr/lib/mail
X
Xall:		$(CONFIGS)
X
Xinstall:	$(CONFIGS)
X		cp $(SITENAME).cf /usr/lib/sendmail.cf
X		cp newaliases.cf $(LIBDIR)
X
Xdiff:
X		-diff /usr/lib/sendmail.cf $(SITENAME).cf
X
Xclean:
X		-rm -f \#* *~ *.cf
X
Xbackup:
X		tar cf Backup.tar *.m4 *.mc
X
X$(CONFIGS):	Sendmail.mc
X
Xsendmail.cf	Sendmail.cf:
X		@echo 'Based on what host/site?  Do make <host>.cf instead.'
X
Xstop:
X		-skill sendmail
X
Xrestart:	stop
X		/usr/lib/sendmail -bd -q30m
X
X.SUFFIXES:	.cf .m4
X
X.m4.cf:
X		@echo "# NOTE: This file was automatically generated from an m4 specification" >$*.cf
X		m4 $*.m4 >>$*.cf
END_OF_ida/cf/Makefile
if test 900 -ne `wc -c <ida/cf/Makefile`; then
    echo shar: \"ida/cf/Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/cf/Makefile.europarc -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/Makefile.europarc\"
else
echo shar: Extracting \"ida/cf/Makefile.europarc\" \(900 characters\)
sed "s/^X//" >ida/cf/Makefile.europarc <<'END_OF_ida/cf/Makefile.europarc'
X#
X#  MAKEFILE -- Configuration Files.
X#  Copyright (c) 1987 Lennart Lovstrand
X#  CIS Dept, Univ of Linkoping, Sweden
X#
X#  Use it, abuse it, but don't sell it.
X#
X#  Generic version.
X
XSITENAME=	europarc
XCONFIGS=	$(SITENAME).cf newaliases.cf
X
X#  The following definitions are inserted by ../Makefile
X#  Change them there--not here!
XLIBDIR=		/usr/lib/mail
X
Xall:		$(CONFIGS)
X
Xinstall:	$(CONFIGS)
X		cp $(SITENAME).cf /usr/lib/sendmail.cf
X		cp newaliases.cf $(LIBDIR)
X
Xdiff:
X		-diff /usr/lib/sendmail.cf $(SITENAME).cf
X
Xclean:
X		-rm -f \#* *~ *.cf
X
Xbackup:
X		tar cf Backup.tar *.m4 *.mc
X
X$(CONFIGS):	Sendmail.mc
X
Xsendmail.cf	Sendmail.cf:
X		@echo 'Based on what host/site?  Do make <host>.cf instead.'
X
Xstop:
X		-skill sendmail
X
Xrestart:	stop
X		/usr/lib/sendmail -bd -q30m
X
X.SUFFIXES:	.cf .m4
X
X.m4.cf:
X		@echo "# NOTE: This file was automatically generated from an m4 specification" >$*.cf
X		m4 $*.m4 >>$*.cf
END_OF_ida/cf/Makefile.europarc
if test 900 -ne `wc -c <ida/cf/Makefile.europarc`; then
    echo shar: \"ida/cf/Makefile.europarc\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/cf/Makefile.generic -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/Makefile.generic\"
else
echo shar: Extracting \"ida/cf/Makefile.generic\" \(939 characters\)
sed "s/^X//" >ida/cf/Makefile.generic <<'END_OF_ida/cf/Makefile.generic'
X#
X#  MAKEFILE -- Configuration Files.
X#  Copyright (c) 1987 Lennart Lovstrand
X#  CIS Dept, Univ of Linkoping, Sweden
X#
X#  Use it, abuse it, but don't sell it.
X#
X#  Generic version.
X
XSITENAME=	# Value of `hostname | sed 's/\..*//'` or equiv
XCONFIGS=	$(SITENAME).cf newaliases.cf
X
X#  The following definitions are inserted by ../Makefile
X#  Change them there--not here!
XLIBDIR=		/usr/lib/mail
X
Xall:		$(CONFIGS)
X
Xinstall:	$(CONFIGS)
X		cp $(SITENAME).cf /usr/lib/sendmail.cf
X		cp newaliases.cf $(LIBDIR)
X
Xdiff:
X		-diff /usr/lib/sendmail.cf $(SITENAME).cf
X
Xclean:
X		-rm -f \#* *~ *.cf
X
Xbackup:
X		tar cf Backup.tar *.m4 *.mc
X
X$(CONFIGS):	Sendmail.mc
X
Xsendmail.cf	Sendmail.cf:
X		@echo 'Based on what host/site?  Do make <host>.cf instead.'
X
Xstop:
X		-skill sendmail
X
Xrestart:	stop
X		/usr/lib/sendmail -bd -q30m
X
X.SUFFIXES:	.cf .m4
X
X.m4.cf:
X		@echo "# NOTE: This file was automatically generated from an m4 specification" >$*.cf
X		m4 $*.m4 >>$*.cf
END_OF_ida/cf/Makefile.generic
if test 939 -ne `wc -c <ida/cf/Makefile.generic`; then
    echo shar: \"ida/cf/Makefile.generic\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/cf/Makefile.ida -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/Makefile.ida\"
else
echo shar: Extracting \"ida/cf/Makefile.ida\" \(1235 characters\)
sed "s/^X//" >ida/cf/Makefile.ida <<'END_OF_ida/cf/Makefile.ida'
X#
X#  MAKEFILE -- Configuration Files.
X#  Copyright (c) 1987 Lennart Lovstrand
X#  CIS Dept, Univ of Linkoping, Sweden
X#
X#  Use it, abuse it, but don't sell it.
X#
X#  Special IDA version.
X
X
XCONFIGS=	asterix.cf client.cf majestix.cf newaliases.cf obelix.cf
X
XCLIENTS=	crabbofix lillefix miraculix portofix prefix senilix \
X		smidefix tragicomix
X
X#  The following definitions are inserted by ../Makefile
X#  Change them there--not here!
XLIBDIR=		/usr/lib/mail
X
Xall:		$(CONFIGS)
X
Xinstall:	$(CONFIGS)
X		cp majestix.cf client.cf newaliases.cf $(LIBDIR)
X		rcp asterix.cf asterix:/usr/lib/sendmail.cf
X		mail -s sendmail.cf real_lel@obelix <obelix.cf
X
Xclients:	$(CLIENTS)
X
X$(CLIENTS):
X		-rsh $@ rm /private$(LIBDIR)/sendmail.fc
X		-rcp client.cf $@:/private$(LIBDIR)/sendmail.cf
X
Xdiff:
X		-diff $(LIBDIR)/majestix.cf majestix.cf
X		-diff $(LIBDIR)/client.cf client.cf
X
Xclean:
X		-rm -f \#* *~ *.cf
X
Xbackup:
X		tar cf Backup.tar *.m4 *.mc
X
X$(CONFIGS):	Sendmail.mc
X
Xsendmail.cf	Sendmail.cf:
X		@echo 'Based on what host?  Do make <host>.cf instead.'
X
Xstop:
X		-skill sendmail
X
Xrestart:	stop
X		/usr/lib/sendmail -bd -q30m
X
X.SUFFIXES:	.cf .m4
X
X.m4.cf:
X		@echo "# NOTE: This file was automatically generated from an m4 specification" >$*.cf
X		m4 $*.m4 >>$*.cf
END_OF_ida/cf/Makefile.ida
if test 1235 -ne `wc -c <ida/cf/Makefile.ida`; then
    echo shar: \"ida/cf/Makefile.ida\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/cf/asterix.m4 -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/asterix.m4\"
else
echo shar: Extracting \"ida/cf/asterix.m4\" \(463 characters\)
sed "s/^X//" >ida/cf/asterix.m4 <<'END_OF_ida/cf/asterix.m4'
X# Sendmail configuration file for asterix.liu.se
Xdefine(ALIASES, LIBDIR/aliases)
Xdefine(DECNETXTABLE, LIBDIR/decnet/xtable)
Xdefine(DECNETNODES, LIBDIR/decnet/nodes)
Xdefine(DEFAULT_DOMAIN, liu.se)
Xdefine(DOMAINTABLE, LIBDIR/domaintable)
Xdefine(GENERICFROM, LIBDIR/generics)
Xdefine(LIUIDA)
Xdefine(MAILERTABLE, LIBDIR/mailertable)
Xdefine(PATHTABLE, LIBDIR/pathtable)
Xdefine(UUCPNODES, /usr/lib/uucp/L.sys)
Xdefine(UUCPXTABLE, LIBDIR/uucp/xtable)
Xinclude(Sendmail.mc)
END_OF_ida/cf/asterix.m4
if test 463 -ne `wc -c <ida/cf/asterix.m4`; then
    echo shar: \"ida/cf/asterix.m4\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/cf/cftest -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/cftest\"
else
echo shar: Extracting \"ida/cf/cftest\" \(264 characters\)
sed "s/^X//" >ida/cf/cftest <<'END_OF_ida/cf/cftest'
X#!/bin/sh
X#
X#	usage: cftest [sendmail_options] < test_file
X#
X#	sends the test patterns on stdin through sendmail and
X#	collects the results.
X#
X
X/usr/lib/sendmail -bt $* | awk '\
X	!/^>/ {lastline = $0} \
X	/^>/  {print lastline; print ""; print substr($0, 3, 999)}'
END_OF_ida/cf/cftest
if test 264 -ne `wc -c <ida/cf/cftest`; then
    echo shar: \"ida/cf/cftest\" unpacked with wrong size!
fi
chmod +x ida/cf/cftest
# end of overwriting check
fi
if test -f ida/cf/client.m4 -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/client.m4\"
else
echo shar: Extracting \"ida/cf/client.m4\" \(427 characters\)
sed "s/^X//" >ida/cf/client.m4 <<'END_OF_ida/cf/client.m4'
X# Sendmail configuration file for Sun-3 clients (*.liu.se)
Xdefine(ALIASES, LIBDIR/aliases)
Xdefine(DECNETXTABLE, LIBDIR/decnet/xtable)
Xdefine(DECNETNODES, LIBDIR/decnet/nodes)
Xdefine(DEFAULT_DOMAIN, liu.se)
Xdefine(DOMAINTABLE, LIBDIR/domaintable)
Xdefine(GENERICFROM, LIBDIR/generics)
Xdefine(LIUIDA)
Xdefine(PSEUDONYMS, all)
Xdefine(RELAY_HOST, majestix)
Xdefine(RELAY_MAILER, TCP)
Xdefine(RSH_SERVER, majestix)
Xinclude(Sendmail.mc)
END_OF_ida/cf/client.m4
if test 427 -ne `wc -c <ida/cf/client.m4`; then
    echo shar: \"ida/cf/client.m4\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/cf/europarc.m4 -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/europarc.m4\"
else
echo shar: Extracting \"ida/cf/europarc.m4\" \(544 characters\)
sed "s/^X//" >ida/cf/europarc.m4 <<'END_OF_ida/cf/europarc.m4'
X# Sendmail configuration file for domain EuroPARC.Xerox.COM
Xdefine(ALIASES, %mail.aliases)dnl
Xdefine(DOMAINTABLE, %mail.domaintable)dnl
Xdefine(GENERICFROM, %mail.generics)dnl
Xdefine(MAILERTABLE, LIBDIR/mailertable)dnl
Xdefine(PATHTABLE, %mail.pathtable)dnl
Xdefine(PSEUDODOMAINS, BITNET CSNET JUNET MAILNET UUCP)dnl
Xdefine(RSH_SERVER, mailhost)dnl
Xdefine(UUCPNODES, |uuname)dnl
Xdefine(XEROXGV, Xerox.COM)dnl
Xdefine(XEROXNS, XNS.EuroPARC.Xerox.COM)dnl
Xdefine(XNSDOMAIN, IP:RX)dnl
Xdefine(XNSMAIL, /usr/local/bin/xnsmail)dnl
Xinclude(Sendmail.mc)dnl
END_OF_ida/cf/europarc.m4
if test 544 -ne `wc -c <ida/cf/europarc.m4`; then
    echo shar: \"ida/cf/europarc.m4\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/cf/majestix.m4 -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/majestix.m4\"
else
echo shar: Extracting \"ida/cf/majestix.m4\" \(575 characters\)
sed "s/^X//" >ida/cf/majestix.m4 <<'END_OF_ida/cf/majestix.m4'
X# Sendmail configuration file for host majestix.liu.se
Xdefine(ALIASES, LIBDIR/aliases)
Xdefine(DECNETXTABLE, LIBDIR/decnet/xtable)
Xdefine(DECNETNODES, LIBDIR/decnet/nodes)
Xdefine(DEFAULT_DOMAIN, liu.se)
Xdefine(DOMAINTABLE, LIBDIR/domaintable)
Xdefine(GENERICFROM, LIBDIR/generics)
Xdefine(LIUIDA)
Xdefine(MAILERTABLE, LIBDIR/mailertable)
Xdefine(PATHTABLE, LIBDIR/pathtable)
Xdefine(PSEUDONYMS, ida.liu.se liuida all)
Xdefine(UUCPNAME, liuida)
Xdefine(UUCPNODES, /usr/lib/uucp/L.sys)
Xdefine(UUCPRELAYS, LIBDIR/uucp/relays)
Xdefine(UUCPXTABLE, LIBDIR/uucp/xtable)
Xinclude(Sendmail.mc)
END_OF_ida/cf/majestix.m4
if test 575 -ne `wc -c <ida/cf/majestix.m4`; then
    echo shar: \"ida/cf/majestix.m4\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/cf/newaliases.m4 -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/newaliases.m4\"
else
echo shar: Extracting \"ida/cf/newaliases.m4\" \(322 characters\)
sed "s/^X//" >ida/cf/newaliases.m4 <<'END_OF_ida/cf/newaliases.m4'
X#	General configuration file for newaliases program
X#
X#	Check that the DOMAINTABLE definition agrees with your site's setup.
X#	Note that ALIASES never, never, never should be set to a YP map here.
X#
Xdefine(ALIASES, LIBDIR/aliases)dnl
Xdefine(DOMAINTABLE, %mail.domaintable)dnl
Xdefine(NEWALIASES)dnl
Xinclude(Sendmail.mc)dnl
END_OF_ida/cf/newaliases.m4
if test 322 -ne `wc -c <ida/cf/newaliases.m4`; then
    echo shar: \"ida/cf/newaliases.m4\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/cf/obelix.m4 -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/obelix.m4\"
else
echo shar: Extracting \"ida/cf/obelix.m4\" \(320 characters\)
sed "s/^X//" >ida/cf/obelix.m4 <<'END_OF_ida/cf/obelix.m4'
X# Sendmail configuration file for host obelix.UUCP
Xdefine(ALIASES, LIBDIR/aliases)
Xdefine(BSD29)
Xdefine(DEFAULT_DOMAIN, liu.se)
Xdefine(RELAY_HOST, asterix)
Xdefine(RELAY_MAILER, UUCP-B)
Xdefine(PSEUDONYMS, obelix.UUCP obelix.liu.se obelix.liu obelix.ida.liu.se)
Xdefine(UUCPNODES, /usr/lib/uucp/L.sys)
Xinclude(Sendmail.mc)
END_OF_ida/cf/obelix.m4
if test 320 -ne `wc -c <ida/cf/obelix.m4`; then
    echo shar: \"ida/cf/obelix.m4\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/cf/tests -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/cf/tests\"
else
echo shar: Extracting \"ida/cf/tests\" \(98 characters\)
sed "s/^X//" >ida/cf/tests <<'END_OF_ida/cf/tests'
X3,19 a!b
X3,19 a!b!c
X3,19 a!b@c
X3,19 a!b%c@d
X3,19 a!b%c%d
X3,19 a!b%c@d.d
X3,19 a!b%c.c@d.d
X3,19 a@b
END_OF_ida/cf/tests
if test 98 -ne `wc -c <ida/cf/tests`; then
    echo shar: \"ida/cf/tests\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test ! -d ida/doc ; then
    echo shar: Creating directory \"ida/doc\"
    mkdir ida/doc
fi
if test -f ida/doc/Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/doc/Makefile\"
else
echo shar: Extracting \"ida/doc/Makefile\" \(996 characters\)
sed "s/^X//" >ida/doc/Makefile <<'END_OF_ida/doc/Makefile'
X#
X#  MAKEFILE -- The Documentation Files.
X#  Copyright (c) 1987 Lennart Lovstrand
X#  CIS Dept, Univ of Linkoping, Sweden
X#
X#  Use it, abuse it, but don't sell it.
X#
X
XMAN1S=		dbm.1 mkdomext.1
XMAN8S=		xalparse.8
XMANS=		$(MAN1S) $(MAN8S)
XDOC=		paper.ms
XDOCS=		part1.ms part2.ms
X
X#  The following definitions are inserted by ../Makefile
X#  Change them there--not here!
XMAN8DIR=	/usr/man/manl
XMAN8EXT=	.l
XMAN1DIR=	/usr/man/manl
XMAN1EXT=	.l
XTROFF=		pstroff
X
Xdoc:		$(DOC)
X		refer -e -l,2 -s $(DOC) | tbl | $(TROFF) -ms
X
Xdoc.lpr:	$(DOC)
X		refer -e -l,2 -s $(DOC) | tbl | nroff -ms > $@
X
Xman:		$(MANS)
X		for m in $(MANS); do \
X			$(TROFF) -man $$m; \
X		done
X
Xman.lpr:	$(MANS)
X		for m in $(MANS); do \
X			nroff -man $$m > $$m.lpr; \
X		done
X
X$(DOC):
X		cat $(DOCS) >$(DOC)
X		-rm -f $(DOCS)
X
Xinstall:	$(MANS)
X		for m in $(MAN1S); do \
X			cp $$m $(MAN1DIR)/`basename $$m .1`$(MAN1EXT); \
X		done
X		for m in $(MAN8S); do \
X			cp $$m $(MAN8DIR)/`basename $$m .8`$(MAN8EXT); \
X		done
X
Xclean:
X		-rm -f \#* *~ *.lpr
END_OF_ida/doc/Makefile
if test 996 -ne `wc -c <ida/doc/Makefile`; then
    echo shar: \"ida/doc/Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/doc/cover.tr -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/doc/cover.tr\"
else
echo shar: Extracting \"ida/doc/cover.tr\" \(227 characters\)
sed "s/^X//" >ida/doc/cover.tr <<'END_OF_ida/doc/cover.tr'
X.fp 1 R
X.fp 2 I
X.fp 3 B
X.fp 4 S
X.nf
X.vs 0.3i
X.sv 2.47i
X.ce 100
X.ps 18
X.ft 2
XExamensarbete
X.sp
X.ft 3
XElectronic Mail Addressing
Xin Theory and Practice
X.ft 1
X.sp
X.ps 14
XLennart L\(o:vstrand
X.sp
X.ps 12
XLiTH-IDA-Ex-8715
X1987-05-27
END_OF_ida/doc/cover.tr
if test 227 -ne `wc -c <ida/doc/cover.tr`; then
    echo shar: \"ida/doc/cover.tr\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/doc/mkdomext.1 -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/doc/mkdomext.1\"
else
echo shar: Extracting \"ida/doc/mkdomext.1\" \(1613 characters\)
sed "s/^X//" >ida/doc/mkdomext.1 <<'END_OF_ida/doc/mkdomext.1'
X.TH MKDOMEXT 1 "24 April 1987"				\" -*- nroff -*-
X.SH NAME
Xmkdomext \- make the exteneded set of domain names
X.SH SYNOPSIS
X.B mkdomext
X.IR domain " [\|.\|.\|.\|]"
X.SH DESCRIPTION
XThis program acts as a filter that, when supplied with fully qualified
Xdomain names on stdin, will generate all legal abbreviations of these on
Xstdout with respect to the parent domains given on the command line.  It
Xis used to be able to recognize unqualified local subdomains and sibling
Xdomains from one or more positions in the domain hierarchy.
X.PP
XThe fully qualified domains on stdin should be given one on a line, each
Xterminated by a newline or tab.  Any text after the tab will go through
Xuntouched.  This makes it especially useful for filtering the output of
Xthe
X.IR dbm (1)
X.B parse
Xfunction when producing a domain name server table.
X.SH EXAMPLE
X.nf
X.ta \w'majestix.liu.se'u+5n
X% cat >foo
Xmajestix.liu.se	majestix.liu.se
Xobelix.liu.se	obelix.liu.se
Xobelix.\s-1UUCP\s+1	obelix.liu.se
Xaida.uu.se	aida.uu.se
Xmc.lcs.mit.edu	mc.lcs.mit.edu
Xmit-mc	mc.lcs.mit.edu
X^D
X% mkdomext liu.se \s-1UUCP\s+1 <foo >bar
X% cat bar
Xmajestix	majestix.liu.se
Xmajestix.liu	majestix.liu.se
Xmajestix.liu.se	majestix.liu.se
Xobelix	obelix.liu.se
Xobelix.liu	obelix.liu.se
Xobelix.liu.se	obelix.liu.se
Xobelix	obelix.liu.se
Xobelix.\s-1UUCP\s+1	obelix.liu.se
Xaida.uu	aida.uu.se
Xaida.uu.se	aida.uu.se
Xmc.lcs.mit.edu	mc.lcs.mit.edu
Xmit-mc	mc.lcs.mit.edu
X.SH AUTHOR
X.nf
XLennart Lovstrand <lel@ida.liu.se>
XCIS Dept, Univ of Linkoping, Sweden
X.fi
X.SH "SEE ALSO"
X.IR dbm (1)
X.br
XRFC822\-Standard for the Format of ARPA Internet Text Messages
X(section 6.2.2)
END_OF_ida/doc/mkdomext.1
if test 1613 -ne `wc -c <ida/doc/mkdomext.1`; then
    echo shar: \"ida/doc/mkdomext.1\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/doc/xalparse.8 -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/doc/xalparse.8\"
else
echo shar: Extracting \"ida/doc/xalparse.8\" \(1604 characters\)
sed "s/^X//" >ida/doc/xalparse.8 <<'END_OF_ida/doc/xalparse.8'
X.TH XALPARSE 8 "24 April 1987"				\" -*- nroff -*-
X.SH NAME
Xxalparse \- parse an extended aliases file
X.SH SYNOPSIS
X.B xalparse
X.I xaliases aliases generics
X.SH DESCRIPTION
XThe
X.I xalparse
Xprogram parses an extended aliases file and produceces an ordinary
Xaliases file together with a file with generic address translations.
X.PP
XThe format of the xaliases file is a superset of
X.IR aliases (5):
X.RS
Xalias, alias, \|.\|.\|.\|: prefix address, prefix address, \|.\|.\|.\|
X.RE
XIt differes by allowing more than one LHS alias and by adding an
Xoptional
X.I prefix
Xin front of each RHS address.  The
X.I prefix
Xmarks the address as either inbound or outbound according to the
Xfollowing table:
X.RS
X.nf
X.ta \w'(\fIno mark\fP)'u+5n
X(\fIno mark\fP)	Inbound
X<	Outbound
X>	Inbound
X<>	Both Inbound and Outbound
X.fi
X.RE
X.PP
XInbound aliasing is the normal function implemented by
X.IR aliases (5).
XAll inbound entries are therefore simply copied to the
X.I aliases
Xoutput file.  Outbound addresses are written to the
X.I generics
Xfile in a format suitable for parsing by
X.I dbm (1).
XEach line will consist of the first LHS
X.I alias
Xof the entry followed by the outbound addresses separated with spaces.
XThe
X.I generics
Xfile is then normally loaded into a
X.IR dbm (3)
Xdatabase that is read by
X.IR sendmail (8)
Xand used to substitute header sender addresses with the aliased name.
X.SH AUTHOR
X.nf
XLennart Lovstrand <lel@ida.liu.se>
XCIS Dept, Univ of Linkoping, Sweden
X.fi
X.SH "SEE ALSO"
X.IR dbm (1),
X.IR aliases (5),
X.IR sendmail (8)
X.br
XElectronic Mail Addressing in Theory and Practice with The IDA Sendmail
XEnchancement Kit.
END_OF_ida/doc/xalparse.8
if test 1604 -ne `wc -c <ida/doc/xalparse.8`; then
    echo shar: \"ida/doc/xalparse.8\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test ! -d ida/lib ; then
    echo shar: Creating directory \"ida/lib\"
    mkdir ida/lib
fi
if test -f ida/lib/Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/Makefile\"
else
echo shar: Extracting \"ida/lib/Makefile\" \(1974 characters\)
sed "s/^X//" >ida/lib/Makefile <<'END_OF_ida/lib/Makefile'
X#
X#  MAKEFILE -- Library Files.
X#  Copyright (c) 1987, 1988 Lennart Lovstrand
X#  CIS Dept, Univ of Linkoping, Sweden
X#
X#  Use it, abuse it, but don't sell it.
X#
X#  EuroPARC version without DECnet.
X#  Remove those files from TABLES that you aren't using.
X
X
XLOCALDOMAINS=	EuroPARC.Xerox.COM UUCP		# only if domaintable is used
XPATHFLAGS=	-C25 -i -lEuroNet
XSENDMAIL=	/usr/lib/sendmail
XSKILL=		/usr/local/bin/skill		# not required
XTABLES=		$(YP)domaintable$(DBMDIREXT) $(YP)generics$(DBMDIREXT) \
X		$(YP)pathtable$(DBMDIREXT) $(YP)aliases$(DBMDIREXT)
X#		mailertable$(DBMDIREXT) uucp/xtable$(DBMDIREXT)
XUUCPNODES=	/usr/lib/uucp/L.sys
X# Prefix for YP dbm files; remove this if you won't be using YP databases
XYP=		/etc/yp/europarc/mail.
X
X
X#  The following definitions are inserted by ../Makefile
X#  Change them there--not here!
XDBMDIREXT=	.dir
XDBMPAGEXT=	.pag
X
X
X#  Update all dbm tables
Xall:	$(TABLES)
X
Xaliases generics:	xaliases
X	xalparse xaliases aliases generics
X
X$(YP)aliases$(DBMDIREXT):	aliases newaliases.cf $(YP)domaintable$(DBMDIREXT)
X	$(SENDMAIL) -Cnewaliases.cf -bi
X	if [ -n "$(YP)" ]; then \
X		mv aliases.dir $(YP)aliases.dir; \
X		mv aliases.pag $(YP)aliases.pag; \
X	fi
X
X$(YP)generics$(DBMDIREXT):	generics
X	dbm -L make generics $(YP)generics
X
X$(YP)domaintable$(DBMDIREXT):	domaintable
X	if [ -n "$(LOCALDOMAINS)" ]; then \
X		dbm parse domaintable | mkdomext $(LOCALDOMAINS) |\
X			dbm -IL load $(YP)domaintable; \
X	else \
X		dbm parse domaintable | dbm -IL load $(YP)domaintable; \
X	fi
X
X$(YP)pathtable$(DBMDIREXT):	pathtable
X	pathalias $(PATHFLAGS) pathtable | dbm load $(YP)pathtable
X
Xmailertable$(DBMDIREXT):	mailertable
X	dbm -L make mailertable mailertable
X
Xuucp/xtable$(DBMDIREXT):	uucp/xtable $(UUCPNODES)
X	(dbm parse uucp/xtable; \
X	 awk '{printf "%s.UUCP\t%s\n", $$1, $$1}' $(UUCPNODES)) | \
X	 dbm -IL load uucp/xtable
X
Xstop:
X	-$(SKILL) sendmail
X
Xrestart:	stop
X	$(SENDMAIL) -bd -q30m
X
Xclean:
X	-rm -f \#* *~ *.dir *.pag *.map *.dat */*.dir */*.pag */*.map */*.dat
END_OF_ida/lib/Makefile
if test 1974 -ne `wc -c <ida/lib/Makefile`; then
    echo shar: \"ida/lib/Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/lib/Makefile.europarc -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/Makefile.europarc\"
else
echo shar: Extracting \"ida/lib/Makefile.europarc\" \(1974 characters\)
sed "s/^X//" >ida/lib/Makefile.europarc <<'END_OF_ida/lib/Makefile.europarc'
X#
X#  MAKEFILE -- Library Files.
X#  Copyright (c) 1987, 1988 Lennart Lovstrand
X#  CIS Dept, Univ of Linkoping, Sweden
X#
X#  Use it, abuse it, but don't sell it.
X#
X#  EuroPARC version without DECnet.
X#  Remove those files from TABLES that you aren't using.
X
X
XLOCALDOMAINS=	EuroPARC.Xerox.COM UUCP		# only if domaintable is used
XPATHFLAGS=	-C25 -i -lEuroNet
XSENDMAIL=	/usr/lib/sendmail
XSKILL=		/usr/local/bin/skill		# not required
XTABLES=		$(YP)domaintable$(DBMDIREXT) $(YP)generics$(DBMDIREXT) \
X		$(YP)pathtable$(DBMDIREXT) $(YP)aliases$(DBMDIREXT)
X#		mailertable$(DBMDIREXT) uucp/xtable$(DBMDIREXT)
XUUCPNODES=	/usr/lib/uucp/L.sys
X# Prefix for YP dbm files; remove this if you won't be using YP databases
XYP=		/etc/yp/europarc/mail.
X
X
X#  The following definitions are inserted by ../Makefile
X#  Change them there--not here!
XDBMDIREXT=	.dir
XDBMPAGEXT=	.pag
X
X
X#  Update all dbm tables
Xall:	$(TABLES)
X
Xaliases generics:	xaliases
X	xalparse xaliases aliases generics
X
X$(YP)aliases$(DBMDIREXT):	aliases newaliases.cf $(YP)domaintable$(DBMDIREXT)
X	$(SENDMAIL) -Cnewaliases.cf -bi
X	if [ -n "$(YP)" ]; then \
X		mv aliases.dir $(YP)aliases.dir; \
X		mv aliases.pag $(YP)aliases.pag; \
X	fi
X
X$(YP)generics$(DBMDIREXT):	generics
X	dbm -L make generics $(YP)generics
X
X$(YP)domaintable$(DBMDIREXT):	domaintable
X	if [ -n "$(LOCALDOMAINS)" ]; then \
X		dbm parse domaintable | mkdomext $(LOCALDOMAINS) |\
X			dbm -IL load $(YP)domaintable; \
X	else \
X		dbm parse domaintable | dbm -IL load $(YP)domaintable; \
X	fi
X
X$(YP)pathtable$(DBMDIREXT):	pathtable
X	pathalias $(PATHFLAGS) pathtable | dbm load $(YP)pathtable
X
Xmailertable$(DBMDIREXT):	mailertable
X	dbm -L make mailertable mailertable
X
Xuucp/xtable$(DBMDIREXT):	uucp/xtable $(UUCPNODES)
X	(dbm parse uucp/xtable; \
X	 awk '{printf "%s.UUCP\t%s\n", $$1, $$1}' $(UUCPNODES)) | \
X	 dbm -IL load uucp/xtable
X
Xstop:
X	-$(SKILL) sendmail
X
Xrestart:	stop
X	$(SENDMAIL) -bd -q30m
X
Xclean:
X	-rm -f \#* *~ *.dir *.pag *.map *.dat */*.dir */*.pag */*.map */*.dat
END_OF_ida/lib/Makefile.europarc
if test 1974 -ne `wc -c <ida/lib/Makefile.europarc`; then
    echo shar: \"ida/lib/Makefile.europarc\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/lib/Makefile.generic -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/Makefile.generic\"
else
echo shar: Extracting \"ida/lib/Makefile.generic\" \(1968 characters\)
sed "s/^X//" >ida/lib/Makefile.generic <<'END_OF_ida/lib/Makefile.generic'
X#
X#  MAKEFILE -- Library Files.
X#  Copyright (c) 1987, 1988 Lennart Lovstrand
X#  CIS Dept, Univ of Linkoping, Sweden
X#
X#  Use it, abuse it, but don't sell it.
X#
X#  Generic version without DECnet.
X#  Remove those files from TABLES that you aren't using.
X
X
XLOCALDOMAINS=	#ida.liu.se UUCP		# only if domaintable is used
XPATHFLAGS=	-C25 -i #-lIDA-TCP-NET
XSENDMAIL=	/usr/lib/sendmail
XSKILL=		/usr/local/bin/skill		# not required
XTABLES=		$(YP)domaintable$(DBMDIREXT) $(YP)generics$(DBMDIREXT) \
X		$(YP)pathtable$(DBMDIREXT) $(YP)aliases$(DBMDIREXT) \
X		mailertable$(DBMDIREXT) uucp/xtable$(DBMDIREXT)
XUUCPNODES=	/usr/lib/uucp/L.sys
X# Prefix for YP dbm files; remove this if you won't be using YP databases
XYP=		#/etc/yp/ida/mail.
X
X
X#  The following definitions are inserted by ../Makefile
X#  Change them there--not here!
XDBMDIREXT=	.dir
XDBMPAGEXT=	.pag
X
X
X#  Update all dbm tables
Xall:	$(TABLES)
X
Xaliases generics:	xaliases
X	xalparse xaliases aliases generics
X
X$(YP)aliases$(DBMDIREXT):	aliases newaliases.cf $(YP)domaintable$(DBMDIREXT)
X	$(SENDMAIL) -Cnewaliases.cf -bi
X	if [ -n "$(YP)" ]; then \
X		mv aliases.dir $(YP)aliases.dir; \
X		mv aliases.pag $(YP)aliases.pag; \
X	fi
X
X$(YP)generics$(DBMDIREXT):	generics
X	dbm -L make generics $(YP)generics
X
X$(YP)domaintable$(DBMDIREXT):	domaintable
X	if [ -n "$(LOCALDOMAINS)" ]; then \
X		dbm parse domaintable | mkdomext $(LOCALDOMAINS) |\
X			dbm -IL load $(YP)domaintable; \
X	else \
X		dbm parse domaintable | dbm -IL load $(YP)domaintable; \
X	fi
X
X$(YP)pathtable$(DBMDIREXT):	pathtable
X	pathalias $(PATHFLAGS) pathtable | dbm load $(YP)pathtable
X
Xmailertable$(DBMDIREXT):	mailertable
X	dbm -L make mailertable mailertable
X
Xuucp/xtable$(DBMDIREXT):	uucp/xtable $(UUCPNODES)
X	(dbm parse uucp/xtable; \
X	 awk '{printf "%s.UUCP\t%s\n", $$1, $$1}' $(UUCPNODES)) | \
X	 dbm -IL load uucp/xtable
X
Xstop:
X	-$(SKILL) sendmail
X
Xrestart:	stop
X	$(SENDMAIL) -bd -q30m
X
Xclean:
X	-rm -f \#* *~ *.dir *.pag *.map *.dat */*.dir */*.pag */*.map */*.dat
END_OF_ida/lib/Makefile.generic
if test 1968 -ne `wc -c <ida/lib/Makefile.generic`; then
    echo shar: \"ida/lib/Makefile.generic\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test ! -d ida/lib/decnet ; then
    echo shar: Creating directory \"ida/lib/decnet\"
    mkdir ida/lib/decnet
fi
if test -f ida/lib/decnet/nodes -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/decnet/nodes\"
else
echo shar: Extracting \"ida/lib/decnet/nodes\" \(1248 characters\)
sed "s/^X//" >ida/lib/decnet/nodes <<'END_OF_ida/lib/decnet/nodes'
Xliuida
Xlisbet
Xlaura
Xbill
Xbull
Xtrisse
Xfrasse
Xmurre
Xfille
Xbilbo
Xfrodo
Xelrond
Xgollum
Xolds
Xchevy
Xkafka
Xrolls
Xniva
Xvaz
Xlinnea
Xlinus
Xlina
Xelinor
Xp13l00
Xviktor
Xludvig
Xhazel
Xbigwig
Xkloker
Xtoker
Xclover
Xfiver
Xdaisy
Xaladin
Xturtle
Xminmin
Xjinjin
Xweiwei
Xfelix
Xflinta
Xflisa
Xfrida
Xfilip
Xfilipb
Xfenix
Xfrank
Xdec
Xrtr13a
Xmoll
Xdur
Xnfr
Xelin
Xelsy
Xelmer
Xromeo
Xvaxkab
Xkleo
Xklas
Xkicki
Xvera
Xkaron
Xpallas
Xfreja
Xelvira
Xsi
Xrtr08a
Xidun
Xbrage
Xbackus
Xnoatun
Xnjord
Xskade
Xgotl
Xmeta
Xpara
Xthermo
Xhelios
Xoseen
Xksab
Xkthttt
Xevild
Xelinda
Xelise
Xella
Xelton
Xelena
Xelke
Xelsa
Xeliza
Xornen
Xknoen
Xffacom
Xafivax
Xa08001
Xplasma
Xplasm1
Xvanb
Xvana
Xmcg
Xvanc
Xbasun
Xpsypdp
Xpsyvax
Xutb1
Xutb2
Xbiovax
Xostvax
Xtpsyk
Xargus
Xrtm
Xostpdp
Xlvax
Xmanwe
Xskogis
Xfjarr
Xrtr09a
Xmalin
Xtekla
Xcartus
Xpelle
Xpictor
Xtlu
Xmax
Xkvax1
Xkvax2
Xsigurd
Xescil
Xgwax1
Xgwax2
Xkemist
Xcell
Xminc
Xsilver
Xlapse
Xmaja
Xrtr18a
Ximunis
Xxray
Xgraph
Ximmuna
Xbmc1
Xfarfar
Xeva
Xnimbus
Xlaban
Xpax
Xtersx
Xapele1
Xtekn01
Xinfth1
Xtherm1
Xorgch1
Xfyvax1
Xfyvax2
Xelsys
Xcontrl
Xmeddat
Xsostel
Xfyvax3
Xcthmga
Xrtr31a
Xinfth2
Xinfth3
Xinfth4
Xkstad
Xlnkarl
Xedbild
Xsmtgbg
Xgotmed
Xvega
Xkcvax
Xsirius
Xgemini
Xadam
Xcastor
Xpollux
Xrigel
Xpandor
Xikaros
Xjanus
Xperdix
Xpan
Xshanno
Xbutter
Xerlang
Xpluto
Xagaton
Xbode
Xemma
Xshiva
Xegino
Xsamson
Xtyche
Xgarbo
Xalice
Xmira
Xp46xje
Xp46ldc
Xrtr46a
Xp46ibm
Xp46vm1
Xvaxi
Xvaxii
END_OF_ida/lib/decnet/nodes
if test 1248 -ne `wc -c <ida/lib/decnet/nodes`; then
    echo shar: \"ida/lib/decnet/nodes\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/lib/decnet/xtable -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/decnet/xtable\"
else
echo shar: Extracting \"ida/lib/decnet/xtable\" \(1613 characters\)
sed "s/^X//" >ida/lib/decnet/xtable <<'END_OF_ida/lib/decnet/xtable'
X#
X#	DECnet domain translation table v1.0
X#	Last edited by lel@ida.liu.se Mon Apr 20 21:42:58 MET DST 1987
X#
X#	This file contiains the official domain name for nodes
X#	either on the locally connected DECnet or on the national
X#	SUNET.
X#
X#	Each line should contain the node's name within the DECnet
X#	followed by it's full official domain name.  The domain name
X#	may be followed by other names by which the node should be
X#	recognized, eg. when nodes are present in multiple domains.
X#
X#	Nodes not represented here but present in the decnet/nodes file
X#	are assumed to be contained in the SUNET.SE domain.
X#
X
Xagaton		agaton.lu.se
Xaida		aida.uu.se
Xaladin		aladin.liu.se
Xbmc1		bmc1.uu.se
Xcarmen		carmen.uu.se
Xcartus		cartus.uu.se
Xcell		cell.uu.se
Xclover		clover.liu.se
Xdaisy		daisy.liu.se
Xelinor		elinor.liu.se
Xescil		escil.uu.se
Xeva		eva.uu.se
Xfarfar		farfar.uu.se
Xfreja		freja.qz.se
Xgraph		graph.uu.se
Xgwax1		gwax1.uu.se
Xgwax2		gwax2.uu.se
Xhazel		hazel.liu.se
Ximmuna		immuna.uu.se
Ximunis		imunis.uu.se
Xjinjin		jinjin.liu.se
Xkemist		kemist.uu.se
Xkvax1		kvax1.uu.se
Xkvax2		kvax2.uu.se
Xlaban		laban.uu.se
Xlapse		lapse.uu.se
Xlina		lina.liu.se
Xlinnea		linnea.liu.se
Xlinus		linus.liu.se
Xlisbet		lisbet.liu.se
Xludvig		ludvig.liu.se
Xmaja		maja.uu.se
Xmalin		malin.uu.se
Xmax		max.uu.se
Xminc		minc.uu.se
Xminmin		minmin.liu.se
Xnimbus		nimbus.uu.se
Xp13l00		p13l00.liu.se
Xpandor		pandor.lu.se
Xpax		pax.uu.se
Xpelle		pelle.uu.se
Xpictor		pictor.uu.se
Xrtr18a		rtr18a.uu.se
Xsigurd		sigurd.uu.se
Xsilver		silver.uu.se
Xtekla		tekla.uu.se
Xtlu		tlu.uu.se
Xturtle		turtle.liu.se
Xviktor		viktor.liu.se
Xweiwei		weiwei.liu.se
Xxray		xray.uu.se
END_OF_ida/lib/decnet/xtable
if test 1613 -ne `wc -c <ida/lib/decnet/xtable`; then
    echo shar: \"ida/lib/decnet/xtable\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/lib/mailertable -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/mailertable\"
else
echo shar: Extracting \"ida/lib/mailertable\" \(650 characters\)
sed "s/^X//" >ida/lib/mailertable <<'END_OF_ida/lib/mailertable'
X#
X#	Mailer table for physical node majestix.liu.se
X#	(aka the UUCP node liuida)
X#
X#	Format is <mailer>:<hostname> <official-name-1> ... <official-name-n>
X#	where mail sent to users on each of the <official-names> will
X#	be forced to invoke the specified mailer and sent to the
X#	specified host, which should be in a format that the mailer will
X#	understand.
X
XUUCP:alp	alp.UUCP	alp.se
XUUCP:liutde	liutde.UUCP	liutde.se	tde.liu.se
XUUCP:prosys	prosys.UUCP	prosys.se
XUUCP-A:enea	enea.UUCP	enea.se
XUUCP-A:erilin	erilin.UUCP	erilin.se	erilin.ericsson.se
XUUCP-A:erix	erix.UUCP	erix.se		erix.ericsson.se
XUUCP-A:rainier	rainier.UUCP	rainier.se	rainier.liu.se
END_OF_ida/lib/mailertable
if test 650 -ne `wc -c <ida/lib/mailertable`; then
    echo shar: \"ida/lib/mailertable\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/lib/restart_clients -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/restart_clients\"
else
echo shar: Extracting \"ida/lib/restart_clients\" \(202 characters\)
sed "s/^X//" >ida/lib/restart_clients <<'END_OF_ida/lib/restart_clients'
X#!/bin/sh
X#		restart sendmail on all clients
X#
X
Xfor h in crabbofix lillefix miraculix portofix prefix senilix smidefix tragicomix; do
X  echo -n "$h "
X  rsh $h -n "(cd /usr/lib/mail; make restart)"
Xdone
END_OF_ida/lib/restart_clients
if test 202 -ne `wc -c <ida/lib/restart_clients`; then
    echo shar: \"ida/lib/restart_clients\" unpacked with wrong size!
fi
chmod +x ida/lib/restart_clients
# end of overwriting check
fi
if test -f ida/lib/sendmail.hf -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/sendmail.hf\"
else
echo shar: Extracting \"ida/lib/sendmail.hf\" \(1858 characters\)
sed "s/^X//" >ida/lib/sendmail.hf <<'END_OF_ida/lib/sendmail.hf'
X@(#)	sendmail.hf	4.2	6/7/85
Xcpyr	
Xcpyr	Sendmail
Xcpyr	Copyright (c) 1983  Eric P. Allman
Xcpyr	Berkeley, California
Xcpyr	
Xcpyr	Copyright (c) 1983 Regents of the University of California.
Xcpyr	All rights reserved.  The Berkeley software License Agreement
Xcpyr	specifies the terms and conditions for redistribution.
Xcpyr	
Xcpyr	@(#)sendmail.hf	4.2 (Berkeley) 6/7/85
Xcpyr	
Xsmtp	Commands:
Xsmtp		HELO	MAIL	RCPT	DATA	RSET
Xsmtp		NOOP	QUIT	HELP	VRFY	EXPN
Xsmtp	For more info use "HELP <topic>".
Xsmtp	To report bugs in the implementation contact eric@Berkeley.ARPA
Xsmtp	or eric@UCB-ARPA.ARPA.
Xsmtp	For local information contact postmaster at this site.
Xhelp	HELP [ <topic> ]
Xhelp		The HELP command gives help info.
Xhelo	HELO <hostname>
Xhelo		Introduce yourself.  I am a boor, so I really don't
Xhelo		care if you do.
Xmail	MAIL FROM: <sender>
Xmail		Specifies the sender.
Xrcpt	RCPT TO: <recipient>
Xrcpt		Specifies the recipient.  Can be used any number of times.
Xdata	DATA
Xdata		Following text is collected as the message.
Xdata		End with a single dot.
Xrset	RSET
Xrset		Resets the system.
Xquit	QUIT
Xquit		Exit sendmail (SMTP).
Xvrfy	VRFY <recipient>
Xvrfy		Not implemented to protocol.  Gives some sexy
Xvrfy		information.
Xexpn	EXPN <recipient>
Xexpn		Same as VRFY in this implementation.
Xnoop	NOOP
Xnoop		Do nothing.
Xsend	SEND FROM: <sender>
Xsend		replaces the MAIL command, and can be used to send
Xsend		directly to a users terminal.  Not supported in this
Xsend		implementation.
Xsoml	SOML FROM: <sender>
Xsoml		Send or mail.  If the user is logged in, send directly,
Xsoml		otherwise mail.  Not supported in this implementation.
Xsaml	SAML FROM: <sender>
Xsaml		Send and mail.  Send directly to the user's terminal,
Xsaml		and also mail a letter.  Not supported in this
Xsaml		implementation.
Xturn	TURN
Xturn		Reverses the direction of the connection.  Not currently
Xturn		implemented.
END_OF_ida/lib/sendmail.hf
if test 1858 -ne `wc -c <ida/lib/sendmail.hf`; then
    echo shar: \"ida/lib/sendmail.hf\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/lib/sendmail.st -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/sendmail.st\"
else
echo shar: Extracting \"ida/lib/sendmail.st\" \(0 character\)
sed "s/^X//" >ida/lib/sendmail.st <<'END_OF_ida/lib/sendmail.st'
END_OF_ida/lib/sendmail.st
if test 0 -ne `wc -c <ida/lib/sendmail.st`; then
    echo shar: \"ida/lib/sendmail.st\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/lib/stop_clients -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/stop_clients\"
else
echo shar: Extracting \"ida/lib/stop_clients\" \(196 characters\)
sed "s/^X//" >ida/lib/stop_clients <<'END_OF_ida/lib/stop_clients'
X#!/bin/sh
X#		stop sendmail on all clients
X#
X
Xfor h in crabbofix lillefix miraculix portofix prefix senilix smidefix tragicomix; do
X  echo -n "$h "
X  rsh $h -n "(cd /usr/lib/mail; make stop)"
Xdone
END_OF_ida/lib/stop_clients
if test 196 -ne `wc -c <ida/lib/stop_clients`; then
    echo shar: \"ida/lib/stop_clients\" unpacked with wrong size!
fi
chmod +x ida/lib/stop_clients
# end of overwriting check
fi
if test ! -d ida/lib/uucp ; then
    echo shar: Creating directory \"ida/lib/uucp\"
    mkdir ida/lib/uucp
fi
if test -f ida/lib/uucp/relays -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/uucp/relays\"
else
echo shar: Extracting \"ida/lib/uucp/relays\" \(548 characters\)
sed "s/^X//" >ida/lib/uucp/relays <<'END_OF_ida/lib/uucp/relays'
Xakgua.UUCP
Xalberta.UUCP
Xbellcore.UUCP
Xburl.UUCP
Xcbosgd.UUCP
Xcernvax.UUCP
Xclyde.UUCP
Xcmcl2.UUCP
Xcuae2.UUCP
Xdecvax.UUCP
Xdecwrl.UUCP
Xdiku.UUCP
Xdrillsys.UUCP
Xenea.UUCP
Xenea.se
Xgatech.UUCP
Xglacier.UUCP
Xhao.UUCP
Xhplabs.UUCP
Xi2unix.UUCP
Xihnp4.UUCP
Xinria.UUCP
Xkddlab.UUCP
Xlll-crg.UUCP
Xlll-lcc.UUCP
Xmcnc.UUCP
Xmcvax.UUCP
Xmcvax.cwi.nl
Xmunnari.UUCP
Xoliveb.UUCP
Xpenet.UUCP
Xphilabs.UUCP
Xprlb2.UUCP
Xqantel.UUCP
Xsdcrdcf.UUCP
Xsdcsvax.UUCP
Xseismo.UUCP
Xtektronix.UUCP
Xubc-vision.UUCP
Xukc.UUCP
Xulysses.UUCP
Xunido.UUCP
Xutzoo.UUCP
Xuw-beaver.UUCP
Xvmars.UUCP
Xwatmath.UUCP
END_OF_ida/lib/uucp/relays
if test 548 -ne `wc -c <ida/lib/uucp/relays`; then
    echo shar: \"ida/lib/uucp/relays\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/lib/uucp/xtable -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/lib/uucp/xtable\"
else
echo shar: Extracting \"ida/lib/uucp/xtable\" \(672 characters\)
sed "s/^X//" >ida/lib/uucp/xtable <<'END_OF_ida/lib/uucp/xtable'
X#
X#	Translation table between domain addresses and
X#	flat-spaced UUCP node names.
X#
X#	This table is used when formatting addresses for
X#	delivery overold-fashioned UUCP links.  Batched SMTP
X#	over UUCP does not use this table, since it is assumed
X#	that (B)SMTP nodes already know about domain names.
X#
X#	It is never necessary to enter a translation from "foo.UUCP"
X#	to "foo", since that already (automatically) is done by
X#	ruleset 14.
X#
X
Xalp		alp.se
Xemil		emil.uu.se
Xenea		enea.se
Xerilin		erilin.ericsson.se
Xerix		erix.ericsson.se
Xkuling		kuling.uu.se
Xliuida		ida.liu.se
Xliutde		tde.liu.se
Xmcvax		mcvax.cwi.nl
Xnumax		numax.uu.se
Xobelix		obelix.liu.se
Xprosys		prosys.se
END_OF_ida/lib/uucp/xtable
if test 672 -ne `wc -c <ida/lib/uucp/xtable`; then
    echo shar: \"ida/lib/uucp/xtable\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test ! -d ida/patches ; then
    echo shar: Creating directory \"ida/patches\"
    mkdir ida/patches
fi
if test -f ida/patches/MDBM.edit -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/patches/MDBM.edit\"
else
echo shar: Extracting \"ida/patches/MDBM.edit\" \(171 characters\)
sed "s/^X//" >ida/patches/MDBM.edit <<'END_OF_ida/patches/MDBM.edit'
X: MDBM.edit SRCDIR DBMLIB
Xcd $1
Xchmod u+w Makefile
Xecho ">>> Editing $1/Makefile to enable MDBM..."
X/bin/ed Makefile <<EOF
Xg/^LIBS=/s/-ldbm/$2/
Xw
Xq
XEOF
Xchmod u-w Makefile
END_OF_ida/patches/MDBM.edit
if test 171 -ne `wc -c <ida/patches/MDBM.edit`; then
    echo shar: \"ida/patches/MDBM.edit\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/patches/Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/patches/Makefile\"
else
echo shar: Extracting \"ida/patches/Makefile\" \(1119 characters\)
sed "s/^X//" >ida/patches/Makefile <<'END_OF_ida/patches/Makefile'
X#
X#  MAKEFILE -- Sendmail Patches.
X#  Copyright (c) 1987 Lennart Lovstrand
X#  CIS Dept, Univ of Linkoping, Sweden
X#
X#  Use it, abuse it, but don't sell it.
X#
X
XSRCDIFFS=	Makefile.diff Version.c.diff alias.c.diff \
X		arpadate.c.diff conf.c.diff conf.h.diff daemon.c.diff \
X		deliver.c.diff domain.c.diff headers.c.diff macro.c.diff \
X		main.c.diff parseaddr.c.diff queue.c.diff readcf.c.diff \
X		recipient.c.diff savemail.c.diff sendmail.h.diff \
X		srvrsmtp.c.diff usersmtp.c.diff util.c.diff
XDOCDIFFS=	op.me.diff
X
X
X#  The following definitions are inserted by ../Makefile
X#  Change them there--not here!
XMDBM=
XDBMLIB=		-ldbm
XSRCDIR=		../../src
XDOCDIR=		../../doc
X
Xpatch:
X		for f in $(SRCDIFFS); do \
X			patch $(SRCDIR)/`basename $$f .diff` $$f; \
X		done
X		for f in $(DOCDIFFS); do \
X			patch $(DOCDIR)/`basename $$f .diff` $$f; \
X		done
X		-if [ -n "$(MDBM)" ]; then \
X			cp mdbm_compat.h $(SRCDIR); \
X			patch -d $(SRCDIR) -b .old < MDBM.diffs; \
X			sh MDBM.edit $(SRCDIR) $(DBMLIB); \
X		fi
X
Xbackup:
X		tar cvf Backup.tar $(SRCDIR)/*.[hc] $(DOCDIR)/op.me
X
Xrestore:
X		tar xvf Backup.tar
X
Xclean:
X		-rm -f \#* *~ Backup.tar
END_OF_ida/patches/Makefile
if test 1119 -ne `wc -c <ida/patches/Makefile`; then
    echo shar: \"ida/patches/Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/patches/Makefile.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/patches/Makefile.diff\"
else
echo shar: Extracting \"ida/patches/Makefile.diff\" \(1221 characters\)
sed "s/^X//" >ida/patches/Makefile.diff <<'END_OF_ida/patches/Makefile.diff'
X*** Makefile.orig	Sat Aug 20 05:10:52 1988
X--- Makefile	Sun Sep 25 18:16:07 1988
X***************
X*** 22,27 ****
X--- 22,28 ----
X  
X  CFLAGS=	-O -I. -I../include -DVMUNIX -DMXDOMAIN
X  ASMSED=	../include/asm.sed
X+ LIBS=	-ldbm -lresolv
X  
X  GET=	sccs get
X  DELTA=	sccs delta
X***************
X*** 29,44 ****
X  PRT=	sccs prt
X  
X  .c.o:
X! 	cc -S ${CFLAGS} $*.c
X! 	sed -f ${ASMSED} $*.s | as -o $*.o
X! 	rm -f $*.s
X  
X! sendmail: ${OBJS} Version.o
X! 	${CC} ${COPTS} -o $@ Version.o ${OBJS} -ldbm
X! 	size sendmail; ls -l sendmail; ${WHAT} < Version.o
X! 
X! dsendmail: ${OBJS} Version.o
X! 	${CC} ${COPTS} -o sendmail Version.o ${OBJS} -ldbm -lresolv
X  	size sendmail; ls -l sendmail; ${WHAT} < Version.o
X  
X  install:
X--- 30,46 ----
X  PRT=	sccs prt
X  
X  .c.o:
X! 	cc -c ${CFLAGS} $*.c
X! #	cc -S ${CFLAGS} $*.c
X! #	sed -f ${ASMSED} $*.s | as -o $*.o
X! #	rm -f $*.s
X  
X! # The date sendmail was compiled is written to the
X! # freeze file, to avoid reading in a .fc file created
X! # by a different version.
X! sendmail: $(OBJS) Version.o
X! 	echo 'char datecompiled[] = "' `date` '";' >datecompiled.c
X! 	$(CC) $(COPTS) -o sendmail Version.o datecompiled.c $(OBJS) $(LIBS)
X  	size sendmail; ls -l sendmail; ${WHAT} < Version.o
X  
X  install:
END_OF_ida/patches/Makefile.diff
if test 1221 -ne `wc -c <ida/patches/Makefile.diff`; then
    echo shar: \"ida/patches/Makefile.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/patches/Version.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/patches/Version.c.diff\"
else
echo shar: Extracting \"ida/patches/Version.c.diff\" \(419 characters\)
sed "s/^X//" >ida/patches/Version.c.diff <<'END_OF_ida/patches/Version.c.diff'
X*** Version.c.orig	Mon Mar 14 04:02:40 1988
X--- Version.c	Mon Aug  1 15:09:46 1988
X***************
X*** 18,24 ****
X  static char sccsid[] = "@(#)version.c	5.59 (Berkeley) 3/13/88";
X  #endif /* not lint */
X  
X! char	Version[] = "5.59";
X  
X  # ifdef COMMENT
X  
X--- 18,24 ----
X  static char sccsid[] = "@(#)version.c	5.59 (Berkeley) 3/13/88";
X  #endif /* not lint */
X  
X! char	Version[] = "5.59++";
X  
X  # ifdef COMMENT
X  
END_OF_ida/patches/Version.c.diff
if test 419 -ne `wc -c <ida/patches/Version.c.diff`; then
    echo shar: \"ida/patches/Version.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/patches/arpadate.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/patches/arpadate.c.diff\"
else
echo shar: Extracting \"ida/patches/arpadate.c.diff\" \(407 characters\)
sed "s/^X//" >ida/patches/arpadate.c.diff <<'END_OF_ida/patches/arpadate.c.diff'
X*** arpadate.c.orig	Sat Apr  2 01:51:03 1988
X--- arpadate.c	Mon Aug  1 19:33:25 1988
X***************
X*** 139,145 ****
X--- 139,149 ----
X  	else
X  		p = tzname[0];
X  # else
X+ #ifndef sun
X  	p = localtime(&t.time)->tm_zone;
X+ #else
X+ 	p = (char *)timezone(t.timezone, localtime(&t.time)->tm_isdst);
X+ #endif
X  # endif USG
X  	if ((strncmp(p, "GMT", 3) == 0 || strncmp(p, "gmt", 3) == 0) &&
X  	    p[3] != '\0')
END_OF_ida/patches/arpadate.c.diff
if test 407 -ne `wc -c <ida/patches/arpadate.c.diff`; then
    echo shar: \"ida/patches/arpadate.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/patches/conf.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/patches/conf.c.diff\"
else
echo shar: Extracting \"ida/patches/conf.c.diff\" \(714 characters\)
sed "s/^X//" >ida/patches/conf.c.diff <<'END_OF_ida/patches/conf.c.diff'
X*** conf.c.orig	Sat Apr  2 01:51:04 1988
X--- conf.c	Fri Aug 26 01:33:56 1988
X***************
X*** 81,86 ****
X--- 81,87 ----
X  	"resent-cc",		H_RCPT|H_RESENT,
X  	"bcc",			H_RCPT|H_ACHECK,
X  	"resent-bcc",		H_RCPT|H_ACHECK|H_RESENT,
X+ 	"apparently-to",	H_RCPT,
X  		/* message identification and control */
X  	"message-id",		0,
X  	"resent-message-id",	H_RESENT,
X***************
X*** 142,147 ****
X--- 143,150 ----
X  
X  setdefaults()
X  {
X+ 	int c;
X+ 
X  	QueueLA = 8;
X  	QueueFactor = 10000;
X  	RefuseLA = 12;
X***************
X*** 152,157 ****
X--- 155,165 ----
X  	FileMode = 0644;
X  	DefUid = 1;
X  	DefGid = 1;
X+ 
X+ # ifdef NDBM
X+ 	for (c = 0; c < 128; c++)
X+ 		DbmTab[c].db_dbm = DB_NOTYETOPEN;
X+ # endif NDBM
X  }
X  
X  /*
END_OF_ida/patches/conf.c.diff
if test 714 -ne `wc -c <ida/patches/conf.c.diff`; then
    echo shar: \"ida/patches/conf.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/patches/conf.h.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/patches/conf.h.diff\"
else
echo shar: Extracting \"ida/patches/conf.h.diff\" \(811 characters\)
sed "s/^X//" >ida/patches/conf.h.diff <<'END_OF_ida/patches/conf.h.diff'
X*** conf.h.orig	Sat Apr  2 01:21:19 1988
X--- conf.h	Fri Aug 26 18:24:13 1988
X***************
X*** 48,53 ****
X--- 48,54 ----
X  
X  # define DBM		1	/* use DBM library (requires -ldbm) */
X  # define NDBM		1	/* new DBM library available (requires DBM) */
X+ # define YP		1	/* enable Yellow Pages code */
X  # define DEBUG		1	/* enable debugging */
X  # define LOG		1	/* enable logging */
X  # define SMTP		1	/* enable user and server SMTP */
X***************
X*** 56,58 ****
X--- 57,66 ----
X  # define DAEMON		1	/* include the daemon (requires IPC & SMTP) */
X  # define SETPROCTITLE	1	/* munge argv to display current status */
X  /* # define WIZ		1	/* allow wizard mode */
X+ 
X+ /*
X+ **  This was neither defined under SunOS 3.5 nor my test BSD4.3 machine.
X+ */
X+ #ifndef EX_CONFIG
X+ # define EX_CONFIG 78
X+ #endif EX_CONFIG
END_OF_ida/patches/conf.h.diff
if test 811 -ne `wc -c <ida/patches/conf.h.diff`; then
    echo shar: \"ida/patches/conf.h.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/patches/domain.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/patches/domain.c.diff\"
else
echo shar: Extracting \"ida/patches/domain.c.diff\" \(1082 characters\)
sed "s/^X//" >ida/patches/domain.c.diff <<'END_OF_ida/patches/domain.c.diff'
X*** domain.c.orig	Wed May  4 01:13:44 1988
X--- domain.c	Thu Aug 25 10:26:46 1988
X***************
X*** 147,152 ****
X--- 147,169 ----
X  	return(nmx);
X  }
X  
X+ /*
X+ **	Getcanonname() below is broken in the sense that it won't return
X+ **	unqualified local host names with their full domain extension,
X+ **	unless the argument is an alias.
X+ **
X+ **	Since gethostbyname() calls the name server with bind 4.8,
X+ **	I don't see why this function would be needed at all.  I've
X+ **	therefore restored the old code in maphostname() of daemon.c
X+ **	that uses gethostbyname().  If there's something I've missed,
X+ **	feel free to change maphostname() to again call getcanonname(),
X+ **	but also make sure that the latter will qualify the host with
X+ **	its full domain AND return a status code indicating if the host
X+ **	was found.
X+ **
X+ **	Lennart Lovstrand, Rank Xerox EuroPARC, 24-Aug-88
X+ */
X+ #ifdef GETHOSTBYNAME_ISNT_ENOUGH
X  getcanonname(host, hbsize)
X  	char *host;
X  	int hbsize;
X***************
X*** 224,226 ****
X--- 241,244 ----
X  		}
X  	}
X  }
X+ #endif GETHOSTBYNAME_ISNT_ENOUGH
END_OF_ida/patches/domain.c.diff
if test 1082 -ne `wc -c <ida/patches/domain.c.diff`; then
    echo shar: \"ida/patches/domain.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/patches/headers.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/patches/headers.c.diff\"
else
echo shar: Extracting \"ida/patches/headers.c.diff\" \(503 characters\)
sed "s/^X//" >ida/patches/headers.c.diff <<'END_OF_ida/patches/headers.c.diff'
X*** headers.c.orig	Mon Mar 14 05:31:51 1988
X--- headers.c	Mon Aug  1 15:07:23 1988
X***************
X*** 782,788 ****
X  		*p = '\0';
X  
X  		/* translate the name to be relative */
X! 		name = remotename(name, m, bitset(H_FROM, h->h_flags), FALSE);
X  		if (*name == '\0')
X  		{
X  			*p = savechar;
X--- 782,789 ----
X  		*p = '\0';
X  
X  		/* translate the name to be relative */
X! 		name = remotename(name, m, bitset(H_FROM, h->h_flags), FALSE,
X! 				  TRUE);
X  		if (*name == '\0')
X  		{
X  			*p = savechar;
END_OF_ida/patches/headers.c.diff
if test 503 -ne `wc -c <ida/patches/headers.c.diff`; then
    echo shar: \"ida/patches/headers.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/patches/mdbm_compat.h -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/patches/mdbm_compat.h\"
else
echo shar: Extracting \"ida/patches/mdbm_compat.h\" \(899 characters\)
sed "s/^X//" >ida/patches/mdbm_compat.h <<'END_OF_ida/patches/mdbm_compat.h'
X/**
X **	MDBM Compatibility File
X **
X **	These definitions will make sendmail use Maryland's mdbm
X **	library package instead of the new multifile database
X **	routines of 4.3.
X **
X **	Note: Don't use this if you already have ndbm.
X **/
X
X#include <mdbm.h>
X
Xtypedef struct mdbm DBMFILE;
X
X#ifndef NDBM
X# define NDBM
X#endif NDBM
X#ifndef MDBM
X# define MDBM
X#endif MDBM
X
X/*
X *  Mdbm equivalents for ndbm functions
X */
X
X#define DB_DIREXT	".map"
X#define DB_PAGEXT	".dat"
X
X#define DBM_REPLACE	MDBM_REPLACE
X#define DBM_INSERT	MDBM_INSERT
X
X#define dbm_dirfno(db)	((db)->mdbm_mapfd)
X#define dbm_pagfno(db)	((db)->mdbm_datafd)
X
X#define dbm_open(file, flags, mode) \
X			mdbm_open(file, flags, mode, NULL, NULL, NULL)
X#define dbm_close	mdbm_close
X#define dbm_fetch	mdbm_fetch
X#define dbm_store	mdbm_store
X#define dbm_firstkey	mdbm_firstkey
X#define dbm_nextkey	mdbm_nextkey /* don't forget to fill in 2nd param! */
END_OF_ida/patches/mdbm_compat.h
if test 899 -ne `wc -c <ida/patches/mdbm_compat.h`; then
    echo shar: \"ida/patches/mdbm_compat.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ida/patches/queue.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"ida/patches/queue.c.diff\"
else
echo shar: Extracting \"ida/patches/queue.c.diff\" \(855 characters\)
sed "s/^X//" >ida/patches/queue.c.diff <<'END_OF_ida/patches/queue.c.diff'
X*** queue.c.orig	Mon Mar 14 03:54:04 1988
X--- queue.c	Sat Aug 20 01:15:36 1988
X***************
X*** 181,187 ****
X  	*/
X  
X  	bzero((char *) &nullmailer, sizeof nullmailer);
X! 	nullmailer.m_r_rwset = nullmailer.m_s_rwset = -1;
X  	nullmailer.m_eol = "\n";
X  
X  	define('g', "\001f", e);
X--- 181,188 ----
X  	*/
X  
X  	bzero((char *) &nullmailer, sizeof nullmailer);
X! 	nullmailer.m_re_rwset = nullmailer.m_se_rwset = -1;
X! 	nullmailer.m_rh_rwset = nullmailer.m_sh_rwset = -1;
X  	nullmailer.m_eol = "\n";
X  
X  	define('g', "\001f", e);
X***************
X*** 336,342 ****
X  	**  Make sure the alias database is open.
X  	*/
X  
X! 	initaliases(AliasFile, FALSE);
X  
X  	/*
X  	**  Start making passes through the queue.
X--- 337,343 ----
X  	**  Make sure the alias database is open.
X  	*/
X  
X! 	initaliases(FALSE);
X  
X  	/*
X  	**  Start making passes through the queue.
END_OF_ida/patches/queue.c.diff
if test 855 -ne `wc -c <ida/patches/queue.c.diff`; then
    echo shar: \"ida/patches/queue.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 1 \(of 8\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 8 archives.
    echo "See ida/README and ida/INSTALL for further directions."
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0

-- 
Please send comp.sources.unix-related mail to rsalz@uunet.uu.net.