From: Jonathan Grobe (grobe@netins.net)
Date: Sat Apr 08 2000 - 18:24:37 CDT
[From news.software.nntp:]
Subject: Re: [ANNOUNCE] Diablo 2.0 BETA01 Available
From: curt@kcwc.com (Curt Welch)
Date: 08 Apr 2000 23:11:51 GMT
Russ Allbery <rra@stanford.edu> wrote:
> Joe Greco <jgreco@ns.sol.net> writes:
>
> > Fascinating. I'd investigate the INN sources to see what it is trying
> > to do, but I'm way too lazy.
Well, I've just spent an hour or so reading through RFCs and all I can
say is that I'm more confused now than when I started.
I based my code on son-of-1036 and it's been rejececting those same
message-ID (i.e, <blah_[1.2.3.4]@ns.sol.net> stuff.
Looking at 822, 1036, son-of-1036, USEFOR, and DRUMS, I conclude that
in all of those, the above ID is invalid because of the [ and ].
But all the standards are also inconsistent. What a mess. And even the
new USEFOR seems to have problems. It starts by droping one of the " in
the double quote convention (a typo no doubt). Then makes reference
to strict-qtext strict-quoted-pair which I can't find defined anywhere.
Basically, most the standards define a few special characters which
can only be used in the ID if they are quoted. [ ] are characters that
must be quoted in all the standards.
822 says that atoms must be quoted. So for example, you could do this:
<"[special_stuff]".a.b@domain>
that is, you don't have to quote the entire local part, but you can.
USEFOR seems to say that if there's a special character, you must quote
the entire local part:
<"[special_stuff].a.b"@doman>
USEFOR seems to allow spaces if they are quoted:
<" whie space ok here"@domain>
Which is totaly bogus if it does.
USEFOR seems to allow use of the \ to escape special characters,
as in:
<\[special\].a.b@domain>
822 says \ can't be used within atoms (i.e. the above isn't allowed).
son-of-1036 doesn't allow quoting (of any type) to be used in Message-IDs.
So you just can't use [ and ] period. It also throws in ! as a special
character which can't be used in Message-IDs. With son-of-1036,
even this: <asdfasdf@[12.12.12.12]> is an invalid Message-ID.
> All becomes clear when you remember that according to RFC 822, a message
> ID has exactly the same syntactic form as an e-mail address.
Yeah, but 822 isn't a Usenet standard, it's a mail standard. And _NONE_ of
the usenet article standards allows unrestricted e-mail message-IDs to be
used in Usenet. They all restrict the e-mail standards somehow. Some
more so than others.
> user@[255.255.255.255] is a syntactically valid e-mail address, and
> therefore a syntactically valid message ID. [user]@example.com is
> neither, but "[user]"@example.com is. There's a comment in the INN
> sources comparing RFC 822 quoting rules to a particularly malevolent
> diety, however, so I'm not sure how well it deals with quoting.
son-of-1036 doesn't allow any of those examples (quoted or unquoted),
but the the rest of them do if you quote it like you said.
At this point, I'm quite lost when it comes to figuring out what my
news server should allow and/or reject when it comes to message-IDs....
Part of me feels like throwing alway all checking and going with the
Diablo <[^>]*> type of syntax. But when I look at the list of rejected
Message-IDs, most of them look like bogus crap that should be rejected
(and I suspect many are spam).
This quoting stuff really doesn't belong in Usenet Message-IDs and
to me, <"v0422082bb5131fffe60e_[10.66.51.205]"@ns.sol.net> is
worse than <v0422082bb5131fffe60e_[10.66.51.205]@ns.sol.net>.
I allow [IP-ADDR] as the domain part of the ID now, but only if it's
the entire domain name and only if it strictly follows the N.N.N.N format
where N is 0 to 255.
I think what I'm going to do is just allow [IP-ADDR] in the local-part and
treat it the same as any other single valid character. That seems to be a
simple way to make the ns.sol.net IDs valid without really allowing any of
the other crap I normally reject.
I rejected about 250 messages in the past day because of Bad Message-IDs
and only 8 of those where the ns.sol.net IDs like the one above.
My current "valid Message-ID" syntax is bascially:
msg-id = < local-part @ domain >
local-part = dot-atom-text
dot-atom-text = 1*atext *( . 1*atext )
domain = [IP-ADDR] / dot-atom-text
atext = any printable ASCII character other than:
! ( ) < > @ , ; : \ " . [
And for the sol.net hack, I'll just make [IP-ADDR] act like
a valid atext character when used in the local-part.
-- Curt Welch http://CurtWelch.Com/ curt@kcwc.com Webmaster for http://NewsReader.Com/