<?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.19 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mailmaint-autoconfig-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.1 -->
  <front>
    <title abbrev="autoconfig">Mail Autoconfig</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mailmaint-autoconfig-00"/>
    <author fullname="Ben Bucksch">
      <organization>Beonex</organization>
      <address>
        <email>ben.bucksch@beonex.com</email>
      </address>
    </author>
    <date year="2024" month="September" day="20"/>
    <area>art</area>
    <workgroup>mailmaint</workgroup>
    <keyword>config</keyword>
    <keyword>autoconfig</keyword>
    <keyword>autodiscover</keyword>
    <keyword>mail</keyword>
    <keyword>IMAP</keyword>
    <keyword>POP3</keyword>
    <keyword>SMTP</keyword>
    <keyword>JMAP</keyword>
    <abstract>
      <?line 42?>

<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-ietf-mailmaint-autoconfig/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        mailmaint Working Group mailing list (<eref target="mailto:mailmaint@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mailmaint/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mailmaint/"/>.
      </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 46?>

<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.2">
    <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
          "ews": Microsoft Exchange Web Services
          "activesync": Microsoft ActiveSync
          -->
      <incomingServer type="imap">
        <hostname>imap.example.com</hostname>
        <port>993</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.
                "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":
                          mAuth. Should be added only as second alternative.
                "none":
                          No authentication
                -->
        <authentication>password-cleartext</authentication>
        <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="pop3">
        <hostname>pop.example.com</hostname>
        <port>995</port>
        <socketType>SSL</socketType>
        <username>%EMAILADDRESS%</username>
        <authentication>password-cleartext</authentication>
        <pop3>
            <!-- optional -->
            <leaveMessagesOnServer>true</leaveMessagesOnServer>
            <daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer>
        </pop3>
      </incomingServer>

      <!-- Needed only for IMAP or POP3 -->
      <outgoingServer type="smtp">
        <hostname>smtp.googlemail.com</hostname>
        <port>587</port>
        <socketType>STARTTLS</socketType>
        <username>%EMAILADDRESS%</username> <!-- if smtp-auth -->
            <!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.
                For values, see incoming.
                Additional options here:
                "client-IP-address":
                          The server recognizes this user based on the IP address.
                          No authentication needed, the server will require no username nor password.
            -->
        <authentication>password-cleartext</authentication>
        <password>optional: the user's password</password>
      </outgoingServer>

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

      <incomingServer type="ews">
        <url>https://mail.example.com/EWS/Exchange.asmx</url>
        <username>%EMAILADDRESS%</username>
        <authentication>http-basic</authentication>
      </incomingServer>

      <incomingServer type="activesync">
        <url>https://mail.example.com/Microsoft-Server-ActiveSync</url>
        <username>%EMAILADDRESS%</username>
        <authentication>OAuth2</authentication>
      </incomingServer>

      <!-- 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":
                        mAuth. Uses the same token as for email. <scope> needs to include
                         addressbook/calendar.
              -->
      <authentication>http-basic</authentication>
      <url>https://jmap.example.com/remote.php/dav</url>
    </addressBook>

    <!-- Syncronize the user's calendar. -->
    <calendar type="caldav">
      <username>%EMAILADDRESS%</username>
      <authentication>http-basic</authentication> <!-- see <addressBook> -->
      <url>https://calendar.example.com/remote.php/dav</url>
    </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> -->
      <url>https://share.example.com/remote.php/dav</url>
    </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
        MUST adhere to mAuth <https://benbucksch.github.io/mauth-spec/draft-mauth.html>
        -->
    <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 CalDAV CardDAV WebDAV offline_access</scope>
      <clientID>open</clientID>
      <!-- optional -->
      <clientSecret>give-me-your-pass-word</clientSecret>
    </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.
        Mandatory only if the ISP requires such settings
        before the configs above work.
        Note: Per XML, & (ampersand) needs to be escaped to
        & a m p ; (without spaces). -->
    <enable
      visiturl="https://mail.google.com/mail/?ui=2&amp;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 anchor="placeholders">
        <name>Placeholders</name>
        <t>The fields for <tt>&lt;username&gt;</tt>, <tt>&lt;hostname&gt;</tt>, <tt>&lt;serverURL&gt;</tt>,
<tt>&lt;displayName&gt;</tt>, <tt>&lt;displayShortName&gt;</tt> (*1) support placeholders.
The config returned by the autoconfig server may contain these placeholders,
which are to be replaced by the client.
The following special strings (or substrings/parts) of the value should be replaced
by the client, after the config was retrieved and before its values are actually
used.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Placeholder</th>
              <th align="left">Replace with</th>
              <th align="left">Example</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>%EMAILADDRESS%</tt></td>
              <td align="left">E-Mail-Address of the user</td>
              <td align="left">
                <tt>fred@example.com</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>%EMAILLOCALPART%</tt></td>
              <td align="left">Part before <tt>@</tt> in the E-Mail-Address</td>
              <td align="left">
                <tt>fred</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>%EMAILDOMAIN%</tt></td>
              <td align="left">Part after <tt>@</tt> in the E-Mail-Address</td>
              <td align="left">
                <tt>example.com</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>%REALNAME%</tt></td>
              <td align="left">Real-world name of the user</td>
              <td align="left">
                <tt>Fred Flintstone</tt></td>
            </tr>
          </tbody>
        </table>
        <t>*1 and possibly <tt>&lt;inputField&gt;</tt> value, <tt>&lt;authURL&gt;</tt>, <tt>&lt;tokenURL&gt;</tt>, <tt>&lt;issuer&gt;</tt></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>
        <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> (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/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>
        <t>Step 1.3. is mainly for legacy servers. Many current deployments
use this HTTP URL.</t>
        <section anchor="customzing-the-config-for-a-specific-user">
          <name>Customzing the config for a specific user</name>
          <t>To allow the mail provider to return a configuration adjusted for that mailbox, the
client sends the email address as query parameter in URL 1.1. 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.</t>
          <t>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>
          <t>This mechanism also allows the autoconfig server to map the email address to
a username that cannot be expressed using the Placeholders (see section).
However, this method is discouraged. Instead, the email server login should accept
email addresses as username, and doing the mapping to internal usernames at login
time, which avoids the need for the client to know a different username.</t>
          <t>To avoid that email addresses can be tested for validity, whenever customized
configs are returned, the autoconfig server should respond to non-existing email
addresses with a configuation that appears to be real and is similar in structure
to real configurations, e.g. a random host out of the pool of actual hosts.</t>
        </section>
      </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://v1.ispdb.net/</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://v1.ispdb.net/geologist.com">https://v1.ispdb.net/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://v1.ispdb.net/premium.europe.example.com</t>
          </li>
          <li>
            <t>3.4. https://v1.ispdb.net/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>
      <ul spacing="normal">
        <li>
          <t>Configuration fields <bcp14>MUST NOT</bcp14> contain invalid or non-working
configuration data.</t>
        </li>
        <li>
          <t>The provided configuration <bcp14>MUST</bcp14> be working,
and <bcp14>SHOULD</bcp14> use state-of-the-art security.</t>
        </li>
        <li>
          <t>Configurations <bcp14>MUST</bcp14> be public and <bcp14>MUST NOT</bcp14> require
authentication (see below).</t>
        </li>
      </ul>
      <section anchor="config-location-for-single-domain">
        <name>Config location for single domain</name>
        <t>The configuration file <bcp14>SHOULD</bcp14> be published at the URL for
step 1.1., i.e.</t>
        <ul spacing="normal">
          <li>
            <t><tt>https://autoconfig.%EMAILDOMAIN%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt></t>
          </li>
        </ul>
        <t>e.g. for fred@example.com</t>
        <ul spacing="normal">
          <li>
            <t>https://autoconfig.example.com/.well-known/mail-v1.xml?emailaddress=fred@example.com</t>
          </li>
        </ul>
        <t>For backwards compatibility with older mail clients,
step 1.2. should also be implemented.</t>
      </section>
      <section anchor="config-location-for-domain-hosters">
        <name>Config location for domain hosters</name>
        <t>For mail providers which host entire domains for their business
customers, the same URL as listed in the previous section is
preferred.</t>
        <t>Alternatively, the configuration file <bcp14>SHOULD</bcp14> be published at
the location for step 3.1., i.e.</t>
        <ul spacing="normal">
          <li>
            <t><tt>https://autoconfig.%MXFULLDOMAIN%/.well-known/mail-v1.xml?emailaddress=%EMAILADDRESS%</tt></t>
          </li>
        </ul>
        <t>E.g. if the MX server for customer domain example.net is "mx.premium.europe.example.com", then the config file should be at</t>
        <ul spacing="normal">
          <li>
            <t>https://autoconfig.premium.europe.example.com/.well-known/mail-v1.xml?emailaddress=fred@example.net</t>
          </li>
        </ul>
        <t>For backwards compatibility with older mail clients,
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
<eref target="https://benbucksch.github.io/mauth-spec/draft-mauth.html">mAuth</eref>
specification.</t>
        <t>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 the
string <tt>open</tt> as client ID, or both.</t>
        <t>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 682?>

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

-->

</rfc>
