MMDF, the Multichannel Memorandum Distribution Facility, is a message transfer agent (MTA), a computer program designed to transmit email. History MMDF was originally developed at the University of Delaware in the late 1970s, and provided the initial means of operating CSNET, the predecessor to NSFNET. It grew in popularity throughout the 1980s, and was selected by the Santa Cruz Operation as the MTA it would distribute with SCO UNIX in 1989. It was also adopted as the basis for other commercial efforts, including the gateway used to connect the MCI Mail service to Internet mail. A re-coded variant of MMDF, called Pascal MDF (PMDF) was written at the University of Pennsylvania for VMS and was eventually commercialized through Ned Freed's Innosoft, which subsequently ported PMDF to Tru64 Unix and Solaris. In 1999 PMDF was translated from Pascal to C. The C version of PMDF became the basis of the Sun Java System Messaging Server of Sun Microsystems, while rights to PMDF itself were purchased by Process Software, which then ported PMDF to Linux. Design philosophy As its name denotes, MMDF is an MTA oriented around the idea of channels. Each means of formatting and transporting mail into or out of the mail system is a channel, and is implemented by a separate executable. This makes MMDF a highly modular system, with each module having all of the idiosyncratic syntax and semantic information necessary for a particular email technology or network, as well as the least privilege necessary, with the authority of each module partitioned from others. An inbound channel receives messages (via the protocol and in the format it implements) and an outbound channel delivers messages (via its relevant protocol and mapping into the relevant format). Internally, MMDF uses a canonical representation for message content and header, including addresses. Some examples of MMDF channels are SMTP, UUCP, and local (for delivering mail into local mailboxes and accepting mail submitted on the local system). MMDF was used on the CSNET network. Message flow A message that flows through MMDF will typically follow this path: An inbound channel accepts a message. It invokes the core of the MMDF system, a program called submit, and feeds it the message as well as the out-of-band information for the message - return address, recipient, etc. Submit stores the message text after doing any necessary header rewriting, determines what channel(s) will be used to deliver the