RFC 8823

Extensions to Automatic Certificate Management Environment for End-User S/MIME Certificates

πŸ“… published April 2021, from ietf

RFC 8823 πŸŽ€

Title: Extensions to Automatic Certificate Management Environment for End-User S/MIME Certificates ✨

Author: A. Melnikov, Isode Ltd πŸ’Œ

Category: Informational 🌸

Date: April 2021 πŸ“…

ISSN: 2070-1721

Obsoletes / Updates: The title block doesn't list anything this one obsoletes or updates, so it stands on its own πŸ¦‹

Abstract πŸ’–

This doc specifies the identifiers and challenges ACME needs so it can issue certificates to email users who want to use S/MIME πŸ“§. The Automated Certificate Management Environment is the thing doing the work here, so it's giving "enable the whole pipeline for email" energy πŸ”₯.

Status of This Memo 🧚

This doc is not an Internet Standards Track specification. It's published for informational purposes, so it's more of a "here's the info" vibe than a "you must do this" one πŸ“š.

It is a product of the Internet Engineering Task Force (IETF) and represents the consensus of the IETF community 🫢. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). Not every IESG-approved document is a candidate for any level of Internet Standard, so see Section 2 of RFC 7841 for the deets πŸ™ˆ.

For the current status, errata, and how to send feedback, check https://www.rfc-editor.org/info/rfc8823 ✨.

Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved πŸ’œ.

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stood on the publication date. Please read these carefully, because they spell out your rights and restrictions for this doc πŸ“œ. Any code components pulled out of this doc must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License πŸ’….

Table of Contents πŸ“‘

1.  Introduction
2.  Conventions Used in This Document
3.  Use of ACME for Issuing End-User S/MIME Certificates
  3.1.  ACME "Challenge" Email
  3.2.  ACME "Response" Email
  3.3.  Generating Encryption-Only or Signing-Only S/MIME
        Certificates
4.  Internationalization Considerations
5.  IANA Considerations
  5.1.  ACME Identifier Type
  5.2.  ACME Challenge Type
6.  Security Considerations
7.  References
  7.1.  Normative References
  7.2.  Informative References
Acknowledgements
Author's Address

1. Introduction πŸŽ€

Okay so, ACME [RFC8555] is the mechanism that automates certificate management on the Internet πŸ€–. It lets administrative entities prove effective control over resources like domain names, and then it automates generating and issuing the certificates. Iconic πŸ‘‘.

This doc describes an extension to ACME for use by S/MIME πŸ’Œ. Section 3 defines the extensions for issuing end-user S/MIME [RFC8550] certificates.

This doc aims to support both of these setups πŸ¦‹:

  1. A Mail User Agent (MUA) with a built-in ACME client that knows about the extension in this doc. (We'll call these "ACME-email-aware" MUAs πŸ’….) These MUAs can give the user a nice interface and automate certificate issuance, so it's literally a main character moment ✨.
  2. An MUA that isn't ACME aware, paired with a separate ACME client in a command-line tool or as part of a website 🧚. S/MIME issuance won't be as painless as with an ACME-email-aware MUA, but the extra work for the user is going to be minimal 🫢.

2. Conventions Used in This Document πŸ”‘

Okay, the BCP 14 key words are the big capital ones, and they only count when they show up in all capitals, just like here πŸ”₯. They are "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL". They're interpreted as described in BCP 14 [RFC2119] [RFC8174] πŸ’€.

3. Use of ACME for Issuing End-User S/MIME Certificates πŸ’–

ACME [RFC8555] already defines a "dns" identifier type that verifies a particular entity controls a domain or a specific service tied to that domain 🌐. To issue end-user S/MIME certificates, though, ACME needs a new identifier type that proves ownership of an email address πŸ’Œ. That's the whole gap this section fills, and it's giving "finally" 😭.

This doc defines a new identifier type called "email", which corresponds to an email address πŸ“¬. The address can be all ASCII [RFC5321] or internationalized [RFC6531]. When you use an internationalized email address, the domain part can contain both U-labels and A-labels [RFC5890] 🌸. This works with S/MIME or any similar service that needs a certificate tied to an email address πŸ”.

Any identifier of type "email" in a newOrder request MUST NOT have a wildcard ("*") character in its value 🚫. No stars allowed, bestie πŸ™ˆ.

There's also a new challenge type called "email-reply-00", used with the "email" identifier type. It proves that an ACME client controls an email address βœ….

Here's how issuing an S/MIME certificate goes down. Note that the ACME client can be a standalone app (if the MUA isn't ACME-email-aware) or a component of the MUA itself 🧚.

  1. An end user starts issuing an S/MIME certificate for one of their email addresses πŸ™‹β€β™€οΈ. They could do this from an email client UI, a command-line tool, a certificate authority web page, and so on. This doc doesn't prescribe a specific UI for starting issuance or say where the ACME client lives πŸŽ€.
  2. The ACME-email-aware client component kicks things off by sending a POST request to the server's newOrder resource, including the identifier of type "email". See Section 7.4 of [RFC8555] for more details πŸ“¨.
  3. The ACME server responds to the POST request with an "authorizations" URL for the requested email address πŸ”—. The ACME client then grabs info about the matching "email-reply-00" challenge, as specified in Section 7.5 of [RFC8555] 🧩. The "token" field of that challenge object (from the "challenges" array) contains token-part2 🌷. token-part2 should contain at least 128 bits of entropy 🎲. The "type" field of the challenge object is "email-reply-00" 🏷️. The challenge object also has a "from" field, which holds the email address that goes in the From header field of the "challenge" email message (more on that in the next step) πŸ’….

Here's an example challenge object, so you can see the shape of it πŸ‘€:

{
  "type": "email-reply-00",
  "url": "https://example.com/acme/chall/ABprV_B7yEyA4f",
  "from": "acme-challenge+2i211oi1204310@example.com",
  "token": "DGyRejmCefe7v4NfDGDKfA"
}
  1. After the authorization request, the ACME server generates another token and a "challenge" email message with the subject ACME: <token-part1>, where <token-part1> is the base64url-encoded [RFC4648] form of the token πŸ“©. The ACME server MUST generate a fresh token for each S/MIME issuance request (authorization request), and token-part1 MUST contain at least 128 bits of entropy πŸ”₯. We'll get into the "challenge" email message structure in more detail in Section 3.1 🧠.
  2. The MUA retrieves and parses the "challenge" email message πŸ“₯. If the MUA is ACME-email-aware, it ignores any "challenge" email it wasn't expecting, for example when no ACME certificate issuance is pending πŸ™…β€β™€οΈ. The ACME-email-aware MUA also ignores any "challenge" email whose Subject header field says it's an email reply, like a subject starting with the reply prefix Re: πŸ’€.
  3. The ACME client concatenates "token-part1" (received over email) and "token-part2" (received over HTTPS [RFC2818]) to make the ACME "token" 🧡. Then it calculates the keyAuthorization (as per Section 8.1 of [RFC8555]) and returns the base64url-encoded SHA-256 digest [RFC6234] of that key authorization ✨. The MUA sends that base64url-encoded SHA-256 digest, obtained from the ACME client, in the body of a "response" email message. The "response" email message structure is described in more detail in Section 3.2 πŸ“¬. If the MUA is ACME-email-aware, it MUST NOT respond to the same "challenge" email more than once πŸ›‘.
  4. Once the MUA sends the "response" email, the ACME client tells the ACME server about it by sending a POST to the challenge URL (the "url" field) πŸš€.
  5. The ACME client can start polling the authorization URL (using POST-as-GET requests) to check whether the ACME server received and validated the "response" email message. See Section 7.5.1 of [RFC8555] for more details πŸ‘€. Once the "status" field of the challenge switches to "valid", the ACME client can move on to request finalization πŸŽ‰. The Certificate Signing Request (CSR) MUST indicate the exact same set of requested identifiers as the initial newOrder request 🧾. For an identifier of type "email", the PKCS#10 [RFC2986] CSR MUST contain the requested email address in an extensionRequest attribute [RFC2985] that requests a subjectAltName extension πŸ’Œ. The email address MUST also match the From header field value of the "response" email message πŸ’―.
  6. If you want signing-only or encryption-only S/MIME certificates (instead of ones good for both), the CSR needs to include the key usage extension (see Section 4.4.2 of [RFC8550]) πŸ”‘. This is covered in more detail in Section 3.3 🧁.
  7. If a request to finalize an order succeeds, the ACME server returns a 200 (OK) with an updated order object πŸ₯³. If the certificate is issued successfully (meaning the order "status" is "valid"), the ACME client can download the issued S/MIME certificate from the URL in the "certificate" field πŸŽ€. Next up is Section 3.1, where we get into the "challenge" email itself πŸ“¨πŸ§š

3.1. ACME "Challenge" Email πŸ“¨

Okay so a "challenge" email message MUST have the following structure πŸ’Œ

  1. The Subject header field has the following syntax: ACME: <token-part1>, where the prefix ACME: is followed by folding white space (FWS; see [RFC5322]) and then by <token-part1>, which is the base64url-encoded first part of the ACME token that MUST be at least 128 bits long after decoding. Due to the recommended 78-octet line-length limit in [RFC5322], the subject line can be folded, so white spaces (if any) within the <token-part1> MUST be ignored. [RFC2231] encoding of the Subject header field MUST be supported, and, when used, only the UTF-8 and US-ASCII charsets are allowed; other charsets MUST NOT be used. The US-ASCII charset SHOULD be used. 🫢
  2. The From header field MUST be the same email address as specified in the from field of the challenge object. πŸ’…
  3. The To header field MUST be the email address of the entity that requested the S/MIME certificate to be generated. πŸŽ€
  4. The message MAY contain a Reply-To and/or CC header field. πŸ¦‹
  5. The message MUST include the Auto-Submitted header field with the value auto-generated [RFC3834]. To aid in debugging (and, for some implementations, to make automated processing easier), the Auto-Submitted header field SHOULD include the type=acme parameter. It MAY include other optional parameters, as allowed by the syntax of the Auto-Submitted header field. ✨
  6. In order to prove authenticity of a challenge message, it MUST be signed using either DomainKeys Identified Mail (DKIM) [RFC6376] or S/MIME [RFC8551]. πŸ”
    • If DKIM signing is used, the resulting DKIM-Signature header field MUST contain the h= tag that includes at least the From, Sender, Reply-To, To, CC, Subject, Date, In-Reply-To, References, Message-ID, Auto-Submitted, Content-Type, and Content-Transfer-Encoding header fields. The DKIM-Signature header field's h= tag SHOULD also include the Resent-Date, Resent-From, Resent-To, Resent-Cc, List-Id, List-Help, List-Unsubscribe, List-Subscribe, List-Post, List-Owner, List-Archive, and List-Unsubscribe-Post header fields. The domain from the d= tag of the DKIM-Signature header field MUST be the same as the domain from the From header field of the "challenge" email.
    • If S/MIME signing is used, the certificate corresponding to the signer MUST have an rfc822Name subjectAltName extension with the value equal to the From header field email address of the "challenge" email.
  7. The body of the challenge message is not used for automated processing, so it can be any media type. (However, there are extra requirements on S/MIME signing, if used. See below.) Typically, it is text/plain or text/html containing a human-readable explanation of the purpose of the message. If S/MIME signing is used to prove authenticity of the challenge message, then the multipart/signed or application/pkcs7-mime; smime-type=signed-data; media type should be used. Either way, it MUST use S/MIME header protection. 🌸

An email client compliant with this specification that detects that a particular "challenge" email fails the validation described above MUST ignore the challenge and thus will not generate a "response" email. To aid in debugging, such failed validations SHOULD be logged. πŸ™ˆ

Here is an example of an ACME "challenge" email (note that, for simplicity, DKIM-related header fields are not included). πŸ“

Auto-Submitted: auto-generated; type=acme
Date: Sat, 5 Dec 2020 10:08:55 +0100
Message-ID: <A2299BB.FF7788@example.org>
From: acme-generator@example.org
To: alexey@example.com
Subject: ACME: LgYemJLy3F1LDkiJrdIGbEzyFJyOyf6vBdyZ1TG3sME=
Content-Type: text/plain
MIME-Version: 1.0

This is an automatically generated ACME challenge for email address
"alexey@example.com". If you haven't requested an S/MIME
certificate generation for this email address, be very afraid.
If you did request it, your email client might be able to process
this request automatically, or you might have to paste the first
token part into an external program.

Figure 1


3.2. ACME "Response" Email πŸ’œ

A valid "response" email message MUST have the following structure 🧚

  1. The Subject header field is formed as a reply to the ACME "challenge" email (see Section 3.1). Its syntax is the same as that of the challenge message except that it may be prefixed by a US-ASCII reply prefix (typically "Re:") and FWS (see [RFC5322]), as is normal in reply messages. When parsing the subject, ACME servers MUST decode [RFC2231] encoding (if any), and then they can ignore any prefix before the "ACME:" label. πŸ‘‘
  2. The From header field contains the email address of the user that is requesting S/MIME certificate issuance. 🌈
  3. The To header field of the response contains the value from the Reply-To header field from the challenge message (if set). Otherwise, it contains the value from the From header field of the challenge message. πŸ’–
  4. The Cc header field is ignored if present in the "response" email message. 🌷
  5. The In-Reply-To header field SHOULD be set to the Message-ID header field of the challenge message according to rules in Section 3.6.4 of [RFC5322]. 🦒
  6. List-* header fields [RFC4021][RFC8058] MUST be absent (i.e., the reply can't come from a mailing list). πŸ“­
  7. The media type of the "response" email message is either text/plain or multipart/alternative [RFC2046], containing text/plain as one of the alternatives. (Note that the requirement to support multipart/alternative is to allow use of ACME-unaware MUAs, which can't always generate pure text/plain, e.g., if they reply to a text/html). The text/plain body part (whether or not it is inside multipart/alternative) MUST contain a block of lines starting with the line -----BEGIN ACME RESPONSE-----, followed by one or more lines containing the base64url-encoded SHA-256 digest [RFC6234] of the key authorization, calculated from concatenated token-part1 (received over email) and token-part2 (received over HTTPS), as outlined in the 5th bullet in Section 3. (Note that each line of text/plain is terminated by CRLF. Bare LFs or bare CRs are not allowed.) Due to historical line-length limitations in email, line endings (CRLFs) can be freely inserted in the middle of the encoded digest, so they MUST be ignored when processing it. The final line of the encoded digest is followed by a line containing: -----END ACME RESPONSE-----. Any text before and after this block is ignored. For example, such text might explain what to do with it for ACME-unaware clients. 🧁
  8. There is no need to use any Content-Transfer-Encoding other than 7bit for the text/plain body part. Use of quoted-printable or base64 in a "response" email message is not necessary and should be avoided, though it is permitted. πŸͺ„
  9. In order to prove authenticity of a response message, it MUST be DKIM [RFC6376] signed. The resulting DKIM-Signature header field MUST contain the h= tag that includes at least the From, Sender, Reply-To, To, CC, Subject, Date, In-Reply-To, References, Message-ID, Content-Type, and Content-Transfer-Encoding header fields. The DKIM-Signature header field's h= tag SHOULD also include the Resent-Date, Resent-From, Resent-To, Resent-Cc, List-Id, List-Help, List-Unsubscribe, List-Subscribe, List-Post, List-Owner, List-Archive, and List-Unsubscribe-Post header fields. The domain from the d= tag of DKIM-Signature header field MUST be the same as the domain from the From header field of the "response" email. πŸ”

Here is an example of an ACME "response" email (note that, for simplicity, DKIM-related header fields are not included). πŸŽ€

Date: Sat, 5 Dec 2020 12:01:45 +0100
Message-ID: <111-22222-3333333@example.com>
In-Reply-To: <A2299BB.FF7788@example.org>
From: alexey@example.com
To: acme-generator@example.org
Subject: Re: ACME: LgYemJLy3F1LDkiJrdIGbEzyFJyOyf6vBdyZ1TG3sME=
Content-Type: text/plain
MIME-Version: 1.0

-----BEGIN ACME RESPONSE-----
LoqXcYV8q5ONbJQxbmR7SCTNo3tiAXDfowy
jxAjEuX0=
-----END ACME RESPONSE-----

Figure 2


3.3. Generating Encryption-Only or Signing-Only S/MIME Certificates πŸ”‘

Okay, this part is so useful: ACME extensions specified in this document can be used to request signing-only or encryption-only S/MIME certificates. πŸ¦‹

In order to request signing-only S/MIME certificates, the CSR MUST include the key usage extension with digitalSignature and/or nonRepudiation bits set and no other bits set. ✍️

In order to request encryption-only S/MIME certificates, the CSR MUST include the key usage extension with keyEncipherment or keyAgreement bits set and no other bits set. πŸ”’

Presence of both of the above sets of key usage bits in the CSR, as well as absence of the key usage extension in the CSR, signals to the ACME server to issue an S/MIME certificate suitable for both signing and encryption. ✨


4. Internationalization Considerations 🌍

[RFC8616] updated/clarified use of DKIM with internationalized email addresses [RFC6531]. Please consult [RFC8616] in regards to any changes that need to be implemented. 🌐

Use of non-ASCII characters in left-hand sides of internationalized email addresses requires putting internationalized email addresses in X.509 certificates [RFC8398]. 🫧


5. IANA Considerations πŸ³οΈβ€πŸŒˆ

5.1. ACME Identifier Type πŸ†”

IANA has registered a new identifier type in the "ACME Identifier Types" registry defined in Section 9.7.7 of [RFC8555] with Label "email" and a Reference to this document, [RFC5321], and [RFC6531]. The new identifier type corresponds to an (all ASCII) email address [RFC5321] or internationalized email addresses [RFC6531]. πŸ’Œ

5.2. ACME Challenge Type ⭐

IANA has registered a new entry in the "ACME Validation Methods" registry defined in Section 9.7.8 of [RFC8555]. This entry is as follows: πŸŽ‰

+================+=================+======+===========+
|     Label      | Identifier Type | ACME | Reference |
+================+=================+======+===========+
| email-reply-00 |      email      |  Y   |  RFC 8823 |
+----------------+-----------------+------+-----------+

Table 1

6. Security Considerations πŸ”’βœ¨

Okay bestie, go read the Security Considerations section of [RFC8555] for the general ACME security stuff, because it's a whole vibe πŸ’…. This challenge/response dance shows that whoever controls the private key (the one matching the public key in the certificate) also controls the named email account. The ACME server is only confirming that the email address belongs to the entity that asked for the certificate. It makes no claim that the address is correct or fit for purpose πŸ™ˆ. If you need those claims, you've gotta get them some other way.

The security of the email-reply-00 challenge type depends on the security of the email system. A third party who can read and reply to a user's email messages can request S/MIME certificates with the protocol in this document, and they're indistinguishable from the email account owner πŸ’€. They could do this by having the user's password, or a secret derived from it that gives read and reply access (like "password equivalent" information), or by being given permission to act on the user's behalf through the email delegation features that some email systems have. It's giving nightmare fuel, so here are the possible implications:

  1. An entity that compromised an email account would be able to request S/MIME certificates using the protocol in this document, and that entity couldn't be told apart from the legitimate email account owner (unless some external sources of information are consulted).
  2. For email addresses with legitimate shared access/control by multiple users, any one of those users would be able to request S/MIME certificates using the protocol in this document. Those requests can't be traced back to a specific user without consulting external systems (such as IMAP/SMTP access logs) 🫢.
  3. The protocol in this document is not suitable for use with email addresses associated with mailing lists [RFC5321]. It isn't always possible to guarantee that a particular S/MIME certificate request isn't coming from a mailing list address, but the prohibition on inclusion of List-* header fields helps certificate issuers handle most of the common cases 🌸.

An email system depends on DNS too, so it's a whole chain πŸ¦‹. A third party who can manipulate DNS MX records for a domain might be able to redirect an email and get (at least temporary) read and reply access to it. Similar considerations apply to DKIM TXT records in DNS. Use of DNSSEC by email system administrators is recommended to avoid making it easy to spoof DNS records affecting an email system. However, DNSSEC isn't ubiquitous at the time this document was published, so it isn't required here. Also, plenty of existing systems that rely on verifying email address ownership, like 2-factor authentication systems used by banks or traditional certificate issuance systems, send email messages and expect the owner to click the link in them (or reply to a message) without requiring DNSSEC. So the risk of not requiring DNSSEC is presumed acceptable in this document ✨.

An ACME email challenge message can be forged by an attacker πŸ‘€. As per the requirements on an ACME-email-aware MUA specified in Section 3, the MUA won't respond to requests it isn't expecting. Even if the attacker gets the erroneous "response" email sent to an attacker-controlled email address, very little information leaks. Only the SHA-256 hash of the key authorization would be leaked, not the key authorization itself, so no parts of the token or the account key thumbprint are leaked πŸ”.

An attacker that can read the "response" email only has one chance to guess the token-part2. Even if they guess it right, they still need to know the ACME account key to make use of the intercepted SHA-256 hash of the key authorization. Lowkey iconic protection πŸ‘‘.

Also see the Security Considerations section of [RFC6376] for details on how DKIM depends on the DNS and the vulnerabilities that come with that dependence 🧚.


7. References

7.1. Normative References

[RFC2046]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail
           Extensions (MIME) Part Two: Media Types", RFC 2046,
           DOI 10.17487/RFC2046, November 1996,
           <https://www.rfc-editor.org/info/rfc2046>.

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119,
           DOI 10.17487/RFC2119, March 1997,
           <https://www.rfc-editor.org/info/rfc2119>.

[RFC2231]  Freed, N. and K. Moore, "MIME Parameter Value and Encoded
           Word Extensions: Character Sets, Languages, and
           Continuations", RFC 2231, DOI 10.17487/RFC2231, November
           1997, <https://www.rfc-editor.org/info/rfc2231>.

[RFC2818]  Rescorla, E., "HTTP Over TLS", RFC 2818,
           DOI 10.17487/RFC2818, May 2000,
           <https://www.rfc-editor.org/info/rfc2818>.

[RFC2985]  Nystrom, M. and B. Kaliski, "PKCS #9: Selected Object
           Classes and Attribute Types Version 2.0", RFC 2985,
           DOI 10.17487/RFC2985, November 2000,
           <https://www.rfc-editor.org/info/rfc2985>.

[RFC2986]  Nystrom, M. and B. Kaliski, "PKCS #10: Certification
           Request Syntax Specification Version 1.7", RFC 2986,
           DOI 10.17487/RFC2986, November 2000,
           <https://www.rfc-editor.org/info/rfc2986>.

[RFC3834]  Moore, K., "Recommendations for Automatic Responses to
           Electronic Mail", RFC 3834, DOI 10.17487/RFC3834, August
           2004, <https://www.rfc-editor.org/info/rfc3834>.

[RFC4648]  Josefsson, S., "The Base16, Base32, and Base64 Data
           Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006,
           <https://www.rfc-editor.org/info/rfc4648>.

[RFC5321]  Klensin, J., "Simple Mail Transfer Protocol", RFC 5321,
           DOI 10.17487/RFC5321, October 2008,
           <https://www.rfc-editor.org/info/rfc5321>.

[RFC5322]  Resnick, P., Ed., "Internet Message Format", RFC 5322,
           DOI 10.17487/RFC5322, October 2008,
           <https://www.rfc-editor.org/info/rfc5322>.

[RFC5890]  Klensin, J., "Internationalized Domain Names for
           Applications (IDNA): Definitions and Document Framework",
           RFC 5890, DOI 10.17487/RFC5890, August 2010,
           <https://www.rfc-editor.org/info/rfc5890>.

[RFC6234]  Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms
           (SHA and SHA-based HMAC and HKDF)", RFC 6234,
           DOI 10.17487/RFC6234, May 2011,
           <https://www.rfc-editor.org/info/rfc6234>.

[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,
           <https://www.rfc-editor.org/info/rfc6376>.

[RFC6531]  Yao, J. and W. Mao, "SMTP Extension for Internationalized
           Email", RFC 6531, DOI 10.17487/RFC6531, February 2012,
           <https://www.rfc-editor.org/info/rfc6531>.

[RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
           2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
           May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8398]  Melnikov, A., Ed. and W. Chuang, Ed., "Internationalized
           Email Addresses in X.509 Certificates", RFC 8398,
           DOI 10.17487/RFC8398, May 2018,
           <https://www.rfc-editor.org/info/rfc8398>.

[RFC8550]  Schaad, J., Ramsdell, B., and S. Turner, "Secure/
           Multipurpose Internet Mail Extensions (S/MIME) Version 4.0
           Certificate Handling", RFC 8550, DOI 10.17487/RFC8550,
           April 2019, <https://www.rfc-editor.org/info/rfc8550>.

[RFC8551]  Schaad, J., Ramsdell, B., and S. Turner, "Secure/
           Multipurpose Internet Mail Extensions (S/MIME) Version 4.0
           Message Specification", RFC 8551, DOI 10.17487/RFC8551,
           April 2019, <https://www.rfc-editor.org/info/rfc8551>.

[RFC8555]  Barnes, R., Hoffman-Andrews, J., McCarney, D., and J.
           Kasten, "Automatic Certificate Management Environment
           (ACME)", RFC 8555, DOI 10.17487/RFC8555, March 2019,
           <https://www.rfc-editor.org/info/rfc8555>.

[RFC8616]  Levine, J., "Email Authentication for Internationalized
           Mail", RFC 8616, DOI 10.17487/RFC8616, June 2019,
           <https://www.rfc-editor.org/info/rfc8616>.

7.2. Informative References

[RFC4021]  Klyne, G. and J. Palme, "Registration of Mail and MIME
           Header Fields", RFC 4021, DOI 10.17487/RFC4021, March
           2005, <https://www.rfc-editor.org/info/rfc4021>.

[RFC8058]  Levine, J. and T. Herkula, "Signaling One-Click
           Functionality for List Email Headers", RFC 8058,
           DOI 10.17487/RFC8058, January 2017,
           <https://www.rfc-editor.org/info/rfc8058>.

Acknowledgements 🫢

Huge thank you to Andreas Schulze, Gerd v. Egidy, James A. Baker, Ben Schwartz, Peter Yee, Hilarie Orman, Michael Jenkins, Barry Leiba, Fraser Tweedale, Daniel Kahn Gillmor, and Benjamin Kaduk for their suggestions, comments, and corrections of this document. You're all legends πŸŒˆπŸ’–

Author's Address πŸŽ€

Alexey Melnikov
Isode Ltd
14 Castle Mews
Hampton, Middlesex
TW12 2NP
United Kingdom

Email: alexey.melnikov@isode.com
πŸ“¦ where this page comes from