Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site dartvax.UUCP Path: utzoo!watmath!clyde!burl!ulysses!mhuxl!ihnp4!drutx!houxe!hogpc!houti!ariel!vax135!cornell!uw-beaver!tektronix!hplabs!hpda!fortune!amd!decwrl!decvax!dartvax!steve From: steve@dartvax.UUCP Newsgroups: net.mail.headers Subject: Re: internetwork addressing questions, with sendmail.cf fix Message-ID: <2214@dartvax.UUCP> Date: Wed, 18-Jul-84 22:56:01 EDT Article-I.D.: dartvax.2214 Posted: Wed Jul 18 22:56:01 1984 Date-Received: Sun, 22-Jul-84 03:06:03 EDT References: <694@hou3c.UUCP> <1547@sun.uucp> Organization: Dartmouth College Lines: 53 >To answer just a few of the questions: > 2) Since '%' (percent) it isn't part of the RFC822 grammer, what > does it mean and what is the convention for parsing it? >It is a kludge invented somewhere on the Arpanet which was used to get >around the rule that "there can only be one '@' in an address". If you >send something to user%host@gateway, by 822 rules it should go to 'gateway'. >There at the gateway, the 'user%host' part is subject to local rules, and >it turns out that treating it as 'user@host' is a very useful local rule, >given the current chaotic state of the various interconnected nets. ... >This is the section of our sendmail.cf (at the end of ruleset 3) which >implements the non-precedence. The important part is that the leftmost >token to match be '$-' rather than '$+'. Note that this also parses >the new uucp transport-addrs (host.domain!user). Enjoy. > ># convert old-style addresses to domain-based addresses ># All old-style addresses parse from left to right, without precedence. ># Note that the left side of '%' is a username; it is matched with $+ so ># that complex names like "john.gilmore%l5" will be caught and translated. ># The rest can only have an atom as the host name (left of the symbol). >R$-:$+ $@$>3$2@$1 host:user >R$-^$+ $1!$2 convert ^ to ! >R$-!$+ $@$>6$2<@$1.uucp> uucphost!user >R$-=$+ $@$>6$2<@$1.bitnet> bitnethost=user >R$-.$+!$+ $@$>6$3<@$1.$2> host.domain!user >R$+%$+ $@$>3$1@$2 user%host The only catch is that if "%" is really a "@" in hiding, then it should be parsed right-to-left, not left-to-right like the other forms. In particular, if you are parsing user%hostA%hostB, you want it to become user%hostA@hostB, not user@hostA%hostB. An alternative section of sendmail.cf would be: # convert old-style addresses to a domain-based address R$+^$+ $1!$2 convert ^ to ! R$-!$+ $@$2<@$1.uucp> resolve uucp names R$-.$+!$+ $@$>6$3<@$1.$2> host.domain!local-part R$+%$- $@$>6$1<@$2> local-part%host R$+%$-.$- $@$>6$1<@$2.$3> local-part%host.domain R$-:$+ $@$>6$2<@$1> host:local-part R$-=$+ $@$2<@$1.bitnet> resolve bitnet names One limitation with this is that it fails to parse local-part%host.subdomain.domain correctly. Comments? -------------------------------------------------------------------- Steve Campbell UUCP: {decvax|linus|cornell|astrovax}!dartvax!steve CSNET: steve@dartmouth ARPA: steve%dartmouth@csnet-relay