$email =~ /\@\w+\./

Not really a great email test as it doesn't match foo-bar.com



On Thu, May 04, 2023 at 04:16:43PM -0000, gbec...@apache.org wrote:
> Author: gbechis
> Date: Thu May  4 16:16:43 2023
> New Revision: 1909609
> 
> URL: http://svn.apache.org/viewvc?rev=1909609&view=rev
> Log:
> make "txrep_welcomelist_out" work when
> "auto_welcomelist_distinguish_signed" is set
> bz #7269
> 
> Modified:
>     spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/TxRep.pm
>     spamassassin/trunk/lib/Mail/SpamAssassin/SQLBasedAddrList.pm
> 
> Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/TxRep.pm
> URL: 
> http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/TxRep.pm?rev=1909609&r1=1909608&r2=1909609&view=diff
> ==============================================================================
> --- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/TxRep.pm (original)
> +++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/TxRep.pm Thu May  4 
> 16:16:43 2023
> @@ -1240,6 +1240,7 @@ sub check_senders_reputation {
>  
>    my $autolearn = defined $self->{autolearn};
>    $self->{last_pms} = $self->{autolearn} = undef;
> +  $self->{pms} = $pms;
>  
>    # Cases where we would not be able to use TxRep
>    if(not $self->{conf}->{use_txrep}) {
> @@ -1827,6 +1828,12 @@ sub pack_addr {
>  
>    if ( defined $origip) {$origip = $self->ip_to_awl_key($origip);}
>    if (!defined $origip) {$origip = 'none';}
> +  if ( $self->{conf}->{txrep_welcomelist_out} &&
> +    defined $self->{pms}->{relays_internal} &&  
> @{$self->{pms}->{relays_internal}} &&
> +    (!defined $self->{pms}->{relays_external} || 
> !@{$self->{pms}->{relays_external}})
> +    and $addr =~ /\@\w+\./) {
> +      $origip = 'WELCOMELIST_OUT';
> +  }
>    return $addr . "|ip=" . $origip;
>  }
>  
> 
> Modified: spamassassin/trunk/lib/Mail/SpamAssassin/SQLBasedAddrList.pm
> URL: 
> http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/SQLBasedAddrList.pm?rev=1909609&r1=1909608&r2=1909609&view=diff
> ==============================================================================
> --- spamassassin/trunk/lib/Mail/SpamAssassin/SQLBasedAddrList.pm (original)
> +++ spamassassin/trunk/lib/Mail/SpamAssassin/SQLBasedAddrList.pm Thu May  4 
> 16:16:43 2023
> @@ -201,7 +201,38 @@ sub get_addr_entry {
>  
>    return $entry  unless $email ne '' && (defined $ip || defined $signedby);
>  
> -  my $sql = "SELECT msgcount, totscore FROM $self->{tablename} " .
> +  my $sql;
> +  my $sth;
> +  my $rc;
> +  if($self->{main}->{conf}->{txrep_welcomelist_out} and ($email =~ 
> /\@\w+\./)) {
> +    $sql = "SELECT msgcount, totscore FROM $self->{tablename} " .
> +            "WHERE username = ? AND email = ? AND ip = 'WELCOMELIST_OUT'";
> +    $sth = $self->{dbh}->prepare($sql);
> +    unless (defined($sth)) {
> +      info("auto-welcomelist: sql-based get_addr_entry %s: SQL prepare 
> error: %s",
> +         "$self->{_username}|$ip", $self->{dbh}->errstr);
> +    }
> +    dbg("TxRep: $sql $self->{_username} $email");
> +    $rc = $sth->execute($self->{_username}, $email);
> +    my $cnt = 0;
> +    my $aryref;
> +    # how to combine data if there are several entries (like signed by
> +    # an author domain and by a remailer)?  for now just take an average
> +    while ( defined($aryref = $sth->fetchrow_arrayref()) ) {
> +      if (defined $entry->{msgcount} && defined $aryref->[1]) {
> +        $entry->{msgcount} = $aryref->[0];
> +        $entry->{totscore} = $aryref->[1];
> +      }
> +      $entry->{exists_p} = 1;
> +      $cnt++;
> +    }
> +    $sth->finish();
> +    return $entry if $rc;
> +  }
> +  undef $sth;
> +  undef $rc;
> +
> +  $sql = "SELECT msgcount, totscore FROM $self->{tablename} " .
>              "WHERE username = ? AND email = ?";
>    my @args = ( $email );
>    if (!$self->{_with_awl_signer}) {
> @@ -221,7 +252,7 @@ sub get_addr_entry {
>    }
>    $sql .= " ORDER BY last_hit";
>  
> -  my $sth = $self->{dbh}->prepare($sql);
> +  $sth = $self->{dbh}->prepare($sql);
>  
>    unless (defined($sth)) {
>      info("auto-welcomelist: sql-based get_addr_entry %s: SQL prepare error: 
> %s",
> @@ -229,7 +260,7 @@ sub get_addr_entry {
>      return $entry;
>    }
>  
> -  my $rc = $sth->execute($self->{_username}, @args);
> +  $rc = $sth->execute($self->{_username}, @args);
>  
>    if (!$rc) { # there was an error, but try to go on
>      info("auto-welcomelist: sql-based get_addr_entry %s: SQL error: %s",
> @@ -298,7 +329,7 @@ sub add_score {
>  
>    { my @fields = qw(username email ip msgcount totscore);
>      my @signedby;
> -    if ($self->{_with_awl_signer} || (defined $signedby and $signedby =~ 
> /^spf\-/)) {
> +    if ($self->{_with_awl_signer} or (defined $signedby and $signedby =~ 
> /^spf\-/) and not ($self->{main}->{conf}->{txrep_welcomelist_out} and ($email 
> =~ /\@\w+\./)) ) {
>        push(@fields, 'signedby');
>        @signedby = !defined $signedby ? () : split(' ', lc $signedby);
>        @signedby = ( '' )  if !@signedby;
> 

Reply via email to