home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / mmdf / mmdf-IIb.43 / doc / addressing next >
Encoding:
Text File  |  1986-02-27  |  35.2 KB  |  1,016 lines

  1. .nr Fn 0 +1
  2. .de FN
  3. .ps -2
  4. \u\\n+(Fn\d
  5. .ps +2
  6. .FS \\n(Fn
  7. \n(Fn. 
  8. ..
  9. .TL
  10. Addressing in MMDF II
  11. .AU
  12. Steve Kille
  13. .sp
  14. <Steve@CS.UCL.AC.UK>
  15. .AI
  16. Department of Computer Science
  17. University College London
  18. .AB
  19. The Multi-channel Memorandum Distribution Facility (MMDF) is a
  20. powerful and flexible Message Handling System for the
  21. .UX
  22. operating system.  It is a message transport system designed to
  23. handle large numbers of messages in a robust and efficient
  24. manner.  MMDF's modular design allows flexible choice of User
  25. Interfaces, and direct connection to several different
  26. message transfer protocols.
  27. .PP
  28. This paper is intended as a sequel to the paper presented by
  29. Doug Kingston at the 1984 Usenix meeting in Salt Lake City \*([.Kingston84\*(.].
  30. A brief technical overview of MMDF is given, and then two aspects are
  31. considered in more detail.
  32. First, the table-driven approach taken by MMDF to
  33. handling a structured address space is described, and then the
  34. extension of this approach to use with distributed nameservers
  35. is considered.
  36. Several distributed message systems using similar, but
  37. distinct, message and address formats have emerged.  The
  38. message reformatting
  39. approach taken by MMDF to allow interworking is described.
  40. Finally, a comparison with other systems is
  41. made.
  42. .AE
  43. .SH
  44. Introduction
  45. .PP
  46. The Multi-channel Memorandum Distribution Facility (MMDF) is a
  47. powerful and flexible Message Handling System for the UNIX
  48. operating system \*([.Crocker79,\|Kingston84\*(.].
  49. It was originally developed for use on
  50. Csnet \*([.Comer83\*(.],
  51. to provide message relaying services.  A version of MMDF
  52. stabilised in 1982 is the production system used by most Csnet
  53. sites.
  54. MMDF\ II, which is described here, has many
  55. changes relative to the earlier system.
  56. MMDF\ II is on beta test at several
  57. sites both in Europe and the US, and is expected to be
  58. fully available before this paper is presented.
  59. Although it is not currently a production system,
  60. it has been used to provide message
  61. relaying services for about two years at the
  62. Ballistic Research Laboratories, Maryland and at University
  63. College London, and more recently on the Csnet hub machine.
  64. Each of these sites has a variety of particularly demanding requirements,
  65. and are regarded as good testbeds.
  66. .PP
  67. The main requirements and features of MMDF\ II are as follows:
  68. .IP (1)
  69. Robust, reliable, and efficient message relaying.  Particular
  70. emphasis is placed on reducing message loss  to an absolute
  71. minimum.
  72. A two phase
  73. warning is used to handle message transfer delays.
  74. .IP (2)
  75. Support for multiple Message Transfer Protocols, and general
  76. interworking between them.  Currently supported are: Phonenet \*([.Crocker79\*(.],
  77. the Arpanet Simple Mail Transfer Protocol (SMTP) \*([.Postel82\*(.],
  78. the UK JNT
  79. Mail Protocol (Grey Book) \*([.Kille84\*(.],
  80. UUCP Mail \*([.Nowitz78\*(.],
  81. and indirectly CCITT X.400 protocols
  82. by use of
  83. the EAN system developed at University of British Columbia \*([.CCITT83,\|Neufeld83\*(.].
  84. .IP (3)
  85. Support for a wide range of User Interfaces.
  86. At present, v6mail, Shoens Mail, msg/send \*([.Vittal81\*(.],
  87. and MH \*([.Borden79\*(.],
  88. can all be used with
  89. MMDF\ II.
  90. .IP (4)
  91. Authentication \- that is submission time verification that a
  92. message conforms to RFC 822 (the standard on which  the generic
  93. message format for all
  94. MMDF\ II messages is based) \*([.Crocker82\*(.],
  95. and that the source is correctly specified.
  96. .IP (5)
  97. Authorisation \- that is the restriction of message flow for
  98. policy reasons, or assigning responsibility for a given message
  99. transfer (possibly for billing purposes) on the basis of
  100. the networks, users, and hosts involved.  This is discussed
  101. more fully in \*([.Brink85\*(.].
  102. .IP (6)
  103. Submission time address checking.  This allows for maximum
  104. address checking within the User Interface, and for more
  105. efficient network use by protocols such as SMTP and Phonenet.
  106. .IP (7)
  107. Flexible handling of local addresses, including aliasing,
  108. delivery to pipes and files, and enhanced support for
  109. distribution lists by use of a list channel.
  110. This is described
  111. in \*([.Kingston84\*(.].
  112. .IP (8)
  113. User configurable delivery time options.  This allows messages
  114. to be sorted according to destination and message header,
  115. and then
  116. processed accordingly.
  117. Processing can include: filing;
  118. redistribution; standard delivery; delivery to a pipe; user
  119. notification; destruction.
  120. This is described in more detail in \*([.Kingston84\*(.].
  121. .IP (9)
  122. Straightforward runtime configuration (by use of a
  123. .B "tailor file" ).
  124. .IP (10)
  125. Flexible handling of remote addresses.
  126. .IP (11)
  127. Message reformatting to support several environments
  128. using protocols similar to, but different from, RFC 822.
  129. .PP
  130. These last two points are the main subject of this paper.
  131. .SH
  132. MMDF System Structure
  133. .PP
  134. To describe the address handling, it is first necessary to
  135. understand the basic system structure.
  136. .DS B
  137.  
  138.                    -----------      -----------
  139.                    |  User   |      |Protocol |
  140.                    |Interface|      | Server  |
  141.                    -----------      -----------
  142.                         |         /
  143. ___________________     |       /
  144. |                  \\\\\\\\    |     /
  145. |                  -----------
  146. |                  | Submit  |
  147. |                  |         |
  148. |                  -----------  . . . . . . . .->
  149. |                       .                         Message
  150. |                       .
  151. |                       .                         Queues
  152. |                  ----------- <- . . . . . . . .
  153. |                  | Deliver |
  154. |                  |         |
  155. |                  -----------
  156. |                /      |     \\\\\\\\
  157. |              /        |       \\\\\\\\
  158. |            /          |         \\\\\\\\
  159. | -----------      -----------      -----------
  160. | |  List   |      |  Local  |      |Protocol |
  161. | | Channel |      | Channel |      | Channel |
  162. | -----------      -----------      -----------
  163. |______|
  164.  
  165.  
  166.               MMDF Process Structure
  167.  
  168. .DE
  169. .PP
  170. The key to the operation of MMDF\ II is the process
  171. .B submit .
  172. Submit accepts messages in one of two modes:
  173. .IP (i)
  174. \'Message' mode, where a message is accepted on the standard
  175. input and addresses extracted from specified message header fields.
  176. .IP (ii)
  177. \'Protocol' mode, where addresses are first checked in an SMTP
  178. like negotiation \*([.Postel82\*(.],
  179. and then the message is accepted.  This mode is usually invoked
  180. by another process interacting with submit by use of a pair of
  181. pipes.
  182. .FN
  183. See
  184. .B "pipe(2)"
  185. in any UNIX reference manual.
  186. .FE
  187. .PP
  188. Submit is invoked both by User Interface processes to send local
  189. messages, and by Message Transfer
  190. Protocol servers (e.g. an SMTP server, rmail,
  191. .FN
  192. rmail is the process invoked by UUCP to transfer mail.
  193. .FE
  194. or a JNT Mail Protocol server).
  195. Submit verifies the addresses, and then checks conformance to
  196. authorisation policies.  It also authenticates the source and
  197. format of the message.  The most important part of this
  198. authentication
  199. is that locally generated messages have a correct originator
  200. specification (i.e. that of the invoker of submit), and that
  201. messages originated remotely are only submitted by a process
  202. with the appropriate privileges.
  203. Finally, the message is queued, with the text of the message
  204. (both body and header) in one file, and the associated
  205. addresses and control information in another file.
  206. Each address is associated with a
  207. .B channel ,
  208. and each channel has an associated queue, managed independently
  209. as a
  210. directory containing files which are links to the appropriate
  211. address file.
  212. The address to channel binding is discussed later.
  213. .PP
  214. Each channel has a process for delivering
  215. messages associated with it.
  216. More than one channel may use the same channel
  217. process (and thus protocol), as channels may have: different
  218. (sets of) hosts associated with them; different routes to the
  219. same hosts; or a different quality of service to the same hosts.
  220. .FN
  221. This flexible mapping becomes particularly important when applying
  222. authorisation on the basis of multiple criteria.
  223. A fuller discussion is given in \*([.Brink85\*(.].
  224. .FE
  225. There are two special channels:
  226. .IP (1)
  227. Local channel.  This delivers messages to local mailboxes,
  228. including any user specified processing.
  229. .IP (2)
  230. List channel.  This allows a list to be expanded in two phases,
  231. by passing the message back to submit with a modified return
  232. address.  This approach gives several advantages, particularly when
  233. handling large lists.
  234. .PP
  235. Both of these channels are discussed in more detail in \*([.Kingston84\*(.].
  236. .B Deliver
  237. is a process which reads the queue associated with one or more
  238. channels, and invokes a channel process with which it interacts through
  239. a pair of pipes.
  240. Deliver will read addresses from the queue, and pass them in turn to the
  241. channel process.  When an address is fully processed  (which
  242. may not be immediately if multiple addresses are being sent to a
  243. given host before any text is transferred) this information is
  244. passed back to deliver.
  245. Deliver then sends any necessary error
  246. messages, and the queue is adjusted accordingly.
  247. Caching and time control parameters allow for a variety of backoff
  248. strategies to handle hosts which do not respond.
  249. Deliver may also be invoked in pickup mode to allow messages
  250. to be pulled as well as pushed, which is particularly important
  251. for dialup links.
  252. This is discussed in \*([.Crocker79\*(.].
  253. .SH
  254. Address handling
  255. .PP
  256. The mechanism for verifying addresses is now considered.
  257. First, some terminology is defined:
  258. .IP Address
  259. Address is used to mean the text that the user supplies to a typical
  260. message sending interface in order to direct a message to a desired
  261. destination.
  262. This loose usage has been selected, because it is familiar to most message
  263. system users.
  264. .IP Domain
  265. .br
  266. The DARPA domain scheme \*([.Mockapetris84\*(.],
  267. and the UK Name Registration Scheme (NRS) \*([.Larmouth83\*(.],
  268. allow an untyped global namespace to be allocated in an
  269. hierarchical fashion.
  270. Examples of domains are: UK, Salford.AC.UK, CompSci.Salford.AC.UK,
  271. USC-ISID.ARPA, ARPA, UUCP.
  272. If a domain is sufficiently specified
  273. .FN
  274. To identify a specific service in the
  275. context of domain UK is unlikely to make sense,
  276. whereas it might for Salford.AC.UK.
  277. .FE
  278. it is possible
  279. to identify a direct connection to a Host, which may be
  280. associated with the domain or be a relay to the domain.
  281. .IP Mailbox
  282. A mailbox (User Agent) is the source or destination of a
  283. message, often associated with a human user.  A mailbox can be
  284. globally specified in RFC 822 as local-part@domain.
  285. .IP Host
  286. A host is a computer connected to directly by the
  287. local computer.  A domain associated with a host not directly
  288. connected to by the local computer
  289. should be regarded only as a domain: the domain to
  290. host binding is immaterial if there is no direct connection.
  291. .IP Route
  292. .br
  293. Routes are considered to be implicitly at the message level.
  294. A Route is an explicit
  295. sequence of domains over which a message should traverse.
  296. Two types of route are considered:
  297. .IP (i) 8
  298. A Formal Route consists of a sequence of globally valid
  299. domains, recognised as a source route by the originating system.
  300. In RFC 822, this is specified by a syntax of the style
  301. <@domain1:local-part@domain2>.
  302. A Formal Route is used to reach domains which cannot be accessed directly,
  303. or where indirect access is preferred.
  304. .IP (ii) 8
  305. An Informal Route is one that is not recognised as a route by
  306. the sending system, but is interpreted as such by a receiving
  307. system.  In the RFC 822 world, a common Informal Route syntax,
  308. making use of a special form of local-part is:
  309. user%domain2@domain1.
  310. Interestingly, this syntax is a Formal Route in the JNT Mail
  311. world.
  312. An Informal Route is used when different domains have a
  313. different interpretation of the global namespace (e.g.
  314. user%domain2@domain1 is used where the message originator's local system does
  315. not interpret domain2 as intended, but domain1 does).
  316. .PP
  317. A number of domain specifications have been adopted informally
  318. by different groups
  319. (e.g. .ARPA .AC.UK .MAILNET .UUCP .CSNET .CDN .EDU),
  320. and it seems likely that many networks will be able to
  321. agree on a global namespace.
  322. All Message Routing in MMDF\ II is currently controlled by tables.
  323. This is likely to continue for hosts where all external
  324. communication is by use of dialup links, and
  325. the NRS (at least) will distribute information as tables..
  326. The approach taken by MMDF\ II to table based domain handling is
  327. now described.
  328. .PP
  329. The MMDF\ II process
  330. .B submit
  331. performs the address checking function.
  332. There are two orthogonal operations.
  333. The first is to parse the address, to extract a Formal Route.
  334. The second phase is to interpret the 'end' domain of the
  335. route.
  336. If the domain being verified is
  337. identified as the local domain, the next
  338. domain component is considered.  If the local-part is
  339. reached, it is then interpreted as an Informal Route.
  340. MMDF\ II supports a number of Informal Route specifications,
  341. including the UUCP "!" syntax.
  342. If the local-part under consideration is
  343. not an Informal  Route, it is looked up as an alias.
  344. If it is identified as an alias, the alias value is then parsed
  345. as a sequence of addresses, and the whole procedure recurses.
  346. Finally, if it is not an alias, it will be checked as a local
  347. account and, if valid, queued for delivery by the local channel.
  348. .PP
  349. Each channel is associated with a set of hosts,
  350. which are
  351. directly connected to the local system.
  352. .FN
  353. The directness is conceptual rather than physical.
  354. This is illustrated later.
  355. .FE
  356. A host may be associated with more than one channel.
  357. Each channel has a channel table
  358. .FN
  359. Tables are considered here as if they were physical files.
  360. In practice, they are implemented by hashed database lookup.
  361. Many of the operations described are optimised further
  362. by taking advantage of the structure of this database.
  363. .FE
  364. which maps its associated hosts
  365. onto the necessary connection information (e.g. transport
  366. addresses).
  367. The host namespace is arbitrary, but given that all hostnames
  368. must be unique (to allow for host to channel binding),
  369. the convention that the hostname is that of the associated
  370. domain is convenient.
  371. A reason for sometimes violating this convention is discussed later.
  372. .PP
  373. Domains are handled in a two level manner.
  374. The top part of the domain is specified in the tailor file, and
  375. indicates an associated table.
  376. This top part is referred to as the
  377. .B "domain table specification"
  378. The rest of the domain is specified as the LHS of the table,
  379. with the RHS of the table specifying the host associated with
  380. the domain.
  381. The split can occur in more than one way.
  382. For example, CS.SALFORD.AC.UK could be split as:
  383. .DS B
  384.  
  385. domain table specification          table entry
  386.  
  387. SALFORD.AC.UK                       CS
  388. AC.UK                               SALFORD.CS
  389. UK                                  CS.SALFORD.AC
  390. ""                                  CS.SALFORD.AC.UK
  391.  
  392. .DE
  393. The last case has a null domain table specification, known
  394. informally as the 'top' table.
  395. .PP
  396. The method of domain interpretation is now considered.
  397. When a potential domain is examined by submit, it is first assumed to be
  398. a full domain specification.
  399. .FN
  400. The procedure is substantially optimised for domains in this
  401. form, as this is the most common case.
  402. .FE
  403. Components are repeatedly
  404. stripped from the LHS and matched against the list of domain
  405. table specifications.  Thus, if TREES.BIO.STANFORD.EDU is
  406. considered, domain table specifications are searched for in the
  407. order: BIO.STANFORD.EDU, STANFORD.EDU, EDU, "".  For each
  408. match,  the remainder is looked up in the associated domain
  409. table.  If a domain is identified, it is then mapped into its
  410. official value by looking for the first component in the table
  411. with the same RHS.  This allows for domain aliases.  The RHS (host
  412. name) is then looked up in the channel tables, and the address
  413. is bound to the first channel satisfying management
  414. requirements.
  415. Some extensions to this basic procedure are now described.
  416. .IP "Source Routes" 12
  417. An alternative specification for the RHS of a domain table is
  418. as a series of components; the first being the host directly
  419. connected to, and the rest being a sequence of domains
  420. traversed in order.  These domains will be added to the source
  421. route passed to the channel (message transport protocol).
  422. This source route information can be added in an ad hoc manner,
  423. or can be systematically obtained (e.g. from the NRS).
  424. .IP Subdomains 12
  425. If CS.SALFORD.AC.UK is specified, and has no corresponding domain table
  426. entries, but there is one for SALFORD.AC.UK, CS.SALFORD.AC.UK
  427. is accessed as a source route through SALFORD.AC.UK.
  428. This approach means that not all leaves of the tree need be stored.
  429. In particular, the 'top' table (i.e. the one with null domain
  430. table specification) may have entries such as:
  431. .DS
  432. CSNET:CSNET-RELAY.ARPA
  433. CA.UUCP:UCB-VAX.ARPA
  434. .DE
  435. This would route all subdomains of CSNET (e.g. UPENN.CSNET) through
  436. CSNET-RELAY.ARPA, and all subdomains of CA.UUCP through
  437. UCB-VAX.ARPA.
  438. This is useful in (the currently common) cases
  439. where the logical domain structure
  440. has a physical mapping.
  441. .IP "Partially specified domains" 12
  442. When all these checks have been made on the assumption of fully
  443. specified domains, these checks are repeated in each domain
  444. table on the assumption that the domain table specification was
  445. omitted.  For example, if there is a table ARPA, and BRL is
  446. being tested, BRL will be looked up in table ARPA (and matched)
  447. on the assumption that BRL.ARPA was intended.
  448. .IP "NRS domain ordering" 12
  449. It has been assumed until now that the UK NRS (Name
  450. Registration Scheme) and DARPA Domain scheme specify domains
  451. in the same manner.
  452. An unfortunate difference is, that although the semantics are
  453. similar and syntax the same, the ordering of the hierarchy is
  454. reversed.
  455. Thus, SALFORD.AC.UK in the DARPA form is UK.AC.SALFORD in NRS
  456. form.
  457. This difference has caused much confusion to (UK) users communicating
  458. with systems using both of these schemes, and so
  459. it is not very satisfactory to assume consistent
  460. specification (within the UK).
  461. Therefore, MMDF\ II may be configured to check for domains in
  462. either order. It does this in an interleaved fashion (i.e. for
  463. each check done performing it first in one order, and then the
  464. other).
  465. This minimises the weight given to the order a domain happens
  466. to be specified in, and maximises weight on the degree of specification
  467. (e.g. preferring to interpret "UK.AC.AVON.MULTICS"  as MULTICS.AVON.AC.UK
  468. rather than UK.AC.AVON.MIT-MULTICS.ARPA).
  469. In practice, the few problems which have occurred, have been
  470. caused by palindromic
  471. partial domain specifications.
  472. Except where explicitly noted otherwise, this paper assumes
  473. DARPA ordering, as NRS ordering is mostly confined to the UK
  474. Academic Community.
  475. .IP "Routing by the channel" 12
  476. There are currently two cases of routing by channel.
  477. In the
  478. first case, which can be used for any channel,
  479. the channel connects only to one host acting
  480. as relay for all the hosts in the channel table.
  481. The second is the UUCP channel.
  482. Here, hosts are considered to be any UUCP host reachable
  483. through UUCP, and the RHS of the channel table is the UUCP route
  484. (expressed in the form host!host!host!%s).
  485. Use of this style of channel routing should be minimised, as it is
  486. preferable both to route incrementally and to bind addresses to channels
  487. as late as possible.
  488. .IP "Support for multiple machines" 12
  489. It is common for UNIX sites to have many machines, and to have
  490. an allocation of users between machines with no clear meaning
  491. external to the site.
  492. If the machine name must be specified to send mail to a user,
  493. this leads to names which are hard to memorise/guess, and
  494. makes the movement of mailboxes between machines visible
  495. external to the site.
  496. MMDF\ II allows for multiple machines to share a common namespace,
  497. common binaries and common tables, and for each user to have a default
  498. machine for mail delivery.
  499. Further, many machines can appear externally
  500. to be the same domain.
  501. This is achieved by treating each machine as a (different) subdomain
  502. of the visible domain  (e.g. a message apparently from
  503. Steve@CS.UCL.AC.UK might be originated on machine VAX2.CS.UCL.AC.UK).
  504. This approach is clearly more user-friendly.  In some
  505. circumstances it will be more efficient, and in others, less.
  506. .PP
  507. It is interesting to note how the MMDF\ II addressing approach
  508. fits into the transition of various networks to a
  509. domain based addressing scheme.
  510. There is currently a draft proposal for the UUCP transition \*([.Horton85\*(.].
  511. The author's interpretation of this suggests,
  512. assuming that this proposal is followed, that MMDF\ II
  513. will provide all of the needed functionality for users to get the
  514. full advantage of a domain based scheme.
  515. In the UK, the information supplied by the NRS can be used in a
  516. straightforward fashion.
  517. .PP
  518. Perhaps the most interesting case is the DARPA Domain
  519. Nameserver scheme \*([.Mockapetris84\*(.].
  520. In general, domain information will not be available in table
  521. form, but is obtained dynamically by querying a sequence of
  522. nameservers.
  523. MMDF\ II will be extended to support this within the timescale of
  524. the DARPA transition.
  525. A brief description of a
  526. .I possible
  527. approach is described, the aim being to illustrate that the
  528. DARPA scheme can be integrated, rather than to describe how it
  529. will be integrated.
  530. In general, a final solution will have a mixture of table and
  531. nameserver determined bindings.
  532. It seems likely that the domain namespaces controlled by tables and
  533. nameservers will overlap substantially in many cases.
  534. A channel will be either table driven (as at present), or nameserver driven.
  535. A nameserver channel will be given a domain, which will be
  536. mapped into a connection (and possibly a route) when the
  537. domain in question is processed.
  538. At message submission time, the
  539. domain namespace would first be checked for
  540. fully specified domains contained in domain tables, which
  541. would be dealt with as before.
  542. .FN
  543. Note that a domain determined from a table could be bound to a
  544. nameserver channel.  In general, this would be undesirable.
  545. .FE
  546. A table (most likely the 'top' table) could specify a domain as
  547. being associated with one or more (nameserver) channels
  548. (e.g. ARPA maps to the SMTP channel).
  549. This domain would then be bound to one of those channels on the
  550. basis of management considerations.
  551. This gives submission time checking of only the higher level
  552. domains, with the full nameserver checking occurring in
  553. background when the channel is invoked.
  554. Alternatively, the domain could simply indicate use of a
  555. nameserver.
  556. In this case, the domain being checked would be passed to the
  557. nameserver.
  558. .FN
  559. Detailed interaction with a DARPA nameserver will be provided
  560. by a resolver interface, which is likely to be implemented
  561. as a library of functions on UNIX.
  562. This is certainly the case for two implementations currently
  563. in progress \*([.Karp84,\|Terry84\*(.].
  564. .FE
  565. If matched, any specification of a 'Mail Forwarder' could be
  566. used to specify a source route.
  567. The 'class' of address returned would be looked up (in a table)
  568. to determine a set of channels.
  569. This fuller submission time checking is desirable,
  570. but would only be acceptable if the mean nameserver
  571. response time was not too large.
  572. Then, table checks for partial domains would be made.
  573. Assuming that completion services are provided by a
  574. local nameserver,
  575. the potential partial domain could be checked by the
  576. nameserver, if desired.
  577. This scheme would extend naturally if there was a need to use either
  578. different types of nameserver, or disjoint systems of the same
  579. type of nameserver.
  580. This is however, only one of several potential approaches.
  581. .SH
  582. Message Reformatting
  583. .PP
  584. The need to reformat messages is an unfortunate reality.
  585. It is caused by the requirement of interworking between functionally
  586. similar, but differently encoded, end to end message protocols.
  587. MMDF\ II provides two basic types of message reformatting: the
  588. first, applicable to all message transfer protocols; and the
  589. second protocol specific.
  590. MMDF\ II messages are expected (by submit) to be in a generic
  591. format,  and are queued directly.
  592. This format is flexible, so that User Interface Processes do
  593. not need to have overly stringent requirements in order to generate legal
  594. format messages.
  595. In particular, the following aspects are flexible:
  596. .IP \-
  597. Formal Routes may be specified either in RFC 822 format or as
  598. \'local-part@domain@domain'.
  599. .IP \-
  600. Domains do not have to be
  601. .B normalised ,
  602. that is to say they may be partially specified or fully
  603. specified aliases (e.g. ISID, USC-ISID, ISID.ARPA,
  604. USC-ISID.ARPA are all acceptable).
  605. .IP \-
  606. Local domain specifications may be omitted.
  607. .PP
  608. In a system configured for the UK Academic Community, the following are also
  609. flexible:
  610. .IP \-
  611. Formal routes may also be specified in 'local-part%domain@domain'
  612. form, as used by the JNT Mail Protocol.
  613. .IP \-
  614. Domains may be specified in either NRS or DARPA order.
  615. .PP
  616. The general reformatting provided by MMDF\ II
  617. may be selected optionally on a per channel basis.
  618. This reformatting
  619. should be
  620. regarded conceptually, as being provided by deliver.
  621. It is really performed within the standard routines for
  622. interaction with deliver, called by each channel.
  623. If reformatting is selected, before each message is processed,
  624. a reformatted header will be generated into a temporary file.
  625. This is then used (transparently) by the channel instead of the
  626. real message header.  The reformatting functions
  627. provided are now described.
  628. It is interesting that they all relate to address format,
  629. which in practice is the only interesting message transfer
  630. protocol independent form of reformatting.
  631. If reformatting is selected for a given channel,
  632. an alternative for each of the functions must be specified.
  633. .IP (1)
  634. Domain normalisation (the conversion of all domain
  635. specifications to fully qualified preferred forms) is a basic
  636. function of message reformatting.
  637. An alternative form of normalisation makes use of the host
  638. namespace maintained by MMDF\ II and, in cases where a domain has
  639. an associated host, normalises to the host name.
  640. This is useful when connected to two worlds with
  641. differing views of the global namespace, or in transition
  642. situations.
  643. A common host specification is the leftmost component of the
  644. domain (e.g. UPENN is the host associated with UPENN.CSNET).
  645. .IP (2)
  646. Formal Route specifications may be reformatted to either RFC 822
  647. form (@domain1:local-part@domain2) or to percent form
  648. (user%domain2@domain1).
  649. This is useful for mapping between JNT Mail formal source
  650. routes and RFC 822 formal source routes.
  651. It is also useful where domains are used internally, and are
  652. not known globally.
  653. This mechanism allows formal routes to be mapped into informal
  654. routes, thus making the domain interpretation private.
  655. .IP (3)
  656. Domain/Host specifications may be output in either DARPA or NRS
  657. ordering.
  658. This is protocol independent, as the NRS ordering is associated
  659. with the UK Academic Community and not with any specific
  660. message transfer protocol.
  661. .IP (4)
  662. The local domain may be mapped into another specified form.
  663. This is used when one system has a different name in different
  664. environments.
  665. .IP (5)
  666. A treatment known as 'exorcising' against a table of domains.
  667. It is assumed that only the domains specified are known by
  668. domains accessed through the
  669. channel, and addresses relative
  670. to all other domains will be mapped to an informal
  671. source route behind the local system.
  672. .PP
  673. Message reformatting is also applied on a protocol specific
  674. basis.
  675. This occurs in two places.
  676. .IP "Channel Reformatting" 12
  677. Channels may perform reformatting in addition to that provided
  678. as standard.
  679. The JNT Mail channel performs some simple reformatting, to
  680. ensure that the return path, calculated according to the
  681. protocol, is correct.
  682. MMDF\ II currently supports two UUCP channels.  The first assumes
  683. that the remote site is 'modern' and does no reformatting
  684. on the basis that the remote site expects a standard RFC 822
  685. message.
  686. The second UUCP channel assumes that the remote site is 'old
  687. fashioned', and maps all addresses into UUCP route syntax
  688. (e.g. user@CS.UCL.AC.UK is changed to ucl-cs!user).
  689. Both channels may be used simultaneously by one system.
  690. .IP "Server Reformatting" 12
  691. Where an incoming message does not conform to the generic MMDF\ II
  692. format, the protocol server must perform reformatting.
  693. In practice, this is only done for UUCP and EAN X.400.
  694. The protocol server for UUCP (the rmail process), will map
  695. incoming addresses, which (by their syntax) appear to be from 'old
  696. fashioned' systems into RFC 822 format addresses.
  697. Where possible, UUCP routes are shortened.
  698. This reformatting will not change the message format if the remote UUCP
  699. site is 'modern'.
  700. .SH
  701. Comparison with other Systems
  702. .PP
  703. The only system considered in comparison
  704. is Sendmail \*([.Allman83\*(.].
  705. A comparison with various non-UNIX systems would be
  706. interesting, but not appropriate here.
  707. No other UNIX systems with comparable functionality are known to
  708. the author.
  709. Only addressing and message
  710. reformatting aspects are considered here.
  711. .PP
  712. Sendmail's address parsing and message reformatting is
  713. controlled by a
  714. .B "configuration file" .
  715. Sendmail
  716. .B mailers
  717. are analogous to MMDF\ II channels,
  718. but are less tightly coupled.
  719. Sendmail's address parsing and domain interpretation are
  720. controlled by the configuration file, and are not specifically
  721. decoupled.
  722. Whilst allowing for an amazingly general syntax, it can lead to
  723. cases where domain interpretation is syntax dependent.
  724. .FN
  725. Careful design of Sendmail configuration files should minimise
  726. this dependency, although
  727. generation of configuration files to handle complex cases is
  728. not straightforward.
  729. .FE
  730. The decoupling of address parsing and domain interpretation,
  731. as provided by MMDF\ II,
  732. is seen as both correct and desirable.
  733. .PP
  734. Current domain handling by Sendmail uses explicit recognition
  735. of domains listed in the configuration file to bind to a given
  736. mailer.
  737. After this partial address checking, the message is then queued
  738. for a specific mailer, where further checking is done.
  739. If configuration files are kept to a reasonable size, this
  740. approach must rely on the fact that the higher level domains can
  741. be used to determine the message transfer protocol in most cases.
  742. The MMDF\ II approach of maximising address checking at submission
  743. time is seen as desirable in view of the trend towards logical domain
  744. specifications which do not imply specific message transfer
  745. protocols.
  746. A domain handling package is expected to be added to Sendmail in
  747. the near future, and this may well allow for a more flexible
  748. approach.
  749. .PP
  750. Sendmail reformatting, is highly general and flexible, and has
  751. been used to deal with a variety of unusual formats.
  752. Some difficulty has been encountered when trying to handle NRS
  753. domain ordering, but this is probably not insuperable.
  754. MMDF\ II's more basic facilities cover a wide range of
  755. commonly used formats and, where appropriate, are more
  756. straightforward to configure.
  757. It seems likely that more systems will be moving to standard
  758. formats.
  759. The simpler approach also tends towards greater robustness,
  760. and protects against protocol violations.
  761. .SH
  762. Afterword
  763. .PP
  764. MMDF\ II is expected to be available as a production system by
  765. the time this paper is presented.  It is available in the US
  766. through University of Delaware, and in the UK through
  767. University College London.
  768. There is a (currently nominal) licence fee for commercial
  769. sites, and a tape handling charge.
  770. .sp
  771. .]<
  772. .\"Allman.E.-1983-2
  773. .ds [F Allman83
  774. .]-
  775. .ds [T SENDMAIL - An Internetwork Mail Router
  776. .ds [A E. Allman
  777. .ds [R Paper
  778. .ds [D 1983
  779. .nr [T 0
  780. .nr [A 0
  781. .nr [O 0
  782. .][ 4 tech-report
  783. .\"Borden.B.S.-1979-3
  784. .ds [F Borden79
  785. .]-
  786. .ds [A B.S. Borden
  787. .as [A " and others
  788. .ds [T The MH Message Handling System
  789. .ds [D November 1979
  790. .ds [J Project Airforce document, obtainable from RAND, Santa Monica, Ca 90406
  791. .ds [K MH
  792. .nr [T 0
  793. .nr [A 0
  794. .nr [O 0
  795. .][ 1 journal-article
  796. .\"Brink.D.-1985-4
  797. .ds [F Brink85
  798. .]-
  799. .ds [A D. Brink
  800. .as [A " and S.E. Kille
  801. .ds [T Authorisation and Accounting in Store and Forward Messaging systems
  802. .ds [D June 1985
  803. .ds [J Submitted to Networks 85, Wembley
  804. .nr [T 0
  805. .nr [A 0
  806. .nr [O 0
  807. .][ 1 journal-article
  808. .\"1983-1
  809. .ds [F CCITT83
  810. .]-
  811. .ds [Q CCITT SG 5/VII
  812. .ds [T Recommendations X.400
  813. .ds [D November 1983
  814. .ds [R Message Handling Systems: System Model - Service Elements
  815. .ds [K x400
  816. .nr [T 0
  817. .nr [A 0
  818. .nr [O 0
  819. .][ 4 tech-report
  820. .\"Comer.D.A.-1983-16
  821. .ds [F Comer83
  822. .]-
  823. .ds [A D.A. Comer
  824. .ds [T A Computer Science Research Network: CSNET
  825. .ds [J Communications of the ACM
  826. .ds [V 26
  827. .ds [N 10
  828. .ds [P 747-753
  829. .nr [P 1
  830. .ds [D October 1983
  831. .ds [K csnet overview
  832. .nr [T 0
  833. .nr [A 0
  834. .nr [O 0
  835. .][ 1 journal-article
  836. .\"Crocker.D.-1979-5
  837. .ds [F Crocker79
  838. .]-
  839. .ds [A D. Crocker
  840. .as [A ", E. Szwkowski
  841. .as [A ", and D. Farber
  842. .ds [T An Internetwork Memo Distribution Capability - MMDF
  843. .ds [D November 1979
  844. .ds [J Proc. 6th. Data Comm Symp, IEEE/ACM
  845. .nr [T 0
  846. .nr [A 0
  847. .nr [O 0
  848. .][ 1 journal-article
  849. .\"Crocker.D.H.-1982-6
  850. .ds [F Crocker82
  851. .]-
  852. .ds [A D.H. Crocker
  853. .ds [T Standard of the Format of ARPA Internet Text Messages
  854. .ds [D August 1982
  855. .ds [R RFC 822
  856. .ds [K RFC822
  857. .nr [T 0
  858. .nr [A 0
  859. .nr [O 0
  860. .][ 4 tech-report
  861. .\"Horton.M.R.-1985-7
  862. .ds [F Horton85
  863. .]-
  864. .ds [T UUCP Mail Transmission Format Standard
  865. .ds [A M.R. Horton
  866. .ds [R Draft received as message
  867. .ds [D January 1985
  868. .nr [T 0
  869. .nr [A 0
  870. .nr [O 0
  871. .][ 4 tech-report
  872. .\"Karp.P.D.-1984-18
  873. .ds [F Karp84
  874. .]-
  875. .ds [T DRUID: A Distributed Name Server
  876. .ds [A P.D. Karp
  877. .ds [R Stanford Internal Report
  878. .ds [D June 1984
  879. .nr [T 0
  880. .nr [A 0
  881. .nr [O 0
  882. .][ 4 tech-report
  883. .\"Kille.S.E.-1984-8
  884. .ds [F Kille84
  885. .]-
  886. .ds [A S.E. Kille, (editor)
  887. .ds [T JNT Mail Protocol (revision 1.0)
  888. .ds [D March 1984
  889. .ds [I Joint Network Team
  890. .ds [C Rutherford Appleton Laboratory
  891. .ds [K greybook
  892. .ds [K jntmail
  893. .nr [T 0
  894. .nr [A 0
  895. .nr [O 0
  896. .][ 2 book
  897. .\"Kingston.D.P.-1984-9
  898. .ds [F Kingston84
  899. .]-
  900. .ds [A D.P. Kingston
  901. .ds [T MMDFII: A Technical Review
  902. .ds [J Usenix Conference
  903. .ds [C Salt Lake City
  904. .ds [D August 1984
  905. .ds [K MMDF
  906. .nr [T 0
  907. .nr [A 0
  908. .nr [O 0
  909. .][ 1 journal-article
  910. .\"Larmouth.J.-1983-10
  911. .ds [F Larmouth83
  912. .]-
  913. .ds [A J. Larmouth
  914. .ds [T JNT Name Registration Technical Guide
  915. .ds [D April 1983
  916. .ds [J Salford University Computer Centre
  917. .ds [K NRS
  918. .nr [T 0
  919. .nr [A 0
  920. .nr [O 0
  921. .][ 1 journal-article
  922. .\"Mockapetris.P.V.-1984-17
  923. .ds [F Mockapetris84
  924. .]-
  925. .ds [A P.V. Mockapetris
  926. .ds [T A Domain Nameserver Scheme
  927. .ds [D May 1984
  928. .ds [J IFIP WG 6.5 Conference, Nottingham
  929. .nr [T 0
  930. .nr [A 0
  931. .nr [O 0
  932. .][ 1 journal-article
  933. .ds [F Mockapetris84
  934. .\"Neufeld.G.W.-1983-11
  935. .ds [F Neufeld83
  936. .]-
  937. .ds [A G.W. Neufeld
  938. .ds [T EAN: A distributed message system
  939. .ds [J Proceedings CIPS National Meeting, Ottowa
  940. .ds [P 144-149
  941. .nr [P 1
  942. .ds [D May 1983
  943. .ds [K ean
  944. .nr [T 0
  945. .nr [A 0
  946. .nr [O 0
  947. .][ 1 journal-article
  948. .\"Nowitz.D.A.-1978-12
  949. .ds [F Nowitz78
  950. .]-
  951. .ds [A D.A. Nowitz
  952. .as [A " and M.E. Lesk
  953. .ds [T A Dial-up Network of UNIX systems
  954. .ds [D August 1978
  955. .ds [R UNIX Programmer's Manual, 7th edition, Bell Labs.
  956. .ds [K UUCP
  957. .nr [T 0
  958. .nr [A 0
  959. .nr [O 0
  960. .][ 4 tech-report
  961. .\"Postel.J.B.-1982-15
  962. .ds [F Postel82
  963. .]-
  964. .ds [A J.B. Postel
  965. .ds [T SIMPLE MAIL TRANSFER PROTOCOL
  966. .ds [D August 1982
  967. .ds [R RFC 821
  968. .ds [K RFC821
  969. .ds [K SMTP
  970. .nr [T 0
  971. .nr [A 0
  972. .nr [O 0
  973. .][ 4 tech-report
  974. .\"Terry.D.B.-1984-13
  975. .ds [F Terry84
  976. .]-
  977. .ds [T The Berkeley Internet Name Domain Server
  978. .ds [A D.B. Terry
  979. .as [A " and others
  980. .ds [J Usenix, Salt Lake City
  981. .ds [D August 1984
  982. .ds [K bind
  983. .nr [T 0
  984. .nr [A 0
  985. .nr [O 0
  986. .][ 1 journal-article
  987. .\"Vittal..J.-1981-14
  988. .ds [F Vittal81
  989. .]-
  990. .ds [A J. Vittal
  991. .ds [T MSG: A simple message system
  992. .ds [J Proc. Int. Symp. Computer Message Systems, Ottowa
  993. .ds [I North Holland
  994. .ds [D April 1981
  995. .ds [K msg
  996. .nr [T 0
  997. .nr [A 0
  998. .nr [O 0
  999. .][ 1 journal-article
  1000. .]>
  1001. .sp
  1002. RFC indicates a DARPA Request For Comments, which may be
  1003. obtained from: USC Information Sciences Institute, Marina del
  1004. Rey, Ca. USA.
  1005. .SH
  1006. Acknowledgements
  1007. .PP
  1008. Many people have worked on MMDF\ II, including
  1009. Phil Cockroft, Bernie Cosell,
  1010. Dave Farber, Dan Long, Lee McLoughlin, Mike Muus,
  1011. Julian Onions, Brendan Reilly, Dennis
  1012. Rockwell, and Marshall Rose.
  1013. Particular credit to Dave
  1014. Crocker who designed the bulk of MMDF\ II, and to Doug Kingston who bore
  1015. the brunt of making it work as a production system.
  1016.