Re: [exim] HowTo integrate Spamassassin working?

Top Page
Delete this message
Reply to this message
Author: Forum
Date:  
To: exim-users
Subject: Re: [exim] HowTo integrate Spamassassin working?
Am 22.12.2016 um 14:19 schrieb Jeremy Harris:
> On 22/12/16 13:06, Forum wrote:
>>>>        condition = ${if >{$spam_score_int}{${eval:200}}{true}{false}}
>>> Possibly you don't have a $spam_score_int by this point...

>>
>> But it is working - so the variable exists with a value.
>
> Not necessarily; it can exist but have no value.
> If so it will expand to an empty string.
> In an expansion numeric-comparator condition and
> empty string is taken as zero, and your
> condition is false.


O.K.
It is not clear how spamassasin is used or should be used in exim.
I could not find any usable example for it.
People will just quote the examples of the exim wiki or go another way.

>
>>>>        warn  spam = nobody:true
>>> Nit: indentation.

>>
>> What is the meaning of this?
>
> I mean: this is unimportant for operation,
> but could confuse a human reading the text
> since you have not vertically-aligned the
> ACL verb "warn" with the preceding "deny".


I am generally confused with the exim configuration file. :-)
Many things are logical, but the use of spamassassin in the acl isn't.

So back to my first question - HowTo integrate Spamassassin?

The main structure is the same as this one i started with:
http://struction.de/projects/HOWTO_VirtualMail_Exim-MySQL-Spamassassin-ClamAV-Dovecot/config/exim/exim.conf

There are different transports:
* remote_smtp:
* local_delivery:
* local_mysql_delivery:
* address_pipe:
* address_file:
* address_reply:

At least i want that every email goes through spamassassin.
When it is worth spam it should be rejected - that works!

_____________________________________________________________________________________

begin acl
...
      warn spam = nobody:true
      add_header = X-Spam-Score  : $spam_score ($spam_bar)
      add_header = X-Spam-Score-Int: $spam_score_int
      add_header = X-Message-Age : $message_age
#      add_header = X-Spam-Report: $spam_report

    

  deny  message = This message is classified as UBE (SPAM) and therefore rejected. You scored $spam_score points.
Congratulations!
        condition = ${if >{$spam_score_int}{${eval:200}}{true}{false}}


_____________________________________________________________________________________


Must there be a "warn" before "spam = nobody:true" ?

Now the part i want that didn't work:

_____________________________________________________________________________________


       warn  spam = nobody:true
        condition = ${if >{$spam_score_int}{50}{1}{0}}
#       condition = ${if >{$spam_score_int}{${eval:10*{${lookup mysql{ SELECT DISTINCT spam_threshold FROM user WHERE
username='${quote_mysql:$local_part}' AND domain='${quote_mysql:$domain}' AND SMTP_allowed='YES'}}}}}{true}{false}}
       remove_header = Subject
       add_header = Subject: ***SPAM (Score:$spam_score)*** $h_Subject:


_____________________________________________________________________________________


Again - are the variables still filled?
Must there be a new "spam = nobody:true" before the condition?

At least i just want that every mail beyond a certain spam score is marked in the subject with "***SPAM
(Score:$spam_score)***"

What is the best way to do this?

Must it happen in acl or in tranport?

Is there an example for this?