[Exim] would like hosts_randomize to be more random

Top Page
Delete this message
Reply to this message
Author: mark david mcCreary
Date:  
To: exim-users
Subject: [Exim] would like hosts_randomize to be more random
I am having trouble getting Exim 4.04 on a Debian 3.0 Linux box to do
load balancing using hosts_randomize with regards to dispersing email
to smarthosts.

I call Exim 5 times, the first 4 times with one thousand addresses
each, and the 5th time with slightly less than 1,000.

Exim then relays this to some smarthost machines for final delivery,
in batches of 100 addresses each. I have 5 smarthost machines, and
they are weighted according to the size of the pipe they are attached
to, with brisk.mail-list.com being the smallest pipe.

The eximstats reports shows the following

Grand total summary
-------------------
                                                        At least one address
   TOTAL               Volume    Messages    Hosts      Delayed       Failed
   Received              22KB           5        1       0  0.0%      0  0.0%
   Delivered            227KB          51        5


Top 50 host destinations by message count
-----------------------------------------

      42      187KB   breeze.mail-list.com
       3       13KB   brisk.mail-list.com
       3       13KB   express.mail-list.com
       2       9096   velocity.mail-list.com
       1       4548   swifty.mail-list.com




This is showing that breeze is handing 15 times the messages as the
other machines. All machines except for brisk.mail-list.com should
be handling roughly the same amount of email, and brisk should be 1/3
the amount of those.


The pertinent parts of my Exim configuration file are

remote_max_parallel = 5

begin routers

single_delivery_domains:
driver = manualroute
domains = ! +local_domains
self = defer
host_find_failed = defer
same_domain_copy_routing
route_list = * breeze.mail-list.com bydns
transport = one_hundred_smtp_X_Header

begin transports

one_hundred_smtp_X_Header:
   driver = smtp
   headers_remove = RESENT_HEADERS
   size_addition = -1
   connection_max_messages = 5000
   keepalive
   serialize_hosts = *
   hosts_max_try = 5
   gethostbyname
   hosts = breeze.mail-list.com:\
           breeze.mail-list.com:\
           breeze.mail-list.com:\
           brisk.mail-list.com:\
           express.mail-list.com:\
           express.mail-list.com:\
           express.mail-list.com:\
           swifty.mail-list.com:\
           swifty.mail-list.com:\
           swifty.mail-list.com:\
           velocity.mail-list.com:\
           velocity.mail-list.com:\
           velocity.mail-list.com
   hosts_override
   hosts_randomize
   max_rcpt = 100




I'v tried dropping the "breeze.mail-list.com bydns" from the
route_list statement of the router, but it causes a syntax error. I
have also tried it without the serialize_hosts argument of the
transport.

The randomization used to work just fine with alias files, and I'm
not sure why it's failing when being passed chunks of email addresses.

Does anybody see the error in my ways or have any suggestions ?

Thanks

mark