---
plugins/spamassassin |   19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/plugins/spamassassin b/plugins/spamassassin
index 890390d..4ca890e 100644
--- a/plugins/spamassassin
+++ b/plugins/spamassassin
@@ -59,7 +59,7 @@ C<*** SPAM ***>
=item spamd_socket [/path/to/socket|spamd.host:port]

Beginning with Mail::SpamAssassin 2.60, it is possible to use Unix
-domain sockets for spamd.  This is faster and more secure than using a
+domain sockets for spamd. This is faster and more secure than using a
TCP connection, but if you run spamd on a remote machine, you need to
use a TCP connection.

@@ -75,6 +75,18 @@ what you are doing, you can also leave them intact 
(parameter 'keep').

The username to pass to spamd, if different from the user qpsmtpd runs as.

+=item relayclient skip
+
+What special treatment is offered to connection with relay permission? Relay
+permissions are granted when the connecting IP is listed in the relayclients
+file and/or when the user has authenticated. The only valid option at present
+is 'skip', which skips SA scoring.
+
+If SpamAssasin has certain network tests enabled, users may get elevated spam
+scores because their dynamic IP space is properly listed on DUL blocking lists.
+If the user is authenticated or coming from a trusted IP, odds are we don't
+want to be reject their messages. Especially when running qpsmtpd on port 587.
+
=back

With both of the first options the configuration line will look like the 
following
@@ -146,6 +158,9 @@ sub hook_data_post {

    $self->log(LOGDEBUG, "check_spam");
    return (DECLINED) if $transaction->data_size > 500_000;
+    return (DECLINED) if $self->{_args}->{relayclient} 
+                      && $self->{_args}->{relayclient} eq 'skip' 
+                      && $self->qp->connection->relay_client();

    my $SPAMD = $self->connect_to_spamd() or return (DECLINED);
    $SPAMD->autoflush(1);
@@ -156,7 +171,7 @@ sub hook_data_post {

    $self->print_to_spamd( $SPAMD, $message, $length, $username );
    shutdown($SPAMD, 1); # close our side of the socket (tell spamd we're done)
-        my $headers = $self->parse_spamd_response( $SPAMD ) or return 
(DECLINED);
+    my $headers = $self->parse_spamd_response( $SPAMD ) or return (DECLINED);

    $self->insert_spam_headers( $transaction, $headers, $username );
    return (DECLINED);
-- 
1.7.9.6

Reply via email to