<?xml version="1.0" encoding="US-ASCII" ?>
<!DOCTYPE rfc SYSTEM "http://xml.resource.org/authoring/rfc2629.dtd" [
    <!ENTITY rfc2119 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
    <!ENTITY rfc3629 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3629.xml'>
    <!ENTITY rfc3987 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3987.xml'>
    <!ENTITY rfc4343 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4343.xml'>
    <!ENTITY rfc4406 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4406.xml'>
    <!ENTITY rfc4408 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4408.xml'>
    <!ENTITY rfc4952 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4952.xml'>
    <!ENTITY rfc5198 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5198.xml'>
    <!ENTITY rfc5234 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5234.xml'>
    <!ENTITY rfcSMTP PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.klensin-rfc2821bis.xml'>
    <!ENTITY rfcMAIL PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.resnick-2822upd.xml'>
    <!ENTITY rfc5335 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5335.xml'>
    <!ENTITY rfc5336 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5336.xml'>
    <!ENTITY rfc5337 PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5337.xml'>
    <!ENTITY rfcAUTH PUBLIC ''
    'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.kucherawy-sender-auth-header.xml'>
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>

<!-- no I-D - >
    <?rfc private="SPF draft" ?>
    <?rfc header="Sender Policy Framework" ?>
    <?rfc footer="draft-ellermann-spf-eai-04" ?>
<! - no I-D -->

<?rfc toc="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc strict="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc rfcprocack="yes" ?>

<rfc ipr="full3978" docName="draft-ellermann-spf-eai-04" category="exp">
<front>
    <title abbrev="SPF Email Address Internationalization">
        Sender Policy Framework: Email Address Internationalization
    </title>
    <author initials="F." surname="Ellermann" fullname="Frank Ellermann">
        <organization>xyzzy</organization>
        <address>
            <postal>
                <street></street>
                <city>Hamburg</city>
                <region>Germany</region>
            </postal>
            <email>hmdmhdfmhdjmzdtjmzdtzktdkztdjz@gmail.com</email>
            <uri>http://purl.net/xyzzy/</uri>
        </address>
    </author>
    <date />
    <abstract><t>
        UTF8SMTP is an extension of SMTP (Simple Mail Transfer Protocol)
        allowing the use of UTF-8 in the SMTP envelope for EAI (Email
        Address Internationalization) and message headers. This memo
        discusses the consequences for SPF (Sender Policy Framework).
    </t></abstract>

    <note title="Editorial note"><t>
        This note, the <xref target="iana">IANA considerations</xref>,
        and the <xref target="history">document history</xref> should
        be removed before publication. For some imported terms in
        <xref target="terms" /> the sources have to be fixed when the
        RFCs got their numbers. The draft can be discussed on
        the SPF-Discuss mailing list.
    </t></note>
</front>

<middle>
    <section title="Introduction"><t>
        Readers should be familiar with SMTP as specified in
        <xref target="I-D.klensin-rfc2821bis" />
        and the SPF terminology in <xref target="RFC4408" />.
    </t><t>
        The keywords "MUST NOT" and "SHOULD" in this memo are to be
        interpreted as described in <xref target="RFC2119" />.
    </t><t>
        For an EAI (Email Address Internationalization) overview see
        <xref target="RFC4952" />. UTF-8
        is specified in <xref target="RFC3629" />.
        An MTA is a Mail Transfer Agent, e.g., an SMTP relay.
    </t><section title="Imported terms" anchor="terms"><t>
        Some <xref target="RFC5234" /> ABNF terms used in this memo
        are specified in other sources:
    </t><figure><artwork>
        &lt;domain-spec&gt;    = &lt;see RFC4408 section 8.1&gt;
        &lt;target-name&gt;    = &lt;see RFC4408 section 4.8&gt;
        &lt;explanation&gt;    = &lt;see RFC4408 section 6.2&gt;
        &lt;textstring&gt;     = &lt;see RFCSMTP section 4.2&gt;
        &lt;Dot-string&gt;     = &lt;see RFCSMTP section 4.1.2&gt;
        &lt;Quoted-string&gt;  = &lt;see RFCSMTP section 4.1.2&gt;
        &lt;Atom&gt;           = &lt;see RFCSMTP section 4.1.2&gt;
        &lt;atext&gt;          = &lt;see RFCMAIL section 3.2.3&gt;
        &lt;UTF8-non-ascii&gt; = &lt;see RFC5336 section 2.3&gt;
        &lt;uMailbox&gt;       = &lt;see RFC5336 section 2.3&gt;
</artwork></figure></section></section>

    <section title="Background"><t>
        SMTP as specified in <xref target="I-D.klensin-rfc2821bis" />
        supports only ASCII addresses and LDH (letter, digit, hyphen)
        domain labels. The letters are ASCII letters; certain LDH-labels
        are also known as A-labels in the context of IDN
        (Internationalization of Domain Names) and <xref target="IDNAbis" />.
    </t>
    <section title="SPF HELO identity"><t>
        In SMTP sessions after an SMTP EHLO command from the client the
        server response can indicate supported SMTP extensions.
        <xref target="RFC5336" /> specifies the UTF8SMTP
        extension.
    </t><t>
        The SMTP client can accept an offered UTF8SMTP extension by
        using one of the specified features, notably by the use of UTF-8
        in mailbox addresses of SMTP commands, by the use of alternative
        ASCII addresses in these commands, or by the use of UTF-8 in
        the message header for addresses and other purposes, i.e. by
        sending a "message/global" instead of a "message/rfc822" as
        specified in <xref target="RFC5335" />.
    </t><t>
        Because UTF8SMTP support is indicated in the response to an
        EHLO command it cannot be used after HELO, and the SPF HELO
        identity is not affected by EAI:  The domain in a HELO
        or EHLO command consists of ordinary LDH-labels, or it is a
        domain literal.  For an empty reverse path, as it is used in
        non-delivery reports and other auto-replies, SPF fabricates a
        MAIL FROM identity based on the HELO identity with a case
        insensitive local part "postmaster"; this scenario is also not
        affected by EAI.
    </t><t>
        A domain consisting of LDH-labels including IDN A-labels
        beginning with "xn--" is an ordinary LDH-domain as far as
        DNS (Domain Name System), SPF, and UTF8SMTP are concerned.
        Apart from HELO and EHLO the only relevant SMTP command for
        SPF is the MAIL FROM command with the reverse path containing
        the envelope sender address (if it is not empty, see above).
        When the derived MAIL FROM identity is an ordinary address
        SPF can handle it as specified in <xref target="RFC4408" />.
    </t></section>
    <section title="EAI MAIL FROM identity"><t>
        The interesting UTF8SMTP cases for SPF contain non-ASCII
        UTF-8 characters in the local part (left hand side) or the
        domain part (right hand side) of the MAIL FROM identity.
        Domain labels containing non-ASCII UTF-8 characters are also
        known as U-labels in IDN.
    </t><t>
        SPF checks typically make only sense at the "border MTA", and
        this is normally an MX (Mail eXchanger) of the receiver
        talking with a sender.  An MTA wishing to check the SPF sender
        policy against the IP of the sender fetches the sender policy
        for the domain in the HELO or MAIL FROM identity as DNS client
        of a server for the alleged sender. The SPF terminology might
        be confusing:  The border MTA is the SMTP server, but for the
        purpose of checking a sender policy it is the SPF (or rather
        DNS) client of a name server for the alleged sender with a
        given HELO or MAIL FROM identity.
    </t><t>
        An MTA could "downgrade" EAI MAIL FROM addresses using an
        optional alternative address given as UTF8SMTP MAIL-parameter.
        Where that happens the resulting new MAIL FROM address is an
        ordinary <xref target="I-D.klensin-rfc2821bis" />
        reverse path and can be handled as usual.
    </t><t>
        Skipping all ordinary cases as noted above the SPF client
        confronted with an EAI address in the MAIL FROM identity is
        generally an MTA supporting UTF8SMTP, and supposed to know how
        to transform U-labels into corresponding A-labels, e.g., because
        it might need to send a non-delivey report to the envelope
        sender address later; see <xref target="RFC5337" />.
    </t><t>
        For agents trying post-SMTP SPF-checks this might be not the
        case, and unsurprisingly attempts to fetch the sender policy
        of a domain with U-labels "as is" will fail with SPF result
        NONE.  Arguably this is a broken setup, the border MTA should
        not offer and accept UTF8SMTP mails if critical parts behind
        it - not limited to the mailbox of the receiver - don't support
        EAI.
    </t></section>
    <section title="Local parts" anchor="havoc"><t>
        Top down at this point the remaining SPF clients are supposed
        to know how to transform U-labels into A-labels, and fetch the
        SPF policy of the alleged sender.  SPF implementors and
        publishers of SPF sender policies should note that only the
        domain part of the MAIL FROM identity is transformed from
        U-labels into A-labels.  The local part MUST NOT be transformed,
        it is used "as is" in the construction of a &lt;target&nbhy;name&gt;
        by SPF macro expansion involving local part macros.
    </t><t>
        SPF allows all octets in labels of a &lt;target&nbhy;name&gt; excluding
        dots, which are supposed to separate labels.  Sender policies can
        directly talk about any &lt;domain&nbhy;spec&gt; with labels separated
        by dots, where each label consists of 1 to 63 visible ASCII
        characters except "%" introducing macros.  The macros "%%" and
        "%_" in a &lt;domain&nbhy;spec&gt; expand into "%" or space in the
        &lt;target&nbhy;name&gt;, respectively.
    </t><t>
        Normally sender policies do not use such slightly odd labels, and
        the most extravagant case is "_" (underscore) in a label that is
        intentionally no LDH-label.  Nevertheless implementations have to
        support such oddities, because they are needed in the case of a
        &lt;target&nbhy;name&gt; derived from a &lt;domain&nbhy;spec&gt; using the
        local part macro.
    </t><t>
        SMTP local parts can have two forms, &lt;Dot&nbhy;string&gt; or
        &lt;Quoted&nbhy;string&gt;.  A &lt;Dot&nbhy;string&gt; consists of dot
        separated &lt;Atom&gt;s, each &lt;Atom&gt; consists of one or
        more &lt;atext&gt; characters.  Please note that an &lt;Atom&gt;
        is not the same as an LDH-label, it is also not the same as a
        domain label, e.g., &lt;Atom&gt;s can be longer than 63 octets.
    </t><t>
        By definition there are no leading, trailing, or adjacent dots
        in a &lt;Dot&nbhy;string&gt;. <xref target="I-D.klensin-rfc2821bis" />
        and its predecessor recommend to avoid the &lt;Quoted&nbhy;string&gt;
        form of a local part.  Current SPF implementations are known to
        strip the quotes from a &lt;Quoted&nbhy;string&gt; for the purpose of
        determining a &lt;target&nbhy;name&gt; derived from a
        &lt;domain&nbhy;spec&gt; using the local part macro. This can result
        in an invalid &lt;target&nbhy;name&gt; with leading, trailing, or
        adjacent dots, e.g., for a mail address "do..ts"@example.org.
    </t><t>
        Publishers of sender policies using the local part macro SHOULD
        make sure that the used pieces of valid local parts in their
        domain can be parsed into non-empty domain labels; one way to
        achieve this is to avoid &lt;Quoted&nbhy;string&gt;.  The effect of
        a &lt;Quoted&nbhy;string&gt; local part is not clearly specified in
        <xref target="RFC4408" />.  In theory DNS supports any octet,
        even "embedded" dots within a label.  In practice current SPF
        implementations cannot handle embedded dots, and it is far from
        clear that quoted pairs introduced by a "\" (backslash) in a
        &lt;Quoted&nbhy;string&gt; are interpreted as specified in
        <xref target="I-D.klensin-rfc2821bis" /> section 4.1.2.
    </t><t>
        Publishers of sender policies using the local part macro SHOULD
        make sure that the used pieces of valid local parts in their
        domain result in 1 to 63 octets per dot separated domain label
        as mentioned in <xref target="RFC4408" /> section 8.1.  Please
        note that the truncation of longer labels after macro expansion
        is not clearly specified:  SPF implementations could truncate
        longer labels left to right or right to left, they could also
        ignore affected directives, or treat this case as error.
    </t><t>
        Publishers of sender policies using the local part macro need
        to be aware that ASCII letters in the used pieces of valid local
        parts in their domain are in essence treated as case-insensitive
        by DNS as explained in <xref target="RFC4343" />.
    </t><t>
        UTF8SMTP extends &lt;atext&gt; by &lt;UTF8-non-ascii&gt;, and
        it also permits &lt;UTF8-non-ascii&gt; in quoted strings.  As
        far as SPF is concerned &lt;UTF8-non-ascii&gt; can result in
        non-ASCII octets in a &lt;target&nbhy;name&gt;, working "as is" in
        DNS labels with similar caveats as noted above with respect to
        the length of labels, case sensitivity, and normalization.
    </t><t>
        <xref target="RFC5335" /> suggests to restrict
        the use of UTF-8 in EAI addresses to Normalization Form C (NFC)
        as recommended in <xref target="RFC5198" />.  Publishers of
        sender policies using the local part macro need to be aware
        that SPF implementations treat local parts "as is".  Mapping
        different forms of an EAI local part to one mailbox at their
        border MTAs has no effect on different forms of EAI local parts
        in DNS queries.  A straight forward strategy to avoid potential
        issues with respect to SPF is to use local part macros only in
        non-critical explanations and maybe for logging, if at all.
    </t></section></section>

    <section title="Details"><t>
        For historical reasons technical SPF <xref target="Errata" />
        have been "outsourced".  SPF implementors are hopefully also
        interested in the SPF test suite on the same site.
    </t>
    <section title="Considerations for SPF publishers" anchor="spf"><t>
        Policy publishers should know that this memo does not update
        <xref target="RFC4408" />, in theory EAI is compatible with
        SPF.  It is not possible to use U-labels in sender policies
        directly, they have to be transformed into the corresponding
        A-labels.  Likewise U-labels in UTF8SMTP MAIL FROM addresses
        are transformed into A-labels for the purposes of SPF by
        implementations supporting EAI.
    </t><t>
        SPF implementations not supporting U-labels in MAIL FROM
        identities will return NONE instead of the intended result,
        e.g., PASS or FAIL.  UTF8SMTP senders wishing to avoid this
        problem could transform MAIL FROM U-labels into A-labels on
        their side.  They could also hope that spammers forging MAIL
        FROM identities will not abuse IDN U-labels in the near
        future, and that most SPF implementations will be updated
        before this changes.  Unfortunately experience has shown that
        spammers learn faster than lazy users.
    </t><t>
        MAIL FROM identities using only A-labels, with or without
        UTF-8 in the local part, work "as is" for the purposes of
        SPF.  HELO identities consist either of A-labels, are domain
        literals and irrelevant for SPF, or are syntactically malformed
        as far as UTF8SMTP and SPF are concerned.  SPF does not
        specify how receivers should handle SMTP syntax errors.
    </t><t>
        UTF8SMTP allows to specify an optional alternative address
        in the traditional syntax.  Receivers are free to check SPF
        also or only based on the alternative address.  Obviously a
        sender policy for the alternative address should permit the
        same sending IPs as the sender policy for the EAI address,
        and one simple way to achieve this is to use corresponding
        A-labels in an alternative address yielding one SPF sender
        policy for both addresses.  Please note that this is not
        required by UTF8SMTP, it permits to use unrelated domains
        with different policies.  Clearly if some IPs permitted for
        one address fail for the other address, or vice versa, the
        sender will have problems, if the affected IPs are actually
        used to send mails.
    </t></section>
    <section title="Received-SPF"><t>
        The Received-SPF header field specified in <xref target="RFC4408" />
        section 7 is a "message/rfc822" trace header field.
    </t><t>
        UTF8SMTP transports a "message/global" as specified in
        <xref target="RFC5335" /> permitting the
        use of UTF-8 in header fields.  For Received-SPF this is
        necessary to record an UTF8SMTP "envelope-from"
        &lt;uMailbox&gt; address.
    </t><t>
        UTF-8 might be also needed in comments and other parts of
        this header field in conjunction with UTF8SMTP.  See
        <xref target="RFC5335" /> for the
        corresponding syntax modifications.
    </t><t>
        SPF implementations could check the EAI MAIL FROM
        <spanx style="strong">and</spanx> an alternative address
        (if given).  In this case SPF implementations SHOULD
        record both results.  An exception could be to omit a
        "less interesting" (e.g., equivalent, NONE, or NEUTRAL)
        result.  Receivers could also adopt the strategy to check
        the second of two addresses only if the result of their
        first check is "not helpful" (e.g., NONE or NEUTRAL).
    </t></section>
    <section title="Internationalization of explanations" anchor="i18n"><t>
        SMTP replies consist of a reply code and optionally a
        &lt;textstring&gt; as explanation. This is the vehicle
        used by SMTP servers if they reject a mail after an SPF
        FAIL, optionally adding an explanation given in the SPF
        policy as &lt;explanation&gt;.
    </t><t>
        The &lt;textstring&gt; is limited to ASCII and hopefully
        integrated in some way in any resulting non-delivery report
        (bounce) created by the SMTP client. UTF8SMTP does
        <spanx style="strong">not</spanx> modify this restriction
        to ASCII &lt;textstring&gt;s in contexts relevant for SPF.
    </t><t>
        The optional SPF &lt;explanation&gt; is in essence a
        pointer to a domain with a TXT record. The macro-expanded
        content of this TXT record can be used in the SMTP reply.
    </t><t>
        The resulting explanation can contain a URL of a Web page
        with internationalized explanations including data based on
        the sending IP, sender address, and other details given as
        SPF macros in the TXT record.
    </t><t>
        The upper-case forms of SPF macros trigger URL-encoding for
        this purpose. SPF macro expansion does not involve to parse
        textual explanations for potential URLs, it percent-encodes
        any "reserved" input character. For EAI these characters
        can be UTF-8 and have to be percent-encoded as specified in
        <xref target="RFC3987" />. This boils down to "take octets
        as is, if not unreserved percent-encode".
    </t><t>
        The procedure outlined above clearly cannot guarantee to
        produce valid URLs in an explanation.  In fact any use of
        lower-case macros could result in non-ASCII explanations,
        and in that case the SMTP server cannot use the result in
        the &lt;textstring&gt;s of its reply after an SPF FAIL.
    </t></section></section>

    <section title="Acknowledgements"><t>
        Various folks on the SPF discuss and devel mailing lists worked
        on the <xref target="RFC4408" /> errata and the SPF test suite.
        All obscure issues with local parts discussed in this memo are
        based on their prior work and indirectly related discussions
        on the EAI and SMTP mailing lists.
    </t><t>
        Thanks to
        Abel&nbsp;Yang,
        Alessandro&nbsp;Vesely,
        Boyd&nbsp;Lynn&nbsp;Gerber,
        Doug&nbsp;Otis,
        Harald&nbsp;T.&nbsp;Alvestrand,
        John&nbsp;C.&nbsp;Klensin,
        Julian&nbsp;Mehnle,
        Kari&nbsp;Hurtta,
        Kazunori&nbsp;Fujiwara,
        Scott&nbsp;Kitterman,
        Stuart&nbsp;D.&nbsp;Gathman,
        and Wayne&nbsp;Schlitt for their encouragement, feedback, or
        critique.
    </t></section>

    <section title="Security Considerations" anchor="security"><t>
        When UTF8SMTP senders use a different domain in the optional
        alternative MAIL FROM address, and the corresponding sender
        policy is also different, it is hard to predict which policy
        will be checked, if any, depending on the route to the
        receiver and other factors.  Different results can be hard
        to diagnose, e.g., if a mail from the same sender to the
        same receiver sometimes results in PASS and at other times
        in FAIL.  One proposal to mitigate this problem is discussed
        in <xref target="spf" />.
    </t><t>
        Not all SPF implementations will already support U-labels as
        explained in this memo.  Senders could transform U-labels in
        MAIL FROM commands to A-labels on their side where this is a
        problem.
    </t><t>
        Using the SPF local part macro in conjunction with EAI is not
        intuitive, local parts are not transformed to A-labels.  This
        is not new, but in conjunction with EAI very likely. Various
        details with respect to label lengths, quoted strings,
        adjacent dots, and quoted pairs are explained in
        <xref target="havoc" />.  Not using &lt;Quoted&nbhy;string&gt;s
        as local parts and not using case-sensitive local parts is
        recommended in <xref target="I-D.klensin-rfc2821bis" />
        section 4.1.2; this also covers quoted pairs and adjacent dots.
    </t><t>
        A new UTF8SMTP problem is the use of local part macros for the
        construction of "per user" policies, when different variations
        of an UTF-8 local part correspond to one user mailbox. While the
        use of normalized UTF-8 strings is recommended in
        <xref target="RFC5335" /> section 4.1 this does
        not help with case-sensitive &lt;UTF8-non-ascii&gt; variations.
        One way to address this problem is to avoid critical uses of the
        local part macro as discussed in <xref target="havoc" />.
    </t><t>
        UTF8SMTP servers can be forced to send non-delivery reports
        to forged envelope sender addresses, if some receiver mailboxes
        can handle EAI mails, while others can't, and the server has no
        way to "downgrade" mails to traditional receivers.  Hopefully a
        future SMTP extension will allow a kind of "selective reject"
        mechanism.  Publishing SPF PASS or FAIL policies, and rejecting
        FAIL at the border MTA, would eliminate this problem.  Similarly
        non-delivery reports after a PASS cannot hit innocent bystanders.
    </t><t>
        Evaluating PRA (Purported Responsible Address) policies as
        specified in <xref target="RFC4406" /> with SPF or vice versa
        can cause havoc, as the algorithms are semantically different
        even when the policies are otherwise syntactically identical.
        This known problem is discussed in <xref target="RFC4408" />.
    </t><t>
        SPF local part macros in a &lt;domain-spec&gt; could be abused
        in an attack scenario to avoid DNS caching. Compare the SPF
        processing limits in <xref target="RFC4408" /> section 10.1.
    </t></section>

    <section title="IANA Considerations" anchor="iana"><t>
        Keep up the good work, nothing to do here.
    </t></section>
</middle>

<back>
    <references title="Normative References">
        &rfc2119;
        &rfc3629;
        &rfc3987;
        &rfc4408;
        &rfcSMTP;
        &rfcMAIL;
        &rfc5335;
        &rfc5336;
    </references>
    <references title="Informative References">
        &rfc4343;
        &rfc4406;
        &rfc4952;
        &rfc5198;
        &rfc5234;
        &rfc5337;
        &rfcAUTH;

        <reference anchor='Errata' target='http://www.openspf.org/RFC_4408/Errata'>
        <front>
            <title>RFC 4408 errata</title>
            <author><organization> OpenSPF </organization></author>
            <date year='2008' />
        </front>
        </reference>
        <reference anchor='IDNAbis' target='http://tools.ietf.org/wg/idnabis'>
        <front>
            <title>Internationalized Domain Names in Applications (Revised)</title>
            <author><organization> IETF </organization></author>
            <date month="April" year='2008' />
        </front>
        </reference>
    </references>
    <section title="Document History" anchor="history"><t>
        Changes in version 04:
    </t><t>
        <list style="symbols"><t>
            Fixed two typos and the references for the published EAI RFCs.
        </t></list>
    </t><t>
        Changes in version 03:
    </t><t>
        <list style="symbols"><t>
            Added a terminology <xref target="terms" />. Apart from
            the added <xref target="I-D.resnick-2822upd" /> defining
            &lt;atext&gt; all referenced drafts are now approved RFCs.
        </t><t>
            Clarified that case-insensitive uses of &lt;UTF8-non-ascii&gt;
            can cause havoc in conjunction with local part macros.
            This is not mitigated by the recommended normalization.
        </t><t>
            Added a pointer to the <xref target="RFC4408" /> security
            considerations in <xref target="security" />.  Mentioned
            the role of local part macros in an attack scenario with
            credits to Doug Otis.
        </t><t>
            Added the missing credits for the SPF discussions on the
            EAI list back in 2006 and 2007.
        </t><t>
            Added a link to the "outsourced" <xref target="Errata" />
            mentioning the SPF test suite.  Errata and test suite
            cover some &lt;target-name&gt; issues discussed in this
            memo, notably "adjacent dots".
        </t><t>
            Added a long <xref target="i18n" /> about the wonders of
            SPF explanations with the rather trivial conclusion that
            <xref target="RFC3987" /> percent-encoding works as expected.
        </t></list>
    </t><t>
        Changes in version 02:
    </t><t>
        <list style="symbols"><t>
            This memo is about EAI, not wildcard issues elsewhere;
            replaced 4592 by <xref target="RFC4952" />.
        </t><t>
            Noted that only certain LDH-labels are or might be A-labels.
            The details are specified in <xref target="IDNAbis" />.
        </t><t>
            <xref target="I-D.kucherawy-sender-auth-header" /> not yet
            added, extending the Authentication-Results header field to
            allow UTF-8 values for EAI should be straight forward.
        </t></list>
    </t><t>
        Changes in version 01:
    </t><t>
        <list style="symbols"><t>
            Extended the local part discussion in <xref target="havoc" />
            significantly to cover known gaps in the SPF specification.
            Added potential issues with non-normalized local parts.
        </t><t>
            Added a Received-SPF section using the now "Last Called"
            <xref target="RFC5335" />.  Added references
            to <xref target="RFC4343" />, <xref target="RFC4952" />,
            <xref target="RFC5198" />, and the approved
            <xref target="RFC5337" />.
        </t><t>
            Removed the discussion of two vs. five SPF "subtypes", this
            belongs into another draft.  Kept the caveat about using an
            algorithm designed for subtype x on a policy with subtype y
            (or v.v.), as this could cause hard to debug mail losses.
        </t></list>
    </t><t>
        Initial version:
    </t><t>
        <list style="symbols"><t>
            In a short discussion on the EAI list Harald Alvestrand and
            John Klensin encouraged to collect SPF EAI considerations
            in a separate memo.
        </t></list>
    </t></section>
</back></rfc>
