Re: [Exim] local_scan timeout

Top Page
Delete this message
Reply to this message
Author: Physicman
Date:  
To: exim-users
Subject: Re: [Exim] local_scan timeout
--
--
On Mon, 23 Jun 2003 10:09:53 +0100 (BST)
Philip Hazel <ph10@???> wrote:

>
> On Fri, 20 Jun 2003, Christopher Bodenstein wrote:
>
> > I just noticed that when the local_scan timeouts, exim will then
> > defer the mail.
> > Is there a way to tell exim to accept the mail instead of deferring
> > it?
>
> No. Idea noted.
>

Ok, here is a very ugly hack that probably breaks a lot of things, but
strangely enough it seems to work for me.

It just adds a configuration option (boolean)
local_scan_accept_on_timeout which defaults to false.

I don't know if this is of some use for you, but just in case here is
the diff ;)

> --
> Philip Hazel            University of Cambridge Computing Service,
> ph10@???      Cambridge, England. Phone: +44 1223 334714.
> Get the Exim 4 book:    http://www.uit.co.uk/exim-book

>
>


Best regards,

Chris

--
 ,''`.  Christopher `Physicman' Bodenstein <cb@???>
 : :' :  Physicman.Net     :   http://www.physicman.net/
 `. `'   Debian GNU/Linux  :   http://www.debian.org/
   `-    Debian IPv6       :   http://people.debian.org/~csmall/ipv6/
--
diff -Nur exim-4.20/src/globals.c exim-4.20-modified/src/globals.c
--- exim-4.20/src/globals.c    Mon May 12 15:39:19 2003
+++ exim-4.20-modified/src/globals.c    Mon Jun 23 21:27:04 2003
@@ -286,6 +286,7 @@
 uschar *auth_defer_msg         = US"reason not recorded";
 uschar *auth_defer_user_msg    = US"";
 int     auto_thaw              = 0;
+uschar *av_scanner             = US"sophie:/var/run/sophie";


 BOOL    background_daemon      = TRUE;
 uschar *base62_chars=
@@ -400,6 +401,8 @@
 BOOL    deliver_selectstring_regex = FALSE;
 uschar *deliver_selectstring_sender = NULL;
 BOOL    deliver_selectstring_sender_regex = FALSE;
+int     demime_errorlevel      = 0;
+uschar *demime_reason          = NULL;
 BOOL    disable_logging        = FALSE;


 uschar *dns_again_means_nonexist = NULL;
@@ -443,6 +446,7 @@
 uschar *filter_test            = NULL;
 uschar *filter_thisaddress     = NULL;
 int     finduser_retries       = 0;
+uschar *found_extension        = NULL;
 uschar *freeze_tell            = NULL;


 uschar *gecos_name             = NULL;
@@ -516,6 +520,7 @@
 ip_address_item  *local_interface_data = NULL;
 uschar *local_scan_data        = NULL;
 int     local_scan_timeout     = 5*60;
+BOOL    local_scan_accept_on_timeout    = FALSE;
 BOOL    local_sender_retain    = FALSE;
 tree_node *localpartlist_anchor= NULL;
 int     localpartlist_count    = 0;
@@ -565,6 +570,7 @@
 uschar *lookup_value           = NULL;


 macro_item  *macros            = NULL;
+uschar *malware_name           = NULL;
 int     max_username_length    = 0;
 int     message_age            = 0;
 uschar *message_body           = NULL;
@@ -680,6 +686,7 @@
 const pcre *regex_PIPELINING   = NULL;
 const pcre *regex_SIZE         = NULL;
 const pcre *regex_ismsgid      = NULL;
+uschar *regex_match_string     = NULL;
 int     remote_delivery_count  = 0;
 int     remote_max_parallel    = 2;
 uschar *remote_sort_domains    = NULL;
@@ -846,6 +853,11 @@
 int     smtp_rlr_threshold     = INT_MAX;
 BOOL    smtp_use_pipelining    = FALSE;
 BOOL    smtp_use_size          = FALSE;
+uschar *spamd_address          = US"127.0.0.1 783";
+uschar *spam_bar               = NULL;
+uschar *spam_report            = NULL;
+uschar *spam_score             = NULL;
+uschar *spam_score_int         = NULL;
 BOOL    split_spool_directory  = FALSE;
 uschar *spool_directory        = US SPOOL_DIRECTORY
                "\0<--------------Space to patch spool_directory->";
diff -Nur exim-4.20/src/globals.h exim-4.20-modified/src/globals.h
--- exim-4.20/src/globals.h    Mon May 12 15:39:19 2003
+++ exim-4.20-modified/src/globals.h    Mon Jun 23 21:27:04 2003
@@ -129,6 +129,7 @@
 extern uschar *auth_defer_msg;         /* Error message for log */
 extern uschar *auth_defer_user_msg;    /* Error message for user */
 extern int     auto_thaw;              /* Auto-thaw interval */
+extern uschar *av_scanner;             /* AntiVirus scanner to use for the malware condition */


 extern BOOL    background_daemon;      /* Set FALSE to keep in foreground */
 extern uschar *base62_chars;           /* Table of base-62 characters */
@@ -210,6 +211,8 @@
 extern BOOL    deliver_selectstring_regex; /* String is regex */
 extern uschar *deliver_selectstring_sender; /* For selecting by sender */
 extern BOOL    deliver_selectstring_sender_regex; /* String is regex */
+extern int     demime_errorlevel;      /* Severity of MIME error */
+extern uschar *demime_reason;          /* Reason for broken MIME container */
 extern BOOL    disable_logging;        /* Disables log writing when TRUE */


 extern uschar *dns_again_means_nonexist; /* Domains that are badly set up */
@@ -250,6 +253,7 @@
 extern uschar *filter_test;            /* Run as a filter tester on this file */
 extern uschar *filter_thisaddress;     /* For address looping */
 extern int     finduser_retries;       /* Retry count for getpwnam() */
+extern uschar *found_extension;        /* demime acl condition: file extension found */
 extern uschar *freeze_tell;            /* Message on (some) freezings */


 extern uschar *gecos_name;             /* To be expanded when pattern matches */
@@ -303,6 +307,7 @@
 extern optionlist local_scan_options[];/* Option list for local_scan() */
 extern int     local_scan_options_count; /* Size of the list */
 extern int     local_scan_timeout;     /* Timeout for local_scan() */
+extern BOOL    local_scan_accept_on_timeout;    /* Accept mail when the local_scan timeouts */
 extern BOOL    local_sender_retain;    /* Retain Sender: (with no From: check) */
 extern tree_node *localpartlist_anchor;/* Tree of defined localpart lists */
 extern int     localpartlist_count;    /* Number defined */
@@ -322,6 +327,7 @@
 extern uschar *lookup_value;           /* Value looked up from file */


 extern macro_item *macros;             /* Configuration macros */
+extern uschar *malware_name;           /* Name of virus or malware ("W32/Klez-H") */
 extern int     max_username_length;    /* For systems with broken getpwnam() */
 extern int     message_age;            /* In seconds */
 extern uschar *message_body;           /* Start of message body for filter */
@@ -421,6 +427,7 @@
 extern const pcre  *regex_PIPELINING;  /* For recognizing PIPELINING */
 extern const pcre  *regex_SIZE;        /* For recognizing SIZE settings */
 extern const pcre  *regex_ismsgid;     /* Compiled r.e. for message it */
+extern uschar *regex_match_string;     /* regex that matched a line (regex ACL condition) */
 extern int     remote_delivery_count;  /* Number of remote addresses */
 extern int     remote_max_parallel;    /* Maximum parallel delivery */
 extern uschar *remote_sort_domains;    /* Remote domain sorting order */
@@ -511,6 +518,11 @@
 extern BOOL    smtp_use_pipelining;    /* Global for passed connections */
 extern BOOL    smtp_use_size;          /* Global for passed connections */
 extern BOOL    split_spool_directory;  /* TRUE to use multiple subdirs */
+extern uschar *spamd_address;          /* address for the spamassassin daemon */
+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) */
+extern uschar *spam_score_int;         /* spam_score * 10 (int) */
 extern uschar *spool_directory;        /* Name of spool directory */
 extern int     string_datestamp_offset;/* After insertion by string_format */
 extern BOOL    strip_excess_angle_brackets; /* Surrounding route-addrs */
diff -Nur exim-4.20/src/readconf.c exim-4.20-modified/src/readconf.c
--- exim-4.20/src/readconf.c    Mon May 12 15:39:21 2003
+++ exim-4.20-modified/src/readconf.c    Mon Jun 23 21:27:56 2003
@@ -152,6 +152,7 @@
   { "allow_utf8_domains",       opt_bool,        &allow_utf8_domains },
   { "auth_advertise_hosts",     opt_stringptr,   &auth_advertise_hosts },
   { "auto_thaw",                opt_time,        &auto_thaw },
+  { "av_scanner",               opt_stringptr,   &av_scanner },
   { "bi_command",               opt_stringptr,   &bi_command },
   { "bounce_message_file",      opt_stringptr,   &bounce_message_file },
   { "bounce_message_text",      opt_stringptr,   &bounce_message_text },
@@ -212,6 +213,7 @@
   { "local_from_prefix",        opt_stringptr,   &local_from_prefix },
   { "local_from_suffix",        opt_stringptr,   &local_from_suffix },
   { "local_interfaces",         opt_stringptr,   &local_interfaces },
+  { "local_scan_accept_on_timeout", opt_bool,     &local_scan_accept_on_timeout },
   { "local_scan_timeout",       opt_time,        &local_scan_timeout },
   { "local_sender_retain",      opt_bool,        &local_sender_retain },
   { "localhost_number",         opt_stringptr,   &host_number_string },
@@ -297,6 +299,7 @@
   { "smtp_receive_timeout",     opt_time,        &smtp_receive_timeout },
   { "smtp_reserve_hosts",       opt_stringptr,   &smtp_reserve_hosts },
   { "smtp_return_error_details",opt_bool,        &smtp_return_error_details },
+  { "spamd_address",            opt_stringptr,   &spamd_address },
   { "split_spool_directory",    opt_bool,        &split_spool_directory },
   { "spool_directory",          opt_stringptr,   &spool_directory },
   { "strip_excess_angle_brackets", opt_bool,     &strip_excess_angle_brackets },
diff -Nur exim-4.20/src/receive.c exim-4.20-modified/src/receive.c
--- exim-4.20/src/receive.c    Mon May 12 15:39:21 2003
+++ exim-4.20-modified/src/receive.c    Mon Jun 23 21:27:18 2003
@@ -294,19 +294,27 @@
 function.


 Argument:  the signal number
-Returns:   nothing
+Returns:   TRUE if local_scan_accept_on_timeout is set to TRUE
+       FALSE if anything else.
 */


-static void
+BOOL
 local_scan_timeout_handler(int sig)
 {
 sig = sig;    /* Keep picky compilers happy */
+if(local_scan_accept_on_timeout)
+{
+    log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() function timed out, but configured to accept mail (local_scan_accept_on_timeout = TRUE)"); /* Does not return */
+    return TRUE;
+}
+else
+{
 log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() function timed out - "
   "message temporarily rejected (size %d)", message_size);
 receive_bomb_out(US"local verification problem");   /* Does not return */
+return FALSE;
+}
 }
-
-


 /*************************************************
 *            local_scan() crashed                *
--
[ Content of type application/pgp-signature deleted ]
--