Hi there,
I am working on a greylist implementation where greylist is defined per
recipient. The greylist settings are stored in a MySQL database on a per
domain basis. I realise this is a bit expensive, but it keeps the system
fairly dynamic.
This is what I currently have in my defer ACL (rcpt):
warn set acl_m_PROTECTION = ${lookup mysql{SELECT setting FROM
settings WHERE domain_name='$domain'}}
condition = {{if eq{acl_m_PROTECTION}{1} { \
ALL_GREY = true} \
} {elseif eq{acl_m_PROTECTION}{2} { \
SKIP_GREY = true } \
} {elseif eq{acl_m_PROTECTION}{3} { \
PARTIAL_GREY = true } \
}
.ifdef SKIP_GREY
!local_parts = +skip_grey
.elifdef PARTIAL_GREY
local_parts = +partial_grey
.elifdef ALL_GREY
local_parts = *
.endif
acl = greylist_acl
08:58:51 20672 processing "defer"
08:58:51 20672 check !senders = : postmaster
08:58:51 20672 address match: subject=sender@??? pattern=
08:58:51 20672 d242.net in ""? no (end of list)
08:58:51 20672 address match: subject=sender@??? pattern=postmaster
08:58:51 20672 sender.net in "postmaster"? no (end of list)
08:58:51 20672 sender@??? in ": postmaster"? no (end of list)
08:58:51 20672 defer: condition test succeeded
08:58:51 20672 SMTP>> 451 Temporary local problem - please try later
Can I use conditions before the actual acl? I'm not quite sure what's wrong.
the local_parts information is never read, it seems.
Any suggestions are more than welcome.