RFC 5617

DomainKeys Identified Mail (DKIM) Author Domain Signing Practices (ADSP)

๐Ÿ“… published August 2009, from ietf

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 (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