You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by gb...@apache.org on 2024/12/04 08:41:46 UTC
svn commit: r1922290 - /spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Redirectors.pm
Author: gbechis
Date: Wed Dec 4 08:41:46 2024
New Revision: 1922290
URL: http://svn.apache.org/viewvc?rev=1922290&view=rev
Log:
Check for chained redirectors that uses the same domain
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=1922290&r1=1922289&r2=1922290&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Redirectors.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Redirectors.pm Wed Dec 4 08:41:46 2024
@@ -31,6 +31,9 @@ Redirectors - Check for redirected URLs
body REDIR_URL_CHAINED eval:redir_url_chained()
describe REDIR_URL_CHAINED Message has redirected URL chained to other redirectors
+ body REDIR_URL_CHAINED_DOM eval:redir_url_chained_domain()
+ describe REDIR_URL_CHAINED_DOM Message has redirected URL chained to another redirector on the same domain
+
body REDIR_URL_MAXCHAIN eval:redir_url_maxchain()
describe REDIR_URL_MAXCHAIN Message has redirected URL that causes too many redirections
@@ -107,6 +110,7 @@ sub new {
$self->register_eval_rule('redir_url_404', $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
$self->register_eval_rule('redir_url_code', $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
$self->register_eval_rule('redir_url_chained', $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
+ $self->register_eval_rule('redir_url_chained_domain', $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
$self->register_eval_rule('redir_url_maxchain', $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
$self->register_eval_rule('redir_url_loop', $Mail::SpamAssassin::Conf::TYPE_BODY_EVALS);
@@ -660,6 +664,15 @@ sub redir_url_chained {
return $pms->{redir_url_chained} ? 1 : 0;
}
+sub redir_url_chained_domain {
+ my ($self, $pms) = @_;
+
+ # Make sure checks are run
+ $self->_check_redir($pms);
+
+ return $pms->{redir_url_chained_domain} ? 1 : 0;
+}
+
sub redir_url_maxchain {
my ($self, $pms) = @_;
@@ -948,12 +961,18 @@ sub recursive_lookup {
dbg("looks like a redirection to a relative URI: $orig_redir_url => $location ($orig_location)");
}
+ my $domain = $self->{main}->{registryboundaries}->uri_to_domain($location);
+ if (exists $been_here{$domain}) {
+ dbg("Chained redirector that uses the same domain found: $domain");
+ $pms->{redir_url_chained_domain} = 1;
+ }
if (exists $been_here{$location}) {
# Loop detected
dbg("error: loop detected: $location");
$pms->{redir_url_loop} = 1;
return;
}
+ $been_here{$domain} = 1;
$been_here{$location} = 1;
$pms->add_uri_detail_list($location) if !$pms->{uri_detail_list}->{$location};