<?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.5 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bucksch-autoconfig-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.1 -->
  <front>
    <title abbrev="autoconfig">Mail Autoconfig</title>
    <seriesInfo name="Internet-Draft" value="draft-bucksch-autoconfig"/>
    <author fullname="Ben Bucksch">
      <organization>Beonex</organization>
      <address>
        <email>ben.bucksch@beonex.com</email>
      </address>
    </author>
    <date year="2024" month="January" day="31"/>
    <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/"/>.
      </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>
        <li>
          <t><eref target="https://delta.chat/">Delta Chat</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
          "jmap": JMAP
          -->
      <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>%EMAILADDRESS%</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.
                "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>

      <!-- You can have multiple incoming servers,
        and even multiple IMAP server configs.
        The first config is the preferred one, but the user or
        or client can choose the alternative configs. -->
      <incomingServer type="jmap">
        <hostname>jmap.example.com</hostname>
        <port>443</port>
        <socketType>SSL</socketType>
        <username>%EMAILADDRESS%</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.
                "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>%EMAILADDRESS%</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.
            -->
        <authentication>password-cleartext</authentication>
        <password>optional: the user's password</password>
            <!-- 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>
      </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/">
        <descr lang="en">Configure mail app for IMAP</descr>
        <descr lang="de">Email mit IMAP konfigurieren</descr>
      </documentation>

    </emailProvider>

    <!-- Syncronize the user's address book / contacts. -->
    <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. <scope> needs to include
                         addressbook/calendar.
              -->
      <authentication>http-basic</authentication>
      <serverURL>https://jmap.example.com/remote.php/dav<serverURL>
    </addressBook>

    <addressBook type="jmap">
      <username>%EMAILADDRESS%</username>
      <authentication>http-basic</authentication>
      <serverURL>https://jmap.example.com<serverURL>
    </addressBook>

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

    <calendar type="jmap">
      <username>%EMAILADDRESS%</username>
      <authentication>http-basic</authentication> <!-- see <addressBook> -->
      <serverURL>https://calendar.example.com<serverURL>
    </calendar>

    <!-- Upload files, allowing the user to share them.
        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 login in to the webmail service of the provider.
        The URLs are loaded into a standard webbrowser for the user.
        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>

    <!-- Ask user for custom input,
       and use them as placeholders in the values.
       Optional. -->
    <inputField key="USERNAME" label="Screen name"></inputField>
    <inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField>

    <!-- oAuth2 specced for mail apps,
        e.g. clientID, expiry, and login page -->
    <mAuth>
      <authURL>https://login.example.com/common/oauth2/v2.0/authorize</authURL>
      <tokenURL>https://login.example.com/common/oauth2/v2.0/token</tokenURL>
      <issuer>login.example.com</issuer>
      <scope>imap pop3 smtp webdav caldav carddav offline_access</scope>
      <clientID>autoconfig</clientID>
    </mAuth>

    <!-- 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).
        Mandatory only if the ISP requires such settings
        before the configs above work. -->
    <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/mail.xml" />

</clientConfig>
]]></artwork>
      </section>
      <section anchor="formal-definition">
        <name>Formal definition</name>
        <t>TODO Schema for XML</t>
      </section>
    </section>
    <section anchor="config-retrieval-for-mail-clients">
      <name>Config retrieval for mail clients</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%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt> (Required)</t>
          </li>
          <li>
            <t>1.2. <tt>https://%EMAILDOMAIN%/.well-known/autoconfig/mail/config-v1.1.xml</tt> (Optional)</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/.well-known/mail-v1.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>
        <t>Step 1.3. is mainly for legacy servers. Many current deployments
use this HTTP URL.</t>
      </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.ispdb.net/v1.1/</tt>.</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.ispdb.net/v1.1/geologist.com">https://autoconfig.ispdb.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>%MXBASEDOMAIN%</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 MXBASEDOMAIN are both "example.com".</t>
          </li>
          <li>
            <t>For "mx.example.co.uk", the MXFULLDOMAIN and MXBASEDOMAIN are both "example.co.uk".</t>
          </li>
          <li>
            <t>For "mx.premium.europe.example.com", the MXFULLDOMAIN is "premium.europe.example.com" and the MXBASEDOMAIN 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%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt> (Required)</t>
          </li>
          <li>
            <t>3.2. <tt>https://autoconfig.%MXBASEDOMAIN%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt> (Recommended)</t>
          </li>
          <li>
            <t>3.3. <tt>%ISPDB%%MXFULLDOMAIN%</tt> (Recommended)</t>
          </li>
          <li>
            <t>3.4. <tt>%ISPDB%%MXBASEDOMAIN%</tt> (Recommended)</t>
          </li>
        </ul>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>3.1. https://autoconfig.premium.europe.example.com/.well-known/mail-v1.xml?emailaddress=fred@example.com</t>
          </li>
          <li>
            <t>3.2. https://autoconfig.example.com/.well-known/mail-v1.xml?emailaddress=fred@example.com</t>
          </li>
          <li>
            <t>3.3. https://autoconfig.ispdb.net/v1.1/premium.europe.example.com</t>
          </li>
          <li>
            <t>3.4. https://autoconfig.ispdb.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 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>
    <section anchor="config-publishing-for-mail-providers">
      <name>Config publishing for mail providers</name>
      <t>Mail service providers who want to support this specification
and publish the mail configuration for their own mail service,
so that mail client apps can be automatically configured,
<bcp14>SHOULD</bcp14> follow this section as guideline and <bcp14>MUST</bcp14> respect the
definitions in this specification.</t>
      <section anchor="config-location-for-single-domain">
        <name>Config location for single domain</name>
        <t>The preferred location to publish the configuration file is
step 1.1. above, i.e.
<tt>https://autoconfig.%EMAILDOMAIN%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt>
e.g. for fred@example.com:
https://autoconfig.example.com/.well-known/mail-v1.xml?emailaddress=fred@example.com
For backwards compatibility, step 1.2. should also be implemented.</t>
      </section>
      <section anchor="config-location-based-on-mx-server">
        <name>Config location based on MX server</name>
        <t>For mail providers which host entire domains for their customers,
the same URL is still preferred. Alternatively and less preferred,
the location from step 3.1. above should be used, i.e.
<tt>https://autoconfig.%MXFULLDOMAIN%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt>
E.g. if the MX server for customer domain example.net is "mx.premium.europe.example.com", then the config file should be at
https://autoconfig.premium.europe.example.com/.well-known/mail-v1.xml?emailaddress=fred@example.net
For backwards compatibility, step 3.2. should also be implemented.</t>
      </section>
      <section anchor="no-authentication-for-config">
        <name>No authentication for config</name>
        <t>Any of the above URLs for retrieving the config file <bcp14>MUST NOT</bcp14>
require authentication, but <bcp14>MUST</bcp14> be public.</t>
        <t>This is because the config contains the authentication method.
Without knowing the config, the client does not know which
authentication method is required and which username form
(e.g. username "fred" or "fred@example.com" or "fred\EXAMPLE")
to use. Given that the config is required for authentication,
the config itself cannot require authentication.</t>
      </section>
      <section anchor="return-config-for-non-existing-email-addresses">
        <name>Return config for non-existing email addresses</name>
        <t>Servers <bcp14>SHOULD</bcp14> return a valid config, even if the email address
sent as URL parameter does not exist. Otherwise, spammers
or attackers would be able to test the validity of email addresses.
This is true even if the config server needs the email address
to determine which of multiple configurations is correct.
In such a configuration, if the client sends a non-existing
email address, the config server <bcp14>SHOULD</bcp14> return one of the
valid configuations, so that valid and invalid email addresses
are indistiguishable.</t>
      </section>
      <section anchor="oauth2-requirements">
        <name>oAuth2 requirements</name>
        <t>If oAuth2 is used, the oAuth2 server <bcp14>MUST</bcp14> adhere to the
mAuth specification. The oAuth2 server <bcp14>MUST</bcp14>
either accept the public client ID as given in the config file,
without secret, or <bcp14>MUST</bcp14> allow any string as client ID, without
client registration. There are also specific requirements for
expiry times and the login page, which are needed for
mail client applications to work.</t>
      </section>
    </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>One possible mitigation is to use multiple different DNS servers
and verify that the results match, e.g. to use the native DNS
resolver of the operating system, and additionally also query
a hardcoded DoH (DNS over HTTPS) server. Nonetheless,
the result should be used with care.</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 659?>

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

-->

</rfc>
