diff -urbB exim-4.54.org/src/globals.c exim-4.54/src/globals.c --- exim-4.54.org/src/globals.c 2005-11-25 22:02:44.762799750 +0100 +++ exim-4.54/src/globals.c 2005-11-25 21:54:06.210392250 +0100 @@ -1058,6 +1058,7 @@ #ifdef WITH_CONTENT_SCAN uschar *spamd_address = US"127.0.0.1 783"; +BOOL spamd_loadbalance = TRUE; uschar *spam_bar = NULL; uschar *spam_report = NULL; uschar *spam_score = NULL; diff -urbB exim-4.54.org/src/globals.h exim-4.54/src/globals.h --- exim-4.54.org/src/globals.h 2005-11-25 22:02:44.762799750 +0100 +++ exim-4.54/src/globals.h 2005-11-25 21:54:37.700360250 +0100 @@ -656,6 +656,7 @@ #ifdef WITH_CONTENT_SCAN extern uschar *spamd_address; /* address for the spamassassin daemon */ +extern BOOL spamd_loadbalance; /* load balance or try in order from config */ extern uschar *spam_bar; /* the spam "bar" (textual representation of spam_score) */ extern uschar *spam_report; /* the spamd report (multiline) */ extern uschar *spam_score; /* the spam score (float) */ diff -urbB exim-4.54.org/src/readconf.c exim-4.54/src/readconf.c --- exim-4.54.org/src/readconf.c 2005-11-25 22:02:44.762799750 +0100 +++ exim-4.54/src/readconf.c 2005-11-25 21:55:01.061820250 +0100 @@ -339,6 +339,7 @@ { "smtp_return_error_details",opt_bool, &smtp_return_error_details }, #ifdef WITH_CONTENT_SCAN { "spamd_address", opt_stringptr, &spamd_address }, + { "spamd_loadbalance", opt_bool, &spamd_loadbalance }, #endif { "split_spool_directory", opt_bool, &split_spool_directory }, { "spool_directory", opt_stringptr, &spool_directory }, diff -urbB exim-4.54.org/src/spam.c exim-4.54/src/spam.c --- exim-4.54.org/src/spam.c 2005-10-04 10:55:28.000000000 +0200 +++ exim-4.54/src/spam.c 2005-11-25 22:01:46.839179750 +0100 @@ -127,7 +127,10 @@ return DEFER; }; + if (spamd_loadbalance) current_server = start_server = (int)now % num_servers; + else + current_server = start_server = 0; while (1) {