Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!cbosgd!mandrill!hal!ncoast!allbery From: allbery@ncoast.UUCP Newsgroups: comp.sources.misc Subject: smail 2.5 installation under SCO XENIX Message-ID: <6298@ncoast.UUCP> Date: Sat, 28-Nov-87 21:44:15 EST Article-I.D.: ncoast.6298 Posted: Sat Nov 28 21:44:15 1987 Date-Received: Tue, 1-Dec-87 06:32:38 EST Sender: allbery@ncoast.UUCP Lines: 322 Approved: allbery@ncoast.UUCP X-Archive: comp.sources.misc/8711/21 {{{ Daniel - I have received over a dozen requests for the following }}} {{{ package, so I though it might be best to post to comp.sources.misc. }}} {{{ It is used to install smail V2.5 under SCO XENIX. }}} {{{ -chip }}} #! /bin/sh # this is a 'shar' archive - run through sh(C) to extract: # -rw-r--r-- 1 root root 2837 Nov 25 13:03 Makefile.sco # -rw-r--r-- 1 root root 4386 Nov 25 13:44 README.sco # -rw-r--r-- 1 root root 2095 Nov 25 13:42 execmail.c # 3 files total echo "x - README.sco (file 1 of 3)" sed -e 's/.//' << 'END_OF_FILE_README.sco' > README.sco # #This package implements the stock "smail V2.5" distribution under SCO XENIX. # #The main problem with using "smail" under XENIX is that the installation #really doesn't correspond to the standard BSD or SYSV installation, #although it is closest to the "SYSV without sendmail" installation. Some #of the issues are: # # - there is neither "binmail" nor "mailx" under SCO XENIX # - the mail executables are mostly in "/usr/bin", not "/bin" # - "rmail" is a seperate program, not just a link to "mail" # - the standard mail interface barfs on internet (user@site) addresses # #Aside from the installation issues, there are a couple of other things #you need to watch for: # #1) SCO XENIX is distributed with an empty "nodename" entry in the # kernal's "uname" structure. If you haven't placed your system's # name there, you will either need to do so or define your system # name in the "defs.h" file (the HOSTNAME definiton). # #2) There are several places in the source where NULL is used to # terminate a string. Since NULL is defined as "(char *)0" in the # SCO XENIX "stdio.h" file, compiler warnings are generated by # this. Although "smail" will work in spite of these errors, you # might want to clean them up by changing NULL to '\0' in the # following places: # # file line(s) # ======= ======= # alias.c 461 # deliver.c 284 # nptx.c 128,165 # #3) You need to compile "smail" as a pure executable (-i) and extend # the stack size. This has been done in the attached "Makefile". # #In regards to the internet address (user@site) problem -- this is a #limitation of /usr/bin/mail. If it does the mailing, it complains about #the "@" character. The solution is to force /usr/bin/mail to let #/usr/lib/mail/execmail do the mailing. This is done by placing a "set #execmail" line in the /usr/lib/mail/mailrc file. The included "execmail" #program replaces the standard execmail. It forces all mail to go through #"smail" to handle the internet addresses. # #The "Flow.Diagram" file shows how mail works in various situations -- none #of which correspond to how mail works with SCO XENIX. The following #diagrams show the mail flow for SCO XENIX: # #======================================================================== # #vanilla SCO XENIX mail flow # # mail is /usr/bin/mail # rmail is /usr/bin/rmail # execmail is /usr/lib/mail/execmail # #LOCAL mail ---------\ /--------------------- LOCAL # +-- execmail --+ #REMOTE rmail ---------/ \------- uux --------- REMOTE # #Note that there is no "mailx" in XENIX. Also note that "rmail" is #a seperate program, not just a link to "mail". This flow is the #case only if "set execmail" is defined in /usr/lib/mail/mailrc. # #======================================================================== # #Modified SCO XENIX mail flow # # /usr/bin/rmail is renamed to /usr/bin/rmail.old and is ignored # /usr/lib/mail/execmail is renamed to /usr/lib/mail/execmail.old and ignored # # mail is still /usr/bin/mail # # smail is smail copied to /bin/smail # rmail is a link from /bin/smail to /bin/rmail # lmail is a link from /usr/lib/mail/mail.local to /bin/lmail # execmail is execmail copied to /usr/lib/mail/execmail # #LOCAL mail --- execmail --- smail ---\ /--- lmail -------- LOCAL # +-------+ #REMOTE rmail -------------------------/ \--- uux ---------- REMOTE # #======================================================================== # #To install smail under SCO XENIX, do the following: # #(1) Ensure "smail" can find out your host name (see note 1 near the # beginning of this message). # #(2) Make sure "defs.h" contains what you want. (The only change I # made was to redefine ALIASES to "/usr/lib/mail/aliases".) # #(3) See if the makefile definitions look reasonable to you. # #(4) Type "make" to compile the sources. # #(5) Type "make install" to put everything in its place. # #There is a "make remove" option which deinstalls "smail" and returns #you to a stock SCO XENIX mail configuration. # #If you want to make you setup more System V-ish, you could rename #"/usr/bin/mail" to "/usr/bin/mailx" and install the "svbinmail" included #in the smail package as "/bin/mail". You would, however, have to change #READER to "/usr/bin/mailx" in "svbinmail.c". # #I'd be interested in any suggestions or comments you might have. # #Chip Rosenthal #chip@vector.UUCP #25 Nov 87 # END_OF_FILE_README.sco echo "original file size: 113 632 4386 README.sco" echo "extracted file size: `wc README.sco`" echo "x - Makefile.sco (file 2 of 3)" sed -e 's/.//' << 'END_OF_FILE_Makefile.sco' > Makefile.sco ## Makefile for smail under SCO XENIX ## ## Wed Nov 25 13:02:54 CST 1987 - C. Rosenthal ## Documented for net distribution. # ## @(#)Makefile 2.5 (smail) 9/15/87 # ## Things to do: ## make make executables ## make all " " ## make install perform XENIX installation ## make remove de-install smail ## make clean cleanup this directory ## make clobber ...and remove executables from this dir # #SHELL= /bin/sh #CFLAGS = -i -O ##LIBS = -lmalloc ** don't use -lmalloc!! it causes core dumps ** # #OBJECTS = main.o map.o resolve.o deliver.o misc.o alias.o pw.o headers.o getpath.o str.o getopt.o # #all: smail execmail ##all: smail svbinmail lcasep pathproc mkfnames nptx # #smail: $(OBJECTS) # cc -F 5000 $(CFLAGS) $(OBJECTS) -o smail $(LIBS) # #$(OBJECTS): defs.h # cc $(CFLAGS) -c $< # #svbinmail: svbinmail.c defs.h # cc $(CFLAGS) svbinmail.c -o $@ # #lcasep: lcasep.c # cc $(CFLAGS) lcasep.c -o lcasep # #pathproc: pathproc.sh # cp pathproc.sh pathproc # chmod 755 pathproc # #mkfnames: mkfnames.sh # cp mkfnames.sh mkfnames # chmod 755 mkfnames # #nptx: nptx.o pw.o str.o # cc $(CFLAGS) nptx.o pw.o str.o -o nptx $(LIBS) # #nptx.o: nptx.c # cc $(CFLAGS) -c nptx.c # #execmail: execmail.c # cc $(CFLAGS) execmail.c -o execmail # #clean: # rm -f *.o *.ln a.out core # #clobber: clean # rm -f smail rmail lcasep pathproc mkfnames svbinmail nptx execmail # ########################### ## SCO XENIX Installation # ########################### # #INSTALL= /bin/lmail /bin/rmail /bin/smail /usr/lib/mail/execmail #CHANGE= /usr/bin/rmail.old /usr/lib/mail/execmail.old #MANDIR= /usr/man/local/man8 #MANSUF= 8L #MANPAGES= $(MANDIR)/aliases.$(MANSUF) \ # $(MANDIR)/lcasep.$(MANSUF) \ # $(MANDIR)/mkfnames.$(MANSUF) \ # $(MANDIR)/nptx.$(MANSUF) \ # $(MANDIR)/pathproc.$(MANSUF) \ # $(MANDIR)/paths.$(MANSUF) \ # $(MANDIR)/smail.$(MANSUF) # #install: all $(CHANGE) $(INSTALL) $(MANPAGES) # @echo "=== Your global mailrc needs to contain 'set execmail'." # @echo "=== I'll check and add it if required..." # grep 'set execmail' /usr/lib/mail/mailrc > /dev/null || \ # echo 'set execmail' >> /usr/lib/mail/mailrc # #remove: # -rm $(INSTALL) # -rm $(MANPAGES) # -mv /usr/bin/rmail.old /usr/bin/rmail # -mv /usr/lib/mail/execmail.old /usr/lib/mail/execmail # #/usr/bin/rmail.old: ; mv /usr/bin/rmail $@ #/usr/lib/mail/execmail.old: ; mv /usr/lib/mail/execmail $@ # #/bin/smail: smail ; cp $? $@ #/bin/rmail: /bin/smail ; -ln $? $@ #/bin/lmail: /usr/lib/mail/mail.local ; ln $? $@ #/usr/lib/mail/execmail: execmail ; cp $? $@ # #$(MANDIR)/aliases.$(MANSUF): aliases.8 ; cp $? $@ #$(MANDIR)/lcasep.$(MANSUF): lcasep.8 ; cp $? $@ #$(MANDIR)/mkfnames.$(MANSUF): mkfnames.8 ; cp $? $@ #$(MANDIR)/nptx.$(MANSUF): nptx.8 ; cp $? $@ #$(MANDIR)/pathproc.$(MANSUF): pathproc.8 ; cp $? $@ #$(MANDIR)/paths.$(MANSUF): paths.8 ; cp $? $@ #$(MANDIR)/smail.$(MANSUF): smail.8 ; cp $? $@ # END_OF_FILE_Makefile.sco echo "original file size: 103 356 2837 Makefile.sco" echo "extracted file size: `wc Makefile.sco`" echo "x - execmail.c (file 3 of 3)" sed -e 's/.//' << 'END_OF_FILE_execmail.c' > execmail.c #/* # * execmail - Replacement for execmail for smail under SCO XENIX # * # * This program is derived from an article from Chip Salzenberg (chip@ateng). # * Below is his news article and the program. Note that his article suggests # * that "/usr/lib/mail/execmail" (the original one--not the replacement) # * be used as the local delivery agent. Unfortunately, this munges up # * the "From" line in the mail header. Instead, "/usr/lib/mail/mail.local" # * should be used. # * # * Wed Nov 25 13:41:01 CST 1987 - C. Rosenthal # * Commented for net distribution. # */ # #/* # * From: chip@ateng.UUCP (Chip Salzenberg) # * Newsgroups: comp.unix.xenix # * Subject: RFC822 addresses and Xenix `mail' # * Message-ID: <92@ateng.UUCP> # * Date: 2 Nov 87 15:19:09 GMT # * Organization: A.T. Engineering, Tampa, FL # * Lines: 96 # * # * In article <536@bms-at.UUCP> stuart@bms-at.UUCP (Stuart D. Gathman) writes: # * > # * >Unfortunately, SCO mail screens addresses for garbage characters # * >(e.g. '@' & '.') before passing mail to /bin/rmail. As I say on # * >many occasions, "Gee, they sure went to a lot of trouble to make # * >it not work!" # * # * This `feature' is easy to defeat. # * # * In the /usr/lib/news/mailrc file, add this line: # * # * set execmail # * # * This causes the mail program to hand all mail to /usr/lib/mail/execmail. # * (This gem is courtesy of Tom Walsh-- thanks, Tom.) # * # * It is then necessary to rename the existing /usr/lib/mail/execmail to # * something else, say execmail.x, and then have smail use execmail.x as the # * local delivery agent. # * # * And of course, you need to install a replacement for execmail. This is # * my execmail replacement: # * # */ # ##include ##define SMAIL "/bin/smail" # #main(argc, argv) #int argc; #char **argv; #{ # char *progname = argv[0]; # # /* # * Drop the execmail options. # */ # while (argv[1][0] == '-') { # switch (argv[1][1]) { # case 'f': # case 'h': # argv += 2; # break; # default: # ++argv; # break; # } # } # # argv[0] = progname; # execv(SMAIL, argv); # fprintf(stderr, "%s: can't execute smail!\n", progname); # exit(1); #} # END_OF_FILE_execmail.c echo "original file size: 78 331 2095 execmail.c" echo "extracted file size: `wc execmail.c`" echo "extracted 3 files" exit 0