1 |
jpp |
1.1 |
diff -Nur qpsmtpd-0.96.old/plugins/spamassassin qpsmtpd-0.96/plugins/spamassassin |
2 |
|
|
--- qpsmtpd-0.96.old/plugins/spamassassin 2018-03-11 00:31:05.427000000 -0500 |
3 |
|
|
+++ qpsmtpd-0.96/plugins/spamassassin 2018-03-11 00:40:36.117000000 -0500 |
4 |
|
|
@@ -121,6 +121,11 @@ |
5 |
|
|
If the X-Spam-User header is present, the LDA should submit the message to |
6 |
|
|
spamd for re-processing with the recipients address. |
7 |
|
|
|
8 |
|
|
+=head 1 Force SPAM Check even if is_immune |
9 |
|
|
+You can fill a file with a list of exception that will go under SPMA check even |
10 |
|
|
+if qpsmtpd flag the connection as immune. The file is forcespamcheck. Enter an ip |
11 |
|
|
+per line. As an example if you have fetchmail running on 127.0.0.200, simply add |
12 |
|
|
+this ip on a line in forcespamcheck file. |
13 |
|
|
|
14 |
|
|
=head1 CHANGES |
15 |
|
|
|
16 |
|
|
@@ -134,7 +139,10 @@ |
17 |
|
|
config. Subverting their changes there is unexpected. Making them read |
18 |
|
|
code to figure out why is an unnecessary hurdle. |
19 |
|
|
* added assemble_message, so we can calc content size which spamd wants |
20 |
|
|
- |
21 |
|
|
+2018.03.11 - Jean-Philippe Pialasse |
22 |
|
|
+ * added an exception list forcespamcheck to is_immune. This is useful if you are |
23 |
|
|
+ running a local deamon such as fetchmail, which connection should still go through |
24 |
|
|
+ spamassassin testing, even if considered immune because connect as local. |
25 |
|
|
=cut |
26 |
|
|
|
27 |
|
|
use strict; |
28 |
|
|
@@ -170,7 +178,7 @@ |
29 |
|
|
sub data_post_handler { |
30 |
|
|
my ($self, $transaction) = @_; |
31 |
|
|
|
32 |
|
|
- return DECLINED if $self->is_immune(); |
33 |
|
|
+ return DECLINED if $self->is_immune() and ! $self->is_in_forcespamcheck() ; |
34 |
|
|
|
35 |
|
|
my $limit = $self->{_args}->{size_limit} || 500_000; |
36 |
|
|
if ($transaction->data_size > $limit) { |
37 |
|
|
@@ -193,6 +201,26 @@ |
38 |
|
|
return $self->reject($transaction); |
39 |
|
|
} |
40 |
|
|
|
41 |
|
|
+sub is_in_forcespamcheck { |
42 |
|
|
+ my $self = shift; |
43 |
|
|
+ |
44 |
|
|
+ my %forcespamcheck = map { $_ => 1 } $self->qp->config('forcespamcheck'); |
45 |
|
|
+ |
46 |
|
|
+ my $ip = $self->qp->connection->remote_ip; |
47 |
|
|
+ |
48 |
|
|
+ while ($ip) { |
49 |
|
|
+ if (exists $forcespamcheck{$ip}) { |
50 |
|
|
+ $self->log(LOGINFO, "$ip in force spam check"); |
51 |
|
|
+ return 1; |
52 |
|
|
+ } |
53 |
|
|
+ $ip =~ s/(\d|\w)+(:|\.)?$// or last; # strip off another octet |
54 |
|
|
+ } |
55 |
|
|
+ |
56 |
|
|
+ $self->log(LOGDEBUG, "no match in forcespamcheck"); |
57 |
|
|
+ return; |
58 |
|
|
+} |
59 |
|
|
+ |
60 |
|
|
+ |
61 |
|
|
sub select_spamd_username { |
62 |
|
|
my ($self, $transaction) = @_; |
63 |
|
|
|