[exim] control flow in check_content acl

Top Page
Delete this message
Reply to this message
Author: Marcus Barczak
Date:  
To: exim-users
Subject: [exim] control flow in check_content acl
Hi Guys,

Am having a bit of a confusing time with control flow in my
check_content ACL. I'm using the ACL for clam and sophos scanning
however i'm trying to modify it to bail out if a particular header is
present in the message being scanned.

Basically does the ACL return on the first successful accept or does
it terminate on the last line of the block? Despite my header being
present the ACL still falls through to the final accept. Am I
misunderstanding here?

My check_content ACL looks a like this:

acl_check_content:

    # if X-Dont-Scan header is present we're done
    accept condition = ${if def:header_X-Dont-Scan:  }


    # Reject messages that have serious MIME errors.
    deny message = Serious MIME defect detected ($demime_reason)
         demime = *
         condition = ${if >{$demime_errorlevel}{2}{1}{0}}


    # Reject virus infected messages.
    deny message = This message contains malicious software  
($malware_name)
         set acl_m1 = sophie:/var/run/sophie.sock
         condition = ${if eq {$acl_m0} {yes} {yes} {no}}
         demime = *
         malware = */defer_ok


warn message = X-Virus-1: Scanned by Engine 1 (SO)

   # ClamAV
   deny  message = This message contains malicious software  
($malware_name)
         set acl_m1 = clamd:/var/run/clamav/clamd
         condition = ${if eq {$acl_m0} {yes} {yes} {no}}
         demime = *
         malware = */defer_ok


warn message = X-Virus-2: Scanned by Engine 2 (CL)

accept

Cheers,
Marcus