home *** CD-ROM | disk | FTP | other *** search
- .SH
- The MMDF Design
- .PP
- The MMDF system design has not changed fundamentally
- from the original design proposed and implemented for MMDFI.
- The design of MMDFI is covered in detail in the paper
- ``An Internetwork Memo Distribution Capability''.
- .FN
- D. Crocker, E. Szurkowski, and D. Farber,
- ``An Internetwork Memo Distribution Capability'', Datacom Conference,
- September 1979.
- .FE
- In this chapter, I will summarize the basic design and discuss
- those changes that have been made in MMDFII.
- .PP
- Mail software is normally classed into one of two groups.
- A user agent (UA) is a program
- that is responsible for providing a ``user friendly'' interface
- for reading or writing mail and converting to the canonical
- interface of the mail transfer agent as necessary.
- A mail transfer agent (MTA) is a program or system
- to which you or your user agent entrusts a message for delivery
- to someone else's user agent.
- There has been a great deal of confusion caused by people who
- fail to realize the difference between a mail transfer agent and
- a user agent, or even that a difference exists!
- There is a wide variety of user agents which can be used with
- MMDF, and it is the responsibility of the use agent to provide a user interface.
- This separation of the functions of user agent and mail transfer
- agent has many advantages, not the least of which is that MMDF
- can support many different user interfaces with ease.
- Currently, there are at least five different interfaces available
- including the Rand MH system, V6 style mail, Berkeley's Mail (cap-mail),
- the Tenex-style Send and Msg programs, and Rmail (for UUCP).
- MMDF is a mail transfer agent.
- MMDF does not have, nor does it claim to have, a good ``user interface'';
- instead it has a good program (MTA-UA) interface.
- MMDF accepts messages for delivery either locally or to a remote
- site. It attempts to verify the validity of the addresses at submission
- time to the extent possible given only a host table and a list of
- local addresses. If accepted, it will continually try to resend the
- message until the retry time is exhausted at which time
- the message is returned to the sender.
- .PP
- The MMDF system can be thought of as two subsystems, responsible
- for mail submission and mail delivery, respectively.
- Between these two halves is the mail queue.
- The mail queue will be discussed later, but basically it stores each
- message as two files, an address list with some control information, and
- a separate file containing only the message text (header and body).
- .PP
- The submission half of the system consists mainly of one program,
- called ``\fBsubmit\fR'', which is responsible for enqueuing mail to be
- delivered. As much verification as possible is performed on the
- message at
- submission time.
- For mail destined for the local machine, this means making sure the
- destination account exists, and that any local mailing list or aliases
- expand properly.
- For mail that has a non-local host specification, the \fBsubmit\fR
- process checks to see if it knows how to reach the specified host.
- Mail which for any reason is known to be undeliverable, is not accepted
- for delivery.
- \fBSubmit\fR is called by two types of processes. The first group includes
- user agents such as the \fBsend\fR program. The second group
- comprises channel
- programs such as \fBrmail\fR
- .FN
- The \fBrmail\fR program (/bin/rmail) is
- invoked by uucp when delivering mail
- on your system.
- .FE
- which are interfacing to remote mail transfer agents.
- .PP
- The delivery portion of MMDF is represented by two main elements: the
- \fBdeliver\fR program which manages the queue, and
- the channel programs which handle the details of
- delivery to a specific network, host, or mail system.
- The \fBdeliver\fR program takes each message which is eligible to
- be delivered, and opens the appropriate address list. For each address
- in the list, \fBdeliver\fR ensures that it is running the appropriate channel
- program and then passes the envelope information
- .FN
- The MMDF envelope information consists of the the
- return address, the destination addresses, some delivery options and
- a reference to the message text file.
- .FE
- to the channel. A reference to the file containing the actual
- message text is passed to the
- channel program. The channel decides how
- to deliver the message and sees to any necessary message reformatting
- that may be necessary (e.g. ``header munging'').
- .PP
- There is currently a variety of channels and the number is growing.
- The local channel handles delivery of messages to local addresses.
- The list channel is a special, somewhat incestuous, channel which acts
- the role of channel, receiving user agent, and sending user agent all
- in one. The list channel resubmits mail back into the mail system
- by calling \fBsubmit\fR.
- This has several benefits that will be discussed later.
- .FN
- See the section on the list channel.
- .FE
- The SMTP channel delivers mail via TCP/IP connections using the SMTP
- protocol.
- .FN
- J. Postel, ``RFC821 - Simple Mail Transfer Protocol'', Network Information
- Center, SRI International, August 1982.
- .FE
- The phone channel uses the PhoneNet link-level protocol software
- developed at the University of Delaware for sending mail over
- dialup or hard-wired terminal lines.
- The NIFTP channel queues mail as files to be transferred using the
- NIFTP protocol used in the British research community.
- The UUCP channel is used to queue requests for transfer using UUCP.
- .PP
- Development of MMDFII was started about the same time that the Sendmail
- mail transfer agent was being
- written by Eric Allman at Berkeley.
- Dave Crocker met with Eric on a number of occasions and was impressed
- by his work.
- Some elements of the Berkeley software were so useful that
- they inspired the development of similar facilities in MMDFII.
- Not the least of these was the runtime configuration file.
- It is now possible to configure the MMDF software totally from a
- single, ASCII-text-based configuration file.
- Unlike Sendmail's terse configuration syntax, MMDF uses much more
- verbose keyword/value pairing for configuration information.
- MMDFII can be configured either from compiled-in values, for fast startup,
- or totally from the text configuration file, or from any combination of the
- two.
- As a result of the fact that many values can be compiled-in, the usual
- MMDF tailoring file is one-tenth the size of
- a Sendmail tailoring file, and can be even smaller, even on a large relay site.
- The runtime configuration file is one of the most useful additions
- in MMDFII, especially for sites supporting more than one host,
- since one can now run the same binaries on all machines of the same type.
- Another Berkeley-inspired facility was the ability to have an alias
- file entry that forces a delivery to a file or pipe.
- While initially insecure, this facility has been made
- reliable by adding code to \fBsubmit\fR that knows when you are
- processing an alias file entry and when you are processing some
- other type of address.
- Simple ownership of the file containing the address was not considered
- sufficient protection since there are too many
- files left writable to the world that are owned by root or other
- privileged users.
-