<?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-02" 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-02"/>
    <author fullname="Ben Bucksch">
      <organization>Beonex</organization>
      <address>
        <email>ben.bucksch@beonex.com</email>
      </address>
    </author>
    <date year="2025" month="March" day="20"/>
    <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-autoconfig/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        mailmaint Working Group mailing list (<eref target="mailto:mailmaint@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mailmaint/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mailmaint/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/benbucksch/autoconfig-spec"/>.</t>
    </note>
  </front>
  <middle>
    <?line 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 <bcp14>MUST</bcp14> have the following data format and qualities.</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.</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": Provider 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": Provider 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.
    The provider 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>
          <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>
          <t>The client may derivate from this recommendation, because
* 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
* 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
  there is a problem in the OAuth2 flow with this provider, or
* 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>
          <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>
        </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">Element</th>
              <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">incomingServer</td>
              <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">incomingServer</td>
              <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">incomingServer</td>
              <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">outgoingServer</td>
              <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">calendar</td>
              <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">addressbook</td>
              <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">fileShare</td>
              <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">chatServer</td>
              <td align="left">
                <tt>xmpp</tt></td>
              <td align="left">URL</td>
              <td align="left">XMPP</td>
              <td align="left">RFC 6120, RFC 6121, RFC 7395</td>
            </tr>
            <tr>
              <td align="left">chatServer</td>
              <td align="left">
                <tt>xmpptcp</tt></td>
              <td align="left">TCP</td>
              <td align="left">XMPP</td>
              <td align="left">RFC 6120, RFC 6121</td>
            </tr>
            <tr>
              <td align="left">chatServer</td>
              <td align="left">
                <tt>matrix</tt></td>
              <td align="left">URL</td>
              <td align="left">Matrix</td>
              <td align="left">
                <eref target="https://spec.matrix.org">https://spec.matrix.org</eref></td>
            </tr>
            <tr>
              <td align="left">setupServer</td>
              <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">incomingServer</td>
              <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">incomingServer</td>
              <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">incomingServer</td>
              <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. See the
corresponding section below.</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.
The provider <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 fallback with warning and
confirmation is allowed only 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 later invalid during normal connection, the
client <bcp14>MUST</bcp14> disconnect.</t>
            <t>As an exception, if the problem is that the TLS certificate expired recently,
the client <bcp14>MAY</bcp14> choose to not consider that a failure during normal connection
and <bcp14>MAY</bcp14> 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. This 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. The provider <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.</t>
            <t>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.</t>
            <t>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.</t>
            <t>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.</t>
            <t>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</t>
            <ul spacing="normal">
              <li>
                <t>an unsupported or non-working authentication method or other
systemic failures</t>
              </li>
              <li>
                <t>the client being rejected by the server</t>
              </li>
              <li>
                <t>the user being blocked from login</t>
              </li>
              <li>
                <t>the user authentication failing due to wrong password or username</t>
              </li>
              <li>
                <t>other reasons</t>
              </li>
            </ul>
            <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 merely unknown elements or
properties, the client <bcp14>MUST NOT</bcp14> ignore the file.</t>
        <t>The client <bcp14>SHOULD</bcp14> read 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 required to allow future extensions of the format
without breaking existing clients.</t>
      </section>
    </section>
    <section anchor="config-retrieval-by-mail-clients">
      <name>Config retrieval by 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 <bcp14>SHOULD</bcp14> perform a DNS MX
lookup on the email domain, and retrieve the MX server (incoming SMTP 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. It is important that the user verifies
that he enters the passwords on the right domain.</t>
      </section>
    </section>
    <section anchor="config-publishing-by-mail-providers">
      <name>Config publishing by 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="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="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="oauth2-requirements">
        <name>OAuth2 requirements</name>
        <t>If OAuth2 is used, the provider <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="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>Deployments in the wild 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
the configuration file needs to be secure. A static web server offers better
security. The server software <bcp14>SHOULD</bcp14> be updated regularly and hosted on a
dedicated secure server with all unnecessary services and server features
turned off.</t>
        <t>For the ISPDB, 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>The risk is mitigated to some degree by section "User approval".</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="registration">
        <name>Registration</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>
      </section>
      <section anchor="contents">
        <name>Contents</name>
        <t>Table, with fields Element (alphanumeric), Type (alphanumeric), Base (URL or TCP or URL/TCP), Name, Specification, and Additional Elements</t>
        <t>The registrations need to define:</t>
        <ul spacing="normal">
          <li>
            <t>Element: The XML element wrapping the server section.</t>
          </li>
          <li>
            <t>Type: The <tt>type</tt> property value of the server section.</t>
          </li>
          <li>
            <t>Base: Whether the protocol is URL-based or TCP-based,</t>
          </li>
          <li>
            <t>Name: The commonly used name of the protocol</t>
          </li>
          <li>
            <t>Specification: Which RFCs or document specifies the protocol, and</t>
          </li>
          <li>
            <t>Additional Elements: (Optional) Protocol-specific XML elements and
their meaning.</t>
          </li>
        </ul>
      </section>
      <section anchor="initial-registration">
        <name>Initial registration</name>
        <table>
          <thead>
            <tr>
              <th align="left">Element</th>
              <th align="left">Type</th>
              <th align="left">Base</th>
              <th align="left">Name</th>
              <th align="left">Specification</th>
              <th align="left">Additional Elements</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">incomingServer</td>
              <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>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">incomingServer</td>
              <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>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">incomingServer</td>
              <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>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">outgoingServer</td>
              <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>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">calendar</td>
              <td align="left">
                <tt>caldav</tt></td>
              <td align="left">URL</td>
              <td align="left">CalDAV</td>
              <td align="left">RFC 4791</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">addressbook</td>
              <td align="left">
                <tt>carddav</tt></td>
              <td align="left">URL</td>
              <td align="left">CardDav</td>
              <td align="left">RFC 6352</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">fileShare</td>
              <td align="left">
                <tt>webdav</tt></td>
              <td align="left">URL</td>
              <td align="left">WebDAV</td>
              <td align="left">RFC 4918</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">chatServer</td>
              <td align="left">
                <tt>xmpp</tt></td>
              <td align="left">URL</td>
              <td align="left">XMPP</td>
              <td align="left">RFC 6120, RFC 6121, RFC 7395</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">chatServer</td>
              <td align="left">
                <tt>xmpptcp</tt></td>
              <td align="left">TCP</td>
              <td align="left">XMPP</td>
              <td align="left">RFC 6120, RFC 6121</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">chatServer</td>
              <td align="left">
                <tt>matrix</tt></td>
              <td align="left">URL</td>
              <td align="left">Matrix</td>
              <td align="left">
                <eref target="https://spec.matrix.org">https://spec.matrix.org</eref></td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">setupServer</td>
              <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>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">incomingServer</td>
              <td align="left">
                <tt>ews</tt></td>
              <td align="left">URL</td>
              <td align="left">Exchange Web Services</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">incomingServer</td>
              <td align="left">
                <tt>activeSync</tt></td>
              <td align="left">URL</td>
              <td align="left">ActiveSync</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">incomingServer</td>
              <td align="left">
                <tt>graph</tt></td>
              <td align="left">URL</td>
              <td align="left">Microsoft Graph</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>The Additional Elements field is empty in all of the initial values.</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>
  </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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
yioa7L3442sgITzQ6Mal/wv6QdzPy8MAAA==

-->

</rfc>
