View | Details | Raw Unified | Return to bug 5798
Collapse All | Expand All

(-)spamd/spamd.raw (-19 / +24 lines)
Lines 2084-2089 Link Here
2084
2084
2085
    if ($prefsfrom eq $suidto) {
2085
    if ($prefsfrom eq $suidto) {
2086
      $userdir = $suiddir;      # reuse the already-looked-up info
2086
      $userdir = $suiddir;      # reuse the already-looked-up info
2087
    } elsif ( $opt{'vpopmail'} ) {
2088
      #
2089
      # If vpopmail config enabled then set $userdir to virtual homedir
2090
      #
2091
      my $vpopdir = $suiddir; # This should work with common vpopmail setups
2092
      $userdir = `$vpopdir/bin/vuserinfo -d \Q$username\E`;
2093
      if ($? != 0) {
2094
        #
2095
        # If vuserinfo failed $username could be an alias
2096
        #
2097
        $userdir = `$vpopdir/bin/valias \Q$username\E`;
2098
        if ($? == 0) {
2099
         if ($userdir =~ /.+ -> &(.+)/) {
2100
            #
2101
            # another alias - it could point to an alias again, but we'll try to resolve it only once
2102
            #
2103
            $userdir = `$vpopdir/bin/vuserinfo -d \Q$1\E`;
2104
	  }
2105
          $userdir =~ s,.+ -> (/.+)/Maildir/,$1,;
2106
        } else {
2107
          undef($userdir);
2108
        }
2109
      }
2110
      chomp($userdir);
2087
    } else {
2111
    } else {
2088
      $userdir = (getpwnam($prefsfrom))[7];
2112
      $userdir = (getpwnam($prefsfrom))[7];
2089
    }
2113
    }
Lines 2108-2132 Link Here
2108
sub handle_user_set_user_prefs {
2132
sub handle_user_set_user_prefs {
2109
  my ($dir, $username) = @_;
2133
  my ($dir, $username) = @_;
2110
2134
2111
  # If vpopmail config enabled then set $dir to virtual homedir
2112
  #
2113
  if ( $opt{'vpopmail'} ) {
2114
    my $vpopdir = $dir;
2115
    $dir = `$vpopdir/bin/vuserinfo -d \Q$username\E`;
2116
    if ($? != 0) {
2117
      #
2118
      # If vuserinfo failed $username could be an alias
2119
      #
2120
      $dir = `$vpopdir/bin/valias \Q$username\E`;
2121
      if ($? == 0 && $dir !~ /.+ -> &/) {
2122
        $dir =~ s,.+ -> (/.+)/Maildir/,$1,;
2123
      } else {
2124
        undef($dir);
2125
      }
2126
    }
2127
    chomp($dir);
2128
  }
2129
2130
  # don't do this if we weren't passed a directory
2135
  # don't do this if we weren't passed a directory
2131
  if ($dir) {
2136
  if ($dir) {
2132
    my $cf_file = $dir . "/.spamassassin/user_prefs";
2137
    my $cf_file = $dir . "/.spamassassin/user_prefs";

Return to bug 5798