Todd Lyons wrote:

>>> This is an implementation of greylisting that uses memcached.  Here
>>> are what I perceive as advantages:
>>> 4. Uses existing perl module.
>>> 5. Two macros do everything.
>>> 6. Uses config file to set memcache servers.
>> Talking to memcached directly from Exim by using ${readsocket} is
>> considerably more efficient than using Perl. Also, readsocket is
>> compiled into Exim by default and is therefore available in all of the
>> standard distributions of Exim.
>>
>> https://secure.grepular.com/blog/index.php/2009/05/13/accessing-memcached-from-exim/
> 
> I definitely considered implementing it that way and originally
> preferred that over using perl.  My understanding is that using
> readsocket works for when you have one memcached server.  But my
> system has 3 memcached servers and using the perl modules distributes
> the keys across all 3 according to the key hash.  Using the readsocket
> method I would have to come up with my own method of hashing the key
> to choose which server to connect to for the data.  Since I'm
> primarily a perl guy, I suppose I stayed within my comfort zone
> because I don't know that I have the exim fu to properly and safely
> implement said hashing algorithm.  Suggestions appreciated!  As long
> as it can read an external file for the list of memcached servers,
> that meets my requirements.

Hmmm, you could do that all inside Exim to. Use ${readfile} to get the 
list of memcached servers. Then, you'd use a simple hashing algorithm 
like: Take the first octet of the IP address and then mod it against the 
number of servers you've obtained. Eg:

${eval:${sg{$sender_host_address}{\N\..+\N}{}}%3}

That would return consistant values for each IP address where the values 
are 0, 1 or 2. Then pick the server to connect to.

It's not straight forward though.

-- 
Mike Cardwell - IT Consultant and LAMP developer
Cardwell IT Ltd. (UK Reg'd Company #06920226) http://cardwellit.com/

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

Reply via email to