|
|
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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.