PIPELINING: break and check for 452 every hundred RCPTs
authorJeremy Harris <jgh146exb@wizmail.org>
Sun, 22 Dec 2019 19:53:39 +0000 (19:53 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Sun, 22 Dec 2019 19:53:39 +0000 (19:53 +0000)
doc/doc-txt/ChangeLog
src/src/transports/smtp.c
src/src/transports/smtp.h
test/confs/0217
test/log/0217
test/scripts/0000-Basic/0217
test/stderr/0217
test/stdout/0217

index e200c529149f3229e622359854a911c6c14c4a34..528021268a995c6817b5470779826d7759380563 100644 (file)
@@ -58,6 +58,14 @@ JH/14 Bug 2500: Rewind some of the common-coding in string handling between the
       tracking also did many adjustments to string handling.  Since then, eximon
       frequently terminated with an assert failure.
 
+JH/15 When PIPELINING, synch after every hundred or so RCPT commands sent and
+      check for 452 responses.  This slightly helps the inefficieny of doing
+      a large alias-expansion into a recipient-limited target.  The max_rcpt
+      transport option still applies (and at the current default, will override
+      the new feature).  The check is done for either cause of synch, and forces
+      a fast-retry of all 452'd recipients using a new MAIL FROM on the same
+      connection.  The new facility is not tunable at this time.
+
 
 Exim version 4.93
 -----------------
index 92723a2c1186067f8d6c6bb18993388d63bf913d..7428134d403cba9d9947c41805b6c07329f39aac 100644 (file)
@@ -1150,6 +1150,7 @@ if (sx->pending_MAIL)
   {
   DEBUG(D_transport) debug_printf("%s expect mail\n", __FUNCTION__);
   count--;
+  sx->pending_MAIL = FALSE;
   if (!smtp_read_response(sx, sx->buffer, sizeof(sx->buffer),
                          '2', ob->command_timeout))
     {
@@ -1284,38 +1285,55 @@ while (count-- > 0)
        event_defer_errno = addr->more_errno;
        msg_event_raise(US"msg:rcpt:host:defer", addr);
 #endif
+       /* If a 452 and we've had at least one 2xx or 5xx, set next_addr to the
+       start point for another MAIL command. */
 
-       /* Log temporary errors if there are more hosts to be tried.
-       If not, log this last one in the == line. */
-
-       if (sx->conn_args.host->next)
-         if (LOGGING(outgoing_port))
-           log_write(0, LOG_MAIN, "H=%s [%s]:%d %s", sx->conn_args.host->name,
-             sx->conn_args.host->address,
-             sx->port == PORT_NONE ? 25 : sx->port, addr->message);
-         else
-           log_write(0, LOG_MAIN, "H=%s [%s]: %s", sx->conn_args.host->name,
-             sx->conn_args.host->address, addr->message);
+       if (addr->more_errno >> 8 == 52  &&  yield & 3)
+         {
+         if (!sx->RCPT_452)
+           {
+           DEBUG(D_transport)
+             debug_printf("%s: seen first 452 too-many-rcpts\n", __FUNCTION__);
+           sx->RCPT_452 = TRUE;
+           sx->next_addr = addr;
+           }
+         addr->transport_return = PENDING_DEFER;
+         addr->basic_errno = 0;
+         }
+       else
+         {
+         /* Log temporary errors if there are more hosts to be tried.
+         If not, log this last one in the == line. */
+
+         if (sx->conn_args.host->next)
+           if (LOGGING(outgoing_port))
+             log_write(0, LOG_MAIN, "H=%s [%s]:%d %s", sx->conn_args.host->name,
+               sx->conn_args.host->address,
+               sx->port == PORT_NONE ? 25 : sx->port, addr->message);
+           else
+             log_write(0, LOG_MAIN, "H=%s [%s]: %s", sx->conn_args.host->name,
+               sx->conn_args.host->address, addr->message);
 
 #ifndef DISABLE_EVENT
-       else
-         msg_event_raise(US"msg:rcpt:defer", addr);
+         else
+           msg_event_raise(US"msg:rcpt:defer", addr);
 #endif
 
-       /* Do not put this message on the list of those waiting for specific
-       hosts, as otherwise it is likely to be tried too often. */
+         /* Do not put this message on the list of those waiting for specific
+         hosts, as otherwise it is likely to be tried too often. */
 
-       update_waiting = FALSE;
+         update_waiting = FALSE;
 
-       /* Add a retry item for the address so that it doesn't get tried again
-       too soon. If address_retry_include_sender is true, add the sender address
-       to the retry key. */
+         /* Add a retry item for the address so that it doesn't get tried again
+         too soon. If address_retry_include_sender is true, add the sender address
+         to the retry key. */
 
-       retry_add_item(addr,
-         ob->address_retry_include_sender
-           ? string_sprintf("%s:<%s>", addr->address_retry_key, sender_address)
-           : addr->address_retry_key,
-         0);
+         retry_add_item(addr,
+           ob->address_retry_include_sender
+             ? string_sprintf("%s:<%s>", addr->address_retry_key, sender_address)
+             : addr->address_retry_key,
+           0);
+         }
        }
       }
     }
@@ -3128,7 +3146,7 @@ int
 smtp_write_mail_and_rcpt_cmds(smtp_context * sx, int * yield)
 {
 address_item * addr;
-int address_count;
+int address_count, pipe_limit;
 int rc;
 
 if (build_mailcmd_options(sx, sx->first_addr) != OK)
@@ -3211,11 +3229,11 @@ that max_rcpt will be large, so all addresses will be done at once.
 
 For verify we flush the pipeline after any (the only) rcpt address. */
 
-for (addr = sx->first_addr, address_count = 0;
+for (addr = sx->first_addr, address_count = 0, pipe_limit = 100;
      addr  &&  address_count < sx->max_rcpt;
      addr = addr->next) if (addr->transport_return == PENDING_DEFER)
   {
-  int count;
+  int cmds_sent;
   BOOL no_flush;
   uschar * rcpt_addr;
 
@@ -3223,7 +3241,10 @@ for (addr = sx->first_addr, address_count = 0;
     ? dsn_support_yes : dsn_support_no;
 
   address_count++;
-  no_flush = pipelining_active && !sx->verify
+  if (pipe_limit-- <= 0)
+    { no_flush = FALSE; pipe_limit = 100; }
+  else
+    no_flush = pipelining_active && !sx->verify
          && (!mua_wrapper || addr->next && address_count < sx->max_rcpt);
 
   build_rcptcmd_options(sx, addr);
@@ -3246,13 +3267,13 @@ for (addr = sx->first_addr, address_count = 0;
     }
 #endif
 
-  count = smtp_write_command(sx, no_flush ? SCMD_BUFFER : SCMD_FLUSH,
+  cmds_sent = smtp_write_command(sx, no_flush ? SCMD_BUFFER : SCMD_FLUSH,
     "RCPT TO:<%s>%s%s\r\n", rcpt_addr, sx->igquotstr, sx->buffer);
 
-  if (count < 0) return -5;
-  if (count > 0)
+  if (cmds_sent < 0) return -5;
+  if (cmds_sent > 0)
     {
-    switch(sync_responses(sx, count, 0))
+    switch(sync_responses(sx, cmds_sent, 0))
       {
       case 3: sx->ok = TRUE;                   /* 2xx & 5xx => OK & progress made */
       case 2: sx->completed_addr = TRUE;       /* 5xx (only) => progress made */
@@ -3262,6 +3283,17 @@ for (addr = sx->first_addr, address_count = 0;
              if (!sx->lmtp)                    /*  can't tell about progress yet */
                sx->completed_addr = TRUE;
       case 0:                                  /* No 2xx or 5xx, but no probs */
+             /* If any RCPT got a 452 response then next_addr has been updated
+             for restarting with a new MAIL on the same connection.  Send no more
+             RCPTs for this MAIL. */
+
+             if (sx->RCPT_452)
+               {
+               DEBUG(D_transport) debug_printf("seen 452 too-many-rcpts\n");
+               sx->RCPT_452 = FALSE;
+               /* sx->next_addr has been reset for fast_retry */
+               return 0;
+               }
              break;
 
       case -1: return -3;                      /* Timeout on RCPT */
@@ -3273,7 +3305,6 @@ for (addr = sx->first_addr, address_count = 0;
       case -5: return -1;                      /* TLS first-read error */
 #endif
       }
-    sx->pending_MAIL = FALSE;            /* Dealt with MAIL */
     }
   }      /* Loop for next address */
 
@@ -3947,53 +3978,53 @@ else
       }
 
 #ifndef DISABLE_PRDR
-      if (sx->prdr_active)
-        {
-       const uschar * overall_message;
+    if (sx->prdr_active)
+      {
+      const uschar * overall_message;
 
-       /* PRDR - get the final, overall response.  For any non-success
-       upgrade all the address statuses. */
+      /* PRDR - get the final, overall response.  For any non-success
+      upgrade all the address statuses. */
 
-        sx->ok = smtp_read_response(sx, sx->buffer, sizeof(sx->buffer), '2',
-          ob->final_timeout);
-        if (!sx->ok)
+      sx->ok = smtp_read_response(sx, sx->buffer, sizeof(sx->buffer), '2',
+       ob->final_timeout);
+      if (!sx->ok)
+       {
+       if(errno == 0 && sx->buffer[0] == '4')
          {
-         if(errno == 0 && sx->buffer[0] == '4')
-            {
-            errno = ERRNO_DATA4XX;
-            addrlist->more_errno |= ((sx->buffer[1] - '0')*10 + sx->buffer[2] - '0') << 8;
-            }
-         for (address_item * addr = addrlist; addr != sx->first_addr; addr = addr->next)
-            if (sx->buffer[0] == '5' || addr->transport_return == OK)
-              addr->transport_return = PENDING_OK; /* allow set_errno action */
-         goto RESPONSE_FAILED;
+         errno = ERRNO_DATA4XX;
+         addrlist->more_errno |= ((sx->buffer[1] - '0')*10 + sx->buffer[2] - '0') << 8;
          }
+       for (address_item * addr = addrlist; addr != sx->first_addr; addr = addr->next)
+         if (sx->buffer[0] == '5' || addr->transport_return == OK)
+           addr->transport_return = PENDING_OK; /* allow set_errno action */
+       goto RESPONSE_FAILED;
+       }
 
-       /* Append the overall response to the individual PRDR response for logging
-       and update the journal, or setup retry. */
+      /* Append the overall response to the individual PRDR response for logging
+      and update the journal, or setup retry. */
 
-       overall_message = string_printing(sx->buffer);
-        for (address_item * addr = addrlist; addr != sx->first_addr; addr = addr->next)
-         if (addr->transport_return == OK)
-           addr->message = string_sprintf("%s\\n%s", addr->message, overall_message);
+      overall_message = string_printing(sx->buffer);
+      for (address_item * addr = addrlist; addr != sx->first_addr; addr = addr->next)
+       if (addr->transport_return == OK)
+         addr->message = string_sprintf("%s\\n%s", addr->message, overall_message);
 
-        for (address_item * addr = addrlist; addr != sx->first_addr; addr = addr->next)
-         if (addr->transport_return == OK)
-           {
-           if (testflag(addr, af_homonym))
-             sprintf(CS sx->buffer, "%.500s/%s\n", addr->unique + 3, tblock->name);
-           else
-             sprintf(CS sx->buffer, "%.500s\n", addr->unique);
+      for (address_item * addr = addrlist; addr != sx->first_addr; addr = addr->next)
+       if (addr->transport_return == OK)
+         {
+         if (testflag(addr, af_homonym))
+           sprintf(CS sx->buffer, "%.500s/%s\n", addr->unique + 3, tblock->name);
+         else
+           sprintf(CS sx->buffer, "%.500s\n", addr->unique);
 
-           DEBUG(D_deliver) debug_printf("journalling(PRDR) %s\n", sx->buffer);
-           len = Ustrlen(CS sx->buffer);
-           if (write(journal_fd, sx->buffer, len) != len)
-             log_write(0, LOG_MAIN|LOG_PANIC, "failed to write journal for "
-               "%s: %s", sx->buffer, strerror(errno));
-           }
-         else if (addr->transport_return == DEFER)
-           retry_add_item(addr, addr->address_retry_key, -2);
-       }
+         DEBUG(D_deliver) debug_printf("journalling(PRDR) %s\n", sx->buffer);
+         len = Ustrlen(CS sx->buffer);
+         if (write(journal_fd, sx->buffer, len) != len)
+           log_write(0, LOG_MAIN|LOG_PANIC, "failed to write journal for "
+             "%s: %s", sx->buffer, strerror(errno));
+         }
+       else if (addr->transport_return == DEFER)
+         retry_add_item(addr, addr->address_retry_key, -2);
+      }
 #endif
 
     /* Ensure the journal file is pushed out to disk. */
@@ -4141,7 +4172,6 @@ if (!sx->ok)
            );
   }
 
-
 /* If all has gone well, send_quit will be set TRUE, implying we can end the
 SMTP session tidily. However, if there were too many addresses to send in one
 message (indicated by first_addr being non-NULL) we want to carry on with the
@@ -4230,9 +4260,10 @@ if (sx->completed_addr && sx->ok && sx->send_quit)
       int socket_fd = sx->cctx.sock;
 
 
-      if (sx->first_addr != NULL)         /* More addresses still to be sent */
-        {                                /*   in this run of the transport */
-        continue_sequence++;             /* Causes * in logging */
+      if (sx->first_addr != NULL)      /* More addresses still to be sent */
+        {                              /*   in this run of the transport */
+        continue_sequence++;           /* Causes * in logging */
+       pipelining_active = sx->pipelining_used;    /* was cleared at DATA */
         goto SEND_MESSAGE;
         }
 
index 8ea844b385328b128b32683e70306dd83368de97..46b1b041cca006a52822bc6333ea01d36a88de07 100644 (file)
@@ -144,6 +144,7 @@ typedef struct {
 #endif
   BOOL pending_MAIL:1;
   BOOL pending_BDAT:1;
+  BOOL RCPT_452:1;
   BOOL good_RCPT:1;
   BOOL completed_addr:1;
   BOOL send_rset:1;
index a225df5fefa815fa9fc9f7aa6d826b64d980067f..9842c3988cba78c1047cb90cc1e601c2cedfa83c 100644 (file)
@@ -50,7 +50,7 @@ send_to_server:
 
 begin retry
 
-* * F,5d,10s
+* *            F,5d,10s
 
 
 # End
index e84d6e43ac5b7477c16796580371f2b6c73a5382..48aa31f4d95dc97771de743902a4d863b31f2617 100644 (file)
 1999-03-02 09:44:33 10HmbP-0005vi-00 -> y@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] C="250 OK"
 1999-03-02 09:44:33 10HmbP-0005vi-00 -> z@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] C="250 OK"
 1999-03-02 09:44:33 10HmbP-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbQ-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbQ-0005vi-00 => y00@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y01@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y02@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y03@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y04@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y05@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y06@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y07@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y08@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y09@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y10@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y11@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y12@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y13@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y14@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y15@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y16@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y17@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y18@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y19@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y20@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y21@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y22@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y23@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y24@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y25@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y26@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y27@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y28@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y29@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y30@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y31@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y32@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y33@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y34@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y35@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y36@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y37@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y38@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y39@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y40@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y41@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y42@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y43@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y44@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y45@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y46@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y47@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y48@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> y49@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 msg accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 => n50@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n51@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n52@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n53@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n54@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n55@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n56@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n57@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n58@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n59@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n60@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n61@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n62@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n63@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n64@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n65@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n66@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n67@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n68@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n69@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n70@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n71@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n72@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n73@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n74@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n75@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n76@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n77@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n78@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n79@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n80@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n81@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n82@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n83@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n84@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n85@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n86@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n87@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n88@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n89@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n90@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n91@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n92@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n93@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n94@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n95@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n96@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n97@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n98@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 -> n99@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 2 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 => n100@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1] L C="250 mesg 3 accepted"
+1999-03-02 09:44:33 10HmbQ-0005vi-00 Completed
index a74be606f81c16a9500753d143b2d7953a0b5b3d..db793b065a8c66052261e07259759e3a3632323a 100644 (file)
@@ -640,4 +640,342 @@ DATA
 ****
 exim -v -odi -DHAP=hosts_avoid_pipelining=127.0.0.1 w x y z
 ****
+# Server says 452 excess-rcpts temp error after first 50
+# Exim client checks after 100
+sudo rm -fr DIR/spool/input
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+250 OK 0
+RCPT TO
+250 OK 1
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK 49
+RCPT TO
+452 excess 50
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess
+RCPT TO
+452 excess 99
+RCPT TO
+452 excess 100
+DATA
+354 go
+.
+250 msg accepted
+MAIL FROM
+250 good mail
+RCPT TO
+250 OK 50
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO:<n99
+250 OK 99-2
+RCPT TO
+452 excess 100
+DATA
+354 go
+.
+250 mesg 2 accepted
+MAIL FROM
+250 good mail
+RCPT TO
+250 OK 100
+DATA
+354 go
+.
+250 mesg 3 accepted
+QUIT
+250 OK
+****
+exim -odi y00 y01 y02 y03 y04 y05 y06 y07 y08 y09 y10 y11 y12 y13 y14 y15 y16 y17 y18 y19 y20 y21 y22 y23 y24 y25 y26 y27 y28 y29 y30 y31 y32 y33 y34 y35 y36 y37 y38 y39 y40 y41 y42 y43 y44 y45 y46 y47 y48 y49 n50 n51 n52 n53 n54 n55 n56 n57 n58 n59 n60 n61 n62 n63 n64 n65 n66 n67 n68 n69 n70 n71 n72 n73 n74 n75 n76 n77 n78 n79 n80 n81 n82 n83 n84 n85 n86 n87 n88 n89 n90 n91 n92 n93 n94 n95 n96 n97 n98 n99 n100
+.
+****
 no_msglog_check
index c65c953a4acf43883f3b489da921b7fd952b1b40..f23d8c2c4fb2433686e1d0a1005ed23e1992d930 100644 (file)
@@ -108,79 +108,6 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 ...  connected
   SMTP>> RCPT TO:<n97@test.ex>
   SMTP>> RCPT TO:<n98@test.ex>
   SMTP>> RCPT TO:<n99@test.ex>
-  SMTP>> RCPT TO:<n100@test.ex>
-  SMTP>> RCPT TO:<n101@test.ex>
-  SMTP>> RCPT TO:<n102@test.ex>
-  SMTP>> RCPT TO:<n103@test.ex>
-  SMTP>> RCPT TO:<n104@test.ex>
-  SMTP>> RCPT TO:<n105@test.ex>
-  SMTP>> RCPT TO:<n106@test.ex>
-  SMTP>> RCPT TO:<n107@test.ex>
-  SMTP>> RCPT TO:<n108@test.ex>
-  SMTP>> RCPT TO:<n109@test.ex>
-  SMTP>> RCPT TO:<n110@test.ex>
-  SMTP>> RCPT TO:<n111@test.ex>
-  SMTP>> RCPT TO:<n112@test.ex>
-  SMTP>> RCPT TO:<n113@test.ex>
-  SMTP>> RCPT TO:<n114@test.ex>
-  SMTP>> RCPT TO:<n115@test.ex>
-  SMTP>> RCPT TO:<n116@test.ex>
-  SMTP>> RCPT TO:<n117@test.ex>
-  SMTP>> RCPT TO:<n118@test.ex>
-  SMTP>> RCPT TO:<n119@test.ex>
-  SMTP>> RCPT TO:<n120@test.ex>
-  SMTP>> RCPT TO:<n121@test.ex>
-  SMTP>> RCPT TO:<n122@test.ex>
-  SMTP>> RCPT TO:<n123@test.ex>
-  SMTP>> RCPT TO:<n124@test.ex>
-  SMTP>> RCPT TO:<n125@test.ex>
-  SMTP>> RCPT TO:<n126@test.ex>
-  SMTP>> RCPT TO:<n127@test.ex>
-  SMTP>> RCPT TO:<n128@test.ex>
-  SMTP>> RCPT TO:<n129@test.ex>
-  SMTP>> RCPT TO:<n130@test.ex>
-  SMTP>> RCPT TO:<n131@test.ex>
-  SMTP>> RCPT TO:<n132@test.ex>
-  SMTP>> RCPT TO:<n133@test.ex>
-  SMTP>> RCPT TO:<n134@test.ex>
-  SMTP>> RCPT TO:<n135@test.ex>
-  SMTP>> RCPT TO:<n136@test.ex>
-  SMTP>> RCPT TO:<n137@test.ex>
-  SMTP>> RCPT TO:<n138@test.ex>
-  SMTP>> RCPT TO:<n139@test.ex>
-  SMTP>> RCPT TO:<n140@test.ex>
-  SMTP>> RCPT TO:<n141@test.ex>
-  SMTP>> RCPT TO:<n142@test.ex>
-  SMTP>> RCPT TO:<n143@test.ex>
-  SMTP>> RCPT TO:<n144@test.ex>
-  SMTP>> RCPT TO:<n145@test.ex>
-  SMTP>> RCPT TO:<n146@test.ex>
-  SMTP>> RCPT TO:<n147@test.ex>
-  SMTP>> RCPT TO:<n148@test.ex>
-  SMTP>> RCPT TO:<n149@test.ex>
-  SMTP>> RCPT TO:<n150@test.ex>
-  SMTP>> RCPT TO:<n151@test.ex>
-  SMTP>> RCPT TO:<n152@test.ex>
-  SMTP>> RCPT TO:<n153@test.ex>
-  SMTP>> RCPT TO:<n154@test.ex>
-  SMTP>> RCPT TO:<n155@test.ex>
-  SMTP>> RCPT TO:<n156@test.ex>
-  SMTP>> RCPT TO:<n157@test.ex>
-  SMTP>> RCPT TO:<n158@test.ex>
-  SMTP>> RCPT TO:<n159@test.ex>
-  SMTP>> RCPT TO:<n160@test.ex>
-  SMTP>> RCPT TO:<n161@test.ex>
-  SMTP>> RCPT TO:<n162@test.ex>
-  SMTP>> RCPT TO:<n163@test.ex>
-  SMTP>> RCPT TO:<n164@test.ex>
-  SMTP>> RCPT TO:<n165@test.ex>
-  SMTP>> RCPT TO:<n166@test.ex>
-  SMTP>> RCPT TO:<n167@test.ex>
-  SMTP>> RCPT TO:<n168@test.ex>
-  SMTP>> RCPT TO:<n169@test.ex>
-  SMTP>> RCPT TO:<n170@test.ex>
-  SMTP>> RCPT TO:<n171@test.ex>
-  SMTP>> RCPT TO:<n172@test.ex>
   SMTP<< 250 OK
   SMTP<< 250 OK
   SMTP<< 550 NO
@@ -283,6 +210,107 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 ...  connected
   SMTP<< 550 NO
   SMTP<< 550 NO
   SMTP<< 550 NO
+  SMTP>> RCPT TO:<n100@test.ex>
+  SMTP>> RCPT TO:<n101@test.ex>
+  SMTP>> RCPT TO:<n102@test.ex>
+  SMTP>> RCPT TO:<n103@test.ex>
+  SMTP>> RCPT TO:<n104@test.ex>
+  SMTP>> RCPT TO:<n105@test.ex>
+  SMTP>> RCPT TO:<n106@test.ex>
+  SMTP>> RCPT TO:<n107@test.ex>
+  SMTP>> RCPT TO:<n108@test.ex>
+  SMTP>> RCPT TO:<n109@test.ex>
+  SMTP>> RCPT TO:<n110@test.ex>
+  SMTP>> RCPT TO:<n111@test.ex>
+  SMTP>> RCPT TO:<n112@test.ex>
+  SMTP>> RCPT TO:<n113@test.ex>
+  SMTP>> RCPT TO:<n114@test.ex>
+  SMTP>> RCPT TO:<n115@test.ex>
+  SMTP>> RCPT TO:<n116@test.ex>
+  SMTP>> RCPT TO:<n117@test.ex>
+  SMTP>> RCPT TO:<n118@test.ex>
+  SMTP>> RCPT TO:<n119@test.ex>
+  SMTP>> RCPT TO:<n120@test.ex>
+  SMTP>> RCPT TO:<n121@test.ex>
+  SMTP>> RCPT TO:<n122@test.ex>
+  SMTP>> RCPT TO:<n123@test.ex>
+  SMTP>> RCPT TO:<n124@test.ex>
+  SMTP>> RCPT TO:<n125@test.ex>
+  SMTP>> RCPT TO:<n126@test.ex>
+  SMTP>> RCPT TO:<n127@test.ex>
+  SMTP>> RCPT TO:<n128@test.ex>
+  SMTP>> RCPT TO:<n129@test.ex>
+  SMTP>> RCPT TO:<n130@test.ex>
+  SMTP>> RCPT TO:<n131@test.ex>
+  SMTP>> RCPT TO:<n132@test.ex>
+  SMTP>> RCPT TO:<n133@test.ex>
+  SMTP>> RCPT TO:<n134@test.ex>
+  SMTP>> RCPT TO:<n135@test.ex>
+  SMTP>> RCPT TO:<n136@test.ex>
+  SMTP>> RCPT TO:<n137@test.ex>
+  SMTP>> RCPT TO:<n138@test.ex>
+  SMTP>> RCPT TO:<n139@test.ex>
+  SMTP>> RCPT TO:<n140@test.ex>
+  SMTP>> RCPT TO:<n141@test.ex>
+  SMTP>> RCPT TO:<n142@test.ex>
+  SMTP>> RCPT TO:<n143@test.ex>
+  SMTP>> RCPT TO:<n144@test.ex>
+  SMTP>> RCPT TO:<n145@test.ex>
+  SMTP>> RCPT TO:<n146@test.ex>
+  SMTP>> RCPT TO:<n147@test.ex>
+  SMTP>> RCPT TO:<n148@test.ex>
+  SMTP>> RCPT TO:<n149@test.ex>
+  SMTP>> RCPT TO:<n150@test.ex>
+  SMTP>> RCPT TO:<n151@test.ex>
+  SMTP>> RCPT TO:<n152@test.ex>
+  SMTP>> RCPT TO:<n153@test.ex>
+  SMTP>> RCPT TO:<n154@test.ex>
+  SMTP>> RCPT TO:<n155@test.ex>
+  SMTP>> RCPT TO:<n156@test.ex>
+  SMTP>> RCPT TO:<n157@test.ex>
+  SMTP>> RCPT TO:<n158@test.ex>
+  SMTP>> RCPT TO:<n159@test.ex>
+  SMTP>> RCPT TO:<n160@test.ex>
+  SMTP>> RCPT TO:<n161@test.ex>
+  SMTP>> RCPT TO:<n162@test.ex>
+  SMTP>> RCPT TO:<n163@test.ex>
+  SMTP>> RCPT TO:<n164@test.ex>
+  SMTP>> RCPT TO:<n165@test.ex>
+  SMTP>> RCPT TO:<n166@test.ex>
+  SMTP>> RCPT TO:<n167@test.ex>
+  SMTP>> RCPT TO:<n168@test.ex>
+  SMTP>> RCPT TO:<n169@test.ex>
+  SMTP>> RCPT TO:<n170@test.ex>
+  SMTP>> RCPT TO:<n171@test.ex>
+  SMTP>> RCPT TO:<n172@test.ex>
+  SMTP>> RCPT TO:<n173@test.ex>
+  SMTP>> RCPT TO:<n174@test.ex>
+  SMTP>> RCPT TO:<n175@test.ex>
+  SMTP>> RCPT TO:<n176@test.ex>
+  SMTP>> RCPT TO:<n177@test.ex>
+  SMTP>> RCPT TO:<n178@test.ex>
+  SMTP>> RCPT TO:<n179@test.ex>
+  SMTP>> RCPT TO:<n180@test.ex>
+  SMTP>> RCPT TO:<n181@test.ex>
+  SMTP>> RCPT TO:<n182@test.ex>
+  SMTP>> RCPT TO:<n183@test.ex>
+  SMTP>> RCPT TO:<n184@test.ex>
+  SMTP>> RCPT TO:<n185@test.ex>
+  SMTP>> RCPT TO:<n186@test.ex>
+  SMTP>> RCPT TO:<n187@test.ex>
+  SMTP>> RCPT TO:<n188@test.ex>
+  SMTP>> RCPT TO:<n189@test.ex>
+  SMTP>> RCPT TO:<n190@test.ex>
+  SMTP>> RCPT TO:<n191@test.ex>
+  SMTP>> RCPT TO:<n192@test.ex>
+  SMTP>> RCPT TO:<n193@test.ex>
+  SMTP>> RCPT TO:<n194@test.ex>
+  SMTP>> RCPT TO:<n195@test.ex>
+  SMTP>> RCPT TO:<n196@test.ex>
+  SMTP>> RCPT TO:<n197@test.ex>
+  SMTP>> RCPT TO:<n198@test.ex>
+  SMTP>> RCPT TO:<n199@test.ex>
+  SMTP>> DATA
   SMTP<< 550 NO
   SMTP<< 550 NO
   SMTP<< 550 NO
@@ -355,34 +383,6 @@ Connecting to 127.0.0.1 [127.0.0.1]:1224 ...  connected
   SMTP<< 550 NO
   SMTP<< 550 NO
   SMTP<< 550 NO
-  SMTP>> RCPT TO:<n173@test.ex>
-  SMTP>> RCPT TO:<n174@test.ex>
-  SMTP>> RCPT TO:<n175@test.ex>
-  SMTP>> RCPT TO:<n176@test.ex>
-  SMTP>> RCPT TO:<n177@test.ex>
-  SMTP>> RCPT TO:<n178@test.ex>
-  SMTP>> RCPT TO:<n179@test.ex>
-  SMTP>> RCPT TO:<n180@test.ex>
-  SMTP>> RCPT TO:<n181@test.ex>
-  SMTP>> RCPT TO:<n182@test.ex>
-  SMTP>> RCPT TO:<n183@test.ex>
-  SMTP>> RCPT TO:<n184@test.ex>
-  SMTP>> RCPT TO:<n185@test.ex>
-  SMTP>> RCPT TO:<n186@test.ex>
-  SMTP>> RCPT TO:<n187@test.ex>
-  SMTP>> RCPT TO:<n188@test.ex>
-  SMTP>> RCPT TO:<n189@test.ex>
-  SMTP>> RCPT TO:<n190@test.ex>
-  SMTP>> RCPT TO:<n191@test.ex>
-  SMTP>> RCPT TO:<n192@test.ex>
-  SMTP>> RCPT TO:<n193@test.ex>
-  SMTP>> RCPT TO:<n194@test.ex>
-  SMTP>> RCPT TO:<n195@test.ex>
-  SMTP>> RCPT TO:<n196@test.ex>
-  SMTP>> RCPT TO:<n197@test.ex>
-  SMTP>> RCPT TO:<n198@test.ex>
-  SMTP>> RCPT TO:<n199@test.ex>
-  SMTP>> DATA
   SMTP<< 550 NO
   SMTP<< 550 NO
   SMTP<< 550 NO
index f08a3fab64282a45ac4b21090a93ebb9c6d3a691..17ed51ba86a0f4099ced13a289ca9e330d929ac8 100644 (file)
@@ -615,3 +615,357 @@ Date: Tue, 2 Mar 1999 09:44:33 +0000
 .
 250 OK
 End of script
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 Server ready
+EHLO myhost.test.ex
+250-OK
+250 PIPELINING
+MAIL FROM:<CALLER@test.ex>
+250 OK
+RCPT TO:<y00@test.ex>
+250 OK 0
+RCPT TO:<y01@test.ex>
+250 OK 1
+RCPT TO:<y02@test.ex>
+250 OK
+RCPT TO:<y03@test.ex>
+250 OK
+RCPT TO:<y04@test.ex>
+250 OK
+RCPT TO:<y05@test.ex>
+250 OK
+RCPT TO:<y06@test.ex>
+250 OK
+RCPT TO:<y07@test.ex>
+250 OK
+RCPT TO:<y08@test.ex>
+250 OK
+RCPT TO:<y09@test.ex>
+250 OK
+RCPT TO:<y10@test.ex>
+250 OK
+RCPT TO:<y11@test.ex>
+250 OK
+RCPT TO:<y12@test.ex>
+250 OK
+RCPT TO:<y13@test.ex>
+250 OK
+RCPT TO:<y14@test.ex>
+250 OK
+RCPT TO:<y15@test.ex>
+250 OK
+RCPT TO:<y16@test.ex>
+250 OK
+RCPT TO:<y17@test.ex>
+250 OK
+RCPT TO:<y18@test.ex>
+250 OK
+RCPT TO:<y19@test.ex>
+250 OK
+RCPT TO:<y20@test.ex>
+250 OK
+RCPT TO:<y21@test.ex>
+250 OK
+RCPT TO:<y22@test.ex>
+250 OK
+RCPT TO:<y23@test.ex>
+250 OK
+RCPT TO:<y24@test.ex>
+250 OK
+RCPT TO:<y25@test.ex>
+250 OK
+RCPT TO:<y26@test.ex>
+250 OK
+RCPT TO:<y27@test.ex>
+250 OK
+RCPT TO:<y28@test.ex>
+250 OK
+RCPT TO:<y29@test.ex>
+250 OK
+RCPT TO:<y30@test.ex>
+250 OK
+RCPT TO:<y31@test.ex>
+250 OK
+RCPT TO:<y32@test.ex>
+250 OK
+RCPT TO:<y33@test.ex>
+250 OK
+RCPT TO:<y34@test.ex>
+250 OK
+RCPT TO:<y35@test.ex>
+250 OK
+RCPT TO:<y36@test.ex>
+250 OK
+RCPT TO:<y37@test.ex>
+250 OK
+RCPT TO:<y38@test.ex>
+250 OK
+RCPT TO:<y39@test.ex>
+250 OK
+RCPT TO:<y40@test.ex>
+250 OK
+RCPT TO:<y41@test.ex>
+250 OK
+RCPT TO:<y42@test.ex>
+250 OK
+RCPT TO:<y43@test.ex>
+250 OK
+RCPT TO:<y44@test.ex>
+250 OK
+RCPT TO:<y45@test.ex>
+250 OK
+RCPT TO:<y46@test.ex>
+250 OK
+RCPT TO:<y47@test.ex>
+250 OK
+RCPT TO:<y48@test.ex>
+250 OK
+RCPT TO:<y49@test.ex>
+250 OK 49
+RCPT TO:<n50@test.ex>
+452 excess 50
+RCPT TO:<n51@test.ex>
+452 excess
+RCPT TO:<n52@test.ex>
+452 excess
+RCPT TO:<n53@test.ex>
+452 excess
+RCPT TO:<n54@test.ex>
+452 excess
+RCPT TO:<n55@test.ex>
+452 excess
+RCPT TO:<n56@test.ex>
+452 excess
+RCPT TO:<n57@test.ex>
+452 excess
+RCPT TO:<n58@test.ex>
+452 excess
+RCPT TO:<n59@test.ex>
+452 excess
+RCPT TO:<n60@test.ex>
+452 excess
+RCPT TO:<n61@test.ex>
+452 excess
+RCPT TO:<n62@test.ex>
+452 excess
+RCPT TO:<n63@test.ex>
+452 excess
+RCPT TO:<n64@test.ex>
+452 excess
+RCPT TO:<n65@test.ex>
+452 excess
+RCPT TO:<n66@test.ex>
+452 excess
+RCPT TO:<n67@test.ex>
+452 excess
+RCPT TO:<n68@test.ex>
+452 excess
+RCPT TO:<n69@test.ex>
+452 excess
+RCPT TO:<n70@test.ex>
+452 excess
+RCPT TO:<n71@test.ex>
+452 excess
+RCPT TO:<n72@test.ex>
+452 excess
+RCPT TO:<n73@test.ex>
+452 excess
+RCPT TO:<n74@test.ex>
+452 excess
+RCPT TO:<n75@test.ex>
+452 excess
+RCPT TO:<n76@test.ex>
+452 excess
+RCPT TO:<n77@test.ex>
+452 excess
+RCPT TO:<n78@test.ex>
+452 excess
+RCPT TO:<n79@test.ex>
+452 excess
+RCPT TO:<n80@test.ex>
+452 excess
+RCPT TO:<n81@test.ex>
+452 excess
+RCPT TO:<n82@test.ex>
+452 excess
+RCPT TO:<n83@test.ex>
+452 excess
+RCPT TO:<n84@test.ex>
+452 excess
+RCPT TO:<n85@test.ex>
+452 excess
+RCPT TO:<n86@test.ex>
+452 excess
+RCPT TO:<n87@test.ex>
+452 excess
+RCPT TO:<n88@test.ex>
+452 excess
+RCPT TO:<n89@test.ex>
+452 excess
+RCPT TO:<n90@test.ex>
+452 excess
+RCPT TO:<n91@test.ex>
+452 excess
+RCPT TO:<n92@test.ex>
+452 excess
+RCPT TO:<n93@test.ex>
+452 excess
+RCPT TO:<n94@test.ex>
+452 excess
+RCPT TO:<n95@test.ex>
+452 excess
+RCPT TO:<n96@test.ex>
+452 excess
+RCPT TO:<n97@test.ex>
+452 excess
+RCPT TO:<n98@test.ex>
+452 excess
+RCPT TO:<n99@test.ex>
+452 excess 99
+RCPT TO:<n100@test.ex>
+452 excess 100
+DATA
+354 go
+Received: from CALLER by myhost.test.ex with local (Exim x.yz)
+       (envelope-from <CALLER@test.ex>)
+       id 10HmbQ-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
+Message-Id: <E10HmbQ-0005vi-00@myhost.test.ex>
+From: CALLER_NAME <CALLER@test.ex>
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+
+.
+250 msg accepted
+MAIL FROM:<CALLER@test.ex>
+250 good mail
+RCPT TO:<n50@test.ex>
+250 OK 50
+RCPT TO:<n51@test.ex>
+250 OK
+RCPT TO:<n52@test.ex>
+250 OK
+RCPT TO:<n53@test.ex>
+250 OK
+RCPT TO:<n54@test.ex>
+250 OK
+RCPT TO:<n55@test.ex>
+250 OK
+RCPT TO:<n56@test.ex>
+250 OK
+RCPT TO:<n57@test.ex>
+250 OK
+RCPT TO:<n58@test.ex>
+250 OK
+RCPT TO:<n59@test.ex>
+250 OK
+RCPT TO:<n60@test.ex>
+250 OK
+RCPT TO:<n61@test.ex>
+250 OK
+RCPT TO:<n62@test.ex>
+250 OK
+RCPT TO:<n63@test.ex>
+250 OK
+RCPT TO:<n64@test.ex>
+250 OK
+RCPT TO:<n65@test.ex>
+250 OK
+RCPT TO:<n66@test.ex>
+250 OK
+RCPT TO:<n67@test.ex>
+250 OK
+RCPT TO:<n68@test.ex>
+250 OK
+RCPT TO:<n69@test.ex>
+250 OK
+RCPT TO:<n70@test.ex>
+250 OK
+RCPT TO:<n71@test.ex>
+250 OK
+RCPT TO:<n72@test.ex>
+250 OK
+RCPT TO:<n73@test.ex>
+250 OK
+RCPT TO:<n74@test.ex>
+250 OK
+RCPT TO:<n75@test.ex>
+250 OK
+RCPT TO:<n76@test.ex>
+250 OK
+RCPT TO:<n77@test.ex>
+250 OK
+RCPT TO:<n78@test.ex>
+250 OK
+RCPT TO:<n79@test.ex>
+250 OK
+RCPT TO:<n80@test.ex>
+250 OK
+RCPT TO:<n81@test.ex>
+250 OK
+RCPT TO:<n82@test.ex>
+250 OK
+RCPT TO:<n83@test.ex>
+250 OK
+RCPT TO:<n84@test.ex>
+250 OK
+RCPT TO:<n85@test.ex>
+250 OK
+RCPT TO:<n86@test.ex>
+250 OK
+RCPT TO:<n87@test.ex>
+250 OK
+RCPT TO:<n88@test.ex>
+250 OK
+RCPT TO:<n89@test.ex>
+250 OK
+RCPT TO:<n90@test.ex>
+250 OK
+RCPT TO:<n91@test.ex>
+250 OK
+RCPT TO:<n92@test.ex>
+250 OK
+RCPT TO:<n93@test.ex>
+250 OK
+RCPT TO:<n94@test.ex>
+250 OK
+RCPT TO:<n95@test.ex>
+250 OK
+RCPT TO:<n96@test.ex>
+250 OK
+RCPT TO:<n97@test.ex>
+250 OK
+RCPT TO:<n98@test.ex>
+250 OK
+RCPT TO:<n99@test.ex>
+250 OK 99-2
+RCPT TO:<n100@test.ex>
+452 excess 100
+DATA
+354 go
+Received: from CALLER by myhost.test.ex with local (Exim x.yz)
+       (envelope-from <CALLER@test.ex>)
+       id 10HmbQ-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
+Message-Id: <E10HmbQ-0005vi-00@myhost.test.ex>
+From: CALLER_NAME <CALLER@test.ex>
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+
+.
+250 mesg 2 accepted
+MAIL FROM:<CALLER@test.ex>
+250 good mail
+RCPT TO:<n100@test.ex>
+250 OK 100
+DATA
+354 go
+Received: from CALLER by myhost.test.ex with local (Exim x.yz)
+       (envelope-from <CALLER@test.ex>)
+       id 10HmbQ-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
+Message-Id: <E10HmbQ-0005vi-00@myhost.test.ex>
+From: CALLER_NAME <CALLER@test.ex>
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+
+.
+250 mesg 3 accepted
+QUIT
+250 OK
+End of script