The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
karma_rcpt_acl:

    # Check envelope sender
	# This is really intended to emulate Postfix's protocol.

    warn     set acl_m9  = ${readsocket{/tmp/karmad}\
                           {client_address=$sender_host_address\nhelo_name=$sender_helo_name\
                           \nsender=$sender_address\n\n}{20s}{\n}{socket failure}} 

    # Continue quietly on socket error
	# We could replace 'accept' here with 'defer'

    accept   condition   = ${if eq{$acl_m9}{socket failure}{yes}{no}}
             message     = Cannot connect to karmad

    # Prepare answer and get results

    warn     set acl_m9  = ${sg{$acl_m9}{\N=(.*)\n\N}{=\"\$1\" }}
             set acl_m8  = ${extract{value}{$acl_m9}{$value}{unknown}}
             set acl_m7  = ${extract{data}{$acl_m9}{$value}{}}

    # Check for fail

#    deny     condition   = ${if eq{$acl_m8}{bad}{yes}{no}}
#             message     = $acl_m8: $acl_m7
#             log_message = Considered 'bad' by Karma

    warn     message     = X-Karma: $acl_m8: $acl_m7

    accept