Weekend W.I.P. checkin
authorTom Kistner <tom@duncanthrax.net>
Fri, 26 Nov 2004 16:04:26 +0000 (16:04 +0000)
committerTom Kistner <tom@duncanthrax.net>
Fri, 26 Nov 2004 16:04:26 +0000 (16:04 +0000)
src/src/globals.c
src/src/globals.h
src/src/malware.c
src/src/mime.c
src/src/mime.h
src/src/regex.c
src/src/spam.c
src/src/spam.h
src/src/spool_mbox.c

index 6fc688654a2a02dcb32a60660baccf2f6d51ef92..1e5eb56590cf94734886939a55f1745dd1280686 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/globals.c,v 1.6.2.1 2004/11/25 15:33:55 tom Exp $ */
+/* $Cambridge: exim/src/src/globals.c,v 1.6.2.2 2004/11/26 16:04:26 tom Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -164,6 +164,9 @@ uschar *acl_smtp_expn          = NULL;
 uschar *acl_smtp_helo          = NULL;
 uschar *acl_smtp_mail          = NULL;
 uschar *acl_smtp_mailauth      = NULL;
+#ifdef WITH_CONTENT_SCAN
+uschar *acl_smtp_mime          = NULL;
+#endif
 uschar *acl_smtp_predata       = NULL;
 uschar *acl_smtp_quit          = NULL;
 uschar *acl_smtp_rcpt          = NULL;
@@ -315,6 +318,9 @@ auth_instance auth_defaults    = {
 uschar *auth_defer_msg         = US"reason not recorded";
 uschar *auth_defer_user_msg    = US"";
 int     auto_thaw              = 0;
+#ifdef WITH_CONTENT_SCAN
+uschar *av_scanner             = US"sophie:/var/run/sophie";  /* AV scanner */
+#endif
 
 BOOL    background_daemon      = TRUE;
 uschar *base62_chars=
@@ -479,6 +485,9 @@ uschar *expand_string_message;
 BOOL    extract_addresses_remove_arguments = TRUE;
 uschar *extra_local_interfaces = NULL;
 
+#ifdef WITH_CONTENT_SCAN
+BOOL    fake_reject            = FALSE;
+#endif
 int     filter_n[FILTER_VARIABLE_COUNT];
 BOOL    filter_running         = FALSE;
 int     filter_sn[FILTER_VARIABLE_COUNT];
@@ -639,6 +648,9 @@ uschar *lookup_value           = NULL;
 
 macro_item  *macros            = NULL;
 uschar *mailstore_basename     = NULL;
+#ifdef WITH_CONTENT_SCAN
+uschar *malware_name           = NULL;  /* Virus Name */
+#endif
 int     max_username_length    = 0;
 int     message_age            = 0;
 uschar *message_body           = NULL;
@@ -659,9 +671,33 @@ int     message_size           = 0;
 uschar *message_size_limit     = US"50M";
 uschar  message_subdir[2]      = { 0, 0 };
 uschar *message_reference      = NULL;
+
+/* MIME ACL expandables */
+#ifdef WITH_CONTENT_SCAN
+uschar *mime_anomaly_level     = NULL;
+uschar *mime_anomaly_text      = NULL;
+uschar *mime_boundary          = NULL;
+uschar *mime_charset           = NULL;
+uschar *mime_content_description = NULL;
+uschar *mime_content_disposition = NULL;
+uschar *mime_content_id        = NULL;
+unsigned int mime_content_size = 0;
+uschar *mime_content_transfer_encoding = NULL;
+uschar *mime_content_type      = NULL;
+uschar *mime_decoded_filename  = NULL;
+uschar *mime_filename          = NULL;
+int     mime_is_multipart      = 0;
+int     mime_is_coverletter    = 0;
+int     mime_is_rfc822         = 0;
+int     mime_part_count        = -1;
+#endif
+
 BOOL    mua_wrapper            = FALSE;
 
 uid_t  *never_users            = NULL;
+#ifdef WITH_CONTENT_SCAN
+BOOL    no_mbox_unspool        = FALSE;
+#endif
 BOOL    no_multiline_responses = FALSE;
 
 uid_t   original_euid;
@@ -762,6 +798,9 @@ const pcre *regex_From         = NULL;
 const pcre *regex_PIPELINING   = NULL;
 const pcre *regex_SIZE         = NULL;
 const pcre *regex_ismsgid      = NULL;
+#ifdef WITH_CONTENT_SCAN
+uschar *regex_match_string     = NULL;
+#endif
 int     remote_delivery_count  = 0;
 int     remote_max_parallel    = 2;
 uschar *remote_sort_domains    = NULL;
@@ -942,6 +981,15 @@ int     smtp_rlr_limit         = 0;
 int     smtp_rlr_threshold     = INT_MAX;
 BOOL    smtp_use_pipelining    = FALSE;
 BOOL    smtp_use_size          = FALSE;
+
+#ifdef WITH_CONTENT_SCAN
+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;
+#endif
+
 BOOL    split_spool_directory  = FALSE;
 uschar *spool_directory        = US SPOOL_DIRECTORY
                            "\0<--------------Space to patch spool_directory->";
index 44731b5854952c7beddacd09fd95a0b007f5df01..c63a56bc9661ac31ad28503f5fe99549f757b490 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/globals.h,v 1.7 2004/11/25 13:54:31 ph10 Exp $ */
+/* $Cambridge: exim/src/src/globals.h,v 1.6.2.1 2004/11/26 16:04:26 tom Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -106,6 +106,9 @@ extern uschar *acl_smtp_expn;          /* ACL run for EXPN */
 extern uschar *acl_smtp_helo;          /* ACL run for HELO/EHLO */
 extern uschar *acl_smtp_mail;          /* ACL run for MAIL */
 extern uschar *acl_smtp_mailauth;      /* ACL run for MAIL AUTH */
+#ifdef WITH_CONTENT_SCAN
+extern uschar *acl_smtp_mime;          /* ACL run after DATA, before acl_smtp_data, for each MIME part */
+#endif
 extern uschar *acl_smtp_predata;       /* ACL run for DATA command */
 extern uschar *acl_smtp_quit;          /* ACL run for QUIT */
 extern uschar *acl_smtp_rcpt;          /* ACL run for RCPT */
@@ -144,6 +147,9 @@ extern auth_instance auth_defaults;    /* Default values */
 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 */
+#ifdef WITH_CONTENT_SCAN
+extern uschar *av_scanner;             /* AntiVirus scanner to use for the malware condition */
+#endif
 
 extern BOOL    background_daemon;      /* Set FALSE to keep in foreground */
 extern uschar *base62_chars;           /* Table of base-62 characters */
@@ -272,12 +278,13 @@ extern BOOL    expand_string_forcedfail; /* TRUE if failure was "expected" */
 extern BOOL    extract_addresses_remove_arguments; /* Controls -t behaviour */
 extern uschar *extra_local_interfaces; /* Local, non-listen interfaces */
 
+#ifdef WITH_CONTENT_SCAN
+extern BOOL    fake_reject;            /* TRUE if fake reject is to be given */
+#endif
 extern int     filter_n[FILTER_VARIABLE_COUNT]; /* filter variables */
 extern BOOL    filter_running;         /* TRUE while running a filter */
 extern int     filter_sn[FILTER_VARIABLE_COUNT]; /* variables set by system filter */
-extern int     filter_test;            /* Filter test type */
-extern uschar *filter_test_sfile;      /* System filter test file */
-extern uschar *filter_test_ufile;      /* User filter test file */
+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 uid_t   fixed_never_users[];    /* Can't be overridden */
@@ -360,6 +367,9 @@ extern uschar *lookup_value;           /* Value looked up from file */
 
 extern macro_item *macros;             /* Configuration macros */
 extern uschar *mailstore_basename;     /* For mailstore deliveries */
+#ifdef WITH_CONTENT_SCAN
+extern uschar *malware_name;           /* Name of virus or malware ("W32/Klez-H") */
+#endif
 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 */
@@ -379,9 +389,33 @@ extern int     message_size;           /* Size of message */
 extern uschar *message_size_limit;     /* As it says */
 extern uschar  message_subdir[];       /* Subdirectory for messages */
 extern uschar *message_reference;      /* Reference for error messages */
+
+/* MIME ACL expandables */
+#ifdef WITH_CONTENT_SCAN
+extern uschar *mime_anomaly_level;
+extern uschar *mime_anomaly_text;
+extern uschar *mime_boundary;
+extern uschar *mime_charset;
+extern uschar *mime_content_description;
+extern uschar *mime_content_disposition;
+extern uschar *mime_content_id;
+extern unsigned int mime_content_size;
+extern uschar *mime_content_transfer_encoding;
+extern uschar *mime_content_type;
+extern uschar *mime_decoded_filename;
+extern uschar *mime_filename;
+extern int     mime_is_multipart;
+extern int     mime_is_coverletter;
+extern int     mime_is_rfc822;
+extern int     mime_part_count;
+#endif
+
 extern BOOL    mua_wrapper;            /* TRUE when Exim is wrapping an MUA */
 
 extern uid_t  *never_users;            /* List of uids never to be used */
+#ifdef WITH_CONTENT_SCAN
+extern BOOL    no_mbox_unspool;        /* don't unlink files in /scan directory */
+#endif
 extern BOOL    no_multiline_responses; /* For broken clients */
 
 extern optionlist optionlist_auths[];      /* These option lists are made */
@@ -467,6 +501,9 @@ extern const pcre  *regex_From;        /* For recognizing "From_" lines */
 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 */
+#ifdef WITH_CONTENT_SCAN
+extern uschar *regex_match_string;     /* regex that matched a line (regex ACL condition) */
+#endif
 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 */
@@ -558,6 +595,15 @@ extern int     smtp_rlr_limit;         /* Max delay */
 extern int     smtp_rlr_threshold;     /* Threshold for RCPT rate limit */
 extern BOOL    smtp_use_pipelining;    /* Global for passed connections */
 extern BOOL    smtp_use_size;          /* Global for passed connections */
+
+#ifdef WITH_CONTENT_SCAN
+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) */
+#endif
+
 extern BOOL    split_spool_directory;  /* TRUE to use multiple subdirs */
 extern uschar *spool_directory;        /* Name of spool directory */
 extern int     string_datestamp_offset;/* After insertion by string_format */
index ec5b1fbe0ceebdb221834ebfb72cc5c33e2feafb..a24d0de87587b466ab6d95b1c9753af4d4268e71 100644 (file)
@@ -1,11 +1,10 @@
-/* $Cambridge: exim/src/src/malware.c,v 1.1.2.1 2004/11/26 09:13:34 tom Exp $ */
+/* $Cambridge: exim/src/src/malware.c,v 1.1.2.2 2004/11/26 16:04:26 tom Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* This file is part of the exiscan-acl content scanner
-patch. It is NOT part of the standard exim distribution. */
+#ifdef WITH_CONTENT_SCAN
 
 /* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003-???? */
 /* License: GPL */
@@ -18,7 +17,7 @@ patch. It is NOT part of the standard exim distribution. */
 int mksd_scan_packed(int sock);
 int mksd_scan_unpacked(int sock, int maxproc);
 
-/* SHUT_WR seems to be undefined on Unixware ? */
+/* SHUT_WR seems to be undefined on Unixware? */
 #ifndef SHUT_WR
 #define SHUT_WR 1
 #endif
@@ -1415,3 +1414,4 @@ int mksd_scan_unpacked (int sock, int maxproc)
   return OK;
 }
 
+#endif
index 8104204318f7ce72beb6608041053590978236c9..1203b4833ba7d9eb007066e59a6c311909b596cc 100644 (file)
@@ -1,11 +1,10 @@
-/* $Cambridge: exim/src/src/mime.c,v 1.1.2.1 2004/11/26 09:13:34 tom Exp $ */
+/* $Cambridge: exim/src/src/mime.c,v 1.1.2.2 2004/11/26 16:04:26 tom Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* This file is part of the exiscan-acl content scanner
-patch. It is NOT part of the standard exim distribution. */
+#ifdef WITH_CONTENT_SCAN
 
 /* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2004 */
 /* License: GPL */
@@ -711,4 +710,4 @@ int mime_acl_check(FILE *f, struct mime_boundary_context *context, uschar
   return rc;
 }
 
-
+#endif
index f9d67c34907d2686c3d2afc08ba02759a3bf17c5..29cb37d89e82e027a86ff0a123b915a22ec504a0 100644 (file)
@@ -1,11 +1,10 @@
-/* $Cambridge: exim/src/src/mime.h,v 1.1.2.1 2004/11/26 09:13:34 tom Exp $ */
+/* $Cambridge: exim/src/src/mime.h,v 1.1.2.2 2004/11/26 16:04:26 tom Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* This file is part of the exiscan-acl content scanner
-patch. It is NOT part of the standard exim distribution. */
+#ifdef WITH_CONTENT_SCAN
 
 /* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2004 */
 /* License: GPL */
@@ -77,3 +76,5 @@ static unsigned char mime_b64[256]={
 /* 224 */  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
 /* 240 */  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128,  128 
 };
+
+#endif
index 760910a74612d61e9efba68994ca66b6570aa2c9..a97ea059262972c8d4eb55cbfa4f031c1e809757 100644 (file)
@@ -1,11 +1,10 @@
-/* $Cambridge: exim/src/src/regex.c,v 1.1.2.1 2004/11/26 09:24:05 tom Exp $ */
+/* $Cambridge: exim/src/src/regex.c,v 1.1.2.2 2004/11/26 16:04:26 tom Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* This file is part of the exiscan-acl content scanner
-patch. It is NOT part of the standard exim distribution. */
+#ifdef WITH_CONTENT_SCAN
 
 /* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003-???? */
 /* License: GPL */
@@ -246,3 +245,4 @@ int mime_regex(uschar **listptr) {
   return FAIL;
 }
 
+#endif
index 877243502b38cf06286dd64880d64972f9a9b57b..134c3a814c3d318de368fffbf8fc6d317a347546 100644 (file)
@@ -1,11 +1,10 @@
-/* $Cambridge: exim/src/src/spam.c,v 1.1.2.1 2004/11/26 09:13:34 tom Exp $ */
+/* $Cambridge: exim/src/src/spam.c,v 1.1.2.2 2004/11/26 16:04:26 tom Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* This file is part of the exiscan-acl content scanner
-patch. It is NOT part of the standard exim distribution. */
+#ifdef WITH_CONTENT_SCAN
 
 /* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003-???? */
 /* License: GPL */
@@ -338,3 +337,5 @@ int spam(uschar **listptr) {
     return spam_rc;
   };
 }
+
+#endif
index 4d72a4cf22c18769ef5d2eab84d63b097a2d79d4..ace7bb64c6f177a85f64bf64cab93f1d6a6a8e31 100644 (file)
@@ -1,11 +1,10 @@
-/* $Cambridge: exim/src/src/spam.h,v 1.1.2.1 2004/11/26 09:13:34 tom Exp $ */
+/* $Cambridge: exim/src/src/spam.h,v 1.1.2.2 2004/11/26 16:04:26 tom Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* This file is part of the exiscan-acl content scanner
-patch. It is NOT part of the standard exim distribution. */
+#ifdef WITH_CONTENT_SCAN
 
 /* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003-???? */
 /* License: GPL */
@@ -28,5 +27,4 @@ typedef struct spamd_address_container {
   unsigned int tcp_port;
 } spamd_address_container;
 
-
-
+#endif
index 946a0728797faa69b8d05f0b8a78f23355ed4e26..8fa3f6883b5feacedbaf9843d4bd4ef16696c5b8 100644 (file)
@@ -1,11 +1,10 @@
-/* $Cambridge: exim/src/src/spool_mbox.c,v 1.1.2.1 2004/11/26 09:13:34 tom Exp $ */
+/* $Cambridge: exim/src/src/spool_mbox.c,v 1.1.2.2 2004/11/26 16:04:26 tom Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* This file is part of the exiscan-acl content scanner
-patch. It is NOT part of the standard exim distribution. */
+#ifdef WITH_CONTENT_SCAN
 
 /* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003-???? */
 /* License: GPL */
@@ -17,9 +16,10 @@ sub directory of exim's spool directory. */
 
 /* externals, we must reset them on unspooling */
 extern int demime_ok;
+extern struct file_extension *file_extensions;
+
 extern int malware_ok;
 extern int spam_ok;
-extern struct file_extension *file_extensions;
 
 int spool_mbox_ok = 0;
 uschar spooled_message_id[17];
@@ -36,11 +36,6 @@ FILE *spool_mbox(unsigned long long *mbox_file_size) {
   struct stat statbuf;
   int i,j;
   
-  /*
-  uschar *received;
-  uschar *timestamp;
-  */
-  
   if (!spool_mbox_ok) {
     /* create scan directory, if not present */
     if (!directory_make(spool_directory, US "scan", 0750, FALSE)) {
@@ -64,31 +59,6 @@ FILE *spool_mbox(unsigned long long *mbox_file_size) {
       return NULL;
     };
     
-    /* Generate a preliminary Received: header and put it in the file.
-       We need to do this so SA can do DNS list checks */
-       
-    /* removed for 4.34
-    
-    timestamp = expand_string(US"${tod_full}");
-    received = expand_string(received_header_text);
-    if (received != NULL) {
-      uschar *my_received;
-      if (received[0] == 0) {
-        my_received = string_sprintf("Received: ; %s\n", timestamp);
-      }
-      else {
-        my_received = string_sprintf("%s; %s\n", received, timestamp);
-      }
-      i = fwrite(my_received, 1, Ustrlen(my_received), mbox_file);
-      if (i != Ustrlen(my_received)) {
-        debug_printf("error/short write on writing in: %s", mbox_path);
-        fclose(mbox_file);
-        return NULL;
-      };
-    };
-    
-    */
-    
     /* write all header lines to mbox file */
     my_headerlist = header_list;
     while (my_headerlist != NULL) {
@@ -196,3 +166,5 @@ void unspool_mbox(void) {
     };
   };
 }
+
+#endif