|
|
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.