IETF A. Vesely Internet-Draft December 20, 2019 Intended status: Informational Expires: June 22, 2020 DNSWL Email Authentication Method Extension draft-vesely-authmethod-dnswl-13 Abstract This document describes an additional Email Authentication Method compliant with RFC 8601. The method consists in looking up the sender's IP address in a DNS whitelist. This document is provided for information in case the method is seen in the field, as well as to suggest a useful practice and register the relevant keywords. This document does not consider black lists. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on June 22, 2020. Copyright Notice Copyright (c) 2019 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 (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Vesely Expires June 22, 2020 [Page 1] Internet-Draft DNSWL email-auth-method extension December 2019 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Method Details . . . . . . . . . . . . . . . . . . . . . . . 3 3. TXT Record Contents . . . . . . . . . . . . . . . . . . . . . 5 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 4.1. Email Authentication Methods . . . . . . . . . . . . . . 6 4.2. Email Authentication Property Type . . . . . . . . . . . 6 4.3. Email Authentication Result Names . . . . . . . . . . . . 6 5. Security Considerations . . . . . . . . . . . . . . . . . . . 7 5.1. Over Quota Signaling . . . . . . . . . . . . . . . . . . 7 5.2. Security of DNSSEC Validation . . . . . . . . . . . . . . 7 5.3. Inherited Security Considerations . . . . . . . . . . . . 8 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 6.1. Normative References . . . . . . . . . . . . . . . . . . 8 6.2. Informative References . . . . . . . . . . . . . . . . . 9 Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 10 Appendix B. Known Implementation . . . . . . . . . . . . . . . . 11 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 13 1. Introduction One of the many checks that mail servers carry out is to query domain name system whitelists (DNSWL). That method is fully discussed in [RFC5782]. The DNS [RFC1034] lookup is based on the connecting client's IP address, IPv4 or IPv6, and returns zero or more A records. The latter are IPv4 IP addresses in the range 127/8. Depending on the query, TXT records with varying content can also be retrieved. Query examples are given in Appendix A. Since the IP address is known as soon as the connection is accepted, this check can occur very early in an SMTP transaction. Its result can be used to counterweight policies that typically occur at early stages too, such as the Sender Policy Framework (SPF, the last paragraph of Appendix D.3 of [RFC7208] is also illustrated in Appendix A). In addition, the result of a DNSWL lookup can also be used at later stages; for example, a delivery agent can use it to learn the trustworthiness of a mail relay in order to estimate the spamminess of an email message. The latter possibility needs a place to collect query results for downstream use, which is precisely what the Authentication-Results header field aims at providing. Results often contain additional data, encoded according to DNSWL- specific criteria. The method described in this document considers only whitelists --one of the major branches described by [RFC5782]. There are also black/block lists, DNSBL, and combined lists. Since they all have the same structure, the abbreviation DNSxL is used to mean any. Now, the core procedures of a mail transfer agent (MTA) Vesely Expires June 22, 2020 [Page 2] Internet-Draft DNSWL email-auth-method extension December 2019 tend to be quite general, leaving particular cases to be handled by add-on modules. In the case of combined lists, the boundary MTA (see [RFC5598]) which carries out the check and possibly stores the result, has to be able to discern at least the color of each entry, as that is required to make accept/reject decisions. This document provides for storing the result when the DNSxL record to be reported is a whitelisting one. Data conveyed in A and TXT records can be stored as method's properties. In effect, they are tantamount to local policies, albeit outsourced. Downstream agents who know DNSWL-specific encoding can understand the meaning of that data, and use it to make delivery decisions. For example, a mail filter which detected heuristic evidence of scam, can counterweight such data with the trustworthiness score encoded in the A response, so as to protect agains false positives. This document describes a usage of TXT fields consistent with other authentication methods. Namely, to serve the domain name in the TXT record. That way, a downstream filter could also consider whether the sending agent is aligned with the author domain, with semantics similar to [RFC7489]. At the time of this writing, this method is implemented by [Courier-MTA], an outline of the implementation is given in Appendix B. 2. Method Details The result of the method states how the query did, up to the interpretation of the returned data. The method has four possible results: pass: The query successfully returned applicable records. This result is usually accompanied by one or both the policy properties described below. Agents unable to interpret those properties can still derive a positive value from the fact that the sender is whitelisted. none: The query worked but yielded no A record, or returned NXDOMAIN, so the sender is not whitelisted. temperror: The DNS evaluation could not be completed due to some error that is likely transient in nature, such as a temporary DNS error, e.g., a DNS RCODE of 2, commonly known as SERVFAIL, or other error condition. A later attempt may produce a final result. permerror: The DNS evaluation cannot work because test entries don't work, that is, DNSWL is broken, or because queries are Vesely Expires June 22, 2020 [Page 3] Internet-Draft DNSWL email-auth-method extension December 2019 over quota, e.g., a DNS RCODE of 5, commonly known as REFUSED, or a DNSWL-specific policy.ip with the same meaning. A later attempt is unlikely to produce a final result. Human intervention is required. Note that there is no fail result. The following ptype.property items define how the data provided by the whitelist lookup can be saved. dns.zone: DNSWL query root domain, which defines the meaning of the policy.ip property below. Note that an MTA can use a local mirror with a different name. The name stored here has to be the best available reference for all foreseeable downstream consumers. If the message is handed outside the internal network, dns.zone had better be the global zone. policy.ip: The bit mask value received in type A response, in dotted quad. Multiple entries can be arranged in a comma- separated list. policy.txt: The TXT record, if any. Multiple records are concatenated in the usual way (explained, for example, in Section 3.3 of [RFC7208]). See Section 3 for the resulting content and query options. dns.sec: This is a generic property stating whether the relevant data was validated using DNSSEC ([RFC4033]). For the present method, the relevant data consists of the reported policy properties above, or, if the method result is "none", their non-existence. This property has three possible values: yes: DNSSEC validation confirms the integrity of data. Section 5.2 considers how that is related to the DNS response. no: The data is not signed. See Section 5.2. na: Not applicable. No DNSSEC validation can be performed, possibly because the lookup is run through a different means than a security-aware DNS resolver. This does not necessarily imply less security. In particular, "na" is used if the data was downloaded in bulk and then loaded on a local nameserver --which is the case of an MTA querying a local zone different from the reported dns.zone. DNS errors, including validation errors, can also report "na". This is also the value assumed by default. Vesely Expires June 22, 2020 [Page 4] Internet-Draft DNSWL email-auth-method extension December 2019 3. TXT Record Contents According to [RFC5782], TXT records describe the reason why IP addresses are listed in a DNSWL. The TXT record is useful if it contains the domain names. The domain name would correspond to the DNS domain name used by or within the administrative domain (ADMD) operating the relevant MTA, sometimes called the "organizational domain". In that case, the authentication provided by this method is equivalent to a DKIM signature ([RFC6376]) or an SPF check host ([RFC7208]), if the DNSWL is trusted. According to a DNSWL's policy, attributing responsibility of an IP address to an organization may require something more than a mere PTR record consistency. If no domain names can be responsibly associated to a given IP address, for example because the IP address was added without direct involvement of the organization concerned, DNSWLs can use a subdomain of .INVALID ([RFC2606]) where the leftmost label hints at why an address is whitelisted. For example, if the address 192.0.2.38 was added by the list managers solely based on their knowledge, the corresponding TXT record might be AUTOPROMOTED.INVALID, so as to avoid to explicitly identify an entity who didn't opt-in. Following the example of Multicast DNS (see the second paragraph of Section 16 of [RFC6762]) names containing non-ASCII characters can be encoded in UTF-8 [RFC3629] using the normalization form canonical composition (NFC) as described in Unicode Format for Network Interchange ([RFC5198]). Inclusion of unaltered UTF-8 TXT values in the header entails an environment compatible with EAI [RFC6530]. DNS queries with a QTYPE of ANY may lead to inconsistent replies, depending on the cache status. In addition, ANY is not "all", and the provisions for queries that have QTYPE=ANY ([RFC8482]) don't cover DNSxLs. A mail server can issue two simultaneous queries, A and TXT. Otherwise, a downstream filter can issue a TXT query on its own, if it knows that an A query was successful and that the DNSWL serves useful TXT records. It is unlikely that TXT records exist if a query for QTYPE A brought a result of none. 4. IANA Considerations IANA maintains the "Email Authentication Parameters" registry with several subregistries. IANA is requested to make assignments as set out in the following sections. Vesely Expires June 22, 2020 [Page 5] Internet-Draft DNSWL email-auth-method extension December 2019 4.1. Email Authentication Methods IANA is requested to create four new entries in the "Email Authentication Methods" registry as follows. ------+----------+------+--------+-------------------+------+------- Method|Definition|ptype |property| Value |Status|Version ------+----------+------+--------+-------------------+------+------- dnswl |[This.I-D]|dns |zone | DNSWL publicly |active| 1 | | | | accessible query | | | | | | root domain | | dnswl |[This.I-D]|policy|ip | type A response |active| 1 | | | | received (or | | | | | | comma-separated | | | | | | list thereof) | | dnswl |[This.I-D]|policy|txt | type TXT query |active| 1 | | | | response | | dnswl |[This.I-D]|dns |sec | one of "yes" for |active| 1 | | | | DNSSEC | | | | | | authenticated | | | | | | data, "no" for | | | | | | not signed, or | | | | | | "na" for not | | | | | | applicable | | ------+----------+------+--------+-------------------+------+------- 4.2. Email Authentication Property Type IANA is requested to create a new entry in the "Email Authentication Property Types" registry as follows. +-------+------------+----------------------------------------------+ | ptype | Definition | Description | +-------+------------+----------------------------------------------+ | dns | [This.I-D] | The property being reported belongs to the | | | | Domain Name System | +-------+------------+----------------------------------------------+ 4.3. Email Authentication Result Names IANA is requested to create four new entries in the "Email Authentication Result Names" registry as follows. Vesely Expires June 22, 2020 [Page 6] Internet-Draft DNSWL email-auth-method extension December 2019 +-------------+-----------+---------------+--------+ | Auth Method | Code | Specification | Status | +-------------+-----------+---------------+--------+ | dnswl | pass | [This.I-D] | active | | | | | | | dnswl | none | [This.I-D] | active | | | | | | | dnswl | temperror | [This.I-D] | active | | | | | | | dnswl | permerror | [This.I-D] | active | +-------------+-----------+---------------+--------+ 5. Security Considerations 5.1. Over Quota Signaling Some DNSWLs which provide for free access below a given quota, are known to return special codes to signal over quota, for example 127.0.0.255. If the MTA cannot interpret that value, that case results in a false positive. It will accept messages having spf=fail if configured to do so. A DNSWL-specific module would realize the fact and call for human intervention. Returning an RCODE 5 (REFUSED) conveys the concept that the query is "unauthorized", and human intervention required. 5.2. Security of DNSSEC Validation The dns.sec property is meant to be as secure as DNSSEC results. It makes sense to use it in an environment where the DNSSEC validation can succeed. Section 7 of [RFC4033] examines various ways of setting up a stub resolver which either validates DNSSEC locally or trusts the validation provided through a secure channel. For a different class, it is possible to set up a dedicated, caching, dnssec-enabled resolver reachable by the mail server through interprocess communication on 127.0.0.1. In such cases, the property dns.sec=yes corresponds to the Authenticated Data (AD) bit in the DNS response header. When the response contains no DNSSEC data, a security-aware resolver seeks a signed proof of the non-existence of a DS record, at some delegation point. If no error is returned, the zone is unsigned and dns.sec=no can be set. Quoting the Security Considerations Section of [RFC3225]: The absence of DNSSEC data in response to a query with the DO bit set MUST NOT be taken to mean no security Vesely Expires June 22, 2020 [Page 7] Internet-Draft DNSWL email-auth-method extension December 2019 information is available for that zone as the response may be forged or a non-forged response of an altered (DO bit cleared) query. If the application verifies the DNSSEC signatures on its own, it effectively behaves like a validating stub resolver, and hence can set dns.sec correspondingly. When the data is downloaded in bulk and made available on a trusted channel without using DNSSEC, set dns.sec=na or not at all. DNSWL who publish bulk versions of their data can also sign that data, for example using OpenPGP ([RFC4880]). It is the responsibility of system administrators to authenticate the data by downloading and validating the signature. The result of such validation is not reported using dns.sec. 5.3. Inherited Security Considerations For DNSSEC, the considerations of Section 12 of [RFC4033] apply. All of the considerations described in Section 7 of [RFC8601] apply. That includes securing against tampering all the channels after the production of this Authentication-Results header field. In addition, the usual caveats apply about importing text from external online sources. Although queried DNSWLs are well known, trusted entities, it is suggested that TXT records be reported only if, upon inspection, their content is deemed actually actionable, and their format compatible with the computing environment. 6. References 6.1. Normative References [RFC2606] Eastlake 3rd, D. and A. Panitz, "Reserved Top Level DNS Names", BCP 32, RFC 2606, DOI 10.17487/RFC2606, June 1999, . [RFC5782] Levine, J., "DNS Blacklists and Whitelists", RFC 5782, DOI 10.17487/RFC5782, February 2010, . [RFC8601] Kucherawy, M., "Message Header Field for Indicating Message Authentication Status", RFC 8601, DOI 10.17487/RFC8601, May 2019, . Vesely Expires June 22, 2020 [Page 8] Internet-Draft DNSWL email-auth-method extension December 2019 6.2. Informative References [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, . [RFC3225] Conrad, D., "Indicating Resolver Support of DNSSEC", RFC 3225, DOI 10.17487/RFC3225, December 2001, . [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November 2003, . [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose, "DNS Security Introduction and Requirements", RFC 4033, DOI 10.17487/RFC4033, March 2005, . [RFC4880] Callas, J., Donnerhacke, L., Finney, H., Shaw, D., and R. Thayer, "OpenPGP Message Format", RFC 4880, DOI 10.17487/RFC4880, November 2007, . [RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network Interchange", RFC 5198, DOI 10.17487/RFC5198, March 2008, . [RFC5598] Crocker, D., "Internet Mail Architecture", RFC 5598, DOI 10.17487/RFC5598, July 2009, . [RFC6376] Crocker, D., Ed., Hansen, T., Ed., and M. Kucherawy, Ed., "DomainKeys Identified Mail (DKIM) Signatures", STD 76, RFC 6376, DOI 10.17487/RFC6376, September 2011, . [RFC6530] Klensin, J. and Y. Ko, "Overview and Framework for Internationalized Email", RFC 6530, DOI 10.17487/RFC6530, February 2012, . [RFC6762] Cheshire, S. and M. Krochmal, "Multicast DNS", RFC 6762, DOI 10.17487/RFC6762, February 2013, . Vesely Expires June 22, 2020 [Page 9] Internet-Draft DNSWL email-auth-method extension December 2019 [RFC7208] Kitterman, S., "Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1", RFC 7208, DOI 10.17487/RFC7208, April 2014, . [RFC7489] Kucherawy, M., Ed. and E. Zwicky, Ed., "Domain-based Message Authentication, Reporting, and Conformance (DMARC)", RFC 7489, DOI 10.17487/RFC7489, March 2015, . [RFC8482] Abley, J., Gudmundsson, O., Majkowski, M., and E. Hunt, "Providing Minimal-Sized Responses to DNS Queries That Have QTYPE=ANY", RFC 8482, DOI 10.17487/RFC8482, January 2019, . [Courier-MTA] "Courier Mail Server", . [dnswl.org] "DNSWL.ORG", . Appendix A. Example Delivered-To: recipient@example.org Return-Path: Authentication-Results: mta.example.org; dkim=pass (whitelisted) header.i=@example.com Authentication-Results: mta.example.org; dnswl=pass dns.zone=list.dnswl.example dns.sec=na policy.ip=127.0.10.1 policy.txt="fwd.example https://dnswl.example/?d=fwd.example" Received-SPF: fail (Address does not pass Sender Policy Framework) client-ip=192.0.2.1; envelope-from="sender@example.com"; helo=mail.fwd.example; receiver=mta.example.org; Received: from mail.fwd.example (mail.fwd.example [2001:db8::2:1]) (TLS: TLSv1/SSLv3,128bits,ECDHE-RSA-AES128-GCM-SHA256) by mta.example.org with ESMTPS; Thu, 03 Oct 2019 19:23:11 +0200 id 00000000005DC044.000000005702D87C.000007FC Trace fields at the top of the header The message went through a third party, fwd.example, which forwarded it to the final MTA. Such mail path was not arranged beforehand with the involved MTAs, it emerged spontaneously. This message would not have made it to the target without whitelisting, because: Vesely Expires June 22, 2020 [Page 10] Internet-Draft DNSWL email-auth-method extension December 2019 o the author domain published a strict SPF policy (-all), o the forwarder did not alter the bounce address, and o the target usually honors reject-on-fail, according to Section 8.4 of [RFC7208]. However, the target also implemented the last paragraph of Appendix D.3 of [RFC7208]. Its behavior hinges on the following DNS entries: 1.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.b.8.2.0.0.1. list.dnswl.example. IN A 127.0.10.1 IN TXT "fwd.example https://dnswl.example/?d=fwd.example" DNS resource records for 2001:db8::2:1 (line breaks for editorial reasons) If mail.fwd.example had connected from address 192.0.2.1, then the query name would have been 1.2.0.192.list.dnswl.example. See full description in [RFC5782] At connection time, because the remote IP address is whitelisted, the target MTA did not reject the message before DATA. Instead, it recorded the SPF fail result, and indicated the local policy mechanism which was applied in order to override that result. Subsequent filtering verified DKIM [RFC6376]. At later stages, mail filters can reject or quarantine the message based on its content. A deeper knowledge of the policy values obtained from dnswl.example allows to interpret the values of policy.ip and weight them against other factors so as to make better decisions. Appendix B. Known Implementation Implementation details mentioned in this section have been stable for several years. Yet, this description is necessarily superficial, version dependent, and subject to change. [Courier-MTA] can be configured to lookup DNSBL and DNSWL, with similar command line switches: -block=zone[=displayzone][,var[/n.n.n.n][,msg]] -allow=zone[=displayzone][,var[/n.n.n.n[,]]] zone is the zone to be queried. Vesely Expires June 22, 2020 [Page 11] Internet-Draft DNSWL email-auth-method extension December 2019 displayzone is only used for -allow, it is the value to be set in the dns.zone property. var stands for the environment variable whose existence triggers a special action. The default variable names result in a conventional behavior implemented by Courier-MTA. By setting different environment variables, users can customize the behavior. Conventional behavior differs widely between -block and -allow. The former rejects the message, the latter produces Authentication- Results header fields. The n.n.n.n IP address requires a precise A record response. If not given, any response results in setting the corresponding variable. If given, variables are set only if the response matches exactly. Such syntax provides for a very limited interpretation the information encoded in A records. However, it is considered to be too complicated already. Even specifying a range or an enumeration of values would require something beyond what a normal user would be willing to manage. Finally, the trailing message, which overrides the 5xx SMTP reply for -block, is not used for -allow, except that its mere presence requires to query TXT records to be registered in policy.txt. SPF is part of Courier-MTA's core. It is configured separately, and provides for an "allowok" keyword to indicate to override rejection in case of SPF failure and -allow whitelisting. A customary whitelist is [dnswl.org]. It serves A records encoded as follows: 1st octect: 127. 2nd octect: 0. 3rd octect: Category of business, 15 values. 4th octect: Trusworthiness/score, 4 values. They also serve TXT records containing the domain name followed by an URL pointing to further info about the relevant organization, such as what other IP addresses of theirs are being whitelisted. They don't use UTF-8. dnswl.org provides for free registration and free access below 100,000 queries per day. They use the special return code 127.0.0.255 exemplified above to signal over quota. Although Courier-MTA itself does not recognize it, it has a mail filter (zdkimfilter, named after its main usage) where recognition of that code, as well as that of trusworthiness in the 4th octect are hard- coded. Vesely Expires June 22, 2020 [Page 12] Internet-Draft DNSWL email-auth-method extension December 2019 Author's Address Alessandro Vesely v. L. Anelli 13 Milano, MI 20122 IT Email: vesely@tana.it Vesely Expires June 22, 2020 [Page 13]