1.nr si 3n
2.he 'Mail Systems and Addressing in 4.2bsd''%'
3.fo 'Version 8.2'USENIX \- Jan 83'Last Mod 11/27/93'
4.if n .ls 2
5.+c
6.(l C
7.sz 14
8Mail Systems and Addressing
9in 4.2bsd
10.sz
11.sp
12Eric Allman*
13.sp 0.5
14.i
15Britton-Lee, Inc.
161919 Addison Street, Suite 105.
17Berkeley, California 94704.
18.sp 0.5
19.r
20eric@Berkeley.ARPA
21ucbvax!eric
22.)l
23.sp
24.(l F
25.ce
26ABSTRACT
27.sp \n(psu
28Routing mail through a heterogeneous internet presents many new
29problems.
30Among the worst of these is that of address mapping.
31Historically, this has been handled on an ad hoc basis.
32However,
33this approach has become unmanageable as internets grow.
34.sp \n(psu
35Sendmail acts a unified
36.q "post office"
37to which all mail can be
38submitted.
39Address interpretation is controlled by a production
40system,
41which can parse both old and new format addresses.
42The
43new format is
44.q "domain-based,"
45a flexible technique that can
46handle many common situations.
47Sendmail is not intended to perform
48user interface functions.
49.sp \n(psu
50Sendmail will replace delivermail in the Berkeley 4.2 distribution.
51Several major hosts are now or will soon be running sendmail.
52This change will affect any users that route mail through a sendmail
53gateway.
54The changes that will be user visible are emphasized.
55.)l
56.sp 2
57.(f
58*A considerable part of this work
59was done while under the employ
60of the INGRES Project
61at the University of California at Berkeley.
62.)f
63.pp
64The mail system to appear in 4.2bsd
65will contain a number of changes.
66Most of these changes are based on the replacement of
67.i delivermail
68with a new module called
69.i sendmail.
70.i Sendmail
71implements a general internetwork mail routing facility,
72featuring aliasing and forwarding,
73automatic routing to network gateways,
74and flexible configuration.
75Of key interest to the mail system user
76will be the changes in the network addressing structure.
77.pp
78In a simple network,
79each node has an address,
80and resources can be identified
81with a host-resource pair;
82in particular,
83the mail system can refer to users
84using a host-username pair.
85Host names and numbers have to be administered by a central authority,
86but usernames can be assigned locally to each host.
87.pp
88In an internet,
89multiple networks with different characteristics
90and managements
91must communicate.
92In particular,
93the syntax and semantics of resource identification change.
94Certain special cases can be handled trivially
95by
96.i "ad hoc"
97techniques,
98such as
99providing network names that appear local to hosts
100on other networks,
101as with the Ethernet at Xerox PARC.
102However, the general case is extremely complex.
103For example,
104some networks require that the route the message takes
105be explicitly specified by the sender,
106simplifying the database update problem
107since only adjacent hosts must be entered
108into the system tables,
109while others use logical addressing,
110where the sender specifies the location of the recipient
111but not how to get there.
112Some networks use a left-associative syntax
113and others use a right-associative syntax,
114causing ambiguity in mixed addresses.
115.pp
116Internet standards seek to eliminate these problems.
117Initially, these proposed expanding the address pairs
118to address triples,
119consisting of
120{network, host, username}
121triples.
122Network numbers must be universally agreed upon,
123and hosts can be assigned locally
124on each network.
125The user-level presentation was changed
126to address domains,
127comprised of a local resource identification
128and a hierarchical domain specification
129with a common static root.
130The domain technique
131separates the issue of physical versus logical addressing.
132For example,
133an address of the form
134.q "eric@a.cc.berkeley.arpa"
135describes the logical
136organization of the address space
137(user
138.q eric
139on host
140.q a
141in the Computer Center
142at Berkeley)
143but not the physical networks used
144(for example, this could go over different networks
145depending on whether
146.q a
147were on an ethernet
148or a store-and-forward network).
149.pp
150.i Sendmail
151is intended to help bridge the gap
152between the totally
153.i "ad hoc"
154world
155of networks that know nothing of each other
156and the clean, tightly-coupled world
157of unique network numbers.
158It can accept old arbitrary address syntaxes,
159resolving ambiguities using heuristics
160specified by the system administrator,
161as well as domain-based addressing.
162It helps guide the conversion of message formats
163between disparate networks.
164In short,
165.i sendmail
166is designed to assist a graceful transition
167to consistent internetwork addressing schemes.
168.sp
169.pp
170Section 1 defines some of the terms
171frequently left fuzzy
172when working in mail systems.
173Section 2 discusses the design goals for
174.i sendmail .
175In section 3,
176the new address formats
177and basic features of
178.i sendmail
179are described.
180Section 4 discusses some of the special problems
181of the UUCP network.
182The differences between
183.i sendmail
184and
185.i delivermail
186are presented in section 5.
187.sp
188.(l F
189.b DISCLAIMER:
190A number of examples
191in this paper
192use names of actual people
193and organizations.
194This is not intended
195to imply a commitment
196or even an intellectual agreement
197on the part of these people or organizations.
198In particular,
199Bell Telephone Laboratories (BTL),
200Digital Equipment Corporation (DEC),
201Lawrence Berkeley Laboratories (LBL),
202Britton-Lee Incorporated (BLI),
203and the University of California at Berkeley
204are not committed to any of these proposals at this time.
205Much of this paper
206represents no more than
207the personal opinions of the author.
208.)l
209.sh 1 "DEFINITIONS"
210.pp
211There are four basic concepts
212that must be clearly distinguished
213when dealing with mail systems:
214the user (or the user's agent),
215the user's identification,
216the user's address,
217and the route.
218These are distinguished primarily by their position independence.
219.sh 2 "User and Identification"
220.pp
221The user is the being
222(a person or program)
223that is creating or receiving a message.
224An
225.i agent
226is an entity operating on behalf of the user \*-
227such as a secretary who handles my mail.
228or a program that automatically returns a
229message such as
230.q "I am at the UNICOM conference."
231.pp
232The identification is the tag
233that goes along with the particular user.
234This tag is completely independent of location.
235For example,
236my identification is the string
237.q "Eric Allman,"
238and this identification does not change
239whether I am located at U.C. Berkeley,
240at Britton-Lee,
241or at a scientific institute in Austria.
242.pp
243Since the identification is frequently ambiguous
244(e.g., there are two
245.q "Robert Henry" s
246at Berkeley)
247it is common to add other disambiguating information
248that is not strictly part of the identification
249(e.g.,
250Robert
251.q "Code Generator"
252Henry
253versus
254Robert
255.q "System Administrator"
256Henry).
257.sh 2 "Address"
258.pp
259The address specifies a location.
260As I move around,
261my address changes.
262For example,
263my address might change from
264.q eric@Berkeley.ARPA
265to
266.q eric@bli.UUCP
267or
268.q allman@IIASA.Austria
269depending on my current affiliation.
270.pp
271However,
272an address is independent of the location of anyone else.
273That is,
274my address remains the same to everyone who might be sending me mail.
275For example,
276a person at MIT and a person at USC
277could both send to
278.q eric@Berkeley.ARPA
279and have it arrive to the same mailbox.
280.pp
281Ideally a
282.q "white pages"
283service would be provided to map user identifications
284into addresses
285(for example, see
286[Solomon81]).
287Currently this is handled by passing around
288scraps of paper
289or by calling people on the telephone
290to find out their address.
291.sh 2 "Route"
292.pp
293While an address specifies
294.i where
295to find a mailbox,
296a route specifies
297.i how
298to find the mailbox.
299Specifically,
300it specifies a path
301from sender to receiver.
302As such, the route is potentially different
303for every pair of people in the electronic universe.
304.pp
305Normally the route is hidden from the user
306by the software.
307However,
308some networks put the burden of determining the route
309onto the sender.
310Although this simplifies the software,
311it also greatly impairs the usability
312for most users.
313The UUCP network is an example of such a network.
314.sh 1 "DESIGN GOALS"
315.pp
316Design goals for
317.i sendmail \**
318.(f
319\**This section makes no distinction between
320.i delivermail
321and
322.i sendmail.
323.)f
324include:
325.np
326Compatibility with the existing mail programs,
327including Bell version 6 mail,
328Bell version 7 mail,
329Berkeley
330.i Mail
331[Shoens79],
332BerkNet mail
333[Schmidt79],
334and hopefully UUCP mail
335[Nowitz78].
336ARPANET mail
337[Crocker82]
338was also required.
339.np
340Reliability, in the sense of guaranteeing
341that every message is correctly delivered
342or at least brought to the attention of a human
343for correct disposal;
344no message should ever be completely lost.
345This goal was considered essential
346because of the emphasis on mail in our environment.
347It has turned out to be one of the hardest goals to satisfy,
348especially in the face of the many anomalous message formats
349produced by various ARPANET sites.
350For example,
351certain sites generate improperly formated addresses,
352occasionally
353causing error-message loops.
354Some hosts use blanks in names,
355causing problems with
356mail programs that assume that an address
357is one word.
358The semantics of some fields
359are interpreted slightly differently
360by different sites.
361In summary,
362the obscure features of the ARPANET mail protocol
363really
364.i are
365used and
366are difficult to support,
367but must be supported.
368.np
369Existing software to do actual delivery
370should be used whenever possible.
371This goal derives as much from political and practical considerations
372as technical.
373.np
374Easy expansion to
375fairly complex environments,
376including multiple
377connections to a single network type
378(such as with multiple UUCP or Ethernets).
379This goal requires consideration of the contents of an address
380as well as its syntax
381in order to determine which gateway to use.
382.np
383Configuration information should not be compiled into the code.
384A single compiled program should be able to run as is at any site
385(barring such basic changes as the CPU type or the operating system).
386We have found this seemingly unimportant goal
387to be critical in real life.
388Besides the simple problems that occur when any program gets recompiled
389in a different environment,
390many sites like to
391.q fiddle
392with anything that they will be recompiling anyway.
393.np
394.i Sendmail
395must be able to let various groups maintain their own mailing lists,
396and let individuals specify their own forwarding,
397without modifying the system alias file.
398.np
399Each user should be able to specify which mailer to execute
400to process mail being delivered for him.
401This feature allows users who are using specialized mailers
402that use a different format to build their environment
403without changing the system,
404and facilitates specialized functions
405(such as returning an
406.q "I am on vacation"
407message).
408.np
409Network traffic should be minimized
410by batching addresses to a single host where possible,
411without assistance from the user.
412.pp
413These goals motivated the architecture illustrated in figure 1.
414.(z
415.hl
416.ie t \
417.	sp 18
418.el \{\
419.(c
420+---------+   +---------+   +---------+
421| sender1 |   | sender2 |   | sender3 |
422+---------+   +---------+   +---------+
423     |  	   |             |
424     +----------+  +  +----------+
425		|  |  |
426		v  v  v
427            +-------------+
428            |   sendmail  |
429            +-------------+
430		|  |  |
431     +----------+  +  +----------+
432     |  	   |             |
433     v             v             v
434+---------+   +---------+   +---------+
435| mailer1 |   | mailer2 |   | mailer3 |
436+---------+   +---------+   +---------+
437.)c
438.\}
439
440.ce
441Figure 1 \*- Sendmail System Structure.
442.hl
443.)z
444The user interacts with a mail generating and sending program.
445When the mail is created,
446the generator calls
447.i sendmail ,
448which routes the message to the correct mailer(s).
449Since some of the senders may be network servers
450and some of the mailers may be network clients,
451.i sendmail
452may be used as an internet mail gateway.
453.sh 1 "USAGE"
454.sh 2 "Address Formats"
455.pp
456Arguments may be flags or addresses.
457Flags set various processing options.
458Following flag arguments,
459address arguments may be given.
460Addresses follow the syntax in RFC822
461[Crocker82]
462for ARPANET
463address formats.
464In brief, the format is:
465.np
466Anything in parentheses is thrown away
467(as a comment).
468.np
469Anything in angle brackets (\c
470.q "<\|>" )
471is preferred
472over anything else.
473This rule implements the ARPANET standard that addresses of the form
474.(b
475user name <machine-address>
476.)b
477will send to the electronic
478.q machine-address
479rather than the human
480.q "user name."
481.np
482Double quotes
483(\ "\ )
484quote phrases;
485backslashes quote characters.
486Backslashes are more powerful
487in that they will cause otherwise equivalent phrases
488to compare differently \*- for example,
489.i user
490and
491.i
492"user"
493.r
494are equivalent,
495but
496.i \euser
497is different from either of them.
498This might be used
499to avoid normal aliasing
500or duplicate suppression algorithms.
501.pp
502Parentheses, angle brackets, and double quotes
503must be properly balanced and nested.
504The rewriting rules control remaining parsing\**.
505.(f
506\**Disclaimer: Some special processing is done
507after rewriting local names; see below.
508.)f
509.pp
510Although old style addresses are still accepted
511in most cases,
512the preferred address format
513is based on ARPANET-style domain-based addresses
514[Su82a].
515These addresses are based on a hierarchical, logical decomposition
516of the address space.
517The addresses are hierarchical in a sense
518similar to the U.S. postal addresses:
519the messages may first be routed to the correct state,
520with no initial consideration of the city
521or other addressing details.
522The addresses are logical
523in that each step in the hierarchy
524corresponds to a set of
525.q "naming authorities"
526rather than a physical network.
527.pp
528For example,
529the address:
530.(l
531eric@HostA.BigSite.ARPA
532.)l
533would first look up the domain
534BigSite
535in the namespace administrated by
536ARPA.
537A query could then be sent to
538BigSite
539for interpretation of
540HostA.
541Eventually the mail would arrive at
542HostA,
543which would then do final delivery
544to user
545.q eric.
546.sh 2 "Mail to Files and Programs"
547.pp
548Files and programs are legitimate message recipients.
549Files provide archival storage of messages,
550useful for project administration and history.
551Programs are useful as recipients in a variety of situations,
552for example,
553to maintain a public repository of systems messages
554(such as the Berkeley
555.i msgs
556program).
557.pp
558Any address passing through the initial parsing algorithm
559as a local address
560(i.e, not appearing to be a valid address for another mailer)
561is scanned for two special cases.
562If prefixed by a vertical bar (\c
563.q \^|\^ )
564the rest of the address is processed as a shell command.
565If the user name begins with a slash mark (\c
566.q /\^ )
567the name is used as a file name,
568instead of a login name.
569.sh 2 "Aliasing, Forwarding, Inclusion"
570.pp
571.i Sendmail
572reroutes mail three ways.
573Aliasing applies system wide.
574Forwarding allows each user to reroute incoming mail
575destined for that account.
576Inclusion directs
577.i sendmail
578to read a file for a list of addresses,
579and is normally used
580in conjunction with aliasing.
581.sh 3 "Aliasing"
582.pp
583Aliasing maps local addresses to address lists using a system-wide file.
584This file is hashed to speed access.
585Only addresses that parse as local
586are allowed as aliases;
587this guarantees a unique key
588(since there are no nicknames for the local host).
589.sh 3 "Forwarding"
590.pp
591After aliasing,
592if an recipient address specifies a local user
593.i sendmail
594searches for a
595.q .forward
596file in the recipient's home directory.
597If it exists,
598the message is
599.i not
600sent to that user,
601but rather to the list of addresses in that file.
602Often
603this list will contain only one address,
604and the feature will be used for network mail forwarding.
605.pp
606Forwarding also permits a user to specify a private incoming mailer.
607For example,
608forwarding to:
609.(b
610"\^|\|/usr/local/newmail myname"
611.)b
612will use a different incoming mailer.
613.sh 3 "Inclusion"
614.pp
615Inclusion is specified in RFC 733 [Crocker77] syntax:
616.(b
617:Include: pathname
618.)b
619An address of this form reads the file specified by
620.i pathname
621and sends to all users listed in that file.
622.pp
623The intent is
624.i not
625to support direct use of this feature,
626but rather to use this as a subset of aliasing.
627For example,
628an alias of the form:
629.(b
630project: :include:/usr/project/userlist
631.)b
632is a method of letting a project maintain a mailing list
633without interaction with the system administration,
634even if the alias file is protected.
635.pp
636It is not necessary to rebuild the index on the alias database
637when a :include: list is changed.
638.sh 2 "Message Collection"
639.pp
640Once all recipient addresses are parsed and verified,
641the message is collected.
642The message comes in two parts:
643a message header and a message body,
644separated by a blank line.
645The body is an uninterpreted
646sequence of text lines.
647.pp
648The header is formated as a series of lines
649of the form
650.(b
651	field-name: field-value
652.)b
653Field-value can be split across lines by starting the following
654lines with a space or a tab.
655Some header fields have special internal meaning,
656and have appropriate special processing.
657Other headers are simply passed through.
658Some header fields may be added automatically,
659such as time stamps.
660.sh 1 "THE UUCP PROBLEM"
661.pp
662Of particular interest
663is the UUCP network.
664The explicit routing
665used in the UUCP environment
666causes a number of serious problems.
667First,
668giving out an address
669is impossible
670without knowing the address of your potential correspondent.
671This is typically handled
672by specifying the address
673relative to some
674.q "well-known"
675host
676(e.g.,
677ucbvax or decvax).
678Second,
679it is often difficult to compute
680the set of addresses
681to reply to
682without some knowledge
683of the topology of the network.
684Although it may be easy for a human being
685to do this
686under many circumstances,
687a program does not have equally sophisticated heuristics
688built in.
689Third,
690certain addresses will become painfully and unnecessarily long,
691as when a message is routed through many hosts in the USENET.
692And finally,
693certain
694.q "mixed domain"
695addresses
696are impossible to parse unambiguously \*-
697e.g.,
698.(l
699decvax!ucbvax!lbl-h!user@LBL-CSAM
700.)l
701might have many possible resolutions,
702depending on whether the message was first routed
703to decvax
704or to LBL-CSAM.
705.pp
706To solve this problem,
707the UUCP syntax
708would have to be changed to use addresses
709rather than routes.
710For example,
711the address
712.q decvax!ucbvax!eric
713might be expressed as
714.q eric@ucbvax.UUCP
715(with the hop through decvax implied).
716This address would itself be a domain-based address;
717for example,
718an address might be of the form:
719.(l
720mark@d.cbosg.btl.UUCP
721.)l
722Hosts outside of Bell Telephone Laboratories
723would then only need to know
724how to get to a designated BTL relay,
725and the BTL topology
726would only be maintained inside Bell.
727.pp
728There are three major problems
729associated with turning UUCP addresses
730into something reasonable:
731defining the namespace,
732creating and propagating the necessary software,
733and building and maintaining the database.
734.sh 2 "Defining the Namespace"
735.pp
736Putting all UUCP hosts into a flat namespace
737(e.g.,
738.q \&...@host.UUCP )
739is not practical for a number of reasons.
740First,
741with over 1600 sites already,
742and (with the increasing availability of inexpensive microcomputers
743and autodialers)
744several thousand more coming within a few years,
745the database update problem
746is simply intractable
747if the namespace is flat.
748Second,
749there are almost certainly name conflicts today.
750Third,
751as the number of sites grow
752the names become ever less mnemonic.
753.pp
754It seems inevitable
755that there be some sort of naming authority
756for the set of top level names
757in the UUCP domain,
758as unpleasant a possibility
759as that may seem.
760It will simply not be possible
761to have one host resolving all names.
762It may however be possible
763to handle this
764in a fashion similar to that of assigning names of newsgroups
765in USENET.
766However,
767it will be essential to encourage everyone
768to become subdomains of an existing domain
769whenever possible \*-
770even though this will certainly bruise some egos.
771For example,
772if a new host named
773.q blid
774were to be added to the UUCP network,
775it would probably actually be addressed as
776.q d.bli.UUCP
777(i.e.,
778as host
779.q d
780in the pseudo-domain
781.q bli
782rather than as host
783.q blid
784in the UUCP domain).
785.sh 2 "Creating and Propagating the Software"
786.pp
787The software required to implement a consistent namespace
788is relatively trivial.
789Two modules are needed,
790one to handle incoming mail
791and one to handle outgoing mail.
792.pp
793The incoming module
794must be prepared to handle either old or new style addresses.
795New-style addresses
796can be passed through unchanged.
797Old style addresses
798must be turned into new style addresses
799where possible.
800.pp
801The outgoing module
802is slightly trickier.
803It must do a database lookup on the recipient addresses
804(passed on the command line)
805to determine what hosts to send the message to.
806If those hosts do not accept new-style addresses,
807it must transform all addresses in the header of the message
808into old style using the database lookup.
809.pp
810Both of these modules
811are straightforward
812except for the issue of modifying the header.
813It seems prudent to choose one format
814for the message headers.
815For a number of reasons,
816Berkeley has elected to use the ARPANET protocols
817for message formats.
818However,
819this protocol is somewhat difficult to parse.
820.pp
821Propagation is somewhat more difficult.
822There are a large number of hosts
823connected to UUCP
824that will want to run completely standard systems
825(for very good reasons).
826The strategy is not to convert the entire network \*-
827only enough of it it alleviate the problem.
828.sh 2 "Building and Maintaining the Database"
829.pp
830This is by far the most difficult problem.
831A prototype for this database
832already exists,
833but it is maintained by hand
834and does not pretend to be complete.
835.pp
836This problem will be reduced considerably
837if people choose to group their hosts
838into subdomains.
839This would require a global update
840only when a new top level domain
841joined the network.
842A message to a host in a subdomain
843could simply be routed to a known domain gateway
844for further processing.
845For example,
846the address
847.q eric@a.bli.UUCP
848might be routed to the
849.q bli
850gateway
851for redistribution;
852new hosts could be added
853within BLI
854without notifying the rest of the world.
855Of course,
856other hosts
857.i could
858be notified as an efficiency measure.
859.pp
860There may be more than one domain gateway.
861A domain such as BTL,
862for instance,
863might have a dozen gateways to the outside world;
864a non-BTL site
865could choose the closest gateway.
866The only restriction
867would be that all gateways
868maintain a consistent view of the domain
869they represent.
870.sh 2 "Logical Structure"
871.pp
872Logically,
873domains are organized into a tree.
874There need not be a host actually associated
875with each level in the tree \*-
876for example,
877there will be no host associated with the name
878.q UUCP.
879Similarly,
880an organization might group names together for administrative reasons;
881for example,
882the name
883.(l
884CAD.research.BigCorp.UUCP
885.)l
886might not actually have a host representing
887.q research.
888.pp
889However,
890it may frequently be convenient to have a host
891or hosts
892that
893.q represent
894a domain.
895For example,
896if a single host exists that
897represents
898Berkeley,
899then mail from outside Berkeley
900can forward mail to that host
901for further resolution
902without knowing Berkeley's
903(rather volatile)
904topology.
905This is not unlike the operation
906of the telephone network.
907.pp
908This may also be useful
909inside certain large domains.
910For example,
911at Berkeley it may be presumed
912that most hosts know about other hosts
913inside the Berkeley domain.
914But if they process an address
915that is unknown,
916they can pass it
917.q upstairs
918for further examination.
919Thus as new hosts are added
920only one host
921(the domain master)
922.i must
923be updated immediately;
924other hosts can be updated as convenient.
925.pp
926Ideally this name resolution process
927would be performed by a name server
928(e.g., [Su82b])
929to avoid unnecessary copying
930of the message.
931However,
932in a batch network
933such as UUCP
934this could result in unnecessary delays.
935.sh 1 "COMPARISON WITH DELIVERMAIL"
936.pp
937.i Sendmail
938is an outgrowth of
939.i delivermail .
940The primary differences are:
941.np
942Configuration information is not compiled in.
943This change simplifies many of the problems
944of moving to other machines.
945It also allows easy debugging of new mailers.
946.np
947Address parsing is more flexible.
948For example,
949.i delivermail
950only supported one gateway to any network,
951whereas
952.i sendmail
953can be sensitive to host names
954and reroute to different gateways.
955.np
956Forwarding and
957:include:
958features eliminate the requirement that the system alias file
959be writable by any user
960(or that an update program be written,
961or that the system administration make all changes).
962.np
963.i Sendmail
964supports message batching across networks
965when a message is being sent to multiple recipients.
966.np
967A mail queue is provided in
968.i sendmail.
969Mail that cannot be delivered immediately
970but can potentially be delivered later
971is stored in this queue for a later retry.
972The queue also provides a buffer against system crashes;
973after the message has been collected
974it may be reliably redelivered
975even if the system crashes during the initial delivery.
976.np
977.i Sendmail
978uses the networking support provided by 4.2BSD
979to provide a direct interface networks such as the ARPANET
980and/or Ethernet
981using SMTP (the Simple Mail Transfer Protocol)
982over a TCP/IP connection.
983.+c
984.ce
985REFERENCES
986.nr ii 1.5i
987.ip [Crocker77]
988Crocker, D. H.,
989Vittal, J. J.,
990Pogran, K. T.,
991and
992Henderson, D. A. Jr.,
993.ul
994Standard for the Format of ARPA Network Text Messages.
995RFC 733,
996NIC 41952.
997In [Feinler78].
998November 1977.
999.ip [Crocker82]
1000Crocker, D. H.,
1001.ul
1002Standard for the Format of Arpa Internet Text Messages.
1003RFC 822.
1004Network Information Center,
1005SRI International,
1006Menlo Park, California.
1007August 1982.
1008.ip [Feinler78]
1009Feinler, E.,
1010and
1011Postel, J.
1012(eds.),
1013.ul
1014ARPANET Protocol Handbook.
1015NIC 7104,
1016Network Information Center,
1017SRI International,
1018Menlo Park, California.
10191978.
1020.ip [Nowitz78]
1021Nowitz, D. A.,
1022and
1023Lesk, M. E.,
1024.ul
1025A Dial-Up Network of UNIX Systems.
1026Bell Laboratories.
1027In
1028UNIX Programmer's Manual, Seventh Edition,
1029Volume 2.
1030August, 1978.
1031.ip [Schmidt79]
1032Schmidt, E.,
1033.ul
1034An Introduction to the Berkeley Network.
1035University of California, Berkeley California.
10361979.
1037.ip [Shoens79]
1038Shoens, K.,
1039.ul
1040Mail Reference Manual.
1041University of California, Berkeley.
1042In UNIX Programmer's Manual,
1043Seventh Edition,
1044Volume 2C.
1045December 1979.
1046.ip [Solomon81]
1047Solomon, M.,
1048Landweber, L.,
1049and
1050Neuhengen, D.,
1051.ul
1052The Design of the CSNET Name Server.
1053CS-DN-2.
1054University of Wisconsin,
1055Madison.
1056October 1981.
1057.ip [Su82a]
1058Su, Zaw-Sing,
1059and
1060Postel, Jon,
1061.ul
1062The Domain Naming Convention for Internet User Applications.
1063RFC819.
1064Network Information Center,
1065SRI International,
1066Menlo Park, California.
1067August 1982.
1068.ip [Su82b]
1069Su, Zaw-Sing,
1070.ul
1071A Distributed System for Internet Name Service.
1072RFC830.
1073Network Information Center,
1074SRI International,
1075Menlo Park, California.
1076October 1982.
1077