|
|
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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.