<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.2 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bucksch-autoconfig-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="autoconfig">Mail Autoconfig</title>
    <seriesInfo name="Internet-Draft" value="draft-bucksch-autoconfig-00"/>
    <author fullname="Ben Bucksch">
      <organization>Beonex</organization>
      <address>
        <email>ben.bucksch@beonex.com</email>
      </address>
    </author>
    <date year="2023" month="November" day="06"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 37?>

<t>Set up a mail account with only email address and password.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://benbucksch.github.io/autoconfig-spec/draft-autoconfig-1.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-bucksch-autoconfig/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/benbucksch/autoconfig-spec"/>.</t>
    </note>
  </front>
  <middle>
    <?line 41?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This protocol allows users to set up their existing email account in a new mail client application,
by entering only their name, email address, and password.
The mail application, by means of mail autoconfig specified here, will determine all the other
parameters that are required, including IMAP or POP3 hostname, TLS configuration,
form of username, authentication method, and other settings, and likewise for SMTP.
Contact sync and calendar, file sharing and other services can also be set up automatically.</t>
      <t>The protocol works by first determining the domain from the email address, and the querying
well-known URLs at the email provider, which return the configuration parameters in computer-readable form. Failing that, various fallback sources can be applied, like a common database of
configurations for large email providers who do not directly support this protocol,
or other mechanisms to determine the configuration.</t>
    </section>
    <section anchor="implementations">
      <name>Implementations</name>
      <t>This protocol is in production use since 15 years by major email clients, and the
config database (used as fallback) contains configurations for over 50% of all email accounts.</t>
      <t>Currently, this protocol or parts of it has been implemented by:</t>
      <ul spacing="normal">
        <li>
          <t><eref target="https://thunderbird.net">Thunderbird</eref></t>
        </li>
        <li>
          <t><eref target="https://projects.gnome.org/evolution/">Evolution</eref></t>
        </li>
        <li>
          <t><eref target="https://userbase.kde.org/KMail">KMail</eref></t>
        </li>
        <li>
          <t><eref target="https://www.kontact.org">Kontact</eref></t>
        </li>
        <li>
          <t><eref target="https://k9mail.app">K9 Mail</eref></t>
        </li>
        <li>
          <t><eref target="https://email.faircode.eu">FairEmail</eref></t>
        </li>
        <li>
          <t><eref target="https://apps.nextcloud.com/apps/mail">NextCloud email</eref></t>
        </li>
      </ul>
      <t>and likely other mail clients.</t>
      <t>The purpose of this paper is to document and specify what is deployed in the wild. A later version 2 of the protocol might be based on JSON.</t>
      <t>Additionally, there are known problems with OAuth2 in combination with mail clients, which would need to be solved by another specification.</t>
    </section>
    <section anchor="data-format">
      <name>Data format</name>
      <t>Whether the ISP or a common central database returns the configuration, the resulting
document has the following data format.</t>
      <t>The MIME type is <tt>text/xml</tt> or <tt>text/xml+autoconfig</tt>.</t>
      <section anchor="sample-config-file">
        <name>Sample config file</name>
        <artwork><![CDATA[
<?xml version="1.0"?>
<clientConfig version="1.1">
    <emailProvider id="example.com">
      <domain>example.com</domain>
      <domain>example.net</domain>

      <displayName>Google Mail</displayName>
      <displayShortName>GMail</displayShortName>

      <!-- type=
          "imap": IMAP
          "pop3": POP3
          -->
      <incomingServer type="pop3">
        <hostname>pop.example.com</hostname>
        <port>995</port>
          <!-- "plain": no encryption
                "SSL": SSL 3 or TLS 1 on SSL-specific port
                "STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS
                -->
        <socketType>SSL</socketType>
        <username>%EMAILLOCALPART%</username>
            <!-- Authentication methods:
                "password-cleartext",
                          Send password in the clear
                          (dangerous, if SSL isn't used either).
                          AUTH PLAIN, LOGIN or protocol-native login.
                "password-encrypted",
                          A secure encrypted password mechanism.
                          Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.
                "NTLM":
                          Use NTLM (or NTLMv2 or successors),
                          the Windows login mechanism.
                "GSSAPI":
                          Use Kerberos / GSSAPI,
                          a single-signon mechanism used for big sites.
                "client-IP-address":
                          The server recognizes this user based on the IP address.
                          No authentication needed, the server will require no username nor password.
                "TLS-client-cert":
                          On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)
                "OAuth2":
                          OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.
                "none":
                          No authentication
                -->
        <authentication>password-cleartext</authentication>
        <pop3>
            <!-- remove the following and leave to client/user? -->
            <leaveMessagesOnServer>true</leaveMessagesOnServer>
            <downloadOnBiff>true</downloadOnBiff>
            <daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer>
            <!-- only for servers which don't allow checks more often -->
            <checkInterval minutes="15"/><!-- not yet supported -->
        </pop3>
        <password>optional: the user's password</password>
      </incomingServer>

      <outgoingServer type="smtp">
        <hostname>smtp.googlemail.com</hostname>
        <port>587</port>
        <socketType>STARTTLS</socketType> <!-- see <incomingServer> -->
        <username>%EMAILLOCALPART%</username> <!-- if smtp-auth -->
            <!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.
                For values, see incoming.
                Additional options here:
                "SMTP-after-POP":
                    authenticate to incoming mail server first
                    before contacting the smtp server.
                  Compatibility note: Thunderbird 3.0 accepts only "plain",
                  "secure", "none", and "smtp-after-pop".
                  It will ignore the whole XML file, if other values are given.
            -->
        <authentication>password-cleartext</authentication>
            <!-- If the server makes some additional requirements beyond
                <authentication>.
                "client-IP-address": The server is only reachable or works,
                    if the user is in a certain IP network, e.g.
                    the dialed into the ISP's network (DSL, cable, modem) or
                    connected to a company network.
                    Note: <authentication>client-IP-address</>
                    means that you may use the server without any auth.
                    <authentication>password-cleartext</> *and*
                    <restriction>client-IP-address</> means that you need to
                    be in the correct IP network *and* (should) authenticate.
                    Servers which do that are highly discouraged and
                    should be avoided, see {{bug|556267}}.
                Not yet implemented. Spec (element name?) up to change.
            -->
        <restriction>client-IP-address</restriction>
        <!-- remove the following and leave to client/user? -->
        <addThisServer>true</addThisServer>
        <useGlobalPreferredServer>true</useGlobalPreferredServer>
        <password>optional: the user's password</password>
      </outgoingServer>

      <!-- A page where the ISP describes the configuration.
          This is purely informational and currently mainly for
          maintenance of the files and not used by the client at all.
          Note that we do not necessarily use exactly the config suggested
          by the ISP, e.g. when they don't recommend SSL, but it's available,
          we will configure SSL.
          The text content should contains a description in the native
          language of the ISP (customers), and a short English description,
          mostly for us.
      -->
      <documentation url="http://www.example.com/help/mail/thunderbird">
        <descr lang="en">Configure Thunderbird 2.0 for IMAP</descr>
        <descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr>
      </documentation>

    </emailProvider>

    <!-- Syncronize the user's address book / contacts. Not yet implemented. -->
    <addressBook type="carddav">
      <username>%EMAILADDRESS%</username>
        <!-- Authentication methods. See also <incomingServer>.
              "http-basic":
                        Authenticate to the HTTP server using
                        WWW-Authenticate: Basic
              "http-digest":
                        Authenticate to the HTTP server using
                        WWW-Authenticate: Digest
              "OAuth2":
                        OAuth2. Uses the same token as for email.
              -->
      <authentication>http-basic</authentication>
      <serverURL>https://contacts.example.com/remote.php/dav<serverURL>
    </addressBook>

    <!-- Syncronize the user's calendar. Not yet implemented. -->
    <calendar type="caldav">
      <username>%EMAILADDRESS%</username>
      <authentication>http-basic</authentication> <!-- see <addressBook> -->
      <serverURL>https://calendar.example.com/remote.php/dav<serverURL>
    </calendar>

    <!-- Upload files, allowing the user to share them. Not yet implemented.
        This can be used for Thunderbird's FileLink feature,
        or to set up a file sync folder on the user's desktop. -->
    <fileShare type="webdav">
      <username>%EMAILADDRESS%</username>
      <authentication>http-basic</authentication> <!-- see <addressBook> -->
      <serverURL>https://share.example.com/remote.php/dav<serverURL>
    </fileShare>

    <!-- This allows to access the webmail service of the provider.
        The URLs are loaded into a standard webbrowser for the user.
        Specifying this is optional. -->
    <webMail>
      <!-- Webpage where the user has to log in manually by entering username
          and password himself.
          HTTPS required. -->
      <loginPage url="https://mail.example.com/login/" />

      <!-- Same as loginAutomaticDOM, but the website makes checks that
          the user comes from the login page. So, open the login page
          in the browser, get the page's DOM, fill out name and password
          fields for the user, and trigger the login button.
          The login button might not be an HTML button, just a div, so
          to trigger it, send a click event to it.
          HTTPS is required for the URL. -->
      <loginPageInfo url="https://mail.example.com/login/">
        <!-- What to fill into the usernameField.
            Format is the same as for <username> within <incomingServer>,
            including placeholders. See below for valid placeholders. -->
        <username>%EMAILADDRESS%</username>
        <!-- Allows to find the textfield on the page, to fill it out.
            The id attribute give the DOM ID,
            The name attribute give the DOM name attribute.
            One or both of id and name attributes must exist.
            Try the ID first (e.g. using getElementById()), if existing.
            Otherwise, try finding the element by name.
            Don't treat the IDs given in this XML file as trusted,
            but before using them, verify the format
            (e.g. only characters and digits for IDs).
            If you use powerful functions like jQuery, and the XML returns
            you code in the username ID, and you feed it unchecked to jQuery,
            it may be executed. -->
        <usernameField id="email_field" name="email" />
        <passwordField name="password" />
        <!-- The submit button to trigger the server submit
            after filling in the fields.
            id and name attributes: See <usernameField> -->
        <loginButton id="submit_button" name="login"/>
      </loginPageInfo>
    </webMail>

    <!-- see description. Not yet supported, see bug 564043. -->
    <inputField key="USERNAME" label="Screen name"></inputField>
    <inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField>

    <!-- Add this only when users (who already have an account) have to
        do something manually before the account can work with IMAP/POP or SSL.
        Note: Per XML, & (ampersand) needs to be escaped to & a m p ;
        (without spaces).
        Not yet implemented, see bug 586364. -->
    <enable
      visiturl="https://mail.google.com/mail/?ui=2&shva=1#settings/fwdandpop">
      <instruction>Check 'Enable IMAP and POP' in Google settings page</instruction>
      <instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction>
    </enable>

    <clientConfigUpdate url="https://www.example.com/config/mozilla.xml" />

</clientConfig>
]]></artwork>
      </section>
      <section anchor="formal-definition">
        <name>Formal definition</name>
        <t>TODO Schema for XML</t>
      </section>
    </section>
    <section anchor="config-retrieval">
      <name>Config retrieval</name>
      <t>The mail client application, when it needs the configuration for a given email address,
will perform several steps to retrieve the configuration from various sources.</t>
      <t>The steps are ordered by priority. They may all be requested at the same time, but a higher priorty
result that is available <bcp14>MUST</bcp14> be preferred over a lower priority one, even if the lower priority one is available earlier. Lower priority requests <bcp14>MAY</bcp14> be cancelled, if a valid higher priority result has been successfully received. The priority is expressed below with the number before the URL or location, with lower numbers meaning higher priority, e.g. 1.2 has higher priority than 4.1.</t>
      <t>In the URLs below,<tt>%EMAILADDRESS</tt> shall be replaced with the email address that the user entered and wishes to use, and <tt>%EMAILDOMAIN%</tt> shall be replaced with the email domain extracted from the email address. For example, for "fred@example.com", the email domain is "example.com", and for "fred@test.cs.example.net", the email domain is "test.cs.example.net".</t>
      <t>For full support of this specification, all "Required" and "Recommended" mechanisms <bcp14>MUST</bcp14> be implemented and working. For partial support of this specification, all "Required" mechanisms <bcp14>MUST</bcp14> be implemented and working, and in this case, you shall make explicit when advertizing or referring to auto config that there is only partial support of this specification.</t>
      <section anchor="mail-provider">
        <name>Mail provider</name>
        <t>First step is to directly ask the mail provider and allow it to return the configuration. This step ensures that the protocol is decentralized and the mail provider is in control of the configuration issued to mail clients.</t>
        <t>Mail providers <bcp14>MUST</bcp14> return a working configuration, with state-of-the-art security. Configuration fields <bcp14>MUST NOT</bcp14> contain invalid or non-working configuration data.</t>
        <t>To allow the mail provider to return a configuration adjusted for that mailbox, the client sends the email address as query parameter. This allows the mail provider to e.g. separate mailboxes on geographically local mail servers, e.g. a mail server located in the same office building where an employee works. However, while the protocol allows for such heterogenous configurations, mail providers are discouraged from doing so, and are instead encouraged to provide one single configuration for all their users. For example, DNS resolution based on location, mail proxy servers, or other techniques as necessary, can be used to route the traffic and host the mail efficiently.</t>
        <ul spacing="normal">
          <li>
            <t>1.1. <tt>https://autoconfig.%EMAILDOMAIN%/mail/config-v1.1.xml?emailaddress=%EMAILADDRESS%</tt> (Required)</t>
          </li>
          <li>
            <t>1.2. <tt>https://%EMAILDOMAIN%/.well-known/autoconfig/mail/config-v1.1.xml</tt> (Recommended)</t>
          </li>
          <li>
            <t>1.3. <tt>http://autoconfig.%EMAILDOMAIN%/mail/config-v1.1.xml</tt> (Optional)</t>
          </li>
        </ul>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>1.1. https://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</t>
          </li>
          <li>
            <t>1.2. https://example.com/.well-known/autoconfig/mail/config-v1.1.xml</t>
          </li>
          <li>
            <t>1.3. http://autoconfig.example.com/mail/config-v1.1.xml</t>
          </li>
        </ul>
      </section>
      <section anchor="central-database">
        <name>Central database</name>
        <t>The ISPDB contains the configurations for most mail providers with a market share larger than 0.1%, and contains configurations for half of the email accounts in the world.</t>
        <t>This is a useful fallback for mail providers which do not host a config server described in the previous step. Using a central database (ISPDB) of mail configurations for the large mail providers will increase the success rate of finding a valid configuration drastically, up to 10-fold.</t>
        <t>The mail client application may choose the mail config database provider. A public mail config database is available at base URL <tt>https://autoconfig.thunderbird.net/v1.1/</tt>. (TODO change ISPDB URL)</t>
        <t><tt>%ISPDB%</tt> below is the base URL of that database.</t>
        <ul spacing="normal">
          <li>
            <t>2.1. <tt>%ISPDB%%EMAILDOMAIN%</tt> (Recommended)</t>
          </li>
        </ul>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>2.1. <eref target="https://autoconfig.thunderbird.net/v1.1/geologist.com">https://autoconfig.thunderbird.net/v1.1/geologist.com</eref></t>
          </li>
        </ul>
      </section>
      <section anchor="mx">
        <name>MX</name>
        <t>Many companies do not maintain their own mail server, but let their email be hosted by a hosting company, which is then responsible for the email of dozens or thousands of domains. For these hosters, it may be difficult to set up the configuration server (step 1.1.) with valid TLS certificate for each of their customers, and to convince their customers to modify their root DNS specifically for autoconfig. On the other side, the ISPDB can only contain the hosting company and cannot know all their customers. To handle such domains, the protocol first needs to find the server hosting the email.</t>
        <t>If the previous mechanisms yield no result, the client may perform a DNS MX lookup on the email domain, and retrieve the MX server (incoming email server) for that domain. Only the highest priority MX hostname is considered. From that MX hostname, 2 values are extracted:</t>
        <ul spacing="normal">
          <li>
            <t>Remove the first component from the MX hostname, i.e. everything up to and including the first <tt>.</tt>, and use that as value for <tt>%MXFULLDOMAIN%</tt>.</t>
          </li>
          <li>
            <t>Extract only the second-level domain from the MX hostname, and use that as value for <tt>%MXMAINDOMAIN%</tt>. To determine the second-level domain, use the <eref target="https://publicsuffix.org">Public Suffic List</eref> or a similarly suited method, to correctly handle domains like ".co.uk" and ".com.au".</t>
          </li>
        </ul>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>For "mx.example.com", the MXFULLDOMAIN and MXMAINDOMAIN are both "example.com".</t>
          </li>
          <li>
            <t>For "mx.example.co.uk", the MXFULLDOMAIN and MXMAINDOMAIN are both "example.co.uk".</t>
          </li>
          <li>
            <t>For "mx.premium.europe.example.com", the MXFULLDOMAIN is "premium.europe.example.com" and the MXMAINDOMAIN is "example.com".</t>
          </li>
        </ul>
        <t>Then, attempt to retrieve the config for these MX domains, using the previous methods:</t>
        <ul spacing="normal">
          <li>
            <t>3.1. <tt>https://autoconfig.%MXFULLDOMAIN%/mail/config-v1.1.xml?emailaddress=%EMAILADDRESS%</tt> (Recommended)</t>
          </li>
          <li>
            <t>3.2. <tt>https://autoconfig.%MXMAINDOMAIN%/mail/config-v1.1.xml?emailaddress=%EMAILADDRESS%</tt> (Recommended)</t>
          </li>
          <li>
            <t>3.3. <tt>%ISPDB%%MXFULLDOMAIN%</tt> (Recommended)</t>
          </li>
          <li>
            <t>3.4. <tt>%ISPDB%%MXMAINDOMAIN%</tt> (Recommended)</t>
          </li>
        </ul>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>3.1. https://autoconfig.premium.europe.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</t>
          </li>
          <li>
            <t>3.2. https://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</t>
          </li>
          <li>
            <t>3.3. https://autoconfig.thunderbird.net/v1.1/premium.europe.example.com</t>
          </li>
          <li>
            <t>3.4. https://autoconfig.thunderbird.net/v1.1/example.com</t>
          </li>
        </ul>
      </section>
      <section anchor="local-disk">
        <name>Local disk</name>
        <t>For testing purposes, you may want to define a location on the disk, relative to the application installation directory, or relative to the user configuration directory, which may contain a configuration file for a specific domain, and which your application will use, if the above methods fail.</t>
        <ul spacing="normal">
          <li>
            <t>4.1. <tt>%USER_CONFIGURATION_DIR%/isp/%EMAILDOMAIN%.xml</tt> (Optional)</t>
          </li>
          <li>
            <t>4.2. <tt>%APP_INSTALL_DIR%/isp/%EMAILDOMAIN%.xml</tt> (Optional)</t>
          </li>
        </ul>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>4.1. /home/fred/.config/yourapp/isp/example.com.xml</t>
          </li>
          <li>
            <t>4.2. /opt/yourapp/isp/example.com.xml</t>
          </li>
        </ul>
      </section>
      <section anchor="other-mechanisms">
        <name>Other mechanisms</name>
        <t>You may want to implement other mechanisms to find a configuration, for example Exchange AutoDiscover, DNS SRV, or heuristic guessing. If you implement such alternative methods, and if they are less secure than some of the mechanisms provided here, the alternative methods <bcp14>SHOULD</bcp14> be considered only with lower priority (as defined above) than the more secure mechanisms defined here. For evaluating other mechanisms, use similar criteria as outlined in section "Security considerations".</t>
      </section>
      <section anchor="manual-configuration">
        <name>Manual configuration</name>
        <t>If the above mechanisms fail to provide a working configuration, or if the user explicitly chooses so, you <bcp14>SHOULD</bcp14> give the end user the ability to manually enter a configuration, and use that configuration to configure the account.</t>
      </section>
    </section>
    <section anchor="config-validation">
      <name>Config validation</name>
      <section anchor="user-approval">
        <name>User approval</name>
        <t>Independent of the mechanisms used to find the configuration, before using that configuration, you <bcp14>SHOULD</bcp14> display that configuration to the end user and let him confirm it. While doing so:</t>
        <ul spacing="normal">
          <li>
            <t>At least the second-level domain name(s) of the hostnames involved <bcp14>MUST</bcp14> be shown clearly and with high prominence.</t>
          </li>
          <li>
            <t>The client <bcp14>MUST NOT</bcp14> cut off parts of long second-level domains, to avoid spoofing. At least 63 characters <bcp14>MUST</bcp14> be displayed.</t>
          </li>
          <li>
            <t>Care <bcp14>SHOULD</bcp14> be taken with international characters that look like ASCII characters, but have a different code.</t>
          </li>
        </ul>
      </section>
      <section anchor="login-testing">
        <name>Login testing</name>
        <t>After the user confirmed the configuration, you <bcp14>SHOULD</bcp14> test the configuration, by attempting a login to each server configured. Only if the login succeeded, and the server is working, should the configuration be saved and retrieving and sending mail be started.</t>
      </section>
    </section>
    <section anchor="oauth2-windows">
      <name>OAuth2 windows</name>
      <t>If the configuration contains OAuth2 authentication, or any other authentication that uses a web browser with URL redirects, you <bcp14>MUST</bcp14> show the full URL or the second-level domain of the current page to the end user, at all times, including after page changes, URL changes or redirects. This allows the end user to verify that he is logging in at the expected page, e.g. the login server of their company.</t>
      <t>(Editor's note: Not really part of autoconfig, but autoconfig can enable OAuth2, and it's important that this is implemented correctly by mail applications.)</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="alternatives-considered">
      <name>Alternatives considered</name>
      <section anchor="dnssec">
        <name>DNSSEC</name>
        <t>Due to their top-level domain, some domains do not have DNSSEC available to them, even if they would like to deploy it.</t>
        <t>Even where the top-level domain supports it, DNSSEC is currently deployed in only 1% of domains, with adoption rates falling instead of rising, due to the difficulties of administrating it correctly.</t>
        <t>Therefore, DNSSEC cannot be relied on in this specification, and DNS must be considered insecure for the purposes of this specification.</t>
      </section>
      <section anchor="dns-srv">
        <name>DNS SRV</name>
        <t>DNS SRV protocols (RFC 2782, RFC 6186) are not used here, for 2 reasons:</t>
        <ol spacing="normal" type="1"><li>
            <t>DNS SRV relies on insecure DNS and the config can therefore be trivially spoofed by an attacker. See also DNSSEC above.</t>
          </li>
          <li>
            <t>DNS SRV does not provide all the necessary configuration parameters. For example, we need all of:</t>
          </li>
        </ol>
        <ul spacing="normal">
          <li>
            <t>the username form ("fred@example.com", or "fred", or "fred\EXAMPLE", or even a username with no relation to the email address)</t>
          </li>
          <li>
            <t>authentication method (password, CRAM-MD5, OAuth2, SSL client certificate)</t>
          </li>
          <li>
            <t>authentication method parameters (e.g. OAuth parameters)</t>
          </li>
        </ul>
        <t>and other parameters. If any of these parameters are not configured right, the configuration won't work. While these parameters could theoretically be added to DNS SRV, that would mean a new specification and render the idea void that this is a protocol that already exists, is standardized and deployed. It is unlikely that all DNS SRV records would be updated with the new values. Therefore, it does not solve the problem.</t>
        <t>This specification was created as an answer to these deficiencies and provides an alternative to DNS SRV.</t>
      </section>
      <section anchor="capabilities">
        <name>CAPABILITIES</name>
        <t>In the wild deployments from actual ISPs show that protocol-specific commands to find available authentication methods, e.g. IMAP <tt>CAPABILITIES</tt> or POP3 <tt>CAPA</tt>, are not reliable. Many email servers advertize authentication methods that do not work.</t>
        <t>Some IMAP servers are default configured to list all SASL authentication methods that have corresponding libraries installed on the system, independent on whether they are actually configured to work. The client receives a long list of authentication methods, and many of them do not work. Additionally, the server response may be only "authentication failed" and may not indicate whether the method failed due to lack of configuration, or because the password was wrong. Because some authentication servers lock the account after 3 failed login attempts, and it may also fail due to unrelated reasons (e.g. username form, wrong password, etc.), the client cannot blindly issue countless login attempts. Locking the account must be avoided. So, simply attempting all methods and seeing which one works is not an option for the email client.</t>
        <t>Additionally, some email servers advertize Kerberos / GSSAPI, but when trying to use it, the method fails, and also runs into a long 2 minute timeout in some cases. End users consider that to be a broken app.</t>
        <t>Additionally, such commands are protocol specific and have to be implemented in multiple different ways.</t>
        <t>Finally, some non-mail protocols may not support capabilties commands that include authentication methods.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="risk">
        <name>Risk</name>
        <t>If an attacker can provide a forged configuration, the provided mail hostname and authentication server can be controlled by the attacker, and the attacker can get access to the plain text password of the user. The attack can be implemented as man-in-the-middle, so the end user might receive mail as expected and never notice the attack.</t>
        <t>An attacker gaining the plain text password of a real user is a very significant threat for the organization, not only because mail itself can contain sensitive information and can be used to issue orders within the organization that have wide-ranging impact, but given single-sign-on solutions, the same username and password may give access to other resources at the organization, including other computers or, in the case of admin users, even adminstrative access to the core of the entire organization.</t>
        <t>Multi-factor authentication might not defend against such attacks, because the user may believe to be logging into his email and therefore comply with any multi-factor authentication steps required.</t>
      </section>
      <section anchor="dns">
        <name>DNS</name>
        <t>Any protocol that relies on DNS without further validation, e.g. http, should be considered insecure. Even if an http URL redirects to a https URL, and the domain of the https URL cannot be validated against the email domain, that is still insecure. This also applies to the DNS MX lookup and the https calls that base on its results, as described in section "MX".</t>
        <t>Such insecure configs may only be used, if the end user confirms the config, particularly the resulting second-level domains. See section "User approval".</t>
      </section>
      <section anchor="config-updates">
        <name>Config updates</name>
        <t>Part of the security properties of this protocol assume that the timeframe of possible attack is limited to the moment when the user manually sets up a new mail client. This moment is triggered by the end user, and a rare action - e.g. maybe once per year or even less, for typical setups -, so an attacker has limited chances to run an attack. While not a complete protection on its own, this reduces the risk significantly.</t>
        <t>However, if the mail client does regular configuration updates using this protocol, this security property is no longer given. For regular configuration updates, the mail client <bcp14>MUST</bcp14> use only mechanisms that are secure and cannot be tampered with by an active attacker. Furthermore, the user <bcp14>SHOULD</bcp14> still approve config changes.</t>
        <t>But even with all these protections implemented, the mail client vendor should make a security assessment for the risks of making such regular updates. The mail client vendor should consider that servers can be hacked, and most users simply approve changes proposed by the app, so these give only a limited protection.</t>
      </section>
      <section anchor="server-security">
        <name>Server security</name>
        <t>Given that mail clients will trust the configuration, the server delivering it needs to be secure. Even though we call it "database", static configuration files that are generated before deployment in combination with a static web server offer better security and significantly better performance than dynamic queries from a database and responses generated on-the-fly on request. If a custom server is used, it <bcp14>SHOULD</bcp14> be updated regularly and hosted on a dedicated secure server with all unnecessary services and server features turned off.</t>
        <t>Additions and modifications to the configurations are applicable to all respective users and must be made with care. The authenticity of the configuration <bcp14>MUST</bcp14> be verified from authorative sources. Server hostnames <bcp14>MUST</bcp14> be compared with the email domain names they are serving, and if they differ, the ownership of the server hostnames <bcp14>MUST</bcp14> be validated.</t>
        <t>For these reasons, mail clients may use the public mail config database mentioned above.</t>
        <t>The risk is mitigated to some degree by section "User approval".</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 522?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
KxK0awlL+C/y2f4bencAAA==

-->

</rfc>
