diff -urN src.orig/spam.c src/spam.c --- src.orig/spam.c Fri Jul 18 20:55:42 2008 +++ src/spam.c Mon Nov 16 10:12:01 2009 @@ -48,6 +48,9 @@ #endif uschar *spamd_address_work; + int try_count = 3; +next_attempt: + /* stop compiler warning */ result = 0; @@ -327,6 +330,11 @@ /* reading done */ (void)close(spamd_sock); + + if ((spamd_buffer == NULL) || (spamd_buffer[0] == 0)) { + try_count--; + if (try_count > 0) goto next_attempt; + } /* dig in the spamd output and put the report in a multiline header, if requested */ if( sscanf(CS spamd_buffer,"SPAMD/%7s 0 EX_OK\r\nContent-length: %*u\r\n\r\n%lf/%lf\r\n%n",