[exim] control flow in check_content acl

Página Principal
Apagar esta mensagem
Responder a esta mensagem
Autor: Marcus Barczak
Data:  
Para: exim-users
Assunto: [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