Re: Realisticness of header rearrangement

david nicol <[email protected]> 05 Apr 2004 16:33:19 -0500
Newsgroups gmane.ietf.asrg.filtering
Message-ID <[email protected]>
On Sat, 2004-04-03 at 21:47, Philip Miller wrote:
> [ ... potential] problems if some
> provider not directly controlled by the final recipient uses MTA software
> that rearranges headers.
> 
> > ieee, doing the tagging, will have a non-rearranging outbound MTA that
>                                         ^^^^^^^^^^^^^^^
> That's the statement I don't agree with. Because the standards don't require
> non-rearrangement, we should not depend on that behavior.

Wea re proposing a standard, therefore we can include "these do not
rearrange" as part of the standard.


> I am not opposed to signing or checksumming mechanisms as an optional
> extension. However, as the sole method of authenticating a tag header, I am
> opposed to them. I am opposed to them as the sole authentication method
> because they are much more expensive to compute than copying the date stamp, 
> and that could needlessly hinder adoption by large service providers.
> 
> > I think a key included in both Received and Tagged is superior
> > to reusing the timestamp.  Tagged would have two timestamps, if
> > there was a delay, and that would be confusing.  Received usually names
> > the receiving agent and domain, so Tagged could use the same identifying
> > information.
> 
> As far as I can tell, we are trying to design this header so that the vast
> majority of its use will be in a parsed form by a GUI MUA that presents the
> contained information to the user in a useful format or processes the mail
> as a result of the tags attached. MUA programmers are quite capable of using
> two separate variables independently.
> Anyone reading headers, who we can assume is a fairly advanced user, will
> learn pretty quickly that this one has 2 time stamps, and they are used for
> different things.

And the second use isn't a time stamp any more, therefore its confusing.
An explicit event-ID would be clearer (not confusing as a timestamp
being
used for something other than marking the time something happened))
A filter-event-id, re-use the messageID or make up a new code, could be
protected by vendor-specific checksumming, could be listed in an
independently verifiable database accessible via another channel,
etcetera,  Yes you can do all this with a timestamp but if processing
more than one message per second a timestamp/messageID tuple would be
required anyway.

> I don't think we need any particular way to sign headers. It's an expensive,
> silly proposition with limited use.

I want to add an "out of scope" section on the wiki, unless someone
beats me to it

> And I think they should, but for debugging and trust reasons. The tuple
> (hostname, received-timestamp) in a tagged header authenticates that said 
> tag was added with or after the Received header it matches. The user can 
> choose to trust or not trust the judgement made at that point in the system.
> Note: when I say 'user' here, I mean 'the user or the software under the
> user's direct control'. That would be the MUA, and in my case, my private
> email server, fda.zemos.net.
> 
> > Yes, I trust that Philip Miller uses a secure connection to upload
> > e-mail to zemos.net; that zemos.net uses amavis anti-virus software;
> > that zemos.net then passes its e-mail to comcast.net, which forwarded
> > the message to the asrg mailing list on iecc.com, where qmail copied it
> > a couple times before sending me a copy from a VERP return address.
> 
> The first half of that trust is misplaced. For all you know, I connected
> directly to the iecc.com MX and forged all the prior headers. 

> As long as I had the right IP address,

But you didn't, and the mail2.iecc.com server looked up your IP
address.  There are a lot of subtle interactons that can make
foged headers look fishy.  Other working groups are trying to
formalize an expert system about fishiness of received headers,
unless I have gist of the the charter of the path verification working
group wrong.


> Basically, it's impossible to trust headers that were added on 'my side' of
> the mailing list server.

If relays on the receiving side  don't rearrange headers, and I am
expecting to see a tag, I can rely on the relays closer to me to not
rearrange the headers and the last tag added will be first, so I won't
even see your tag, or a forged tag, because it will be hidden by the
earlier tag.

Just an off-topic note, I have received the first piece of junk mail
in my pay2send.com address ever, today, it seems that a junk mailer
has amavis-perl tag all outgoing messages with a X-Virus-Scanned:
header, which matched my far-too-trivial magic phrase "perl."

So the issue of tags added at sending of junk is very much real.  Were
I looking for an X-Virus-Scanned header with software that escaped other
X-Virus-Scanned headers that might be there already, perhaps turning
them into X-Mycompany-Hidden-Virus-Scanned, the one added on sending
would be ignored due to being rewritten; if my software that read for
that header only took the first matching header (which would require
altering current MUAs, that do not differentiate between different
instances of the same header AFAIK), a matching header placed by my
software would hide a matching header placed by the sender.


>  Making sure that tag headers are uniquely
> associated with specific Received headers means that you can choose exactly
> which step to start trusting.

no argument with this, except that a relay or processing step
administration is what we want to associate with.  Associating with a 
Received: header seems to me to be a classic case of confusing the name
of a thing for the thing.


> > Tagged:  Host=(fda[127.0.0.1]); Tagger=amavisd-new; Tue, 30 Mar 2004
> > 20:24:38 -0500 (EST); Result=CLEAN
> 
> I would write it more as follows:
> 
> Tagged: Received-from=zemos.net (phil [10.0.0.2]); Received-time=Tue, 30 Mar
>     2004 20:24:38 -0500 (EST); Host=fda.zemos.net; Tagger-name=amavisd-new;
>     Tagger-version=xxxxxx; Virus=no; Tagger-time=Tue, 30 Mar 2004 20:25:42
>     -0500;
> 
> Note the following:
> 1. Everything is a key-value pair, timestamps and all.

Received lines tend not to follow this format.  They tend to
use barewords (by, from, with) separated with whitespace to
identify the parts of the header.  I would like to issue
a reccomendation to update SMTP to make received line syntax
conform to something too.  Too much coffee?

> 2. This tag was provably added after a particular receipt in the mail
> transport system. It's ambiguous

I'd like an explicit Received-ID or Action-ID or tagging-ID to use
instead of timestamp.  Using timestamp for ID seems to me to be an
ugly kluge instead of an elegant reuse of existing information.  This
may be a purely aesthetic opinion.

> The timestamp in yours matches the timestamp in the Received lines, but I
> think it would be useful, for debugging, if nothing else, for tags to
> include the time they were added, as it may differ by quite a while from the
> time of receipt.

I agree

>  In the case of resource-intensive scans, such as virus and
> statistical or DNS-lookup-based scanners, being able to attribute a delay to
> a specific scan is a good thing.

I agree

> Philip Miller



-- 
david nicol
this message was sent from a filtering e-mail address.
"cat and buttered toast"