rs@uunet.UUCP (06/23/87)
Mod.sources: Volume 10, Number 12 Submitted by: Lennart Lovstrand <mcvax!ida.liu.se!lel> Archive-name: ida/Part01 [ After talking with a couple of people, I decided to mix backlogged sources with recent submissions in order to get stuff that people are currently interested in out in a reasonable amount of time. Also, please remember that I am not able to provide mail-based retrieval service at this time; this is a guest account on UUNET that I am using. --r$ ] This is the first part of the IDA Sendmail Enhancement Kit. The Kit includes a set of source code modifications to the BSD 4.3 sendmail program (version 5.11). The changes will enable sendmail to have direct access to dbm(3) files, separate envelope/header rewriting rulesets, and multi-token class matches among other things. As a separate part of the Kit is the IDA Sendmail Master Configuration file and a sample setup used at the CIS Dept, U of Linkoping. 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. 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. Unpack the Kit by (preferably) cd'ing to the sendmail home directory and sending the part after the "--cut--here--" line to /bin/sh or unshar. This should create a new "ida" subdirectory with all the Kit's files. Then see ida/README and ida/INSTALL for further instructions. --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 7)." # Contents: ida ida/MANIFEST 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/asterix.m4 ida/cf/client.m4 # ida/cf/majestix.m4 ida/cf/newaliases.m4 ida/cf/obelix.m4 ida/doc # ida/doc/Makefile ida/doc/mkdomext.1 ida/doc/xalparse.8 ida/lib # ida/lib/Makefile 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/BSD29.edit ida/patches/BSD42.diff # ida/patches/MDBM.edit ida/patches/Makefile # ida/patches/Version.c.diff ida/patches/conf.c.diff # ida/patches/err.c.diff ida/patches/headers.c.diff # ida/patches/macro.c.diff ida/patches/mdbm_compat.h # ida/patches/queue.c.diff ida/patches/readcf.c.diff # ida/patches/savemail.c.diff ida/patches/usersmtp.c.diff # ida/patches/util.c.diff # Wrapped by lenlo@prefix on Wed Jun 10 15:39:47 1987 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/MANIFEST -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"ida/MANIFEST\" else echo shar: Extracting \"ida/MANIFEST\" \(1726 characters\) sed "s/^X//" >ida/MANIFEST <<'END_OF_ida/MANIFEST' X File Name Archive # X---------------------------------- X ida 1 X ida/INSTALL 2 X ida/MANIFEST 1 X ida/Makefile 1 X ida/README 1 X ida/aux 1 X ida/aux/Makefile 1 X ida/aux/dbm.c 3 X ida/aux/header.c 1 X ida/aux/mkdomext.c 1 X ida/aux/rmail.c 3 X ida/aux/scanf.c 1 X ida/aux/xalparse.c 3 X ida/cf 1 X ida/cf/Makefile 1 X ida/cf/Sendmail.mc 5 X ida/cf/asterix.m4 1 X ida/cf/client.m4 1 X ida/cf/majestix.m4 1 X ida/cf/newaliases.m4 1 X ida/cf/obelix.m4 1 X ida/doc 1 X ida/doc/Makefile 1 X ida/doc/dbm.1 2 X ida/doc/mkdomext.1 1 X ida/doc/part1.ms 6 X ida/doc/part2.ms 7 X ida/doc/xalparse.8 1 X ida/lib 1 X ida/lib/Makefile 1 X ida/lib/decnet 1 X ida/lib/decnet/nodes 1 X ida/lib/decnet/xtable 1 X ida/lib/domaintable 2 X ida/lib/mailertable 1 X ida/lib/pathtable 2 X ida/lib/restart_clients 1 X ida/lib/sendmail.hf 1 X ida/lib/sendmail.st 1 X ida/lib/stop_clients 1 X ida/lib/uucp 1 X ida/lib/uucp/relays 1 X ida/lib/uucp/xtable 1 X ida/lib/xaliases 4 X ida/patches 1 X ida/patches/BSD29.diff 2 X ida/patches/BSD29.edit 1 X ida/patches/BSD42.diff 1 X ida/patches/MDBM.diff 2 X ida/patches/MDBM.edit 1 X ida/patches/Makefile 1 X ida/patches/Version.c.diff 1 X ida/patches/alias.c.diff 3 X ida/patches/conf.c.diff 1 X ida/patches/daemon.c.diff 2 X ida/patches/deliver.c.diff 2 X ida/patches/err.c.diff 1 X ida/patches/headers.c.diff 1 X ida/patches/macro.c.diff 1 X ida/patches/main.c.diff 2 X ida/patches/mdbm_compat.h 1 X ida/patches/op.me.diff 3 X ida/patches/parseaddr.c.diff 4 X ida/patches/queue.c.diff 1 X ida/patches/readcf.c.diff 1 X ida/patches/recipient.c.diff 2 X ida/patches/savemail.c.diff 1 X ida/patches/sendmail.h.diff 3 X ida/patches/srvrsmtp.c.diff 2 X ida/patches/usersmtp.c.diff 1 X ida/patches/util.c.diff 1 END_OF_ida/MANIFEST if test 1726 -ne `wc -c <ida/MANIFEST`; then echo shar: \"ida/MANIFEST\" unpacked with wrong size! fi # end of overwriting check 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\" \(1378 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 sh ould go XLIBDIR= /usr/lib/mail # Where the data files should b e 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 m dbm XDBMEXT= .dir # Change to .map 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 1378 -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\" \(877 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 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) X X.c.o: X $(CC) $(CFLAGS) -c $< X X.c: X $(CC) $(CFLAGS) -o $@ $< END_OF_ida/aux/Makefile if test 877 -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\" \(1068 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 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.1 of Apr 19, 1987 1:18am 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: %s [-i] scanf_pattern [file]"); 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 1068 -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\" \(1153 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 X# Linkoping specific defintions 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 \#* *~ $(CONFIGS) X Xbackup: X cp *.m4 *.mc BACKUP 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 m4 $*.m4 >$*.cf END_OF_ida/cf/Makefile if test 1153 -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/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\" \(448 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(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 448 -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/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\" \(412 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(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 412 -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/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\" \(560 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(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 560 -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\" \(199 characters\) sed "s/^X//" >ida/cf/newaliases.m4 <<'END_OF_ida/cf/newaliases.m4' X# Automatically generated config file for newaliases program Xdefine(ALIASES, LIBDIR/aliases) Xdefine(DEFAULT_HOST, all) Xdefine(DOMAINTABLE, LIBDIR/domaintable) Xdefine(NEWALIASES) Xinclude(Sendmail.mc) END_OF_ida/cf/newaliases.m4 if test 199 -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 ! -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/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\" \(2394 characters\) sed "s/^X//" >ida/lib/Makefile <<'END_OF_ida/lib/Makefile' X# X# MAKEFILE -- Library 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 XSENDMAIL= /usr/lib/sendmail XTABLES= domaintable$(DBMEXT) generics$(DBMEXT) \ X pathtable$(DBMEXT) aliases$(DBMEXT) mailertable$(DBMEXT) \ X decnet/nodes decnet/xtable$(DBMEXT) uucp/xtable$(DBMEXT) XPATHFLAGS= -C25 -i -l`hostname`$(DOMAIN) XUUCPNODES= /usr/lib/uucp/L.sys X X# Linkoping specific definitions XDEPENDENTS= asterix XDOMAIN= .liu.se XNODE_DATA= /usr/lisbet/ps/system/node-data.cmd X X# The following definitions are inserted by ../Makefile X# Change them there--not here! XLIBDIR= /usr/lib/mail XDBMEXT= .dir X X X# Update all dbm tables Xall: $(TABLES) X X# Fetch vital files from file server Xpropagate: X @for d in $(DEPENDENTS); do \ X echo ">>> Propagating changes to $$d"; \ X rcp domaintable pathtable $${d}:$(LIBDIR); \ X rcp decnet/nodes decnet/xtable $${d}:$(LIBDIR)/decnet; \ X rcp uucp/xtable $${d}:$(LIBDIR)/uucp; \ X rsh $$d "cd $(LIBDIR); make"; \ X done X Xpathtable$(DBMEXT): pathtable X pathalias $(PATHFLAGS) pathtable | dbm load pathtable X Xaliases generics: xaliases X xalparse xaliases aliases generics X Xaliases$(DBMEXT): aliases X $(SENDMAIL) -Cnewaliases.cf -bi X Xgenerics$(DBMEXT): generics X dbm -L make generics generics X X# Note: Local fix here for making all DECnet nodes belong in .SUNET.SE Xdomaintable$(DBMEXT): domaintable decnet/nodes X (dbm parse domaintable; \ X awk '{printf "%s.sunet.se\t%s.sunet.se\n", $$1, $$1}' decnet/nodes) |\ X mkdomext liu.se ida.liu.se sunet.se UUCP | dbm -IL load domaintable X Xmailertable$(DBMEXT): mailertable X dbm -L make mailertable mailertable X X# Note: Local fix here for making all DECnet nodes belong in .SUNET.SE Xdecnet/xtable$(DBMEXT): decnet/xtable decnet/nodes X (dbm parse decnet/xtable; \ X awk '{printf "%s.sunet.se\t%s\n", $$1, $$1}' decnet/nodes) | \ X dbm -IL load decnet/xtable X Xdecnet/nodes: $(NODE_DATA) X cp decnet/nodes decnet/nodes.old X scanf -i " set node %*s name %s" $(NODE_DATA) >$@ X Xuucp/xtable$(DBMEXT): 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 -/usr/local/bin/skill sendmail X Xrestart: stop X $(SENDMAIL) -bd -q30m X Xasterix: X rsh asterix "cd /usr/lib/mail; make fetch all" X Xclean: X -rm -f \#* *~ *.dir *.pag *.map *.dat */*.dir */*.pag */*.map */*.dat END_OF_ida/lib/Makefile if test 2394 -ne `wc -c <ida/lib/Makefile`; then echo shar: \"ida/lib/Makefile\" 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\" \(374 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 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 374 -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 tragico mix; 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 tragico mix; 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/BSD29.edit -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"ida/patches/BSD29.edit\" else echo shar: Extracting \"ida/patches/BSD29.edit\" \(263 characters\) sed "s/^X//" >ida/patches/BSD29.edit <<'END_OF_ida/patches/BSD29.edit' X: BSD29.edit SRCDIR Xcd $1 Xchmod u+w Makefile Xecho ">>> Editing $1/Makefile for use with BSD 2.9..." X/bin/ed Makefile <<EOF Xg/^LIBS=/s/$/ -ljobs -lndir/ Xg/^OBJS2=/s/$/ bcopy.o/ Xg/^SRCS2=/s/$/ bcopy.c/ Xg/^CCONFIG=/s/$/ -DBSD29 -DUCB_NET/ Xw Xq XEOF Xchmod u-w Makefile END_OF_ida/patches/BSD29.edit if test 263 -ne `wc -c <ida/patches/BSD29.edit`; then echo shar: \"ida/patches/BSD29.edit\" unpacked with wrong size! fi # end of overwriting check fi if test -f ida/patches/BSD42.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"ida/patches/BSD42.diff\" else echo shar: Extracting \"ida/patches/BSD42.diff\" \(523 characters\) sed "s/^X//" >ida/patches/BSD42.diff <<'END_OF_ida/patches/BSD42.diff' X*** sendmail.h.old Wed May 27 01:59:12 1987 X--- sendmail.h Wed May 27 02:26:37 1987 X*************** X*** 652,654 **** X--- 652,673 ---- X }; X X extern struct metamac MetaMacros[]; X+ X+ /* X+ ** BSD4.2 Compatibility Code X+ */ X+ X+ #ifndef sigmask X+ # define sigmask(m) (1 << ((m)-1)) X+ #endif sigmask X+ X+ #ifndef TRY_AGAIN X+ # define TRY_AGAIN 2 X+ # ifdef EXTERN X+ EXTERN int h_errno; /* ought to be initialized too */ X+ # endif EXTERN X+ #endif TRY_AGAIN X+ X+ #ifndef LOG_MAIL X+ # define LOG_MAIL (2<<3) X+ #endif LOG_MAIL END_OF_ida/patches/BSD42.diff if test 523 -ne `wc -c <ida/patches/BSD42.diff`; then echo shar: \"ida/patches/BSD42.diff\" unpacked with wrong size! fi # end of overwriting check 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\" \(1231 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= Version.c.diff alias.c.diff conf.c.diff daemon.c.diff \ X deliver.c.diff err.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 XBSD43 bsd43 patch: 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.diff; \ X sh MDBM.edit $(SRCDIR) $(DBMLIB); \ X fi X XBSD42 bsd42: BSD43 X patch -d $(SRCDIR) -b .old < BSD42.diff X XBSD29 bsd29: BSD42 X patch -d $(SRCDIR) -b .old < BSD29.diff X sh BSD29.edit $(SRCDIR) 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 1231 -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/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\" \(405 characters\) sed "s/^X//" >ida/patches/Version.c.diff <<'END_OF_ida/patches/Version.c.diff' X*** Version.c.orig Fri Mar 13 18:51:11 1987 X--- Version.c Mon May 25 15:51:13 1987 X*************** X*** 12,18 **** X static char SccsId[] = "@(#)version.c 5.51 (Berkeley) 5/2/86"; X #endif not lint X X! char Version[] = "5.51"; X X # ifdef COMMENT X X--- 12,18 ---- X static char SccsId[] = "@(#)version.c 5.51 (Berkeley) 5/2/86"; X #endif not lint X X! char Version[] = "5.51++"; X X # ifdef COMMENT X END_OF_ida/patches/Version.c.diff if test 405 -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/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\" \(720 characters\) sed "s/^X//" >ida/patches/conf.c.diff <<'END_OF_ida/patches/conf.c.diff' X*** conf.c.orig Fri Mar 13 18:51:01 1987 X--- conf.c Mon May 25 15:54:51 1987 X*************** X*** 80,85 **** X--- 80,86 ---- 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*** 141,146 **** X--- 142,149 ---- X X setdefaults() X { X+ int c; X+ X QueueLA = 8; X QueueFactor = 10000; X RefuseLA = 12; X*************** X*** 151,156 **** X--- 154,164 ---- X FileMode = 0644; X DefUid = 1; X DefGid = 1; X+ X+ # ifdef NDBM X+ for (c = 0; c < 128; c++) X+ DbmTab[c].dbm = DB_NOTYETOPEN; X+ # endif NDBM X } X X # ifdef V6 END_OF_ida/patches/conf.c.diff if test 720 -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/err.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"ida/patches/err.c.diff\" else echo shar: Extracting \"ida/patches/err.c.diff\" \(518 characters\) sed "s/^X//" >ida/patches/err.c.diff <<'END_OF_ida/patches/err.c.diff' X*** err.c.orig Fri Mar 13 18:51:05 1987 X--- err.c Mon May 25 15:55:17 1987 X*************** X*** 354,360 **** X (void) sprintf(buf, "Connection refused by %s", CurHostName); X return (buf); X X! case (TRY_AGAIN+MAX_ERRNO): X (void) sprintf(buf, "Host Name Lookup Failure"); X return (buf); X } X--- 354,360 ---- X (void) sprintf(buf, "Connection refused by %s", CurHostName); X return (buf); X X! case (TRY_AGAIN+MAX_ERRNO): X (void) sprintf(buf, "Host Name Lookup Failure"); X return (buf); X } END_OF_ida/patches/err.c.diff if test 518 -ne `wc -c <ida/patches/err.c.diff`; then echo shar: \"ida/patches/err.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 Fri Mar 13 18:51:06 1987 X--- headers.c Mon May 25 15:51:27 1987 X*************** X*** 777,783 **** 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--- 777,784 ---- 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/macro.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"ida/patches/macro.c.diff\" else echo shar: Extracting \"ida/patches/macro.c.diff\" \(387 characters\) sed "s/^X//" >ida/patches/macro.c.diff <<'END_OF_ida/patches/macro.c.diff' X*** macro.c.orig Fri Mar 13 18:51:06 1987 X--- macro.c Mon May 25 15:51:29 1987 X*************** X*** 168,173 **** X--- 168,174 ---- X ** $h to host X ** $i queue id X ** $j official SMTP hostname, used in messages+ X+ ** $k our UUCP host name, if different from $w X ** $l UNIX-style from line+ X ** $n name of sendmail ("MAILER-DAEMON" on local X ** net typically)+ END_OF_ida/patches/macro.c.diff if test 387 -ne `wc -c <ida/patches/macro.c.diff`; then echo shar: \"ida/patches/macro.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\" \(762 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 DBM_REPLACE MDBM_REPLACE X#define DBM_INSERT MDBM_INSERT 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 762 -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\" \(744 characters\) sed "s/^X//" >ida/patches/queue.c.diff <<'END_OF_ida/patches/queue.c.diff' X*** queue.c.orig Fri Mar 13 18:51:03 1987 X--- queue.c Mon May 25 15:51:38 1987 X*************** X*** 175,181 **** 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--- 175,182 ---- 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*** 352,357 **** X--- 353,362 ---- X free(w->w_name); X free((char *) w); X } X+ /* X+ * Don't let dropenvelope() trash locked queue files! X+ */ X+ CurEnv->e_id = NULL; X finis(); X } X /* END_OF_ida/patches/queue.c.diff if test 744 -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 if test -f ida/patches/readcf.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"ida/patches/readcf.c.diff\" else echo shar: Extracting \"ida/patches/readcf.c.diff\" \(2154 characters\) sed "s/^X//" >ida/patches/readcf.c.diff <<'END_OF_ida/patches/readcf.c.diff' X*** readcf.c.orig Fri Mar 13 18:51:07 1987 X--- readcf.c Mon May 25 15:51:41 1987 X*************** X*** 434,441 **** X setbitn(*p, m->m_flags); X break; X X! case 'S': /* sender rewriting ruleset */ X! case 'R': /* recipient rewriting ruleset */ X i = atoi(p); X if (i < 0 || i >= MAXRWSETS) X { X--- 434,441 ---- X setbitn(*p, m->m_flags); X break; X X! case 'S': /* sender rewriting ruleset(s) */ X! case 'R': /* recipient rewriting ruleset(s) */ X i = atoi(p); X if (i < 0 || i >= MAXRWSETS) X { X*************** X*** 442,451 **** X syserr("invalid rewrite set, %d max", MAXRWSETS ); X return; X } X! if (fcode == 'S') X! m->m_s_rwset = i; X! else X! m->m_r_rwset = i; X break; X X case 'E': /* end of line string */ X--- 442,464 ---- X syserr("invalid rewrite set, %d max", MAXRWSETS ); X return; X } X! /* default envelope ruleset for header ruleset */ X! if (fcode == 'S') { X! m->m_se_rwset = i; X! m->m_sh_rwset = i; X! } else { X! m->m_re_rwset = i; X! m->m_rh_rwset = i; X! } X! /* look for specific header rewriting ruleset */ X! while (*p != '\0' && *p != ',' && *p != '/') p++; X! if (*p++ == '/') { X! i = atoi(p); X! if (fcode == 'S') X! m->m_sh_rwset = i; X! else X! m->m_rh_rwset = i; X! } X break; X X case 'E': /* end of line string */ X*************** X*** 797,803 **** X case 'i': /* ignore dot lines in message */ X IgnrDot = atobool(val); X break; X! X case 'L': /* log level */ X LogLevel = atoi(val); X break; X--- 810,821 ---- X case 'i': /* ignore dot lines in message */ X IgnrDot = atobool(val); X break; X! # ifdef NDBM X! case 'K': /* keyed database file */ X! if (*val != '\0') X! DbmTab[*val].name = newstr(&val[1]); X! break; X! # endif NDBM X case 'L': /* log level */ X LogLevel = atoi(val); X break; X*************** X*** 911,916 **** X--- 929,938 ---- X X case 'Z': /* work time factor */ X WkTimeFact = atoi(val); X+ break; X+ X+ case '/': /* use split envelope/header rewriting */ X+ SplitRewriting = TRUE; X break; X X default: END_OF_ida/patches/readcf.c.diff if test 2154 -ne `wc -c <ida/patches/readcf.c.diff`; then echo shar: \"ida/patches/readcf.c.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f ida/patches/savemail.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"ida/patches/savemail.c.diff\" else echo shar: Extracting \"ida/patches/savemail.c.diff\" \(1282 characters\) sed "s/^X//" >ida/patches/savemail.c.diff <<'END_OF_ida/patches/savemail.c.diff ' X*** savemail.c.orig Fri Mar 13 18:51:08 1987 X--- savemail.c Mon May 25 15:51:45 1987 X*************** X*** 366,371 **** X--- 366,372 ---- X ENVELOPE errenvelope; X static int returndepth; X register ADDRESS *q; X+ char *to, *cc; X X # ifdef DEBUG X if (tTd(6, 1)) X*************** X*** 395,405 **** X ee->e_flags |= EF_RESPONSE; X ee->e_sendqueue = returnq; X openxscript(ee); X! for (q = returnq; q != NULL; q = q->q_next) X! { X! if (q->q_alias == NULL) X! addheader("to", q->q_paddr, ee); X } X X (void) sprintf(buf, "Returned mail: %s", msg); X addheader("subject", buf, ee); X--- 396,422 ---- X ee->e_flags |= EF_RESPONSE; X ee->e_sendqueue = returnq; X openxscript(ee); X! X! /* put the recipients in the to: header (cc: for PostMasterCopy) */ X! cc = NULL; X! to = buf; X! for (q = returnq; q != NULL; q = q->q_next) { X! if (q->q_alias == NULL) X! if (strcmp(q->q_paddr, PostMasterCopy) == 0) X! cc = q->q_paddr; X! else { X! int len = strlen(q->q_paddr); X! X! *to++ = ','; X! strncpy(to, q->q_paddr, len); X! to += len; X! } X } X+ *to = '\0'; X+ if (to != buf) X+ addheader("to", buf+1, ee); X+ if (cc) X+ addheader("cc", cc, ee); X X (void) sprintf(buf, "Returned mail: %s", msg); X addheader("subject", buf, ee); END_OF_ida/patches/savemail.c.diff if test 1282 -ne `wc -c <ida/patches/savemail.c.diff`; then echo shar: \"ida/patches/savemail.c.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f ida/patches/usersmtp.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"ida/patches/usersmtp.c.diff\" else echo shar: Extracting \"ida/patches/usersmtp.c.diff\" \(1852 characters\) sed "s/^X//" >ida/patches/usersmtp.c.diff <<'END_OF_ida/patches/usersmtp.c.diff ' X*** usersmtp.c.orig Fri Mar 13 18:51:09 1987 X--- usersmtp.c Mon May 25 15:51:50 1987 X*************** X*** 34,39 **** X--- 34,40 ---- X X #define REPLYTYPE(r) ((r) / 100) /* first digit of reply code */ X #define REPLYCLASS(r) (((r) / 10) % 10) /* second digit of repl y code */ X+ #define SMTPGOODREPLY 250 /* positive SMTP respon se */ X #define SMTPCLOSING 421 /* "Service Shutting Down" */ X X char SmtpMsgBuffer[MAXLINE]; /* buffer for commands */ X*************** X*** 241,247 **** X register int r; X extern char *remotename(); X X! smtpmessage("RCPT To:<%s>", m, remotename(to->q_user, m, FALSE, TRUE)); X X SmtpPhase = "RCPT wait"; X r = reply(m); X--- 242,257 ---- X register int r; X extern char *remotename(); X X! /* DISABLED since I didn't understand why further rewriting X! should be necessary. Since it doesn't go through ruleset 0 X! on this second rewriting (which it should since it's a X! envelope recipient address) there is even the risk that it X! gets screwed up. X! -- lel@ida.liu.se X! smtpmessage("RCPT To:<%s>", m, remotename(to->q_user, m, FALSE, TRUE, X! FALSE)); X! */ X! smtpmessage("RCPT To:<%s>", m, to->q_user); X X SmtpPhase = "RCPT wait"; X r = reply(m); X*************** X*** 291,297 **** X return (EX_TEMPFAIL); X else if (r == 554) X return (EX_UNAVAILABLE); X! else if (r != 354) X return (EX_PROTOCOL); X X /* now output the actual message */ X--- 301,307 ---- X return (EX_TEMPFAIL); X else if (r == 554) X return (EX_UNAVAILABLE); X! else if (r != 354 && r != 250) X return (EX_PROTOCOL); X X /* now output the actual message */ X*************** X*** 377,382 **** X--- 387,395 ---- X X if (tTd(18, 1)) X printf("reply\n"); X+ X+ if (bitnset(M_BSMTP, m->m_flags)) X+ return (SMTPGOODREPLY); X X /* X ** Read the input line, being careful not to hang. END_OF_ida/patches/usersmtp.c.diff if test 1852 -ne `wc -c <ida/patches/usersmtp.c.diff`; then echo shar: \"ida/patches/usersmtp.c.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f ida/patches/util.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"ida/patches/util.c.diff\" else echo shar: Extracting \"ida/patches/util.c.diff\" \(2288 characters\) sed "s/^X//" >ida/patches/util.c.diff <<'END_OF_ida/patches/util.c.diff' X*** util.c.orig Fri Mar 13 18:51:10 1987 X--- util.c Mon May 25 15:51:52 1987 X*************** X*** 20,25 **** X--- 20,27 ---- X # include <ctype.h> X # include "sendmail.h" X X+ bool catPrint = FALSE; /* xputs: print strings for catenation */ X+ X /* X ** STRIPQUOTES -- Strip quotes & quote bits from a string. X ** X*************** X*** 261,266 **** X--- 263,269 ---- X register char *s; X { X register char c; X+ register struct metamac *m; X X if (s == NULL) X { X*************** X*** 267,273 **** X printf("<null>"); X return; X } X! (void) putchar('"'); X while ((c = *s++) != '\0') X { X if (!isascii(c)) X--- 270,288 ---- X printf("<null>"); X return; X } X! X! if (s[0] == MATCHREPL && isdigit(s[1]) && s[2] == '\0') { X! printf("$%c", s[1]); X! return; X! } else X! for (m = MetaMacros; m->metaname != '\0'; m++) X! if (m->metaval == *s) { X! printf("$%c%s", m->metaname, &s[1]); X! return; X! } X! X! if (!catPrint) X! (void) putchar('"'); X while ((c = *s++) != '\0') X { X if (!isascii(c)) X*************** X*** 282,288 **** X } X (void) putchar(c); X } X! (void) putchar('"'); X (void) fflush(stdout); X } X /* X--- 297,304 ---- X } X (void) putchar(c); X } X! if (!catPrint) X! (void) putchar('"'); X (void) fflush(stdout); X } X /* X*************** X*** 306,316 **** X register char *p; X { X register char c; X X if (p == NULL) X return; X for (; (c = *p) != '\0'; p++) X! if (isascii(c) && isupper(c)) X *p = c - 'A' + 'a'; X } X /* X--- 322,335 ---- X register char *p; X { X register char c; X+ register bool quoted_string = FALSE; X X if (p == NULL) X return; X for (; (c = *p) != '\0'; p++) X! if (c == '"') X! quoted_string = !quoted_string; X! else if (!quoted_string && isascii(c) && isupper(c)) X *p = c - 'A' + 'a'; X } X /* X*************** X*** 862,865 **** X--- 881,907 ---- X if (map[i] != 0) X return (FALSE); X return (TRUE); X+ } X+ X+ /* X+ ** PRINTCAV -- Print concatenated argument vector X+ ** X+ ** Parameters: X+ ** av -- argument vector. X+ ** X+ ** Returns: X+ ** none. X+ ** X+ ** Side Effects: X+ ** prints av. X+ */ X+ X+ printcav(av) X+ register char **av; X+ { X+ bool oldCatPrint = catPrint; X+ X+ catPrint = TRUE; X+ printav(av); X+ catPrint = oldCatPrint; X } END_OF_ida/patches/util.c.diff if test 2288 -ne `wc -c <ida/patches/util.c.diff`; then echo shar: \"ida/patches/util.c.diff\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of archive 1 \(of 7\). cp /dev/null ark1isdone MISSING="" for I in 1 2 3 4 5 6 7 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 7 archives. echo "See ida/README and ida/INSTALL for further instructions." 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