Hi Giovanni,
I think you can eliminate the check $host eq "www.$domain" because $domain is 
derived from $host. 
Index: lib/Mail/SpamAssassin/Plugin/Redirectors.pm
===================================================================
--- lib/Mail/SpamAssassin/Plugin/Redirectors.pm (revision 1922028)
+++ lib/Mail/SpamAssassin/Plugin/Redirectors.pm (working copy)
@@ -720,7 +720,7 @@
   # on the www domain
   elsif($levels == 2 && $host =~ /^www.([^.]+.[^.]+)$/i) {
     my $domain = $1;
-    if(($host eq "www.$domain") and exists $conf->{url_redirector}->{$domain}) 
{
+    if(exists $conf->{url_redirector}->{$domain}) {
       dbg("Found internal www redirection for domain $domain");
       return {
         'uri' => $uri,
Thanks
Kent

On Fri, Nov 22, 2024 at 10:01 AM, [email protected] wrote:
------------------------------------------------------------------------------------------------------------------
CAUTION: External email from: gbechis@‌apache.‌org
Use caution before clicking on links or opening attachments.
------------------------------------------------------------------------------------------------------------------
Author: gbechis
Date: Fri Nov 22 15:59:18 2024
New Revision: 1922027

URL: http://svn.apache.org/viewvc?rev=1922027&view=rev 
(http://svn.apache.org/viewvc?rev=1922027&view=rev)
Log:
always use the correct http method
prefer configured redirectors when searching for urls

Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Redirectors.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Redirectors.pm
URL: 
http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Redirectors.pm?rev=1922027&r1=1922026&r2=1922027&view=diff
 
(http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Redirectors.pm?rev=1922027&r1=1922026&r2=1922027&view=diff)
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Redirectors.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Redirectors.pm Fri Nov 22 
15:59:18 2024
@@ -720,18 +720,17 @@ sub _check_redirector_uri {
# on the www domain
elsif($levels == 2 && $host =~ /^www.([^.]+.[^.]+)$/i) {
my $domain = $1;
-    if ($newuri = _check_querystring($params, $conf)) {
-      return {
-        'uri' => $newuri,
-        'method' => 'head',
-      };
-    }
if(($host eq "www.$domain" (http://www.$domain)) and exists 
$conf->{url_redirector}->{$domain}) {
dbg("Found internal www redirection for domain $domain");
return {
'uri' => $uri,
'method' => $conf->{url_redirector}->{$domain} == 1 ? 'head' : 'get',
};
+    } elsif ($newuri = _check_querystring($params, $conf)) {
+      return {
+        'uri' => $newuri,
+        'method' => 'head',
+      };
}
}
# if domain is a 3rd level domain check if there is a url redirector
@@ -744,15 +743,19 @@ sub _check_redirector_uri {
};
}
elsif ($host =~ /(.[a-z0-9_]+(?:.[a-z0-9_]+)?.[a-z]+)$/i &&
-           exists $conf->{url_redirector}->{$1}) {
+    exists $conf->{url_redirector}->{$1}) {
return {
'uri' => $uri,
'method' => $conf->{url_redirector}->{$1} == 1 ? 'head' : 'get',
};
} elsif ($newuri = _check_querystring($params, $conf)) {
+    my $nhost = $newuri;
+    if($nhost =~ /https?://(.*)/) {
+      $nhost = $1;
+    }
return {
'uri' => $newuri,
-      'method' => 'head',
+      'method' => (exists($conf->{url_redirector}->{$nhost}) && 
($conf->{url_redirector}->{$nhost} == 1)) ? 'head' : 'get',
};
} else {
dbg("No explicit redirector host found for $host");

Reply via email to