[exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog NewSt…

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: exim-cvs
Subject: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog NewStuff exim/exim-src ACKNOWLEDGMENTS exim/exim-src/src exim.c macros.h exim/exim-test/confs 0542 exim/exim-test/log 0542 exim/exim-test/scri
ph10 2006/10/23 14:24:22 BST

  Modified files:
    exim-doc/doc-txt     ChangeLog NewStuff 
    exim-src             ACKNOWLEDGMENTS 
    exim-src/src         exim.c macros.h 
  Added files:
    exim-test/confs      0542 
    exim-test/log        0542 
    exim-test/scripts/0000-Basic 0542 
    exim-test/stdout     0542 
  Log:
  John Jetmore's -Mset patch.


  Revision  Changes    Path
  1.413     +2 -0      exim/exim-doc/doc-txt/ChangeLog
  1.118     +8 -0      exim/exim-doc/doc-txt/NewStuff
  1.60      +2 -1      exim/exim-src/ACKNOWLEDGMENTS
  1.45      +57 -20    exim/exim-src/src/exim.c
  1.28      +1 -1      exim/exim-src/src/macros.h
  1.1       +17 -0     exim/exim-test/confs/0542 (new)
  1.1       +1 -0      exim/exim-test/log/0542 (new)
  1.1       +17 -0     exim/exim-test/scripts/0000-Basic/0542 (new)
  1.1       +7 -0      exim/exim-test/stdout/0542 (new)


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.412
  retrieving revision 1.413
  diff -u -r1.412 -r1.413
  --- ChangeLog    23 Oct 2006 10:55:10 -0000    1.412
  +++ ChangeLog    23 Oct 2006 13:24:21 -0000    1.413
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.412 2006/10/23 10:55:10 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.413 2006/10/23 13:24:21 ph10 Exp $


   Change log file for Exim from version 4.21
   -------------------------------------------
  @@ -161,6 +161,8 @@
   PH/24 Exim crashed if verify=helo was activated during an incoming -bs
         connection, where there is no client IP address to check. In this
         situation, the verify now always succeeds.
  +
  +PH/25 Applied John Jetmore's -Mset patch.



Exim version 4.63

  Index: NewStuff
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
  retrieving revision 1.117
  retrieving revision 1.118
  diff -u -r1.117 -r1.118
  --- NewStuff    16 Oct 2006 15:44:36 -0000    1.117
  +++ NewStuff    23 Oct 2006 13:24:21 -0000    1.118
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.117 2006/10/16 15:44:36 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.118 2006/10/23 13:24:21 ph10 Exp $


   New Features in Exim
   --------------------
  @@ -130,6 +130,14 @@
      expanded if authentication is successful, and treated exactly as it is in
      plaintext. This can serve as a means of adding authorization to an
      authenticator.
  +
  +7. There is a new command-line option called -Mset. It is useful only in
  +   conjunction with -be (that is, when testing string expansions). It must be
  +   followed by a message id; Exim loads the given message before doing the
  +   expansions, thus setting message-specific variables such as $message_size
  +   and the header variables. This feature is provided to make it easier to test
  +   expansions that make use of these variables. However, Exim must be called by
  +   an admin user when -Mset is used.



Version 4.63

  Index: ACKNOWLEDGMENTS
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/ACKNOWLEDGMENTS,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- ACKNOWLEDGMENTS    18 Oct 2006 08:55:37 -0000    1.59
  +++ ACKNOWLEDGMENTS    23 Oct 2006 13:24:21 -0000    1.60
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.59 2006/10/18 08:55:37 ph10 Exp $
  +$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.60 2006/10/23 13:24:21 ph10 Exp $


EXIM ACKNOWLEDGEMENTS

@@ -20,7 +20,7 @@
Philip Hazel

Lists created: 20 November 2002
-Last updated: 18 October 2006
+Last updated: 23 October 2006


   THE OLD LIST
  @@ -169,6 +169,7 @@
   Peter Ilieve              Suggested patch for lookup search bug
   John Jetmore              Writing and maintaining the 'exipick' utility
                             Much helpful testing of the test suite
  +                          Patch for -Mset
   Bob Johannessen           Patch for Sieve envelope tests bug
                             Patch for negative uid/gid bug
   Christian Kellner         Patch for LDAP dereferencing


  Index: exim.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/exim.c,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- exim.c    2 Oct 2006 13:38:18 -0000    1.44
  +++ exim.c    23 Oct 2006 13:24:21 -0000    1.45
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/exim.c,v 1.44 2006/10/02 13:38:18 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/exim.c,v 1.45 2006/10/23 13:24:21 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -2252,6 +2252,7 @@
          -Mmad mark all recipients delivered
          -Mmd  mark recipients(s) delivered
          -Mes  edit sender
  +       -Mset load a message for use with -be
          -Mvb  show body
          -Mvh  show header
          -Mvl  show log
  @@ -2289,6 +2290,11 @@
         one_msg_action = TRUE;
         }
       else if (Ustrcmp(argrest, "rm") == 0) msg_action = MSG_REMOVE;
  +    else if (Ustrcmp(argrest, "set") == 0)
  +      {
  +      msg_action = MSG_LOAD;
  +      one_msg_action = TRUE;
  +      }
       else if (Ustrcmp(argrest, "t") == 0)  msg_action = MSG_THAW;
       else if (Ustrcmp(argrest, "vb") == 0)
         {
  @@ -2886,13 +2892,14 @@
       ) ||
       (
       msg_action_arg > 0 &&
  -    (daemon_listen || queue_interval >= 0 || list_options || checking ||
  -     bi_option || test_retry_arg >= 0 || test_rewrite_arg >= 0)
  +    (daemon_listen || queue_interval >= 0 || list_options ||
  +      (checking && msg_action != MSG_LOAD) ||
  +      bi_option || test_retry_arg >= 0 || test_rewrite_arg >= 0)
       ) ||
       (
       (daemon_listen || queue_interval >= 0) &&
       (sender_address != NULL || list_options || list_queue || checking ||
  -     bi_option)
  +      bi_option)
       ) ||
       (
       daemon_listen && queue_interval == 0
  @@ -3655,12 +3662,12 @@
     exit(EXIT_SUCCESS);
     }


-/* Handle actions on specific messages, except for the force delivery action,
-which is done below. Some actions take a whole list of message ids, which
-are known to continue up to the end of the arguments. Others take a single
-message id and then operate on the recipients list. */
+/* Handle actions on specific messages, except for the force delivery and
+message load actions, which are done below. Some actions take a whole list of
+message ids, which are known to continue up to the end of the arguments. Others
+take a single message id and then operate on the recipients list. */

  -if (msg_action_arg > 0 && msg_action != MSG_DELIVER)
  +if (msg_action_arg > 0 && msg_action != MSG_DELIVER && msg_action != MSG_LOAD)
     {
     int yield = EXIT_SUCCESS;
     set_process_info("acting on specified messages");
  @@ -3840,16 +3847,19 @@



/* Handle a request to deliver one or more messages that are already on the
-queue. Values of msg_action other than MSG_DELIVER are dealt with above. This
-is typically used for a small number when prodding by hand (when the option
-forced_delivery will be set) or when re-execing to regain root privilege.
-Each message delivery must happen in a separate process, so we fork a process
-for each one, and run them sequentially so that debugging output doesn't get
-intertwined, and to avoid spawning too many processes if a long list is given.
-However, don't fork for the last one; this saves a process in the common case
-when Exim is called to deliver just one message. */
+queue. Values of msg_action other than MSG_DELIVER and MSG_LOAD are dealt with
+above. MSG_LOAD is handled with -be (which is the only time it applies) below.
+
+Delivery of specific messages is typically used for a small number when
+prodding by hand (when the option forced_delivery will be set) or when
+re-execing to regain root privilege. Each message delivery must happen in a
+separate process, so we fork a process for each one, and run them sequentially
+so that debugging output doesn't get intertwined, and to avoid spawning too
+many processes if a long list is given. However, don't fork for the last one;
+this saves a process in the common case when Exim is called to deliver just one
+message. */

  -if (msg_action_arg > 0)
  +if (msg_action_arg > 0 && msg_action != MSG_LOAD)
     {
     if (prod_requires_admin && !admin_user)
       {
  @@ -4169,18 +4179,37 @@
     exim_exit(exit_value);
     }


-/* Handle expansion checking */
+/* Handle expansion checking. Either expand items on the command line, or read
+from stdin if there aren't any. If -Mset was specified, load the message so
+that its variables can be used, but restrict this facility to admin users. */

   if (expansion_test)
     {
  +  if (msg_action_arg > 0 && msg_action == MSG_LOAD)
  +    {
  +    uschar spoolname[256];  /* Not big_buffer; used in spool_read_header() */
  +    if (!admin_user)
  +      {
  +      fprintf(stderr, "exim: permission denied\n");
  +      exit(EXIT_FAILURE);
  +      }
  +    message_id = argv[msg_action_arg];
  +    (void)string_format(spoolname, sizeof(spoolname), "%s-H", message_id);
  +    if (!spool_open_datafile(message_id))
  +      printf ("Failed to load message datafile %s\n", message_id);
  +    if (spool_read_header(spoolname, TRUE, FALSE) != spool_read_OK)
  +      printf ("Failed to load message %s\n", message_id);
  +    }
  +
  +  /* Expand command line items */
  +
     if (recipients_arg < argc)
       {
       while (recipients_arg < argc)
         {
         uschar *s = argv[recipients_arg++];
         uschar *ss = expand_string(s);
  -      if (ss == NULL)
  -        printf ("Failed: %s\n", expand_string_message);
  +      if (ss == NULL) printf ("Failed: %s\n", expand_string_message);
         else printf("%s\n", CS ss);
         }
       }
  @@ -4210,6 +4239,14 @@
       #ifdef USE_READLINE
       if (dlhandle != NULL) dlclose(dlhandle);
       #endif
  +    }
  +
  +  /* The data file will be open after -Mset */
  +
  +  if (deliver_datafile >= 0)
  +    {
  +    (void)close(deliver_datafile);
  +    deliver_datafile = -1;
       }


     exim_exit(EXIT_SUCCESS);


  Index: macros.h
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/macros.h,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- macros.h    5 Sep 2006 13:24:10 -0000    1.27
  +++ macros.h    23 Oct 2006 13:24:21 -0000    1.28
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/macros.h,v 1.27 2006/09/05 13:24:10 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/macros.h,v 1.28 2006/10/23 13:24:21 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -713,7 +713,7 @@


   enum { MSG_DELIVER, MSG_FREEZE, MSG_REMOVE, MSG_THAW, MSG_ADD_RECIPIENT,
          MSG_MARK_ALL_DELIVERED, MSG_MARK_DELIVERED, MSG_EDIT_SENDER,
  -       MSG_SHOW_BODY, MSG_SHOW_HEADER, MSG_SHOW_LOG };
  +       MSG_SHOW_BODY, MSG_SHOW_HEADER, MSG_SHOW_LOG, MSG_LOAD };


/* Returns from the spool_read_header() function */


Index: 0542
====================================================================
# Exim test configuration 0542

exim_path = EXIM_PATH
host_lookup_order = bydns
primary_hostname = myhost.test.ex
rfc1413_query_timeout = 0s
spool_directory = DIR/spool
log_file_path = DIR/spool/log/%slog
gecos_pattern = ""
gecos_name = CALLER_NAME

# ----- Main settings -----

queue_only


# End

Index: 0542
====================================================================
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss

Index: 0542
====================================================================
# -Mset
exim userx@??? usery@???
From: Himself <himself@???>
To: Yourself <you@???>
Subject: The subject is not the object

This is the body of the message.
****
sudo exim -be -Mset $msg1
From: $h_from:
Subject: $h_subject:
message_body_size=$message_body_size
message_size=$message_size
message_id=$message_id
message_exim_id=$message_exim_id
****
no_msglog_check

Index: 0542
====================================================================
> From: Himself <himself@???>
> Subject: The subject is not the object
> message_body_size=33
> message_size=416
> message_id=10HmaX-0005vi-00
> message_exim_id=10HmaX-0005vi-00
>