SHORT TERM TASKS

  * Elevate "vacation" to a real release program -- check man pages,
    install in /usr/ucb, etc.  May need some work -- it's still a bit
    tricky to use.

  * Throw in "smart UUCP" mailer that knows about neighbors that can
    handle more than one recipient at once.  This is easy and should
    be very useful for certain sites.  Configuration files should
    default to "dumb" however.

  * Clean up configuration on releases -- send out fewer Berkeley and
    more basic configs (e.g., BLI).

  * Verify that new name server doesn't confuse sendmail.

  * Only add Message-Id: if message is locally generated (???).

  * Improve documentation describing how to create a config file --
    probably means putting more configs on distrib.

  * Listen in UNIX domain (as well as INET)?

  * A way to mark addresses in the queue as you process them as "done" --
    probably by appending lines to the cf* file.  The point here is to
    avoid duplicate messages to large lists if a crash occurs during
    processing.  This is hard.



LONG TERM TASKS

  * Break up sendmail into several smaller programs:

	queueup -- insert message into mail queue; call runqueue when
		done -- called by user, smtpserver, cleanqueue (to return
		expired messages), etc.
	runqueue -- process queue entries -- take optional job name list
		to run only those jobs -- called by queueup and by cron
		to push the queue.
	printqueue -- print mail queue.
	cleanqueue -- return expired messages; basic consistency
		checking.
	smtpserver -- process smtp connections, pass to queueup -- this
		can probably become a simple service a la 'inetd'.
	addrtest -- essentially "-bt" mode.
	verifyaddr -- verify an address list -- "-bv" mode -- needs a
		"noisy" and a "silent" mode (exit status only).  This
		should be the same code as smtpserver and queueup use
		to verify addresses.
			[This may want "shallow" and "deep" modes, where
			deep mode tries to connect to the remote site if
			on SMTP and issue a "VRFY" command.]
	newaliases -- build alias file -- should not be part of sendmail
		proper.  (See editalias below -- that would probably
		preempt -- although a text form will be critical for
		interchange.)

    It may be better to make runqueue a daemon on 4.2 and have queueup
    poke it (using a datagram).  This guarantees single threading (is this
    an advantage? -- long jobs can block the queue) and minimizes
    gratuituous forks/execs.  However, I feel strongly that portability
    is important -- the fork/exec method should still be included.

  * New programs:

	editalias -- front end to modify alias database, including
		"ownership" (so that people can modify lists that they
		own, but not other lists) -- see Grapevine papers --
		distributed????
	rmqueue -- remove a job from the queue.  Usual ownership rules
		should apply of course.

  * Change config file to be more understandable -- yacc grammar probably.
    Perhaps defaults should be compiled in whenever possible.

  * Only use rewriting rules to go to and from canonical format.  Other
    resolution should be defined by the name server (See MMDF).

  * Perhaps there should be a "compiled format" for the configuration
    file, something between a yacc-style config and the freeze file; very
    quick to read w/ low overhead.  [Suggest a struct with "char *" being
    index into a buffer area; these can be mapped internal <==> external
    easily.]

  * Move functionality:

	[]  Currently sendmail will rewrite "To: miriam mckusick" to
	    "To: miriam, mckusick" unless some "special" characters
	    are used (e.g.,  ()<>,;  -- characters specific to RFC822).
	    This should be moved to the user agent (Mail, rmail, MH,
	    etc.).  Big job because all user agents must be modified.
	[]  Would be nice if UUCP shit-format was handled by UUCP
	    itself.  This has serious performance implications unless
	    actually built into UUCP.

  * Non-sendmail related changes:

	[]  UUCP routing code (part of the name server really) -- can
	    the work that Peter Honeyman or others have done be useful?
	    [A significant point is making this work given incomplete
	    information -- yum yum.  Some database work in this area.]
	[]  Reply code in ucbMail has little relation to current mail
	    software.  "Smarts" should be stripped out.
