terminated by four asterisks. Even if no data is required for the particular
usage, the asterisks must be given.
+If the input line starts with '>>> ', this prefix and any trailing spaces
+(including line feed) are removed. The reminder is processed with Perl's
+string eval() function, effectivly evaluatiing escape sequences like
+'\x41', or '\r'. If you need a line feed there, you need to encode it
+according to your needs.
+
+If the input line starts with '\>>> ', the backslash is removed and the
+rest of the line is passed as input. This is used by the client tool,
+which understands the '>>> ' prefix for similar processing.
+
background
as well as to the named file.
-
client [<options>] <ip address> <port> [<outgoing interface>]
This command runs the auxiliary "client" program that simulates an SMTP client.
(5) If a line begins with three '>' characters and a space, the rest of the
line is input to be sent to the server. Backslash escaping is done as
- described below, but no trailing "\r\n" is sent.
+ described below, but no trailing "\r\n" is sent. As the runtest's
+ input processing catches the '>>> ' for its string eval, you may
+ want to escape from this first stage processing by prefixing your
+ line with '\'.
(6) If a line begin with three '<' characters and a space, the rest of the
- line is a filename; the content of the file is inserted intto the script
+ line is a filename; the content of the file is inserted into the script
at this point.
(7) Otherwise, the line is an input line line that is sent to the server. Any
# Run the command, with stdin connected to a pipe, and write the stdin data
-# to it, with appropriate substitutions. If a line ends with \NONL\, chop off
-# the terminating newline (and the \NONL\). If the command contains
+# to it, with appropriate substitutions. If a starts with '>>> ', process it
+# via Perl's string eval().
+# If the command contains
# -DSERVER=server add "-server" to the command, where it will adjoin the name
# for the stderr file. See comment above about the use of -DSERVER.
$lineno++;
last if /^\*{4}\s*$/;
do_substitute($testno);
- if (/^(.*)\\NONL\\\s*$/) { print CMD $1; } else { print CMD; }
+ s/^\\(>>>\s.*)/$1/ or s/^>>>\s(.*)\s*$/$1/ and $_ = eval "\"$1\"";
+ print CMD;
}
# For timeout tests, wait before closing the pipe; we expect a
****
exim -odi userx@test.ex
Last line ending without a newline and with a partial match:
-From\NONL\
+>>> From
****
exim -odi filter-userx@test.ex
Test message
****
exim -odi filter-userx@test.ex
Last line ending without a newline and with a partial match:
-From\NONL\
+>>> From
****
exim -odi userx@test.ex
Last line ending without a newline and being a single dot:
-.\NONL\
+>>> .
****
exim -odi mmdf-userx@test.ex
Line consisting of four ^A characters
****
exim -odi userx@test.ex
Last line ending without a newline and with a partial match:
-From\NONL\
+>>> From
****
exim -odi filter-userx@test.ex
Test message
****
exim -odi filter-userx@test.ex
Last line ending without a newline and with a partial match:
-From\NONL\
+>>> From
****
exim -odi userx@test.ex
Last line ending without a newline and being a single dot:
-.\NONL\
+>>> .
****
exim -odi mmdf-userx@test.ex
Line consisting of four ^A characters
250 OK
****
exim -odi abc@x.y.z
-Test message\NONL\
+>>> Test message
****
server PORT_S
220 Server ready
250 OK
****
exim -odi abc@x.y.z
-Subject: Test message\NONL\
+>>> Subject: Test message
****
rcpt to:CALLER@test.ex
??? 250
bdat 87 last
->>> To: Susan@random.com\n
+\>>> To: Susan@random.com\n
From: Sam@random.com
Subject: This is a Bodyless test message
rcpt to:CALLER@test.ex
??? 250
bdat 10
->>> To: Susan@
+\>>> To: Susan@
??? 250
bdat 78 last
random.com
rcpt to:CALLER@test.ex
??? 250
bdat 10
->>> To: Susan@
+\>>> To: Susan@
??? 250
bdat 78 last
random.com
??? 220
EHLO rhu.barb
????250
->>> MAIL FROM:<>\r\nRCPT TO:test@example.com\r\n
+\>>> MAIL FROM:<>\r\nRCPT TO:test@example.com\r\n
??? 250 OK
??? 250 Accepted (rcpt via callout)
QUIT
#
# protocol v2 plain receive
client HOSTIPV4 PORT_D
->>> \x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A\x21\x11\x00\x0c\x7f\x00\x00\x02\x7f\x2a\x2a\x2a\xc2\x95\x04\x01
+\>>> \x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A\x21\x11\x00\x0c\x7f\x00\x00\x02\x7f\x2a\x2a\x2a\xc2\x95\x04\x01
??? 220
HELO clientname
??? 250