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 2021/03/22 18:32:39 UTC

svn commit: r1887929 - /spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Esp.pm

Author: gbechis
Date: Mon Mar 22 18:32:39 2021
New Revision: 1887929

URL: http://svn.apache.org/viewvc?rev=1887929&view=rev
Log:
Add Constant Contact Esp sub

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

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Esp.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Esp.pm?rev=1887929&r1=1887928&r2=1887929&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Esp.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Esp.pm Mon Mar 22 18:32:39 2021
@@ -43,7 +43,7 @@ use Mail::SpamAssassin::PerMsgStatus;
 use vars qw(@ISA);
 our @ISA = qw(Mail::SpamAssassin::Plugin);
 
-my $VERSION = 1.2.1;
+my $VERSION = 1.3.0;
 
 sub dbg { Mail::SpamAssassin::Plugin::dbg ("Esp: @_"); }
 
@@ -63,6 +63,7 @@ sub new {
   $self->register_eval_rule('esp_mailup_check',  $Mail::SpamAssassin::Conf::TYPE_HEAD_EVALS);
   $self->register_eval_rule('esp_maildome_check',  $Mail::SpamAssassin::Conf::TYPE_HEAD_EVALS);
   $self->register_eval_rule('esp_mailchimp_check',  $Mail::SpamAssassin::Conf::TYPE_HEAD_EVALS);
+  $self->register_eval_rule('esp_constantcontact_check',  $Mail::SpamAssassin::Conf::TYPE_HEAD_EVALS);
 
   return $self;
 }
@@ -104,6 +105,9 @@ Usage:
   esp_sendgrid_check_domain()
     Checks for Sendgrid domains abused accounts
 
+  esp_constantcontact_check()
+    Checks for Constant Contact id abused accounts
+
 =head1 ADMINISTRATOR SETTINGS
 
 =over 4
@@ -142,6 +146,11 @@ Files can be separated by a comma.
 A list of files with abused Mailchimp accounts.
 Files can be separated by a comma.
 
+=item constantcontact_feed [...]
+
+A list of files with abused Constant Contact accounts.
+Files can be separated by a comma.
+
 =back
 
 =head1 TEMPLATE TAGS
@@ -182,6 +191,9 @@ MAILDOMEID
 =item *
 MAILCHIMPID
 
+=item *
+CONSTANTCONTACTID
+
 =back
 
 =cut
@@ -226,6 +238,12 @@ sub set_config {
     type => $Mail::SpamAssassin::Conf::CONF_TYPE_STRING,
     }
   );
+  push(@cmds, {
+    setting => 'constantcontact_feed',
+    is_admin => 1,
+    type => $Mail::SpamAssassin::Conf::CONF_TYPE_STRING,
+    }
+  );
   $conf->{parser}->register_commands(\@cmds);
 }
 
@@ -237,6 +255,7 @@ sub finish_parsing_end {
   $self->_read_configfile('mailup_feed', 'MAILUP');
   $self->_read_configfile('maildome_feed', 'MAILDOME');
   $self->_read_configfile('mailchimp_feed', 'MAILCHIMP');
+  $self->_read_configfile('constantcontact_feed', 'CONSTANTCONTACT');
 }
 
 sub _read_configfile {
@@ -456,6 +475,39 @@ sub esp_mailchimp_check {
       $pms->got_hit($rulename, "", ruletype => 'eval');
       return 1;
     }
+  }
+
+}
+
+sub esp_constantcontact_check {
+  my ($self, $pms) = @_;
+  my $contact_id;
+
+  my $rulename = $pms->get_current_eval_rule_name();
+
+  # return if X-Mailer is not what we want
+  my $xmailer = $pms->get("X-Mailer", undef);
+
+  if((not defined $xmailer) or ($xmailer !~ /Roving\sConstant\sContact/)) {
+    return;
+  }
+
+  my $envfrom = $pms->get("EnvelopeFrom:addr", undef);
+  return if not defined $envfrom;
+  return if $envfrom !~ /\@in\.constantcontact\.com/;
+
+  $contact_id = $pms->get("X-Roving-Id", undef);
+  return if not defined $contact_id;
+
+  chomp($contact_id);
+  if(defined $contact_id) {
+    if ( exists $self->{ESP}->{CONSTANTCONTACT}->{$contact_id} ) {
+      $pms->set_tag('CONSTANTCONTACTID', $contact_id);
+      dbg("HIT! $contact_id customer found in Constant Contact feed");
+      $pms->test_log("Constant Contact id: $contact_id");
+      $pms->got_hit($rulename, "", ruletype => 'eval');
+      return 1;
+    }
   }
 
 }