Annotation of 43BSDReno/usr.sbin/named/doc/rfc974.lpr, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: Network Working Group                                    Craig Partridge
                      4: Request for Comments: 974                 CSNET CIC BBN Laboratories Inc
                      5:                                                             January 1986
                      6: 
                      7:                    MAIL ROUTING AND THE DOMAIN SYSTEM
                      8: 
                      9: 
                     10: Status of this Memo
                     11: 
                     12:    This RFC presents a description of how mail systems on the Internet
                     13:    are expected to route messages based on information from the domain
                     14:    system described in RFCs 882, 883 and 973.  Distribution of this memo
                     15:    is unlimited.
                     16: 
                     17: Introduction
                     18: 
                     19:    The purpose of this memo is to explain how mailers are to decide how
                     20:    to route a message addressed to a given Internet domain name.  This
                     21:    involves a discussion of how mailers interpret MX RRs, which are used
                     22:    for message routing.  Note that this memo makes no statement about
                     23:    how mailers are to deal with MB and MG RRs, which are used for
                     24:    interpreting mailbox names.
                     25: 
                     26:    Under RFC-882 and RFC-883 certain assumptions about mail addresses
                     27:    have been changed.  Up to now, one could usually assume that if a
                     28:    message was addressed to a mailbox, for example, at LOKI.BBN.COM,
                     29:    that one could just open an SMTP connection to LOKI.BBN.COM and pass
                     30:    the message along.  This system broke down in certain situations,
                     31:    such as for certain UUCP and CSNET hosts which were not directly
                     32:    attached to the Internet, but these hosts could be handled as special
                     33:    cases in configuration files (for example, most mailers were set up
                     34:    to automatically forward mail addressed to a CSNET host to
                     35:    CSNET-RELAY.ARPA).
                     36: 
                     37:    Under domains, one cannot simply open a connection to LOKI.BBN.COM,
                     38:    but must instead ask the domain system where messages to LOKI.BBN.COM
                     39:    are to be delivered. And the domain system may direct a mailer to
                     40:    deliver messages to an entirely different host, such as SH.CS.NET.
                     41:    Or, in a more complicated case, the mailer may learn that it has a
                     42:    choice of routes to LOKI.BBN.COM.  This memo is essentially a set of
                     43:    guidelines on how mailers should behave in this more complex world.
                     44: 
                     45:    Readers are expected to be familiar with RFCs 882, 883, and the
                     46:    updates to them (e.g., RFC-973).
                     47: 
                     48: 
                     49: 
                     50: 
                     51: 
                     52: 
                     53: 
                     54: 
                     55: 
                     56: Partridge                                                       [Page 1]
                     57: 
                     58: 
                     59: 
                     60: RFC 974                                                     January 1986
                     61: Mail Routing and the Domain System
                     62: 
                     63: 
                     64: What the Domain Servers Know
                     65: 
                     66:    The domain servers store information as a series of resource records
                     67:    (RRs), each of which contains a particular piece of information about
                     68:    a given domain name (which is usually, but not always, a host).  The
                     69:    simplest way to think of a RR is as a typed pair of datum, a domain
                     70:    name matched with relevant data, and stored with some additional type
                     71:    information to help systems determine when the RR is relevant.  For
                     72:    the purposes of message routing, the system stores RRs known as MX
                     73:    RRs. Each MX matches a domain name with two pieces of data, a
                     74:    preference value (an unsigned 16-bit integer), and the name of a
                     75:    host.  The preference number is used to indicate in what order the
                     76:    mailer should attempt deliver to the MX hosts, with the lowest
                     77:    numbered MX being the one to try first.  Multiple MXs with the same
                     78:    preference are permitted and have the same priority.
                     79: 
                     80:    In addition to mail information, the servers store certain other
                     81:    types of RR's which mailers may encounter or choose to use.  These
                     82:    are: the canonical name (CNAME) RR, which simply states that the
                     83:    domain name queried for is actually an alias for another domain name,
                     84:    which is the proper, or canonical, name; and the Well Known Service
                     85:    (WKS) RR, which stores information about network services (such as
                     86:    SMTP) a given domain name supports.
                     87: 
                     88: General Routing Guidelines
                     89: 
                     90:    Before delving into a detailed discussion of how mailers are expected
                     91:    to do mail routing, it would seem to make sense to give a brief
                     92:    overview of how this memo is approaching the problems that routing
                     93:    poses.
                     94: 
                     95:    The first major principle is derived from the definition of the
                     96:    preference field in MX records, and is intended to prevent mail
                     97:    looping.  If the mailer is on a host which is listed as an MX for the
                     98:    destination host, the mailer may only deliver to an MX which has a
                     99:    lower preference count than its own host.
                    100: 
                    101:    It is also possible to cause mail looping because routing information
                    102:    is out of date or incomplete.  Out of date information is only a
                    103:    problem when domain tables are changed.  The changes will not be
                    104:    known to all affected hosts until their resolver caches time out.
                    105:    There is no way to ensure that this will not happen short of
                    106:    requiring mailers and their resolvers to always send their queries to
                    107:    an authoritative server, and never use data stored in a cache.  This
                    108:    is an impractical solution, since eliminating resolver caching would
                    109:    make mailing inordinately expensive.  What is more, the out-of-date
                    110:    RR problem should not happen if, when a domain table is changed,
                    111: 
                    112: 
                    113: Partridge                                                       [Page 2]
                    114: 
                    115: 
                    116: 
                    117: RFC 974                                                     January 1986
                    118: Mail Routing and the Domain System
                    119: 
                    120: 
                    121:    affected hosts (those in the list of MXs) have their resolver caches
                    122:    flushed. In other words, given proper precautions, mail looping as a
                    123:    result of domain information should be avoidable, without requiring
                    124:    mailers to query authoritative servers.  (The appropriate precaution
                    125:    is to check with a host's administrator before adding that host to a
                    126:    list of MXs).
                    127: 
                    128:    The incomplete data problem also requires some care when handling
                    129:    domain queries.  If the answer section of a query is incomplete
                    130:    critical MX RRs may be left out.  This may result in mail looping, or
                    131:    in a message being mistakenly labelled undeliverable.  As a result,
                    132:    mailers may only accept responses from the domain system which have
                    133:    complete answer sections.  Note that this entire problem can be
                    134:    avoided by only using virtual circuits for queries, but since this
                    135:    situation is likely to be very rare and datagrams are the preferred
                    136:    way to interact with the domain system, implementors should probably
                    137:    just ensure that their mailer will repeat a query with virtual
                    138:    circuits should the truncation bit ever be set.
                    139: 
                    140: Determining Where to Send a Message
                    141: 
                    142:    The explanation of how mailers should decide how to route a message
                    143:    is discussed in terms of the problem of a mailer on a host with
                    144:    domain name LOCAL trying to deliver a message addressed to the domain
                    145:    name REMOTE. Both LOCAL and REMOTE are assumed to be syntactically
                    146:    correct domain names.  Furthermore, LOCAL is assumed to be the
                    147:    official name for the host on which the mailer resides (i.e., it is
                    148:    not a alias).
                    149: 
                    150: Issuing a Query
                    151: 
                    152:    The first step for the mailer at LOCAL is to issue a query for MX RRs
                    153:    for REMOTE.  It is strongly urged that this step be taken every time
                    154:    a mailer attempts to send the message.  The hope is that changes in
                    155:    the domain database will rapidly be used by mailers, and thus domain
                    156:    administrators will be able to re-route in-transit messages for
                    157:    defective hosts by simply changing their domain databases.
                    158: 
                    159:    Certain responses to the query are considered errors:
                    160: 
                    161:       Getting no response to the query.  The domain server the mailer
                    162:       queried never sends anything back.  (This is distinct from an
                    163:       answer which contains no answers to the query, which is not an
                    164:       error).
                    165: 
                    166:       Getting a response in which the truncation field of the header is
                    167: 
                    168: 
                    169: 
                    170: Partridge                                                       [Page 3]
                    171: 
                    172: 
                    173: 
                    174: RFC 974                                                     January 1986
                    175: Mail Routing and the Domain System
                    176: 
                    177: 
                    178:       set.  (Recall discussion of incomplete queries above).  Mailers
                    179:       may not use responses of this type, and should repeat the query
                    180:       using virtual circuits instead of datagrams.
                    181: 
                    182:       Getting a response in which the response code is non-zero.
                    183: 
                    184:    Mailers are expected to do something reasonable in the face of an
                    185:    error.  The behaviour for each type of error is not specified here,
                    186:    but implementors should note that different types of errors should
                    187:    probably be treated differently.  For example, a response code of
                    188:    "non-existent domain" should probably cause the message to be
                    189:    returned to the sender as invalid, while a response code of "server
                    190:    failure" should probably cause the message to be retried later.
                    191: 
                    192:    There is one other special case.  If the response contains an answer
                    193:    which is a CNAME RR, it indicates that REMOTE is actually an alias
                    194:    for some other domain name. The query should be repeated with the
                    195:    canonical domain name.
                    196: 
                    197:    If the response does not contain an error response, and does not
                    198:    contain aliases, its answer section should be a (possibly zero
                    199:    length) list of MX RRs for domain name REMOTE (or REMOTE's true
                    200:    domain name if REMOTE was a alias).  The next section describes how
                    201:    this list is interpreted.
                    202: 
                    203: Interpreting the List of MX RRs
                    204: 
                    205:    NOTE: This section only discusses how mailers choose which names to
                    206:    try to deliver a message to, working from a list of RR's.  It does
                    207:    not discuss how the mailers actually make delivery.  Where ever
                    208:    delivering a message is mentioned, all that is meant is that the
                    209:    mailer should do whatever it needs to do to transfer a message to a
                    210:    remote site, given a domain name for that site.  (For example, an
                    211:    SMTP mailer will try to get an address for the domain name, which
                    212:    involves another query to the domain system, and then, if it gets an
                    213:    address, connect to the SMTP TCP port).  The mechanics of actually
                    214:    transferring the message over the network to the address associated
                    215:    with a given domain name is not within the scope of this memo.
                    216: 
                    217:    It is possible that the list of MXs in the response to the query will
                    218:    be empty.  This is a special case.  If the list is empty, mailers
                    219:    should treat it as if it contained one RR, an MX RR with a preference
                    220:    value of 0, and a host name of REMOTE.  (I.e., REMOTE is its only
                    221:    MX).  In addition, the mailer should do no further processing on the
                    222:    list, but should attempt to deliver the message to REMOTE.  The idea
                    223: 
                    224: 
                    225: 
                    226: 
                    227: Partridge                                                       [Page 4]
                    228: 
                    229: 
                    230: 
                    231: RFC 974                                                     January 1986
                    232: Mail Routing and the Domain System
                    233: 
                    234: 
                    235:    here is that if a domain fails to advertise any information about a
                    236:    particular name we will give it the benefit of the doubt and attempt
                    237:    delivery.
                    238: 
                    239:    If the list is not empty, the mailer should remove irrelevant RR's
                    240:    from the list according to the following steps.  Note that the order
                    241:    is significant.
                    242: 
                    243:       For each MX, a WKS query should be issued to see if the domain
                    244:       name listed actually supports the mail service desired.  MX RRs
                    245:       which list domain names which do not support the service should be
                    246:       discarded.  This step is optional, but strongly encouraged.
                    247: 
                    248:       If the domain name LOCAL is listed as an MX RR, all MX RRs with a
                    249:       preference value greater than or equal to that of LOCAL's must be
                    250:       discarded.
                    251: 
                    252:    After removing irrelevant RRs, the list can again be empty.  This is
                    253:    now an error condition and can occur in several ways.  The simplest
                    254:    case is that the WKS queries have discovered that none of the hosts
                    255:    listed supports the mail service desired.  The message is thus deemed
                    256:    undeliverable, though extremely persistent mail systems might want to
                    257:    try a delivery to REMOTE's address (if it exists) before returning
                    258:    the message. Another, more dangerous, possibility is that the domain
                    259:    system believes that LOCAL is handling message for REMOTE, but the
                    260:    mailer on LOCAL is not set up to handle mail for REMOTE.  For
                    261:    example, if the domain system lists LOCAL as the only MX for REMOTE,
                    262:    LOCAL will delete all the entries in the list.  But LOCAL is
                    263:    presumably querying the domain system because it didn't know what to
                    264:    do with a message addressed to REMOTE. Clearly something is wrong.
                    265:    How a mailer chooses to handle these situations is to some extent
                    266:    implementation dependent, and is thus left to the implementor's
                    267:    discretion.
                    268: 
                    269:    If the list of MX RRs is not empty, the mailer should try to deliver
                    270:    the message to the MXs in order (lowest preference value tried
                    271:    first).  The mailer is required to attempt delivery to the lowest
                    272:    valued MX.  Implementors are encouraged to write mailers so that they
                    273:    try the MXs in order until one of the MXs accepts the message, or all
                    274:    the MXs have been tried.  A somewhat less demanding system, in which
                    275:    a fixed number of MXs is tried, is also reasonable.  Note that
                    276:    multiple MXs may have the same preference value.  In this case, all
                    277:    MXs at with a given value must be tried before any of a higher value
                    278:    are tried.  In addition, in the special case in which there are
                    279:    several MXs with the lowest preference value,  all of them should be
                    280:    tried before a message is deemed undeliverable.
                    281: 
                    282: 
                    283: 
                    284: Partridge                                                       [Page 5]
                    285: 
                    286: 
                    287: 
                    288: RFC 974                                                     January 1986
                    289: Mail Routing and the Domain System
                    290: 
                    291: 
                    292: Minor Special Issues
                    293: 
                    294:    There are a couple of special issues left out of the preceding
                    295:    section because they complicated the discussion.  They are treated
                    296:    here in no particular order.
                    297: 
                    298:    Wildcard names, those containing the character '*' in them, may be
                    299:    used for mail routing.  There are likely to be servers on the network
                    300:    which simply state that any mail to a domain is to be routed through
                    301:    a relay. For example, at the time that this RFC is being written, all
                    302:    mail to hosts in the domain IL is routed through RELAY.CS.NET.  This
                    303:    is done by creating a wildcard RR, which states that *.IL has an MX
                    304:    of RELAY.CS.NET.  This should be transparent to the mailer since the
                    305:    domain servers will hide this wildcard match. (If it matches *.IL
                    306:    with HUJI.IL for example, a domain server will return an RR
                    307:    containing HUJI.IL, not *.IL). If by some accident a mailer receives
                    308:    an RR with a wildcard domain name in its name or data section it
                    309:    should discard the RR.
                    310: 
                    311:    Note that the algorithm to delete irrelevant RRs breaks if LOCAL has
                    312:    a alias and the alias is listed in the MX records for REMOTE.  (E.g.
                    313:    REMOTE has an MX of ALIAS, where ALIAS has a CNAME of LOCAL).  This
                    314:    can be avoided if aliases are never used in the data section of MX
                    315:    RRs.
                    316: 
                    317:    Implementors should understand that the query and interpretation of
                    318:    the query is only performed for REMOTE.  It is not repeated for the
                    319:    MX RRs listed for REMOTE.  You cannot try to support more extravagant
                    320:    mail routing by building a chain of MXs.  (E.g. UNIX.BBN.COM is an MX
                    321:    for RELAY.CS.NET and RELAY.CS.NET is an MX for all the hosts in .IL,
                    322:    but this does not mean that UNIX.BBN.COM accepts any responsibility
                    323:    for mail for .IL).
                    324: 
                    325:    Finally, it should be noted that this is a standard for routing on
                    326:    the Internet.  Mailers serving hosts which lie on multiple networks
                    327:    will presumably have to make some decisions about which network to
                    328:    route through. This decision making is outside the scope of this
                    329:    memo, although mailers may well use the domain system to help them
                    330:    decide.  However, once a mailer decides to deliver a message via the
                    331:    Internet it must apply these rules to route the message.
                    332: 
                    333: 
                    334: 
                    335: 
                    336: 
                    337: 
                    338: 
                    339: 
                    340: 
                    341: Partridge                                                       [Page 6]
                    342: 
                    343: 
                    344: 
                    345: RFC 974                                                     January 1986
                    346: Mail Routing and the Domain System
                    347: 
                    348: 
                    349: Examples
                    350: 
                    351:    To illustrate the discussion above, here are three examples of how
                    352:    mailers should route messages.  All examples work with the following
                    353:    database:
                    354: 
                    355:       A.EXAMPLE.ORG    IN    MX    10    A.EXAMPLE.ORG
                    356:       A.EXAMPLE.ORG    IN    MX    15    B.EXAMPLE.ORG
                    357:       A.EXAMPLE.ORG    IN    MX    20    C.EXAMPLE.ORG
                    358:       A.EXAMPLE.ORG    IN    WKS   10.0.0.1    TCP    SMTP
                    359: 
                    360:       B.EXAMPLE.ORG    IN    MX    0      B.EXAMPLE.ORG
                    361:       B.EXAMPLE.ORG    IN    MX    10     C.EXAMPLE.ORG
                    362:       B.EXAMPLE.ORG    IN    WKS   10.0.0.2    TCP    SMTP
                    363: 
                    364:       C.EXAMPLE.ORG    IN    MX    0     C.EXAMPLE.ORG
                    365:       C.EXAMPLE.ORG    IN    WKS   10.0.0.3    TCP    SMTP
                    366: 
                    367:       D.EXAMPLE.ORG    IN    MX    0     D.EXAMPLE.ORG
                    368:       D.EXAMPLE.ORG    IN    MX    0     C.EXAMPLE.ORG
                    369:       D.EXAMPLE.ORG    IN    WKS   10.0.0.4    TCP    SMTP
                    370: 
                    371:    In the first example, an SMTP mailer on D.EXAMPLE.ORG is trying to
                    372:    deliver a message addressed to A.EXAMPLE.ORG. From the answer to its
                    373:    query, it learns that A.EXAMPLE.ORG has three MX RRs.  D.EXAMPLE.ORG
                    374:    is not one of the MX RRs and all three MXs support SMTP mail
                    375:    (determined from the WKS entries), so none of the MXs are eliminated.
                    376:    The mailer is obliged to try to deliver to A.EXAMPLE.ORG as the
                    377:    lowest valued MX.  If it cannot reach A.EXAMPLE.ORG it can (but is
                    378:    not required to) try B.EXAMPLE.ORG. and if B.EXAMPLE.ORG is not
                    379:    responding, it can try C.EXAMPLE.ORG.
                    380: 
                    381:    In the second example, the mailer is on B.EXAMPLE.ORG, and is again
                    382:    trying to deliver a message addressed to A.EXAMPLE.ORG.  There are
                    383:    once again three MX RRs for A.EXAMPLE.ORG, but in this case the
                    384:    mailer must discard the RRs for itself and C.EXAMPLE.ORG (because the
                    385:    MX RR for C.EXAMPLE.ORG has a higher preference value than the RR for
                    386:    B.EXAMPLE.ORG).  It is left only with the RR for A.EXAMPLE.ORG, and
                    387:    can only try delivery to A.EXAMPLE.ORG.
                    388: 
                    389:    In the third example, consider a mailer on A.EXAMPLE.ORG trying to
                    390:    deliver a message to D.EXAMPLE.ORG.  In this case there are only two
                    391:    MX RRs, both with the same preference value.  Either MX will accept
                    392:    messages for D.EXAMPLE.ORG. The mailer should try one MX first (which
                    393:    one is up to the mailer, though D.EXAMPLE.ORG seems most reasonable),
                    394:    and if that delivery fails should try the other MX (e.g.
                    395:    C.EXAMPLE.ORG).
                    396: 
                    397: 
                    398: Partridge                                                       [Page 7]
                    399: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.