RFC 5617
DomainKeys Identified Mail (DKIM) Author Domain Signing Practices (ADSP)
RFC 5617: DomainKeys Identified Mail (DKIM) Author Domain Signing Practices (ADSP) ๐
Okay bestie, this is RFC 5617 ๐ฆ It's a Standards Track doc from August 2009, written by E. Allman (Sendmail, Inc.), J. Fenton (Cisco Systems, Inc.), M. Delany (Yahoo! Inc.), and J. Levine (Taughannock Networks). The title block doesn't list anything it obsoletes or updates, so it's standing on its own ๐
Abstract โจ
DKIM gives domains a way to verify where a message came from and what's inside it. This doc adds a side kit for checking messages that don't carry a DKIM signature for the domain in the author's address ๐ It defines a record where a domain can say whether it signs its outgoing mail, plus how other hosts can go grab that record ๐ธ
Status of This Memo ๐
This is an Internet standards track protocol for the Internet community, and it's openly asking for discussion and suggestions for improvements ๐ For the standardization state and status, check the current edition of "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited ๐ซถ
Copyright Notice ยฉ๏ธ
Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents in effect on the date of publication of this document (http://trustee.ietf.org/license-info). Please review these documents carefully, because they describe your rights and restrictions with respect to this document ๐
Table of Contents ๐๏ธ
1. Introduction ....................................................3
2. Language and Terminology ........................................3
2.1. Terms Imported from the DKIM Signatures Specification ......3
2.2. Valid Signature ............................................4
2.3. Author Address .............................................4
2.4. Author Domain ..............................................4
2.5. Alleged Author .............................................4
2.6. Author Domain Signing Practices ............................4
2.7. Author Domain Signature ....................................4
3. Operation Overview ..............................................5
3.1. ADSP Applicability .........................................5
3.2. ADSP Usage .................................................6
3.3. ADSP Results ...............................................6
4. Detailed Description ............................................7
4.1. DNS Representation .........................................7
4.2. Publication of ADSP Records ................................7
4.2.1. Record Syntax .......................................7
4.3. ADSP Lookup Procedure ......................................9
5. IANA Considerations ............................................10
5.1. ADSP Specification Tag Registry ...........................10
5.2. ADSP Outbound Signing Practices Registry ..................11
5.3. Authentication-Results Method Registry Update .............11
5.4. Authentication-Results Result Registry Update .............11
6. Security Considerations ........................................13
6.1. ADSP Threat Model .........................................14
6.2. DNS Considerations ........................................14
6.3. DNS Wildcards .............................................15
6.4. Inappropriate Application of Author Domain Signatures .....15
7. References .....................................................16
7.1. Normative References ......................................16
7.2. Informative References ....................................16
Appendix A. Lookup Examples ......................................17
A.1. Domain and ADSP Exist .....................................17
A.2. Domain Exists, ADSP Does Not Exist ........................17
A.3. Domain Does Not Exist .....................................17
Appendix B. Usage Examples .......................................18
B.1. Single Location Domains ...................................18
B.2. Bulk Mailing Domains ......................................18
B.3. Bulk Mailing Domains with Discardable Mail ................19
B.4. Third-Party Senders .....................................19
B.5. Domains with Independent Users and Liberal Use Policies ...19
B.6. Non-Email Domains .......................................20
Appendix C. Acknowledgements .....................................20
1. Introduction ๐
DKIM defines a mechanism where email messages can be cryptographically signed, which lets a signing domain claim responsibility for putting a message into the mail stream ๐ฅ Recipients can verify that signature by querying the Signer's domain directly to fetch the right public key. That way they can confirm the message was vouched for by someone holding the private key for the signing domain ๐
But the internet's legacy means not every message is going to be signed, and a missing signature isn't an a priori sign of forgery ๐ โโ๏ธ Honestly, during the early phases of deployment, most messages will probably stay unsigned. Some domains might still decide to sign all of their outgoing mail, say, to protect their brand names ๐ It could be super useful for those domains to be able to advertise that to other hosts. That's the whole point of Author Domain Signing Practices (ADSP) โจ
Hosts that implement this spec can ask what Author Domain Signing Practices a domain advertises. That ask is called an Author Domain Signing Practices check ๐ง
The basic requirements for ADSP are in [RFC5016]. This document refers a lot to [RFC4871], so it assumes you already know it ๐ค
Requirements Notation:
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
2. Language and Terminology ๐
2.1. Terms Imported from the DKIM Signatures Specification
Some of the terminology here comes straight from [RFC4871]. In a few places, that document says "Sender", but this one switches it to "Author" ๐ The goal is to emphasize the link to the Author address(es) in the From: header field from [RFC5322]. Quick recap:
- A "Signer" is the agent that signs a message, as defined in Section 2.1 of [RFC4871] ๐
- A "Local-part" is the part of an address before the @ character, as defined in [RFC5322] and used in [RFC4871] ๐ท
2.2. Valid Signature
A "Valid Signature" is any signature on a message that correctly verifies using the procedure described in Section 6.1 of [RFC4871] โ
2.3. Author Address
An "Author Address" is an email address in the From: header field of a message [RFC5322]. If the From: header field has multiple addresses, the message has multiple Author Addresses ๐
2.4. Author Domain
An "Author Domain" is everything to the right of the "@" in an Author Address (not including the "@" itself) ๐ฆ
2.5. Alleged Author
An "Alleged Author" is an Author Address of a message. It's "alleged" because nobody has checked it yet ๐คจ
2.6. Author Domain Signing Practices
"Author Domain Signing Practices" (or just "practices") is a machine-readable record published by the domain of an Alleged Author. It includes statements about that domain's practices for mail it sends with its domain in the From: line ๐ฃ
2.7. Author Domain Signature
An "Author Domain Signature" is a Valid Signature where the domain name of the DKIM signing entity (that's the d= tag in the DKIM-Signature header field) is the same as the domain name in the Author Address. Following [RFC5321], domain name comparisons are case insensitive ๐ค
For example, if the From: line address is bob@domain.example, and the message has a Valid Signature whose DKIM-Signature header field contains d=domain.example, then the message has an Author Domain Signature ๐
3. Operation Overview ๐บ๏ธ
Domain owners publish ADSP info through a query mechanism like the Domain Name System. The specifics are in Section 4.1. Hosts can look up the ADSP info of the domain(s) named by the Author Address(es), as described in Section 4.3 ๐ If a message has multiple Author Addresses, the ADSP lookups SHOULD be performed independently on each address. This document doesn't cover how a host might combine the lookup results ๐
3.1. ADSP Applicability
ADSP as defined in this document is bound to DNS ๐ That means ADSP only applies to Author Domains with appropriate DNS records (that is, A, AAAA, and/or MX) showing the domain might be used for email. How other Author Domains get handled is outside this document's scope. Still, attackers may use those domain names on purpose to try to sneak around an organization's ADSP policy statements ๐ It's up to the ADSP checker implementation to return an appropriate error result for Author Domains outside ADSP's scope ๐จ
ADSP applies to specific domains, not domain subtrees ๐ณ For example, if an Author Address were user@domain.example, the Author Domain would be domain.example, and the applicable ADSP record would be at _adsp._domainkey.domain.example. An Author Address in a subdomain like user@sub.domain.example would have a different ADSP record at _adsp._domainkey.sub.domain.example. ADSP makes no connection between a domain and its parent or child domains ๐
โโ๏ธ
Note: If an organization wants to publish Author Domain Signing Practices for all the subdomains it uses, such as host names of servers within the domain, it does so by creating ADSP records for every _adsp._domainkey.<sub>.domain.example. Wildcards cannot be used (see Section 6.3.); however, suitable DNS management tools could automate creation of the ADSP records ๐ ๏ธ
Note: The results from DNS queries that are meant to validate a domain name unavoidably approximate the set of Author Domains that can appear in legitimate email. For example, a DNS A record could belong to a device that doesn't even have an email implementation. It's up to the checker to decide what degree of approximation is acceptable ๐ง
3.2. ADSP Usage ๐
okay so depending on the Author Domain(s) and the signatures in a message, a recipient gets different amounts of useful info from each ADSP lookup ๐
- If a message has no Valid Signature, the ADSP result is directly relevant to the message. no cap, this is the main event ๐
- If a message has an Author Domain Signature, ADSP provides no benefit relative to that domain since the message is already known to be compliant with any possible ADSP for that domain. it's already giving compliant ๐
- If a message has a Valid Signature other than an Author Domain Signature, the receiver can use both the Signature and the ADSP result in its evaluation of the message. two sources of tea, so it can weigh both โโจ
3.3. ADSP Results ๐
okay, so an ADSP lookup for an Author Address can come back with one of four results ๐ฆ
- Messages from this domain might or might not have an Author Domain Signature. This is the default if the domain exists in the DNS but no ADSP record is found.
- All messages from this domain are signed with an Author Domain Signature.
- All messages from this domain are signed with an Author Domain Signature and are discardable, i.e., if a message arrives without a valid Author Domain Signature, the domain encourages the recipient(s) to discard it. bye bye, no second chances ๐
- This domain is out of scope, i.e., the domain does not exist in the DNS.
An ADSP lookup could also end without producing any result at all if a DNS lookup hits a temporary failure ๐ฅฒ
4. Detailed Description ๐ฆ
4.1. DNS Representation ๐
ADSP records get published using the DNS TXT resource record type. easy peasy ๐ง
The RDATA for ADSP resource records is textual, with specific syntax and semantics for their job of describing ADSP. The "Tag=Value List" syntax from Section 3.2 of [RFC4871] is used, but tweaked to use whitespace (WSP) instead of folding whitespace (FWS). Records that don't follow that syntax, or the syntax of the individual tags in Section 4.3, MUST be ignored (treated the same as a NODATA result) for ADSP purposes. They MAY still cause warning messages to get logged through an appropriate system logging mechanism ๐ If the RDATA has multiple character strings, they get logically concatenated with no delimiters in between.
Note: ADSP changes the "Tag=Value List" syntax from [RFC4871] to use WSP rather than FWS in its DNS records.
Domains MUST NOT publish ADSP records with wildcard names. Wildcards inside a domain that publishes ADSP records cause a real problem, and Section 6.3 goes into more detail ๐ญ
4.2. Publication of ADSP Records ๐ฎ
ADSP is meant to apply to all mail sent using the domain name string of an Alleged Author. the whole domain is in the chat ๐
4.2.1. Record Syntax โจ
ADSP records use the "tag=value" syntax from Section 3.2 of [RFC4871], modified to use WSP rather than FWS. Every ADSP record MUST start with an outbound signing-practices tag, so the first four characters of the record are lowercase "dkim", followed by optional whitespace and "=". that's the vibe check ๐ซถ
Tags used in ADSP records are described below. Unrecognized tags MUST be ignored. In the ABNF further down, the WSP token gets imported from [RFC5234].
dkim=is the Outbound Signing Practices for the domain. It's plain-text and REQUIRED. ๐ The possible values are:unknown: the domain might sign some or all email.all: all mail from the domain is signed with an Author Domain Signature.discardable: all mail from the domain is signed with an Author Domain Signature. Furthermore, if a message arrives without a valid Author Domain Signature due to modification in transit, submission via a path without access to a signing key, or any other reason, the domain encourages the recipient(s) to discard it.- Any other values are treated as "unknown". ๐คทโโ๏ธ
ABNF:
; Copyright (c) 2009 IETF Trust and the persons identified as
; authors of the code. All rights reserved.
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions
; are met:
; - Redistributions of source code must retain the above copyright
; notice, this list of conditions and the following disclaimer.
; - Redistributions in binary form must reproduce the above copyright
; notice, this list of conditions and the following disclaimer in
; the documentation and/or other materials provided with the
; distribution.
; - Neither the name of Internet Society, IETF or IETF Trust, nor the
; names of specific contributors, may be used to endorse or promote
; products derived from this software without specific prior
; written permission.
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
; 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
; FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
; COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
; INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
; EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
adsp-dkim-tag = %x64.6b.69.6d *WSP "=" *WSP
("unknown" / "all" / "discardable" /
x-adsp-dkim-tag)
x-adsp-dkim-tag = hyphenated-word ; for future extension
; hyphenated-word is defined in RFC 4871
4.3. ADSP Lookup Procedure ๐
Hosts doing an ADSP lookup MUST produce a result that is semantically equivalent to applying the following steps in the order listed below. In practice, these steps can run in parallel to improve performance. However, implementations SHOULD avoid doing unnecessary DNS lookups. efficiency is a whole personality ๐
For this section, a "valid ADSP record" is one that is both syntactically and semantically correct. In particular, it matches the ABNF for a "tag-list" and starts with a valid "dkim" tag.
Check Domain Scope:
An ADSP checker implementation MUST determine whether a given Author Domain is within the scope for ADSP. Given the background in Section 3.1, the checker MUST decide which degree of approximation is acceptable. The checker MUST return an appropriate error result for Author Domains that are outside the scope of ADSP. ๐ฆ
The host MUST perform a DNS query for a record corresponding to the Author Domain (with no prefix). The type of the query can be of any type, since this step is only to determine if the domain itself exists in DNS. This query MAY be done in parallel with the query to fetch the named ADSP Record. If the result of this query is that the Author Domain does not exist in the DNS (often called an NXDOMAIN error, rcode=3 in [RFC1035]), the algorithm MUST terminate with an error indicating that the domain is out of scope. Note that a result with rcode=0 but no records (often called NODATA) is not the same as NXDOMAIN. ๐
NON-NORMATIVE DISCUSSION: Any resource record type could be used for this query since the existence of a resource record of any type will prevent an NXDOMAIN error. MX is a reasonable choice for this purpose because this record type is thought to be the most common for domains used in email, and will therefore produce a result that can be more readily cached than a negative result.
If the domain does exist, the checker MAY make more extensive checks to verify the existence of the domain, such as the ones described in Section 5 of [RFC5321]. If those checks indicate that the Author Domain does not exist for mail, e.g., the domain has no MX, A, or AAAA record, the checker SHOULD terminate with an error indicating that the domain is out of scope.
Fetch Named ADSP Record:
The host MUST query DNS for a TXT record corresponding to the Author Domain prefixed by "_adsp._domainkey." (note the trailing dot). ๐ฏ
If the result of this query is a NOERROR response (rcode=0 in [RFC1035]) with an answer that is a single record that is a valid ADSP record, use that record, and the algorithm terminates. chef's kiss ๐ค
If the result of the query is NXDOMAIN or NOERROR with zero records, there is no ADSP record. If the result of the query contains more than one record, or a record that is not a valid ADSP record, the ADSP result is undefined. ๐ซ๏ธ
If a query results in a "SERVFAIL" error response (rcode=2 in [RFC1035]), the algorithm terminates without returning a result. Possible actions include queuing the message or returning an SMTP error indicating a temporary failure. ๐ตโ๐ซ
See Appendix A for examples of ADSP lookup.
5. IANA Considerations ๐ธ
ADSP adds the following namespaces to the IANA registry. In all cases, new values are assigned only for values that have been documented in a published RFC after IETF Review, as specified in [RFC5226]. ๐
5.1. ADSP Specification Tag Registry ๐ท๏ธ
An ADSP record provides for a list of specification tags. IANA has established the ADSP Specification Tag Registry for specification tags that can be used in ADSP fields.
The initial entry in the registry is:
+------+-----------------+
| TYPE | REFERENCE |
+------+-----------------+
| dkim | (RFC 5617) |
+------+-----------------+
ADSP Specification Tag Registry Initial Values
5.2. ADSP Outbound Signing Practices Registry ๐
The "dkim=" tag specification, defined in Section 4.2.1, provides for a value specifying Outbound Signing Practices. IANA has established the ADSP Outbound Signing Practices Registry for Outbound Signing Practices.
The initial entries in the registry comprise:
+-------------+-----------------+
| TYPE | REFERENCE |
+-------------+-----------------+
| unknown | (RFC 5617) |
| all | (RFC 5617) |
| discardable | (RFC 5617) |
+-------------+-----------------+
ADSP Outbound Signing Practices Registry Initial Values
5.3. Authentication-Results Method Registry Update ๐
IANA has added the following to the Email Authentication Method Name Registry:
Method: dkim-adsp
Defined In: RFC 5617
ptype: header
property: from
value: contents of the [RFC5322] From: header field, with comments
removed
5.4. Authentication-Results Result Registry Update โจ
Okay bestie, IANA added a bunch of new results to the Email Authentication Result Name Registry ๐ Some are brand new from this doc, and some are existing ones from RFC 5451 that now also pair with dkim-adsp ๐ฆ. Here's the full lineup, exactly as it's listed:
Code: none
Existing/New Code: existing
Defined In: [RFC5451]
Auth Method: dkim-adsp (added)
Meaning: No DKIM Author Domain Signing Practices (ADSP) record was
published.
Code: pass
Existing/New Code: existing
Defined In: [RFC5451]
Auth Method: dkim-adsp (added)
Meaning: This message had an Author Domain Signature that was
validated. (An ADSP check is not strictly required to be
performed for this result since a valid Author Domain
Signature satisfies all possible ADSP policies.)
Code: unknown
Existing/New Code: new
Defined In: RFC 5617
Auth Method: dkim-adsp
Meaning: No valid Author Domain Signature was found on the message
and the published ADSP was "unknown".
Code: fail
Existing/New Code: existing
Defined In: [RFC5451]
Auth Method: dkim-adsp (added)
Meaning: No valid Author Domain Signature was found on the message
and the published ADSP was "all".
Code: discard
Existing/New Code: new
Defined In: RFC 5617
Auth Method: dkim-adsp
Meaning: No valid Author Domain Signature was found on the message
and the published ADSP was "discardable".
Code: nxdomain
Existing/New Code: new
Defined In: RFC 5617
Auth Method: dkim-adsp
Meaning: Evaluating the ADSP for the Author's DNS domain indicated
that the Author's DNS domain does not exist.
Code: temperror
Existing/New Code: existing
Defined In: [RFC5451]
Auth Method: dkim-adsp (added)
Meaning: An ADSP record could not be retrieved due to some error
that is likely transient in nature, such as a temporary DNS
error. A later attempt may produce a final result.
Code: permerror
Existing/New Code: existing
Defined In: [RFC5451]
Auth Method: dkim-adsp (added)
Meaning: An ADSP record could not be retrieved due to some error
that is likely not transient in nature, such as a permanent
DNS error. A later attempt is unlikely to produce a final
result.
6. Security Considerations ๐
Okay, this part is seriously important ๐ซถ Most of the security stuff in ADSP is about bad senders trying to pretend they're Authors they aren't allowed to send for. They usually do it to scam the recipient or the Alleged Author ๐จ
Extra security notes about Author Domain Signing Practices live in the DKIM threat analysis, which is [RFC4686] ๐
6.1. ADSP Threat Model
Recipients usually have a little circle of Authors they already trust ๐ Think banks they already have accounts with, or shopping sites they actually use.
Email abuse loves to cash in on a real Author's good name by putting that domain in the From: header field. Lots of popular Mail User Agents (MUAs) don't even show the Author's email address, so there's no hard evidence about how much this sneaky move actually fools people, or how much stopping it would help ๐คทโโ๏ธ
Still, closing this hole could let receive-side message filtering engines do some smarter processing ๐ง They could be more confident about From: header field uses of a domain when the use is authorized.
Unauthorized uses of domain names show up in other parts of messages too, and so do unauthorized uses of organization names. Those attacks are outside the scope of this specification ๐ โโ๏ธ
ADSP does nothing at all, not even a little, unless some external system actually acts on the verdict ๐ค That could mean treating the message differently during delivery, or showing some kind of indicator to the end recipient. That external system is out of scope for this specification.
Here's the other thing: ADSP checkers might do several DNS lookups for each Alleged Author Domain ๐ Those lookups are driven by domain names sitting in email headers of possibly fraudulent mail. So legitimate ADSP checkers can accidentally become part of traffic multiplication attacks aimed at domains that show up in fake emails. Yikes ๐ญ
6.2. DNS Considerations
An attacker could go after the DNS infrastructure to fake ADSP records and mess with how a receiver handles mail ๐ต๏ธโโ๏ธ But honestly, an attacker is more likely to aim higher, like redirecting A or MX record lookups to grab traffic meant for the target domain. Those DNS security issues are handled by DNSSEC [RFC4033] ๐
Since ADSP lives inside the legacy email system, the default result when there's no ADSP record is that the domain doesn't sign all of its messages ๐ซ So it's really important that ADSP clients can tell a DNS failure like "SERVFAIL" apart from other DNS errors, so they can take the right action.
6.3. DNS Wildcards
DNS wildcards (described in [RFC4592]) that exist at or above the domain being checked mess with the ability to verify the scope of the ADSP check from Section 4.3 ๐ For example, a wildcard record for *.domain.example makes every subdomain, like foo.domain.example, exist in the DNS. Domains that want to really use ADSP by publishing a practice other than unknown are advised to skip wildcards in their hierarchy ๐ธ
If a domain has wildcards, then any name matching the wildcard can look like a valid mail domain eligible for ADSP ๐ป The _adsp._domainkey. prefix on ADSP records doesn't stop wildcard records from covering ADSP records without also covering non-ADSP records. It also doesn't stop wildcard records from covering non-ADSP records without also covering ADSP records. A domain that uses ADSP practices other than unknown SHOULD NOT publish wildcard records ๐
6.4. Inappropriate Application of Author Domain Signatures
In one model of DKIM usage, a domain signs messages as they pass through its own system ๐ Here's the catch: any signature whose domain matches the Author Domain counts as an Author Domain Signature by definition. So it's a bad idea to sign mail whose Author Domain is the Signer's domain when that mail isn't known to meet the domain's standards for an Author Domain Signature ๐
One example is when a domain might apply that kind of signature after adding an Authentication-Results header field, as described in Section 7.1 of [RFC5451]. This is easy to avoid, either by not applying a signature that could get mistaken for an Author Domain Signature, or by signing with some other domain, like a subdomain of the Author Domain ๐
7. References ๐
7.1. Normative References
- [RFC1035] Mockapetris, P., "Domain names - implementation and specification", STD 13, RFC 1035, November 1987.
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, "DNS Security Introduction and Requirements", RFC 4033, March 2005.
- [RFC4592] Lewis, E., "The Role of Wildcards in the Domain Name System", RFC 4592, July 2006.
- [RFC4871] Allman, E., Callas, J., Delany, M., Libbey, M., Fenton, J., and M. Thomas, "DomainKeys Identified Mail (DKIM) Signatures", RFC 4871, May 2007.
- [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.
- [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.
- [RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, October 2008.
- [RFC5451] Kucherawy, M., "Message Header Field for Indicating Message Authentication Status", RFC 5451, April 2009.
7.2. Informative References
- [RFC4686] Fenton, J., "Analysis of Threats Motivating DomainKeys Identified Mail (DKIM)", RFC 4686, September 2006.
- [RFC5016] Thomas, M., "Requirements for a DomainKeys Identified Mail (DKIM) Signing Practices Protocol", RFC 5016, October 2007.
- [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, October 2008.
Appendix A. Lookup Examples ๐ง
Let's walk through some examples! Say the example domain publishes these DNS records. The numbers in parentheses are just comments to help you spot each record, and they aren't part of the records themselves ๐
aaa.example A 192.0.2.1 (1)
_adsp._domainkey.aaa.example TXT "dkim=all" (2)
bbb.example MX 10 mail.bbb.example (3)
mail.bbb.example A 192.0.2.2 (4)
A.1. Domain and ADSP Exist
A mail message has this From: header line:
From: bob@aaa.example (Bob the Author)
The ADSP lookup first figures out the Author Address bob@aaa.example and the Author Domain aaa.example ๐ Then it does an MX DNS query for aaa.example and gets back a NOERROR result with no DNS records. There's no MX record, but record (1) exists, so the name exists in the DNS ๐ค Since that query didn't error out, the lookup keeps going with a TXT DNS query for _adsp._domainkey.aaa.example, which returns record (2). Since that's a valid ADSP record, the result is that all messages from this domain are signed โจ
A.2. Domain Exists, ADSP Does Not Exist
A mail message has this From: header line:
From: alice@bbb.example (Old-fashioned Alice)
The ADSP lookup first identifies the Author Address alice@bbb.example and the Author Domain bbb.example. It does an MX DNS query for bbb.example and gets back record (3). Since that query didn't return an error, it then does a TXT DNS query for _adsp._domainkey.bbb.example, which returns NXDOMAIN. The domain exists but has no ADSP record, so ADSP returns the default unknown result: messages may or may not have an author domain signature ๐คทโโ๏ธ
A.3. Domain Does Not Exist
A mail message has this From: header line:
From: frank@ccc.example (Unreliable Frank)
The ADSP lookup first identifies the Author Address frank@ccc.example and the Author Domain ccc.example. It does an MX DNS query for ccc.example and gets back an NXDOMAIN result, since there are no records at all for ccc.example ๐ The lookup ends with the result that the domain doesn't exist in the DNS, so it's out of scope ๐ซฅ
Appendix B. Usage Examples โจ
These examples are here to show the kinds of things ADSP is good for ๐ They're definitely not a full list, and they won't match every domain's or mail system's situation ๐
Domain managers, listen up ๐ Think about how mail processing can change messages in ways that break an existing DKIM signature ๐ Mailing lists, courtesy forwarders, and other paths that add or change headers, or edit the message body, are the usual suspects ๐ญ If those changes invalidate the DKIM signature, recipient hosts will treat the mail as not having an Author Domain Signature, even though the signature was there when the mail was first sent ๐
B.1. Single Location Domains
One really common setup handles all of a domain's users' incoming and outgoing mail through a single Mail Transport Agent (MTA), or a group of MTAs ๐ซถ In this setup, the MTA(s) can be configured to sign outgoing mail with an Author Domain Signature โจ
In this situation, publishing an ADSP record for the domain containing "all" might be the move ๐ฅ It depends on whether the users also send mail through other paths that don't apply an Author Domain Signature ๐ Those paths could include MTAs at hotels or hotspot networks that travelling users rely on, websites with "mail an article" features, user messages sent through mailing lists, or third-party mail clients that support multiple user identities ๐งณ
B.2. Bulk Mailing Domains
Another common setup uses a domain only for bulk or broadcast mail, with no individual human users ๐ฃ Again, all the mail typically goes through a single MTA or group of MTAs that can apply an Author Domain Signature ๐ In this case, the domain's management can be confident that all of its outgoing mail goes through the signing MTA(s) ๐ธ With no individual users, the domain is unlikely to get involved in mailing lists, but it could still send mail through other paths that might invalidate signatures ๐
Domain owners often hire specialist mailing providers to send their bulk mail ๐ฌ In that case, the mailing provider needs access to a suitable signing key so it can apply an Author Domain Signature ๐ One possible route is for the domain owner to generate the key and hand it over to the mailing provider ๐ค Another route is for the domain to delegate a subdomain to the mailing provider ๐ฆ For example, bigbank.example might delegate email.bigbank.example to such a provider ๐ฆ In that case, the provider can generate the keys and DKIM DNS records itself, and use the subdomain in the Author Address in the mail ๐
Whatever DNS and key management strategy gets picked, whoever maintains the DKIM records for the domain could also install an ADSP record containing "all" ๐ง
B.3. Bulk Mailing Domains with Discardable Mail
Sometimes a domain signs all of its outgoing mail with an Author Domain Signature, and it would rather recipient systems throw away mail that doesn't have a valid Author Domain Signature ๐๏ธ The goal is to keep its mail from getting mixed up with mail sent from sources that don't apply an Author Domain Signature ๐ก๏ธ (For domains with really tightly controlled outgoing mail, that second kind of mail gets loosely nicknamed "forgeries" ๐) In that situation, publishing an ADSP record containing "discardable" might be the right call ๐
Heads up, bestie: a domain SHOULD NOT publish a "discardable" record if it wants to maximize the chance that its mail actually gets delivered ๐ฌ Otherwise, some of the mail the domain sends could end up getting discarded ๐
B.4. Third-Party Senders
Another common use case is when a third party agrees to send bulk or other mail on behalf of a designated Author or Author Domain ๐ค That third party would use that domain in the [RFC5322] From: or other headers ๐จ Because these agreements come with lots of different and tricky complexities, third-party signing is not covered in this specification ๐
B.5. Domains with Independent Users and Liberal Use Policies
When a domain has independent users, and its usage policy doesn't explicitly restrict them to sending mail only from designated mail servers, then publishing an ADSP record containing "unknown" is the only appropriate option ๐ (Think of lots of ISP domains, and even some corporate ones ๐ข) Publishing either "all" or "discardable" will likely cause significant breakage ๐ญ That's because independent users are likely to send mail from the external paths listed in Appendix B.1 ๐งณ
B.6. Non-Email Domains
If a domain sends no mail at all, it can safely publish a "discardable" ADSP record ๐ท The reason? Any mail with an Author Address in that domain is a forgery ๐ซ
Appendix C. Acknowledgements ๐ซถ
This document greatly benefited from comments by Steve Atkins, Jon Callas, Dave Crocker, Pasi Eronen, JD Falk, Arvel Hathcock, Ellen Siegel, Michael Thomas, and Wietse Venema ๐ Thank you all, you're literally the best ๐ฅนโจ
Authors' Addresses ๐
Here are the people who wrote this, with their contact details exactly as listed ๐
Eric Allman
Eric Allman
Sendmail, Inc.
6475 Christie Ave, Suite 350
Emeryville, CA 94608
Phone: +1 510 594 5501
EMail: eric+dkim@sendmail.org
Jim Fenton
Jim Fenton
Cisco Systems, Inc.
170 W. Tasman Drive
San Jose, CA 95134-1706
Phone: +1 408 526 5914
EMail: fenton@cisco.com
Mark Delany
Mark Delany
Yahoo! Inc.
701 First Avenue
Sunnyvale, CA 94089
Phone: +1 408 349 6831
EMail: markd+dkim@yahoo-inc.com
John Levine
John Levine
Taughannock Networks
PO Box 727
Trumansburg, NY 14886
Phone: +1 831 480 2300
EMail: standards@taugh.com
URI: http://www.taugh.com
๐ฆ where this page comes from
- ietf: rfc5617 2009-08
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms