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/