SPAMD/malware: Log service identity with errors. Bug 1740
[exim.git] / src / src / spam.c
index f7a34694b3f5339b8bd6dbd79261cab620e3bb4e..6a0ca3c20b550e7355f580ddcef88a365cba4ad2 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003-???? */
+/* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003 - 2015 */
 /* License: GPL */
 
 /* Code for calling spamassassin's spamd. Called from acl.c. */
@@ -28,6 +28,7 @@ static int
 spamd_param_init(spamd_address_container *spamd)
 {
 /* default spamd server weight, time and priority value */
+spamd->is_rspamd = FALSE;
 spamd->is_failed = FALSE;
 spamd->weight = SPAMD_WEIGHT;
 spamd->timeout = SPAMD_TIMEOUT;
@@ -296,7 +297,7 @@ start = time(NULL);
     sd = (spamd_address_container *)store_get(sizeof(spamd_address_container));
 
     for (sublist = address, args = 0, spamd_param_init(sd);
-        s = string_nextinlist(&sublist, &sublist_sep, NULL, 0);
+        (s = string_nextinlist(&sublist, &sublist_sep, NULL, 0));
         args++
         )
       {
@@ -347,7 +348,7 @@ start = time(NULL);
          || sd->retry <= 0
         )
        break;
-      DEBUG(D_acl) debug_printf("sspamd: erver %s: retry conn\n", sd->hostspec);
+      DEBUG(D_acl) debug_printf("spamd: server %s: retry conn\n", sd->hostspec);
       while (sd->retry > 0) sd->retry = sleep(sd->retry);
       }
     if (spamd_sock >= 0)
@@ -396,7 +397,7 @@ if (sd->is_rspamd)
   if ((authid = expand_string(US"$authenticated_id")) != NULL && *authid != '\0')
     req_str = string_sprintf("%sUser: %s\r\n", req_str, authid);
   req_str = string_sprintf("%s\r\n", req_str);
-  wrote = send(spamd_sock, req_str, Ustrlen(req_str), 0); 
+  wrote = send(spamd_sock, req_str, Ustrlen(req_str), 0);
   }
 else
   {                            /* spamassassin variant */
@@ -413,7 +414,7 @@ if (wrote == -1)
   {
   (void)close(spamd_sock);
   log_write(0, LOG_MAIN|LOG_PANIC,
-       "%s spamd send failed: %s", loglabel, strerror(errno));
+       "%s spamd %s send failed: %s", loglabel, callout_address, strerror(errno));
   goto defer;
   }
 
@@ -458,13 +459,13 @@ again:
       {
       if (result == -1)
        log_write(0, LOG_MAIN|LOG_PANIC,
-         "%s %s on spamd socket", loglabel, strerror(errno));
+         "%s %s on spamd %s socket", loglabel, callout_address, strerror(errno));
       else
        {
        if (time(NULL) - start < sd->timeout)
          goto again;
        log_write(0, LOG_MAIN|LOG_PANIC,
-         "%s timed out writing spamd socket", loglabel);
+         "%s timed out writing spamd %s, socket", loglabel, callout_address);
        }
       (void)close(spamd_sock);
       goto defer;
@@ -474,7 +475,7 @@ again:
     if (wrote == -1)
       {
       log_write(0, LOG_MAIN|LOG_PANIC,
-         "%s %s on spamd socket", loglabel, strerror(errno));
+         "%s %s on spamd %s socket", loglabel, callout_address, strerror(errno));
       (void)close(spamd_sock);
       goto defer;
       }
@@ -513,7 +514,7 @@ while ((i = ip_recv(spamd_sock,
 if (i <= 0 && errno != 0)
   {
   log_write(0, LOG_MAIN|LOG_PANIC,
-       "%s error reading from spamd socket: %s", loglabel, strerror(errno));
+       "%s error reading from spamd %s, socket: %s", loglabel, callout_address, strerror(errno));
   (void)close(spamd_sock);
   return DEFER;
   }
@@ -530,7 +531,7 @@ if (sd->is_rspamd)
          &spamd_reject_score, &spamd_report_offset)) != 5)
     {
     log_write(0, LOG_MAIN|LOG_PANIC,
-             "%s cannot parse spamd output: %d", loglabel, r);
+             "%s cannot parse spamd %s, output: %d", loglabel, callout_address, r);
     return DEFER;
     }
   /* now parse action */
@@ -559,7 +560,7 @@ else
           spamd_version,&spamd_score,&spamd_threshold,&spamd_report_offset) != 3)
        {
        log_write(0, LOG_MAIN|LOG_PANIC,
-                 "%s cannot parse spamd output", loglabel);
+                 "%s cannot parse spamd %s output", loglabel, callout_address);
        return DEFER;
        }
     }