Re: [apps-discuss] The authentication server id, was rfc5451bis

Alessandro Vesely <> Wed, 27 March 2013 12:15 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 62F8221F9019 for <>; Wed, 27 Mar 2013 05:15:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.719
X-Spam-Status: No, score=-4.719 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HELO_EQ_IT=0.635, HOST_EQ_IT=1.245, RCVD_IN_DNSWL_MED=-4]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id DbyqqBcFDswq for <>; Wed, 27 Mar 2013 05:15:25 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id CF98921F9047 for <>; Wed, 27 Mar 2013 05:15:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=beta; t=1364386523; bh=OKB34Luehy2eHHt7m2HkmMqHBPzNHDVjBAVtUc5qvm4=; l=5109; h=Date:From:To:References:In-Reply-To; b=UkkSSkv+Je8sulv9vbAt9HoXWjWnFK1Pia4AlaFwXUFxEpKzlWtlj7aiqYeOwkltN /8evPWU6/ovZ17Ji82rpAPpnbyCr6yHQjMgdLjwyOQttkBEMsx+sABtRkqocOSTkb4 FZGub2os+p72g5SJQJBaJmZUcbkLdMqjWjMBOI8E=
Received: from [] (pcale.tana []) (AUTH: CRAM-MD5 uXDGrn@SYT0/k) by with ESMTPA; Wed, 27 Mar 2013 13:15:23 +0100 id 00000000005DC039.000000005152E2DB.00007D90
Message-ID: <>
Date: Wed, 27 Mar 2013 13:15:23 +0100
From: Alessandro Vesely <>
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130307 Thunderbird/17.0.4
MIME-Version: 1.0
References: <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Subject: Re: [apps-discuss] The authentication server id, was rfc5451bis
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: General discussion of application-layer protocols <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 27 Mar 2013 12:15:26 -0000

On Tue 26/Mar/2013 22:33:17 +0100 Murray S. Kucherawy wrote:
>>> But to answer your question directly, any software inside an ADMD seeking
>>> to use this field would be configured to look for a particular string right
>>> after the header field name and up to the first semicolon, and if that
>>> string matches the string it's looking for, then the field can (presumably)
>>> be trusted.
>> It has better be careful to exclude the queue id from the comparison.
> If an ADMD chooses to use the authserv-id to encode details apart from an
> ADMD identifier, contrary to its stated purpose, then you're absolutely
> correct.  RFC5451 already talks about that.

Ok, that is starting to make some sense.  Maybe it's me, but reading
RFC 5451 as well as its bis I had the false impression that the spec
not only allows but even encourages such practice.  I'll try and
suggest an alternative text at the bottom.

>>>> One ADMD could be doing authentication service for lots of domains,
>>>>> but it's still one ADMD.
>>>> It's their choice whether to masquerade or not.
>>> Indeed.  And there's no reason to constrain such masquerading to
>>> "domain-name", is there?
>> There are pros and cons.  Similar arguments hold for the choice of
>> domain that an ADMD uses as d= to sign messages...
> Quite right.  Should this document be making that call?

No.  However I'd like a discourse on virtual domains, I don't think
this I-D is the right place to develop it.

>>> What [would transport tracing data and such be useful] for?
>> Anything that it might be useful for.  If we think it isn't useful,
>> then the spec should not allow it.
> So why doesn't making authserv-id a "value" accommodate that case?

It would overkill, considering that we'd tend to discourage
complicated stuff.  A "dot-atom" can have a slash, but perhaps we can
live with that.  Otherwise, a "token" can be fit.

>> It is quite complicated to let trusted domain's A-R pass through.
> Why is it quite complicated?  Trusted authserv-ids is merely a set of
> strings.  If you're looking at an A-R header field whose authserv-id is in
> that list, you've decided explicitly that its content can be trusted.
> Anything else should either be ignored or removed (depending on which agent
> is looking at it).

IMHO, the first paragraph of Section 5 is too mild.  It could be
hardened like so:

 For security reasons, any MTA conforming to this specification MUST
 delete any discovered instance of this header field that claims, by
 virtue of its authentication service identifier, to have been added
 within its trust boundary and that did not come directly from another
 trusted MTA.

 For security reasons, any MTA conforming to this specification MUST
 remove or rename any instance of this header field that was not added
 within its trust boundary.  The authentication service identifier
 (authserv-id) is used to identify the agent which added the header
 field, with the limits described in Section 7.1.

If an MTA kills only the A-Rs that it can clearly identify as
forgeries, it would let thru any A-R field bearing some unknown
identifier.  Those identifiers may be forged.  If they match a trusted
id at the next ADMD (MTA or MUA), then if the latter trusts the
former, it has no obvious reason to suspect.  It gets complicated if
one tries to derive trustworthiness from routing considerations.

Renaming rather than removing solves some issues with debugging and
signature verification, so I'd consider it anyway.

I don't understand the "(border or otherwise)", still in the first
paragraph.  If it is an internal MTA it shouldn't delete fields added
by the border MTA of  The rest of the section becomes
more stringent, which seems to be correct.

> It only gets complicated if you choose to overload that field with your own
> purposes by encoding other data in it.  If some people find that useful,
> then great, but I don't think this specification should describe how to do
> that beyond not explicitly blocking it.


>>> I don't think that (or any hack) should be encoded into the
>>> document.
>> But then why do you write:
>>                                               Moreover, some
>>  implementations have considered appending a delimiter such as "/" and
>>  following it with useful transport tracing data such as the [SMTP]
>>  queue ID or a timestamp.
>> ?
>> You can allow or prohibit that, but not both at the same time.
> Keep reading; the remainder of that section actively discourages the
> practice.

Here's the alternative text I promised above:

                                              Consistently with the
 scope limit outlined in Section 1.2, the grammar does not constrain
 the authentication identifier to be a domain name.  Improper use
 could thus consider appending a delimiter such as "#" and following
 it with useful transport tracing data such as the [SMTP] queue ID or
 a timestamp.

> There are a lot of things that standards enable but also say "You could do
> this, but there are costs involved."  This is one of them.