Re: [exim] There's a hole in the bucket, ...

Top Page
Delete this message
Reply to this message
Author: Graeme Fowler
Date:  
To: exim-users
Subject: Re: [exim] There's a hole in the bucket, ...
On Mon, 2008-04-14 at 12:03 +0200, Johann Spies wrote:
> accept     condition  = ${if >{$message_size}{100k}{yes}{no}}


Do your "slippy" messages have attachments such as images? It's trivial
to make a message bigger than 100KB with no appreciable impact to the
reader.

Secondly... if a message arrives for a group/list of recipients (ie.
multiple RCPT TO: commands for that message), only one of whom has
chosen to allow spam through, won't that make it be delivered to *all*
the recipients?

I'm a little confused, however, by your ACL snippet which does the PG
lookup...

I'll put some comments above each line:

you set acl_m1 = f conditional on...
> warn set acl_m1 = f


The recipient domain not being listed in the relaydomains list, and...
>          domains = ! dbm;/etc/exim4/relaydomains.db


The user having a value of "t" in their spamdelete entry...
>          condition  = ${if eq{${lookup pgsql \
>           {select 1 from emailuser where \
>           username = '${uc:${quote_pgsql:$local_part}}' and \
>           spamdelete = 't' limit 1}}}{}{no}{yes}}


So you now set acl_m1 = t, but we're still conditional on...
>         set acl_m1 = t


...acl_m0 being neither "t" nor "f", and then you...
>        condition = ${if and \
>                           {\
>                             {! eq {$acl_m0}{t}}\
>                             {! eq {$acl_m0}{f}}\
>                           }\
>                            {yes}{no}}


Set acl_m0 to be the value of acl_m1, being either "t" or "f".
>         set acl_m0 = $acl_m1


Unless there was a blank line missing there (which would in fact be
invalid) I'm struggling to get my head around the ordering of the
conditionals. If I read that correctly, once acl_m0 is either "t" or "f"
no further setting of acl_m0 takes place.

Once it's set to "t" and the spam core exceeds 8, the messages goes
byebye at the end of DATA. If "f", the message is accepted and tagged.

It looks to me like the combinatorial logic checking for the existence
of "t" or "f" is where it's going wrong, since once that's set the
message *either* gets rejected or accepted, regardless of the following
lookups. Strikes me that the first RCPT TO: sets what happens for all
following recipients, regardless of their grouped settings.

Am I wrong? Can anyone else elaborate?

Graeme