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

Startseite
Nachricht löschen
Nachricht beantworten
Autor: Philip Hazel
Datum:  
To: exim-cvs
Betreff: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog exim/exim-src/src smtp_in.c exim/exim-test/confs 0021 exim/exim-test/log 0021 exim/exim-test/mail 0021.x exim/exim-test/paniclog 0021 exim/exi
ph10 2007/02/20 11:37:17 GMT

  Modified files:
    exim-doc/doc-txt     ChangeLog 
    exim-src/src         smtp_in.c 
    exim-test/confs      0021 
    exim-test/log        0021 
    exim-test/mail       0021.x 
    exim-test/paniclog   0021 
    exim-test/rejectlog  0021 
    exim-test/scripts/0000-Basic 0021 
    exim-test/stderr     0021 
    exim-test/stdout     0021 
  Log:
  $smtp_command and $smtp_command_argument were incomplete for MAIL
  commands with extra options such as SIZE.


  Revision  Changes    Path
  1.483     +5 -0      exim/exim-doc/doc-txt/ChangeLog
  1.54      +58 -48    exim/exim-src/src/smtp_in.c
  1.3       +1 -1      exim/exim-test/confs/0021
  1.3       +10 -2     exim/exim-test/log/0021
  1.3       +10 -0     exim/exim-test/mail/0021.x
  1.2       +2 -0      exim/exim-test/paniclog/0021
  1.3       +4 -2      exim/exim-test/rejectlog/0021
  1.3       +9 -0      exim/exim-test/scripts/0000-Basic/0021
  1.2       +8 -4      exim/exim-test/stderr/0021
  1.3       +7 -0      exim/exim-test/stdout/0021


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.482
  retrieving revision 1.483
  diff -u -r1.482 -r1.483
  --- ChangeLog    20 Feb 2007 09:53:41 -0000    1.482
  +++ ChangeLog    20 Feb 2007 11:37:16 -0000    1.483
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.482 2007/02/20 09:53:41 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.483 2007/02/20 11:37:16 ph10 Exp $


   Change log file for Exim from version 4.21
   -------------------------------------------
  @@ -117,6 +117,11 @@
   MH/03 Made $recipients available in local_scan(). local_scan() already has
         better access to the recipient list through recipients_list[], but
         $recipients can be useful in postmaster-provided expansion strings.
  +
  +PH/28 The $smtp_command and $smtp_command_argument variables were not correct
  +      in the case of a MAIL command with additional options following the
  +      address, for example: MAIL FROM:<foo@bar> SIZE=1234. The option settings
  +      were accidentally chopped off.



Exim version 4.66

  Index: smtp_in.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/smtp_in.c,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- smtp_in.c    30 Jan 2007 11:45:20 -0000    1.53
  +++ smtp_in.c    20 Feb 2007 11:37:16 -0000    1.54
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/smtp_in.c,v 1.53 2007/01/30 11:45:20 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/smtp_in.c,v 1.54 2007/02/20 11:37:16 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -126,6 +126,9 @@
   static int  sync_cmd_limit;
   static int  smtp_write_error = 0;


  +static uschar *smtp_data_buffer;
  +static uschar *smtp_cmd_data;
  +
   /* We need to know the position of RSET, HELO, EHLO, AUTH, and STARTTLS. Their
   final fields of all except AUTH are forced TRUE at the start of a new message
   setup, to allow one of each between messages that is not counted as a nonmail
  @@ -552,11 +555,16 @@
           !sender_host_notsocket)                        /* Really is a socket */
         return BADSYN_CMD;


  -    /* Point after the command, but don't skip over leading spaces till after
  -    the following test, so that if it fails, the command name can easily be
  -    logged. */
  +    /* The variables $smtp_command and $smtp_command_argument point into the
  +    unmodified input buffer. A copy of the latter is taken for actual
  +    processing, so that it can be chopped up into separate parts if necessary,
  +    for example, when processing a MAIL command options such as SIZE that can
  +    follow the sender address. */


       smtp_cmd_argument = smtp_cmd_buffer + p->len;
  +    while (isspace(*smtp_cmd_argument)) smtp_cmd_argument++;
  +    Ustrcpy(smtp_data_buffer, smtp_cmd_argument);
  +    smtp_cmd_data = smtp_data_buffer;


       /* Count non-mail commands from those hosts that are controlled in this
       way. The default is all hosts. We don't waste effort checking the list
  @@ -574,11 +582,10 @@
           return TOO_MANY_NONMAIL_CMD;
         }


  -    /* Get the data pointer over leading spaces and return; if there is data
  -    for a command that does not expect it, give the error centrally here. */
  +    /* If there is data for a command that does not expect it, generate the
  +    error here. */


  -    while (isspace(*smtp_cmd_argument)) smtp_cmd_argument++;
  -    return (p->has_arg || *smtp_cmd_argument == 0)? p->cmd : BADARG_CMD;
  +    return (p->has_arg || *smtp_cmd_data == 0)? p->cmd : BADARG_CMD;
       }
     }


  @@ -839,7 +846,7 @@
   *         Extract SMTP command option            *
   *************************************************/


-/* This function picks the next option setting off the end of smtp_cmd_argument. It
+/* This function picks the next option setting off the end of smtp_cmd_data. It
is called for MAIL FROM and RCPT TO commands, to pick off the optional ESMTP
things that can appear there.

@@ -854,11 +861,11 @@
extract_option(uschar **name, uschar **value)
{
uschar *n;
-uschar *v = smtp_cmd_argument + Ustrlen(smtp_cmd_argument) -1;
+uschar *v = smtp_cmd_data + Ustrlen(smtp_cmd_data) - 1;
while (isspace(*v)) v--;
v[1] = 0;

-while (v > smtp_cmd_argument && *v != '=' && !isspace(*v)) v--;
+while (v > smtp_cmd_data && *v != '=' && !isspace(*v)) v--;
if (*v != '=') return FALSE;

   n = v;
  @@ -1022,7 +1029,7 @@
       case HELO_CMD:
       case EHLO_CMD:


  -    check_helo(smtp_cmd_argument);
  +    check_helo(smtp_cmd_data);
       /* Fall through */


       case RSET_CMD:
  @@ -1042,7 +1049,7 @@
         /* The function moan_smtp_batch() does not return. */
         moan_smtp_batch(smtp_cmd_buffer, "503 Sender already given");


  -    if (smtp_cmd_argument[0] == 0)
  +    if (smtp_cmd_data[0] == 0)
         /* The function moan_smtp_batch() does not return. */
         moan_smtp_batch(smtp_cmd_buffer, "501 MAIL FROM must have an address operand");


  @@ -1053,8 +1060,8 @@
       /* Apply SMTP rewrite */


       raw_sender = ((rewrite_existflags & rewrite_smtp) != 0)?
  -      rewrite_one(smtp_cmd_argument, rewrite_smtp|rewrite_smtp_sender, NULL, FALSE,
  -        US"", global_rewrite_rules) : smtp_cmd_argument;
  +      rewrite_one(smtp_cmd_data, rewrite_smtp|rewrite_smtp_sender, NULL, FALSE,
  +        US"", global_rewrite_rules) : smtp_cmd_data;


       /* Extract the address; the TRUE flag allows <> as valid */


  @@ -1097,7 +1104,7 @@
         /* The function moan_smtp_batch() does not return. */
         moan_smtp_batch(smtp_cmd_buffer, "503 No sender yet given");


  -    if (smtp_cmd_argument[0] == 0)
  +    if (smtp_cmd_data[0] == 0)
         /* The function moan_smtp_batch() does not return. */
         moan_smtp_batch(smtp_cmd_buffer, "501 RCPT TO must have an address operand");


  @@ -1112,8 +1119,8 @@
       recipient address */


       recipient = ((rewrite_existflags & rewrite_smtp) != 0)?
  -      rewrite_one(smtp_cmd_argument, rewrite_smtp, NULL, FALSE, US"",
  -        global_rewrite_rules) : smtp_cmd_argument;
  +      rewrite_one(smtp_cmd_data, rewrite_smtp, NULL, FALSE, US"",
  +        global_rewrite_rules) : smtp_cmd_data;


       /* rfc821_domains = TRUE; << no longer needed */
       recipient = parse_extract_address(recipient, &errmess, &start, &end,
  @@ -1264,12 +1271,13 @@


acl_var_c = NULL;

-/* Allow for trailing 0 in the command buffer. */
+/* Allow for trailing 0 in the command and data buffers. */

  -smtp_cmd_buffer = (uschar *)malloc(smtp_cmd_buffer_size + 1);
  +smtp_cmd_buffer = (uschar *)malloc(2*smtp_cmd_buffer_size + 2);
   if (smtp_cmd_buffer == NULL)
     log_write(0, LOG_MAIN|LOG_PANIC_DIE,
       "malloc() failed for SMTP command buffer");
  +smtp_data_buffer = smtp_cmd_buffer + smtp_cmd_buffer_size + 1;


   /* For batched input, the protocol setting can be overridden from the
   command line by a trusted caller. */
  @@ -2041,9 +2049,9 @@
   #endif
     (where == ACL_WHERE_PREDATA)? US"DATA" :
     (where == ACL_WHERE_DATA)? US"after DATA" :
  -  (smtp_cmd_argument == NULL)?
  +  (smtp_cmd_data == NULL)?
       string_sprintf("%s in \"connect\" ACL", acl_wherenames[where]) :
  -    string_sprintf("%s %s", acl_wherenames[where], smtp_cmd_argument);
  +    string_sprintf("%s %s", acl_wherenames[where], smtp_cmd_data);


if (drop) rc = FAIL;

@@ -2465,8 +2473,8 @@

       /* Find the name of the requested authentication mechanism. */


  -    s = smtp_cmd_argument;
  -    while ((c = *smtp_cmd_argument) != 0 && !isspace(c))
  +    s = smtp_cmd_data;
  +    while ((c = *smtp_cmd_data) != 0 && !isspace(c))
         {
         if (!isalnum(c) && c != '-' && c != '_')
           {
  @@ -2474,16 +2482,16 @@
             US"invalid character in authentication mechanism name");
           goto COMMAND_LOOP;
           }
  -      smtp_cmd_argument++;
  +      smtp_cmd_data++;
         }


       /* If not at the end of the line, we must be at white space. Terminate the
       name and move the pointer on to any data that may be present. */


  -    if (*smtp_cmd_argument != 0)
  +    if (*smtp_cmd_data != 0)
         {
  -      *smtp_cmd_argument++ = 0;
  -      while (isspace(*smtp_cmd_argument)) smtp_cmd_argument++;
  +      *smtp_cmd_data++ = 0;
  +      while (isspace(*smtp_cmd_data)) smtp_cmd_data++;
         }


       /* Search for an authentication mechanism which is configured for use
  @@ -2519,7 +2527,7 @@
       expand_nmax = 0;
       expand_nlength[0] = 0;   /* $0 contains nothing */


  -    c = (au->info->servercode)(au, smtp_cmd_argument);
  +    c = (au->info->servercode)(au, smtp_cmd_data);
       if (au->set_id != NULL) set_id = expand_string(au->set_id);
       expand_nmax = -1;        /* Reset numeric variables */
       for (i = 0; i < AUTH_VARS; i++) auth_vars[i] = NULL;   /* Reset $auth<n> */
  @@ -2638,7 +2646,7 @@
       /* Reject the HELO if its argument was invalid or non-existent. A
       successful check causes the argument to be saved in malloc store. */


  -    if (!check_helo(smtp_cmd_argument))
  +    if (!check_helo(smtp_cmd_data))
         {
         smtp_printf("501 Syntactically invalid %s argument(s)\r\n", hello);


  @@ -2668,7 +2676,7 @@
       if (!sender_host_unknown)
         {
         BOOL old_helo_verified = helo_verified;
  -      uschar *p = smtp_cmd_argument;
  +      uschar *p = smtp_cmd_data;


         while (*p != 0 && !isspace(*p)) { *p = tolower(*p); p++; }
         *p = 0;
  @@ -2986,7 +2994,7 @@
         break;
         }


  -    if (smtp_cmd_argument[0] == 0)
  +    if (smtp_cmd_data[0] == 0)
         {
         done = synprot_error(L_smtp_protocol_error, 501, NULL,
           US"MAIL must have an address operand");
  @@ -3145,8 +3153,8 @@
       TRUE flag allows "<>" as a sender address. */


       raw_sender = ((rewrite_existflags & rewrite_smtp) != 0)?
  -      rewrite_one(smtp_cmd_argument, rewrite_smtp, NULL, FALSE, US"",
  -        global_rewrite_rules) : smtp_cmd_argument;
  +      rewrite_one(smtp_cmd_data, rewrite_smtp, NULL, FALSE, US"",
  +        global_rewrite_rules) : smtp_cmd_data;


       /* rfc821_domains = TRUE; << no longer needed */
       raw_sender =
  @@ -3156,7 +3164,7 @@


       if (raw_sender == NULL)
         {
  -      done = synprot_error(L_smtp_syntax_error, 501, smtp_cmd_argument, errmess);
  +      done = synprot_error(L_smtp_syntax_error, 501, smtp_cmd_data, errmess);
         break;
         }


  @@ -3216,7 +3224,7 @@
         else
           {
           smtp_printf("501 %s: sender address must contain a domain\r\n",
  -          smtp_cmd_argument);
  +          smtp_cmd_data);
           log_write(L_smtp_syntax_error,
             LOG_MAIN|LOG_REJECT,
             "unqualified sender rejected: <%s> %s%s",
  @@ -3285,7 +3293,7 @@


       /* Check for an operand */


  -    if (smtp_cmd_argument[0] == 0)
  +    if (smtp_cmd_data[0] == 0)
         {
         done = synprot_error(L_smtp_syntax_error, 501, NULL,
           US"RCPT must have an address operand");
  @@ -3297,8 +3305,8 @@
       as a recipient address */


       recipient = ((rewrite_existflags & rewrite_smtp) != 0)?
  -      rewrite_one(smtp_cmd_argument, rewrite_smtp, NULL, FALSE, US"",
  -        global_rewrite_rules) : smtp_cmd_argument;
  +      rewrite_one(smtp_cmd_data, rewrite_smtp, NULL, FALSE, US"",
  +        global_rewrite_rules) : smtp_cmd_data;


       /* rfc821_domains = TRUE; << no longer needed */
       recipient = parse_extract_address(recipient, &errmess, &start, &end,
  @@ -3307,7 +3315,7 @@


       if (recipient == NULL)
         {
  -      done = synprot_error(L_smtp_syntax_error, 501, smtp_cmd_argument, errmess);
  +      done = synprot_error(L_smtp_syntax_error, 501, smtp_cmd_data, errmess);
         rcpt_fail_count++;
         break;
         }
  @@ -3337,7 +3345,7 @@
           {
           rcpt_fail_count++;
           smtp_printf("501 %s: recipient address must contain a domain\r\n",
  -          smtp_cmd_argument);
  +          smtp_cmd_data);
           log_write(L_smtp_syntax_error,
             LOG_MAIN|LOG_REJECT, "unqualified recipient rejected: "
             "<%s> %s%s", recipient, host_and_ident(TRUE),
  @@ -3500,7 +3508,7 @@
         uschar *s = NULL;


         /* rfc821_domains = TRUE; << no longer needed */
  -      address = parse_extract_address(smtp_cmd_argument, &errmess, &start, &end,
  +      address = parse_extract_address(smtp_cmd_data, &errmess, &start, &end,
           &recipient_domain, FALSE);
         /* rfc821_domains = FALSE; << no longer needed */


  @@ -3546,7 +3554,7 @@
         {
         BOOL save_log_testing_mode = log_testing_mode;
         address_test_mode = log_testing_mode = TRUE;
  -      (void) verify_address(deliver_make_addr(smtp_cmd_argument, FALSE),
  +      (void) verify_address(deliver_make_addr(smtp_cmd_data, FALSE),
           smtp_out, vopt_is_recipient | vopt_qualify | vopt_expn, -1, -1, -1,
           NULL, NULL, NULL);
         address_test_mode = FALSE;
  @@ -3782,7 +3790,7 @@


       /* Compute the serialization key for this command. */


  -    etrn_serialize_key = string_sprintf("etrn-%s\n", smtp_cmd_argument);
  +    etrn_serialize_key = string_sprintf("etrn-%s\n", smtp_cmd_data);


       /* If a command has been specified for running as a result of ETRN, we
       permit any argument to ETRN. If not, only the # standard form is permitted,
  @@ -3794,7 +3802,7 @@
         uschar *error;
         BOOL rc;
         etrn_command = smtp_etrn_command;
  -      deliver_domain = smtp_cmd_argument;
  +      deliver_domain = smtp_cmd_data;
         rc = transport_set_up_command(&argv, smtp_etrn_command, TRUE, 0, NULL,
           US"ETRN processing", &error);
         deliver_domain = NULL;
  @@ -3811,7 +3819,7 @@


       else
         {
  -      if (*smtp_cmd_argument++ != '#')
  +      if (*smtp_cmd_data++ != '#')
           {
           done = synprot_error(L_smtp_syntax_error, 501, NULL,
             US"argument must begin with #");
  @@ -3819,7 +3827,7 @@
           }
         etrn_command = US"exim -R";
         argv = child_exec_exim(CEE_RETURN_ARGV, TRUE, NULL, TRUE, 2, US"-R",
  -        smtp_cmd_argument);
  +        smtp_cmd_data);
         }


       /* If we are host-testing, don't actually do anything. */
  @@ -3842,7 +3850,7 @@


       if (smtp_etrn_serialize && !enq_start(etrn_serialize_key))
         {
  -      smtp_printf("458 Already processing %s\r\n", smtp_cmd_argument);
  +      smtp_printf("458 Already processing %s\r\n", smtp_cmd_data);
         break;
         }


@@ -3952,10 +3960,12 @@


       case TOO_MANY_NONMAIL_CMD:
  +    s = smtp_cmd_buffer;
  +    while (*s != 0 && !isspace(*s)) s++;
       incomplete_transaction_log(US"too many non-mail commands");
       log_write(0, LOG_MAIN|LOG_REJECT, "SMTP call from %s dropped: too many "
         "nonmail commands (last was \"%.*s\")",  host_and_ident(FALSE),
  -      smtp_cmd_argument - smtp_cmd_buffer, smtp_cmd_buffer);
  +      s - smtp_cmd_buffer, smtp_cmd_buffer);
       smtp_printf("554 Too many nonmail commands\r\n");
       done = 1;   /* Pretend eof - drops connection */
       break;


  Index: 0021
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/confs/0021,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- 0021    20 Mar 2006 10:55:21 -0000    1.2
  +++ 0021    20 Feb 2007 11:37:16 -0000    1.3
  @@ -65,7 +65,7 @@
            senders = ok@test3
     accept senders = ok@test1 : ok@test3
            verify  = sender
  -         logwrite = :main,reject: mail accepted
  +         logwrite = :main,reject: mail accepted "$smtp_command" "$smtp_command_argument"


   rcpt:
     accept senders = +ok_senders


  Index: 0021
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/log/0021,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- 0021    20 Mar 2006 10:55:21 -0000    1.2
  +++ 0021    20 Feb 2007 11:37:16 -0000    1.3
  @@ -19,7 +19,7 @@
   1999-03-02 09:44:33 H=[10.9.8.7] U=CALLER rejected connection in "connect" ACL
   1999-03-02 09:44:33 10.9.8.8 accepted by connect ACL
   1999-03-02 09:44:33 H=[10.9.8.8] U=CALLER rejected MAIL <bad@test1>
  -1999-03-02 09:44:33 mail accepted
  +1999-03-02 09:44:33 mail accepted "mail from:<ok@test1>" "<ok@test1>"
   1999-03-02 09:44:33 H=[10.9.8.9] U=CALLER rejected connection in "connect" ACL: forcibly dropped
   1999-03-02 09:44:33 U=CALLER rejected connection in "connect" ACL
   1999-03-02 09:44:33 10.9.8.10 accepted by connect ACL
  @@ -27,7 +27,7 @@
   1999-03-02 09:44:33 ACL "warn" with "message" setting found in a non-message (EHLO or HELO) ACL: cannot specify header lines here: message ignored
   1999-03-02 09:44:33 H=(x.y.z) [10.9.8.10] U=CALLER rejected EHLO or HELO x.y.z
   1999-03-02 09:44:33 10.9.8.8 accepted by connect ACL
  -1999-03-02 09:44:33 mail accepted
  +1999-03-02 09:44:33 mail accepted "mail from:<ok@test3>" "<ok@test3>"
   1999-03-02 09:44:33 10HmbH-0005vi-00 <= ok@test3 H=[10.9.8.8] U=CALLER P=smtp S=sss
   1999-03-02 09:44:33 10HmbH-0005vi-00 => x <x@y> R=accept T=appendfile
   1999-03-02 09:44:33 10HmbH-0005vi-00 Completed
  @@ -39,3 +39,11 @@
   1999-03-02 09:44:33 10HmbJ-0005vi-00 <= <> R=10HmbB-0005vi-00 U=EXIMUSER P=local S=sss
   1999-03-02 09:44:33 10HmbJ-0005vi-00 => userx <userx@test1> R=accept T=appendfile
   1999-03-02 09:44:33 10HmbJ-0005vi-00 Completed
  +1999-03-02 09:44:33 10.9.8.8 accepted by connect ACL
  +1999-03-02 09:44:33 H=(test.ex) [10.9.8.8] U=CALLER Warning: This warning is from a HELO ACL (command ehlo test.ex)
  +1999-03-02 09:44:33 ACL "warn" with "message" setting found in a non-message (EHLO or HELO) ACL: cannot specify header lines here: message ignored
  +1999-03-02 09:44:33 H=(test.ex) [10.9.8.8] U=CALLER rejected EHLO or HELO test.ex
  +1999-03-02 09:44:33 mail accepted "mail from: <ok@test3> SIZE=1234" "<ok@test3> SIZE=1234"
  +1999-03-02 09:44:33 10HmbK-0005vi-00 <= ok@test3 H=[10.9.8.8] U=CALLER P=smtp S=sss
  +1999-03-02 09:44:33 10HmbK-0005vi-00 => x <x@y> R=accept T=appendfile
  +1999-03-02 09:44:33 10HmbK-0005vi-00 Completed


  Index: 0021.x
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/mail/0021.x,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- 0021.x    20 Mar 2006 10:55:22 -0000    1.2
  +++ 0021.x    20 Feb 2007 11:37:16 -0000    1.3
  @@ -8,3 +8,13 @@


Some message

  +From ok@test3 Tue Mar 02 09:44:33 1999
  +Received: from [10.9.8.8] (ident=CALLER)
  +    by myhost.test.ex with smtp (Exim x.yz)
  +    (envelope-from <ok@test3>)
  +    id 10HmbK-0005vi-00
  +    for x@y; Tue, 2 Mar 1999 09:44:33 +0000
  +X-ACL-Warn: added header line
  +
  +Some message
  +


  Index: 0021
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/paniclog/0021,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 0021    7 Feb 2006 10:47:28 -0000    1.1
  +++ 0021    20 Feb 2007 11:37:17 -0000    1.2
  @@ -2,3 +2,5 @@
   1999-03-02 09:44:33 rcpt accepted
   1999-03-02 09:44:33 ACL "warn" with "message" setting found in a non-message (EHLO or HELO) ACL: cannot specify header lines here: message ignored
   1999-03-02 09:44:33 rcpt accepted
  +1999-03-02 09:44:33 ACL "warn" with "message" setting found in a non-message (EHLO or HELO) ACL: cannot specify header lines here: message ignored
  +1999-03-02 09:44:33 rcpt accepted


  Index: 0021
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/rejectlog/0021,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- 0021    20 Mar 2006 10:55:22 -0000    1.2
  +++ 0021    20 Feb 2007 11:37:17 -0000    1.3
  @@ -30,11 +30,11 @@
     Date: Tue, 2 Mar 1999 09:44:33 +0000
   1999-03-02 09:44:33 H=[10.9.8.7] U=CALLER rejected connection in "connect" ACL
   1999-03-02 09:44:33 H=[10.9.8.8] U=CALLER rejected MAIL <bad@test1>
  -1999-03-02 09:44:33 mail accepted
  +1999-03-02 09:44:33 mail accepted "mail from:<ok@test1>" "<ok@test1>"
   1999-03-02 09:44:33 H=[10.9.8.9] U=CALLER rejected connection in "connect" ACL: forcibly dropped
   1999-03-02 09:44:33 U=CALLER rejected connection in "connect" ACL
   1999-03-02 09:44:33 H=(x.y.z) [10.9.8.10] U=CALLER rejected EHLO or HELO x.y.z
  -1999-03-02 09:44:33 mail accepted
  +1999-03-02 09:44:33 mail accepted "mail from:<ok@test3>" "<ok@test3>"
   1999-03-02 09:44:33 10HmbA-0005vi-00 F=<userx@test1> rejected by non-SMTP ACL: don't like sender userx@test1
   Envelope-from: <userx@test1>
   Envelope-to: <userx@???>
  @@ -55,3 +55,5 @@
   I Message-Id: <E10HmbB-0005vi-00@???>
   F From: userx@test1
     Date: Tue, 2 Mar 1999 09:44:33 +0000
  +1999-03-02 09:44:33 H=(test.ex) [10.9.8.8] U=CALLER rejected EHLO or HELO test.ex
  +1999-03-02 09:44:33 mail accepted "mail from: <ok@test3> SIZE=1234" "<ok@test3> SIZE=1234"


  Index: 0021
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/scripts/0000-Basic/0021,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- 0021    20 Mar 2006 10:55:22 -0000    1.2
  +++ 0021    20 Feb 2007 11:37:17 -0000    1.3
  @@ -60,3 +60,12 @@
   Test message 1.
   .
   ****
  +exim -odi -bs -oMa 10.9.8.8
  +ehlo test.ex
  +mail from: <ok@test3> SIZE=1234
  +rcpt to:<x@y>
  +data
  +Some message
  +.
  +quit
  +****


  Index: 0021
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stderr/0021,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- 0021    7 Feb 2006 10:47:31 -0000    1.1
  +++ 0021    20 Feb 2007 11:37:17 -0000    1.2
  @@ -58,9 +58,10 @@
   ok in "!bad"? yes (end of list)
   ----------- end verify ------------
   sender ok@test1 verified ok
  -check logwrite = :main,reject: mail accepted
  +check logwrite = :main,reject: mail accepted "$smtp_command" "$smtp_command_argument"
  +               = :main,reject: mail accepted "mail from:<ok@test1>" "<ok@test1>"
   LOG: MAIN REJECT
  -  mail accepted
  +  mail accepted "mail from:<ok@test1>" "<ok@test1>"
   accept: condition test succeeded
   using ACL "rcpt"
   processing "accept"
  @@ -142,9 +143,10 @@
   ok in "!bad"? yes (end of list)
   ----------- end verify ------------
   sender ok@test3 verified ok
  -check logwrite = :main,reject: mail accepted
  +check logwrite = :main,reject: mail accepted "$smtp_command" "$smtp_command_argument"
  +               = :main,reject: mail accepted "mail from:<ok@test3>" "<ok@test3>"
   LOG: MAIN REJECT
  -  mail accepted
  +  mail accepted "mail from:<ok@test3>" "<ok@test3>"
   accept: condition test succeeded
   using ACL "rcpt"
   processing "accept"
  @@ -184,3 +186,5 @@
   LOG: smtp_connection MAIN
     SMTP connection from CALLER closed by QUIT
   >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
  +1999-03-02 09:44:33 ACL "warn" with "message" setting found in a non-message (EHLO or HELO) ACL: cannot specify header lines here: message ignored
  +1999-03-02 09:44:33 rcpt accepted


  Index: 0021
  ===================================================================
  RCS file: /home/cvs/exim/exim-test/stdout/0021,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- 0021    20 Mar 2006 10:55:22 -0000    1.2
  +++ 0021    20 Feb 2007 11:37:17 -0000    1.3
  @@ -16,3 +16,10 @@
   354 Enter message, ending with "." on a line by itself
   250 OK id=10HmbH-0005vi-00
   221 myhost.test.ex closing connection
  +220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
  +550 Administrative prohibition
  +250 OK
  +250 Accepted
  +354 Enter message, ending with "." on a line by itself
  +250 OK id=10HmbK-0005vi-00
  +221 myhost.test.ex closing connection