<?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.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mailmaint-autoconfig-07" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="autoconfig">Mail AutoConfig</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mailmaint-autoconfig-07"/>
    <author fullname="Ben Bucksch">
      <organization>Beonex</organization>
      <address>
        <email>ben.bucksch@beonex.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>art</area>
    <workgroup>mailmaint</workgroup>
    <keyword>config</keyword>
    <keyword>configuration</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 110?>

<t>This document describes a protocol that allows client applications to set up mail accounts and related services like calendar, contact and file sync, chat and video conference accounts, using only the email address and password.</t>
      <t>This existing protocol is used by service providers to publish the account configuration, so that client applications can find a working configuration automatically. The configuration is based on an email address, but is not limited to configuring email service.</t>
      <t>The running code and deployments documented here are in some cases no longer in line with security best-practices. Implementers are urged to study the security considerations attentively.</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 118?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Configuring email, calendar and contacts client applications for a given user account at a specific service provider is often a tedious, error-prone and unnerving process. This document describes an automatic configuration protocol, originally defined in 2008 and in wide use since. As of 2026, about 80% of email accounts can be automatically configured using this protocol.</t>
      <t>The protocol works by first determining the domain from the email address, and then querying well-known URLs, which return the configuration parameters in computer-readable form. Failing that, various fallback sources can be applied, including a database of configurations for some major domains. While this protocol was originally conceived for configuring mail clients, it is also used for other kinds of services accessible to the user at the same provider, like calendar, contact and file sync, chat and video conference accounts. This document describes the AutoConfig protocol as it is used in the wild. Some of it, such as falling back to an HTTP URL, is not advisable from a security viewpoint. This document describes the protocol as compatible with running code, and another document will describe a potentially not backwards compatible process following today's best security practices.</t>
    </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="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 format is in <xref target="XML"/>. The MIME type is <tt>text/xml</tt>.</t>
      <t>The sections below define the XML and its meaning. Most sections start
with a concrete example of the elements that they define.</t>
      <section anchor="xml-configuration-file-example">
        <name>XML configuration file example</name>
        <t>The following example shows the syntax of the XML configuration 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>

    <incomingServer type="jmap">
      <url>https://jmap.example.com</url>
      <!-- For "OAuth2", the provider MUST adhere to "OAuth2 server requirements". -->
      <authentication>OAuth2</authentication>
      <authentication system="http">Basic</authentication>
      <username>%EMAILADDRESS%</username>
    </incomingServer>

    <!-- There can be multiple incoming servers,
      and even multiple IMAP server configs.
      The first configuration is the preferred one, but the user or client
      can choose the alternative configs based on their own preferences. -->
    <incomingServer type="imap">
      <hostname>imap.example.com</hostname>
      <port>993</port>
        <!-- One of:
        "plain": no encryption
        "SSL": TLS on TLS-specific port
        "STARTTLS": mandatory upgrade to TLS via STARTTLS -->
      <socketType>SSL</socketType>
        <!-- Common authentication methods for TCP-based protocols:
        "password-cleartext": SASL PLAIN, LOGIN or protocol-native login.
        "password-encrypted": SASL CRAM-MD5, DIGEST-MD5 etc. Not TLS.
        "OAuth2": Provider MUST adhere to section "OAuth2 server requirements".

        Multiple <authentication> elements per server
        configuration are valid. Clients will pick the first
        one that they support. -->
      <authentication>password-cleartext</authentication>
      <username>%EMAILADDRESS%</username>
    </incomingServer>

    <incomingServer type="pop3">
      <hostname>pop.example.com</hostname>
      <port>995</port>
      <socketType>SSL</socketType>
      <authentication>password-cleartext</authentication>
      <username>%EMAILADDRESS%</username>
    </incomingServer>

    <!-- Only for IMAP and POP3 -->
    <outgoingServer type="smtp">
      <hostname>smtp.example.com</hostname>
      <port>587</port>
      <socketType>STARTTLS</socketType>
      <authentication>password-cleartext</authentication>
      <username>%EMAILADDRESS%</username>
    </outgoingServer>

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

    <documentation url="https://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 system="http">Basic</authentication>
    <username>%EMAILADDRESS%</username>
  </addressbook>

  <calendar type="caldav">
    <url>https://calendar.example.com/remote.php/dav</url>
    <authentication system="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>OAuth2</authentication>
    <authentication system="http">Basic</authentication>
    <username>%EMAILADDRESS%</username>
  </fileShare>

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

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

    <!-- OAuth2 configuration for native public client apps.
    Gives e.g. clientID, expiry, and login page.
    The provider MUST adhere to "OAuth2 server requirements". -->
  <oAuth2>
    <issuer>https://login.example.com</issuer>
    <authURL>https://login.example.com/auth</authURL>
    <tokenURL>https://login.example.com/token</tokenURL>
    <scope>IMAP POP3 SMTP CalDAV CardDAV WebDAV offline_access</scope>
    <clientID>open</clientID>
  </oAuth2>

  <clientConfigUpdate url="https://www.example.com/config/mail.xml" />
</clientConfig>
]]></artwork>
        <t>The formal grammar is in appendix <xref format="title" target="relaxng-schema"/>.</t>
      </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 of this protocol: <xref target="AutoConfig1.1"/>. Higher versions are for future specifications.
The client <bcp14>MUST NOT</bcp14> reject a configuration file solely based on the version number, and <bcp14>MUST</bcp14> accept configurations
with an unknown version number that are otherwise adhering to this specification.</t>
        </section>
        <section anchor="emailprovider">
          <name>emailProvider</name>
          <t>Example:</t>
          <artwork><![CDATA[
<emailProvider id="example.com">
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
emailProvider = element emailProvider {
  attribute id { text },
  ( domain | displayName | displayShortName | documentation
  | incomingServer | outgoingServer )* }
]]></artwork>
          <t>Element <tt>&lt;emailProvider&gt;</tt> is within the root element.</t>
          <t>The <tt>id</tt> is a unique string that typically matches the primary domain of the provider. The syntax of the ID is the same as for domain and hostname.</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>Example:</t>
          <artwork><![CDATA[
<domain>example.com</domain>
<domain>example.net</domain>
<domain purpose="mx">example-hosting.com</domain>
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
domain = element domain {
  attribute purpose { text }?,   # the only defined value is "mx"
  text }
]]></artwork>
          <t>The content of the <tt>&lt;domain&gt;</tt> element defines which email addresses this configuration
is valid for. For example, a configuration 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 configuration is
valid for all of these domains. Their order has no meaning - they may be sorted
by number of users, importance to the provider, or alphabetically.</t>
          <t><tt>&lt;domain purpose="mx"&gt;</tt> specifies the domain name of the MX server
of this provider. It is used during the configuration file lookup using MX
server names, as specified in <xref format="title" target="mx"/> <em>MX</em>. If the email address that is to be configured has an MX server that is within the domain given by <tt>&lt;domain purpose="mx"&gt;</tt>, then this configuration is applicable for that email address.
Adding the <tt>purpose</tt> attribute is <bcp14>RECOMMENDED</bcp14>.</t>
        </section>
        <section anchor="displayname-and-displayshortname">
          <name>displayName and displayShortName</name>
          <t>Example:</t>
          <artwork><![CDATA[
<displayName>Google Workspace</displayName>
<displayShortName>GMail</displayShortName>
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
displayName = element displayName { text }
displayShortName = element displayShortName { text }
]]></artwork>
          <t>Both elements may be used to display the provider or account name by the
mail client UI, which therefore has expectations on length and expressiveness.</t>
          <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 should be no
longer than 30 characters, to be meaningful to the user and to fit in
the UI fields.</t>
          <t>The <tt>&lt;displayShortName&gt;</tt> element contains the name of the provider, as
typically used by end users. It should be no longer than 12
characters. It may be used by the mail client as base for the account name,
and during everyday use of the app to represent the account, so it
should be short, distinctive and represent the provider in the way
end users refer and think of it.</t>
          <t>The mail client might concatenate either value with the email address,
so these values should not be the email address.</t>
        </section>
        <section anchor="documentation">
          <name>documentation</name>
          <t>Example:</t>
          <artwork><![CDATA[
<documentation url="https://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>RELAX NG:</t>
          <artwork><![CDATA[
documentation = element documentation {
  attribute url { text },
  descr* }
descr = element descr {
  attribute lang { text }?,   # 2-letter ISO language code
  text }
]]></artwork>
          <t>This is purely informational and not required for the automatic setup.</t>
          <t>This element contains the end-user help webpage at the provider that describes the mail
server settings. The configuration may be based on that page, but does not
necessarily have to match it, e.g. when a better configuration is available
than the one described on the webpage.</t>
          <t>The <tt>url</tt> attribute 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> attributes are
allowed, whereby the <tt>lang</tt> attribute contains the 2-letter ISO language
code, like the HTML <tt>lang</tt> attribute.</t>
        </section>
        <section anchor="oauth2">
          <name>oAuth2</name>
          <t>Example:</t>
          <artwork><![CDATA[
<oAuth2>
  <issuer>https://login.example.com</issuer>
  <authURL>https://login.example.com/auth</authURL>
  <tokenURL>https://login.example.com/token</tokenURL>
  <scope>IMAP POP3 SMTP CalDAV CardDAV WebDAV offline_access</scope>
  <clientID>open</clientID>
</oAuth2>
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
oAuth2 = element oAuth2 {
  ( authURL | tokenURL | issuer | scope | clientID | clientSecret )* }

authURL      = element authURL      { text }
tokenURL     = element tokenURL     { text }
issuer       = element issuer       { text }
scope        = element scope        { text }
clientID     = element clientID     { text }
clientSecret = element clientSecret { text }
]]></artwork>
          <t>Element <tt>&lt;oAuth2&gt;</tt> is within the root element.</t>
          <t>It contains all necessary information to find and contact the OAuth2 authentication server
to get an auth token, which can be used to log in directly to the servers marked with</t>
          <artwork><![CDATA[
<authentication>OAuth2</authentication>
]]></artwork>
          <t>See <xref format="title" target="oauth2-server"/> and <xref format="title" target="oauth2-client"/>.</t>
        </section>
      </section>
      <section anchor="server-sections">
        <name>Server sections</name>
        <t><tt>&lt;incomingServer type="jmap"&gt;</tt>, <tt>&lt;calendar type="caldav"&gt;</tt> etc.</t>
        <t>RELAX NG:</t>
        <artwork><![CDATA[
serverSection =
  attribute type { text },   # see the IANA registry
  ( url | hostname | port | socketType | authentication
  | username )*

incomingServer  = element incomingServer  { serverSection }
outgoingServer  = element outgoingServer  { serverSection }
calendar        = element calendar        { serverSection }
addressbook     = element addressbook     { serverSection }
fileShare       = element fileShare       { serverSection }
chatServer      = element chatServer      { serverSection }
videoConference = element videoConference { serverSection }
setupServer     = element setupServer     { serverSection }
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>The <tt>type</tt> attribute specifies the wire protocol that this server uses. See
<xref format="title" target="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>, <tt>&lt;videoConference&gt;</tt> and <tt>&lt;setupServer&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> (notwithstanding 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 configuration file.
In this case, they are listed in the order of preference by the configuration provider.
The client should pick the first configuration that matches the client's requirements.</t>
          <t>The client may choose a different order or ignore some configurations, because</t>
          <ul spacing="normal">
            <li>
              <t>the client doesn't support a higher-priority protocol, e.g. a JMAP
configuration 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 configuration 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</t>
            </li>
            <li>
              <t>the client has a specific policy to prefer another configuration,
e.g. a STARTTLS configuration is listed before a direct TLS configuration, and
the client has a policy of preferring direct TLS, or likewise
the client prefers IMAP over POP3.</t>
            </li>
          </ul>
          <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 configuration found.</t>
        </section>
        <section anchor="type">
          <name>type</name>
          <t>The <tt>type</tt> attribute 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">
                  <xref target="JMAP-Core"/>, <xref target="JMAP-Mail"/>, <xref target="JMAP-WebSocket"/>, <xref target="JMAP-Contacts"/> 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">
                  <xref target="IMAP4rev2"/> or <xref target="IMAP4rev1"/>, 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">
                  <xref target="POP3"/>, <xref target="POP3-SASL"/></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">
                  <xref target="SMTP"/>, <xref target="EMail"/></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">
                  <xref target="CalDAV"/></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">
                  <xref target="CardDAV"/></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">
                  <xref target="WebDAV"/></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">
                  <xref target="XMPP"/>, <xref target="XMPP-IM"/>, <xref target="XMPP-WebSocket"/></td>
              </tr>
              <tr>
                <td align="left">chatServer</td>
                <td align="left">
                  <tt>xmpp-tcp</tt></td>
                <td align="left">TCP</td>
                <td align="left">XMPP</td>
                <td align="left">
                  <xref target="XMPP"/>, <xref target="XMPP-IM"/></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">
                  <xref target="Matrix"/></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">
                  <xref target="ManageSieve"/>, <xref target="Sieve"/></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>
      <section anchor="url-based-protocols">
        <name>URL-based protocols</name>
        <artwork><![CDATA[
<incomingServer type="jmap">
  <url>https://jmap.example.com/session</url>
  <authentication system="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>Example:</t>
          <artwork><![CDATA[
<url>https://jmap.example.com/session</url>
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
url = element url { text }
]]></artwork>
          <t>The content of the <tt>&lt;url&gt;</tt> element contains the <xref target="URL"/> where to contact the server.</t>
          <t>The URL scheme will normally be HTTPS and the URL starts with <tt>https://</tt> (<xref section="4.2.2" sectionFormat="comma" target="HTTP"/>).
Some protocols may use other schemes, e.g. WebSockets <tt>wss://</tt> (<xref section="3" sectionFormat="comma" target="WebSocket"/>).</t>
        </section>
        <section anchor="authentication-for-url">
          <name>authentication</name>
          <t>Examples:</t>
          <artwork><![CDATA[
<authentication>OAuth2</authentication>
<authentication system="http">Basic</authentication>
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
authentication = element authentication {
  attribute system { text }?,   # "http" or "sasl"
  text }
]]></artwork>
          <t>The content of the <tt>&lt;authentication&gt;</tt> element defines which HTTP
authentication method to use. The <tt>system="http"</tt> attribute
signals that the value refers to a <tt>WWW-Authenticate</tt> mechanism.</t>
          <ul spacing="normal">
            <li>
              <t><tt>Basic</tt>: Authenticate to the HTTP server using
<tt>WWW-Authenticate: Basic</tt>. See <xref target="HTTP-Basic-Auth"/>.</t>
            </li>
            <li>
              <t><tt>Digest</tt>: Authenticate to the HTTP server using
<tt>WWW-Authenticate: Digest</tt>. See <xref target="HTTP-Digest-Auth"/></t>
            </li>
            <li>
              <t><tt>NTLM</tt>: Legacy Windows login mechanisms NTLM or NTLMv2,
potentially with a <tt>Negotiate</tt> before.</t>
            </li>
            <li>
              <t><tt>OAuth2</tt>: Authenticate to the HTTP server using
<tt>WWW-Authenticate: Bearer</tt>. See <xref section="3" sectionFormat="comma" target="OAuth2"/>.
The provider <bcp14>MUST</bcp14> adhere to the requirements defined in <xref format="title" target="oauth2-server"/>.</t>
            </li>
          </ul>
          <t>Note: The XML element for OAuth2 is
<tt>&lt;authentication&gt;OAuth2&lt;/authentication&gt;</tt> without system attribute.
<tt>&lt;authentication system="http"&gt;Bearer&lt;/authentication&gt;</tt> is invalid.</t>
          <t>The rules as specified in <xref format="title" target="auth-alternatives"/> and <xref format="title" target="auth-verification"/> apply here as well.</t>
        </section>
        <section anchor="username-for-url">
          <name>username</name>
          <t>Examples (alternatives):</t>
          <artwork><![CDATA[
<username>%EMAILADDRESS%</username>
<username>fred</username>
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
username = element username { text }
]]></artwork>
          <t>The username to use for the authentication method.</t>
          <t>Placeholders <bcp14>MUST</bcp14> be replaced before using the actual value. See <xref format="title" target="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>Example:</t>
          <artwork><![CDATA[
<hostname>imap.example.com</hostname>
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
hostname = element hostname { text }
]]></artwork>
          <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>Example:</t>
          <artwork><![CDATA[
<port>993</port>
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
port = element port { xsd:positiveInteger }   # TCP port, 1-65535
]]></artwork>
          <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>Example:</t>
          <artwork><![CDATA[
<socketType>SSL</socketType>
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
socketType = element socketType { text }
]]></artwork>
          <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
<xref target="TLSv1.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
<xref target="STARTTLS"/>. 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 configuration. 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-for-tcp">
          <name>authentication</name>
          <t>Example:</t>
          <artwork><![CDATA[
<authentication>password-cleartext</authentication>
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
authentication = element authentication {
  attribute system { text }?,   # "http" or "sasl"
  text }
]]></artwork>
          <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> <xref target="CRAM-MD5"/>,
<tt>DIGEST-MD5</tt> <xref target="DIGEST-MD5"/>,
<tt>SCRAM-SHA-256-PLUS</tt> <xref target="SCRAM"/>, and successors.
TLS by itself does not qualify as <tt>password-encrypted</tt>.</t>
            </li>
            <li>
              <t><tt>NTLM</tt>: Legacy Windows login mechanisms NTLM or NTLMv2.</t>
            </li>
            <li>
              <t><tt>GSSAPI</tt>: <xref target="Kerberos"/> or <xref target="GSSAPI"/>,
 a single sign-on 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 or confirm it. Uses SASL <tt>EXTERNAL</tt> scheme <xref target="SASL"/>, Appendix A.</t>
            </li>
            <li>
              <t><tt>OAuth2</tt>: SASL <tt>OAUTHBEARER</tt> <xref target="SASL-OAuth2"/> (current) or
<tt>XOAUTH2</tt> (deprecated) or successors.
The provider <bcp14>MUST</bcp14> adhere to the requirements defined in <xref format="title" target="oauth2-server"/>.</t>
            </li>
            <li>
              <t><tt>client-IP-address</tt>: The 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>Example:</t>
            <artwork><![CDATA[
<authentication system="sasl">SCRAM-SHA-256-PLUS</authentication>
]]></artwork>
            <t>A specific SASL scheme <xref target="SASL"/> <bcp14>MAY</bcp14> be specified using
the specific SASL authentication scheme name, e.g.
<tt>SCRAM-SHA-256-PLUS</tt> <xref target="SCRAM"/>. To signal that, the
<tt>&lt;authentication&gt;</tt> element <bcp14>MUST</bcp14> have the <tt>system</tt> attribute set
to value <tt>sasl</tt>, i.e. <tt>&lt;authentication system="sasl"&gt;</tt>.</t>
            <t>In such a case, the server configuration section should also
specify a more generic authentication mechanism as a lower priority
alternative. Clients that support the specific authentication
mechanism will use that, and other clients will use the more generic
authentication mechanism. Without such fallback, the latter clients would fail.</t>
          </section>
          <section anchor="auth-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="auth-verification">
            <name>Authentication verification and fallback</name>
            <t>The client should 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. For example, if the authentication
method itself failed, or the error code indicates a systemic failure,
the client should 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 should 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 authentication succeeded, the client <bcp14>MUST</bcp14> remember the
working configuration and use that for all subsequent connections,
until an explicit reconfiguration occurs. During normal everyday operation,
the client <bcp14>SHOULD NOT</bcp14> fall back nor attempt multiple different authentication
methods. See <xref format="title" target="configuration-updates"/> for the reasons.</t>
          </section>
        </section>
        <section anchor="username-for-tcp">
          <name>username</name>
          <t>Examples (alternatives):</t>
          <artwork><![CDATA[
<username>%EMAILADDRESS%</username>
<username>fred</username>
]]></artwork>
          <t>RELAX NG:</t>
          <artwork><![CDATA[
username = element username { text }
]]></artwork>
          <t>The username to use for the authentication method.</t>
          <t>Placeholders <bcp14>MUST</bcp14> be replaced before using the actual value. See next <xref format="title" target="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">Email 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 email 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 email 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>If the XML syntax is invalid, the client <bcp14>MUST</bcp14> ignore the entire file.
In contrast, if there are merely unknown elements or
attributes, the client <bcp14>MUST NOT</bcp14> ignore the file.</t>
        <t>The client <bcp14>MUST</bcp14> disregard those elements, attributes and values that it does not
support. The presence of unknown elements, attributes or values <bcp14>MUST NOT</bcp14> result
in an error. Instead, they are simply ignored and treated as if they don't
exist. Compare the rules for <tt>&lt;authentication&gt;</tt> elements in <xref format="title" target="auth-alternatives"/>. If a
server section then becomes invalid due to missing information, only that server section
is ignored and the other server sections will still be processed. Only if no valid
configuration is found in the document, the document as a whole is ignored, but other
retrieval mechanisms might produce a different document with a valid configuration.</t>
        <t>This allows future extensions of the format without breaking existing clients.</t>
        <t>The <xref format="title" target="relaxng-schema"/> is written to
follow these rules: it accepts unknown elements, attributes,
attribute values and element values, so that a validator does not reject a
document merely because it uses extensions not defined here.</t>
      </section>
    </section>
    <section anchor="retrieval">
      <name>Configuration 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 priority result that is available should 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,
e.g. it doesn't work anymore, or the fetch method is less secure,
according to the client's assessment. 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> <bcp14>SHALL</bcp14> be replaced with the email address
that the user entered and wishes to use, and <tt>%EMAILDOMAIN%</tt> <bcp14>SHALL</bcp14> be replaced
with the email domain extracted from the email address. For example, for
<tt>fred@example.com</tt>, the email domain is <tt>example.com</tt>, and for
<tt>fred@test.cs.example.net</tt>, the email domain is <tt>test.cs.example.net</tt>.</t>
      <t>For full support of this specification in clients, all "Required" and "Recommended"
mechanisms <bcp14>MUST</bcp14> be implemented and working. For partial support of this
specification in clients, all "Required" mechanisms <bcp14>MUST</bcp14> be implemented and working, and
in this case, the implementor <bcp14>SHALL</bcp14> make explicit when advertising or referring
to AutoConfig that there is only partial support of this specification.</t>
      <t>In servers, at least URL 1.1. <bcp14>MUST</bcp14> be implemented and working.
If the email address parameter is not passed by the client, the server <bcp14>MUST</bcp14> return a
configuration that works for all accounts or at least for a large part of accounts.</t>
      <section anchor="mail-provider">
        <name>Mail provider</name>
        <t>The 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%/.well-known/client-autoconfig.xml?emailaddress=%EMAILADDRESS%</tt> (Required)</t>
          </li>
          <li>
            <t>1.2. <tt>https://autoconfig.%EMAILDOMAIN%/mail/config-v1.1.xml?emailaddress=%EMAILADDRESS%</tt> (Deprecated, but deployed)</t>
          </li>
          <li>
            <t>1.3. <tt>https://%EMAILDOMAIN%/.well-known/autoconfig/mail/config-v1.1.xml</tt> (Deprecated, but deployed)</t>
          </li>
          <li>
            <t>1.4. <tt>http://autoconfig.%EMAILDOMAIN%/mail/config-v1.1.xml</tt> (Deprecated, but deployed)</t>
          </li>
        </ul>
        <t>The <tt>emailaddress</tt> URL parameter is Optional.</t>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>1.1. <tt>https://autoconfig.example.com/.well-known/client-autoconfig.xml?emailaddress=fred@example.com</tt></t>
          </li>
          <li>
            <t>1.2. <tt>https://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</tt></t>
          </li>
          <li>
            <t>1.3. <tt>https://example.com/.well-known/autoconfig/mail/config-v1.1.xml</tt></t>
          </li>
          <li>
            <t>1.4. <tt>http://autoconfig.example.com/mail/config-v1.1.xml</tt></t>
          </li>
        </ul>
        <section anchor="explanations-for-the-urls">
          <name>Explanations for the URLs</name>
          <t>URL 1.1. follows <xref target="RFC8615"/> for well-known URLs. Servers adhering to this version of the specification
<bcp14>MUST</bcp14> support URL 1.1 and <bcp14>MUST</bcp14> have a valid TLS certificate for that hostname.</t>
          <t>URLs 1.2., 1.3. and 1.4. were used in the original protocol from around 2008, before <xref target="RFC8615"/>
and predecessors existed.</t>
          <t>URL 1.4. is used by many current deployments, particularly email hosting companies that
use DNS CNAME to redirect the customer email domain to a central provider AutoConfig server,
which has a TLS certificate only for the provider domain and not every customer domain.
Although HTTP is insecure, a large number of existing domains use it at the time of this writing,
and ignoring it may lead to no result for many domains. Implementors need to balance this risk
with the alternatives like guessing hostnames or users searching the Internet.
<xref format="title" target="security"/> contains more detail on what an implementor needs to consider.</t>
        </section>
        <section anchor="email-address-parameter">
          <name>Customizing the configuration 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.</t>
          <t>For example, a global company might want to locate the mailbox geographically
close to the user, in the same country or even in the same office building.</t>
          <t>However, while the protocol allows for such heterogeneous 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 <xref target="placeholders"/>).
However, this method is discouraged. Instead, the email server login should
accept email addresses as username, and do the mapping to internal
usernames at login time, which avoids the need for the client to know a
different username.</t>
          <t>AutoConfig servers that customize the returned configuration file to the
email address should prevent email addresses from being tested for validity
by hostile parties like spammers or attackers.</t>
          <t>Returning an error or a fake configuration for non-existing email addresses would
allow the attacker to differentiate valid email addresses.
A mitigation is to answer requests for non-existing email addresses with a random
configuration from the set of valid configurations.</t>
          <t>A static configuration that works for all users is the preferred deployment method.</t>
        </section>
      </section>
      <section anchor="ispdb">
        <name>Central database</name>
        <t>The ISPDB (Internet service provider database)
is a central database that contains the configurations for large mail providers.</t>
        <t>This is a useful fallback that allows mail clients to support mail providers
which do not host a configuration server described in the previous step.
This step is often necessary to find a working configuration for many
email accounts.</t>
        <t>The mail client application chooses the mail configuration database provider. A
public mail configuration 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 performs a DNS MX
lookup on the email domain, and retrieves the MX server (incoming SMTP server)
for that domain. Only the highest priority MX hostname is considered. From
that MX hostname, two 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 Suffix List</eref> or a similarly suited method,
to correctly handle domains like <tt>.co.uk</tt> and <tt>.com.au</tt>.</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 <tt>mx.example.com</tt>, the MXFULLDOMAIN and MXBASEDOMAIN are both
<tt>example.com</tt>.</t>
          </li>
          <li>
            <t>For <tt>mx.example.co.uk</tt>, the MXFULLDOMAIN and MXBASEDOMAIN are both
<tt>example.co.uk</tt>.</t>
          </li>
          <li>
            <t>For <tt>mx.premium.europe.example.com</tt>, the MXFULLDOMAIN is
<tt>premium.europe.example.com</tt> and the MXBASEDOMAIN is <tt>example.com</tt>.</t>
          </li>
        </ul>
        <t>Then, attempt to retrieve the configuration for these MX domains, using the previous
methods, starting with:</t>
        <ul spacing="normal">
          <li>
            <t>3.1. <tt>https://autoconfig.%MXFULLDOMAIN%/.well-known/client-autoconfig.xml?emailaddress=%EMAILADDRESS%</tt> (Required)</t>
          </li>
          <li>
            <t>3.2. <tt>https://autoconfig.%MXBASEDOMAIN%/.well-known/client-autoconfig.xml?emailaddress=%EMAILADDRESS%</tt> (Recommended)</t>
          </li>
          <li>
            <t>3.3. <tt>https://autoconfig.%MXFULLDOMAIN%/mail/config-v1.1.xml?emailaddress=%EMAILADDRESS%</tt> (Deprecated, but deployed)</t>
          </li>
          <li>
            <t>3.4. <tt>https://autoconfig.%MXBASEDOMAIN%/mail/config-v1.1.xml?emailaddress=%EMAILADDRESS%</tt> (Deprecated, but deployed)</t>
          </li>
          <li>
            <t>3.5. <tt>%ISPDB%%MXFULLDOMAIN%</tt> (Recommended)</t>
          </li>
          <li>
            <t>3.6. <tt>%ISPDB%%MXBASEDOMAIN%</tt> (Recommended)</t>
          </li>
        </ul>
        <t>The <tt>emailaddress</tt> URL parameter is Optional.</t>
        <t>For example:</t>
        <ul spacing="normal">
          <li>
            <t>3.1. <tt>https://autoconfig.premium.europe.example.com/.well-known/client-autoconfig.xml?emailaddress=fred@example.com</tt></t>
          </li>
          <li>
            <t>3.2. <tt>https://autoconfig.example.com/.well-known/client-autoconfig.xml?emailaddress=fred@example.com</tt></t>
          </li>
          <li>
            <t>3.3. <tt>https://autoconfig.premium.europe.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</tt></t>
          </li>
          <li>
            <t>3.4. <tt>https://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</tt></t>
          </li>
          <li>
            <t>3.5. <tt>https://v1.ispdb.net/premium.europe.example.com</tt></t>
          </li>
          <li>
            <t>3.6. <tt>https://v1.ispdb.net/example.com</tt></t>
          </li>
        </ul>
      </section>
      <section anchor="disk">
        <name>Local disk</name>
        <t>For testing purposes, a mail client 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 the mail client 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. <tt>/home/fred/.config/acmemailapp/isp/example.com.xml</tt></t>
          </li>
          <li>
            <t>4.2. <tt>/opt/acmemailapp/isp/example.com.xml</tt></t>
          </li>
        </ul>
      </section>
      <section anchor="other-mechanisms">
        <name>Other mechanisms</name>
        <t>A mail client may want to implement other mechanisms to find a configuration, for
example Exchange AutoDiscover, DNS-SRV <xref target="RFC6186"/>,
or heuristic guessing. If the mail client
implements 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 <xref format="title" target="security"/>.</t>
      </section>
      <section anchor="manual">
        <name>Manual configuration</name>
        <t>If the above mechanisms fail to provide a working configuration, or if the
user explicitly chooses so, the mail client should give the end user the ability to
manually enter a configuration, and use that configuration to configure the
account.</t>
      </section>
    </section>
    <section anchor="configuration-validation">
      <name>Configuration validation</name>
      <section anchor="user-approval">
        <name>User approval</name>
        <t>Independent of the mechanisms used to find the configuration, before using
that configuration, the mail client <bcp14>SHOULD</bcp14> display that configuration to the end user and
let him confirm it. This is an important <xref target="security">security precaution</xref>,
a client not asking for user approval needs to consider all security properties.</t>
        <t>When displaying the configuration for approval:</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>To avoid spoofing, the client <bcp14>MUST NOT</bcp14> cut off parts of long
second-level domains. At least 63 characters <bcp14>MUST</bcp14> be displayed.</t>
          </li>
          <li>
            <t>Care should 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, the mail client should 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="auth-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,
the mail client <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 to be at the
expected page while logging in, e.g. the login server of their company,
instead of the email hoster's page. It is important that the user verifies
to enter the password on the right domain.</t>
      </section>
      <section anchor="oauth2-client">
        <name>OAuth2 client requirements</name>
        <t>The client can decide whether to</t>
        <ul spacing="normal">
          <li>
            <t>use the <tt>&lt;issuer&gt;</tt> to fetch the OAuth2 server metadata using <xref target="RFC8414"/>
(e.g. <tt>&lt;issuer&gt;/.well-known/oauth-authorization-server</tt>, see spec for issuer with path) or
<xref target="OpenIDConnect">OpenID Connect Discovery</xref> (e.g. <tt>&lt;issuer&gt;/.well-known/openid-configuration</tt>)
and get the <tt>authorization_endpoint</tt> and <tt>token_endpoint</tt> values and
other parameters from that JSON document,
and compare the <tt>issuer</tt> value as specified by <xref target="RFC8414"/>, or</t>
          </li>
          <li>
            <t>use the <tt>&lt;authURL&gt;</tt> and <tt>&lt;tokenURL&gt;</tt> from this AutoConfig document, or</t>
          </li>
          <li>
            <t>combine both methods and verify that the URLs match.</t>
          </li>
        </ul>
        <t>Not all OAuth2 servers publish the metadata according to <xref target="RFC8414"/> or
<xref target="OpenIDConnect">OpenID Connect Discovery</xref>.</t>
        <t>Particular care must be taken when <tt>authURL</tt> and <tt>tokenURL</tt> are on different hostnames,
because it means that a user might be logging in at the correct login page, the app
gets the auth code from the real auth server, and then sends the working auth code
to the <tt>tokenURL</tt> server run by an attacker.
The client application must handle this case with particular caution,
e.g. by warning the user or aborting.
Currently, one large mail provider uses such a split configuration,
which could be worked around by hardcoding a whitelist or other methods.</t>
        <t>Either way, the client <bcp14>MUST</bcp14> check whether both the <tt>authURL</tt> and the <tt>tokenURL</tt>
match either the email address domain or the server domain,
and if not, <bcp14>MUST</bcp14> show that OAuth2 domain to the end user while the end user
<xref target="user-approval">approves the servers</xref>, or alternatively abort the process.</t>
      </section>
    </section>
    <section anchor="mail-provider-publish">
      <name>Configuration 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>MUST</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="single-domain">
        <name>Configuration location for a single domain</name>
        <t>The configuration file should be published at the URL for
step 1.1., i.e.</t>
        <ul spacing="normal">
          <li>
            <t><tt>https://autoconfig.%EMAILDOMAIN%/.well-known/client-autoconfig.xml</tt></t>
          </li>
        </ul>
        <t>e.g. for <tt>fred@example.com</tt></t>
        <ul spacing="normal">
          <li>
            <t><tt>https://autoconfig.example.com/.well-known/client-autoconfig.xml</tt></t>
          </li>
        </ul>
      </section>
      <section anchor="hoster">
        <name>Configuration location for domain hosters</name>
        <t>For mail providers which host entire domains for their business
customers, the same URL 1.1., as listed in the previous section, is
recommended.</t>
        <t>If that URL is not used, the configuration file should be published at
the locations for step 3.1. and 3.2., i.e.</t>
        <ul spacing="normal">
          <li>
            <t><tt>https://autoconfig.%MXFULLDOMAIN%/.well-known/client-autoconfig.xml</tt></t>
          </li>
          <li>
            <t><tt>https://autoconfig.%MXBASEDOMAIN%/.well-known/client-autoconfig.xml</tt></t>
          </li>
        </ul>
        <t>For example, if the MX server for customer domain example.net is
<tt>mx.premium.europe.example.com</tt>, then the configuration file should be at both</t>
        <ul spacing="normal">
          <li>
            <t><tt>https://autoconfig.premium.europe.example.com/.well-known/client-autoconfig.xml</tt></t>
          </li>
          <li>
            <t><tt>https://autoconfig.example.com/.well-known/client-autoconfig.xml</tt></t>
          </li>
        </ul>
        <t>If the MX server hostname is directly in the email domain, e.g. <tt>mail.example.com</tt>,
then URL 3.1 would of course be the same URL as 3.2.</t>
      </section>
      <section anchor="no-authentication-for-configuration">
        <name>No authentication for configuration</name>
        <t>Any of the above URLs for retrieving the configuration file <bcp14>MUST NOT</bcp14>
require authentication, but <bcp14>MUST</bcp14> be public.</t>
        <t>This is because the configuration information in the AutoConfig file
includes the authentication method. Without the AutoConfig file,
the client does not know which authentication method is required and
which username form to use
(e.g. username <tt>fred</tt> or <tt>fred@example.com</tt> or <tt>fred\EXAMPLE</tt>).
Given that this information is required for authentication,
the AutoConfig file itself cannot require authentication.</t>
      </section>
      <section anchor="oauth2-server">
        <name>OAuth2 server requirements</name>
        <t>If OAuth2 is used, the OAuth2 server <bcp14>MUST</bcp14> adhere to the <xref target="OAuth2Client"/> specification,
including all <bcp14>SHOULD</bcp14> requirements. However, given that</t>
        <ul spacing="normal">
          <li>
            <t>authURL</t>
          </li>
          <li>
            <t>tokenURL</t>
          </li>
          <li>
            <t>client ID</t>
          </li>
          <li>
            <t>scope</t>
          </li>
        </ul>
        <t>are provided in the AutoConfig response, the steps "Fetching the Authorization Server Metadata"
and "Dynamic Client Registration" as well as scope names <bcp14>MAY</bcp14> be skipped in favor of
the values in the AutoConfig response.
What stays in force from <xref target="OAuth2Client"/> are the remaining guarantees in the
<xref target="OAuth2Client"/> specification that the OAuth2 server gives to the mail client,
including refresh token validity times.</t>
        <t>The provider <bcp14>MUST</bcp14> allow any client application that acts on behalf of the end
user who the mailbox is for.
Failure to do so implies a cartel or monopolistic behavior to lock out
competing email applications from fulfilling their purpose on behalf of
end users, which may be contrary to laws in multiple countries.</t>
        <t>The OAuth2 server <bcp14>MUST</bcp14></t>
        <ul spacing="normal">
          <li>
            <t>accept the client ID that is given in the configuration file, or if that is not given,</t>
          </li>
          <li>
            <t>implement Dynamic Client Registration <xref target="RFC7591"/> or <xref target="CMID"/> in the way
as defined by <xref target="OAuth2Client"/> and accept the resulting Client ID,</t>
          </li>
        </ul>
        <t>without client secret. It <bcp14>MAY</bcp14> support multiple of those methods.</t>
        <t>The server <bcp14>MUST NOT</bcp14> employ any methods at any point to block or hinder
client applications that are acting on behalf of end users.</t>
        <t>The specifications above contain requirements for expiry times and
the login page, which are needed for mail client applications to work,
and <bcp14>MUST</bcp14> be followed.</t>
        <t>The OAuth2 scope <bcp14>MUST</bcp14> include all services defined in this configuration file,
so that a single user login is sufficient for all services.
The resulting refresh and access tokens <bcp14>MUST</bcp14> be valid for all services defined
in the configuration file, including for all URL-based protocols like CalDAV
and all TCP-based protocols like IMAP.</t>
      </section>
    </section>
    <section anchor="security">
      <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 administrative 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. <xref format="title" target="sec-http"/> or <xref format="title" target="dnssrv"/>,
should be considered insecure.
This also applies to the <xref format="title" target="mx"/> lookup and the HTTPS calls that are based on its
results.</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 configuration, particularly the resulting
second-level domains. See <xref format="title" target="user-approval"/>.</t>
      </section>
      <section anchor="sec-http">
        <name>HTTP</name>
        <t>HTTP requests may be intercepted, redirected, or altered at the network level. See <xref format="title" target="risk"/> above.
Even if an http: URL redirects to an https: URL, that is still insecure.</t>
        <t>For that reason, clients <bcp14>MUST</bcp14> prefer HTTPS (URLs 1.1. to 1.3.) over HTTP (URL 1.4.)
during configuration retrieval, within the same retrieval method.</t>
        <t>If such configs from HTTP are used, the end user <bcp14>MUST</bcp14> explicitly confirm the
configuration, particularly the resulting second-level domains.
See <xref format="title" target="user-approval"/>.</t>
        <t>As mentioned <xref target="dns">above</xref>, <xref format="title" target="dnssrv"/> suffers from similar weaknesses.</t>
      </section>
      <section anchor="configuration-updates">
        <name>Configuration 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 should still
approve configuration 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 should be updated regularly and hosted on a
dedicated secure server with all unnecessary services and server features
turned off.</t>
      </section>
      <section anchor="ispdb-security">
        <name>ISPDB</name>
        <t>For the <xref format="title" target="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 authoritative 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 <xref format="title" target="user-approval"/>.</t>
      </section>
      <section anchor="user-testing">
        <name>User testing with emailaddress</name>
        <t>If the provider returns different configurations based on the <tt>emailaddress</tt>
parameter of the URL, then attackers can find out whether a given email address is valid.
See <xref target="email-address-parameter"/> for mitigations.
It is recommended to return the same configuration for all users, which avoids this problem.</t>
      </section>
      <section anchor="rate-limits">
        <name>Rate-limits</name>
        <t>If rate-limits are used, the limits should be high enough
for at least 100 requests per minute from the same client,
given that normal clients routinely make 10 or more requests at once, and
might repeat that process multiple times after user mistakes or configuration errors.</t>
        <t>A static configuration file served by a static web server is recommended.</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 <xref section="4.6" sectionFormat="comma" target="RFC8126"/></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> attribute 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 5322</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>xmpp-tcp</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>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="OAuth2Client" target="https://datatracker.ietf.org/doc/draft-ietf-mailmaint-oauth-public/">
          <front>
            <title>OAuth Profile for Open Public Clients</title>
            <author initials="N." surname="Jenkins" fullname="Neil Jenkins">
              <organization>Fastmail</organization>
            </author>
            <author initials="B." surname="Bucksch" fullname="Ben Bucksch">
              <organization>Beonex</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="CMID" target="https://datatracker.ietf.org/doc/draft-ietf-oauth-client-id-metadata-document/">
          <front>
            <title>OAuth Client ID Metadata Document</title>
            <author initials="A." surname="Parecki" fullname="Aaron Parecki">
              <organization>Okta</organization>
            </author>
            <author initials="E." surname="Smith" fullname="Emelia Smith">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="OpenIDConnect" target="https://openid.net/specs/openid-connect-discovery-1_0.html">
          <front>
            <title>OpenID Connect Discovery</title>
            <author initials="N." surname="Sakimura" fullname="Nat Sakimura">
              <organization>NAT.Consulting</organization>
            </author>
            <author initials="J." surname="Bradley" fullname="John Bradley">
              <organization>Yubico</organization>
            </author>
            <author initials="M." surname="Jones" fullname="Michael B. Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author initials="E." surname="Jay" fullname="Edmund Jay">
              <organization>Illumila</organization>
            </author>
            <date year="2023" month="December" day="15"/>
          </front>
        </reference>
        <reference anchor="Matrix" target="https://spec.matrix.org">
          <front>
            <title>Matrix protocol specification</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <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>
        <reference anchor="JMAP-Core">
          <front>
            <title>The JSON Meta Application Protocol (JMAP)</title>
            <author fullname="N. Jenkins" initials="N." surname="Jenkins"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document specifies a protocol for clients to efficiently query, fetch, and modify JSON-based data objects, with support for push notification of changes and fast resynchronisation and for out-of- band binary data upload/download.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8620"/>
          <seriesInfo name="DOI" value="10.17487/RFC8620"/>
        </reference>
        <reference anchor="JMAP-Mail">
          <front>
            <title>The JSON Meta Application Protocol (JMAP) for Mail</title>
            <author fullname="N. Jenkins" initials="N." surname="Jenkins"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>This document specifies a data model for synchronising email data with a server using the JSON Meta Application Protocol (JMAP). Clients can use this to efficiently search, access, organise, and send messages, and to get push notifications for fast resynchronisation when new messages are delivered or a change is made in another client.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8621"/>
          <seriesInfo name="DOI" value="10.17487/RFC8621"/>
        </reference>
        <reference anchor="JMAP-WebSocket">
          <front>
            <title>A JSON Meta Application Protocol (JMAP) Subprotocol for WebSocket</title>
            <author fullname="K. Murchison" initials="K." surname="Murchison"/>
            <date month="August" year="2020"/>
            <abstract>
              <t>This document defines a binding for the JSON Meta Application Protocol (JMAP) over a WebSocket transport layer. The WebSocket binding for JMAP provides higher performance than the current HTTP binding for JMAP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8887"/>
          <seriesInfo name="DOI" value="10.17487/RFC8887"/>
        </reference>
        <reference anchor="JMAP-Contacts">
          <front>
            <title>JSON Meta Application Protocol (JMAP) for Contacts</title>
            <author fullname="N. Jenkins" initials="N." role="editor" surname="Jenkins"/>
            <date month="December" year="2024"/>
            <abstract>
              <t>This document specifies a data model for synchronising contact data with a server using the JSON Meta Application Protocol (JMAP).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9610"/>
          <seriesInfo name="DOI" value="10.17487/RFC9610"/>
        </reference>
        <reference anchor="IMAP4rev2">
          <front>
            <title>Internet Message Access Protocol (IMAP) - Version 4rev2</title>
            <author fullname="A. Melnikov" initials="A." role="editor" surname="Melnikov"/>
            <author fullname="B. Leiba" initials="B." role="editor" surname="Leiba"/>
            <date month="August" year="2021"/>
            <abstract>
              <t>The Internet Message Access Protocol Version 4rev2 (IMAP4rev2) allows a client to access and manipulate electronic mail messages on a server. IMAP4rev2 permits manipulation of mailboxes (remote message folders) in a way that is functionally equivalent to local folders. IMAP4rev2 also provides the capability for an offline client to resynchronize with the server.</t>
              <t>IMAP4rev2 includes operations for creating, deleting, and renaming mailboxes; checking for new messages; removing messages permanently; setting and clearing flags; parsing per RFCs 5322, 2045, and 2231; searching; and selective fetching of message attributes, texts, and portions thereof. Messages in IMAP4rev2 are accessed by the use of numbers. These numbers are either message sequence numbers or unique identifiers.</t>
              <t>IMAP4rev2 does not specify a means of posting mail; this function is handled by a mail submission protocol such as the one specified in RFC 6409.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9051"/>
          <seriesInfo name="DOI" value="10.17487/RFC9051"/>
        </reference>
        <reference anchor="IMAP4rev1">
          <front>
            <title>INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1</title>
            <author fullname="M. Crispin" initials="M." surname="Crispin"/>
            <date month="March" year="2003"/>
            <abstract>
              <t>The Internet Message Access Protocol, Version 4rev1 (IMAP4rev1) allows a client to access and manipulate electronic mail messages on a server. IMAP4rev1 permits manipulation of mailboxes (remote message folders) in a way that is functionally equivalent to local folders. IMAP4rev1 also provides the capability for an offline client to resynchronize with the server. IMAP4rev1 includes operations for creating, deleting, and renaming mailboxes, checking for new messages, permanently removing messages, setting and clearing flags, RFC 2822 and RFC 2045 parsing, searching, and selective fetching of message attributes, texts, and portions thereof. Messages in IMAP4rev1 are accessed by the use of numbers. These numbers are either message sequence numbers or unique identifiers. IMAP4rev1 supports a single server. A mechanism for accessing configuration information to support multiple IMAP4rev1 servers is discussed in RFC 2244. IMAP4rev1 does not specify a means of posting mail; this function is handled by a mail transfer protocol such as RFC 2821. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3501"/>
          <seriesInfo name="DOI" value="10.17487/RFC3501"/>
        </reference>
        <reference anchor="POP3">
          <front>
            <title>Post Office Protocol - Version 3</title>
            <author fullname="J. Myers" initials="J." surname="Myers"/>
            <author fullname="M. Rose" initials="M." surname="Rose"/>
            <date month="May" year="1996"/>
            <abstract>
              <t>The Post Office Protocol - Version 3 (POP3) is intended to permit a workstation to dynamically access a maildrop on a server host in a useful fashion. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="53"/>
          <seriesInfo name="RFC" value="1939"/>
          <seriesInfo name="DOI" value="10.17487/RFC1939"/>
        </reference>
        <reference anchor="POP3-SASL">
          <front>
            <title>The Post Office Protocol (POP3) Simple Authentication and Security Layer (SASL) Authentication Mechanism</title>
            <author fullname="R. Siemborski" initials="R." surname="Siemborski"/>
            <author fullname="A. Menon-Sen" initials="A." surname="Menon-Sen"/>
            <date month="July" year="2007"/>
            <abstract>
              <t>This document defines a profile of the Simple Authentication and Security Layer (SASL) for the Post Office Protocol (POP3). This extension allows a POP3 client to indicate an authentication mechanism to the server, perform an authentication protocol exchange, and optionally negotiate a security layer for subsequent protocol interactions during this session.</t>
              <t>This document seeks to consolidate the information related to POP3 AUTH into a single document. To this end, this document obsoletes and replaces RFC 1734, and updates the information contained in Section 6.3 of RFC 2449. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5034"/>
          <seriesInfo name="DOI" value="10.17487/RFC5034"/>
        </reference>
        <reference anchor="SMTP">
          <front>
            <title>Simple Mail Transfer Protocol</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document is a specification of the basic protocol for Internet electronic mail transport. It consolidates, updates, and clarifies several previous documents, making all or parts of most of them obsolete. It covers the SMTP extension mechanisms and best practices for the contemporary Internet, but does not provide details about particular extensions. Although SMTP was designed as a mail transport and delivery protocol, this specification also contains information that is important to its use as a "mail submission" protocol for "split-UA" (User Agent) mail reading systems and mobile environments. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5321"/>
          <seriesInfo name="DOI" value="10.17487/RFC5321"/>
        </reference>
        <reference anchor="EMail">
          <front>
            <title>Internet Message Format</title>
            <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5322"/>
          <seriesInfo name="DOI" value="10.17487/RFC5322"/>
        </reference>
        <reference anchor="CalDAV">
          <front>
            <title>Calendaring Extensions to WebDAV (CalDAV)</title>
            <author fullname="C. Daboo" initials="C." surname="Daboo"/>
            <author fullname="B. Desruisseaux" initials="B." surname="Desruisseaux"/>
            <author fullname="L. Dusseault" initials="L." surname="Dusseault"/>
            <date month="March" year="2007"/>
            <abstract>
              <t>This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of accessing, managing, and sharing calendaring and scheduling information based on the iCalendar format. This document defines the "calendar-access" feature of CalDAV. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4791"/>
          <seriesInfo name="DOI" value="10.17487/RFC4791"/>
        </reference>
        <reference anchor="CardDAV">
          <front>
            <title>CardDAV: vCard Extensions to Web Distributed Authoring and Versioning (WebDAV)</title>
            <author fullname="C. Daboo" initials="C." surname="Daboo"/>
            <date month="August" year="2011"/>
            <abstract>
              <t>This document defines extensions to the Web Distributed Authoring and Versioning (WebDAV) protocol to specify a standard way of accessing, managing, and sharing contact information based on the vCard format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6352"/>
          <seriesInfo name="DOI" value="10.17487/RFC6352"/>
        </reference>
        <reference anchor="WebDAV">
          <front>
            <title>HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</title>
            <author fullname="L. Dusseault" initials="L." role="editor" surname="Dusseault"/>
            <date month="June" year="2007"/>
            <abstract>
              <t>Web Distributed Authoring and Versioning (WebDAV) consists of a set of methods, headers, and content-types ancillary to HTTP/1.1 for the management of resource properties, creation and management of resource collections, URL namespace manipulation, and resource locking (collision avoidance).</t>
              <t>RFC 2518 was published in February 1999, and this specification obsoletes RFC 2518 with minor revisions mostly due to interoperability experience. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4918"/>
          <seriesInfo name="DOI" value="10.17487/RFC4918"/>
        </reference>
        <reference anchor="XMPP">
          <front>
            <title>Extensible Messaging and Presence Protocol (XMPP): Core</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>The Extensible Messaging and Presence Protocol (XMPP) is an application profile of the Extensible Markup Language (XML) that enables the near-real-time exchange of structured yet extensible data between any two or more network entities. This document defines XMPP's core protocol methods: setup and teardown of XML streams, channel encryption, authentication, error handling, and communication primitives for messaging, network availability ("presence"), and request-response interactions. This document obsoletes RFC 3920. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6120"/>
          <seriesInfo name="DOI" value="10.17487/RFC6120"/>
        </reference>
        <reference anchor="XMPP-IM">
          <front>
            <title>Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document defines extensions to core features of the Extensible Messaging and Presence Protocol (XMPP) that provide basic instant messaging (IM) and presence functionality in conformance with the requirements in RFC 2779. This document obsoletes RFC 3921. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6121"/>
          <seriesInfo name="DOI" value="10.17487/RFC6121"/>
        </reference>
        <reference anchor="XMPP-WebSocket">
          <front>
            <title>An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket</title>
            <author fullname="L. Stout" initials="L." role="editor" surname="Stout"/>
            <author fullname="J. Moffitt" initials="J." surname="Moffitt"/>
            <author fullname="E. Cestari" initials="E." surname="Cestari"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>This document defines a binding for the Extensible Messaging and Presence Protocol (XMPP) over a WebSocket transport layer. A WebSocket binding for XMPP provides higher performance than the current HTTP binding for XMPP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7395"/>
          <seriesInfo name="DOI" value="10.17487/RFC7395"/>
        </reference>
        <reference anchor="ManageSieve">
          <front>
            <title>A Protocol for Remotely Managing Sieve Scripts</title>
            <author fullname="A. Melnikov" initials="A." role="editor" surname="Melnikov"/>
            <author fullname="T. Martin" initials="T." surname="Martin"/>
            <date month="July" year="2010"/>
            <abstract>
              <t>Sieve scripts allow users to filter incoming email. Message stores are commonly sealed servers so users cannot log into them, yet users must be able to update their scripts on them. This document describes a protocol "ManageSieve" for securely managing Sieve scripts on a remote server. This protocol allows a user to have multiple scripts, and also alerts a user to syntactically flawed scripts. [STANDARDS TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5804"/>
          <seriesInfo name="DOI" value="10.17487/RFC5804"/>
        </reference>
        <reference anchor="Sieve">
          <front>
            <title>Sieve: An Email Filtering Language</title>
            <author fullname="P. Guenther" initials="P." role="editor" surname="Guenther"/>
            <author fullname="T. Showalter" initials="T." role="editor" surname="Showalter"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a language for filtering email messages at time of final delivery. It is designed to be implementable on either a mail client or mail server. It is meant to be extensible, simple, and independent of access protocol, mail architecture, and operating system. It is suitable for running on a mail server where users may not be allowed to execute arbitrary programs, such as on black box Internet Message Access Protocol (IMAP) servers, as the base language has no variables, loops, or ability to shell out to external programs. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5228"/>
          <seriesInfo name="DOI" value="10.17487/RFC5228"/>
        </reference>
        <reference anchor="URL">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="WebSocket">
          <front>
            <title>The WebSocket Protocol</title>
            <author fullname="I. Fette" initials="I." surname="Fette"/>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code. The security model used for this is the origin-based security model commonly used by web browsers. The protocol consists of an opening handshake followed by basic message framing, layered over TCP. The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or s and long polling). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6455"/>
          <seriesInfo name="DOI" value="10.17487/RFC6455"/>
        </reference>
        <reference anchor="HTTP-Basic-Auth">
          <front>
            <title>The 'Basic' HTTP Authentication Scheme</title>
            <author fullname="J. Reschke" initials="J." surname="Reschke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This document defines the "Basic" Hypertext Transfer Protocol (HTTP) authentication scheme, which transmits credentials as user-id/ password pairs, encoded using Base64.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7617"/>
          <seriesInfo name="DOI" value="10.17487/RFC7617"/>
        </reference>
        <reference anchor="HTTP-Digest-Auth">
          <front>
            <title>HTTP Digest Access Authentication</title>
            <author fullname="R. Shekh-Yusef" initials="R." role="editor" surname="Shekh-Yusef"/>
            <author fullname="D. Ahrens" initials="D." surname="Ahrens"/>
            <author fullname="S. Bremer" initials="S." surname="Bremer"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) provides a simple challenge- response authentication mechanism that may be used by a server to challenge a client request and by a client to provide authentication information. This document defines the HTTP Digest Authentication scheme that can be used with the HTTP authentication mechanism.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7616"/>
          <seriesInfo name="DOI" value="10.17487/RFC7616"/>
        </reference>
        <reference anchor="OAuth2">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </reference>
        <reference anchor="TLSv1.2">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="STARTTLS">
          <front>
            <title>Using TLS with IMAP, POP3 and ACAP</title>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="June" year="1999"/>
            <abstract>
              <t>Recognizing that such sites will desire simple password authentication in combination with TLS encryption, this specification defines the PLAIN SASL mechanism for use with protocols which lack a simple password authentication command such as ACAP and SMTP. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2595"/>
          <seriesInfo name="DOI" value="10.17487/RFC2595"/>
        </reference>
        <reference anchor="CRAM-MD5">
          <front>
            <title>IMAP/POP AUTHorize Extension for Simple Challenge/Response</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="R. Catoe" initials="R." surname="Catoe"/>
            <author fullname="P. Krumviede" initials="P." surname="Krumviede"/>
            <date month="September" year="1997"/>
            <abstract>
              <t>This specification provides a simple challenge-response authentication protocol that is suitable for use with IMAP4. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2195"/>
          <seriesInfo name="DOI" value="10.17487/RFC2195"/>
        </reference>
        <reference anchor="DIGEST-MD5">
          <front>
            <title>Using Digest Authentication as a SASL Mechanism</title>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="May" year="2000"/>
            <abstract>
              <t>This specification defines how HTTP Digest Authentication can be used as a SASL mechanism for any protocol that has a SASL (Simple Authentication and Security Layer) profile. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2831"/>
          <seriesInfo name="DOI" value="10.17487/RFC2831"/>
        </reference>
        <reference anchor="SCRAM">
          <front>
            <title>SCRAM-SHA-256 and SCRAM-SHA-256-PLUS Simple Authentication and Security Layer (SASL) Mechanisms</title>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="November" year="2015"/>
            <abstract>
              <t>This document registers the Simple Authentication and Security Layer (SASL) mechanisms SCRAM-SHA-256 and SCRAM-SHA-256-PLUS, provides guidance for secure implementation of the original SCRAM-SHA-1-PLUS mechanism, and updates the SCRAM registration procedures of RFC 5802.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7677"/>
          <seriesInfo name="DOI" value="10.17487/RFC7677"/>
        </reference>
        <reference anchor="SASL">
          <front>
            <title>Simple Authentication and Security Layer (SASL)</title>
            <author fullname="A. Melnikov" initials="A." role="editor" surname="Melnikov"/>
            <author fullname="K. Zeilenga" initials="K." role="editor" surname="Zeilenga"/>
            <date month="June" year="2006"/>
            <abstract>
              <t>The Simple Authentication and Security Layer (SASL) is a framework for providing authentication and data security services in connection-oriented protocols via replaceable mechanisms. It provides a structured interface between protocols and mechanisms. The resulting framework allows new protocols to reuse existing mechanisms and allows old protocols to make use of new mechanisms. The framework also provides a protocol for securing subsequent protocol exchanges within a data security layer.</t>
              <t>This document describes how a SASL mechanism is structured, describes how protocols include support for SASL, and defines the protocol for carrying a data security layer over a connection. In addition, this document defines one SASL mechanism, the EXTERNAL mechanism.</t>
              <t>This document obsoletes RFC 2222. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4422"/>
          <seriesInfo name="DOI" value="10.17487/RFC4422"/>
        </reference>
        <reference anchor="SASL-OAuth2">
          <front>
            <title>A Set of Simple Authentication and Security Layer (SASL) Mechanisms for OAuth</title>
            <author fullname="W. Mills" initials="W." surname="Mills"/>
            <author fullname="T. Showalter" initials="T." surname="Showalter"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2015"/>
            <abstract>
              <t>OAuth enables a third-party application to obtain limited access to a protected resource, either on behalf of a resource owner by orchestrating an approval interaction or by allowing the third-party application to obtain access on its own behalf.</t>
              <t>This document defines how an application client uses credentials obtained via OAuth over the Simple Authentication and Security Layer (SASL) to access a protected resource at a resource server. Thereby, it enables schemes defined within the OAuth framework for non-HTTP-based application protocols.</t>
              <t>Clients typically store the user's long-term credential. This does, however, lead to significant security vulnerabilities, for example, when such a credential leaks. A significant benefit of OAuth for usage in those clients is that the password is replaced by a shared secret with higher entropy, i.e., the token. Tokens typically provide limited access rights and can be managed and revoked separately from the user's long-term password.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7628"/>
          <seriesInfo name="DOI" value="10.17487/RFC7628"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC7591">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers. Registration requests send a set of desired client metadata values to the authorization server. The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client. The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol. This specification also defines a set of common client metadata fields and values for clients to use during registration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7591"/>
          <seriesInfo name="DOI" value="10.17487/RFC7591"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="AutoConfig1.1" target="https://www.bucksch.org/1/projects/autoconfiguration/config-file-format.html">
          <front>
            <title>AutoConfig version 1.1</title>
            <author initials="B." surname="Bucksch" fullname="Ben Bucksch">
              <organization>Beonex</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="RELAXNG" target="https://relaxng.org/compact-20021121.html">
          <front>
            <title>RELAX NG Compact Syntax</title>
            <author initials="J." surname="Clark" fullname="James Clark">
              <organization/>
            </author>
            <date year="2002"/>
          </front>
        </reference>
        <reference anchor="XML">
          <front>
            <title>Guidelines for the Use of Extensible Markup Language (XML) within IETF Protocols</title>
            <author fullname="S. Hollenbeck" initials="S." surname="Hollenbeck"/>
            <author fullname="M. Rose" initials="M." surname="Rose"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2003"/>
            <abstract>
              <t>The Extensible Markup Language (XML) is a framework for structuring data. While it evolved from Standard Generalized Markup Language (SGML) -- a markup language primarily focused on structuring documents -- XML has evolved to be a widely-used mechanism for representing structured data. There are a wide variety of Internet protocols being developed; many have need for a representation for structured data relevant to their application. There has been much interest in the use of XML as a representation method. This document describes basic XML concepts, analyzes various alternatives in the use of XML, and provides guidelines for the use of XML within IETF standards-track protocols. 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="70"/>
          <seriesInfo name="RFC" value="3470"/>
          <seriesInfo name="DOI" value="10.17487/RFC3470"/>
        </reference>
        <reference anchor="Kerberos">
          <front>
            <title>The Kerberos Network Authentication Service (V5)</title>
            <author fullname="C. Neuman" initials="C." surname="Neuman"/>
            <author fullname="T. Yu" initials="T." surname="Yu"/>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <author fullname="K. Raeburn" initials="K." surname="Raeburn"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This document provides an overview and specification of Version 5 of the Kerberos protocol, and it obsoletes RFC 1510 to clarify aspects of the protocol and its intended use that require more detailed or clearer explanation than was provided in RFC 1510. This document is intended to provide a detailed description of the protocol, suitable for implementation, together with descriptions of the appropriate use of protocol messages and fields within those messages. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4120"/>
          <seriesInfo name="DOI" value="10.17487/RFC4120"/>
        </reference>
        <reference anchor="GSSAPI">
          <front>
            <title>Generic Security Service Application Program Interface Version 2, Update 1</title>
            <author fullname="J. Linn" initials="J." surname="Linn"/>
            <date month="January" year="2000"/>
            <abstract>
              <t>This memo obsoletes [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2743"/>
          <seriesInfo name="DOI" value="10.17487/RFC2743"/>
        </reference>
        <reference anchor="RFC8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC6186">
          <front>
            <title>Use of SRV Records for Locating Email Submission/Access Services</title>
            <author fullname="C. Daboo" initials="C." surname="Daboo"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>This specification describes how SRV records can be used to locate email services. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6186"/>
          <seriesInfo name="DOI" value="10.17487/RFC6186"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="DNSSEC">
          <front>
            <title>DNS Security Extensions (DNSSEC)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>This document describes the DNS Security Extensions (commonly called "DNSSEC") that are specified in RFCs 4033, 4034, and 4035, as well as a handful of others. One purpose is to introduce all of the RFCs in one place so that the reader can understand the many aspects of DNSSEC. This document does not update any of those RFCs. A second purpose is to state that using DNSSEC for origin authentication of DNS data is the best current practice. A third purpose is to provide a single reference for other documents that want to refer to DNSSEC.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="237"/>
          <seriesInfo name="RFC" value="9364"/>
          <seriesInfo name="DOI" value="10.17487/RFC9364"/>
        </reference>
        <reference anchor="DNS-SRV">
          <front>
            <title>A DNS RR for specifying the location of services (DNS SRV)</title>
            <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen"/>
            <author fullname="P. Vixie" initials="P." surname="Vixie"/>
            <author fullname="L. Esibov" initials="L." surname="Esibov"/>
            <date month="February" year="2000"/>
            <abstract>
              <t>This document describes a DNS RR which specifies the location of the server(s) for a specific protocol and domain. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2782"/>
          <seriesInfo name="DOI" value="10.17487/RFC2782"/>
        </reference>
      </references>
    </references>
    <?line 1403?>

<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 <xref target="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="dnssrv">
        <name>DNS SRV</name>
        <t>DNS SRV protocols <xref target="DNS-SRV"/> <xref target="RFC6186"/> are not used here, for two reasons:</t>
        <ol spacing="normal" type="1"><li>
            <t>DNS SRV relies on insecure DNS and the configuration 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 (<tt>fred@example.com</tt>, or <tt>fred</tt>, or <tt>fred\EXAMPLE</tt>, 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. OAuth2 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="inline-protocol">
        <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>CAPABILITY</tt> or POP3
<tt>CAPA</tt>, are not reliable. Many email servers advertise 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
of 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 advertise <xref target="Kerberos"/> /
<xref target="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 capabilities commands that
include authentication methods.</t>
      </section>
    </section>
    <section anchor="implementations">
      <name>Implementations</name>
      <section anchor="clients">
        <name>Clients</name>
        <t>Currently, this protocol or parts of it have 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">K-9 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 Mail</eref></t>
          </li>
          <li>
            <t><eref target="https://delta.chat/">Delta Chat</eref></t>
          </li>
        </ul>
        <t>and likely other mail clients.</t>
      </section>
      <section anchor="servers">
        <name>Servers</name>
        <t>At the time of this writing, this specification is the most widely
supported protocol for email client configuration.
A large number of email domains use AutoConfig to provide
the configuration to mail clients and allow an automatic setup.</t>
        <t>Some mail servers automatically provide AutoConfig files that follow
this specification, including <eref target="https://stalw.art/">Stalwart</eref>,
<eref target="https://mailcow.email/">Mailcow</eref> and many others.</t>
      </section>
    </section>
    <section anchor="relaxng-schema">
      <name>RELAX NG schema</name>
      <t>This appendix specifies the RELAX NG compact syntax <xref target="RELAXNG"/> for the
configuration file format defined in this document. It is provided for the
convenience of implementers and not normative. Where the schema and the body
of this document disagree, the body of this document is normative.</t>
      <t>The schema deliberately implements the must-ignore rule of <xref format="title" target="xml-validation"/>:
it accepts unknown attributes, unknown child elements, and unknown attribute
and element values, instead of rejecting them. This is achieved by:</t>
      <ul spacing="normal">
        <li>
          <t>using <tt>text</tt> for the content of every value-bearing element, so that values
that are not defined here still validate, for example a future <tt>socketType</tt> or
<tt>authentication</tt> method. The values defined by this document
are listed in comments next to the corresponding patterns</t>
        </li>
        <li>
          <t>allowing any attribute whose name is not defined for a given element, using
the <tt>attribute * - (...)</tt> and <tt>attribute * { text }</tt> patterns</t>
        </li>
        <li>
          <t>allowing any element whose name is not defined by this schema, at every
extension point, using the <tt>extensionElement</tt> pattern.</t>
        </li>
      </ul>
      <t>Known elements are still validated against their own definitions. A malformed
known element (for example, a <tt>&lt;port&gt;</tt> whose content is not an integer) makes
that element invalid, and therefore its enclosing server section is invalid as well.
The remaining server sections and the rest of the document are still processed.
A document is rejected as a whole only when it is not well-formed XML.</t>
      <t>The fragments shown in the body of this document are excerpts of the grammar
below. The grammar below additionally carries the wildcards that implement the
must-ignore rule.</t>
      <artwork><![CDATA[
# RELAX NG compact syntax schema for the Mail AutoConfig configuration file.
#
# This schema implements the must-ignore rule of Section "XML validation":
# unknown attributes, unknown child elements and unknown values are accepted
# rather than being rejected, so that clients can ignore them.

default namespace = ""
datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"

start = clientConfig

# --- Wildcards used to implement the must-ignore rule -----------------------

# Any attribute (used on elements that define no attributes of their own).
anyAttr = attribute * { text }

# Any element at all, with any attributes and any content. Used inside
# foreign (extension) subtrees, where everything is unknown and ignored.
anyElement = element * { ( anyAttr | text | anyElement )* }

# Any element whose name is NOT defined by this schema. Placed at every
# extension point so that unknown elements validate, while known elements
# are still matched (and validated) by their own patterns.
extensionElement =
  element * - ( clientConfig | emailProvider | domain | displayName
              | displayShortName | documentation | descr | incomingServer
              | outgoingServer | calendar | addressbook | fileShare
              | chatServer | videoConference | setupServer | url | hostname
              | port | socketType | authentication | username | oAuth2
              | authURL | tokenURL | issuer | scope | clientID | clientSecret
              | clientConfigUpdate ) {
    ( anyAttr | text | anyElement )*
  }

# --- Global structure -------------------------------------------------------

clientConfig =
  element clientConfig {
    attribute version { text },                  # e.g. "1.1" or "1.2"
    ( attribute * - version { text } )*,
    ( emailProvider | calendar | addressbook | fileShare | chatServer
    | videoConference | setupServer | oAuth2 | clientConfigUpdate
    | extensionElement )*
  }

emailProvider =
  element emailProvider {
    attribute id { text },
    ( attribute * - id { text } )*,
    ( domain | displayName | displayShortName | documentation
    | incomingServer | outgoingServer | extensionElement )*
  }

domain =
  element domain {
    attribute purpose { text }?,                 # the only defined value is "mx"
    ( attribute * - purpose { text } )*,
    text
  }

displayName      = element displayName      { anyAttr*, text }
displayShortName = element displayShortName { anyAttr*, text }

documentation =
  element documentation {
    attribute url { text },
    ( attribute * - url { text } )*,
    ( descr | extensionElement )*
  }

descr =
  element descr {
    attribute lang { text }?,                    # 2-letter ISO language code
    ( attribute * - lang { text } )*,
    text
  }

# --- Server sections --------------------------------------------------------
#
# incomingServer, outgoingServer, calendar, addressbook, fileShare,
# chatServer, videoConference and setupServer all share the same body.
# Every child element is optional and may appear in any order; a section
# that lacks the information needed for its protocol is simply ignored by
# the client (Section "XML validation").

serverSection =
  attribute type { text },                       # see the IANA registry
  ( attribute * - type { text } )*,
  ( url | hostname | port | socketType | authentication | username
  | extensionElement )*

incomingServer  = element incomingServer  { serverSection }
outgoingServer  = element outgoingServer  { serverSection }
calendar        = element calendar        { serverSection }
addressbook     = element addressbook     { serverSection }
fileShare       = element fileShare       { serverSection }
chatServer      = element chatServer      { serverSection }
videoConference = element videoConference { serverSection }
setupServer     = element setupServer     { serverSection }

# --- Server child elements --------------------------------------------------

url        = element url        { anyAttr*, text }
hostname   = element hostname   { anyAttr*, text }
port       = element port       { anyAttr*, xsd:positiveInteger }   # 1-65535
socketType = element socketType { anyAttr*, text }   # "SSL" / "STARTTLS" / "plain"
username   = element username   { anyAttr*, text }

authentication =
  element authentication {
    attribute system { text }?,                  # "http" or "sasl"
    ( attribute * - system { text } )*,
    text                                         # e.g. "password-cleartext", "OAuth2"
  }

# --- OAuth2 -----------------------------------------------------------------

oAuth2 =
  element oAuth2 {
    anyAttr*,
    ( authURL | tokenURL | issuer | scope | clientID | clientSecret
    | extensionElement )*
  }

authURL      = element authURL      { anyAttr*, text }
tokenURL     = element tokenURL     { anyAttr*, text }
issuer       = element issuer       { anyAttr*, text }
scope        = element scope        { anyAttr*, text }
clientID     = element clientID     { anyAttr*, text }
clientSecret = element clientSecret { anyAttr*, text }

# --- Configuration update ---------------------------------------------------

clientConfigUpdate =
  element clientConfigUpdate {
    attribute url { text },
    ( attribute * - url { text } )*,
    ( extensionElement )*
  }
]]></artwork>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
