Annotation of 43BSDReno/share/doc/ucs/mmdf/p2, revision 1.1.1.1

1.1       root        1: .SH
                      2: The MMDF Design
                      3: .PP
                      4: The MMDF system design has not changed fundamentally
                      5: from the original design proposed and implemented for MMDFI.
                      6: The design of MMDFI is covered in detail in the paper
                      7: ``An Internetwork Memo Distribution Capability''.
                      8: .FN
                      9: D. Crocker, E. Szurkowski, and D. Farber,
                     10: ``An Internetwork Memo Distribution Capability'', Datacom Conference,
                     11: September 1979.
                     12: .FE
                     13: In this chapter, I will summarize the basic design and discuss
                     14: those changes that have been made in MMDFII.
                     15: .PP
                     16: Mail software is normally classed into one of two groups.
                     17: A user agent (UA) is a program
                     18: that is responsible for providing a ``user friendly'' interface
                     19: for reading or writing mail and converting to the canonical
                     20: interface of the mail transfer agent as necessary.
                     21: A mail transfer agent (MTA) is a program or system
                     22: to which you or your user agent entrusts a message for delivery
                     23: to someone else's user agent.
                     24: There has been a great deal of confusion caused by people who
                     25: fail to realize the difference between a mail transfer agent and 
                     26: a user agent, or even that a difference exists!
                     27: There is a wide variety of user agents which can be used with
                     28: MMDF, and it is the responsibility of the use agent to provide a user interface.
                     29: This separation of the functions of user agent and mail transfer
                     30: agent has many advantages, not the least of which is that MMDF
                     31: can support many different user interfaces with ease.
                     32: Currently, there are at least five different interfaces available
                     33: including the Rand MH system, V6 style mail, Berkeley's Mail (cap-mail),
                     34: the Tenex-style Send and Msg programs, and Rmail (for UUCP).
                     35: MMDF is a mail transfer agent.
                     36: MMDF does not have, nor does it claim to have, a good ``user interface'';
                     37: instead it has a good program (MTA-UA) interface.
                     38: MMDF accepts messages for delivery either locally or to a remote
                     39: site.  It attempts to verify the validity of the addresses at submission
                     40: time to the extent possible given only a host table and a list of
                     41: local addresses.  If accepted, it will continually try to resend the
                     42: message until the retry time is exhausted at which time
                     43: the message is returned to the sender.
                     44: .PP
                     45: The MMDF system can be thought of as two subsystems, responsible
                     46: for mail submission and mail delivery, respectively.
                     47: Between these two halves is the mail queue.
                     48: The mail queue will be discussed later, but basically it stores each
                     49: message as two files, an address list with some control information, and
                     50: a separate file containing only the message text (header and body).
                     51: .PP
                     52: The submission half of the system consists mainly of one program,
                     53: called ``\fBsubmit\fR'', which is responsible for enqueuing mail to be
                     54: delivered.  As much verification as possible is performed on the
                     55: message at
                     56: submission time.
                     57: For mail destined for the local machine, this means making sure the
                     58: destination account exists, and that any local mailing list or aliases
                     59: expand properly.
                     60: For mail that has a non-local host specification, the \fBsubmit\fR
                     61: process checks to see if it knows how to reach the specified host.
                     62: Mail which for any reason is known to be undeliverable, is not accepted
                     63: for delivery.
                     64: \fBSubmit\fR is called by two types of processes.  The first group includes
                     65: user agents such as the \fBsend\fR program.  The second group 
                     66: comprises channel
                     67: programs such as \fBrmail\fR
                     68: .FN
                     69: The \fBrmail\fR program (/bin/rmail) is
                     70: invoked by uucp when delivering mail
                     71: on your system.
                     72: .FE
                     73: which are interfacing to remote mail transfer agents.
                     74: .PP
                     75: The delivery portion of MMDF is represented by two main elements: the
                     76: \fBdeliver\fR program which manages the queue, and
                     77: the channel programs which handle the details of
                     78: delivery to a specific network, host, or mail system.
                     79: The \fBdeliver\fR program takes each message which is eligible to
                     80: be delivered, and opens the appropriate address list.  For each address
                     81: in the list, \fBdeliver\fR ensures that it is running the appropriate channel
                     82: program and then passes the envelope information
                     83: .FN
                     84: The MMDF envelope information consists of the the
                     85: return address, the destination addresses, some delivery options and
                     86: a reference to the message text file.
                     87: .FE
                     88: to the channel.  A reference to the file containing the actual
                     89: message text is passed to the
                     90: channel program.  The channel decides how
                     91: to deliver the message and sees to any necessary message reformatting
                     92: that may be necessary (e.g. ``header munging'').
                     93: .PP
                     94: There is currently a variety of channels and the number is growing.
                     95: The local channel handles delivery of messages to local addresses.
                     96: The list channel is a special, somewhat incestuous, channel which acts
                     97: the role of channel, receiving user agent, and sending user agent all
                     98: in one.  The list channel resubmits mail back into the mail system
                     99: by calling \fBsubmit\fR.
                    100: This has several benefits that will be discussed later.
                    101: .FN
                    102: See the section on the list channel.
                    103: .FE
                    104: The SMTP channel delivers mail via TCP/IP connections using the SMTP
                    105: protocol.
                    106: .FN
                    107: J. Postel, ``RFC821 - Simple Mail Transfer Protocol'', Network Information
                    108: Center, SRI International, August 1982.
                    109: .FE
                    110: The phone channel uses the PhoneNet link-level protocol software
                    111: developed at the University of Delaware for sending mail over
                    112: dialup or hard-wired terminal lines.
                    113: The NIFTP channel queues mail as files to be transferred using the
                    114: NIFTP protocol used in the British research community.
                    115: The UUCP channel is used to queue requests for transfer using UUCP.
                    116: .PP
                    117: Development of MMDFII was started about the same time that the Sendmail 
                    118: mail transfer agent was being
                    119: written by Eric Allman at Berkeley.
                    120: Dave Crocker met with Eric on a number of occasions and was impressed
                    121: by his work.
                    122: Some elements of the Berkeley software were so useful that
                    123: they inspired the development of similar facilities in MMDFII.
                    124: Not the least of these was the runtime configuration file.
                    125: It is now possible to configure the MMDF software totally from a
                    126: single, ASCII-text-based configuration file.
                    127: Unlike Sendmail's terse configuration syntax, MMDF uses much more
                    128: verbose keyword/value pairing for configuration information.
                    129: MMDFII can be configured either from compiled-in values, for fast startup,
                    130: or totally from the text configuration file, or from any combination of the
                    131: two.
                    132: As a result of the fact that many values can be compiled-in, the usual
                    133: MMDF tailoring file is one-tenth the size of
                    134: a Sendmail tailoring file, and can be even smaller, even on a large relay site.
                    135: The runtime configuration file is one of the most useful additions
                    136: in MMDFII, especially for sites supporting more than one host,
                    137: since one can now run the same binaries on all machines of the same type.
                    138: Another Berkeley-inspired facility was the ability to have an alias
                    139: file entry that forces a delivery to a file or pipe.
                    140: While initially insecure, this facility has been made
                    141: reliable by adding code to /fBsubmit/fR that knows when you are
                    142: processing an alias file entry and when you are processing some
                    143: other type of address.
                    144: Simple ownership of the file containing the address was not considered
                    145: sufficient protection since there are too many
                    146: files left writable to the world that are owned by root or other
                    147: privileged users.

unix.superglobalmegacorp.com

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