[wp-hackers] WP-Hackers Stats for June 2006

Christopher J. Hradil chradil at comcast.net
Sat Jul 1 15:21:01 GMT 2006


This is all handled by sendmail rulesets 0, 5 and 93, 94, 95 according to
rfc specs for sendmail 8.9.3 and above - the spaghetti below, is what's
responsible for turning UserName into username as far as sendmail is
concerned, but preserving UserName for "viewers" or recipients of mail. By
tweaking below, you can configure sendmail to treat UserName differently
than username, but by default it's set to ignore case. R$, R<@> and R$*
during Sparse0 are where it "ignores" case sensitivity while processing, and
then S93 and S94 convert it back to the way the user intended it to be
displayed. By tweaking below it's easy enough to either make UserName a
different entity than username or to force the display of UseName to
username (same goes for domainname and DomainName)

...chris


######################################
###   Ruleset 0 -- Parse Address   ###
######################################

S0

R$*			$: $>Parse0 $1		initial parsing
R<@>			$#local $: <@>		special case error msgs
R$*			$: $>98 $1		handle local hacks
R$*			$: $>Parse1 $1		final parsing

#
#  Parse0 -- do initial syntax checking and eliminate local addresses.
#	This should either return with the (possibly modified) input
#	or return with a #error mailer.  It should not return with a
#	#mailer other than the #error mailer.
#

SParse0
R<@>			$@ <@>			special case error msgs
R$* : $* ; <@>		$#error $@ 5.1.3 $: "List:; syntax illegal for
recipient addresses"
#R@ <@ $* >		< @ $1 >		catch "@@host" bogosity
R<@ $+>			$#error $@ 5.1.3 $: "User address required"
R$*			$: <> $1
R<> $* < @ [ $+ ] > $*	$1 < @ [ $2 ] > $3
R<> $* <$* : $* > $*	$#error $@ 5.1.3 $: "Colon illegal in host name
part"
R<> $*			$1
R$* < @ . $* > $*	$#error $@ 5.1.2 $: "Invalid host name"
R$* < @ $* .. $* > $*	$#error $@ 5.1.2 $: "Invalid host name"

# now delete the local info -- note $=O to find characters that cause
forwarding
R$* < @ > $*		$@ $>Parse0 $>3 $1		user@ => user
R< @ $=w . > : $*	$@ $>Parse0 $>3 $2		@here:... -> ...
R$- < @ $=w . >		$: $(dequote $1 $) < @ $2 . >	dequote "foo"@here
R< @ $+ >		$#error $@ 5.1.3 $: "User address required"
R$* $=O $* < @ $=w . >	$@ $>Parse0 $>3 $1 $2 $3	... at here -> ...
R$- 			$: $(dequote $1 $) < @ *LOCAL* >	dequote
"foo"
R< @ *LOCAL* >		$#error $@ 5.1.3 $: "User address required"
R$* $=O $* < @ *LOCAL* >
			$@ $>Parse0 $>3 $1 $2 $3	...@*LOCAL* -> ...
R$* < @ *LOCAL* >	$: $1

#
#  Parse1 -- the bottom half of ruleset 0.
#

SParse1
# handle numeric address spec
R$* < @ [ $+ ] > $*	$: $>98 $1 < @ [ $2 ] > $3	numeric internet
spec
R$* < @ [ $+ ] > $*	$#esmtp $@ [$2] $: $1 < @ [$2] > $3	still
numeric: send

# handle virtual users
R$+ < @ $=w . > 	$: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 .
>
R<@> $+ + $* < @ $* . >
			$: < $(virtuser $1 + * @ $3 $@ $1 $: @ $) > $1 + $2
< @ $3 . >
R<@> $+ + $* < @ $* . >
			$: < $(virtuser $1 @ $3 $@ $1 $: @ $) > $1 + $2 < @
$3 . >
R<@> $+ < @ $+ . >	$: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
R<@> $+			$: $1
R< error : $- $+ > $* 	$#error $@ $(dequote $1 $) $: $2
R< $+ > $+ < @ $+ >	$: $>97 $1

# short circuit local delivery so forwarded email works
R$=L < @ $=w . >	$#local $: @ $1		special local names
R$+ < @ $=w . >		$#local $: $1			regular local name


# resolve remotely connected UUCP links (if any)

# resolve fake top level domains by forwarding to other hosts
R$*<@$+.BITNET.>$*	$: $>95 < $B > $1 <@$2.BITNET.> $3
user at host.BITNET

# forward non-local UUCP traffic to our UUCP relay
R$*<@$*.UUCP.>$*		$: $>95 < $Y > $1 <@$2.UUCP.> $3	uucp
mail


# pass names that still have a host to a smarthost (if defined)
R$* < @ $* > $*		$: $>95 < $S > $1 < @ $2 > $3	glue on smarthost
name

# deal with other remote names
R$* < @$* > $*		$#esmtp $@ $2 $: $1 < @ $2 > $3
user at host.domain

# handle locally delivered names
R$=L			$#local $: @ $1			special local names
R$+			$#local $: $1			regular local names
###########################################################################
###   Ruleset 5 -- special rewriting after aliases have been expanded   ###
###########################################################################

S5

# deal with plussed users so aliases work nicely
R$+ + *			$#local $@ $&h $: $1
R$+ + $*		$#local $@ + $2 $: $1 + *

# prepend an empty "forward host" on the front
R$+			$: <> $1


# see if we have a relay or a hub
R< > $+			$: < $H > $1			try hub
R< > $+			$: < $R > $1			try relay
R< > $+			$: < > < $1 $&h >		nope, restore
+detail
R< > < $+ + $* > $*	   < > < $1 > + $2 $3		find the user part
R< > < $+ > + $*	$#local $@ $2 $: @ $1		strip the extra +
R< > < $+ >		$@ $1				no +detail
R$+			$: $1 <> $&h			add +detail back in
R$+ <> + $*		$: $1 + $2			check whether
+detail
R$+ <> $*		$: $1				else discard
R< local : $* > $*	$: $>95 < local : $1 > $2	no host extension
R< error : $* > $*	$: $>95 < error : $1 > $2	no host extension
R< $- : $+ > $+		$: $>95 < $1 : $2 > $3 < @ $2 >
R< $+ > $+		$@ $>95 < $1 > $2 < @ $1 >


###################################################################
###  Ruleset 95 -- canonify mailer:[user@]host syntax to triple	###
###################################################################

S95
R< > $*				$@ $1			strip off null relay
R< error : $- $+ > $*		$#error $@ $(dequote $1 $) $: $2
R< local : $* > $*		$>CanonLocal < $1 > $2
R< $- : $+ @ $+ > $*<$*>$*	$# $1 $@ $3 $: $2<@$3>	use literal user
R< $- : $+ > $*			$# $1 $@ $2 $: $3	try qualified mailer
R< $=w > $*			$@ $2			delete local host
R< $+ > $*			$#relay $@ $1 $: $2	use unqualified
mailer 

###################################################################
###  Ruleset 93 -- convert header names to masqueraded form	###
###################################################################

S93


# special case the users that should be exposed
R$=E < @ *LOCAL* >	$@ $1 < @ $j . >		leave exposed
R$=E < @ $=M . >	$@ $1 < @ $2 . >
R$=E < @ $=w . >	$@ $1 < @ $2 . >

# handle domain-specific masquerading
R$* < @ $=M . > $*	$: $1 < @ $2 . @ $M > $3	convert masqueraded
doms
R$* < @ $=w . > $*	$: $1 < @ $2 . @ $M > $3
R$* < @ *LOCAL* > $*	$: $1 < @ $j . @ $M > $2
R$* < @ $+ @ > $*	$: $1 < @ $2 > $3		$M is null
R$* < @ $+ @ $+ > $*	$: $1 < @ $3 . > $4		$M is not null

###################################################################
###  Ruleset 94 -- convert envelope names to masqueraded form	###
###################################################################

S94
R$* < @ *LOCAL* > $*	$: $1 < @ $j . > $2


/**************************************
Christopher J. Hradil
chradil at comcast.net
http://www.hradil.us
973-809-4606
**************************************/


-----Original Message-----
From: wp-hackers-bounces at lists.automattic.com
[mailto:wp-hackers-bounces at lists.automattic.com] On Behalf Of Computer Guru
Sent: Saturday, July 01, 2006 11:05 AM
To: wp-hackers at lists.automattic.com
Subject: RE: [wp-hackers] WP-Hackers Stats for June 2006

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Exactly.
"preserved, not distinguished"
Meaning that if I send an email to the mailing list, it should forward it to
the users with my name intact the way I "cased" it; but the stats should not
distinguish between one "casing" and the other... or am I reading it wrong?

In the SMTP RFC (that I just skimmed through) it says that
	In particular, in some hosts the user "smith" is different from the
user "Smith".

But I've never run across that myself in all my years of IT work and
research - do you know what they are referring to? Then again - this RFC is
1982... not exactly up to date.

I'm saying: the RFC agrees with me according to what Les just said, but even
if it didn't, what should be valued more - an RFC that no one knows or
following a non-standard standard that people know and use?

For all intents and purposes aliases aren't case-sensitive, and should never
be treated as such. 

Computer Guru
NeoSmart Technologies
http://neosmart.net/blog/

-----BEGIN PGP SIGNATURE-----
iQA/AwUBRKaPDN0iAoeFylLdEQKKzgCg8wwXMXUFj3XIdNwuMm5pJugA8qwAoOnD
72RTJRmSKq2SVLupRij24mik
=2wHL
-----END PGP SIGNATURE-----

_______________________________________________
wp-hackers mailing list
wp-hackers at lists.automattic.com
http://lists.automattic.com/mailman/listinfo/wp-hackers



More information about the wp-hackers mailing list