<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.8) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-mailmaint-autoconfig-06" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="autoconfig">Mail Autoconfig</title>

    <author fullname="Ben Bucksch">
      <organization>Beonex</organization>
      <address>
        <email>ben.bucksch@beonex.com</email>
      </address>
    </author>

    <date year="2026" month="June" day="28"/>

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

<t>A protocol that allows email applications to set up mail accounts and related accounts with only the email address and password.</t>

<t>It defines how service providers can publish the account configuration, so that email applications can automatically find a working configuration. It reduces setup friction for their users, and calls to the support for the service provider.</t>

<t>Although the discovery process starts with an email address, the protocol is not limited setting up email accounts, but can also set up calendar, contact and file sync, video conference accounts and other accounts that are connected to the same user account.</t>

<t>This protocol uses a well-known address and DNS lookups, based on the email address domain, to find the XML configuration file for the service provider.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <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 87?>

<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.
Even technical users struggle to find the right combination of hostname, port number,
security protocols, authentication methods and forms of username. Less technical users
often abort entirely. This difficulty is one of the primary factors why many users use
provider-specific applications which use proprietary internal protocols instead of
generic provider-independent client applications that use open protocols specified
by the IETF. This in turn leads to significantly less choice for end users in their
everyday user experience for communication, already today. Long-term, this leads to an errosion of
standards support and the ability for end users to use the software of their choice.</t>

<t>This protocol allows users to set up their existing email account in a email client application,
by entering only their name, email address, and password.
The application, by means of the Autoconfig protocol specified here, will determine all the other
parameters that are required, including IMAP or POP3 hostname, TLS configuration,
form of username, authentication method, and other settings, and likewise for SMTP.
Calendar, contact and file sync, video conference accounts and other
accounts that are connected to the same user account can be set up at the same time.</t>

<t>The protocol works by first determining the domain from the email address, and
then querying well-known URLs at the email provider, which return the
configuration parameters in computer-readable form. Failing that, various
fallback sources can be applied, like a common database of configurations for
large email providers who do not directly support this protocol, or other
mechanisms to determine the configuration.</t>

<t>While this Autoconfig protocol was originally conceived for configuring mail clients,
it can also be used for accounts of other types, like contacts and calendar
sync, chat, video conference, or online publishing. The primary concept and
limitation here is that these accounts are hosted by the same provider
as the email address.</t>

<t>This protocol is in active production use since 15 years by major email clients,
and the configuration database contains configurations for over 80% of
all email accounts.</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 <spanx style="verb">text/xml</spanx>.</t>

<t>The seconds 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>

<figure><artwork><![CDATA[
<?xml version="1.0"?>
<clientConfig version="1.2">
  <emailProvider id="example.com">
    <domain>example.com</domain>
    <domain>example.net</domain>

    <displayName>Google Workspace</displayName>
    <displayShortName>GMail</displayShortName>

      <!-- type=
      "imap": IMAP
      "pop3": POP3
      "jmap": JMAP
      "ews": Microsoft Exchange Web Services
      "activesync": Microsoft ActiveSync
      -->
    <incomingServer type="imap">
      <hostname>imap.example.com</hostname>
      <port>993</port>
        <!--
        "plain": no encryption
        "SSL": TLS on TLS-specific port
        "STARTTLS": mandatory upgrade to TLS via STARTTLS
        -->
      <socketType>SSL</socketType>
        <!-- Authentication methods:
        "password-cleartext": SASL PLAIN, LOGIN or protocol-native login.
        "password-encrypted": SASL CRAM-MD5, DIGEST-MD5 etc. Not TLS.
        "TLS-client-cert": TLS client certificate on TLS layer
        "OAuth2": Provider MUST adhere to section "OAuth2 requirements".
        "none": No authentication

        Multiple <authentication> elements per server
        configuration are valid. Clients will pick the first
        one that they support.
        -->
      <authentication>password-cleartext</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
      or client can choose the alternative configs. -->
    <incomingServer type="pop3">
      <hostname>pop.example.com</hostname>
      <port>995</port>
      <socketType>SSL</socketType>
      <authentication>password-cleartext</authentication>
      <username>%EMAILADDRESS%</username>
    </incomingServer>

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

    <incomingServer type="jmap">
      <url>https://jmap.example.com</url>
        <!-- Authentication methods
        "Basic": RFC 7617
        "Digest": RFC 7616
        "OAuth2": Provider MUST adhere to section "OAuth2 requirements".
        -->
      <authentication>OAuth2</authentication>
      <authentication system="http">Basic</authentication>
      <username>%EMAILADDRESS%</username>
    </incomingServer>

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

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

    <documentation url="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 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>

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

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

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

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

</clientConfig>
]]></artwork></figure>

<t>The formal grammar is in appendix <xref target="relaxng-schema"/> <em>RELAX NG schema</em>.</t>

</section>
<section anchor="global-elements"><name>Global elements</name>

<t>The file starts with an XML header, e.g. <spanx style="verb">&lt;?xml version="1.0"?&gt;</spanx>,
and is encoded in UTF-8 without BOM.</t>

<section anchor="clientconfig"><name>clientConfig</name>

<t>The root element of the XML file is <spanx style="verb">&lt;clientConfig version="1.2"&gt;</spanx>.</t>

<t>The <spanx style="verb">version</spanx> is <spanx style="verb">1.2</spanx> for the version defined in this specification. <spanx style="verb">1.1</spanx> 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.</t>

</section>
<section anchor="emailprovider"><name>emailProvider</name>

<t>Example:</t>

<figure><artwork><![CDATA[
<emailProvider id="example.com">
]]></artwork></figure>

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
emailProvider = element emailProvider {
  attribute id { text },
  ( domain | displayName | displayShortName | documentation
  | incomingServer | outgoingServer )* }
]]></artwork></figure>

<t>Element <spanx style="verb">&lt;emailProvider&gt;</spanx> is within the root element.
This element has no semantic purpose and exists for legacy reasons only,
but its content is significant.</t>

<t>The <spanx style="verb">id</spanx> 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 <spanx style="verb">&lt;emailProvider&gt;</spanx> are <spanx style="verb">&lt;domain&gt;</spanx>, <spanx style="verb">&lt;displayName&gt;</spanx> and
<spanx style="verb">&lt;displayShortName&gt;</spanx>, <spanx style="verb">&lt;documentation&gt;</spanx>, <spanx style="verb">&lt;incomingServer&gt;</spanx> and
<spanx style="verb">&lt;outgoingServer&gt;</spanx>.</t>

</section>
<section anchor="domain"><name>domain</name>

<t>Example:</t>

<figure><artwork><![CDATA[
<domain>example.com</domain>
<domain>example.net</domain>
<domain purpose="mx">example-hosting.com</domain>
]]></artwork></figure>

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
domain = element domain {
  attribute purpose { text }?,   # the only defined value is "mx"
  text }
]]></artwork></figure>

<t>The content of the <spanx style="verb">&lt;domain&gt;</spanx> element defines which email addresses this config
is valid for. For example, a configuration with <spanx style="verb">&lt;domain&gt;example.com&lt;/domain&gt;</spanx> is valid for
email address <spanx style="verb">fred@example.com</spanx>.</t>

<t>Multiple <spanx style="verb">&lt;domain&gt;</spanx> 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 alphabethically.</t>

<t><spanx style="verb">&lt;domain purpose="mx"&gt;</spanx> 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 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 <spanx style="verb">&lt;domain purpose="mx"&gt;</spanx>, then this configuration is applicable for that email address.
Adding the <spanx style="verb">purpose</spanx> attribute is <bcp14>RECOMMENDED</bcp14>.</t>

</section>
<section anchor="displayname-and-displayshortname"><name>displayName and displayShortName</name>

<t>Example:</t>

<figure><artwork><![CDATA[
<displayName>Google Workspace</displayName>
<displayShortName>GMail</displayShortName>
]]></artwork></figure>

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
displayName = element displayName { text }
displayShortName = element displayShortName { text }
]]></artwork></figure>

<t>The <spanx style="verb">&lt;displayName&gt;</spanx> element contains the name of the provider, e.g.
as preferred by the marketing of the provider itself. It <bcp14>SHOULD</bcp14> be no
longer than 30 characters, but <bcp14>MUST</bcp14> be no longer than 60 characters.</t>

<t>The <spanx style="verb">&lt;displayShortName&gt;</spanx> element contains the name of the provider, as
typically used by end users. It <bcp14>SHOULD</bcp14> be no longer than 12
characters, and it <bcp14>MUST NOT</bcp14> be longer than 20 characters.</t>

<t>Both elements may used to display the provider or account name by the
mail client UI, which has reasonable expectations on length and
expressiveness.</t>

<t>The <spanx style="verb">&lt;displayShortName&gt;</spanx> in particular may be used by the mail client
together with the email address as partial base for the account name,
and during everyday use of the app to represent the account, so it
<bcp14>SHOULD</bcp14> be short, distinctive and represent the provider in the way
end users refer and think of it.</t>

</section>
</section>
<section anchor="documentation"><name>documentation</name>

<t>Example:</t>

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

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
documentation = element documentation {
  attribute url { text },
  descr* }
descr = element descr {
  attribute lang { text }?,   # 2-letter ISO language code
  text }
]]></artwork></figure>

<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 <spanx style="verb">url</spanx> attribute contains the URL of the webpage. The <spanx style="verb">&lt;descr&gt;</spanx>
content describes the content and purpose of the page and why it's
referenced here.
Multiple <spanx style="verb">&lt;descr&gt;</spanx> elements with different <spanx style="verb">lang</spanx> attributes are
allowed, whereby the <spanx style="verb">lang</spanx> attribute contains the 2-letter ISO language
code, like the HTML <spanx style="verb">lang</spanx> attribute.</t>

</section>
<section anchor="server-sections"><name>Server sections</name>

<t><spanx style="verb">&lt;incomingServer type="jmap"&gt;</spanx>, <spanx style="verb">&lt;calendar type="carddav"&gt;</spanx> etc.</t>

<t>RELAX NG:</t>

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

<t><list style="symbols">
  <t>The <spanx style="verb">type</spanx> attribute specifies the wire protocol that this server uses. See
<xref target="type"/> <em>type</em> below.</t>
  <t><spanx style="verb">&lt;incomingServer&gt;</spanx> 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>
  <t><spanx style="verb">&lt;outgoingServer&gt;</spanx> is used for sending, if <spanx style="verb">&lt;incomingServer&gt;</spanx> does not
support that directly.
This is currently used only for SMTP in combination with IMAP and POP3.</t>
  <t><spanx style="verb">&lt;incomingServer&gt;</spanx> and <spanx style="verb">&lt;outgoingServer&gt;</spanx> are within element
<spanx style="verb">&lt;emailProvider&gt;</spanx>, whereas <spanx style="verb">&lt;calendar&gt;</spanx>, <spanx style="verb">&lt;addressbook&gt;</spanx>, <spanx style="verb">&lt;fileShare&gt;</spanx>,
<spanx style="verb">&lt;chatServer&gt;</spanx> and <spanx style="verb">&lt;videoConference&gt;</spanx> are within the
root element <spanx style="verb">&lt;clientConfig&gt;</spanx>, i.e. one level higher.
Other than that, they work the same.</t>
  <t>In some protocols, the <spanx style="verb">&lt;incomingServer&gt;</spanx> server additionally provides
calendars, addressbooks, and other data. For such protocols, the same server
is not repeated in other specific server sections like <spanx style="verb">&lt;calendar&gt;</spanx>.
Calendar-only clients supporting such multi-purpose protocols <bcp14>MUST</bcp14> read the
<spanx style="verb">&lt;incomingServer&gt;</spanx> (nonewithstanding that it's within legacy element
<spanx style="verb">&lt;emailProvider&gt;</spanx>)
and test and use the parts of the protocol needed for their
functionality.</t>
</list></t>

<section anchor="multiple-server-sections"><name>Multiple server sections</name>

<t>Server sections of the same type (like <spanx style="verb">&lt;incomingServer&gt;</spanx> or <spanx style="verb">&lt;calendar&gt;</spanx>)
may appear multiple times in the same configuration file.
In this case, the one listed first is preferred by the configuration provider.
Unless the client has specific other requirements, it <bcp14>SHOULD</bcp14> pick the first
config.</t>

<t>The client may deviate from this recommendation, because</t>

<t><list style="symbols">
  <t>the client doesn't support a higher-priority protocol, e.g. a JMAP
configuraion is listed first and is the most preferred, but the
client does not support JMAP yet, or</t>
  <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>
  <t>the client has a specific policy to prefer another configuration,
e.g. a STARTTLS configuration is listed before a direct TLS config, and
the client has a policy of preferring direct TLS, or likewise
the client prefers IMAP over POP3.</t>
</list></t>

<t>Server types, elements and protocols that the client does not support
<bcp14>MUST</bcp14> be ignored and the client <bcp14>MUST</bcp14> continue to parse the other
server sections, which may contain configs that the client
understands and supports. The client ignores the file only if there
is no supported and working configuration found.</t>

</section>
</section>
<section anchor="type"><name>type</name>

<t>The <spanx style="verb">type</spanx> attribute on the server section element specifies the
wire protocol that this server uses.</t>

<texttable>
      <ttcol align='left'>Element</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Base</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Specification</ttcol>
      <c>incomingServer</c>
      <c><spanx style="verb">jmap</spanx></c>
      <c>URL</c>
      <c>JMAP</c>
      <c><xref target="JMAP-Core"/>, <xref target="JMAP-Mail"/>, <xref target="JMAP-WebSocket"/>, <xref target="JMAP-Contacts"/> et al</c>
      <c>incomingServer</c>
      <c><spanx style="verb">imap</spanx></c>
      <c>TCP</c>
      <c>IMAP</c>
      <c><xref target="IMAP4rev2"/> or <xref target="IMAP4rev1"/>, et al</c>
      <c>incomingServer</c>
      <c><spanx style="verb">pop3</spanx></c>
      <c>TCP</c>
      <c>POP3</c>
      <c><xref target="POP3"/>, <xref target="POP3-SASL"/></c>
      <c>outgoingServer</c>
      <c><spanx style="verb">smtp</spanx></c>
      <c>TCP</c>
      <c>SMTP</c>
      <c><xref target="SMTP"/>, <xref target="EMail"/></c>
      <c>calendar</c>
      <c><spanx style="verb">caldav</spanx></c>
      <c>URL</c>
      <c>CalDAV</c>
      <c><xref target="CalDAV"/></c>
      <c>addressbook</c>
      <c><spanx style="verb">carddav</spanx></c>
      <c>URL</c>
      <c>CardDav</c>
      <c><xref target="CardDav"/></c>
      <c>fileShare</c>
      <c><spanx style="verb">webdav</spanx></c>
      <c>URL</c>
      <c>WebDAV</c>
      <c><xref target="WebDAV"/></c>
      <c>chatServer</c>
      <c><spanx style="verb">xmpp</spanx></c>
      <c>URL</c>
      <c>XMPP</c>
      <c><xref target="XMPP"/>, <xref target="XMPP-IM"/>, <xref target="XMPP-WebSocket"/></c>
      <c>chatServer</c>
      <c><spanx style="verb">xmpptcp</spanx></c>
      <c>TCP</c>
      <c>XMPP</c>
      <c><xref target="XMPP"/>, <xref target="XMPP-IM"/></c>
      <c>chatServer</c>
      <c><spanx style="verb">matrix</spanx></c>
      <c>URL</c>
      <c>Matrix</c>
      <c><xref target="Matrix"></xref></c>
      <c>setupServer</c>
      <c><spanx style="verb">managesieve</spanx></c>
      <c>TCP</c>
      <c>ManageSieve</c>
      <c><xref target="ManageSieve"/>, <xref target="Sieve"/></c>
      <c>incomingServer</c>
      <c><spanx style="verb">ews</spanx></c>
      <c>URL</c>
      <c>Exchange Web Services</c>
      <c>&#160;</c>
      <c>incomingServer</c>
      <c><spanx style="verb">activeSync</spanx></c>
      <c>URL</c>
      <c>ActiveSync</c>
      <c>&#160;</c>
      <c>incomingServer</c>
      <c><spanx style="verb">graph</spanx></c>
      <c>URL</c>
      <c>Microsoft Graph</c>
      <c>&#160;</c>
</texttable>

<t>Other protocol names can be added using an IANA registry. See the
corresponding section below.</t>

</section>
<section anchor="url-based-protocols"><name>URL-based protocols</name>

<figure><artwork><![CDATA[
<incomingServer type="jmap">
  <url>https://jmap.example.com/session</url>
  <authentication system="http">Basic</authentication>
  <username>%EMAILADDRESS%</username>
</incomingServer>
]]></artwork></figure>

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

<figure><artwork><![CDATA[
<url>https://jmap.example.com/session</url>
]]></artwork></figure>

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
url = element url { text }
]]></artwork></figure>

<t>The content of the <spanx style="verb">&lt;url&gt;</spanx> 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 <spanx style="verb">https://</spanx> (<xref section="4.2.2" sectionFormat="comma" target="HTTP"/>).
Some protocols may use other schemes, e.g. WebSockets <spanx style="verb">wss://</spanx> (<xref section="3" sectionFormat="comma" target="WebSocket"/>).</t>

</section>
<section anchor="authentication"><name>authentication</name>

<t>Examples:</t>

<figure><artwork><![CDATA[
<authentication>OAuth2</authentication>
<authentication system="http">Basic</authentication>
]]></artwork></figure>

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
authentication = element authentication {
  attribute system { text }?,   # "http" or "sasl"
  text }
]]></artwork></figure>

<t>The content of the <spanx style="verb">&lt;authentication&gt;</spanx> element defines which HTTP
authentication method to use. The <spanx style="verb">system="http"</spanx> attribute
signals that the value refers to a <spanx style="verb">WWW-Authenticate</spanx> mechanism.</t>

<t><list style="symbols">
  <t><spanx style="verb">Basic</spanx>: Authenticate to the HTTP server using
<spanx style="verb">WWW-Authenticate: Basic</spanx>. See <xref target="HTTP-Basic-Auth"/>.</t>
  <t><spanx style="verb">Digest</spanx>: Authenticate to the HTTP server using
<spanx style="verb">WWW-Authenticate: Digest</spanx>. See <xref target="HTTP-Digest-Auth"/></t>
  <t><spanx style="verb">OAuth2</spanx>: Authenticate to the HTTP server using
<spanx style="verb">WWW-Authenticate: Bearer</spanx>. See <xref section="3" sectionFormat="comma" target="OAuth2"/>.
The provider <bcp14>MUST</bcp14> adhere to the requirements defined in <xref target="oauth2"/>
<em>OAuth2 requirements</em>.</t>
</list></t>

<t>Note: The XML element for OAuth2 is
<spanx style="verb">&lt;authentication&gt;OAuth2&lt;/authentication&gt;</spanx> without system attribute.
<spanx style="verb">&lt;authentication system="http"&gt;Bearer&lt;/authentication&gt;</spanx> is invalid.</t>

<t>The rules as specified in <xref target="auth-alternatives"/> <em>Multiple authentication alternatives</em> and
<xref target="auth-verification"/> <em>Authentication verification and fallback</em> apply here as well.</t>

</section>
<section anchor="username"><name>username</name>

<t>Examples (alternatives):</t>

<figure><artwork><![CDATA[
<username>%EMAILADDRESS%</username>
<username>fred</username>
]]></artwork></figure>

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
username = element username { text }
]]></artwork></figure>

<t>The username to use for the authentication method.</t>

<t>Placeholders <bcp14>MUST</bcp14> be replaced before using the actual value. See <xref target="placeholders"/> <em>Placeholders</em>.</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>

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

<section anchor="hostname"><name>hostname</name>

<t>Example:</t>

<figure><artwork><![CDATA[
<hostname>imap.example.com</hostname>
]]></artwork></figure>

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
hostname = element hostname { text }
]]></artwork></figure>

<t>The content of the <spanx style="verb">&lt;hostname&gt;</spanx> element contains the fully qualified hostname
of the server.</t>

</section>
<section anchor="port"><name>port</name>

<t>Example:</t>

<figure><artwork><![CDATA[
<port>993</port>
]]></artwork></figure>

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
port = element port { xsd:positiveInteger }   # TCP port, 1-65535
]]></artwork></figure>

<t>The content of the <spanx style="verb">&lt;port&gt;</spanx> 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>

<figure><artwork><![CDATA[
<socketType>SSL</socketType>
]]></artwork></figure>

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
socketType = element socketType { text }
]]></artwork></figure>

<t>The content of the <spanx style="verb">&lt;socketType&gt;</spanx> element specifies whether to use direct TLS,
STARTTLS, or none of these.</t>

<t><list style="symbols">
  <t><spanx style="verb">SSL</spanx>: 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>
  <t><spanx style="verb">STARTTLS</spanx>: 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>
  <t><spanx style="verb">plain</spanx>: Unencrypted connection, with neither TLS nor STARTTLS. May be
needed for local servers. Deprecated.</t>
</list></t>

<section anchor="tls-validation"><name>TLS validation</name>

<t>In all cases where TLS is used, either directly or using STARTTLS,
the client <bcp14>MUST</bcp14> validate the TLS certificate and ensure that the
certificate is valid for the hostname given in this config. If not,
or if the TLS certificate is otherwise invalid, the client <bcp14>MUST</bcp14>
either disconnect or <bcp14>MAY</bcp14> warn the user of the
dangers and ask for user confirmation. Such fallback with warning and
confirmation is allowed only at original configuration and <bcp14>MUST NOT</bcp14> be
allowed during normal everyday connection.</t>

<t>If the server had a valid TLS certificate during original configuration
and the TLS certificate is later invalid during normal connection, the
client <bcp14>MUST</bcp14> disconnect.</t>

<t>As an exception, if the problem is that the TLS certificate expired recently,
the client <bcp14>MAY</bcp14> choose to not consider that a failure during normal connection
and <bcp14>MAY</bcp14> use other recovery mechanisms.</t>

</section>
</section>
<section anchor="authentication-1"><name>authentication</name>

<t>Example:</t>

<figure><artwork><![CDATA[
<authentication>password-cleartext</authentication>
]]></artwork></figure>

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
authentication = element authentication {
  attribute system { text }?,   # "http" or "sasl"
  text }
]]></artwork></figure>

<t>The content of the <spanx style="verb">&lt;authentication&gt;</spanx> 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>

<t><list style="symbols">
  <t><spanx style="verb">password-cleartext</spanx>: 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 <spanx style="verb">PLAIN</spanx> or SASL <spanx style="verb">LOGIN</spanx>, or a successor.</t>
  <t><spanx style="verb">password-encrypted</spanx>: An encrypted or hashed password mechanism.
Includes SASL <spanx style="verb">CRAM-MD5</spanx> <xref target="CRAM-MD5"/>,
<spanx style="verb">DIGEST-MD5</spanx> <xref target="DIGEST-MD5"/>,
<spanx style="verb">SCRAM-SHA-256-PLUS</spanx> <xref target="SCRAM"/>, and successors.
TLS by itself does not qualify as <spanx style="verb">password-encrypted</spanx>.</t>
  <t><spanx style="verb">NTLM</spanx>: Legacy Windows login mechanisms NTLM or NTLMv2.</t>
  <t><spanx style="verb">GSSAPI</spanx>: <xref target="Kerberos"/> or <xref target="GSSAPI"/>,
 a single-signon mechanism based on TCP.</t>
  <t><spanx style="verb">TLS-client-cert</spanx>: On the SSL/TLS layer, after server request, the client
sends a TLS client certificate for the user, possibly after letting the user
select confirm it. Uses SASL <spanx style="verb">EXTERNAL</spanx> scheme <xref target="SASL"/>, Appendix A.</t>
  <t><spanx style="verb">OAuth</spanx>: OAuth. SASL <spanx style="verb">OAUTHBEARER</spanx> <xref target="SASL-OAuth2"/> (current) or
<spanx style="verb">XOAUTH2</spanx> (deprecated) or successors.
The provider <bcp14>MUST</bcp14> adhere to the requirements defined in <xref target="oauth2"/> <em>OAuth2 requirements</em>.</t>
  <t><spanx style="verb">client-IP-address</spanx>: 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>
</list></t>

<section anchor="recommending-specific-sasl-schemes"><name>Recommending specific SASL schemes</name>

<t>Example:</t>

<figure><artwork><![CDATA[
<authentication system="sasl">SCRAM-SHA-256-PLUS</authentication>
]]></artwork></figure>

<t>A specific SASL scheme <xref target="SASL"/> <bcp14>MAY</bcp14> be specified using
the specific SASL authentication scheme name, e.g.
<spanx style="verb">SCRAM-SHA-256-PLUS</spanx> <xref target="SCRAM"/>. To signal that, the
<spanx style="verb">&lt;authentication&gt;</spanx> element <bcp14>SHOULD</bcp14> have the <spanx style="verb">system</spanx> attribute set
to value <spanx style="verb">sasl</spanx>, i.e. <spanx style="verb">&lt;authentication system="sasl"&gt;</spanx>.</t>

<t>In such a case, the server configuration section <bcp14>SHOULD</bcp14> also
specify a more generic authentication mechanism as a lower priority
alternative. That would make clients use the specific authentication
mechanism, if they support it, and other clients will use the more generic
authentication mechanism.</t>

</section>
<section anchor="auth-alternatives"><name>Multiple authentication alternatives</name>

<t>The <spanx style="verb">&lt;authentication&gt;</spanx> 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 <spanx style="verb">&lt;authentication&gt;</spanx> 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 <bcp14>SHOULD</bcp14> test the configuration during setup, with an actual
authentication attempt.</t>

<t>If the authentication fails, the client decides based on the
authentication error code how to proceed. For example, if the authentiocation
method itself failed, or the error code indicates a systemic failure,
the client <bcp14>SHOULD</bcp14> use a lower-priority authentication method from the
list.</t>

<t>If the authentication method is working, but the error code indicated
that the username or password was wrong, then the client <bcp14>MAY</bcp14> ask the
user to correct the password.</t>

<t>For that reason, the server <bcp14>SHOULD</bcp14> be specific in the error codes and
allow the client to distinguish between</t>

<t><list style="symbols">
  <t>an unsupported or non-working authentication method or other
systemic failures</t>
  <t>the client being rejected by the server</t>
  <t>the user being blocked from login</t>
  <t>the user authentication failing due to wrong password or username</t>
  <t>other reasons</t>
</list></t>

<t>If the server were to return the same error code for all these cases, the
client might tell the user that the password is wrong, and the user starts
attempting other passwords, potentially revealing passwords to other
higher-value assets, which is highly dangerous.</t>

<t>If the authentification succeeded, the client <bcp14>SHOULD</bcp14> take note of the
working configutation and use that for all subsequent connections,
until an explicit reconfiguration occurs. During normal everyday operation,
the client <bcp14>SHOULD NOT</bcp14> fallback nor attempt multiple different authentication
methods.</t>

</section>
</section>
<section anchor="username-1"><name>username</name>

<t>Examples (alternatives):</t>

<figure><artwork><![CDATA[
<username>%EMAILADDRESS%</username>
<username>fred</username>
]]></artwork></figure>

<t>RELAX NG:</t>

<figure><artwork><![CDATA[
username = element username { text }
]]></artwork></figure>

<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 target="placeholders"/> <em>Placeholders</em>.</t>

</section>
</section>
<section anchor="placeholders"><name>Placeholders</name>

<t>The <spanx style="verb">&lt;username&gt;</spanx> 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>

<texttable>
      <ttcol align='left'>Placeholder</ttcol>
      <ttcol align='left'>Replace with</ttcol>
      <ttcol align='left'>Example</ttcol>
      <c><spanx style="verb">%EMAILADDRESS%</spanx></c>
      <c>E-Mail-Address of the user</c>
      <c><spanx style="verb">fred@example.com</spanx></c>
      <c><spanx style="verb">%EMAILLOCALPART%</spanx></c>
      <c>Part before <spanx style="verb">@</spanx> in the E-Mail-Address</c>
      <c><spanx style="verb">fred</spanx></c>
      <c><spanx style="verb">%EMAILDOMAIN%</spanx></c>
      <c>Part after <spanx style="verb">@</spanx> in the E-Mail-Address</c>
      <c><spanx style="verb">example.com</spanx></c>
</texttable>

<t>Some clients <bcp14>MAY</bcp14> also support the same placeholders for the fields
<spanx style="verb">&lt;hostname&gt;</spanx>, <spanx style="verb">&lt;url&gt;</spanx>, <spanx style="verb">&lt;authURL&gt;</spanx>, <spanx style="verb">&lt;tokenURL&gt;</spanx>, <spanx style="verb">&lt;issuer&gt;</spanx>,
<spanx style="verb">&lt;displayName&gt;</spanx> and <spanx style="verb">&lt;displayShortName&gt;</spanx>.</t>

</section>
<section anchor="xml-validation"><name>XML validation</name>

<t>The client <bcp14>SHOULD</bcp14> validate that the configuration file is valid XML, and if
the XML syntax is invalid, the client <bcp14>SHOULD</bcp14> ignore the entire file. In
contrast, if there are merely unknown elements or
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 <spanx style="verb">&lt;authentication&gt;</spanx> elements in <xref 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 RELAX NG schema in <xref target="relaxng-schema"/> <em>RELAX NG schema</em> 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 priorty result that is available <bcp14>SHOULD</bcp14> be preferred over a lower
priority one, even if the lower priority one is available earlier. Exceptions
apply when a higher priority result is either invalid or outdated, or the
fetch method is less secure. Lower priority requests <bcp14>MAY</bcp14> be cancelled, if a
valid higher priority result has been successfully received. The priority is
expressed below with the number before the URL or location, with lower numbers
meaning higher priority, e.g. 1.2 has higher priority than 4.1.</t>

<t>In the URLs below, <spanx style="verb">%EMAILADDRESS%</spanx> <bcp14>SHALL</bcp14> be replaced with the email address
that the user entered and wishes to use, and <spanx style="verb">%EMAILDOMAIN%</spanx> <bcp14>SHALL</bcp14> be replaced
with the email domain extracted from the email address. For example, for
<spanx style="verb">fred@example.com</spanx>, the email domain is <spanx style="verb">example.com</spanx>, and for
<spanx style="verb">fred@test.cs.example.net</spanx>, the email domain is <spanx style="verb">test.cs.example.net</spanx>.</t>

<t>For full support of this specification, all "Required" and "Recommended"
mechanisms <bcp14>MUST</bcp14> be implemented and working. For partial support of this
specification, all "Required" mechanisms <bcp14>MUST</bcp14> be implemented and working, and
in this case, the implementor <bcp14>SHALL</bcp14> make explicit when advertizing or referring
to Autoconfig that there is only partial support of this specification.</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>

<t><list style="symbols">
  <t>1.1. <spanx style="verb">https://autoconfig.%EMAILDOMAIN%/mail/config-v1.1.xml?emailaddress=%EMAILADDRESS%</spanx> (Required. <spanx style="verb">emailaddress</spanx> is Optional)</t>
  <t>1.2. <spanx style="verb">https://%EMAILDOMAIN%/.well-known/autoconfig/mail/config-v1.1.xml</spanx> (Optional)</t>
  <t>1.3. <spanx style="verb">http://autoconfig.%EMAILDOMAIN%/mail/config-v1.1.xml</spanx> (Optional)</t>
</list></t>

<t>For example:</t>

<t><list style="symbols">
  <t>1.1. <spanx style="verb">https://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</spanx></t>
  <t>1.2. <spanx style="verb">https://example.com/.well-known/autoconfig/mail/config-v1.1.xml</spanx></t>
  <t>1.3. <spanx style="verb">http://autoconfig.example.com/mail/config-v1.1.xml</spanx></t>
</list></t>

<t>Step 1.3. is mainly for legacy servers. Many current deployments
use this HTTP URL.</t>

<section anchor="customzing-the-configuration-for-a-specific-user"><name>Customzing 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 heterogenous configurations, mail
providers are discouraged from doing so, and are instead encouraged to provide
one single configuration for all their users. For example, DNS resolution
based on location, mail proxy servers, or other techniques as necessary, can
be used to route the traffic and host the mail efficiently.</t>

<t>This mechanism also allows the Autoconfig server to map the email address to
a username that cannot be expressed using the Placeholders (see <xref target="placeholders"/>).
However, this method is discouraged. Instead, the email server login should
accept email addresses as username, and doing the mapping to internal
usernames at login time, which avoids the need for the client to know a
different username.</t>

<t>Autoconfig servers that customize the returned configuration file to the
email address should avoid that email addresses can be tested for validity
by hostile parties like spammers or attackers.
For that reason, Autoconfig servers <bcp14>SHOULD</bcp14> return a real configuration,
even if the email address sent as URL parameter does not exist.
If the query contains a non-existing email address,
the server should not return an error nor a fake configuration, but rather
a random real configuation, e.g. a random host out of the pool of real hosts.
Supporting mail clients should test the login before completing setup,
so spelling mistakes in the email address will be signaled to the user
as login error in later stages of the setup process.</t>

</section>
</section>
<section anchor="ispdb"><name>Central database</name>

<t>The ISPDB is a central database that contains the configurations for most
mail providers with a market share larger than 0.1%, and contains configurations
for half of the email accounts in the world.</t>

<t>This is a useful fallback that allows mail clients to support mail providers
which do not host a configuration server described in the previous step.
In practice, this step is required to find a working configuration for most
email accounts, and increases the success rate by an order of magnitude.</t>

<t>The mail client application may choose the mail configuration database provider. A
public mail configuration database is available at base URL <spanx style="verb">https://v1.ispdb.net/</spanx>.</t>

<t><spanx style="verb">%ISPDB%</spanx> below is the base URL of that database.</t>

<t><list style="symbols">
  <t>2.1. <spanx style="verb">%ISPDB%%EMAILDOMAIN%</spanx> (Recommended)</t>
</list></t>

<t>For example:</t>

<t><list style="symbols">
  <t>2.1. <eref target="https://v1.ispdb.net/geologist.com">https://v1.ispdb.net/geologist.com</eref></t>
</list></t>

</section>
<section anchor="mx"><name>MX</name>

<t>Many companies do not maintain their own mail server, but let their email be
hosted by a hosting company, which is then responsible for the email of dozens
or thousands of domains. For these hosters, it may be difficult to set up the
configuration server (step 1.1.) with valid TLS certificate for each of their
customers, and to convince their customers to modify their root DNS
specifically for Autoconfig. On the other side, the ISPDB can only contain the
hosting company and cannot know all their customers. To handle such domains,
the protocol first needs to find the server hosting the email.</t>

<t>If the previous mechanisms yield no result, the client <bcp14>SHOULD</bcp14> perform a DNS MX
lookup on the email domain, and retrieve the MX server (incoming SMTP server)
for that domain. Only the highest priority MX hostname is considered. From
that MX hostname, 2 values are extracted:</t>

<t><list style="symbols">
  <t>Extract only the second-level domain from the MX hostname, and use that as
value for <spanx style="verb">%MXBASEDOMAIN%</spanx>. To determine the second-level domain, use the
<eref target="https://publicsuffix.org">Public Suffic List</eref> or a similarly suited method,
to correctly handle domains like <spanx style="verb">.co.uk</spanx> and <spanx style="verb">.com.au</spanx>.</t>
  <t>Remove the first component from the MX hostname, i.e. everything up to and
including the first <spanx style="verb">.</spanx>, and use that as value for <spanx style="verb">%MXFULLDOMAIN%</spanx>. Use it
only if it is longer than <spanx style="verb">%MXBASEDOMAIN%</spanx>.</t>
</list></t>

<t>For example:</t>

<t><list style="symbols">
  <t>For <spanx style="verb">mx.example.com</spanx>, the MXFULLDOMAIN and MXBASEDOMAIN are both
<spanx style="verb">example.com</spanx>.</t>
  <t>For <spanx style="verb">mx.example.co.uk</spanx>, the MXFULLDOMAIN and MXBASEDOMAIN are both
<spanx style="verb">example.co.uk</spanx>.</t>
  <t>For <spanx style="verb">mx.premium.europe.example.com</spanx>, the MXFULLDOMAIN is
<spanx style="verb">premium.europe.example.com</spanx> and the MXBASEDOMAIN is <spanx style="verb">example.com</spanx>.</t>
</list></t>

<t>Then, attempt to retrieve the configuration for these MX domains, using the previous
methods:</t>

<t><list style="symbols">
  <t>3.1. <spanx style="verb">https://autoconfig.%MXFULLDOMAIN%/mail/config-v1.1.xml?emailaddress=%EMAILADDRESS%</spanx> (Required. <spanx style="verb">emailaddress</spanx> is Optional)</t>
  <t>3.2. <spanx style="verb">https://autoconfig.%MXBASEDOMAIN%/mail/config-v1.1.xml?emailaddress=%EMAILADDRESS%</spanx> (Recommended. <spanx style="verb">emailaddress</spanx> is Optional)</t>
  <t>3.3. <spanx style="verb">%ISPDB%%MXFULLDOMAIN%</spanx> (Recommended)</t>
  <t>3.4. <spanx style="verb">%ISPDB%%MXBASEDOMAIN%</spanx> (Recommended)</t>
</list></t>

<t>For example:</t>

<t><list style="symbols">
  <t>3.1. <spanx style="verb">https://autoconfig.premium.europe.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</spanx></t>
  <t>3.2. <spanx style="verb">https://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</spanx></t>
  <t>3.3. <spanx style="verb">https://v1.ispdb.net/premium.europe.example.com</spanx></t>
  <t>3.4. <spanx style="verb">https://v1.ispdb.net/example.com</spanx></t>
</list></t>

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

<t><list style="symbols">
  <t>4.1. <spanx style="verb">%USER_CONFIGURATION_DIR%/isp/%EMAILDOMAIN%.xml</spanx> (Optional)</t>
  <t>4.2. <spanx style="verb">%APP_INSTALL_DIR%/isp/%EMAILDOMAIN%.xml</spanx> (Optional)</t>
</list></t>

<t>For example:</t>

<t><list style="symbols">
  <t>4.1. <spanx style="verb">/home/fred/.config/acmemailapp/isp/example.com.xml</spanx></t>
  <t>4.2. <spanx style="verb">/opt/acmemailapp/isp/example.com.xml</spanx></t>
</list></t>

</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 target="security"/> <em>Security considerations</em>.</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 <bcp14>SHOULD</bcp14> give the end user the ability to
manually enter a configuration, and use that configuration to configure the
account.</t>

</section>
</section>
<section anchor="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. While doing so:</t>

<t><list style="symbols">
  <t>At least the second-level domain name(s) of the hostnames involved <bcp14>MUST</bcp14> be
shown clearly and with high prominence.</t>
  <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>
  <t>Care <bcp14>SHOULD</bcp14> be taken with international characters that look like ASCII
characters, but have a different code.</t>
</list></t>

</section>
<section anchor="login-test"><name>Login test</name>

<t>After the user confirmed the configuration, the mail client <bcp14>SHOULD</bcp14> test the configuration,
by attempting a login to each server configured. Only if the login succeeded,
and the server is working, should the configuration be saved and retrieving
and sending mail be started.</t>

</section>
<section anchor="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 that he is
logging in at the expected page, e.g. the login server of their company,
instead of the email hoster's page. It is important that the user verifies
that he enters the passwords on the right domain.</t>

</section>
</section>
<section anchor="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>

<t><list style="symbols">
  <t>Configuration fields <bcp14>MUST NOT</bcp14> contain invalid or non-working
configuration data.</t>
  <t>The provided configuration <bcp14>MUST</bcp14> be working,
and <bcp14>SHOULD</bcp14> use state-of-the-art security.</t>
  <t>Configurations <bcp14>MUST</bcp14> be public and <bcp14>MUST NOT</bcp14> require
authentication (see below).</t>
</list></t>

<section anchor="single-domain"><name>Configuration location for single domain</name>

<t>The configuration file <bcp14>SHOULD</bcp14> be published at the URL for
step 1.1., i.e.</t>

<t><list style="symbols">
  <t><spanx style="verb">https://autoconfig.%EMAILDOMAIN%/mail/config-v1.1.xml</spanx></t>
</list></t>

<t>e.g. for <spanx style="verb">fred@example.com</spanx></t>

<t><list style="symbols">
  <t><spanx style="verb">https://autoconfig.example.com/mail/config-v1.1.xml</spanx></t>
</list></t>

</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 as listed in the previous section is
preferred.</t>

<t>Alternatively, the configuration file <bcp14>SHOULD</bcp14> be published at
the locations for step 3.1. and 3.2., i.e.</t>

<t><list style="symbols">
  <t><spanx style="verb">https://autoconfig.%MXFULLDOMAIN%/mail/config-v1.1.xml</spanx></t>
  <t><spanx style="verb">https://autoconfig.%MXBASEDOMAIN%/mail/config-v1.1.xml</spanx></t>
</list></t>

<t>For example, if the MX server for customer domain example.net is
<spanx style="verb">mx.premium.europe.example.com</spanx>, then the configuration file should be at both</t>

<t><list style="symbols">
  <t><spanx style="verb">https://autoconfig.premium.europe.example.com/mail/config-v1.1.xml</spanx></t>
  <t><spanx style="verb">https://autoconfig.example.com/mail/config-v1.1.xml</spanx></t>
</list></t>

</section>
<section anchor="no-authentication-for-config"><name>No authentication for config</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 <spanx style="verb">fred</spanx> or <spanx style="verb">fred@example.com</spanx> or <spanx style="verb">fred\EXAMPLE</spanx>).
Given that this information is required for authentication,
the Autoconfig file itself cannot require authentication.</t>

</section>
<section anchor="oauth2"><name>OAuth2 requirements</name>

<t>If OAuth2 is used, the OAuth2 server <bcp14>MUST</bcp14> adhere to the <xref target="OAuth2Client"></xref> specification,
including all <bcp14>SHOULD</bcp14> requirements. Given that
* authURL
* tokenURL
* client ID
* scope
are provided in the AutoConfig response, 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. The remaining guarantees in the
<xref target="OAuth2Client"></xref> specification that the OAuth2 server gives to the mail client stay in force,
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 cartell 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>

<t><list style="symbols">
  <t>accept the client ID that is given in the configuration file, or if that is not given,</t>
  <t>implement Dynamic Client Registration <xref target="RFC7591"/> in the way
as defined by <xref target="OAuth2Client"></xref> and accept the resulting Client ID,</t>
</list></t>

<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
clients 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 adminstrative access to the core of the entire organization.</t>

<t>Multi-factor authentication might not defend against such attacks, because the
user may believe to be logging into his email and therefore comply with any
multi-factor authentication steps required.</t>

</section>
<section anchor="dns"><name>DNS</name>

<t>Any protocol that relies on DNS without further validation, e.g. http, should
be considered insecure.
This also applies to the DNS MX lookup and the https calls that base on its
results, as described in <xref target="mx"/> <em>MX</em>.</t>

<t>One possible mitigation is to use multiple different DNS servers and verify
that the results match, e.g. to use the native DNS resolver of the operating
system, and additionally also query a hardcoded DoH (DNS over HTTPS) server.</t>

<t>Nonetheless, the result should be used with care. If such configs are used,
the end user <bcp14>MUST</bcp14> explicitly confirm the config, particularly the resulting
second-level domains. See <xref target="user-approval"/> <em>User approval</em>.</t>

</section>
<section anchor="http"><name>HTTP</name>

<t>HTTP requests may be intercepted, redirected, or altered at the network level.
See <xref target="risk"/> <em>Risk</em> above.</t>

<t>Even if an http URL redirects to a https URL, and the domain of the https URL
cannot be validated against the email domain, that is still insecure.</t>

<t>For that reason, clients <bcp14>MUST</bcp14> prefer HTTPS over HTTP during 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
config, particularly the resulting second-level domains. See <xref target="user-approval"/> <em>User approval</em>.</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 <bcp14>SHOULD</bcp14> 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 <bcp14>SHOULD</bcp14> be updated regularly and hosted on a
dedicated secure server with all unnecessary services and server features
turned off.</t>

<t>For the ISPDB, additions and modifications to the configurations are
applicable to all respective users and must be made with care. The
authenticity of the configuration <bcp14>MUST</bcp14> be verified from authorative sources.
Server hostnames <bcp14>MUST</bcp14> be compared with the email domain names they are
serving, and if they differ, the ownership of the server hostnames <bcp14>MUST</bcp14> be
validated.</t>

<t>The risk is mitigated to some degree by <xref target="user-approval"/> <em>User approval</em>.</t>

</section>
</section>
<section anchor="alternatives-considered"><name>Alternatives considered</name>

<section anchor="dnssec"><name>DNSSEC</name>

<t>Due to their top-level domain, some domains do not have <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 2 reasons:</t>

<t><list style="numbers" type="1">
  <t>DNS SRV relies on insecure DNS and the configuration can therefore be trivially
spoofed by an attacker. See also DNSSEC above.</t>
  <t>DNS SRV does not provide all the necessary configuration parameters. For
example, we need all of:</t>
</list></t>

<t><list style="symbols">
  <t>the username form (<spanx style="verb">fred@example.com</spanx>, or <spanx style="verb">fred</spanx>, or <spanx style="verb">fred\EXAMPLE</spanx>, or even
a username with no relation to the email address)</t>
  <t>authentication method (password, CRAM-MD5, OAuth2, SSL client certificate)</t>
  <t>authentication method parameters (e.g. OAuth parameters)</t>
</list></t>

<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 <spanx style="verb">CAPABILITIES</spanx> or POP3
<spanx style="verb">CAPA</spanx>, are not reliable. Many email servers advertize authentication methods
that do not work.</t>

<t>Some IMAP servers are default configured to list all SASL authentication
methods that have corresponding libraries installed on the system, independent
on whether they are actually configured to work. The client receives a long
list of authentication methods, and many of them do not work. Additionally,
the server response may be only "authentication failed" and may not indicate
whether the method failed due to lack of configuration, or because the
password was wrong. Because some authentication servers lock the account after
3 failed login attempts, and it may also fail due to unrelated reasons (e.g.
username form, wrong password, etc.), the client cannot blindly issue
countless login attempts. Locking the account must be avoided. So, simply
attempting all methods and seeing which one works is not an option for the
email client.</t>

<t>Additionally, some email servers advertize <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 capabilties 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 has been implemented by:</t>

<t><list style="symbols">
  <t><eref target="https://thunderbird.net">Thunderbird</eref></t>
  <t><eref target="https://parula.beonex.com">Parula</eref></t>
  <t><eref target="https://projects.gnome.org/evolution/">Evolution</eref></t>
  <t><eref target="https://userbase.kde.org/KMail">KMail</eref></t>
  <t><eref target="https://www.kontact.org">Kontact</eref></t>
  <t><eref target="https://k9mail.app">K9 Mail</eref> and
<eref target="https://www.thunderbird.net/mobile/">Thunderbird Mobile</eref></t>
  <t><eref target="https://email.faircode.eu">FairEmail</eref></t>
  <t><eref target="https://apps.nextcloud.com/apps/mail">NextCloud email</eref></t>
  <t><eref target="https://delta.chat/">Delta Chat</eref></t>
</list></t>

<t>and likely other mail clients.</t>

</section>
<section anchor="servers"><name>Servers</name>

<t>A large number of email domains already 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="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" 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>

<t><list style="symbols">
  <t>Element: The XML element wrapping the server section.</t>
  <t>Type: The <spanx style="verb">type</spanx> attribute value of the server section.</t>
  <t>Base: Whether the protocol is URL-based or TCP-based,</t>
  <t>Name: The commonly used name of the protocol</t>
  <t>Specification: Which RFCs or document specifies the protocol, and</t>
  <t>Additional Elements: (Optional) Protocol-specific XML elements and
their meaning.</t>
</list></t>

</section>
<section anchor="initial-registration"><name>Initial registration</name>

<texttable>
      <ttcol align='left'>Element</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Base</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Specification</ttcol>
      <ttcol align='left'>Additional Elements</ttcol>
      <c>incomingServer</c>
      <c><spanx style="verb">jmap</spanx></c>
      <c>URL</c>
      <c>JMAP</c>
      <c>RFC 8620, RFC 8621, RFC 8887, RFC 9610 et al</c>
      <c>&#160;</c>
      <c>incomingServer</c>
      <c><spanx style="verb">imap</spanx></c>
      <c>TCP</c>
      <c>IMAP</c>
      <c>RFC 9051 or RFC 3501, et al</c>
      <c>&#160;</c>
      <c>incomingServer</c>
      <c><spanx style="verb">pop3</spanx></c>
      <c>TCP</c>
      <c>POP3</c>
      <c>RFC 1939, RFC 5034</c>
      <c>&#160;</c>
      <c>outgoingServer</c>
      <c><spanx style="verb">smtp</spanx></c>
      <c>TCP</c>
      <c>SMTP</c>
      <c>RFC 5321, RFC 2822</c>
      <c>&#160;</c>
      <c>calendar</c>
      <c><spanx style="verb">caldav</spanx></c>
      <c>URL</c>
      <c>CalDAV</c>
      <c>RFC 4791</c>
      <c>&#160;</c>
      <c>addressbook</c>
      <c><spanx style="verb">carddav</spanx></c>
      <c>URL</c>
      <c>CardDav</c>
      <c>RFC 6352</c>
      <c>&#160;</c>
      <c>fileShare</c>
      <c><spanx style="verb">webdav</spanx></c>
      <c>URL</c>
      <c>WebDAV</c>
      <c>RFC 4918</c>
      <c>&#160;</c>
      <c>chatServer</c>
      <c><spanx style="verb">xmpp</spanx></c>
      <c>URL</c>
      <c>XMPP</c>
      <c>RFC 6120, RFC 6121, RFC 7395</c>
      <c>&#160;</c>
      <c>chatServer</c>
      <c><spanx style="verb">xmpptcp</spanx></c>
      <c>TCP</c>
      <c>XMPP</c>
      <c>RFC 6120, RFC 6121</c>
      <c>&#160;</c>
      <c>chatServer</c>
      <c><spanx style="verb">matrix</spanx></c>
      <c>URL</c>
      <c>Matrix</c>
      <c><eref target="https://spec.matrix.org">https://spec.matrix.org</eref></c>
      <c>&#160;</c>
      <c>setupServer</c>
      <c><spanx style="verb">managesieve</spanx></c>
      <c>TCP</c>
      <c>ManageSieve</c>
      <c>RFC 5804, RFC 5228</c>
      <c>&#160;</c>
      <c>incomingServer</c>
      <c><spanx style="verb">ews</spanx></c>
      <c>URL</c>
      <c>Exchange Web Services</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>incomingServer</c>
      <c><spanx style="verb">activeSync</spanx></c>
      <c>URL</c>
      <c>ActiveSync</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>incomingServer</c>
      <c><spanx style="verb">graph</spanx></c>
      <c>URL</c>
      <c>Microsoft Graph</c>
      <c>&#160;</c>
      <c>&#160;</c>
</texttable>

<t>The Additional Elements field is empty in all of the initial values.</t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">

<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="Jenkis" fullname="Neil Jenkins">
      <organization>Fastmail</organization>
    </author>
    <author initials="B." surname="Bucksch" fullname="Ben Bucksch">
      <organization>Beonex</organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="Matrix" target="https://spec.matrix.org">
  <front>
    <title>Matrix protocol specification</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </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="April" year="2001"/>
    <abstract>
      <t>This document specifies a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2822"/>
  <seriesInfo name="DOI" value="10.17487/RFC2822"/>
</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="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 title='Informative References' anchor="sec-informative-references">

<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></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="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="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>
<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>



    </references>

</references>


<?line 1426?>

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

<t><list style="symbols">
  <t>using <spanx style="verb">text</spanx> for the content of every value-bearing element, so that values
that are not defined here still validate, for example a future <spanx style="verb">socketType</spanx> or
<spanx style="verb">authentication</spanx> method. The values defined by this document
are listed in comments next to the corresponding patterns</t>
  <t>allowing any attribute whose name is not defined for a given element, using
the <spanx style="verb">attribute * - (...)</spanx> and <spanx style="verb">attribute * { text }</spanx> patterns</t>
  <t>allowing any element whose name is not defined by this schema, at every
extension point, using the <spanx style="verb">extensionElement</spanx> pattern.</t>
</list></t>

<t>Known elements are still validated against their own definitions. A malformed
known element (for example, a <spanx style="verb">&lt;port&gt;</spanx> 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>

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

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+19e3PbVpbn//gUGLlSbadIypIfsb2JM7KtJOqRbK8lTzKV
nQpBEpLQJgkOAEpWy/4u+1n2k+35ncd9AKDkJD27s1Wbqm6LwMV9nHvuued9
hsNh0hTNPH+Wbh1lxTzdWzfltFyeFmdbSTaZVPkFvcmCh9Osyc/K6upZWixP
yySZldNltqDvZ1V22gyLvDkdLqgn+t+yGfovh3P6sG6Sej1ZFHVdlMvmakWf
Heyf/JCmd9JsXpc0VLGc5auc/m/ZbA3SrXxWNGVVZHP8ONh7Qf+UFf317uSH
rWS5Xkzy6lkyo56fJTRMnS/rdf0sbap1ntDEd5OsyrNnaVY1yWVZfTiryvXq
Weqml3zIr+j57FmSDlOZpv9rXWUNzRIP/Crs16yop+VFXuE3usO/uf1xcLT3
Fv++ffP2Af49Pjrh33/F84t8uabZpmlnMmkqEPmZZlosz9If0YCeokXQ7p8B
4lFZ0VxoYdPzZ+l506zqZ9vbaIInxUU+skbbeLA9qcrLOt92fWxj/KI5X08I
5JN8OVlPP9TULtiuepVPt6iZbBs1s1F885F0MSrK9ofbtyDD6LxZzLeShJ6c
lxXATyOl6el6Phdk2nqRL9MXMswWv6O1ZMvi77wnz9IXebnMP/KLXOCDZYx0
Yv884dejabmgQZZltaDPLhjqbwjBz3dfzgtCsGf8fZNVZ3njoUjYlDVVNv2Q
Vx6KhOX9ayqxhOFqPZkX023pT44TD5S+rcrTYp6np4S1bwiv07fcMpUJ1PyB
AwL/N9R/UzpfhMqvR+lf8+WHonaPBUCvczqs/GbpX9FMn6U/ZHUjmNjX34uR
gbXVYQDwuL8A1HzQ0t37u4/o5xFBqfjYD0PgwGjBDRRTHVzks3RVlUCGeYqm
xWkxlcOWgKgE2+XJ0c5op3+sy8tL23feqp1t6vtv+bSpA6zUw7ytOIo9GcpA
jIrhBP2QKR1wEKqUxr59p/4xkL1PP9/tH+798vrH/uVW+Tz7uDzjpRJ+r7Jp
M9y9f393Z2d3p7OWLe4qff1j+lKapsdXyyb7uHX7cv46IiTNqg+txfyV/r8O
3tjE7+8mSTIcEnWc1Dg9TZLs+U1uzrOGKPycqJCc1zRbrea66XXalGmdN+l6
lcq76bRc0+lIs+UsxXqbfOYfXhLRScvl/Ip6za232azKa/lgldU1iPooSQ6a
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
N7jVR6BjjV90rUgyXNuOJKNz/tk6q+df5KfTmuMmfx3sYdKbPUlTW6khJIJD
wMwm8DLLQmFAPIpUsECCrXT8888/D4MIOroZfCQhBOMxw3X8LAyzc84umKFn
d+msQl/S7vFZKl0ItVTcHPIzbscX6+Md4glZByjBeH9uQO0jHlEehkPSmcSI
gnN/cok5EafKjyh98sn45tH96GSIznSzzzdGDVUfocvq9TWnlgU/laa/9YQb
wrn3dYkZnagDrbMBINmsfFDUSQcJNxy8sXPeVfQPbE7tPtoHkkHS0yO7LEto
uvr+rud53eN+xFl0g6jomr2RTHHVVj4E7X5jcVw7oJ1zYhQ6aMWLhq8lr5jm
vPqNvYuuJI0STQ7ZuJSo2VXoyVl6Nxz/nruJvvAydT/hHBe+7dxPZvQKLil7
FN9U7rGmwQss012CQut6O8+m+TnHLtXOr6bKV3jsVB/CB4n3RLPO5kJRDOtX
QReAdNilep0T09nlg/4Q40A9DZIvZBQ2M1pRYpDfkxRkQ0KQL4iY/+MhO3+C
NwPW2hI6/NIXLbuNic5o6zHRPbqFZ3KdbmCckPH7SpIcSSJDm7ipvo1lwqpY
m9VeUXtz2pNnvaefOP+8Tj/Ws2ersi5whg9ozvDI+sy3PGSlFXsF7QwfP3r0
4NGGlfFoflUFe0EW2pVL2GrrtF41Z725fDgnbLkmMDcojp3zmdNw6mURJ1JN
uoZOVrI5PFS4+Qcd6N2Ewx2XAG+pD+y1/uEtqBB0Pe5Rs11avi2hYYHiNIm0
1kufprXOhW+hmY/BCWhGwZDlNrgrOUPmGEmh4zJ777IF+J/o4QX9EIn34WO+
dWk0sQcE7n4weHbjPdTtxvkGOdJlOW1hVS2IjIo1wiig0C3N9Ky6YNEizwgs
tQSLYIEKAFrly77FidnBSa7rpUuok3J6It2lgaidl+18Qp7Uu6w9DvGcpjzO
084ws3eslXoEfQmJEE5739G9u67symHjMdbefXjaaOo195HOGe7Jqj1vreI0
K+YS5XBJNwh8A9XdcdDWdieppMbmnKA8AeefSaI+c8sBx6d5cxEYJDxaebmU
gTlY+EPN08lA2NZzNalyVlMEFc9djleSsdjzC8ZW9QtdrAh/yiVHjbFnKfaa
N4w2+n2wiTpVxh2+LZdqcMG6lzC8K5RG6RFjIk0pMEbOS2RDFqSrR+kreDdi
ZaIrx1WNEwEuTSW3A0sQWMvBJAqDJupNMHDmHjtxpTLM3r6UtA0M2r3YFdia
EmRl4tCaZb2ufFKiJHwfxhhEdFNdyovIaZw92JcloTu1FjNCZ0Ske3YbpSxq
F0/cOh2yUI9He/+WXmaVj/lWapTMoPWqxNCR1R94svyep6WehMRAwbLtsq3y
dqI7ObuzJGwsbh/sXaYWucYlMG3ngAqxeOKc0sxVVrQL3mPWYxTS5Id3bXqe
IX29wLsNNu2tfw4uw2cPsJHDvzJAtyYVYjfvfIA2HvRIbs93bP4RGVC5deEM
8GJMDOTf9hw4NDeHa++UPVdiDKUttexMkp4WxWS8L2bGxAXouWnmvHZ041Ur
MEFz8n2fwfZmRckGPcmXMI3/D6s+WsDoaD185gY9jVJwIVyFSc3qiQCOKIky
CWeSVU6UXfqkXnNkseR2wGvhJbrQJlp8nAfJus1mzQ0g4b8HldTJNRxUII7k
veqcnrm6W5f6ussoLQE0jongK4Fh7S6Te+G62rI5L5M6Y2cRbjHm9HzsJiK/
OU/fuA2KUQQBd/9AX7JM/XVUchTVeR7AJNAkpemBhG/VOpYl8xuztUh/MM+w
A56BnbB8mj9u5X+KxevBjrY75u+Pf9ob7j56PHx7+P6Y2/NjUfV8wxZHMTbr
sjhsHwRhcqXRJ95ILqLHFaT+vpUzRF6fHB4RDA7FX+jnYjlDMlIJ8A/SU6MZ
YIN/L3b5yx+Pj/feHowRM/z9v+QVcf4lGz8fsklIzJTfSyNe6DcPH8hCsStE
aOb5EJq9MhgnEot5kFbyQxrtjWAo8cXbLtvhQJkqpfJgVfO6Ce889SmEL8OG
7Il2/eJWQ/GGui4muJW447lWCLEG3N0cl6ZeaYiLkMMieLH/y8n+u9d7h2PT
g2Mj1Yb68CGMnIN0z6Ld90ZOfzfW4koj7efN3vuTn17s773bfze2PoZeK/fN
Yxiw0rvqtHhPfFHGv/Bnu+P07szxQ5xprYU2f1p9t0l5R8vRXTt4O1TzK9Ma
yUoYZKsxvRz8Q+keIwGhaFPygXmqBW4VtJGzRdE0oTwCt9ODtz5kTn06VX7h
ry30ht0P2TStnCNHCTErucwbToCP7197TxPv9H/AdS7yJmQ2nRMW/LsmxJp/
oHHLCRw+4L81zWtjR9+Z8xZb2Jwk4kl4fcud6dSTfFk97xKNnht0r3ekLk7y
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
2SlQrgNXEntr8XEzhrX7jiCGR63JB4Dj//yV1nl1baf564Fd1EEXHtqdLvyr
ni4UhiHd7oIyfNsHUdDR2xEpbNXGJL0obt9tbtiZIT/tm9k8I3biho3mvd4d
ztnnOj04fsNfrDmJWjnLN64l6veWTRbCetySgv4gXR1GTHx8fgat4zNwFGwQ
ErCBp18D7ccTsUGHdomLhadeHEp9bjWaOd4IwpNKF+k+qz0ilp8rG6qlwznU
QIGWcfEYthoihPW/STSCoxF3hJWCM02tqjsfDRuEtkM+DQ0/rbLTkyvXm/NW
ubtJnrmnwoMIrdbKEM4jAWSBmy4mRS1NUyeWULNbJv04FXUZ4NTdFp/ye7kS
7ab/dPHLFhkOSEj7zXULMEKDWlQ7+L79pv/7lp0i+L79pv/7lo0i+L79pv/7
ln0i+L79ZsP8Y61/OP/Wm/7v20fOf99+0/99y0AQfN9+0/2+S6Ja4vof5f2A
tB14Bg833GcOy8PPgocbPuMT0R4teBh+RjL/M7qlOcL+QNRhdOAAhZ3h40eP
HjwSoPrDFcDTP+xOhLvYOj4+3Eq36d+TvXcnJ4fH/IMTCgjb4ISFCC7+4aZL
unW+23dg63XfZSj+mjdeh3dEFSK8dJ3V882sTqu3ziXY7XzDf8bDm3fhkDMF
o4utQbolfudbfVeqZiX5ozdpC1+VJ2/DVR8H8LTdCSHzDxHtvoD/sYH4v++i
zXePN5wQN7P40+jxhk91Je1Ro8cbPpW1dz6NHm/41IEr/jR6fOOnAt7Op/p4
0zkT3OoLP/4jmNaVg1VQv0ka1ib/Kaz2TSj2vwGyPnL/8gMBAA==

-->

</rfc>

