summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2023-08-31 15:16:09 +0100
committerJeremy Harris <jgh146exb@wizmail.org>2023-08-31 16:50:03 +0100
commit92914be2140997c19f610d7f5f17fa0d9c347b9c (patch)
treeedeccf5ec96ecd04a75d61cb22c6493935b706d5
parent578c0ad36e07b49f0403c12402672d8768d19cb5 (diff)
Avoid sending DSN when message was accepted under fakereject or fakedefer. Bug 3016
-rw-r--r--doc/doc-txt/ChangeLog6
-rw-r--r--src/src/acl.c2
-rw-r--r--src/src/deliver.c6
-rw-r--r--src/src/receive.c25
-rw-r--r--test/confs/06128
-rw-r--r--test/log/0612106
-rw-r--r--test/mail/0612.rmt_fakereject16
-rw-r--r--test/scripts/0000-Basic/061235
-rw-r--r--test/stdout/061239
9 files changed, 182 insertions, 61 deletions
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 625c6d426..f2802d2fb 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -179,7 +179,11 @@ JH/34 Bug 3013: Fix use of $recipients within arguments for ${run...}.
JH/35 Bug 3014: GnuTLS: fix expiry date for an auto-generated server
certificate. Find and fix by Andreas Metzler.
-JH/36 Add ARC info to DMARC hostory recordsl
+JH/36 Add ARC info to DMARC hostory records.
+
+JH/37 Bug 3016: Avoid sending DSN when message was accepted under fakereject
+ or fakedefer. Previously the sender could discover that the message
+ had in fact been accepted.
Exim version 4.96
diff --git a/src/src/acl.c b/src/src/acl.c
index ab991ef41..118e4b35d 100644
--- a/src/src/acl.c
+++ b/src/src/acl.c
@@ -3428,7 +3428,7 @@ for (; cb; cb = cb->next)
case CONTROL_FAKEREJECT:
cancel_cutthrough_connection(TRUE, US"fakereject");
case CONTROL_FAKEDEFER:
- fake_response = (control_type == CONTROL_FAKEDEFER) ? DEFER : FAIL;
+ fake_response = control_type == CONTROL_FAKEDEFER ? DEFER : FAIL;
if (*p == '/')
{
const uschar *pp = p + 1;
diff --git a/src/src/deliver.c b/src/src/deliver.c
index 52270368e..c9a1d074b 100644
--- a/src/src/deliver.c
+++ b/src/src/deliver.c
@@ -6193,11 +6193,11 @@ return child_close(pid, 0) == 0;
*************************************************/
static void
-maybe_send_dsn(void)
+maybe_send_dsn(const address_item * const addr_succeed)
{
address_item * addr_senddsn = NULL;
-for (address_item * a = addr_succeed; a; a = a->next)
+for (const address_item * a = addr_succeed; a; a = a->next)
{
/* af_ignore_error not honored here. it's not an error */
DEBUG(D_deliver) debug_printf("DSN: processing router : %s\n"
@@ -8136,7 +8136,7 @@ else if (!f.dont_deliver)
/* Send DSN for successful messages if requested */
-maybe_send_dsn();
+maybe_send_dsn(addr_succeed);
/* If any addresses failed, we must send a message to somebody, unless
af_ignore_error is set, in which case no action is taken. It is possible for
diff --git a/src/src/receive.c b/src/src/receive.c
index 14038f2ec..3c139b3af 100644
--- a/src/src/receive.c
+++ b/src/src/receive.c
@@ -514,7 +514,7 @@ Returns: nothing
*/
void
-receive_add_recipient(uschar *recipient, int pno)
+receive_add_recipient(uschar * recipient, int pno)
{
if (recipients_count >= recipients_list_max)
{
@@ -2669,7 +2669,7 @@ if (extract_recip)
that this has happened, in order to give a better error if there are
no recipients left. */
- else if (recipient != NULL)
+ else if (recipient)
{
if (tree_search(tree_nonrecipients, recipient) == NULL)
receive_add_recipient(recipient, -1);
@@ -2679,7 +2679,7 @@ if (extract_recip)
/* Move on past this address */
- s = ss + (*ss? 1:0);
+ s = ss + (*ss ? 1 : 0);
while (isspace(*s)) s++;
} /* Next address */
@@ -3861,10 +3861,10 @@ the spool file gets corrupted. Ensure that all recipients are qualified. */
if (rc == LOCAL_SCAN_ACCEPT)
{
if (local_scan_data)
- for (uschar * s = local_scan_data; *s != 0; s++) if (*s == '\n') *s = ' ';
- for (int i = 0; i < recipients_count; i++)
+ for (uschar * s = local_scan_data; *s; s++) if (*s == '\n') *s = ' ';
+ for (recipient_item * r = recipients_list;
+ r < recipients_list + recipients_count; r++)
{
- recipient_item *r = recipients_list + i;
r->address = rewrite_address_qualify(r->address, TRUE);
if (r->errors_to)
r->errors_to = rewrite_address_qualify(r->errors_to, TRUE);
@@ -3946,6 +3946,19 @@ signal(SIGTERM, SIG_IGN);
signal(SIGINT, SIG_IGN);
#endif /* HAVE_LOCAL_SCAN */
+/* If we are faking a reject or defer, avoid sennding a DSN for the
+actually-accepted message */
+
+if (fake_response != OK)
+ for (recipient_item * r = recipients_list;
+ r < recipients_list + recipients_count; r++)
+ {
+ DEBUG(D_receive) if (r->dsn_flags & (rf_notify_success | rf_notify_delay))
+ debug_printf("DSN: clearing flags due to fake-response for message\n");
+ r->dsn_flags = r->dsn_flags & ~(rf_notify_success | rf_notify_delay)
+ | rf_notify_never;
+ }
+
/* Ensure the first time flag is set in the newly-received message. */
diff --git a/test/confs/0612 b/test/confs/0612
index b3174aabc..786b2e58e 100644
--- a/test/confs/0612
+++ b/test/confs/0612
@@ -34,10 +34,12 @@ ev_log:
accept logwrite = event $event_name
rcpt:
- accept hosts = HOSTIPV4
+ accept hosts = HOSTIPV4
- deny local_parts = rmt_reject
- defer local_parts = rmt_defer
+ deny local_parts = rmt_reject
+ defer local_parts = rmt_defer
+ accept local_parts = rmt_fakereject
+ control = fakereject
accept
# ----- Routers -----
diff --git a/test/log/0612 b/test/log/0612
index 060240719..e022b5071 100644
--- a/test/log/0612
+++ b/test/log/0612
@@ -33,72 +33,94 @@
1999-03-02 09:44:33 10HmbA-000000005vi-0000 Completed
1999-03-02 09:44:33 10HmbA-000000005vi-0000 event msg:complete
1999-03-02 09:44:33 End queue run: pid=p1237
-1999-03-02 09:44:33 defer/delay
+1999-03-02 09:44:33 fakereject/success
1999-03-02 09:44:33 Start queue run: pid=p1238
1999-03-02 09:44:33 10HmbB-000000005vi-0000 event tcp:connect
1999-03-02 09:44:33 10HmbB-000000005vi-0000 event smtp:connect
1999-03-02 09:44:33 10HmbB-000000005vi-0000 event smtp:ehlo
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 event msg:rcpt:host:defer
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 event msg:rcpt:defer
1999-03-02 09:44:33 10HmbB-000000005vi-0000 event tcp:close
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 == rmt_defer@test.ex R=r2 T=smtp defer (-44) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<rmt_defer@test.ex>: 451 Temporary local problem - please try later
+1999-03-02 09:44:33 10HmbB-000000005vi-0000 ** rmt_fakereject@test.ex R=r2 T=smtp H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after end of data: 550-Your message has been rejected but is being kept for evaluation.\n550-If it was a legitimate message, it may still be delivered to the target\n550 recipient(s).
+1999-03-02 09:44:33 10HmbB-000000005vi-0000 event msg:fail:delivery
+1999-03-02 09:44:33 10HmbB-000000005vi-0000 rmt_fakereject@test.ex: error ignored: RFC 3461 DSN, failure notify not requested
+1999-03-02 09:44:33 10HmbB-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmbB-000000005vi-0000 event msg:complete
1999-03-02 09:44:33 End queue run: pid=p1238
-1999-03-02 09:44:33 defer/never
1999-03-02 09:44:33 Start queue run: pid=p1239
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 == rmt_defer@test.ex routing defer (-52): retry time not reached
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 event tcp:connect
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 event smtp:connect
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 event smtp:ehlo
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 event msg:rcpt:host:defer
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 event msg:rcpt:defer
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 event tcp:close
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 == rmt_defer@test.ex R=r2 T=smtp defer (-44) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<rmt_defer@test.ex>: 451 Temporary local problem - please try later
+1999-03-02 09:44:33 10HmbC-000000005vi-0000 => rmt_fakereject <rmt_fakereject@test.ex> R=r1 T=tofile
+1999-03-02 09:44:33 10HmbC-000000005vi-0000 event msg:delivery
+1999-03-02 09:44:33 10HmbC-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmbC-000000005vi-0000 event msg:complete
1999-03-02 09:44:33 End queue run: pid=p1239
-1999-03-02 09:44:33 playout
1999-03-02 09:44:33 Start queue run: pid=p1240
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 == rmt_defer@test.ex routing defer (-52): retry time not reached
-1999-03-02 09:44:33 10HmbD-000000005vi-0000 <= <> R=10HmbB-000000005vi-0000 U=EXIMUSER P=local S=sss for c@dump.ex
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 == rmt_defer@test.ex routing defer (-52): retry time not reached
1999-03-02 09:44:33 End queue run: pid=p1240
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 event msg:fail:internal
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 event msg:complete
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 removed by CALLER
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 event msg:fail:internal
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 event msg:complete
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 removed by CALLER
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 Completed
-1999-03-02 09:44:33 rej/failure+delay
+1999-03-02 09:44:33 defer/delay
1999-03-02 09:44:33 Start queue run: pid=p1241
-1999-03-02 09:44:33 10HmbD-000000005vi-0000 => :blackhole: <c@dump.ex> R=r_dump
-1999-03-02 09:44:33 10HmbD-000000005vi-0000 Completed
-1999-03-02 09:44:33 10HmbD-000000005vi-0000 event msg:complete
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 event tcp:connect
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 event smtp:connect
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 event smtp:ehlo
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 event msg:rcpt:host:defer
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 event msg:rcpt:defer
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 event tcp:close
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 == rmt_defer@test.ex R=r2 T=smtp defer (-44) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<rmt_defer@test.ex>: 451 Temporary local problem - please try later
+1999-03-02 09:44:33 End queue run: pid=p1241
+1999-03-02 09:44:33 defer/never
+1999-03-02 09:44:33 Start queue run: pid=p1242
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 == rmt_defer@test.ex routing defer (-52): retry time not reached
1999-03-02 09:44:33 10HmbE-000000005vi-0000 event tcp:connect
1999-03-02 09:44:33 10HmbE-000000005vi-0000 event smtp:connect
1999-03-02 09:44:33 10HmbE-000000005vi-0000 event smtp:ehlo
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 event msg:rcpt:host:defer
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 event msg:rcpt:defer
1999-03-02 09:44:33 10HmbE-000000005vi-0000 event tcp:close
-1999-03-02 09:44:33 10HmbE-000000005vi-0000 ** rmt_reject@test.ex R=r2 T=smtp H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<rmt_reject@test.ex>: 550 Administrative prohibition
-1999-03-02 09:44:33 10HmbF-000000005vi-0000 <= <> R=10HmbE-000000005vi-0000 U=EXIMUSER P=local S=sss for e@dump.ex
-1999-03-02 09:44:33 10HmbE-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 == rmt_defer@test.ex R=r2 T=smtp defer (-44) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<rmt_defer@test.ex>: 451 Temporary local problem - please try later
+1999-03-02 09:44:33 End queue run: pid=p1242
+1999-03-02 09:44:33 playout
+1999-03-02 09:44:33 Start queue run: pid=p1243
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 == rmt_defer@test.ex routing defer (-52): retry time not reached
+1999-03-02 09:44:33 10HmbF-000000005vi-0000 <= <> R=10HmbD-000000005vi-0000 U=EXIMUSER P=local S=sss for c@dump.ex
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 == rmt_defer@test.ex routing defer (-52): retry time not reached
+1999-03-02 09:44:33 End queue run: pid=p1243
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 event msg:fail:internal
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 event msg:complete
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 removed by CALLER
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 event msg:fail:internal
1999-03-02 09:44:33 10HmbE-000000005vi-0000 event msg:complete
-1999-03-02 09:44:33 End queue run: pid=p1241
-1999-03-02 09:44:33 deliver DSN
-1999-03-02 09:44:33 Start queue run: pid=p1242
-1999-03-02 09:44:33 10HmbF-000000005vi-0000 => :blackhole: <e@dump.ex> R=r_dump
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 removed by CALLER
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 Completed
+1999-03-02 09:44:33 rej/failure+delay
+1999-03-02 09:44:33 Start queue run: pid=p1244
+1999-03-02 09:44:33 10HmbF-000000005vi-0000 => :blackhole: <c@dump.ex> R=r_dump
1999-03-02 09:44:33 10HmbF-000000005vi-0000 Completed
1999-03-02 09:44:33 10HmbF-000000005vi-0000 event msg:complete
-1999-03-02 09:44:33 End queue run: pid=p1242
+1999-03-02 09:44:33 10HmbG-000000005vi-0000 event tcp:connect
+1999-03-02 09:44:33 10HmbG-000000005vi-0000 event smtp:connect
+1999-03-02 09:44:33 10HmbG-000000005vi-0000 event smtp:ehlo
+1999-03-02 09:44:33 10HmbG-000000005vi-0000 event tcp:close
+1999-03-02 09:44:33 10HmbG-000000005vi-0000 ** rmt_reject@test.ex R=r2 T=smtp H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<rmt_reject@test.ex>: 550 Administrative prohibition
+1999-03-02 09:44:33 10HmbH-000000005vi-0000 <= <> R=10HmbG-000000005vi-0000 U=EXIMUSER P=local S=sss for e@dump.ex
+1999-03-02 09:44:33 10HmbG-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmbG-000000005vi-0000 event msg:complete
+1999-03-02 09:44:33 End queue run: pid=p1244
+1999-03-02 09:44:33 deliver DSN
+1999-03-02 09:44:33 Start queue run: pid=p1245
+1999-03-02 09:44:33 10HmbH-000000005vi-0000 => :blackhole: <e@dump.ex> R=r_dump
+1999-03-02 09:44:33 10HmbH-000000005vi-0000 Completed
+1999-03-02 09:44:33 10HmbH-000000005vi-0000 event msg:complete
+1999-03-02 09:44:33 End queue run: pid=p1245
******** SERVER ********
-1999-03-02 09:44:33 exim x.yz daemon started: pid=p1243, no queue runs, listening for SMTP on port PORT_D
-1999-03-02 09:44:33 exim x.yz daemon started: pid=p1244, no queue runs, listening for SMTP on port PORT_D
+1999-03-02 09:44:33 exim x.yz daemon started: pid=p1246, no queue runs, listening for SMTP on port PORT_D
+1999-03-02 09:44:33 exim x.yz daemon started: pid=p1247, no queue runs, listening for SMTP on port PORT_D
1999-03-02 09:44:33 10HmaX-000000005vi-0000 <= a@dump.ex H=(testclient) [ip4.ip4.ip4.ip4] P=esmtp S=sss for rmt_reject@test.ex
1999-03-02 09:44:33 H=localhost (myhost.test.ex) [127.0.0.1] F=<a@dump.ex> rejected RCPT <rmt_reject@test.ex>
1999-03-02 09:44:33 10HmaY-000000005vi-0000 <= b@dump.ex H=(testclient) [ip4.ip4.ip4.ip4] P=esmtp S=sss for rmt_accept@test.ex
1999-03-02 09:44:33 10HmaZ-000000005vi-0000 <= b@dump.ex H=localhost (myhost.test.ex) [127.0.0.1] P=esmtp S=sss for rmt_accept@test.ex
-1999-03-02 09:44:33 10HmbB-000000005vi-0000 <= c@dump.ex H=(testclient) [ip4.ip4.ip4.ip4] P=esmtp S=sss for rmt_defer@test.ex
+1999-03-02 09:44:33 10HmbB-000000005vi-0000 <= b2@dump.ex H=(testclient) [ip4.ip4.ip4.ip4] P=esmtp S=sss for rmt_fakereject@test.ex
+1999-03-02 09:44:33 10HmbC-000000005vi-0000 (= b2@dump.ex H=localhost (myhost.test.ex) [127.0.0.1] P=esmtp S=sss for rmt_fakereject@test.ex
+1999-03-02 09:44:33 10HmbD-000000005vi-0000 <= c@dump.ex H=(testclient) [ip4.ip4.ip4.ip4] P=esmtp S=sss for rmt_defer@test.ex
1999-03-02 09:44:33 H=localhost (myhost.test.ex) [127.0.0.1] F=<c@dump.ex> temporarily rejected RCPT <rmt_defer@test.ex>
-1999-03-02 09:44:33 10HmbC-000000005vi-0000 <= d@dump.ex H=(testclient) [ip4.ip4.ip4.ip4] P=esmtp S=sss for rmt_defer@test.ex
+1999-03-02 09:44:33 10HmbE-000000005vi-0000 <= d@dump.ex H=(testclient) [ip4.ip4.ip4.ip4] P=esmtp S=sss for rmt_defer@test.ex
1999-03-02 09:44:33 H=localhost (myhost.test.ex) [127.0.0.1] F=<d@dump.ex> temporarily rejected RCPT <rmt_defer@test.ex>
-1999-03-02 09:44:33 10HmbE-000000005vi-0000 <= e@dump.ex H=(testclient) [ip4.ip4.ip4.ip4] P=esmtp S=sss for rmt_reject@test.ex
+1999-03-02 09:44:33 10HmbG-000000005vi-0000 <= e@dump.ex H=(testclient) [ip4.ip4.ip4.ip4] P=esmtp S=sss for rmt_reject@test.ex
1999-03-02 09:44:33 H=localhost (myhost.test.ex) [127.0.0.1] F=<e@dump.ex> rejected RCPT <rmt_reject@test.ex>
diff --git a/test/mail/0612.rmt_fakereject b/test/mail/0612.rmt_fakereject
new file mode 100644
index 000000000..1eb2c339f
--- /dev/null
+++ b/test/mail/0612.rmt_fakereject
@@ -0,0 +1,16 @@
+From b2@dump.ex Tue Mar 02 09:44:33 1999
+Received: from localhost ([127.0.0.1] helo=myhost.test.ex)
+ by myhost.test.ex with esmtp (Exim x.yz)
+ (envelope-from <b2@dump.ex>)
+ id 10HmbC-000000005vi-0000
+ for rmt_fakereject@test.ex;
+ Tue, 2 Mar 1999 09:44:33 +0000
+Received: from [ip4.ip4.ip4.ip4] (helo=testclient)
+ by myhost.test.ex with esmtp (Exim x.yz)
+ (envelope-from <b2@dump.ex>)
+ id 10HmbB-000000005vi-0000
+ for rmt_fakereject@test.ex;
+ Tue, 2 Mar 1999 09:44:33 +0000
+Subject: test
+
+
diff --git a/test/scripts/0000-Basic/0612 b/test/scripts/0000-Basic/0612
index 69a53c691..c5e3bfba1 100644
--- a/test/scripts/0000-Basic/0612
+++ b/test/scripts/0000-Basic/0612
@@ -74,6 +74,41 @@ exim -q
exim -q
****
#
+# Client requests delivery notification; the MSA & MDA supports DSN
+# but MDA fake-rejects msg.
+# The MDA should not send a delivery notification for this case.
+exim -z fakereject/success
+****
+client HOSTIPV4 PORT_D
+??? 220
+EHLO testclient
+??? 250-
+??? 250-SIZE
+??? 250-DSN
+??? 250 HELP
+MAIL FROM:<b2@dump.ex>
+??? 250
+RCPT TO:<rmt_fakereject@test.ex> NOTIFY=success
+??? 250
+DATA
+??? 354
+Subject: test
+.
+??? 250
+QUIT
+??? 221
+****
+# MSA (try to) send msg to MDA; should see a reject
+exim -q
+****
+# due to fake, should be a msg to deliver at MDA
+# no DSN should be generated
+exim -q
+****
+# should be no notification to deliver from MDA
+exim -q
+****
+#
# Client requests notification of deferral. First time of trying, we get
# a defer but queue-time probably has not hit the 1st retry time yet, so no DSN
# will be sent and the message remains queued. Then, claiming time has elapsed,
diff --git a/test/stdout/0612 b/test/stdout/0612
index 74c73019b..92b95b4e5 100644
--- a/test/stdout/0612
+++ b/test/stdout/0612
@@ -82,6 +82,35 @@ Connecting to ip4.ip4.ip4.ip4 port 1225 ... connected
<<< 250-DSN
??? 250 HELP
<<< 250 HELP
+>>> MAIL FROM:<b2@dump.ex>
+??? 250
+<<< 250 OK
+>>> RCPT TO:<rmt_fakereject@test.ex> NOTIFY=success
+??? 250
+<<< 250 Accepted
+>>> DATA
+??? 354
+<<< 354 Enter message, ending with "." on a line by itself
+>>> Subject: test
+>>> .
+??? 250
+<<< 250 OK id=10HmbB-000000005vi-0000
+>>> QUIT
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script
+Connecting to ip4.ip4.ip4.ip4 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> EHLO testclient
+??? 250-
+<<< 250-myhost.test.ex Hello testclient [ip4.ip4.ip4.ip4]
+??? 250-SIZE
+<<< 250-SIZE 52428800
+??? 250-DSN
+<<< 250-DSN
+??? 250 HELP
+<<< 250 HELP
>>> MAIL FROM:<c@dump.ex>
??? 250
<<< 250 OK
@@ -94,7 +123,7 @@ Connecting to ip4.ip4.ip4.ip4 port 1225 ... connected
>>> Subject: test
>>> .
??? 250
-<<< 250 OK id=10HmbB-000000005vi-0000
+<<< 250 OK id=10HmbD-000000005vi-0000
>>> QUIT
??? 221
<<< 221 myhost.test.ex closing connection
@@ -123,13 +152,13 @@ Connecting to ip4.ip4.ip4.ip4 port 1225 ... connected
>>> Subject: test
>>> .
??? 250
-<<< 250 OK id=10HmbC-000000005vi-0000
+<<< 250 OK id=10HmbE-000000005vi-0000
>>> QUIT
??? 221
<<< 221 myhost.test.ex closing connection
End of script
-Message 10HmbB-000000005vi-0000 has been removed
-Message 10HmbC-000000005vi-0000 has been removed
+Message 10HmbD-000000005vi-0000 has been removed
+Message 10HmbE-000000005vi-0000 has been removed
Connecting to ip4.ip4.ip4.ip4 port 1225 ... connected
??? 220
<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
@@ -154,7 +183,7 @@ Connecting to ip4.ip4.ip4.ip4 port 1225 ... connected
>>> Subject: test
>>> .
??? 250
-<<< 250 OK id=10HmbE-000000005vi-0000
+<<< 250 OK id=10HmbG-000000005vi-0000
>>> QUIT
??? 221
<<< 221 myhost.test.ex closing connection