flush_buffer(smtp_outblock *outblock)
{
int rc;
+int n = outblock->ptr - outblock->buffer;
+HDEBUG(D_transport|D_acl) debug_printf("cmd buf flush %d bytes\n", n);
#ifdef SUPPORT_TLS
if (tls_out.active == outblock->sock)
- rc = tls_write(FALSE, outblock->buffer, outblock->ptr - outblock->buffer);
+ rc = tls_write(FALSE, outblock->buffer, n);
else
#endif
+ rc = send(outblock->sock, outblock->buffer, n, 0);
-rc = send(outblock->sock, outblock->buffer, outblock->ptr - outblock->buffer, 0);
if (rc <= 0)
{
HDEBUG(D_transport|D_acl) debug_printf("send failed: %s\n", strerror(errno));
/* smtp transport datachunk callback */
#define tc_reap_prev BIT(0) /* Flags: reap previous SMTP cmd responses */
-#define tc_reap_one BIT(1) /* reap one SMTP response */
-#define tc_chunk_last BIT(2) /* annotate chunk SMTP cmd as LAST */
+#define tc_chunk_last BIT(1) /* annotate chunk SMTP cmd as LAST */
struct transport_context;
typedef int (*tpt_chunk_cmd_cb)(int fd, struct transport_context * tctx,
if ((len = chunk_ptr - deliver_out_buffer) > mlen)
{
+ DEBUG(D_transport) debug_printf("flushing headers buffer\n");
+
/* If CHUNKING, prefix with BDAT (size) NON-LAST. Also, reap responses
from previous SMTP commands. */
if (tctx && tctx->options & topt_use_bdat && tctx->chunk_cb)
- if (tctx->chunk_cb(fd, tctx, (unsigned)len, tc_reap_prev|tc_reap_one) != OK)
+ {
+ if ( tctx->chunk_cb(fd, tctx, (unsigned)len, 0) != OK
+ || !transport_write_block(fd, deliver_out_buffer, len)
+ || tctx->chunk_cb(fd, tctx, 0, tc_reap_prev) != OK
+ )
+ return FALSE;
+ }
+ else
+ if (!transport_write_block(fd, deliver_out_buffer, len))
return FALSE;
-
- if (!transport_write_block(fd, deliver_out_buffer, len))
- return FALSE;
chunk_ptr = deliver_out_buffer;
}
return FALSE;
}
-/* When doing RFC3030 CHUNKING output, work out how much data will be in the
-last BDAT, consisting of the current write_chunk() output buffer fill
+/* When doing RFC3030 CHUNKING output, work out how much data would be in a
+last-BDAT, consisting of the current write_chunk() output buffer fill
(optimally, all of the headers - but it does not matter if we already had to
flush that buffer with non-last BDAT prependix) plus the amount of body data
-(as expanded for CRLF lines). Then create and write the BDAT, and ensure
+(as expanded for CRLF lines). Then create and write BDAT(s), and ensure
that further use of write_chunk() will not prepend BDATs.
The first BDAT written will also first flush any outstanding MAIL and RCPT
commands which were buffered thans to PIPELINING.
if (size > DELIVER_OUT_BUFFER_SIZE && hsize > 0)
{
+ DEBUG(D_transport)
+ debug_printf("sending small initial BDAT; hssize=%d\n", hsize);
if ( tctx->chunk_cb(fd, tctx, hsize, 0) != OK
|| !transport_write_block(fd, deliver_out_buffer, hsize)
|| tctx->chunk_cb(fd, tctx, 0, tc_reap_prev) != OK
if (flags & tc_reap_prev && prev_cmd_count > 0)
{
+ DEBUG(D_transport) debug_printf("look for %d responses"
+ " for previous pipelined cmds\n", prev_cmd_count);
switch(sync_responses(tctx->first_addr, tctx->tblock->rcpt_include_affixes,
tctx->sync_addr, tctx->host, prev_cmd_count,
pipelining_active = FALSE;
}
-/* Reap response for the cmd we just emitted, or an outstanding BDAT */
+/* Reap response for an outstanding BDAT */
-if (flags & tc_reap_one || tctx->pending_BDAT)
+if (tctx->pending_BDAT)
{
+ DEBUG(D_transport) debug_printf("look for one response for BDAT\n");
+
if (!smtp_read_response(tctx->inblock, buffer, DELIVER_BUFFER_SIZE, '2',
ob->command_timeout))
{
1999-03-02 09:44:33 10HmbE-0005vi-00 ** v@test.ex R=to_server T=remote_smtp H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after end of data: 500 oops bdat
1999-03-02 09:44:33 10HmbE-0005vi-00 v@test.ex: error ignored
1999-03-02 09:44:33 10HmbE-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbF-0005vi-00 <= CALLER@the.local.host.name U=CALLER P=local S=sss for p@test.ex
+1999-03-02 09:44:33 10HmbF-0005vi-00 => p@test.ex R=to_server T=remote_smtp H=127.0.0.1 [127.0.0.1] K C="250 OK bdat"
+1999-03-02 09:44:33 10HmbF-0005vi-00 Completed
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+****
+#
+# message with long headers
+server PORT_S
+220 Greetings
+EHLO
+250-Hello there
+250-PIPELINING
+250 CHUNKING
+MAIL FROM
+RCPT TO
+BDAT 8191
+250 OK mail
+250 OK rcpt
+*data 8191
+250 OK nonlast bdat
+BDAT 829 LAST
+*data 829
+250 OK bdat
+QUIT
+225 OK
+*eof
+****
+exim -odf p@test.ex
+Subject: foo
+X-long_hdr: 0
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 2
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 3
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 4
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 5
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 6
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 7
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 8
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
+
+body
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
****
Connecting to 127.0.0.1 [127.0.0.1]:1224 from ip4.ip4.ip4.ip4 ... connected
SMTP<< 220 ESMTP
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-OK
250-HELP
250 AUTH LOGIN
not using PIPELINING
not using DSN
SMTP>> MAIL FROM:<CALLER@myhost.test.ex>
+cmd buf flush 37 bytes
SMTP<< 250 Sender OK
SMTP>> RCPT TO:<userx@domain.com>
+cmd buf flush 28 bytes
SMTP<< 250 Recipient OK
SMTP>> DATA
+cmd buf flush 6 bytes
SMTP<< 354 Send data
SMTP>> writing message and terminating "."
writing data block fd=dddd size=sss timeout=300
sequence=1 local_max=500 global_max=-1
no messages waiting for 127.0.0.1
SMTP>> QUIT
+cmd buf flush 6 bytes
SMTP(close)>>
Leaving my_smtp transport
LOG: MAIN
SMTP<< 220 Server ready
127.0.0.1 in hosts_avoid_esmtp? no (option unset)
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250 OK
127.0.0.1 in hosts_require_auth? no (option unset)
SMTP>> MAIL FROM:<CALLER@myhost.test.ex>
+cmd buf flush 37 bytes
SMTP<< 250 OK
SMTP>> RCPT TO:<x@y>
+cmd buf flush 15 bytes
SMTP<< 451 Temporary error
LOG: MAIN
H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<x@y>: 451 Temporary error
added retry item for R:x@y: errno=-44 more_errno=dd,A flags=0
SMTP>> QUIT
+cmd buf flush 6 bytes
SMTP(close)>>
set_process_info: pppp delivering 10HmaX-0005vi-00: just tried 127.0.0.1 [127.0.0.1] for x@y: result OK
address match test: subject=*@127.0.0.1 pattern=*
SMTP<< 220 Server ready
127.0.0.1 in hosts_avoid_esmtp? no (option unset)
SMTP>> EHLO mail.test.ex
+cmd buf flush 19 bytes
SMTP<< 250 OK
127.0.0.1 in hosts_require_auth? no (option unset)
SMTP>> MAIL FROM:<>
+cmd buf flush 14 bytes
SMTP<< 250 OK
SMTP>> RCPT TO:<qq@remote>
+cmd buf flush 21 bytes
SMTP<< 550 Unknown
SMTP>> QUIT
+cmd buf flush 6 bytes
locking TESTSUITE/spool/db/callout.lockfile
locked TESTSUITE/spool/db/callout.lockfile
EXIM_DBOPEN(TESTSUITE/spool/db/callout)
mailbox TESTSUITE/test-mail/sender is locked
writing to file TESTSUITE/test-mail/sender
writing data block fd=dddd size=sss timeout=0
+flushing headers buffer
writing data block fd=dddd size=sss timeout=0
writing data block fd=dddd size=sss timeout=0
writing data block fd=dddd size=sss timeout=0
SMTP<< 220 server ready
127.0.0.1 in hosts_avoid_esmtp? no (option unset)
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250 OK
127.0.0.1 in hosts_require_auth? no (option unset)
SMTP>> MAIL FROM:<>
+cmd buf flush 14 bytes
SMTP<< 250 OK
SMTP>> RCPT TO:<x@y>
+cmd buf flush 15 bytes
SMTP<< 250 OK
SMTP>> QUIT
+cmd buf flush 6 bytes
locking TESTSUITE/spool/db/callout.lockfile
locked TESTSUITE/spool/db/callout.lockfile
EXIM_DBOPEN(TESTSUITE/spool/db/callout)
>>> SMTP<< 220 server ready
>>> 127.0.0.1 in hosts_avoid_esmtp? no (option unset)
>>> SMTP>> EHLO myhost.test.ex
+>>> cmd buf flush 21 bytes
>>> SMTP<< 250 OK
>>> 127.0.0.1 in hosts_require_auth? no (option unset)
>>> SMTP>> MAIL FROM:<>
+>>> cmd buf flush 14 bytes
>>> SMTP<< 250 OK
>>> SMTP>> RCPT TO:<a@b>
+>>> cmd buf flush 15 bytes
>>> SMTP<< 250 OK
>>> SMTP>> QUIT
+>>> cmd buf flush 6 bytes
>>> wrote callout cache domain record for b:
>>> result=1 postmaster=0 random=0
>>> wrote positive callout cache address record for a@b
>>> SMTP<< 220 server ready
>>> 127.0.0.1 in hosts_avoid_esmtp? no (option unset)
>>> SMTP>> EHLO myhost.test.ex
+>>> cmd buf flush 21 bytes
>>> SMTP timeout
>>> ----------- end verify ------------
>>> accept: condition test deferred in ACL "mail"
Connecting to 127.0.0.1 [127.0.0.1]:1224 ... connected
SMTP<< 220 Server ready
SMTP>> EHLO the.local.host.name
+cmd buf flush 18 bytes
SMTP<< 250-server id
250-PIPELINING
250 OK
SMTP>> MAIL FROM:<CALLER@the.local.host.name>
SMTP>> RCPT TO:<userx@test.ex>
SMTP>> DATA
+cmd buf flush 65 bytes
SMTP<< 250 OK
SMTP<< 550 NO
Remote host closed connection in response to pipelined DATA
transport_check_waiting entered
sequence=1 local_max=500 global_max=-1
SMTP>> RSET
+cmd buf flush 6 bytes
H=127.0.0.1 [127.0.0.1] Remote host closed connection in response to RSET
SMTP(close)>>
set_process_info: pppp delivering 10HmaX-0005vi-00: just tried 127.0.0.1 [127.0.0.1] for userx@test.ex: result OK
Connecting to 127.0.0.1 [127.0.0.1]:1225 ... connected
SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
250-SIZE 52428800
250-8BITMIME
250-STARTTLS
250 HELP
SMTP>> STARTTLS
+cmd buf flush 10 bytes
SMTP<< 220 TLS go ahead
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
250-SIZE 52428800
250-8BITMIME
SMTP>> MAIL FROM:<CALLER@myhost.test.ex> SIZE=ssss
SMTP>> RCPT TO:<userx@test.ex>
SMTP>> DATA
+cmd buf flush 78 bytes
SMTP<< 250 OK
SMTP<< 250 Accepted
SMTP<< 354 Enter message, ending with "." on a line by itself
SMTP<< 250 OK id=10HmaZ-0005vi-00
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
250-SIZE 52428800
250-8BITMIME
trusted user
admin user
SMTP>> STARTTLS
+cmd buf flush 10 bytes
SMTP<< 220 TLS go ahead
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
250-SIZE 52428800
250-8BITMIME
SMTP>> MAIL FROM:<CALLER@myhost.test.ex> SIZE=ssss
SMTP>> RCPT TO:<userx@test.ex>
SMTP>> DATA
+cmd buf flush 78 bytes
SMTP<< 250 OK
SMTP<< 250 Accepted
SMTP<< 354 Enter message, ending with "." on a line by itself
SMTP<< 250 OK id=10HmbA-0005vi-00
SMTP>> QUIT
+cmd buf flush 6 bytes
SMTP(close)>>
LOG: MAIN
=> userx@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no DN="C=UK,O=The Exim Maintainers,OU=Test Suite,CN=Phil Pennock" C="250 OK id=10HmbA-0005vi-00"
Connecting to 127.0.0.1 [127.0.0.1]:1225 ... connected
SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
250-SIZE 52428800
250-8BITMIME
250-STARTTLS
250 HELP
SMTP>> STARTTLS
+cmd buf flush 10 bytes
SMTP<< 220 TLS go ahead
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
250-SIZE 52428800
250-8BITMIME
SMTP>> MAIL FROM:<CALLER@myhost.test.ex> SIZE=ssss
SMTP>> RCPT TO:<userx@test.ex>
SMTP>> DATA
+cmd buf flush 78 bytes
SMTP<< 250 OK
SMTP<< 250 Accepted
SMTP<< 354 Enter message, ending with "." on a line by itself
SMTP<< 250 OK id=10HmaZ-0005vi-00
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
250-SIZE 52428800
250-8BITMIME
trusted user
admin user
SMTP>> STARTTLS
+cmd buf flush 10 bytes
SMTP<< 220 TLS go ahead
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello localhost [127.0.0.1]
250-SIZE 52428800
250-8BITMIME
SMTP>> MAIL FROM:<CALLER@myhost.test.ex> SIZE=ssss
SMTP>> RCPT TO:<userx@test.ex>
SMTP>> DATA
+cmd buf flush 78 bytes
SMTP<< 250 OK
SMTP<< 250 Accepted
SMTP<< 354 Enter message, ending with "." on a line by itself
SMTP<< 250 OK id=10HmbA-0005vi-00
SMTP>> QUIT
+cmd buf flush 6 bytes
SMTP(close)>>
LOG: MAIN
=> userx@test.ex R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* X=TLSv1:AES256-SHA:256 CV=no DN="/C=UK/O=The Exim Maintainers/OU=Test Suite/CN=Phil Pennock" C="250 OK id=10HmbA-0005vi-00"
>>> SMTP<< 220 server ready
>>> 127.0.0.1 in hosts_avoid_esmtp? no (option unset)
>>> SMTP>> EHLO myhost.test.ex
+>>> cmd buf flush 21 bytes
>>> SMTP<< 250 OK
>>> 127.0.0.1 in hosts_require_auth? no (option unset)
>>> SMTP>> MAIL FROM:<CALLER@myhost.test.ex>
+>>> cmd buf flush 37 bytes
>>> SMTP<< 250 OK
>>> SMTP>> RCPT TO:<verify@domain.com>
+>>> cmd buf flush 29 bytes
>>> SMTP<< 250 OK
>>> holding verify callout open for cutthrough delivery
>>> ----------- end verify ------------
SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
127.0.0.1 in hosts_avoid_esmtp? no (option unset)
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
250-SIZE 52428800
250-8BITMIME
result: :
127.0.0.1 in hosts_verify_avoid_tls? no (end of list)
SMTP>> STARTTLS
+cmd buf flush 10 bytes
SMTP<< 220 TLS go ahead
127.0.0.1 in hosts_require_ocsp? no (option unset)
127.0.0.1 in hosts_request_ocsp? yes (matched "*")
127.0.0.1 in tls_verify_hosts? no (option unset)
127.0.0.1 in tls_try_verify_hosts? no (end of list)
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
250-SIZE 52428800
250-8BITMIME
250 HELP
127.0.0.1 in hosts_require_auth? no (option unset)
SMTP>> MAIL FROM:<CALLER@myhost.test.ex>
+cmd buf flush 37 bytes
SMTP<< 250 OK
SMTP>> RCPT TO:<userx@domain.com>
+cmd buf flush 28 bytes
SMTP<< 250 Accepted
holding verify callout open for cutthrough delivery
----------- end cutthrough setup ------------
SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
127.0.0.1 in hosts_avoid_esmtp? no (option unset)
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
250-SIZE 52428800
250-8BITMIME
127.0.0.1 in hosts_avoid_tls? yes (matched "*")
127.0.0.1 in hosts_require_auth? no (option unset)
SMTP>> MAIL FROM:<CALLER@myhost.test.ex>
+cmd buf flush 37 bytes
SMTP<< 250 OK
SMTP>> RCPT TO:<usery@domain.com>
+cmd buf flush 28 bytes
SMTP<< 250 Accepted
holding verify callout open for cutthrough delivery
----------- end cutthrough setup ------------
SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
127.0.0.1 in hosts_avoid_esmtp? no (option unset)
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
250-SIZE 52428800
250-8BITMIME
127.0.0.1 in hosts_avoid_tls? yes (matched "*")
127.0.0.1 in hosts_require_auth? no (option unset)
SMTP>> MAIL FROM:<CALLER@myhost.test.ex>
+cmd buf flush 37 bytes
SMTP<< 250 OK
SMTP>> RCPT TO:<usery@domain.com>
+cmd buf flush 28 bytes
SMTP<< 250 Accepted
holding verify callout open for cutthrough delivery
----------- end cutthrough setup ------------
SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
127.0.0.1 in hosts_avoid_esmtp? no (option unset)
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
250-SIZE 52428800
250-8BITMIME
result: :
127.0.0.1 in hosts_verify_avoid_tls? no (end of list)
SMTP>> STARTTLS
+cmd buf flush 10 bytes
SMTP<< 220 TLS go ahead
127.0.0.1 in tls_verify_hosts? no (option unset)
127.0.0.1 in tls_try_verify_hosts? yes (matched "*")
127.0.0.1 in tls_verify_cert_hostnames? yes (matched "*")
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
250-SIZE 52428800
250-8BITMIME
250 HELP
127.0.0.1 in hosts_require_auth? no (option unset)
SMTP>> MAIL FROM:<CALLER@myhost.test.ex>
+cmd buf flush 37 bytes
SMTP<< 250 OK
SMTP>> RCPT TO:<userx@domain.com>
+cmd buf flush 28 bytes
SMTP<< 250 Accepted
holding verify callout open for cutthrough delivery
----------- end cutthrough setup ------------
SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
127.0.0.1 in hosts_avoid_esmtp? no (option unset)
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
250-SIZE 52428800
250-8BITMIME
127.0.0.1 in hosts_avoid_tls? yes (matched "*")
127.0.0.1 in hosts_require_auth? no (option unset)
SMTP>> MAIL FROM:<CALLER@myhost.test.ex>
+cmd buf flush 37 bytes
SMTP<< 250 OK
SMTP>> RCPT TO:<usery@domain.com>
+cmd buf flush 28 bytes
SMTP<< 250 Accepted
holding verify callout open for cutthrough delivery
----------- end cutthrough setup ------------
SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
127.0.0.1 in hosts_avoid_esmtp? no (option unset)
SMTP>> EHLO myhost.test.ex
+cmd buf flush 21 bytes
SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
250-SIZE 52428800
250-8BITMIME
127.0.0.1 in hosts_avoid_tls? yes (matched "*")
127.0.0.1 in hosts_require_auth? no (option unset)
SMTP>> MAIL FROM:<CALLER@myhost.test.ex>
+cmd buf flush 37 bytes
SMTP<< 250 OK
SMTP>> RCPT TO:<usery@domain.com>
+cmd buf flush 28 bytes
SMTP<< 250 Accepted
holding verify callout open for cutthrough delivery
----------- end cutthrough setup ------------
>>> SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
>>> ip4.ip4.ip4.ip4 in hosts_avoid_esmtp? no (option unset)
>>> SMTP>> EHLO myhost.test.ex
+>>> cmd buf flush 21 bytes
>>> SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
>>> 250-SIZE 52428800
>>> 250-8BITMIME
>>> ip4.ip4.ip4.ip4 in hosts_avoid_tls? no (option unset)
>>> ip4.ip4.ip4.ip4 in hosts_verify_avoid_tls? no (option unset)
>>> SMTP>> STARTTLS
+>>> cmd buf flush 10 bytes
>>> SMTP<< 220 TLS go ahead
>>> ip4.ip4.ip4.ip4 in hosts_require_ocsp? no (option unset)
>>> ip4.ip4.ip4.ip4 in hosts_require_ocsp? no (option unset)
>>> ip4.ip4.ip4.ip4 in hosts_request_ocsp? no (end of list)
>>> SMTP>> EHLO myhost.test.ex
+>>> cmd buf flush 21 bytes
>>> SMTP<< 250-myhost.test.ex Hello the.local.host.name [ip4.ip4.ip4.ip4]
>>> 250-SIZE 52428800
>>> 250-8BITMIME
>>> 250 HELP
>>> ip4.ip4.ip4.ip4 in hosts_require_auth? no (option unset)
>>> SMTP>> MAIL FROM:<>
+>>> cmd buf flush 14 bytes
>>> SMTP<< 250 OK
>>> SMTP>> RCPT TO:<CALLER@dane256ee.test.ex>
+>>> cmd buf flush 38 bytes
>>> SMTP<< 250 Accepted
>>> SMTP>> QUIT
+>>> cmd buf flush 6 bytes
>>> wrote callout cache domain record for dane256ee.test.ex:
>>> result=1 postmaster=0 random=0
>>> wrote positive callout cache address record for CALLER@dane256ee.test.ex
QUIT
225 OK
End of script
+Listening on port 1224 ...
+Connection request from [127.0.0.1]
+220 Greetings
+EHLO the.local.host.name
+250-Hello there
+250-PIPELINING
+250 CHUNKING
+MAIL FROM:<>
+RCPT TO:<p@test.ex>
+BDAT 8191
+250 OK mail
+250 OK rcpt
+250 OK nonlast bdat
+BDAT 829 LAST
+250 OK bdat
+QUIT
+225 OK
+Expected EOF read from client
+End of script