--- /usr/sbin/spamd.orig Wed Jul 23 09:45:19 2003 +++ /usr/sbin/spamd Sun Sep 21 13:03:10 2003 @@ -797,14 +797,34 @@ my $domain = ''; if ($safename =~ /^(.*)\@(.*)$/) { $localpart = $1; $domain = $2; } - $dir =~ s/\%u/${safename}/g; - $dir =~ s/\%l/${localpart}/g; - $dir =~ s/\%d/${domain}/g; + # Do userdir lookup exim-style. + # If a config for the full address exists, use that one + # else look for a domain default + if ($dir=~/%x/) { + ($userdir=$dir)=~s/%x/${safename}/g; + + $prefsfile=$userdir.'/user_prefs'; + if (-f $prefsfile) { + $dir=$userdir; + + } else { + $dir=~s/%x/${domain}/g; + $prefsfile=$dir.'/user_prefs'; + $userdir=$dir; + } + + # Use the normal escaping + } else { + $dir =~ s/\%u/${safename}/g; + $dir =~ s/\%l/${localpart}/g; + $dir =~ s/\%d/${domain}/g; + $userdir = $dir; + $prefsfile = $dir.'/user_prefs'; + } - $userdir = $dir; - $prefsfile = $dir.'/user_prefs'; # Log that the default configuration is being used for a user. - logmsg("Using default config for $username: $prefsfile"); + logmsg("Using config for $username: $prefsfile"); + logmsg("Using configdir for $username: $userdir"); } else { $dir=$opt{'virtual-config'};