SCCS-vsn: usr.sbin/sendmail/doc/usenix/usenix.me 1.2
-.nr DR 1 \" this is a draft copy
.nr si 3n
.he 'Mail Systems and Addressing in 4.2bsd''%'
.nr si 3n
.he 'Mail Systems and Addressing in 4.2bsd''%'
-.fo 'Version 1.1'DRAFT'Last Mod %G%'
+.fo 'Version 1.2''Last Mod %G%'
as with the Ethernet at Xerox PARC.
However, the general case is extremely complex.
For example,
as with the Ethernet at Xerox PARC.
However, the general case is extremely complex.
For example,
-some networks require point-to-point routing,
-which simplifies the database update problem
+some networks require that the route the message takes
+be explicitly specified by the sender,
+simplifying the database update problem
since only adjacent hosts must be entered
into the system tables,
since only adjacent hosts must be entered
into the system tables,
-while others use end-to-end addressing.
+while others use logical addressing,
+where the sender specifies the location of the recipient
+but not how to get there.
Some networks use a left-associative syntax
and others use a right-associative syntax,
causing ambiguity in mixed addresses.
Some networks use a left-associative syntax
and others use a right-associative syntax,
causing ambiguity in mixed addresses.
For example,
an address of the form
.q "eric@a.cc.berkeley.arpa"
For example,
an address of the form
.q "eric@a.cc.berkeley.arpa"
-describes only the logical
-organization of the address space.
+describes the logical
+organization of the address space
+(user
+.q eric
+on host
+.q a
+in the Computer Center
+at Berkeley)
+but not the physical networks used
+(for example, this could go over different networks
+depending on whether
+.q a
+were on an ethernet
+or a store-and-forward network).
.pp
.i Sendmail
is intended to help bridge the gap
.pp
.i Sendmail
is intended to help bridge the gap
depending on my current affiliation.
.pp
However,
depending on my current affiliation.
.pp
However,
-and address is independent of the location of anyone else.
+an address is independent of the location of anyone else.
That is,
my address remains the same to everyone who might be sending me mail.
For example,
That is,
my address remains the same to everyone who might be sending me mail.
For example,
to find out their address.
.sh 2 "Route"
.pp
to find out their address.
.sh 2 "Route"
.pp
-Where an address specifies
+While an address specifies
.i where
to find a mailbox,
a route specifies
.i where
to find a mailbox,
a route specifies
fairly complex environments,
including multiple
connections to a single network type
fairly complex environments,
including multiple
connections to a single network type
-(such as with multiple UUCP or Ether nets).
+(such as with multiple UUCP or Ethernets).
This goal requires consideration of the contents of an address
as well as its syntax
in order to determine which gateway to use.
.np
This goal requires consideration of the contents of an address
as well as its syntax
in order to determine which gateway to use.
.np
-Configuration should not be compiled into the code.
+Configuration information should not be compiled into the code.
A single compiled program should be able to run as is at any site
(barring such basic changes as the CPU type or the operating system).
We have found this seemingly unimportant goal
A single compiled program should be able to run as is at any site
(barring such basic changes as the CPU type or the operating system).
We have found this seemingly unimportant goal
.sh 1 "USAGE"
.sh 2 "Address Formats"
.pp
.sh 1 "USAGE"
.sh 2 "Address Formats"
.pp
-Arguments may be flags and addresses.
+Arguments may be flags or addresses.
Flags set various processing options.
Following flag arguments,
address arguments may be given.
Flags set various processing options.
Following flag arguments,
address arguments may be given.
but
.i \euser
is different from either of them.
but
.i \euser
is different from either of them.
+This might be used
+to avoid normal aliasing
+or duplicate suppression algorithms.
.pp
Parentheses, angle brackets, and double quotes
must be properly balanced and nested.
.pp
Parentheses, angle brackets, and double quotes
must be properly balanced and nested.
.q /\^ )
the name is used as a file name,
instead of a login name.
.q /\^ )
the name is used as a file name,
instead of a login name.
-.pp
-Files that have setuid or setgid bits set
-but no execute bits set
-have those bits honored if
-.i sendmail
-is running as root.
.sh 2 "Aliasing, Forwarding, Inclusion"
.pp
.i Sendmail
.sh 2 "Aliasing, Forwarding, Inclusion"
.pp
.i Sendmail
in conjunction with aliasing.
.sh 3 "Aliasing"
.pp
in conjunction with aliasing.
.sh 3 "Aliasing"
.pp
-Aliasing maps names to address lists using a system-wide file.
-This file is indexed to speed access.
-Only names that parse as local
+Aliasing maps local addresses to address lists using a system-wide file.
+This file is hashed to speed access.
+Only addresses that parse as local
are allowed as aliases;
this guarantees a unique key
(since there are no nicknames for the local host).
.sh 3 "Forwarding"
.pp
After aliasing,
are allowed as aliases;
this guarantees a unique key
(since there are no nicknames for the local host).
.sh 3 "Forwarding"
.pp
After aliasing,
-recipients that are local and valid
-are checked for the existence of a
+if an recipient address specifies a local user
+.i sendmail
+searches for a
-file in their home directory.
+file in the recipient's home directory.
If it exists,
the message is
.i not
sent to that user,
If it exists,
the message is
.i not
sent to that user,
-but rather to the list of users in that file.
+but rather to the list of addresses in that file.
Often
this list will contain only one address,
and the feature will be used for network mail forwarding.
Often
this list will contain only one address,
and the feature will be used for network mail forwarding.
Of particular interest
is the UUCP network.
The explicit routing
Of particular interest
is the UUCP network.
The explicit routing
+used in the UUCP environment
causes a number of serious problems.
First,
giving out an address
causes a number of serious problems.
First,
giving out an address
built in.
Third,
certain addresses will become painfully and unnecessarily long,
built in.
Third,
certain addresses will become painfully and unnecessarily long,
-as when a message is routed through many hosts in USENET.
+as when a message is routed through many hosts in the USENET.
And finally,
certain
.q "mixed domain"
And finally,
certain
.q "mixed domain"
are impossible to parse unambiguously \*-
e.g.,
.(l
are impossible to parse unambiguously \*-
e.g.,
.(l
-decvax!ucbvax!lbl-h@LBL-CSAM
+decvax!ucbvax!lbl-h!user@LBL-CSAM
.)l
might have many possible resolutions,
depending on whether the message was first routed
.)l
might have many possible resolutions,
depending on whether the message was first routed
and building and maintaining the database.
.sh 2 "Defining the Namespace"
.pp
and building and maintaining the database.
.sh 2 "Defining the Namespace"
.pp
-Making all UUCP hosts
-top-level names
+Putting all UUCP hosts into a flat namespace
+(e.g.,
+.q \&...@host.UUCP )
is not practical for a number of reasons.
First,
with over 1600 sites already,
is not practical for a number of reasons.
First,
with over 1600 sites already,
in the UUCP domain).
.sh 2 "Creating and Propagating the Software"
.pp
in the UUCP domain).
.sh 2 "Creating and Propagating the Software"
.pp
+The software required to implement a consistent namespace
is relatively trivial.
Two modules are needed,
one to handle incoming mail
is relatively trivial.
Two modules are needed,
one to handle incoming mail
.i could
be notified as an efficiency measure.
.pp
.i could
be notified as an efficiency measure.
.pp
-Nor need there be only one domain gateway.
+There may be more than one domain gateway.
A domain such as BTL,
for instance,
might have a dozen gateways to the outside world;
a non-BTL site
A domain such as BTL,
for instance,
might have a dozen gateways to the outside world;
a non-BTL site
-could choose the one that was closest.
+could choose the closest gateway.
The only restriction
would be that all gateways
maintain a consistent view of the domain
The only restriction
would be that all gateways
maintain a consistent view of the domain
.sh 2 "Logical Structure"
.pp
Logically,
.sh 2 "Logical Structure"
.pp
Logically,
at Berkeley it may be presumed
that most hosts know about other hosts
inside the Berkeley domain.
at Berkeley it may be presumed
that most hosts know about other hosts
inside the Berkeley domain.
-But if they process and address
+But if they process an address
that is unknown,
they can pass it
.q upstairs
that is unknown,
they can pass it
.q upstairs
be updated immediately;
other hosts can be updated as convenient.
.pp
be updated immediately;
other hosts can be updated as convenient.
.pp
-Ideally this name resolution
+Ideally this name resolution process
would be performed by a name server
(e.g., [Su82b])
to avoid unnecessary copying
would be performed by a name server
(e.g., [Su82b])
to avoid unnecessary copying