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

<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-ietf-mailmaint-autoconfig.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-mailmaint/"/>.
      </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 47?>

<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>
      <t>While this AutoConfig protocol was conceived for configuring mail clients,
it can also be used for accounts of other types, like contacts and calendar
sync, chat, video conference, or online publishing. The primary concept and
limitation here is that these accounts need to be hosted by the same provider
as the email address.</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://parula.beonex.com">Parula</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> and
<eref target="https://www.thunderbird.net/mobile/">Thunderbird Mobile</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.</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>.</t>
      <section anchor="xml-config-file">
        <name>XML config file</name>
        <t>The following example shows the syntax of the XML config file returned.</t>
        <artwork><![CDATA[
<?xml version="1.0"?>
<clientConfig version="1.2">
  <emailProvider id="example.com">
    <domain>example.com</domain>
    <domain>example.net</domain>

    <displayName>Google Workspace</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": TLS on TLS-specific port
        "STARTTLS": mandatory upgrade to TLS via STARTTLS
        -->
      <socketType>SSL</socketType>
        <!-- Authentication methods:
        "password-cleartext": SASL PLAIN, LOGIN or protocol-native login.
        "password-encrypted": SASL CRAM-MD5, DIGEST-MD5 etc. Not TLS.
        "NTLM": Deprecated Windows login mechanism
        "GSSAPI": Kerberos or Windows GSSAPI
        "TLS-client-cert": TLS client certificate on TLS layer
        "OAuth2": Must adhere to section "OAuth2 requirements".
        "none": No authentication

        Multiple <authentication> elements per server
        config are valid. Clients will pick the first
        one that they support.
        -->
      <authentication>password-cleartext</authentication>
      <username>%EMAILADDRESS%</username>
    </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>
      <authentication>password-cleartext</authentication>
      <username>%EMAILADDRESS%</username>
    </incomingServer>

    <!-- Needed only for IMAP or POP3 -->
    <outgoingServer type="smtp">
      <hostname>smtp.googlemail.com</hostname>
      <port>587</port>
      <socketType>STARTTLS</socketType>
        <!-- smtp-auth (RFC 2554, 4954) or other auth mechanism. -->
      <authentication>password-cleartext</authentication>
      <username>%EMAILADDRESS%</username>
    </outgoingServer>

    <incomingServer type="jmap">
      <url>https://jmap.example.com</url>
        <!-- Authentication methods
        "http-basic": RRFC 7661
        "http-digest"
        "OAuth2": Must adhere to section "OAuth2 requirements".
        -->
      <authentication>OAuth2</authentication>
      <authentication>http-basic</authentication>
      <username>%EMAILADDRESS%</username>
    </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>

    <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>

  <addressbook type="carddav">
    <url>https://contacts.example.com/remote.php/dav</url>
    <authentication>http-basic</authentication>
    <username>%EMAILADDRESS%</username>
  </addressbook>

  <calendar type="caldav">
    <url>https://calendar.example.com/remote.php/dav</url>
    <authentication>http-basic</authentication>
    <username>%EMAILADDRESS%</username>
  </calendar>

    <!-- Upload files, allowing the user to share them.
    This can be used to send links instead of attachments,
    or to set up a file sync folder on the user's desktop.
    -->
  <fileShare type="webdav">
    <url>https://share.example.com/remote.php/dav</url>
    <authentication>http-basic</authentication>
    <username>%EMAILADDRESS%</username>
  </fileShare>

  <chatServer type="xmpp">
    <url>wss://example.com:5281/xmpp-websocket</url>
    <authentication>http-basic</authentication>
    <username>%EMAILADDRESS%</username>
  </chatServer>

  <chatServer type="xmpp">
    <hostname>xmpp.example.com</hostname>
    <port>5223</port>
    <socketType>TLS</socketType>
    <authentication>password-cleartext</authentication>
    <username>%EMAILADDRESS%</username>
  </chatServer>

  <videoConference type="opentalk">
    <url>https://talk.example.com/login</url>
    <authentication>OAuth2</authentication>
    <username>%EMAILADDRESS%</username>
  </videoConference>

    <!-- OAuth2 config for native public client apps.
    Gives e.g. clientID, expiry, and login page
    MUST adhere to "Open Client OAuth2 profile".
    -->
  <oAuth2>
    <authURL>https://login.example.com/auth</authURL>
    <tokenURL>https://login.example.com/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-password</clientSecret>
  </oAuth2>

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

</clientConfig>
]]></artwork>
      </section>
      <section anchor="global-elements">
        <name>Global elements</name>
        <t>The file starts with an XML header, e.g. <tt>&lt;?xml version="1.0"?&gt;</tt>,
and is encoded in UTF-8 without BOM.</t>
        <section anchor="clientconfig">
          <name>clientConfig</name>
          <t>The root element of the XML file is <tt>&lt;clientConfig version="1.2"&gt;</tt>.</t>
          <t>The <tt>version</tt> is <tt>1.2</tt> for the version defined in this specification. <tt>1.1</tt> is
a compatible previous version. Higher versions are for future specifications.
The client <bcp14>MUST NOT</bcp14> reject a config file solely based on the version number.</t>
        </section>
        <section anchor="emailprovider">
          <name>emailProvider</name>
          <t>Element <tt>&lt;emailProvider id="example.com"&gt;</tt> is within the root element.
This element has no semantic purpose and exists for legacy reasons only.
If all of its child elements were within the root element, their meaning
would still be the same.</t>
          <t>The <tt>id</tt> is a unique string that typically matches the primary domain of the
provider.</t>
          <t>Within <tt>&lt;emailProvider&gt;</tt> are <tt>&lt;domain&gt;</tt>, <tt>&lt;displayName&gt;</tt> and
<tt>&lt;displayShortName&gt;</tt>, <tt>&lt;documentation&gt;</tt>, <tt>&lt;incomingServer&gt;</tt> and
<tt>&lt;outgoingServer&gt;</tt>.</t>
        </section>
        <section anchor="domain">
          <name>domain</name>
          <t>E.g.</t>
          <artwork><![CDATA[
<domain>example.com</domain>
<domain>example.net</domain>
<domain purpose="mx">example-hosting.com</domain>
]]></artwork>
          <t>The content of the <tt>&lt;domain&gt;</tt> element defines which email addresses this config
is valid for. E.g. a config with <tt>&lt;domain&gt;example.com&lt;/domain&gt;</tt> is valid for
email address <tt>fred@example.com</tt>.</t>
          <t>Multiple <tt>&lt;domain&gt;</tt> elements may be included, which means that the config is
valid for all of these domains. Their order has no meaning - you may sort them
by number of users, importance to the provider, or alphabethically.</t>
          <t>A <tt>&lt;domain purpose="mx"&gt;</tt> specifies the domain name of the MX server of
the email address, and is used config file lookup using MX
server names, as specified in section MX. The <tt>purpose</tt> property is
mainly informational and may be ignored.</t>
        </section>
        <section anchor="displayname-and-displayshortname">
          <name>displayName and displayShortName</name>
          <t>E.g.</t>
          <artwork><![CDATA[
<displayName>Google Workspace</displayName>
<displayShortName>GMail</displayShortName>
]]></artwork>
          <t>The <tt>&lt;displayName&gt;</tt> element contains the name of the provider, e.g.
as preferred by the marketing of the provider itself. It <bcp14>SHOULD</bcp14> be no 
longer than 30 characters, but <bcp14>MUST</bcp14> be no longer than 60 characters.</t>
          <t>The <tt>&lt;displayShortName&gt;</tt> element contains the name of the provider, as 
typically used by end users. It <bcp14>SHOULD</bcp14> be no longer than 12
characters, and it <bcp14>MUST NOT</bcp14> be longer than 20 characters.</t>
        </section>
      </section>
      <section anchor="documentation">
        <name>documentation</name>
        <t>E.g.</t>
        <artwork><![CDATA[
<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>
]]></artwork>
        <t>This is purely informational and not required for the automatic setup.</t>
        <t>Records the user help webpage at the provider that describes the mail 
server settings. The config may be based on that page, but does not 
necessarily have to match it, e.g. when a better config is available 
than the one described on the webpage.</t>
        <t>The <tt>url</tt> property contains the URL of the webpage. The <tt>&lt;descr&gt;</tt> 
content describes the content and purpose of the page and why it's 
referenced here.
Multiple <tt>&lt;descr&gt;</tt> elements with different <tt>lang</tt> properties are 
allowed, whereby the <tt>lang</tt> property contains the 2-letter ISO language
code, like the HTML <tt>lang</tt> attribute.</t>
      </section>
      <section anchor="server-sections">
        <name>Server sections</name>
        <t>E.g. <tt>&lt;incomingServer type="jmap"&gt;</tt> or <tt>&lt;calendar type="carddav"&gt;</tt></t>
        <ul spacing="normal">
          <li>
            <t>The <tt>type</tt> property specifies the wire protocol that this server uses. See
section type below.</t>
          </li>
          <li>
            <t><tt>&lt;incomingServer&gt;</tt> specifies the server that the mail client retrieves email
from and submits changes to. In many protocols, this server is also used for
sending email.</t>
          </li>
          <li>
            <t><tt>&lt;outgoingServer&gt;</tt> is used for sending, if <tt>&lt;incomingServer&gt;</tt> does not
support that directly.
This is currently used only for SMTP in combination with IMAP and POP3.</t>
          </li>
          <li>
            <t><tt>&lt;incomingServer&gt;</tt> and <tt>&lt;outgoingServer&gt;</tt> are within element
<tt>&lt;emailProvider&gt;</tt>, whereas <tt>&lt;calendar&gt;</tt>, <tt>&lt;addressbook&gt;</tt>, <tt>&lt;fileShare&gt;</tt>,
<tt>&lt;chatServer&gt;</tt> and <tt>&lt;videoConference&gt;</tt> are within the
root element <tt>&lt;clientConfig&gt;</tt>, i.e. one level higher.
Other than that, they work the same.</t>
          </li>
          <li>
            <t>In some protocols, the <tt>&lt;incomingServer&gt;</tt> server additionally provides
calendars, addressbooks, and other data. For such protocols, the same server
is not repeated in other specific server sections like <tt>&lt;calendar&gt;</tt>.
Calendar-only clients supporting such multi-purpose protocols <bcp14>MUST</bcp14> read the
<tt>&lt;incomingServer&gt;</tt> (nonewithstanding that it's within legacy element
<tt>&lt;emailProvider&gt;</tt>)
and test and use the parts of the protocol needed for their
functionality.</t>
          </li>
        </ul>
        <section anchor="multiple-server-sections">
          <name>Multiple server sections</name>
          <ul spacing="normal">
            <li>
              <t>Server sections of the same type (like <tt>&lt;incomingServer&gt;</tt> or <tt>&lt;calendar&gt;</tt>)
may appear multiple times in the same config file.
In this case, the one listed first is preferred by the config provider.
Unless the client has specific other requirements, it <bcp14>SHOULD</bcp14> pick the first
config.</t>
            </li>
            <li>
              <t>The client may derivate from this recommendation, because
              </t>
              <ul spacing="normal">
                <li>
                  <t>the client doesn't support a higher-priority protocol, e.g. a JMAP 
configuraion is listed first and is the most preferred, but the 
client does not support JMAP yet, or</t>
                </li>
                <li>
                  <t>the client doesn't support a configuration setting, e.g. it
doesn't support STARTTLS, or the config specifies only an OAuth2 
authentication and the client either doesn't implement OAuth2, or
it doesn't have a client ID for this provider, or</t>
                </li>
                <li>
                  <t>the client has a specific policy to prefer another configuration,
e.g. a STARTTLS config is listed before a direct TLS config, and
the client has a policy of preferring direct TLS, or likewise
the client prefers IMAP over POP3.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Server types, elements and protocols that the client does not support 
<bcp14>MUST</bcp14> be ignored and the client <bcp14>MUST</bcp14> continue to parse the other 
server sections, which may contain configs that the client
understands and supports. The client ignores the file only if there 
is no supported and working config found.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="type">
        <name>type</name>
        <t>The <tt>type</tt> property on the server section element specifies the
wire protocol that this server uses.</t>
        <table>
          <thead>
            <tr>
              <th align="left">type</th>
              <th align="left">Base</th>
              <th align="left">Name</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>jmap</tt></td>
              <td align="left">URL</td>
              <td align="left">JMAP</td>
              <td align="left">RFC 8620, RFC 8621, RFC 8887, RFC 9610 et al</td>
            </tr>
            <tr>
              <td align="left">
                <tt>imap</tt></td>
              <td align="left">TCP</td>
              <td align="left">IMAP</td>
              <td align="left">RFC 9051 or RFC 3501, et al</td>
            </tr>
            <tr>
              <td align="left">
                <tt>pop3</tt></td>
              <td align="left">TCP</td>
              <td align="left">POP3</td>
              <td align="left">RFC 1939, RFC 5034</td>
            </tr>
            <tr>
              <td align="left">
                <tt>smtp</tt></td>
              <td align="left">TCP</td>
              <td align="left">SMTP</td>
              <td align="left">RFC 5321, RFC 2822</td>
            </tr>
            <tr>
              <td align="left">
                <tt>caldav</tt></td>
              <td align="left">URL</td>
              <td align="left">CalDAV</td>
              <td align="left">RFC 4791</td>
            </tr>
            <tr>
              <td align="left">
                <tt>carddav</tt></td>
              <td align="left">URL</td>
              <td align="left">CardDav</td>
              <td align="left">RFC 6352</td>
            </tr>
            <tr>
              <td align="left">
                <tt>webdav</tt></td>
              <td align="left">URL</td>
              <td align="left">WebDAV</td>
              <td align="left">RFC 4918</td>
            </tr>
            <tr>
              <td align="left">
                <tt>xmpp</tt></td>
              <td align="left">URL/TCP</td>
              <td align="left">XMPP</td>
              <td align="left">RFC 6120, RFC 6121, RFC 7395</td>
            </tr>
            <tr>
              <td align="left">
                <tt>managesieve</tt></td>
              <td align="left">TCP</td>
              <td align="left">ManageSieve</td>
              <td align="left">RFC 5804, RFC 5228</td>
            </tr>
            <tr>
              <td align="left">
                <tt>ews</tt></td>
              <td align="left">URL</td>
              <td align="left">Exchange Web Services</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>activesync</tt></td>
              <td align="left">URL</td>
              <td align="left">ActiveSync</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">
                <tt>graph</tt></td>
              <td align="left">URL</td>
              <td align="left">Microsoft Graph</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>Other protocol names can be added using an IANA registry. Their 
respective registrations need to define
* the <tt>type</tt> name, as appearing in the <tt>type</tt> property
* whether the protocol is URL-based or TCP-based,
* which RFCs or document specifies the protocol, and
* may define additional protocol-specific XML elements within the section and
  their meaning.</t>
      </section>
      <section anchor="url-based-protocols">
        <name>URL-based protocols</name>
        <t>E.g.</t>
        <artwork><![CDATA[
<incomingServer type="jmap">
  <url>https://jmap.example.com/session</url>
  <authentication>http-basic</authentication>
  <username>%EMAILADDRESS%</username>
</incomingServer>
]]></artwork>
        <t>For server sections with protocols that are based on HTTPS or other 
URLs, the following elements are supported:</t>
        <section anchor="url">
          <name>url</name>
          <t>E.g. <tt>&lt;url&gt;https://jmap.example.com/session&lt;/url&gt;</tt></t>
          <t>The content of the <tt>&lt;url&gt;</tt> element contains the URL where to contact the
server.</t>
          <t>The URL scheme will normally be HTTPS and the URL start with <tt>https://</tt>.
Some protocols may use other schemes, e.g. WebSockets <tt>wss://</tt>.</t>
        </section>
        <section anchor="authentication">
          <name>authentication</name>
          <t>E.g. <tt>&lt;authentication&gt;http-basic&lt;/authentication&gt;</tt></t>
          <t>The content of the <tt>&lt;authentication&gt;</tt> element defines which HTTP
authentication method to use.</t>
          <ul spacing="normal">
            <li>
              <t><tt>http-basic</tt>: Authenticate to the HTTP server using
<tt>WWW-Authenticate: Basic</tt>. See RFC 7617.</t>
            </li>
            <li>
              <t><tt>http-digest</tt>: Authenticate to the HTTP server using
<tt>WWW-Authenticate: Digest</tt>. See RFC 7616</t>
            </li>
            <li>
              <t><tt>OAuth</tt>: Authenticate to the HTTP server using
<tt>WWW-Authenticate: Bearer</tt>. See RFC 6750 Section 3.
It <bcp14>MUST</bcp14> adhere to the requirements defined in section OAuth2 in this
specification.</t>
            </li>
          </ul>
          <t>The rules as specified in sections "Multiple authentication alternatives" and
"Authentication verification and fallback" apply here as well.</t>
        </section>
        <section anchor="username">
          <name>username</name>
          <t>E.g. <tt>&lt;username&gt;%EMAILADDRESS%&lt;/username&gt;</tt> or <tt>&lt;username&gt;fred&lt;/username&gt;</tt></t>
          <t>The username to use for the authentication method.</t>
          <t>Placeholders <bcp14>MUST</bcp14> be replaced before using the actual value. See section
"Placeholders".</t>
        </section>
      </section>
      <section anchor="tcp-based-protocols">
        <name>TCP-based protocols</name>
        <t>For server sections with protocols that are based on TCP,
the following elements are supported:</t>
        <artwork><![CDATA[
<incomingServer type="imap">
  <hostname>imap.example.com</hostname>
  <port>993</port>
  <socketType>SSL</socketType>
  <authentication>password-cleartext</authentication>
  <username>%EMAILADDRESS%</username>
</incomingServer>
]]></artwork>
        <section anchor="hostname">
          <name>hostname</name>
          <t>E.g. <tt>&lt;hostname&gt;imap.example.com&lt;/hostname&gt;</tt></t>
          <t>The content of the <tt>&lt;hostname&gt;</tt> element contains the fully qualified hostname
of the server.</t>
        </section>
        <section anchor="port">
          <name>port</name>
          <t>E.g. <tt>&lt;port&gt;993&lt;/port&gt;</tt></t>
          <t>The content of the <tt>&lt;port&gt;</tt> element is an integer and contains the TCP port
number at the hostname. The port is typically specific to the combination of
the wire protocol and socketType.</t>
        </section>
        <section anchor="sockettype">
          <name>socketType</name>
          <t>E.g. <tt>&lt;socketType&gt;SSL&lt;/socketType&gt;</tt></t>
          <t>The content of the <tt>&lt;socketType&gt;</tt> element specifies whether to use direct TLS,
STARTTLS, or none of these.</t>
          <ul spacing="normal">
            <li>
              <t><tt>SSL</tt>: Directly contact the TCP port using TLS. TLS version 1.2 or higher
<bcp14>SHOULD</bcp14> be used. Higher versions may be required based on security situation,
server support, and client policy decisions.</t>
            </li>
            <li>
              <t><tt>STARTTLS</tt>: Contact the TCP port first using an unencrypted plain socket,
then upgrade to TLS
using the protocol-specific STARTTLS specification. With this configuration,
STARTTLS <bcp14>MUST</bcp14> be used and TLS <bcp14>MUST</bcp14> be used after the STARTTLS upgrade. If
the upgrade to TLS fails for whatever reason, the client <bcp14>MUST</bcp14>
disconnect and <bcp14>MUST NOT</bcp14> try to authenticate. This prevents downgrade attacks
that could otherwise steal passwords, user data, and impersonate users.</t>
            </li>
            <li>
              <t><tt>plain</tt>: Unencrypted connection, with neither TLS nor STARTTLS. May be
needed for local servers. Deprecated.</t>
            </li>
          </ul>
          <section anchor="tls-validation">
            <name>TLS validation</name>
            <t>In all cases where TLS is used, either directly or using STARTTLS,
the client <bcp14>MUST</bcp14> validate the TLS certificate and ensure that the
certificate is valid for the hostname given in this config. If not,
or if the TLS certificate is otherwise invalid, the client <bcp14>MUST</bcp14>
either disconnect or <bcp14>MAY</bcp14> warn the user of the
dangers and ask for user confirmation. Such warning and confirmation 
<bcp14>MAY</bcp14> only be allowed at original configuration and <bcp14>MUST NOT</bcp14> be allowed 
during normal everyday connection.</t>
            <t>If the server had a valid TLS certificate during original configuration
and the TLS certificate is invalid during normal connection, the
client <bcp14>MUST</bcp14> disconnect.</t>
            <t>If the problem is that the TLS certificate expired recently,
the client <bcp14>MAY</bcp14> not consider that a failure during normal connection
and use other recovery mechanisms.</t>
          </section>
        </section>
        <section anchor="authentication-1">
          <name>authentication</name>
          <t>E.g. <tt>&lt;authentication&gt;password-cleartext&lt;/authentication&gt;</tt></t>
          <t>The content of the <tt>&lt;authentication&gt;</tt> element defines which authentication
method to use. The can be either an authentication defined by the wire
protocol, or a SASL scheme, or a successor to SASL.</t>
          <ul spacing="normal">
            <li>
              <t><tt>password-cleartext</tt>: Send password in the clear.
Uses either the native authentication method defined by the wire protocol
(if that is based on plaintext passwords), or a SASL authentication scheme
like SASL <tt>PLAIN</tt> or SASL <tt>LOGIN</tt>, or a successor.</t>
            </li>
            <li>
              <t><tt>password-encrypted</tt>: An encrypted or hashed password mechanism.
Includes SASL <tt>CRAM-MD5</tt>, <tt>DIGEST-MD5</tt> and <tt>SCRAM-SHA-256-PLUS</tt>.
TLS alone by itself does not qualify as "password-encrypted".</t>
            </li>
            <li>
              <t><tt>NTLM</tt>: Legacy Windows login mechanisms NTLM or NTLMv2.</t>
            </li>
            <li>
              <t><tt>GSSAPI</tt>: Kerberos or GSSAPI, a single-signon mechanism based on TCP.</t>
            </li>
            <li>
              <t><tt>TLS-client-cert</tt>: On the SSL/TLS layer, after server request, the client
sends a TLS client certificate for the user, possibly after letting the user
select confirm it. Uses SASL <tt>EXTERNAL</tt> scheme.</t>
            </li>
            <li>
              <t><tt>OAuth</tt>: OAuth. SASL <tt>OAUTHBEARER</tt> (current) or <tt>XOAUTH2</tt> (deprecated) or
successors. It <bcp14>MUST</bcp14> adhere to the requirements defined in section OAuth2 in
this specification.</t>
            </li>
            <li>
              <t><tt>client-IP-address</tt>: Server can be used without any explicit authentication,
and the client is admitted based on its IP address.
This may be the case for some SMTP servers on local networks.
Not supported on the Internet. Deprecated, because it breaks mobile devices.</t>
            </li>
          </ul>
          <section anchor="recommending-specific-sasl-schemes">
            <name>Recommending specific SASL schemes</name>
            <t>Additionally, a specific SASL scheme may be specified using <tt>SASL</tt>, a space,
and the specific SASL authentication scheme name, e.g.
<tt>SASL SCRAM-SHA-256-PLUS</tt>. In such a case, the server config <bcp14>SHOULD</bcp14> also
specify a more generic authentication mechanism as a lower priority
alternative. That would make clients use the specific authentication
mechanism, if they support it, and other clients will use the more generic
authentication mechanism.</t>
          </section>
          <section anchor="multiple-authentication-alternatives">
            <name>Multiple authentication alternatives</name>
            <t>The <tt>&lt;authentication&gt;</tt> element may appear multiple times within a server
section. In this case, they are ordered from the most to the least preferred
method, based on the policy of the provider. If a client does not support a
specific authentication scheme, or does not have the conditions to use it,
e.g. the client does not have a Client ID for this OAuth2 server, then the
client <bcp14>MUST</bcp14> skip this <tt>&lt;authentication&gt;</tt> element and use the next in the list
instead. If none of the authentication methods are supported by the client,
the client <bcp14>MUST</bcp14> ignore that server section and use the remaining server
sections.</t>
          </section>
          <section anchor="authentication-verification-and-fallback">
            <name>Authentication verification and fallback</name>
            <t>The client <bcp14>SHOULD</bcp14> test the configuration during setup, with an actual 
authentication attempt.
If the authentication fails, the client decides based on the 
authentication error code how to proceed. E.g. if the authentiocation
method itself failed, or the error code indicates a systemic failure, 
the client <bcp14>SHOULD</bcp14> use a lower-priority authentication method from the 
list.
If the authentication method is working, but the error code indicated 
that the username or password was wrong, then the client <bcp14>MAY</bcp14> ask the
user to correct the password.</t>
            <t>For that reason, the server <bcp14>SHOULD</bcp14> be specific in the error codes and 
allow the client to distinguish between
* an unsupported or non-working authentication method or other
  systemic failures
* the client being rejected by the server
* the user being blocked from login
* the user authentication failing due to wrong password or username
* other reasons</t>
            <t>If the server were to return the same error code for all these cases, the
client might tell the user that the password is wrong, and the user starts
attempting other passwords, potentially revealing passwords to other
higher-value assets, which is highly dangerous.</t>
            <t>If the authentification succeeded, the client <bcp14>SHOULD</bcp14> take note of the 
working configutation and use that for all subsequent connections, 
until an explicit reconfiguration occurs. During normal everyday operation,
the client <bcp14>SHOULD NOT</bcp14> fallback nor attempt multiple different authentication
methods.</t>
          </section>
        </section>
        <section anchor="username-1">
          <name>username</name>
          <t>E.g. <tt>&lt;username&gt;%EMAILADDRESS%&lt;/username&gt;</tt> or <tt>&lt;username&gt;fred&lt;/username&gt;</tt></t>
          <t>The username to use for the authentication method.</t>
          <t>Placeholders <bcp14>MUST</bcp14> be replaced before using the actual value. See section
"Placeholders".</t>
        </section>
      </section>
      <section anchor="placeholders">
        <name>Placeholders</name>
        <t>The <tt>&lt;username&gt;</tt> value may contain placeholders.</t>
        <t>The following special substrings in the value <bcp14>MUST</bcp14> be
replaced by the client, before the value is 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>
          </tbody>
        </table>
        <t>Some clients <bcp14>MAY</bcp14> also support the same placeholders for the fields
<tt>&lt;hostname&gt;</tt>, <tt>&lt;url&gt;</tt>, <tt>&lt;authURL&gt;</tt>, <tt>&lt;tokenURL&gt;</tt>, <tt>&lt;issuer&gt;</tt>,
<tt>&lt;displayName&gt;</tt> and <tt>&lt;displayShortName&gt;</tt>.</t>
      </section>
      <section anchor="xml-validation">
        <name>XML validation</name>
        <t>The client <bcp14>SHOULD</bcp14> validate that the config file is valid XML, and if 
the XML syntax is invalid, the client <bcp14>SHOULD</bcp14> ignore the entire file. In 
contrast, if there are syntactically valid, but unknown elements or 
properties, the client <bcp14>MUST NOT</bcp14> ignore the file.</t>
        <t>The client <bcp14>SHOULD</bcp14> take only the elements and attributes that are
supported by the client, and <bcp14>MUST</bcp14> ignore the others that are unknown
to the client.</t>
        <t>The client may optionally want to validate the XML before parsing it. 
This is not required. If the client choses to validate, the validation 
<bcp14>MUST</bcp14> ignore unknown elements and properties and <bcp14>MUST NOT</bcp14>
drop or ignore a configuration that contains unknown elements and 
properties. This is needed to allow future extensions of the format 
without breaking existing clients.</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>SHOULD</bcp14> be preferred over a lower
priority one, even if the lower priority one is available earlier. Exceptions
apply when a higher priority result is either invalid or outdated, or the
fetch method is less secure. 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. <tt>emailaddress</tt> is Optional)</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>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>
          <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>. Use it
only if it is longer than <tt>%MXBASEDOMAIN%</tt>.</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-test">
        <name>Login test</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 kind of
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. The authentication start URL may be the email hoster, but
it redirects to a corporate server for login, and then back to the hoster.
This allows for setups where the hoster is not allowed to see the
plaintext passwords.</t>
        <t>Showing the URL or hostname allows the end user to verify that he is
logging in at the expected page, e.g. the login server of their company,
instead of the email hoster's page.</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
"Open Profile for Public Clients" or
<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. The server <bcp14>MUST NOT</bcp14>
employ any other methods to block clients that are acting on
behalf of users.</t>
        <t>The specifications also contain requirements for expiry times and
the login page, which are needed for mail client applications to work.</t>
        <t>The OAuth2 scope <bcp14>MUST</bcp14> include all services defined in this config file.
The same refresh and access token <bcp14>MUST</bcp14> be valid for all services defined
in the same config file, including for all URL-based protocols like CalDAV
and all TCP-based protocols like IMAP.</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.
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.</t>
        <t>Nonetheless, the result should be used with care. If such configs are used,
the end user <bcp14>MUST</bcp14> explicitly confirm the config, particularly the resulting
second-level domains. See section "User approval".</t>
      </section>
      <section anchor="http">
        <name>HTTP</name>
        <t>HTTP requests may be intercepted, redirected, or altered at the network level.
See "Risk" above.</t>
        <t>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.</t>
        <t>For that reason, clients <bcp14>MUST</bcp14> prefer HTTPS over HTTP during config retrieval,
within the same retrieval method.</t>
        <t>If such configs from HTTP are used, the end user <bcp14>MUST</bcp14> explicitly confirm 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>IANA will create the following registry in a new registry group called 
"Mail Autoconfig":</t>
      <t>Registry Name: "Autoconfig Protocol Type Names"</t>
      <t>Registration Procedure: Specification Required, per RFC 8126, Section 4</t>
      <t>Designated Expert: The author of this document.</t>
      <t>Table, with fields Type (alphanumeric), Base (either URL or TCP), Name, Specification, and Additional Elements</t>
      <t>Initial registration:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Type</th>
            <th align="left">Base</th>
            <th align="left">Name</th>
            <th align="left">Specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>jmap</tt></td>
            <td align="left">URL</td>
            <td align="left">JMAP</td>
            <td align="left">RFC 8620, RFC 8621, RFC 8887, RFC 9610 et al</td>
          </tr>
          <tr>
            <td align="left">
              <tt>imap</tt></td>
            <td align="left">TCP</td>
            <td align="left">IMAP</td>
            <td align="left">RFC 9051 or RFC 3501, et al</td>
          </tr>
          <tr>
            <td align="left">
              <tt>pop3</tt></td>
            <td align="left">TCP</td>
            <td align="left">POP3</td>
            <td align="left">RFC 1939, RFC 5034</td>
          </tr>
          <tr>
            <td align="left">
              <tt>smtp</tt></td>
            <td align="left">TCP</td>
            <td align="left">SMTP</td>
            <td align="left">RFC 5321, RFC 2822</td>
          </tr>
          <tr>
            <td align="left">
              <tt>caldav</tt></td>
            <td align="left">URL</td>
            <td align="left">CalDAV</td>
            <td align="left">RFC 4791</td>
          </tr>
          <tr>
            <td align="left">
              <tt>carddav</tt></td>
            <td align="left">URL</td>
            <td align="left">CardDav</td>
            <td align="left">RFC 6352</td>
          </tr>
          <tr>
            <td align="left">
              <tt>webdav</tt></td>
            <td align="left">URL</td>
            <td align="left">WebDAV</td>
            <td align="left">RFC 4918</td>
          </tr>
          <tr>
            <td align="left">
              <tt>xmpp</tt></td>
            <td align="left">URL/TCP</td>
            <td align="left">XMPP</td>
            <td align="left">RFC 6120, RFC 6121, RFC 7395</td>
          </tr>
          <tr>
            <td align="left">
              <tt>managesieve</tt></td>
            <td align="left">TCP</td>
            <td align="left">ManageSieve</td>
            <td align="left">RFC 5804, RFC 5228</td>
          </tr>
          <tr>
            <td align="left">
              <tt>ews</tt></td>
            <td align="left">URL</td>
            <td align="left">Exchange Web Services</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">
              <tt>activesync</tt></td>
            <td align="left">URL</td>
            <td align="left">ActiveSync</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">
              <tt>graph</tt></td>
            <td align="left">URL</td>
            <td align="left">Microsoft Graph</td>
            <td align="left"> </td>
          </tr>
        </tbody>
      </table>
      <t>The Additional Elements field is empty in all of the initial values.</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>
  </back>
  <!-- ##markdown-source:
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
CkRaZzsFB4PckMYbLRlttpC59SWK5CySI50KNLdlvvZHc8/AkZDkZB7sYLW3
DeOtaK9kbn2gR18tDbMSz7zNvrL37eJMwhks8r8Gp7MDNbutM76Kab88ar6Q
q9i71hV+yDxCjPoMnK98bW9uZy84exHck9u6IklhLlZjM+Bo8RMXjDh4Ycxb
2xQ1iV8kA/8WETgizuBCTn7fDNwHQhZXuK+BJEL6chJ5IGyC8JClCDgbnx0e
PR26i48fG3OagQ0wks4+4Eh94Wixqp1MZWMJgGDQuDp1NZ6bIXuQFmviF9Ss
zucPh7gwmh5q3I7G+1+/uqI3rzmbfrLrf/UWu+SscPFLCLagJ3Uw4xcoAs6j
BvWyeUD+hQGCF9FI3Urfvnh3p4z3Z1X/Ru1s3IQ+9aNhqvLrj/BLBPXJgf6n
R4+G9teh/nr27Gv59fzp4aMEprEC/eZxv7haVH6d7/b7/NGTQyAYv4+fPDoc
+m7W1fq4txt4aDrdHD4/fi6gPHl0/BhfN6u2Hwi+9Sn++smxndLRs6MjfE0k
v0jvbFHwADUShRN9/fjr54fyTb1wH8Xf1IvT9C785unxEx6Hjrv+cX7KZjvj
PD98hm8+rNadZTvA7P6R/Hx51Z3Z00O7bPRL5/j18fMn6IeOypQEFdhxphGG
LvnFhA08FkPPHj1W/B4dMRTZfTNNIij0l0ukpSkwM+fDi4u1i4DZbMv5NP7m
hF9M6EUS/MffcJm9ac84l/m8rprqpk1+QBP3DTPSng0pe55LBq/W7dbG/Cjz
z3WzWgeqwUbiK3H+D6roSkrbwAAA

-->

</rfc>
