<?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.18 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bucksch-autoconfig-03" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="autoconfig">Mail Autoconfig</title>
    <seriesInfo name="Internet-Draft" value="draft-bucksch-autoconfig-03"/>
    <author fullname="Ben Bucksch">
      <organization>Beonex</organization>
      <address>
        <email>ben.bucksch@beonex.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="24"/>
    <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-bucksch-autoconfig/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/benbucksch/autoconfig-spec"/>.</t>
    </note>
  </front>
  <middle>
    <?line 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
          -->
      <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":
                          mAuth. 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>http-basic</authentication>
        <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":
                        mAuth. 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>messaging</clientID>
      <clientSecret>notreally</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.
        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 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
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 692?>

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

-->

</rfc>
