$Id: README,v 1.15 1999/12/02 01:19:06 chip Exp $
This is the README file for Deliver 2.1.



                           WHAT IS DELIVER?


Deliver delivers E-Mail on the local system.

Deliver allows any user to write a shell script that processes all
incoming mail messages for that user.  The system administrator may
also install scripts that process all messages.

The output of a script is a list of mail addresses, files and programs
that should receive the message.  It has access to each message as it
is processed, so the action can be content dependent.  The script may
also generate automatic replies, like the "vacation" program, or pass
along a modified version of the original message.

Deliver can be used to construct mail-based services (e.g. automatic
mailing list maintenance).  It can also be used to filter mail
automatically in prearranged ways (e.g. encryption and decryption,
tossing junk mail, or vacation notices).

Although deliver works best when installed set-user-id root, it can
perform many of its functions even when installed in the private bin
directory of a regular user.



                         HOW PORTABLE IS IT?


Deliver runs under (in alpabetical order):

    Op. Sys.              Vendor            Comments
    ------------------    --------------    ------------------------------
    Linux                 (free)            kernel 0.99.13+, libc 4.4.4+
    BSD                   (free)

    3B1 System V          AT&T
    AIX 3.1               IBM
    Coherent              Mark Williams
    CX/UX                 Harris
    HP-UX 8.x             HP                using cc or c89
    NeWS-OS 3.2           Sony
    NextOS 2.x            NeXT
    RiscOS                ?                 both flavors (BSD, SysV)
    SCO UNIX 3.2          SCO               using cc, rcc or gcc
    SCO Xenix 2.x, 3.x    SCO               both Xenix/286 and Xenix/386
    SunOS 3.x, 4.x        Sun
    System V              (generic)
    System V r4           (generic)
    V7                    AT&T

Configuration headers for various operating systems are found in
the "conf" directory of the Deliver distribution.

(The "conf" directory and the OS configuration header files found
therein are a new feature of Deliver 2.1.  Therefore, only a few of
the above operating systems have configuration headers in the current
Deliver distribution.)

The configuration system is designed to simplify the creation of new
configuration headers.  It is suggested that a new header include one
of base-posix.h, base-sysv.h, base-bsd.h or base-v7.h, followed by
"#define" and "#undef" directives describing the differences between
the included configuration and the target.  See os-sco.h for an example
of this approach.

If your installation of Deliver requires a new OS configuration
header, please send me a copy at <chip@pobox.com>, so I can include
it in the next patch.  If that address doesn't work, try @valinux.com
and @perlsupport.com.



             HOW DOES DELIVER FIT INTO YOUR MAIL SYSTEM?


Deliver can fit into your E-Mail system in three ways, depending on
the mail transport software you currently use:


  1.  Smail 2.x.

      You can use Deliver for local mail by changing the local mailer
      definition in defs.h:

            #define LMAIL(frm)      "/usr/bin/deliver -r '%s'",frm

      Smail 2.5 can be configured to use Deliver for non-local mail as
      well, but no one in their right mind is still using Smail 2.x, so
      what's the point?


  2.  Sendmail, Exim, Smail 3.x, etc.

      Any user can let Deliver handle all his mail by putting the
      following line in his .forward file:

            "|/usr/bin/deliver username"

      Be sure to specify the correct username, or someone else will
      get your mail!

      Sendmail users should read the file SENDMAIL for hints on other
      ways to integrate Deliver and Sendmail.


  3.  The SCO Xenix mail system.

      Deliver was invented to be a direct replacement for the Xenix
      program /usr/lib/mail/mail.local.  In fact, when I ran Xenix,
      mail.local was a link to /usr/bin/deliver.  But I'm better now.



                        DANGER, WILL ROBINSON!


  1.  Deliver is intended to be run setuid root; otherwise it would
      not be possible to execute a user delivery file in the context
      of its owner.  Any setuid root program is a potential security
      hole!  Be careful of the modes on the Deliver binary and the
      directory where it lives.  See the file INSTALL for details.

  2.  Deliver's flexibility makes it easy to lose lots of mail through
      carelessness in configuration.  Write delivery files with
      extreme care.



		       CAVEAT ADMINISTRATOR
				-or-
                 DISCLAIMER?  I DON'T EVEN KNOW HER!


Everyone makes mistakes, even (gasp!) me.

It is therefore possible that, despite all the care that went into
Deliver, some until-now unimagined condition might trigger a bug,
maybe even opening a security hole.  It could also happen (and, in
fact, it _has_ happened) that some new whiz-bang operating system
feature might allow an end-run around Deliver's security precautions.

Of course, if you find a bug, you can also fix it, because you have
the source code.  Remember my motto:

      If you don't have source code, it isn't software.
      It's just hardware on a CD-ROM.

See also http://www.opensource.org for more info on this subject.



                       COMPILING AND INSTALLING


Edit the Makefile to taste.  In particular, set OSHEADER to the name
of the configuration header file that describes your OS.  To make
configuration changes specific to your site, edit conf/local.h.  See
the Makefile for more instructions.

  ** Note that HAS_NFS must be set before conf/local.h is included,
     typically in the OS configuration header.

You can arrange to have all Deliver files installed in subdirectories
of a single directory.  If such an arrangement suits you, edit the
Makefile: set DELHOME to the desired directory, and uncomment the
definition of HDEFS.  If DELHOME is defined, Deliver binaries are
installed in DELHOME/bin, global delivery files are located in
DELHOME/lib, and log files are created in DELHOME/log.  See config.h
for details.

After configuration, type "make".  To install, type "make install".
For more information on installation, read the file INSTALL.



                           ACKNOWLEDGEMENTS


Deliver would be a mere shadow of its present self if not for help
from the many people who contributed suggestions and bug fixes.  Thank
you.

Special thanks go to the Deliver 2.1 beta testers: Neil Rickert
<rickert@cs.niu.edu>, Goran Larsson <hacker@isadora.sypro.se> and G.
Paul Ziemba <paul@alantec.com>.  I couldn't have done it without you.



                          COPYING CONDITIONS


As the author of Deliver, I (Chip Salzenberg) retain copyright to it.
However, I hereby state that anyone may freely redistribute Deliver
and works derived from it, with or without source code, as long as no
false claims of authorship or ownership are made.



                         HELP SAVE THE WORLD!


If you run into a bug, you are probably not alone.  Save your fellow
human beings from toil and trouble!  All bug reports and patches are
appreciated.  Please mail them to the one of the addresses below.

Thank you, and good night.

        Chip Salzenberg <chip@pobox.com>
