ph10 2004/12/21 11:12:13 GMT
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src deliver.c
Added files:
exim-test-orig/AutoTest/confs 599
exim-test-orig/AutoTest/log 599
exim-test-orig/AutoTest/scripts 599
exim-test-orig/AutoTest/stdout 599
Log:
Exim crashed for a huge SMTP error response; increasing big_buffer_size
for Exiscan made this go away, but I've now also made the code more
robust.
Revision Changes Path
1.50 +8 -0 exim/exim-doc/doc-txt/ChangeLog
1.5 +11 -9 exim/exim-src/src/deliver.c
1.1 +33 -0 exim/exim-test-orig/AutoTest/confs/599 (new)
1.1 +24 -0 exim/exim-test-orig/AutoTest/log/599 (new)
1.1 +67 -0 exim/exim-test-orig/AutoTest/scripts/599 (new)
1.1 +65 -0 exim/exim-test-orig/AutoTest/stdout/599 (new)
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -r1.49 -r1.50
--- ChangeLog 21 Dec 2004 09:40:01 -0000 1.49
+++ ChangeLog 21 Dec 2004 11:12:13 -0000 1.50
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.49 2004/12/21 09:40:01 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.50 2004/12/21 11:12:13 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -209,6 +209,14 @@
51. Small patch to Sieve code - explicitly set From: when generating an
autoreply.
+
+52. Exim crashed if a remote delivery caused a very long error message to be
+ recorded - for instance if somebody sent an entire SpamAssassin report back
+ as a large number of 550 error lines. This bug was coincidentally fixed by
+ increasing the size of one of Exim's internal buffers (big_buffer) that
+ happened as part of the Exiscan merge. However, to be on the safe side, I
+ have made the code more robust (and fixed the comments that describe what
+ is going on).
Exim version 4.43
Index: deliver.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/deliver.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- deliver.c 16 Dec 2004 15:11:47 -0000 1.4
+++ deliver.c 21 Dec 2004 11:12:13 -0000 1.5
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/deliver.c,v 1.4 2004/12/16 15:11:47 tom Exp $ */
+/* $Cambridge: exim/exim-src/src/deliver.c,v 1.5 2004/12/21 11:12:13 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -2556,13 +2556,13 @@
Read in large chunks into the big buffer and then scan through, interpreting
the data therein. In most cases, only a single read will be necessary. No
-individual item will ever be anywhere near 500 bytes in length, so by ensuring
-that we read the next chunk when there is less than 500 bytes left in the
-non-final chunk, we can assume each item is complete in store before handling
-it. Actually, each item is written using a single write(), which is atomic for
-small items (less than PIPE_BUF, which seems to be at least 512 in any Unix) so
-even if we are reading while the subprocess is still going, we should never
-have only a partial item in the buffer.
+individual item will ever be anywhere near 2500 bytes in length, so by ensuring
+that we read the next chunk when there is less than 2500 bytes left in the
+non-final chunk, we can assume each item is complete in the buffer before
+handling it. Each item is written using a single write(), which is atomic for
+small items (less than PIPE_BUF, which seems to be at least 512 in any Unix and
+often bigger) so even if we are reading while the subprocess is still going, we
+should never have only a partial item in the buffer.
Argument:
poffset the offset of the parlist item
@@ -2598,7 +2598,9 @@
Each separate item is written to the pipe in a single write(), and as they are
all short items, the writes will all be atomic and we should never find
-ourselves in the position of having read an incomplete item. */
+ourselves in the position of having read an incomplete item. "Short" in this
+case can mean up to about 1K in the case when there is a long error message
+associated with an address. */
DEBUG(D_deliver) debug_printf("reading pipe for subprocess %d (%s)\n",
(int)p->pid, eop? "ended" : "not ended");
@@ -2612,7 +2614,7 @@
There will be only one read if we get all the available data (i.e. don't
fill the buffer completely). */
- if (remaining < 500 && unfinished)
+ if (remaining < 2500 && unfinished)
{
int len;
int available = big_buffer_size - remaining;
Index: 599
====================================================================
# Exim test configuration 599
# Macros are set externally in order to get the path
# of the Exim that is being tested, and the directory
# in which the test data lives.
exim_path = EXIM_PATH
primary_hostname = myhost.test.ex
spool_directory = DIR/spool
# ----- Main settings -----
# ----- Routers -----
begin routers
r1:
driver = accept
transport = t1
# ----- Transports -----
begin transports
t1:
driver = smtp
hosts = 127.0.0.1
port = 1225
allow_localhost
# End
Index: 599
====================================================================
1999-03-02 09:44:33 10HmaX-0005vi-00 <= ph10@??? U=ph10 P=local S=242
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph10@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph11@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph12@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph13@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph14@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph15@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph16@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph17@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph18@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph19@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph20@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph21@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph22@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph23@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph24@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaX-0005vi-00 ** ph25@??? R=r1 T=t1: SMTP error from remote mailer after DATA: host 127.0.0.1 [127.0.0.1]: 550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, indeed.\n550-This is a very long error message, very long indeed, indeed, i
1999-03-02 09:44:33 10HmaY-0005vi-00 <= <> R=10HmaX-0005vi-00 U=exim P=local S=18801
1999-03-02 09:44:33 10HmaY-0005vi-00 127.0.0.1 [127.0.0.1]: Connection refused
1999-03-02 09:44:33 10HmaY-0005vi-00 == ph10@??? R=r1 T=t1 defer (111): Connection refused
1999-03-02 09:44:33 10HmaY-0005vi-00 ** ph10@???: retry timeout exceeded
1999-03-02 09:44:33 10HmaY-0005vi-00 ph10@???: error ignored
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
Index: 599
====================================================================
0 very long messages from remote deliveries
server 1225
220 Welcome
EHLO
250-Hello there
250 SIZE
MAIL FROM
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
DATA
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550 Final line.
QUIT
221 BYE
****
0
exim -odi ph10 ph11 ph12 ph13 ph14 ph15 ph16 ph17 ph18 ph19 ph20 ph21 ph22 ph23 ph24 ph25
****
no_msglog_check
Index: 599
====================================================================
******** SERVER ********
Listening on port 1225 ...
Connection request from [127.0.0.1]
220 Welcome
EHLO myhost.test.ex
250-Hello there
250 SIZE
MAIL FROM:<ph10@???> SIZE=1271
250 OK
RCPT TO:<ph10@???>
250 OK
RCPT TO:<ph11@???>
250 OK
RCPT TO:<ph12@???>
250 OK
RCPT TO:<ph13@???>
250 OK
RCPT TO:<ph14@???>
250 OK
RCPT TO:<ph15@???>
250 OK
RCPT TO:<ph16@???>
250 OK
RCPT TO:<ph17@???>
250 OK
RCPT TO:<ph18@???>
250 OK
RCPT TO:<ph19@???>
250 OK
RCPT TO:<ph20@???>
250 OK
RCPT TO:<ph21@???>
250 OK
RCPT TO:<ph22@???>
250 OK
RCPT TO:<ph23@???>
250 OK
RCPT TO:<ph24@???>
250 OK
RCPT TO:<ph25@???>
250 OK
DATA
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550-This is a very long error message, very long indeed, indeed, indeed.
550 Final line.
QUIT
221 BYE
End of script