Annotation of 40BSD/cmd/delivermail/READ_ME, revision 1.1

1.1     ! root        1: This directory contains the files for delivermail.  On some
        !             2: installations it may also contain the source files for
        !             3: auxiliary mailers.
        !             4: 
        !             5: The approximate description of each file is as follows:
        !             6: 
        !             7: TO_BE_DONE     New features to be put in (maybe) at some time.
        !             8: addr.c         Routines to manipulate addresses and address
        !             9:                lists.
        !            10: alias.c                Does name aliasing in all forms.
        !            11: alias.c.save   An old version which has a tentative (and later
        !            12:                rejected) method of mail forwarding.
        !            13: arpa-mailer.8  Documentation for arpa.c.
        !            14: arpa.c         The auxiliary mailer for the ARPANET.
        !            15: arpadate.c     A subroutine used by delivermail & arpa.c which
        !            16:                creates ARPANET standard dates.
        !            17: bmove.c                A core-to-core move.  This is in a seperate file
        !            18:                because it can easily be replaced by a blindingly
        !            19:                efficient version on Vaxes.
        !            20: conf.ucb.c     Our configuration file.  This uses compilation flags
        !            21:                from <whoami.h> to figure out what to do.
        !            22: conf.c         A stripped version of conf.ucb.c; if you are forced to
        !            23:                build a configuration file from scratch, you are
        !            24:                probably better off starting with this one.
        !            25: deliver.c      Routines to deliver mail, including queueing up
        !            26:                for eventual delivery & actual sending.
        !            27: delivermail.8  Documentation for delivermail.
        !            28: dlvrmail.h     Main header file for delivermail.
        !            29: err.c          Routines to print error messages.
        !            30: mail-dm.c      Example of the code in server ftp for the Arpanet
        !            31:                software.
        !            32: mailaliases.5  Documentation for the alias file used by delivermail.
        !            33: main.c         The main routine to delivermail.  This file also
        !            34:                contains some miscellaneous routines.
        !            35: makefile       The makefile used here.
        !            36: maketemp.c     The routine that actually reads the mail into a temp
        !            37:                file.  It also does a certain amount of parsing of
        !            38:                the header, etc.
        !            39: matchhdr.c     A routine used by delivermail & arpa.c (& others?)
        !            40:                which performs a match on ARPANET format header items.
        !            41: parse.c                The routines which do address parsing.
        !            42: savemail.c     Routines which save the letter on processing errors.
        !            43: sysexits.c     List of error messages associated with error codes
        !            44:                in sysexits.h.
        !            45: sysexits.h     List of exit statuses that could someday become a
        !            46:                standard.  In any case, they are what delivermail &
        !            47:                a handful of other programs use.
        !            48: useful.h       A header file containing a few things that appear to
        !            49:                be useful for even the most various programs.
        !            50: userinfo.5     Tentative documentation for the proposed (and rejected)
        !            51:                user info database.
        !            52: util.c         Some general purpose routines used by delivermail.
        !            53: v6-mail.c      Local mailer under version 6.  This is included to
        !            54:                permit you to see the sorts of modifications that
        !            55:                had to take place.
        !            56: vax-mail.c     Local mailer under VM/UNIX (similar for V7).  This
        !            57:                is also included as an example.  This is more complex
        !            58:                than v6-mail.c because it has to be able to deal with
        !            59:                UUCP mail also.  Beware of local hacks that will not
        !            60:                apply to your installation.
        !            61: version.c      A file defining the version.  This gets bumped every
        !            62:                time a new version is installed (theoretically).
        !            63: 
        !            64: [This list was current as of 10/27/80]
        !            65: 
        !            66: The configuration table distributed here should work with a vanilla
        !            67: system.  It will try to figure out who you are from whoami.h.  It
        !            68: depends on:
        !            69:        BERKELEY -- if set, does all the Berkeley-specific stuff.
        !            70:                Other local compilation flags provide machine-
        !            71:                specific definition.
        !            72:        V6 -- set this if you are on version 6 system.
        !            73:        sysname -- a defined constant which is your name on the
        !            74:                UUCP net.  It is assumed that you are on the UUCP
        !            75:                net.
        !            76: 
        !            77: There are two tables in conf.c which are critical.  The first is
        !            78: the Mailers table.  This describes each mailer available to your
        !            79: system.  The second is the parse table, describing how to decide
        !            80: what net an address applies to, etc.  The comments in the code
        !            81: should explain how to set these up.  If you do not have any more
        !            82: nets than berknet, uucp, and arpanet, and if the mailers for these
        !            83: are in the standard places, you probably won't have to touch the
        !            84: Mailers table.
        !            85: 
        !            86: You will also have to create a new makefile.  There are only two
        !            87: basic types: for a v6 system & for a v7 system.  All pathnames &
        !            88: system dependent stuff should be in conf.c.  The makefile distributed
        !            89: is for our CSVAX site, and should work for you.  You may want to
        !            90: change some of the compile flags as listed in the makefile; these
        !            91: control things like logging, hashed alias tables, and debugging
        !            92: info.
        !            93: 
        !            94: You will have to change your equivalent of /bin/mail to take a
        !            95: "-d" flag.  If this flag is not asserted, /bin/mail should just
        !            96: turn itself into /etc/delivermail (this is probably in a routine
        !            97: called "bulkmail" or "sendmail").  The code looks like something
        !            98: like:
        !            99: 
        !           100: # ifdef DELIVERMAIL
        !           101:        {search argv for a -d flag}
        !           102:        if (!dflag)
        !           103:        {
        !           104:                argv[0] = "-delivermail";
        !           105:                argv[argc] = 0;
        !           106:                execv(DELIVERMAIL, argv);
        !           107:                perror(DELIVERMAIL);
        !           108:        }
        !           109:        {ignore -d flag in further processing}
        !           110: # endif
        !           111: 
        !           112: This is actually somewhat oversimplified.  See the example mailers
        !           113: for something more realistic.  Besides the mailers in this directory,
        !           114: see ../berknet/v6mail.c.
        !           115: 
        !           116: Argv[0] should begin with a "-" to indicate that it is being called
        !           117: from /bin/mail.
        !           118: 
        !           119: If you are running server ftp on arpanet, you will have to change
        !           120: the incoming mail routine to accept mail for any address (rather than
        !           121: checking to see that the user exists).  Instead of writing the
        !           122: mail in some non-standard mailbox, pipe the mail to /etc/delivermail
        !           123: instead (include the -a flag).  Delivermail will mail back a message
        !           124: if the letter can't be sent.  Also, I have changed the "success"
        !           125: message to read "Mail accepted" rather than "Mail delivered", since
        !           126: the mere fact that delivermail chewed up the mail does not mean that
        !           127: it has been delivered.  Our "mail-dm.c" is given as an example.
        !           128: 
        !           129: Sometimes (particularly in Arpa-land) mail comes from a person who
        !           130: doesn't really exist.  Some mail will be returned to them from a
        !           131: pseudo-user named ~MAILER~DAEMON~, which will of course be returned.
        !           132: But ~MAILER~DAEMON~ does not exist, so it is returned.... and you have
        !           133: a loop.  To break this, every site should have the entry:
        !           134:        ~MAILER~DAEMON~:root
        !           135: in their aliases file.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.