Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!samsung!interlan.InterLan.COM!interlan.interlan.com!towfiq From: towfiq@interlan.Interlan.COM (Mark Towfigh) Newsgroups: comp.mail.sendmail Subject: Re: Mail addresses and RFC1123 Message-ID: Date: 25 Jul 90 18:37:28 GMT References: <9007242101.AA32438@cs.niu.edu> Organization: Racal InterLan, Inc., Boxborough, MA (1-800-LAN-TALK) Lines: 50 In-reply-to: rickert@CS.NIU.EDU's message of 24 Jul 90 21:01:02 GMT I wrote (quoting RFC1123): It is suggested that "%" have lower precedence than any other routing operator (e.g., "!") hidden in the local-part; for example, "a!b%c" would be interpreted as "(a!b)%c". In article <9007242101.AA32438@cs.niu.edu> rickert@CS.NIU.EDU (Neil Rickert) writes: This unfortunate language is just one of the problems with RFC1123. To say that '%' has lower precedence than '!' should mean that the processing of '!' must PRECEDE the processing of '%'. What you say is right, but I think you have a different notion of what "processing" means. It does not mean sending the mail, it means parsing the address. "!" is not the action of sending something via UUCP -- this is where it differs from the algebraic operator "*". The algebraic notation (a!b) only confuses the issue. In algebraic terminology, the use of parentheses in (a*b)+c implies both that 'a*b' is to be processed first before applying the '+', and that '(a*b)' must be treated as a unit. And similarly, (a!b) must be treated as a unit, so you send a message for a!b to c. As I read it, "(a!b)%c" has the following interpretation: Send the mail to host 'a' for delivery to mailbox 'b'. Take the result of that mailing, whatever it is (undoubtedly an error message accompanying bounced mail, since mailbox 'b' is really on host 'c'), and use that result as the name of a mailbox on host 'c'. Until I hear a definitive statement to the contrary, I will continue with my interpretation. Please do not write any mailer software which behaves like this! Incidentally most software I have seen only looks for a '%' after it has failed to find any other addressing operators. This means that software which recognizes '!' as an addressing operator typically gives higher precedence to '!' than to '%', while software which does not recognize '!' necessarily gives higher precedence to '%'. The result is hopeless ambiguity. Software which does not conform to protocol always results in such problems. -- Mark Towfigh, Racal InterLan, Inc. towfiq@interlan.Interlan.COM W: (508) 263-9929 H: (617) 488-2818 uunet!interlan!towfiq "The Earth is but One Country, and Mankind its Citizens" -- Baha'u'llah