ietf-smtp
[Top] [All Lists]

Re: RFC 5321 VRFY and quoting syntax

2011-05-11 15:25:21

It's a bit hard to follow which part here responds to which of the 3 issues, but I'll try (within) :-)


On 05/11/2011 04:12 PM, Hector Santos wrote:

I think that is it saying for INPUT, you can take either the angle bracket or non-angle bracket form, but for OUTPUT it MUST be shown in angle bracket form. It is analogous to looking up someone by name in a phone book - ultimately it is the single output form - telephone #
Both sections I quoted in #3 explicitly discuss the server's response (not input, or client request, if I understand your terminology correctly). They are also both MUSTs. One of them requires inclusion of the construction "<local-part@domain>" in any response, whereas the other one gives a response without the brackets as one of the two allowed forms - that's the conflict I'm seeing.

I'm all for the 'being lenient in input and strict with output' motto - but the spec must be unambiguous about the output part in order to do this, and preferably also discuss the possible inputs and preferred ones.

Yes, I agree that in many areas of software, the term QUOTE can be mixed up with the idea of ESCAPING. In my opinion, ESCAPING is the proper communications term as it used in many data communications protocols.

   http://www.google.com/search?q=define:character+escaping
Terminology might be ambiguous, but in this case it's not what bothers me - I'm sticking to the ABNF syntax notation definitions and the discussion of the use of backslash for its special purpose, regardless of what we call it :-)

For VRFY, EXPN, the escaping "\" (SLASH) character is used to escape the next character which could be a formal delimiting character to separate multiple inputs. For example:

   VRFY   santos,hector,shane,cory(_at_)localhost(_dot_)com

This would be would be four "local account" user name changes,

  santos
  hector,
  shane,
  cory(_at_)localhost(_dot_)com

And depending on the host on how it looks up users, it be by some name or even address. Some systems (like ours) has three identities per user account; A number ID, user name and email address. And the user name may have an old school MHS format (first.last), and in addition it may take into account the possible internal translations a system may have like BOSS, PRESIDENT, SYSOP, SUPPORT etc.

Versus:

   VRFY  santos\,hector,shane,cory(_at_)localhost(_dot_)com

which would be three accounts to look up:

   santos,hector
   shane
   cory(_at_)localhost(_dot_)com

I think I understand your examples and why use of the backslash would be necessary. However, the part I find problematic, which shows up in your examples as well, is that according to the spec's ABNF this is invalid:

VRFY  santos\,hector,shane,cory(_at_)localhost(_dot_)com

and this is the way it should be:

VRFY  "santos\,hector,shane,cory(_at_)localhost(_dot_)com"

In other words, the issue is whether use of the backslash is valid anywhere, or only within a Quoted-string (as defined in ABNF). If your examples are indeed valid, then there's a bug in the ABNF part that needs to be fixed, or at the very least, the paragraph discussing the backslash should be explicit about it being allowed everywhere despite the ABNF limiting it just to quotes.


-Amichai