IETF | A. Vesely |
Internet-Draft | October 10, 2019 |
Intended status: Informational | |
Expires: April 12, 2020 |
DNSWL Email Authentication Method Extension
draft-vesely-authmethod-dnswl-10
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 does not consider black lists.
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 https://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 April 12, 2020.
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 (https://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. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
One of the many checks that mail servers carry out is to query DNS whitelists (DNSWL, [RFC5782]). The lookup is based on the connecting client's IP address, so this check can occur very early in an SMTP transaction. The 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 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 present method considers only whitelists --one of the major branches considered by [RFC5782]. In case of DNSxL, 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 "x", which is required to make accept/reject decisions. The present method can then be used to report the result only if the color is white.
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 need to know DNSWL-specific encoding to understand the meaning of that data. In order to smooth operations, this document endorses a usage of TXT fields consistent with other authentication methods. Namely, to serve the domain name in the TXT record.
The following ptype.property items define how the data provided by the whitelist lookup can be saved.
The result of the method states how the query did, up to the interpretation of the result. In particular, some DNSBLs 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.
The method has four possible results:
Note that there is no fail result.
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 name(s). The domain name would correspond to the DNS domain name used by or within the 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]).
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, for example because the IP 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.
There is a registry of Email Authentication Methods. The method described in this document is referred by Table 1, along with its ptype.property values.
Method | ptype | property | Value | Status | Version |
---|---|---|---|---|---|
dnswl | dns | zone | DNSWL publicly accessible query root domain | active | 1 |
dnswl | policy | ip | type A response received (or comma-separated list thereof) | active | 1 |
dnswl | policy | txt | type TXT query response | active | 1 |
dnswl | dns | sec | one of "yes" for DNSSEC authenticated data, "no" for not signed, or "na" for not applicable | active | 1 |
A new ptype, "dns" is introduced in Table 2. It is meant to be used for properties related to the Domain Name System (DNS [RFC1034]).
ptype | Definition | Description |
---|---|---|
dns | [this doc] | The property being reported belongs to the Domain Name System |
This method reuses four of the values already defined in the Email Authentication Result Names associated registry. They are listed in Table 3.
Auth Method | Code | Specification | Status |
---|---|---|---|
dnswl | pass | Sender is whitelisted, up to returned code interpretation | active |
dnswl | none | NXDOMAIN or no record, sender is not whitelisted | active |
dnswl | temperror | Transient DNS error during the query | active |
dnswl | permerror | Query cannot work, human intervention needed | active |
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 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.
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.
[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. |
[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., Hansen, T. and M. Kucherawy, "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. |
[RFC7208] | Kitterman, S., "Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1", RFC 7208, DOI 10.17487/RFC7208, April 2014. |
[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. |
Delivered-To: recipient@example.org Return-Path: <sender@example.com> 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=mailout.fwd.example; receiver=mta.example.org; Received: from mailout.fwd.example (mailout.fwd.example [192.0.2.1]) (TLS: TLSv1/SSLv3,128bits,ECDHE-RSA-AES128-GCM-SHA256) by mta.example.org with ESMTPS; Thu, 03 Ocy 2019 19:23:11 +0200 id 00000000005DC044.000000005702D87C.000007FC
Trace fields added at the top of the header by multiple agents at various stages during processing at the final MTA
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:
However, the target also implemented the last paragraph of Appendix D.3 of [RFC7208]. Rather than rejecting the message outright before DATA, the MTA received it, recorded the SPF fail result, and indicated the local policy mechanism which was applied in order to override that result. Subsequent filtering detected no malware and verified DKIM [RFC6376]. It would still have been possible to reject the message, based on its content. It is at these later stages, after receiving the body and also during delivery, that a deeper knowledge of the policy values obtained from dnswl.example can allow weighting that score against other factors.