* on the Fri, Jan 26, 2007 at 11:16:46PM +0800, Chih-Cherng Chin wrote:

>> We use exim 4.62 with mysql. I'd like to set up whitelist that is
>> automatically updated with $recipients value when a user in our domain
>> sends out an email. The $recipients is a comma delimited list of the
>> recipients available during data acl. I see that it can be done using
>> the Perl but I was hoping not to have to use Perl for performance
>> reasons. Has anyone done this without using Perl? 
> I have done something similiar without using embedded Perl while setting
> up greylisting.  The sender and recipients of every outbound mail are
> stored in a DBM file.  With the help of exim acl, recipients' reply would
> skip the greylisting automatically.  It greatly reduces the number of ham
> mail deferred by greylisting.
> The way I do it is very simple:

I have a couple of more complicated, but cleaner methods(imo):

1.) I use MySQL. I wrote a mysql stored function that takes the value of
$recipients, and processes each address in a loop. 

2.) Use a recursive ACL to separate the contents of $recipients and do a db
call for each recipient, eg below:

acl_smtp_data = acl_check_data

acl_check_data:

   warn set acl_m0 =
        set acl_m1 =
        acl        = acl_process_recipients

acl_process_recipients:

   warn set acl_m0 = ${if eq{$acl_m0}{}{$recipients}{}}
        set acl_m1 = ${if match{$acl_m0}{\N^([^,]+)\N}{$1}{}}
        set acl_m0 = ${sg{$acl_m0}{\N^[^,]+,?(.*?)$\N}{\$2}}

   # acl_m1 contains a single email address in the list at this point. #
   # Do stuff with it, but do not accept/deny/drop/defer at this point #

   warn !condition = ${if eq{$acl_m0}{}}
        acl        = acl_process_recipients

   accept

Disclaimer: That example above is untested. I pulled apart an old piece
of config I wrote and modified it for your purpose. Hoepfully you get
the idea though.

Mike

-- 
## List details at http://www.exim.org/mailman/listinfo/exim-users 
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://www.exim.org/eximwiki/

Reply via email to