--- /dev/null
+# Basic configuration setting
+
+# Check that Exim can handle settings of all the configuration options that
+# are not dependent on optional features in the binary. This catches out error
+# in putting new options in the wrong order. Well, sometimes it does. We get
+# it to print out a sample set of configuration variables.
+
+exim -bP accept_8bitmime \
+ bounce_message_file \
+ callout_domain_negative_expire \
+ daemon_smtp_ports \
+ envelope_to_remove \
+ finduser_retries \
+ gecos_name \
+ headers_charset \
+ ignore_bounce_errors_after \
+ keep_malformed \
+ local_from_check \
+ max_username_length \
+ never_users \
+ percent_hack_domains \
+ qualify_domain \
+ receive_timeout \
+ sender_unqualified_hosts \
+ tcp_nodelay \
+ trusted_users \
+ unknown_login \
+ warn_message_file
+****
--- /dev/null
+# Common string expansions
+#
+# This is the main string expansion test that tests those expansions that will
+# be present in the basic Exim binary which we require in order to run these
+# tests at all. Specialized expansion tests also exist for optional features
+# in other test scripts.
+
+exim -be
+
+# These expansions can test variables in the configuration, but as there
+# is no message being processed, there is no message-related data. But
+# that of course gets tested in plenty of other places.
+
+# Some fixed variables
+
+exim_path: $exim_path
+primary_hostname: $primary_hostname
+primary_hostname: ${primary_hostname}
+qualify_domain: $qualify_domain
+bounce_return_size_limit: ${bounce_return_size_limit}
+spool_directory: $spool_directory
+unknown: ${unknown}
+h_subject: $h_subject:(should be empty)
+h_subject:$h_subject (should be empty)
+header in curlies: ${header_subject:} (should fail)
+
+# \$message_headers should be empty
+message_headers: >$message_headers<
+
+# Continuation
+x\
+y
+x\
+ y
+
+# Overlong names and overbig numbers
+
++$aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
++${aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}
++$11111111111111111111111111111111111
++${11111111111111111111111111111111111}
+
+# Operators
+
+addrss: ${address:local-part@dom.ain}
+addrss: ${address:Exim Person <local-part@dom.ain> (that's me)}
+domain: ${domain:local-part@dom.ain}
+domain: ${domain:Exim Person <local-part@dom.ain> (that's me)}
+escape: ${escape:B7·F2ò}
+eval: ${eval:1+1}
+eval: ${eval:1+2*3}
+eval: ${eval:(1+2)*3}
+eval: ${eval:3/2*4}
+eval: ${eval:3*4/2}
+eval: ${eval:42}
+eval: ${eval:}
+eval: ${eval:-2}
+eval: ${eval:-2 - -3}
+eval: ${eval:-2 - (-3)}
+eval: ${eval:-2 - (-3}
+eval: ${eval:-2 - -3)}
+eval: ${eval:-2 --3}
+eval: ${eval:-2 -+3}
+eval: ${eval:-2 -+-3}
+eval: ${eval:(2*(1+1))/2 + 40K}
+eval: ${eval:077}
+eval: ${eval:08}
+eval10: ${eval10:077}
+eval10: ${eval10:08}
+expand: \$primary_hostname ${expand:\$primary_hostname}
+hash: ${hash_3:monty} ${hash_5:monty} ${hash_4_62:monty python}
+hash: ${hash_3:abc}X ${hash_3:ab}X ${hash_3:a}X ${hash_3:}X
+hex2b64:${hex2b64:12345678}
+hex2b64:${hex2b64:abcdef}
+hex2b64:${hex2b64:ABCDEF}
+hex2b64:${hex2b64:1a2b3c4d5e6f}
+hex2b64:${hex2b64:1a2b3c4d5e6}
+hex2b64:${hex2b64:1a2b3c4d5e6g}
+hex2b64:${hex2b64:${md5:the quick brown fox}}
+hex2b64:${hex2b64:${sha1:the quick brown fox}}
+
+The base62 operator is actually a base36 operator in the Darwin and Cygwin
+environments. Write cunning tests that produce the same output in both cases,
+while doing a reasonable check.
+
+base62: ${if or {\
+ {eq {${base62:12345}}{0003D7}}\
+ {eq {${base62:12345}}{0009IX}}\
+ }{OK}{NOT OK}}
+base62d: ${if or {\
+ {eq {${base62d:0003D7}}{12345}}\
+ {eq {${base62d:0009IX}}{12345}}\
+ }{OK}{NOT OK}}
+base62d: ${if or {\
+ {eq {${base62d:3D7}}{12345}}\
+ {eq {${base62d:9IX}}{12345}}\
+ }{OK}{NOT OK}}
+base62 error: ${base62:12345x}
+base62d error:${base62d:0003D7.}
+
+hmac: ${hmac{md5}{somesecret}{mail.example.com 2002-10-17 11:30:59}}
+hmac: ${hmac{sha1}{somesecret}{mail.example.com 2002-10-17 11:30:59}}
+md5: ${md5:the quick brown fox jumps over the lazy dog}
+sha1: ${sha1:}
+sha1: ${sha1:abc}
+mask: ${mask:192.168.10.206/28}
+mask: ${mask:192.168.10.206/32}
+mask: ${mask:192.168.10.206/33}
+mask: ${mask:192.168.10.206/0}
+mask: ${mask:192.168.10.206}
+mask: ${mask:a.b.c.d}
+nhash: ${nhash_24:monty} ${nhash_8_63:monty python}
+lc/uc: ${lc:The Quick} ${uc: Brown Fox}
+length: ${length_10:The quick brown fox} ${l_10:abc}
+lclpt: ${local_part:local-part@dom.ain}
+lclpt: ${local_part:Exim Person <local-part@dom.ain> (that's me)}
+quote: ${quote:aZ09_.-Q} ${quote:ab*cd} ${quote:ab\cd"ef}
+quote: ${quote:nl(\n)}
+quote: ${quote:cr(\r)}
+quote: ${quote:tab(\t)}
+quote: ${quote:xff(\xff)}
+quote: Empty>${quote:}<
+quote_local_part: ${quote_local_part:abcd}
+quote_local_part: ${quote_local_part:O'Reilly}
+quote_local_part: ${quote_local_part:a space}
+quote_local_part: ${quote_local_part:.something}
+quote_local_part: ${quote_local_part:something.}
+quote_local_part: ${quote_local_part:joe.bloggs}
+quote_local_part: ${quote_local_part:a!b}
+quote_local_part: ${quote_local_part:x@y}
+quote_local_part: ${quote_local_part:ab*cd}
+quote_local_part: ${quote_local_part:x:y}
+quote_local_part: ${quote_local_part:ab\cd"ef}
+quote_local_part: ${quote_local_part:}
+rxquote:${rxquote:aZ09_,-Q} ${rxquote:ab*cd} ${rxquote:ab\cd"ef}
+substr: ${substr_3_2:rhubarb} ${s_-5_2:1234567} ${s_-5_2:12} ${s_-3_2:12}
+substr: ${s_3:rhubarb} ${s_-2:rhubarb}
+substr: ${s_1:}
+substr: ${substr_10:abc}
+str2b64:${str2b64:abcd}
+str2b64:${str2b64:The quick brown \n fox}
+strlen: ${strlen:}
+strlen: ${strlen:a}
+strlen: ${strlen:abcdefgh}
+time_interval: ${time_interval:0}
+time_interval: ${time_interval:44}
+time_interval: ${time_interval:999999}
+time_interval: ${time_interval:-1}
+time_interval: ${time_interval:rhubarb}
+
+# stat is a bit tricky, but some of the fields of the aux-var directory
+# should be the same on all systems
+
+stat: ${extract{mode}{${stat:DIR/aux-var}}}
+stat: ${extract{smode}{${stat:DIR/aux-var}}}
+stat: ${stat:/a/non/existent/file}
+
+# "Operators" that have expanded arguments
+
+hash: ${hash{3}{monty}} ${hash{5}{monty}} ${hash{4}{62}{monty python}}
+hash: ${hash{3}{abc}}X ${hash{3}{ab}}X ${hash{3}{a}}X ${hash{3}{}}X
+nhash: ${nhash{24}{monty}} ${nhash{8}{63}{monty python}}
+length: ${length{10}{The quick brown fox}} ${length{10}{abc}}
+substr: ${substr{3}{2}{rhubarb}} ${substr{-5}{2}{1234567}} ${substr{-5}{2}{12}} ${substr{-3}{2}{12}}
+substr: ${substr{${if eq{1}{1}{-8}}}{${if eq{1}{0}{25}{1}}}{abcde}}
+
+# Error forms
+
+${hash{one}}
+${hash{nonnumber}{abcd}}
+${hash{3}{2}{4}{abcd}}
+${substr{-3}{-2}{abcd}}
+
+# Skipped operators
+
+addrss: ${if eq {1}{2}{${address:invalid}}{NO}}
+domain: ${if eq {1}{2}{${domain:invalid}}{NO}}
+escape: ${if eq {1}{2}{${escape:invalid}}{NO}}
+expand: ${if eq {1}{2}{\$primary_hostname ${expand:\$invalid}}{NO}}
+hash: ${if eq {1}{2}{${hash_3:invalid}}{NO}}
+md5: ${if eq {1}{2}{${md5:invalid}}{NO}}
+mask: ${if eq {1}{2}{${mask:invalid}}{NO}}
+
+# Conditions
+
+2=2: ${if ={2}{2}{y}{n}}
+2==2: ${if =={2}{2}{y}{n}}
+3=2: ${if ={3}{2}{y}{n}}
+2==3: ${if =={2}{3}{y}{n}}
+!2=2: ${if !={2}{2}{y}{n}}
+!2==2: ${if !=={2}{2}{y}{n}}
+!3=2: ${if !={3}{2}{y}{n}}
+!2==3: ${if !=={2}{3}{y}{n}}
+2>3: ${if >{2}{3}{y}{n}}
+3>3: ${if >{3}{3}{y}{n}}
+4>3: ${if >{4}{3}{y}{n}}
+2>=3: ${if >={2}{3}{y}{n}}
+3>=3: ${if >={3}{3}{y}{n}}
+4>=3: ${if >={4}{3}{y}{n}}
+2<3: ${if <{2}{3}{y}{n}}
+3<3: ${if <{3}{3}{y}{n}}
+4<3: ${if <{4}{3}{y}{n}}
+2<=3: ${if <={2}{3}{y}{n}}
+3<=3: ${if <={3}{3}{y}{n}}
+4<=3: ${if <={4}{3}{y}{n}}
+5<=3: ${if <={ 5 } { 3 } {y}{n}}
+
+5>3k: ${if >{5 } {3k }{y}{n}}
+5>3m: ${if >{5 } {3m }{y}{n}}
+5>3z: ${if >{5 } {3z }{y}{n}}
+5>a: ${if >{ 5 } {a}{y}{n}}
+
+def:y ${if def:tod_log{y}{n}}
+def:n ${if def:host{y}{n}}
+def:f ${if def:post{y}{n}}
+def:h_f ${if def:h_xxx {y}{n}}
+def:h_f ${if def:h_xxx:{y}{n}}
+def:d: ${if def:tod_log:{y}{n}}
+
+exists: ${if exists{/etc/passwd}{y}{n}}
+exists: ${if exists{/doesnt}{y}{n}}
+
+eq: ${if eq{abc}{abc}{y}{n}}
+eq: ${if eq{abc}{xyz}{y}{n}}
+!eq: ${if !eq{abc}{abc}{y}{n}}
+!eq: ${if !eq{abc}{xyz}{y}{n}}
+
+eqi: ${if eqi{abc}{abc}{y}{n}}
+eqi: ${if eqi{abc}{ABC}{y}{n}}
+eqi: ${if eqi{abc}{xyz}{y}{n}}
+!eqi: ${if !eqi{abc}{abc}{y}{n}}
+!eqi: ${if !eqi{abc}{aBc}{y}{n}}
+!eqi: ${if !eqi{abc}{xyz}{y}{n}}
+
+lt: ${if lt{ABC}{abc}{y}{n}}
+lti: ${if lti{ABC}{abc}{y}{n}}
+le: ${if le{ABC}{abc}{y}{n}}
+lei: ${if lei{ABC}{abc}{y}{n}}
+gt: ${if gt{ABC}{abc}{y}{n}}
+gti: ${if gti{ABC}{abc}{y}{n}}
+ge: ${if ge{ABC}{abc}{y}{n}}
+gei: ${if gei{ABC}{abc}{y}{n}}
+
+isip: ${if isip {1.2.3.4}{y}{n}} 1.2.3.4
+isip4: ${if isip4{1.2.3.4}{y}{n}} 1.2.3.4
+isip6: ${if isip6{1.2.3.4}{y}{n}} 1.2.3.4
+isip: ${if isip {1:2:3:4}{y}{n}} 1:2:3:4
+isip4: ${if isip4{1:2:3:4}{y}{n}} 1:2:3:4
+isip6: ${if isip6{1:2:3:4}{y}{n}} 1:2:3:4
+isip: ${if isip {::1}{y}{n}} ::1
+isip4: ${if isip4{::1}{y}{n}} ::1
+isip6: ${if isip6{::1}{y}{n}} ::1
+isip: ${if isip {fe80::a00:20ff:fe86:a061}{y}{n}} fe80::a00:20ff:fe86:a061
+isip4: ${if isip4{fe80::a00:20ff:fe86:a061}{y}{n}} fe80::a00:20ff:fe86:a061
+isip6: ${if isip6{fe80::a00:20ff:fe86:a061}{y}{n}} fe80::a00:20ff:fe86:a061
+isip: ${if isip {rhubarb}{y}{n}} rhubarb
+isip4: ${if isip4{rhubarb}{y}{n}} rhubarb
+isip6: ${if isip6{rhubarb}{y}{n}} rhubarb
+
+match: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+match: ${if match{abcd}{^\N([ab]+)(\w+)$\N}{$2$1}fail}
+match: ${if match{abcd}{^([ab]+)(\\w+)\$}{$2$1}fail}
+match: ${if match{wxyz}{^([ab]+)(\\w+)\$}{$2$1}fail}
+match: ${if match{abcd}{^([ab]+)(\\w+)\$}{$2[${if match{xyz}{(.*)}{$1}fail}]$1}fail}
+
+match_domain: ${if match_domain{a.b.c}{x.y.z:a.b.c:p.q.r}{yes}{no}}
+match_domain: ${if match_domain{a.b.c}{x.y.z:p.q.r}{yes}{no}}
+match_domain: ${if match_domain{5.aa.bb}{+dlist}{yes}{no}}
+match_domain: ${if match_domain{xxxyz}{+dlist}{yes}{no}}
+match_domain: ${if match_domain{xyz}{+dlist}{yes}{no}}
+
+match_address: ${if match_address{x@y.z}{p@q:*@y.z}{yes}{no}}
+match_address: ${if match_address{x@y.z}{p@q:x@*.z}{yes}{no}}
+
+match_local_part:${if match_local_part{jo}{jack:jill:jo:john}{yes}{no}}
+match_local_part:${if match_local_part{jo}{\N^\w\N}{yes}{no}}
+
+match_ip: 01 ${if match_ip{1.2.3.4}{4.5.6.7:1.2.3.4}}
+match_ip: 02 ${if match_ip{1.2.3.4}{4.5.6.7:1.2.3.6}}
+match_ip: 03 ${if match_ip{1.2.3.4}{4.5.6.7:1.2.3.6/24}}
+match_ip: 04 ${if match_ip{1.2.3.4}{4.5.6.7:1.2.3.6:*}}
+match_ip: 05 ${if match_ip{1.2.3.4}{4.5.6.7:1.2.3.6:name}}
+match_ip: 06 ${if match_ip{1.2.3.4}{:4.5.6.7}}
+match_ip: 07 ${if match_ip{}{:4.5.6.7}}
+match_ip: 08 ${if match_ip{V4NET.11.12.13}{+hlist}}
+match_ip: 09 ${if match_ip{V4NET.11.12.14}{+hlist}}
+match_ip: 10 ${if match_ip{192.168.3.4}{+hlist}}
+match_ip: 11 ${if match_ip{somename}{+hlist}}
+match_ip: 12 ${if match_ip{1.2.3.4}{lsearch;DIR/aux-fixed/0002.matchip}}
+match_ip: 13 ${if match_ip{1.2.3.4}{net-lsearch;DIR/aux-fixed/0002.matchip}}
+match_ip: 14 ${if match_ip{5.6.7.8}{net24-lsearch;DIR/aux-fixed/0002.matchip}}
+
+queue_running: ${if queue_running{y}{n}}
+first_delivery: ${if first_delivery{y}{n}}
+
+queue_running after or: ${if or{{eq {0}{0}}{queue_running}}{y}{n}}
+first_delivery after or: ${if or{{eq {0}{0}}{first_delivery}}{y}{n}}
+
+# Default values for both if strings
+
+\${if eq{1}{1}} >${if eq{1}{1}}<
+\${if eq{1}{2}} >${if eq{1}{2}}<
+
+# Lookups: DIR is the testing directory. In this test we can only use the
+# lookups that are required in all cases.
+
+${lookup{postmaster}lsearch{DIR/aux-fixed/0002.aliases}{$value}fail}
+
+${lookup{x@y}lsearch*@{DIR/aux-fixed/0002.starat}{$value}fail}
+${lookup{x@z}lsearch*{DIR/aux-fixed/0002.starat}{$value}fail}
+${lookup{x@z}lsearch*@{DIR/aux-fixed/0002.starat}{$value}fail}
+${lookup{x@w}lsearch*@{DIR/aux-fixed/0002.starat}{$value}fail}
+
+${lookup{a.b.c.d}partial-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z}partial-lsearch{DIR/aux-fixed/0002.domains}{$value}{failed x.y.z}}
+${lookup{p.q}partial-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{o.p.q}partial-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{m.n.o.p.q}partial-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z}partial1-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z}partial0-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
+
+q1: ${lookup{abc}lsearch{DIR/aux-fixed/0002.quoted}}
+q2: ${lookup{xyz}lsearch{DIR/aux-fixed/0002.quoted}}
+q3: ${lookup{pqr}lsearch{DIR/aux-fixed/0002.quoted}}
+q4: ${lookup{a:b}lsearch{DIR/aux-fixed/0002.quoted}}
+q5: ${lookup{"quoted"}lsearch{DIR/aux-fixed/0002.quoted}}
+q6: ${lookup{white space}lsearch{DIR/aux-fixed/0002.quoted}}
+q7: ${lookup{b\\s}lsearch{DIR/aux-fixed/0002.quoted}}
+
+abc: ${lookup{abc}wildlsearch{DIR/aux-var/0002.wild}}
+a.b.c: ${lookup{a.b.c}wildlsearch{DIR/aux-var/0002.wild}}
+ab.c: ${lookup{ab.c}wildlsearch{DIR/aux-var/0002.wild}}
+xyz: ${lookup{xyz}wildlsearch{DIR/aux-var/0002.wild}}
+Xyz: ${lookup{Xyz}wildlsearch{DIR/aux-var/0002.wild}}
+Zyz: ${lookup{Zyz}wildlsearch{DIR/aux-var/0002.wild}}
+a b: ${lookup{a b}wildlsearch{DIR/aux-var/0002.wild}}
+a b: ${lookup{a b}wildlsearch{DIR/aux-var/0002.wild}}
+a:b: ${lookup{a:b}wildlsearch{DIR/aux-var/0002.wild}}
+a.b: ${lookup{a.b}wildlsearch{DIR/aux-var/0002.wild}}
+a..b: ${lookup{a..b}wildlsearch{DIR/aux-var/0002.wild}}
+a9b: ${lookup{a9b}wildlsearch{DIR/aux-var/0002.wild}}
+a99b: ${lookup{a99b}wildlsearch{DIR/aux-var/0002.wild}}
+
+# Should give the same results as above because expansion does nothing
+
+abc: ${lookup{abc}nwildlsearch{DIR/aux-var/0002.wild}}
+a.b.c: ${lookup{a.b.c}nwildlsearch{DIR/aux-var/0002.wild}}
+ab.c: ${lookup{ab.c}nwildlsearch{DIR/aux-var/0002.wild}}
+xyz: ${lookup{xyz}nwildlsearch{DIR/aux-var/0002.wild}}
+Xyz: ${lookup{Xyz}nwildlsearch{DIR/aux-var/0002.wild}}
+Zyz: ${lookup{Zyz}nwildlsearch{DIR/aux-var/0002.wild}}
+a b: ${lookup{a b}nwildlsearch{DIR/aux-var/0002.wild}}
+a b: ${lookup{a b}nwildlsearch{DIR/aux-var/0002.wild}}
+a:b: ${lookup{a:b}nwildlsearch{DIR/aux-var/0002.wild}}
+
+# Should fail because of no expansion
+
+a.b: ${lookup{a.b}nwildlsearch{DIR/aux-var/0002.wild}{$value}{NO}}
+a..b: ${lookup{a..b}nwildlsearch{DIR/aux-var/0002.wild}{$value}{NO}}
+a9b: ${lookup{a9b}nwildlsearch{DIR/aux-var/0002.wild}{$value}{NO}}
+a99b: ${lookup{a99b}nwildlsearch{DIR/aux-var/0002.wild}{$value}{NO}}
+
+# But these should succeed
+
+a\\:b: ${lookup{a\\:b}nwildlsearch{DIR/aux-var/0002.wild}}
+a\\:Xb: ${lookup{a\\:Xb}nwildlsearch{DIR/aux-var/0002.wild}}
+
+# IP address (CIDR) lookups
+
+1.2.3.4: ${lookup{1.2.3.4}iplsearch{DIR/aux-fixed/0002.iplsearch}}
+1.2.3.5: ${lookup{1.2.3.5}iplsearch{DIR/aux-fixed/0002.iplsearch}}
+1.2.3.5: ${lookup{1.2.3.5}iplsearch*{DIR/aux-fixed/0002.iplsearch}}
+abcd::cdab: ${lookup{abcd::cdab}iplsearch{DIR/aux-fixed/0002.iplsearch}}
+192.168.1.2: ${lookup{192.168.1.2}iplsearch{DIR/aux-fixed/0002.iplsearch}}
+192.168.5.6: ${lookup{192.168.5.6}iplsearch{DIR/aux-fixed/0002.iplsearch}}
+abcd:abcd:: ${lookup{abcd:abcd::}iplsearch{DIR/aux-fixed/0002.iplsearch}}
+abcd:abcd:1:: ${lookup{abcd:abcd:1::}iplsearch{DIR/aux-fixed/0002.iplsearch}}
+abcd:abcd::3 ${lookup{abcd:abcd::3}iplsearch{DIR/aux-fixed/0002.iplsearch}}
+rhubarb ${lookup{rhubarb}iplsearch{DIR/aux-fixed/0002.iplsearch}}
+
+
+# Nested Lookups - style 1
+
+${lookup{${lookup{key1}lsearch{DIR/aux-fixed/0002.rec}{$value}{key1f}}}lsearch{DIR/aux-fixed/0002.rec}{$value}fail}
+${lookup{${lookup{key3}lsearch{DIR/aux-fixed/0002.rec}{$value}{key1f}}}lsearch{DIR/aux-fixed/0002.rec}{$value}fail}
+
+# Nested Lookups - style 2
+
+${lookup{key1}lsearch{DIR/aux-fixed/0002.rec}{${lookup{$value}lsearch{DIR/aux-fixed/0002.rec}{$value}{failed for $value}}}{failed for key1}}
+${lookup{key3}lsearch{DIR/aux-fixed/0002.rec}{${lookup{$value}lsearch{DIR/aux-fixed/0002.rec}{$value}{failed for $value}}}{failed for key1}}
+
+# Other nesting tests
+
+${lookup{one}lsearch{DIR/aux-fixed/0002.alias1}{$value${lookup{one}lsearch{DIR/aux-fixed/0002.alias2}{,$value}}}{${lookup{one}lsearch{DIR/aux-fixed/0002.alias2}{$value}fail}}}
+${lookup{two}lsearch{DIR/aux-fixed/0002.alias1}{$value${lookup{two}lsearch{DIR/aux-fixed/0002.alias2}{,$value}}}{${lookup{two}lsearch{DIR/aux-fixed/0002.alias2}{$value}fail}}}
+${lookup{both}lsearch{DIR/aux-fixed/0002.alias1}{$value${lookup{both}lsearch{DIR/aux-fixed/0002.alias2}{,$value}}}{${lookup{both}lsearch{DIR/aux-fixed/0002.alias2}{$value}fail}}}
+${lookup{neither}lsearch{DIR/aux-fixed/0002.alias1}{$value${lookup{neither}lsearch{DIR/aux-fixed/0002.alias2}{,$value}}}{${lookup{neither}lsearch{DIR/aux-fixed/0002.alias2}{$value}fail}}}
+
+# Lookup quotes for standardly expected lookups
+
+lsearch ${quote_lsearch: !@#\$%^&*()_-+=|\\~`1234567890\{[\}]qwertyuiop:;"'asdfghjkl<,>.?/zxcvbnm}
+xxx ${quote_xxx: !@#\$%^&*()_-+=|\\~`1234567890\{[\}]qwertyuiop:;"'asdfghjkl<,>.?/zxcvbnm}
+
+# Extract
+
+${extract{B}{A=1 B=2 C=3}}
+${extract{ B }{A=1 B=2 C=3}{$value}{NOT FOUND}}
+${extract{2}{:}{1:2:3}}
+${extract{ 2 }{:}{1:2:3}{$value}{NOT FOUND}}
+Empty:<${extract{D}{A=1 B=2 C=3}}>
+Empty:<${extract{4}{:}{1:2:3}}>
+${extract{C}{A=1 B=2 C=3}{<$value>}}
+${extract{3}{:}{1:2:3}{<$value>}}
+Empty:<${extract{Z}{A=1 B=2 C=3}{<$value>}}>
+Empty:<${extract{4}{:}{1:2:3}{<$value>}}>
+${extract{Z}{A=1 B=2 C=3}{<$value>}{no Z}}
+${extract{4}{:}{1:2:3}{<$value>}{no 4}}
+${extract{Z}{A=1 B=2 C=3}{<$value>}fail}
+${extract{4}{:}{1:2:3}{<$value>}fail}
+${extract{K4}{${sg{1=A 4=D 3=C}{(\\d+)=}{K\$1=}}}}
+${extract{0}{:}{a:b:c:d:e}{$value}{FAIL}}
+${extract{1}{:}{a:b:c:d:e}{$value}{FAIL}}
+${extract{-1}{:}{a:b:c:d:e}{$value}{FAIL}}
+${extract{-5}{:}{a:b:c:d:e}{$value}{FAIL}}
+${extract{-6}{:}{a:b:c:d:e}{$value}{FAIL}}
+${extract{-3}{:,}{a,,b::c}}
+${extract{2}{:,}{a,,b::c}}
+${extract{3}{:,}{a,,b::c}}
+${extract{a-b}{X = "one two" a-b "three four" 5=99}}
+${extract{}{X=3}}
+${extract{ }{X=3}}
+${extract{ 2 }{ }{a b c}}
+
+# Translation
+
+abcdea aaa xyz ${tr{abcdea}{aaa}{xyz}}
+abcdea a z ${tr{abcdea}{a}{z}}
+abcdea a ${tr{abcdea}{a}{}}
+abcdea abc z ${tr{abcdea}{abc}{z}}
+
+# RFC 2047
+
+abcd ${rfc2047:abcd}
+<:abcd:> ${rfc2047:<:abcd:>}
+<:ab cd:> ${rfc2047:<:ab cd:>}
+Long: ${rfc2047: here we go: a string that is going to be encoded: it will go over the 75-char limit}
+Long: ${rfc2047: here we go: a string that is going to be encoded: it will go over the 75-char limit by a long way; in fact this one will go over the 150 character limit}
+
+
+# UTF-8
+
+abcd ${from_utf8:abcd}
+aÀÿd ${from_utf8:aÃ\80ÿd}
+toobig ${from_utf8:aĀd}
+
+# Substitution
+
+\${sg{abcdefabcdef}{abc}{xyz}} =${sg{abcdefabcdef}{abc}{xyz}}
+\${sg{ab:xy::z}{:}{::}} =${sg{ab:xy::z}{:}{::}}
+\${sg{abcdefabcdef}{(..)[^c]}{>\$1<}} =${sg{abcdefabcdef}{(..)[^c]}{>$1<}}
+\${sg{abcdefabcdef}{(..)[^c]}{>\\\$1<}} =${sg{abcdefabcdef}{(..)[^c]}{>\$1<}}
+\${sg{abcdefabcdef}{(..)[^c]}{>\\N\$1\\N<}}=${sg{abcdefabcdef}{(..)[^c]}{>\N$1\N<}}
+\${sg{abbab}{a*}{+}} =${sg{abbab}{a*}{+}}
+
+# File insertion
+
+${readfile}
+${readfile{DIR/aux-fixed/0002.readfile}}
+${readfile{DIR/aux-fixed/0002.readfile}{}}
+${readfile{DIR/aux-fixed/0002.readfile}{:}}
+${readfile{DIR/aux-fixed/0002.readfile}{ - }}
+${readfile{/non/exist/file}}
+${if exists{/non/exist/file}{${readfile{/non/exist/file}}}{non-exist}}
+>${readfile{DIR/aux-fixed/0002.readfile}{!}}\
+ <
+
+# Calling a command
+
+${run{DIR/aux-fixed/0002.runfile 0}}
+RC=$runrc
+${run{DIR/aux-fixed/0002.runfile 0}{1}{2}}
+RC=$runrc
+${run{DIR/aux-fixed/0002.runfile 0}{$value}{2}}
+RC=$runrc
+${run{DIR/aux-fixed/0002.runfile 1}{$value}{2}}
+RC=$runrc
+${run{DIR/aux-fixed/0002.runfile 1}{$value}{$value}}
+RC=$runrc
+${run{DIR/test-nonexist}{Y}{N}}
+RC=$runrc
+>>${run{DIR/bin/iefbr14}}<<
+RC=$runrc
+${if eq{1}{2}{${run{/non/exist}}}{1!=2}}
+RC=$runrc
+
+# PRVS
+
+${prvs{userx@test.ex}{secret}}
+${prvs{userx@test.ex}{secret}{1}}
+${prvs{userx@test.ex}{secret}{8}}
+
+# Syntax errors
+
+${prvs{userx@test.ex}{secret}{12}}
+${prvs{userx@test.ex}{secret}{rhubarb}}
+${prvs{userx@test.ex}{secret}{}}
+
+# Correct checks; can't put explicit addresses in the tests, because they
+# will change over time.
+
+${prvscheck{${prvs{userx@test.ex}{secret}}}{secret}}
+result=$prvscheck_result
+
+${prvscheck{${prvs{userx@test.ex}{secret}{1}}}{secret}\
+{>$prvscheck_result< >$prvscheck_address< >$prvscheck_keynum<}}
+result=$prvscheck_result
+
+${prvscheck{${prvs{userx@test.ex}{secret}{8}}}{secret}{}}
+result=$prvscheck_result
+
+# Incorrect secret
+
+${prvscheck{${prvs{userx@test.ex}{secret}}}{socrot}}
+result=$prvscheck_result
+
+${prvscheck{${prvs{userx@test.ex}{secret}}}{socrot}{$prvscheck_keynum}}
+result=$prvscheck_result
+
+# Non-prvs address
+
+>>${prvscheck{userx@test.ex}{secret}}<<
+result=$prvscheck_result
+
+# Syntax errors
+
+${tod_log
+${tod_log+6
+${expand:abcd
+${expand:abcd${tod_log}
+${hmac{xxx}{a}{b}}
+${if and {xyz}{a}{b}}
+${if and {{xya}}{a}{b}}
+${if and {{${lookup{x}lsearch{/a/b}}}}{a}{b}}
+${if eq {$h_xyz}{1}{y}{n}}
+${if or {eq {}{}{yes}{no}}
+${if or {{eq {}{}{yes}{no}}
+${if or {{eq {}{}}{yes}{no}}
+${substr_1_:12345}
+${substr__3:12345}
+
+# Miscellaneous (for bug fixes, etc)
+
+${if ={1}{1} {true}{${if ={1}{1} {true}{${if ={1}{1}{true}fail}}}}}
+
+****
+# Test "escape" with print_topbitchars
+exim -be -DPTBC=print_topbitchars
+escape: ${escape:B7·F2ò}
+****
+# Checkout expansion debugging
+exim -d-all+expand -be
+primary_hostname: $primary_hostname
+match: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+match: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+match_address: ${if match_address{a.b.c}{a.b.c}{yes}{no}}
+****
+# Sender host name and address etc, all unset
+exim -be
+-oMa sender_host_address = $sender_host_address
+ sender_host_port = $sender_host_port
+-oMaa sender_host_authenticated = $sender_host_authenticated
+-oMai authenticated_id = $authenticated_id
+-oMas authenticated_sender = $authenticated_sender
+-oMi interface_address = $interface_address
+ interface_port = $interface_port
+-oMr received_protocol = $received_protocol
+-oMs sender_host_name = $sender_host_name
+-oMt sender_ident = $sender_ident
+****
+# Sender host name and address etc, all set except host name.
+exim -d-all+expand -be -oMa V4NET.0.0.1.1234 -oMaa AAA -oMai philip -oMas xx@yy.zz -oMi 1.1.1.1.99 -oMr special -oMt me
+-oMa sender_host_address = $sender_host_address
+ sender_host_port = $sender_host_port
+-oMaa sender_host_authenticated = $sender_host_authenticated
+-oMai authenticated_id = $authenticated_id
+-oMas authenticated_sender = $authenticated_sender
+-oMi interface_address = $interface_address
+ interface_port = $interface_port
+-oMr received_protocol = $received_protocol
+-oMt sender_ident = $sender_ident
+****
+# Sender host name explicitly set
+exim -be -oMa V4NET.0.0.1.1234 -oMs my.host.name
+-oMa sender_host_address = $sender_host_address
+ sender_host_port = $sender_host_port
+-oMs sender_host_name = $sender_host_name
+****
+# Sender host name lookup fails (V4NET.11.12.13 is not reverse registered)
+exim -be -oMa V4NET.11.12.13
+-oMs sender_host_name = $sender_host_name
+ host_lookup_failed = $host_lookup_failed
+****
+# Sender host name and protocol set by Sendmail-compatible option
+exim -be -pspecial:host.name
+-p received_protocol = $received_protocol
+-p sender_host_name = $sender_host_name
+****
+# Sender host name and address etc, all set except host name,
+# which should therefore be looked up from the address, but not if
+# we are skipping. The debug output for this test will show when
+# the lookup occurs.
+exim -d-all+host_lookup+expand -be -oMa V4NET.0.0.1.1234 -oMaa AAA -oMai philip -oMas xx@yy.zz -oMi 1.1.1.1.99 -oMr special -oMt me
+-oMa sender_host_address = $sender_host_address
+ sender_host_port = $sender_host_port
+-oMaa sender_host_authenticated = $sender_host_authenticated
+-oMai authenticated_id = $authenticated_id
+-oMas authenticated_sender = $authenticated_sender
+-oMi interface_address = $interface_address
+ interface_port = $interface_port
+-oMr received_protocol = $received_protocol
+----> No lookup yet: ${if eq{black}{white}{$sender_host_name}{No}}
+-oMs sender_host_name = $sender_host_name
+-oMt sender_ident = $sender_ident
+****
+# Test no auto host name lookup for query-style lookups
+exim -d -bh V4NET.0.0.1
+****
+exim -d -bh V4NET.0.0.2
+****
+# Test $reply_address
+exim -bh V4NET.0.0.0
+mail from:<>
+rcpt to:<some@body>
+data
+.
+mail from:<>
+rcpt to:<some@body>
+data
+From: a@b
+.
+mail from:<>
+rcpt to:<some@body>
+data
+From: a@b
+Reply-to: c@d
+.
+mail from:<>
+rcpt to:<some@body>
+data
+Reply-to:
+.
+mail from:<>
+rcpt to:<some@body>
+data
+Reply-to:
+From: x@y
+.
+quit
+****
+# Check RFC 2047 decoding with (default) length check
+exim -bh V4NET.0.0.0
+mail from:<>
+rcpt to:<some@body>
+data
+Subject: =?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_it_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fact_this_one_will_go_over_the_150_character_limit?=
+.
+quit
+****
+# Check RFC 2047 decoding with length check disabled
+exim -DLENCHECK=check_rfc2047_length=false -bh V4NET.0.0.0
+mail from:<>
+rcpt to:<some@body>
+data
+Subject: =?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_it_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fact_this_one_will_go_over_the_150_character_limit?=
+.
+quit
+****
--- /dev/null
+# Caseless address blocking
+exim -bh 1.1.1.1
+mail from:<a@b.c>
+rcpt to:<x@test.ex>
+rset
+mail from:<a@B.C>
+rcpt to:<x@test.ex>
+rset
+mail from:<A@b.c>
+rcpt to:<x@test.ex>
+rset
+mail from:<A@B.C>
+rcpt to:<x@test.ex>
+rset
+mail from:<x@y.z>
+rcpt to:<x@test.ex>
+rset
+mail from:<x@Y.Z>
+rcpt to:<x@test.ex>
+rset
+mail from:<X@y.z>
+rcpt to:<x@test.ex>
+rset
+mail from:<X@Y.Z>
+rcpt to:<x@test.ex>
+rset
+mail from:<ax@e.f>
+rcpt to:<x@test.ex>
+rset
+mail from:<ay@g.h>
+rcpt to:<x@test.ex>
+rset
+mail from:<bX@E.F>
+rcpt to:<x@test.ex>
+rset
+mail from:<bY@G.H>
+rcpt to:<x@test.ex>
+rset
+mail from:<1@e.f>
+rcpt to:<x@test.ex>
+rset
+mail from:<bz@e.f>
+rcpt to:<x@test.ex>
+rset
+mail from:<q@aa.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<q@AA.COM>
+rcpt to:<x@test.ex>
+rset
+mail from:<Q@bb.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<Q@BB.Com>
+rcpt to:<x@test.ex>
+rset
+mail from:<cc@dd.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<CC@DD.COM>
+rcpt to:<x@test.ex>
+rset
+mail from:<q@Dd.Com>
+rcpt to:<x@test.ex>
+rset
+mail from:<q@nn.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<Q@NN.COM>
+rcpt to:<x@test.ex>
+rset
+mail from:<q@MM.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<Pp@Qq.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<abcd@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<ABCD@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<ax@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<bX@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<Ay@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<BY@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<blocked@xy.zz>
+rcpt to:<x@test.ex>
+rset
+mail from:<BLOCKED@zz.xy>
+rcpt to:<x@test.ex>
+rset
--- /dev/null
+# Caseful address blocking
+exim -bh 1.1.1.1
+mail from:<a@b.c>
+rcpt to:<x@test.ex>
+rset
+mail from:<a@B.C>
+rcpt to:<x@test.ex>
+rset
+mail from:<A@b.c>
+rcpt to:<x@test.ex>
+rset
+mail from:<A@B.C>
+rcpt to:<x@test.ex>
+rset
+mail from:<x@y.z>
+rcpt to:<x@test.ex>
+rset
+mail from:<x@Y.Z>
+rcpt to:<x@test.ex>
+rset
+mail from:<X@y.z>
+rcpt to:<x@test.ex>
+rset
+mail from:<X@Y.Z>
+rcpt to:<x@test.ex>
+rset
+mail from:<ax@e.f>
+rcpt to:<x@test.ex>
+rset
+mail from:<ay@g.h>
+rcpt to:<x@test.ex>
+rset
+mail from:<bX@E.F>
+rcpt to:<x@test.ex>
+rset
+mail from:<bY@G.H>
+rcpt to:<x@test.ex>
+rset
+mail from:<1@e.f>
+rcpt to:<x@test.ex>
+rset
+mail from:<bz@e.f>
+rcpt to:<x@test.ex>
+rset
+mail from:<q@aa.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<q@AA.COM>
+rcpt to:<x@test.ex>
+rset
+mail from:<Q@bb.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<Q@BB.Com>
+rcpt to:<x@test.ex>
+rset
+mail from:<cc@dd.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<CC@DD.COM>
+rcpt to:<x@test.ex>
+rset
+mail from:<q@Dd.Com>
+rcpt to:<x@test.ex>
+rset
+mail from:<q@nn.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<Q@NN.COM>
+rcpt to:<x@test.ex>
+rset
+mail from:<q@MM.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<q@mm.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<Pp@Qq.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<abcd@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<ABCD@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<AbCd@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<ax@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<bX@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<Ay@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<BY@aa.bb>
+rcpt to:<x@test.ex>
+rset
+mail from:<blocked@xy.zz>
+rcpt to:<x@test.ex>
+rset
+mail from:<BLOCKED@zz.xy>
+rcpt to:<x@test.ex>
+rset
+mail from:<BlOcKeD@zz.xy>
+rcpt to:<x@test.ex>
--- /dev/null
+# -bs to simple local delivery
+exim -bs -odi
+mail from:someone@some.domain
+rcpt to:CALLER@HOSTNAME
+data
+This is a test message.
+It has three lines.
+This is the last line.
+.
+quit
+****
+exim -bs -odi
+mail from:someone@some.domain
+rcpt to:CALLER@HOSTNAME
+data
+Subject: second
+
+This is a second test message.
+.
+quit
+****
+exim_exim -bs -odq
+mail from:someone@some.domain
+rcpt to:CALLER@HOSTNAME
+data
+Subject: third
+Reply-to: some@body
+
+This is a third test message.
+.
+quit
+****
+exim -q
+****
--- /dev/null
+# -bS to several local deliveries
+exim -bS -odi
+mail from:someone@some.where
+rcpt to:blackhole@HOSTNAME
+data
+from: me
+To: blackhole
+
+This is some text
+.
+mail from:CALLER@HOSTNAME
+rcpt to:devnull@HOSTNAME
+data
+from: me
+to: devnull
+
+More text
+.
+MAIL From:<someone@some.where>
+rCpT TO:<CALLER@HOSTNAME>
+rcpt to:blackhole@HOSTNAME
+DATA
+From:<someone@some.where>
+To: Recipients not given:;
+
+Yet more text.
+.
+quit
--- /dev/null
+# -bS syntax error (1st message)
+2
+exim -bS -odi
+mail from:someone@some.where<
+rcpt to:blackhole@HOSTNAME
+data
+from: me
+To: blackhole
+
+This is some text
+.
+quit
--- /dev/null
+# -bS syntax error (2nd message)
+1
+exim -bS -odi
+mail from:someone@some.where
+rcpt to:CALLER@HOSTNAME
+data
+from: someone@some.where
+To: CALLER@HOSTNAME
+Subject: testing
+Message-id: abcd%rxyz@p.q.r
+
+Here is testing data
+..that line started with a dot
+.
+mail from:someone@some.where<
+rcpt to:blackhole@HOSTNAME
+data
+from: me
+To: blackhole
+
+This is some text
+.
+quit
--- /dev/null
+# -bS syntax error on RCPT
+1
+exim -bS -odi
+mail from:someone@some.where
+rcpt to:CALLER@HOSTNAME
+data
+from: someone@some.where
+To: CALLER@HOSTNAME
+Subject: testing
+
+Here is testing data
+..that line started with a dot
+.
+mail from:someone@some.where
+rcpt to:<blackhole@HOSTNAME
+data
+from: me
+To: blackhole
+
+This is some text
+.
+quit
--- /dev/null
+# -bS Unexpected EOF in data
+1
+exim -bS -odi
+mail from:someone@some.where
+rcpt to:CALLER@HOSTNAME
+data
+from: someone@some.where
+To: CALLER@HOSTNAME
+Subject: testing
+
+Here is testing data
+..that line started with a dot
+.
+mail from:someone@some.where
+rcpt to:blackhole@HOSTNAME
+data
+from: me
+To: blackhole
+
+Some data, but no .
--- /dev/null
+# -bS Unexpected EOF in headers
+1
+exim -bS -odi
+mail from:someone@some.where
+rcpt to:CALLER@HOSTNAME
+data
+from: someone@some.where
+To: CALLER@HOSTNAME
+Subject: testing
+
+Here is testing data
+..that line started with a dot
+.
+mail from:someone@some.where
+rcpt to:blackhole@HOSTNAME
+data
+from: me
--- /dev/null
+# -bS Use of HELO/RSET
+exim -bS -odi
+HELO some.domain
+mail from:someone@some.where
+rcpt to:CALLER@HOSTNAME
+RSET
+mail from:someone@some.where
+rcpt to:blackhole@HOSTNAME
+data
+from: me
+to: the.void
+
+This data will get slung...
+.
--- /dev/null
+# Data after quoted string
+no_stdout_check
+1
+exim -bV
+****
+
--- /dev/null
+# Rewriting
+exim -brw userx@myhost.test.ex
+****
+exim -brw abcd@question
+****
+exim -brw pqr@quiggly
+****
+exim -brw nopqr@quince
+****
+exim -odi userx
+From: abcd@question
+To: userx, xpqr@query.query
+****
+exim -odq hhhh@h.h.h.h
+****
+exim -brw root@box1.plc.example
+****
+exim -brw jules@box1.plc.example
+****
+exim -brw jules@box2.plc.example
+****
+exim -brw jules@box3.plc.example
+****
+exim -odi -f jules@box1.plc.example userx
+From: jules@box1.plc.example
+To: userx, jules@box1.plc.example,
+ jules@box2.plc.example,
+ jules@box3.plc.example
+Reply-to: jules@box3.plc.example
+****
+exim -odi -bs -oMa 10.0.0.2
+mail from:<jules@box3.plc.example>
+rcpt to:<userx@test.ex>
+quit
+****
+exim -brw abc@X.one.two
+****
+exim -brw '"abc"@X.one.two'
+****
+exim -brw '"abc@xyz"@X.one.two'
+****
+no_msglog_check
--- /dev/null
+# local part prefix
+need_ipv4
+#
+exim -odi page+userx
+Some message text.
+****
+exim -odi page+ux
+Some more message text.
+****
+exim -odi B+userx@Test.Ex
+Text.
+****
+server PORT_S
+220 Server ready
+EHLO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+300 go ahead
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi S+userx@Test.Ex
+More text.
+****
+exim -odi userx-B@Test.Ex X+userx-B@Test.Ex
+****
+server PORT_S
+220 Server ready
+EHLO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+300 go ahead
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi Userx-S@Test.Ex
+More text.
+****
--- /dev/null
+# local part suffix
+exim -odi userx+page
+Some message text.
--- /dev/null
+# ETRN (prohibited host)
+exim -bh 1.1.1.1
+etrn some.random.domain
+quit
+****
+exim -bh 10.9.8.7
+etrn some.domain
+quit
+****
+exim -bh 10.9.8.8
+etrn some.domain
+quit
+****
--- /dev/null
+# ETRN (permitted host)
+exim -bh 127.0.0.1
+etrn #some.random.domain
+quit
--- /dev/null
+# SMTP syntax errors logging
+exim -bh 10.10.10.10
+helo !@#$%^&*(
+debug
+rhubarb
+mail
+quit
+****
+exim -bs
+helo !@#$%^&*(
+debug
+rhubarb
+mail
+quit
+****
+exim -bs
+etrn abc
+ehlo a.b.c
+rcpt to:<a@b>
+mail from:<x@y>
+data
+rcpt to:<a@b>
+rcpt to:<a@b>
+rcpt to:<a@b>
+rcpt to:<a@b>
+rcpt to:<a@b>
+rcpt to:<a@b>
+rcpt to:<a@b>
+etrn #abc
+rset
+mail from:
+rset
+mail from:<x@y>
+mail from:<x@y>
+rcpt to:
+rset
+quit
+****
--- /dev/null
+# -bh and megahomed hosts
+#
+# Note that we use an explicit address in the 10.250.0.0/16 network, because
+# that is what is used by the testing code in Exim when it generates 2048 IP
+# addresses for the absurdly multi-homed host.
+#
+exim -bh 10.250.104.7
+quit
+****
--- /dev/null
+# Extra ACLs: not-SMTP/connect/HELO/MAIL
+1
+exim -odi -f userx@test1 userx
+Test message 1.
+.
+****
+exim -odi -f ok@test1 userx
+Test message 2.
+.
+****
+1
+exim -odi -f ok@test2 userx
+Test message 3.
+.
+****
+exim -odi -f ok@test3 userx
+Test message 4.
+.
+****
+1
+exim -odi -f ok@test4 userx
+Test message 5.
+.
+****
+exim -bs -oMa 10.9.8.7
+****
+exim -d-all+acl+lists -bs -oMa 10.9.8.8
+mail from:<bad@test1>
+mail from:<ok@test1>
+rcpt to:<x@y>
+rcpt to:<a@b>
+quit
+****
+exim -bs -oMa 10.9.8.9
+****
+exim -bs
+quit
+****
+exim -bs -oMa 10.9.8.10
+helo x.y.z
+quit
+****
+exim -d-all+acl+lists -odi -bs -oMa 10.9.8.8
+mail from:<ok@test3>
+rcpt to:<x@y>
+data
+Some message
+.
+quit
+****
--- /dev/null
+# Extra ACLs: freeze/defer/drop/queue/delay/$host_data
+exim -d -bh V4NET.9.8.7
+mail from:<x@y>
+rcpt to:<warn_empty@test.ex>
+data
+Testing
+.
+quit
+****
+exim -d -bh V4NET.9.8.7
+mail from:<x@y>
+rcpt to:<warn_log@test.ex>
+data
+Testing
+.
+quit
+****
+exim -d -bh V4NET.9.8.7
+mail from:<x@y>
+rcpt to:<warn_user@test.ex>
+data
+Testing
+.
+quit
+****
+exim -bh V4NET.9.8.7
+mail from:<x@y>
+rcpt to:<defer@y>
+rcpt to:<accept@y>
+rcpt to:<drop@y>
+rcpt to:<rhubarb@y>
+quit
+****
+exim -bh V4NET.9.8.7
+mail from:<>
+rcpt to:<defer_senders@y>
+quit
+****
+exim -bh V4NET.9.8.7
+mail from:<x@y>
+rcpt to:<delay_accept@y>
+rcpt to:<delay_warn@y>
+quit
+****
+exim -bh V4NET.9.8.7
+mail from:<x@y>
+rcpt to:<host_check@y>
+rcpt to:<host_check@y>
+rcpt to:<host_check2@y>
+rcpt to:<host_check2@y>
+quit
+****
+exim -bs -N -odi
+mail from:<x@y>
+rcpt to:<accept@y>
+rcpt to:<freeze@y>
+data
+Testing
+.
+mail from:<x@y>
+rcpt to:<accept@y>
+data
+Testing 2
+.
+mail from:<x@y>
+rcpt to:<queue_only@y>
+rcpt to:<accept@y>
+data
+Testing 3
+.
+mail from:<x@y>
+rcpt to:<accept@y>
+data
+Testing 4
+.
+quit
+****
+exim -bh V4NET.9.8.7
+mail from:<x@y>
+rcpt to:<nested_drop@y>
+rcpt to:<rhubarb@y>
+quit
+****
+exim -bh V4NET.9.8.7
+mail from:<x@y>
+rcpt to:<nested_drop_require@y>
+rcpt to:<rhubarb@y>
+quit
+****
+exim -bp
+****
+exim -DSERVER=server -odq -bd -oX PORT_D
+****
+client -t5 127.0.0.1 PORT_D
+??? 220
+mail from:<x@y>
+??? 250
+rcpt to:<accept@y>
+??? 250
+rcpt to:<freeze@y>
+??? 250
+data
+??? 354
+Testing
+.
+??? 250
+mail from:<x@y>
+??? 250
+rcpt to:<accept@y>
+??? 250
+data
+??? 354
+Testing 2
+.
+??? 250
+mail from:<x@y>
+??? 250
+rcpt to:<queue_only@y>
+??? 250
+rcpt to:<accept@y>
+??? 250
+data
+??? 354
+Testing 3
+.
+??? 250
+mail from:<x@y>
+??? 250
+rcpt to:<accept@y>
+??? 250
+data
+??? 354
+Testing 4
+.
+??? 250
+mail from:<x@y>
+??? 250
+rcpt to:<delay_accept@y>
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -bp
+****
+no_msglog_check
--- /dev/null
+# ACL basic tests
+exim -bh 1.2.3.4
+mail from:<x@y>
+rcpt to:<postmaster@test.ex>
+rcpt to:<z@z>
+rcpt to:<x@test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<r@relay.test.ex>
+rcpt to:<x@deny.test.ex>
+rcpt to:<x@refuse.test.ex>
+rcpt to:<x@nopass>
+rcpt to:<x@wontpass>
+quit
+****
+exim -bh 5.6.7.8
+mail from:<x@y>
+rcpt to:<x@y>
+rcpt to:<x@test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<spqr@test.ex>
+quit
+****
+exim -bh 9.9.9.9
+mail from:<x@y>
+rcpt to:<x@y>
+rcpt to:<a@b>
+quit
+****
+exim -bh 9.9.9.8
+mail from:<x@y>
+rcpt to:<x@y>
+rcpt to:<a@b>
+quit
+****
+exim -bh 9.9.9.255
+mail from:<x@y>
+rcpt to:<x@y>
+rcpt to:<a@b>
+quit
+****
+exim -bh 5.6.8.1
+mail from:<x@y>
+rcpt to:<x@y>
+rcpt to:<y@x>
+rset
+mail from:<user1@domain1>
+rcpt to:<x@y>
+rset
+mail from:<user2@domain1>
+rcpt to:<x@y>
+rset
+mail from:<user1@domain2>
+rcpt to:<x@y>
+rset
+mail from:<ok@ok.ok>
+rcpt to:<x@y>
+rcpt to:<y@x>
+rset
+quit
+****
+exim -bh 5.6.11.1
+mail from:<x@y>
+rcpt to:<x@y>
+rcpt to:<x2@y>
+rcpt to:<y2@y>
+quit
+****
+exim -bh 5.6.12.1
+mail from:<x@y>
+rcpt to:<x@ok>
+rcpt to:<x@y>
+quit
+****
+exim -bh 5.6.12.2
+mail from:<x@y>
+rcpt to:<x@ok>
+rcpt to:<x@y>
+quit
+****
+exim -bh 8.8.8.8
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
+exim -bh 5.6.13.1
+mail from:<x@y>
+rcpt to:<x@y>
+rcpt to:<x1@y>
+rcpt to:<x2@y>
+quit
+****
+exim -bh V4NET.11.12.13
+mail from:<x@y>
+rcpt to:<x@y>
+rcpt to:<x1@y>
+quit
+****
+exim -bh V4NET.11.12.12
+mail from:<x@y>
+rcpt to:<x@y>
+rcpt to:<x1@y>
+quit
+****
+exim -bh 20.20.20.20
+mail from:<x@y>
+rcpt to:<x1@y>
+rcpt to:<x2@y>
+quit
+****
+exim -bh 20.20.20.20
+mail from:<userx@y>
+rcpt to:<x1@y>
+rcpt to:<userx@y>
+quit
+****
+exim -bh 21.21.21.21
+mail from:<userx@y>
+rcpt to:<x1@y>
+rcpt to:<userx@y>
+rcpt to:<fail@y>
+rset
+mail from:<x@y>
+rcpt to:<x1@y>
+rcpt to:<x2@y>
+rset
+mail from:<fail@y>
+rcpt to:<x@y>
+quit
+****
+exim -bh 22.22.22.22
+mail from:<userx@y>
+rcpt to:<userx@y>
+rcpt to:<x@y>
+quit
+****
+exim -bh 23.23.23.0
+mail from:<x@y>
+rcpt to:<userx@y>
+rset
+mail from:<userx@y>
+rcpt to:<userx@y>
+quit
+****
+exim -bh 23.23.23.1
+mail from:<x@y>
+rcpt to:<userx@y>
+quit
+****
+exim -bh 24.24.24.24
+mail from:<x@y>
+rcpt to:<userx@y>
+quit
+****
+exim -bh 25.25.25.25
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
+exim -bh 26.26.26.26
+mail from:<>
+rcpt to:<x@y>
+rcpt to:<y@y>
+rcpt to:<z@y>
+quit
+****
+exim -bh 27.27.27.27
+mail from:<>
+rcpt to:<x@y>
+quit
+****
+exim -bh 28.28.28.28
+mail from:<>
+rcpt to:<x@y>
+rset
+mail from:<a@okdomain>
+rcpt to:<x@y>
+rset
+mail from:<a@baddomain>
+rcpt to:<x@y>
+quit
+****
+exim -bh V4NET.0.0.3
+mail from:<>
+rcpt to:<x@y>
+quit
+****
+exim -bh V4NET.0.0.97
+mail from:<>
+rcpt to:<x@y>
+quit
+****
+exim -bh 29.29.29.29
+mail from:<a@localhost>
+rcpt to:<x@y>
+rset
+mail from:<a@elsewhere>
+rcpt to:<x@y>
+quit
+****
+exim -bh 30.30.30.30
+mail from:<a@ten-1>
+rcpt to:<x@y>
+rset
+mail from:<a@ten-2>
+rcpt to:<x@y>
+rset
+mail from:<a@13.12.11.V4NET.rbl>
+rcpt to:<x@y>
+quit
+****
+exim -bh 31.31.31.31
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
+exim -odi -bs -oMa 32.32.32.32
+mail from:<userx@test.ex>
+rcpt to:<userx-vs@test.ex>
+data
+Test with verify sender.
+.
+quit
+****
+exim -odi -bs -oMa 32.32.32.32
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+Test without verify sender.
+.
+quit
+****
+exim -bh 33.33.33.33
+mail from:<x@y>
+rcpt to:<x1@y>
+rcpt to:<x2@y>
+quit
+****
+# The 1 causes a 1-second delay in the test.again.dns lookup
+exim -bh 44.44.44.1
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
+exim -odi -bs -oMa 55.55.55.55
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+ACL header adding test.
+.
+quit
+****
+exim -odi -bs -oMa 56.56.56.56
+mail from:<userx@test.ex>
+rcpt to:<cond-yes@test.ex>
+data
+.
+mail from:<userx@test.ex>
+rcpt to:<cond-1@test.ex>
+data
+.
+mail from:<userx@test.ex>
+rcpt to:<cond-10@test.ex>
+data
+.
+mail from:<userx@test.ex>
+rcpt to:<cond-true@test.ex>
+data
+.
+mail from:<userx@test.ex>
+rcpt to:<cond-rhubarb@test.ex>
+data
+.
+mail from:<userx@test.ex>
+rcpt to:<cond-@test.ex>
+data
+.
+mail from:<userx@test.ex>
+rcpt to:<cond-no@test.ex>
+data
+.
+mail from:<userx@test.ex>
+rcpt to:<cond-0@test.ex>
+data
+.
+mail from:<userx@test.ex>
+rcpt to:<cond-00@test.ex>
+data
+.
+mail from:<userx@test.ex>
+rcpt to:<cond-false@test.ex>
+data
+.
+quit
+****
+exim -odi -bs -oMa 56.56.57.57
+mail from:<userx@test.ex>
+rcpt to:<cond-yes@test.ex>
+data
+.
+mail from:<userx@test.ex>
+rcpt to:<cond-rhubarb@test.ex>
+quit
+****
+exim -DLOG_SELECTOR=log_selector=-acl_warn_skipped -odi -bs -oMa 56.56.56.56
+mail from:<userx@test.ex>
+rcpt to:<cond-rhubarb@test.ex>
+data
+.
+quit
+****
+exim -odi -bs -oMa 56.56.58.58
+mail from:<rcpttest@test.ex>
+rcpt to:<ok1@test.ex>
+rcpt to:<bad1@test.ex>
+rcpt to:<ok2@test.ex>
+rcpt to:<ok3@test.ex>
+rcpt to:<bad2@test.ex>
+rcpt to:<bad3@test.ex>
+data
+.
+quit
+****
+exim -odi -bs -oMa 56.56.59.59
+mail from:<rcpttest@test.ex>
+rcpt to:<fail@test.ex>
+quit
+****
+exim -odi -bs -oMa V4NET.11.12.13
+mail from:<x@y>
+rcpt to:<x@y>
+rcpt to:<x1@y>
+quit
+****
--- /dev/null
+# ACL test of "standard" configuration
+#
+# Not a relay host, no authentication, sender address fails to verify.
+# accept postmaster@test.ex (postmaster at local domain)
+# deny userx@test.ex (good address in local domain, but sender verify failed)
+# deny x@y (bad address, but sender verify failed)
+# deny x@ten-1.test.ex (good relay address, but sender verify failed)
+# deny x@ten-2.test.ex (good address, but sender verify failed)
+#
+exim -odi -oMa V4NET.0.0.0 -bs
+mail from:<x@y>
+rcpt to:<postmaster@test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<x@y>
+rcpt to:<x@ten-1.test.ex>
+rcpt to:<x@ten-2.test.ex>
+data
+Message 1
+.
+quit
+****
+# Not a relay host, no authentication, sender address does verify.
+# accept postmaster@test.ex (postmaster at local domain)
+# accept userx@test.ex (good address in local domain)
+# deny x@y (bad address)
+# accept x@ten-1.test.ex (good relay address)
+# deny x@ten-2.test.ex (good address, but not relay domain or host)
+exim -odi -oMa V4NET.0.0.0 -bs
+mail from:<userx@test.ex>
+rcpt to:<postmaster@test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<x@y>
+rcpt to:<x@ten-1.test.ex>
+rcpt to:<x@ten-2.test.ex>
+data
+Message 2
+.
+quit
+****
+# Relay host, no authentication, sender address does verify.
+# deny bad@test.ex (bad address in local domain)
+# deny x@y (bad address)
+# accept x@ten-1.test.ex (good relay address)
+# accept x@ten-2.test.ex (good non-relay address, relay host)
+exim -odi -oMa V4NET.255.255.0 -bs
+mail from:<userx@test.ex>
+rcpt to:<bad@test.ex>
+rcpt to:<x@y>
+rcpt to:<x@ten-1.test.ex>
+rcpt to:<x@ten-2.test.ex>
+data
+Message 3
+.
+quit
+****
+# Host on serious black list
+# accept postmaster@test.ex (postmaster at local domain)
+# deny anything else
+exim -odi -oMa V4NET.11.12.13 -bs
+mail from:<userx@test.ex>
+rcpt to:<postmaster@test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<x@ten-1.test.ex>
+data
+Message 4
+.
+quit
+****
+# Host on warning black list
+# accept postmaster@test.ex (postmaster at local domain)
+# deny anything else
+exim -odi -oMa V4NET.11.12.16 -bs
+mail from:<userx@test.ex>
+rcpt to:<postmaster@test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<x@ten-1.test.ex>
+data
+Message 5
+.
+quit
+****
+# Local SMTP - should accept everything
+#
+exim -odi -bs
+mail from:<x@y>
+rcpt to:<postmaster@test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<x@y>
+rcpt to:<x@ten-1.test.ex>
+rcpt to:<x@ten-2.test.ex>
+quit
+****
--- /dev/null
+# ACL with -bs
+exim -odi -bs
+mail from:<x@y>
+rcpt to:<userx@test.ex>
+rcpt to:<x@y>
+rcpt to:<x@ten-1.test.ex>
+rset
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<x@y>
+rcpt to:<x@ten-1.test.ex>
+data
+Message 1
+.
+quit
+****
--- /dev/null
+# ACL checks after DATA
+#
+# Syntax OK, non-null sender => should be accepted
+exim -odq -bs
+mail from:<x@y>
+rcpt to:<x@y>
+data
+Message 1
+.
+quit
+****
+# Syntax error in header => should fail
+exim -odq -bs
+mail from:<x@y>
+rcpt to:<x@y>
+data
+From: @
+
+Message 2
+.
+quit
+****
+# Syntax error in header => should fail even with null sender
+exim -odq -bs
+mail from:<>
+rcpt to:<x@y>
+data
+From: <x@y>, @
+
+Message 3
+.
+quit
+****
+# Null sender, invalid sender in header => fail
+exim -odq -bs
+mail from:<>
+rcpt to:<x@y>
+data
+From: <x@y>
+
+Message 4
+.
+quit
+****
+# Null sender, valid sender in header => accept
+exim -odq -bs
+mail from:<>
+rcpt to:<x@y>
+data
+From: <postmaster@test.ex>
+Reply-to:<x@y>
+
+Message 5
+.
+quit
+****
+# Syntax OK, non-null sender, but bad data => reject
+exim -odq -bs
+mail from:<x@y>
+rcpt to:<x@y>
+data
+Message 6 contains trigger word
+.
+quit
+****
+# Syntax OK, non-null sender, good data
+exim -odi -bs
+mail from:<x@y>
+rcpt to:<userx@test.ex>
+data
+Message 7
+.
+quit
+****
+# -bh test: Syntax error in header => should fail
+exim -bh 10.0.0.0
+mail from:<x@y>
+rcpt to:<x@y>
+data
+From: @
+
+Message 8
+.
+quit
+****
+# -bh test: Syntax OK, non-null sender, but bad data => reject
+exim -bh 10.0.0.0
+mail from:<x@y>
+rcpt to:<x@y>
+data
+Message 9 contains trigger word
+.
+quit
+****
+# Group syntax in reply-to header
+exim -odi -bs
+mail from:<x@y>
+rcpt to:<userx@test.ex>
+data
+to: group name: x@y, p@q;
+reply-to: group name: a@b, c@d;
+
+Message 10
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# Nested ACL (per user) and ACL misconfigurations
+#
+# Invalid sender, should reject both
+exim -bs
+mail from:<x@y>
+rcpt to:<userx@test.ex>
+rcpt to:<postmaster@test.ex>
+quit
+****
+# Valid sender, should only reject userx
+exim -bs
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<postmaster@test.ex>
+quit
+****
+# ACL misconfigurations at RCPT time
+exim -bs
+mail from:<>
+rcpt to:<"deny verify = header_syntax"@test.ex>
+rcpt to:<"deny verify = junk"@test.ex>
+rcpt to:<"deny vorify = junk"@test.ex>
+rcpt to:<"dony verify = junk"@test.ex>
+rcpt to:<"deny !message = abcd"@test.ex>
+quit
+****
+# ACL misconfiguration at DATA time
+exim -bs
+mail from:<>
+rcpt to:<data@test.ex>
+data
+Subject: data1
+.
+quit
+****
+# ACL misconfiguration at DATA time
+exim -bs
+mail from:<>
+rcpt to:<data@test.ex>
+data
+Subject: data2
+.
+quit
+****
+# ACL misconfiguration at DATA time
+exim -bs
+mail from:<>
+rcpt to:<data@test.ex>
+data
+Subject: data3
+.
+quit
+****
--- /dev/null
+# ACL and $message_size
+#
+# SIZE unset - should reject at DATA time
+exim -bs
+mail from:<x@y>
+rcpt to:<userx@test.ex>
+data
+Testing, testing
+.
+quit
+****
+# SIZE set - should reject at RCPT time
+exim -bs
+ehlo Testing
+mail from:<x@y> SIZE=100
+rcpt to:<userx@test.ex>
+quit
+****
--- /dev/null
+# ACL with sender=address
+exim -bs
+mail from:<ok@test.ex>
+rcpt to:<a@b1>
+rset
+mail from:<notok@test.ex>
+rcpt to:<a@b2>
+rset
+mail from:<notok@abc.test.ex>
+rcpt to:<a@b3>
+rset
+mail from:<notok@xyz.test.ex>
+rcpt to:<a@b4>
+quit
+****
--- /dev/null
+# Use of $address_data in ACL
+exim -bs
+mail from:<>
+rcpt to:<ok@test.ex>
+rcpt to:<notok@test.ex>
+quit
+****
--- /dev/null
+# Hold domains
+exim -odi CALLER@one.test.ex
+This is a test message 1.
+****
+exim -odi CALLER@two.test.ex
+This is a test message 2.
+****
+exim -odi CALLER@myhost.ex
+This is a test message 3.
--- /dev/null
+# Bounce message for MX->localhost
+exim -odi userx@mxt1.test.ex
+This is a test message.
+****
--- /dev/null
+# one-time and -qq
+need_ipv4
+#
+exim -odq list@test.ex
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH PLAIN
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -q
+****
+exim -odq list@test.ex
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH PLAIN
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -qq
+****
--- /dev/null
+# smtp_accept_max_nonmail
+1
+exim -bs
+rset
+rset
+rset
+rset
+rset
+****
+1
+exim -bs
+ehlo a.b.c
+ehlo a.b.c
+ehlo a.b.c
+ehlo a.b.c
+ehlo a.b.c
+****
+exim -bs
+rset
+mail from:<x@y>
+rcpt to:<x@y>
+data
+.
+rset
+mail from:<x@y>
+rcpt to:<x@y>
+data
+.
+rset
+mail from:<x@y>
+rcpt to:<x@y>
+data
+.
+rset
+mail from:<x@y>
+rcpt to:<x@y>
+data
+.
+rset
+quit
+****
+1
+exim -bs
+ehlo a.b.c
+mail from:<x@y>
+rcpt to:<x@y>
+data
+.
+ehlo a.b.c
+mail from:<x@y>
+rcpt to:<x@y>
+data
+.
+ehlo a.b.c
+mail from:<x@y>
+rcpt to:<x@y>
+data
+.
+ehlo a.b.c
+ehlo a.b.c
+ehlo a.b.c
+ehlo a.b.c
+ehlo a.b.c
+****
+1
+exim -bs
+noop
+noop
+noop
+noop
+****
+exim -bh 10.0.0.2
+rset
+rset
+rset
+rset
+rset
+****
+exim -bh 10.0.0.1
+rset
+rset
+rset
+rset
+rset
+quit
+****
+no_msglog_check
--- /dev/null
+# control = submission (without any authentication)
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<notsubmit@y>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+.
+??? 250
+mail from:<a@y>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+.
+??? 250
+mail from:<>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+.
+??? 250
+mail from:<notsubmit@y>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+Sender: sender@some.where
+.
+??? 250
+mail from:<a@y>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+Sender: sender@some.where
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+# Wait for delivery process
+millisleep 500
+exim -DSERVER=server -DSUBMISSION_OPTIONS=/domain=a.b.c/sender_retain -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<a@y>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+Sender: sender@some.where
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+# Wait for delivery process
+millisleep 500
+exim -DSERVER=server -DSUBMISSION_OPTIONS=/domain=a.b.c/name=SomeName -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<a@y>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+Sender: sender@some.where
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -Mvh $msg1
+****
+exim -Mvh $msg2
+****
+exim -Mvh $msg3
+****
+exim -Mvh $msg4
+****
+exim -Mvh $msg5
+****
+exim -Mvh $msg6
+****
+exim -Mvh $msg7
+****
+no_msglog_check
--- /dev/null
+# Rewriting because of DNS lookup
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@alias-eximtesthost.test.ex abcd@eximtesthost
+To: userx@alias-eximtesthost.test.ex, abcd@eximtesthost
+
+Test message
+****
+exim -qf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# filter tests
+#
+# Create a file that is accessible only to the Exim user
+sudo rm -f DIR/test-private
+touch DIR/test-private
+sudo chown EXIMUSER:EXIMGROUP DIR/test-private
+sudo chmod 0600 DIR/test-private
+#
+exim -bf DIR/aux-fixed/TESTNUM.f-1 </dev/null
+****
+1
+exim -bf DIR/aux-fixed/TESTNUM.f-2 </dev/null
+****
+exim -bF DIR/aux-fixed/TESTNUM.f-3 </dev/null
+****
+# Not personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 </dev/null
+****
+# Not personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+****
+# Personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: CALLER@test.ex
+****
+# Not personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: X-CALLER@test.ex
+****
+# Personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: CALLER@test.ex
+Subject: north circular road
+****
+# Not personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: userx@test.ex
+Precedence: bulk
+****
+# Not personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: userx@test.ex
+Precedence: list
+****
+# Not personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: userx@test.ex
+Precedence: junk
+****
+# Personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: abcdefgh@bzzzt.fix.no
+Auto-Submitted: no
+****
+# Not personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: userx@test.ex
+Auto-Submitted: auto-replied
+****
+# Not personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: userx@test.ex
+List-Unsubscribe: xxxx
+****
+# Not personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: userx@test.ex
+From: abcd-request@some.domain
+****
+# Not personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: userx@test.ex
+From: owner-abcd@some.domain
+****
+# Not personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: userx@test.ex
+From: The list manager <majordomo@some.domain>
+****
+# Personal
+exim -bf DIR/aux-fixed/TESTNUM.f-4 -f anon@ymous
+To: abc@xyz.com, Philip <CALLER@test.ex>, pqr@xyz.com
+****
+exim -bf DIR/aux-fixed/TESTNUM.f-6 </dev/null
+****
+exim -bf DIR/aux-var/TESTNUM.f-7 </dev/null
+****
+exim -odi userx
+Subject: Test 1
+Remove-this: should get removed
+****
+exim -odi userx abcd usery
+Subject: should fail this
+
+Fail this.
+****
+exim -odi userx
+Subject: should freeze this
+
+Freeze this.
+****
+exim -odi userx
+Subject: reply to this
+
+Reply to this.
+****
+exim -odi filter-pipe
+Subject: should give filter error (1)
+****
+exim -odi filter-file
+Subject: should give filter error (2)
+****
+exim -odi filter-lookup
+Subject: should give filter error (3)
+****
+exim -odi filter-exists
+Subject: should give filter error (4)
+****
+exim -odi filter-readfile
+Subject: should give filter error (5)
+****
+exim -odi filter-run
+Subject: should give filter error (6)
+****
+exim -odi filter-vacation
+Subject: should give rise to vacation message
+****
+exim -bF DIR/aux-fixed/TESTNUM.f-5 </dev/null
+****
+exim -qf
+****
+exim -bpa
+****
+exim -q
+****
+exim -qff
+****
+exim -odi userx
+Subject: should freeze this
+
+Freeze this (second message).
+****
+exim -qqRff userx
+****
+exim -odi readfile
+Should fail ${readfile in filter.
+****
+exim -bF DIR/aux-var/TESTNUM.F <DIR/aux-fixed/TESTNUM.msg
+****
+exim -odi deliverfromfilter
+Test deliver command in system filter
+****
+exim -bF DIR/aux-var/TESTNUM.F
+Test-headers: first one
+From: x@y
+Test-headers: another one
+More-test-headers : yet another one
+Subject: testing, testing
+****
+exim -odi -d-all+route filter-userx
+****
+exim -odi userx
+Subject: should defer this
+
+Defer this.
+****
+# Vacation to a sender in never_mail
+exim -odi -f never_mail@test.ex filter-vacation
+Subject: should give rise to vacation message
+****
+exim -odi filter-stat
+Subject: should give filter error (7)
+****
+no_msglog_check
--- /dev/null
+# Simple ACL ratelimit test
+exim -bh V4NET.9.8.7
+ehlo test.ex
+mail from:<>
+rcpt to:<a@b>
+data
+Here is some data.
+.
+quit
+****
+exim -bh V4NET.9.8.7
+ehlo test.ex
+mail from:<>
+rcpt to:<a@b>
+data
+Here is some data.
+.
+quit
+****
+exim -bh V4NET.9.8.7 -DRRATELIMIT=0/1h/per_conn/strict -DDRATELIMIT=0/1h/per_conn/strict
+ehlo test.ex
+mail from:<>
+rcpt to:<a@b>
+data
+Here is some data.
+.
+quit
+****
+exim -bh V4NET.9.8.7 -DRRATELIMIT=0/1h/per_conn/strict -DDRATELIMIT=0/1h/per_conn/strict
+ehlo test.ex
+mail from:<>
+rcpt to:<a@b>
+data
+Here is some data.
+.
+quit
+****
+exim -bh V4NET.9.8.7 -DRRATELIMIT=0/1h/per_rcpt -DDRATELIMIT=0/1h/per_conn
+ehlo test.ex
+mail from:<>
+rcpt to:<a@b>
+rcpt to:<b@c>
+rcpt to:<e@f>
+data
+Here is some data.
+.
+quit
+****
--- /dev/null
+# redirect and qualify domain
+exim -N -odi r1@test.ex r2@test.ex
+****
+exim -N -DQDG=qualify_domain=qd.text.ex -odi r1@test.ex r2@test.ex
+****
--- /dev/null
+# Checking -oMa etc
+exim -odi -f jc@rome -F 'Julius Caesar' -oMa 1.1.1.1 -oMi 2.2.2.2 -oMr latin -oMs forum.rome -oMt jc44bc userx@test.ex
+This is a test message.
--- /dev/null
+# VRFY & EXPN blocking
+exim -bh 1.1.1.1
+vrfy userx@test.ex
+expn postmaster
+quit
+****
+exim -bh 2.2.2.2
+expn list
+quit
+****
+exim -bs
+expn list
+quit
+****
--- /dev/null
+# VRFY logging failures
+exim -bh 1.1.1.1
+vrfy userx@test.ex
+vrfy junkjunk@test.ex
+quit
--- /dev/null
+# Sender and recipient verification
+exim -bh V4NET.0.0.97
+ehlo exim.test.ex
+mail from:junkjunk@exim.test.ex
+rcpt to:<postmaster@exim.test.ex>
+rset
+mail from:postmaster@exim.test.ex
+rcpt to:postmaster@exim.test.ex
+rcpt to:junkjunk@exim.test.ex
+rcpt to:fail@exim.test.ex
+quit
--- /dev/null
+# RBL blocking (unregistered host)
+exim -bh V4NET.11.12.13
+ehlo exim.test.ex
+mail from:postmaster@exim.test.ex
+rcpt to:<postmaster@exim.test.ex>
+rcpt to:list@exim.test.ex
+data
+test data
+.
+quit
+****
+exim -bh V4NET.11.12.13
+ehlo exim.test.ex
+mail from:<myfriend@there.test.ex>
+rcpt to:list@exim.test.ex
+data
+test data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# MX handling
+1
+exim -bt userx@eximtesthost.test.ex
+****
+1
+exim -bt userx@mxt1.test.ex
+****
+2
+exim -bt userx@mxt2.test.ex
+****
+2
+exim -bt userx@mxt3.test.ex
+****
+1
+exim -bt userx@mxt4.test.ex
+****
+1
+exim -bt userx@mxt5.test.ex
+****
+1
+exim -bt userx@mxt5.test.ex
+****
+exim -bt userx@mxt6.test.ex
+****
+exim -bt userx@mxt7.test.ex
+****
+exim -bt userx@mxt7.test.ex
+****
+exim -bt userx@mxt8.test.ex
+****
+exim -bt userx@mxt8.test.ex
--- /dev/null
+# domain matching in manualroute router
+exim -bt xx@domain1
+****
+exim -bt xx@route1.ex
+****
+exim -bt xx@domain3
--- /dev/null
+# pipe transport
+exim -odi pipe
+Some message text.
+****
+exim -odi prefixed+pipe
+Text
+****
+exim -odi pipe-suffixed
+Text
+****
+exim -odi prefixed+pipe-suffixed
+Text
+****
+exim -DMESSAGE_LOGS=false -odi pipe
+Some message text.
+****
--- /dev/null
+# Sender: header (untrusted caller)
+exim -odi userx@test.ex
+Sender: Sender in original <sender@original.ex>
+
+This is a test message.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+Sender: Sender in original <sender@original.ex>
+
+This is a test message.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+
+This is a test message.
+****
+exim -odi userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+
+This is a test message.
+****
+exim -bs -odi
+mail from:userx@cus.cam.ac.uk
+rcpt to:userx@test.ex
+data
+Sender: Sender in original <sender@original.ex>
+
+This is a test message.
+.
+quit
+****
+exim -odi userx@test.ex
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message.
+****
+exim -odi userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message.
+****
+exim -bs -odi
+mail from:userx@somehost.test.ex
+rcpt to:userx@test.ex
+data
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message.
+.
+quit
+
--- /dev/null
+# Sender: header (trusted caller)
+exim -odi userx@test.ex
+Sender: Sender in original <sender@original.ex>
+
+This is a test message 1.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+Sender: Sender in original <sender@original.ex>
+
+This is a test message 2.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+
+This is a test message 3.
+****
+exim -odi userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+
+This is a test message 4.
+****
+exim -bs -odi
+mail from:userx@cus.cam.ac.uk
+rcpt to:userx@test.ex
+data
+Sender: Sender in original <sender@original.ex>
+
+This is a test message 5.
+.
+quit
+****
+exim -odi userx@test.ex
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message 6.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message 7.
+****
+exim -odi userx@test.ex
+From: From person <from@some.where>
+
+This is a test message 8.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message 9.
+****
+exim -odi userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message 10.
+****
+exim -bs -odi
+mail from:userx@somehost.test.ex
+rcpt to:userx@test.ex
+data
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message 11.
+.
+quit
+
--- /dev/null
+# Domain selection in routers
+exim -odi userx@test.ex
+This is a test message 1.
+****
+exim -odi userx@bad.ex
+This is a test message 2.
+****
+exim -odi userx@badbad.ex
+This is a test message 3.
+****
+exim -odi userx@domain1.ex
+This is a test message 4.
+****
+exim -odi userx@domain4.ex
+This is a test message 5.
+****
+exim -odi userx@domain2.ex
+This is a test message 6.
+****
+exim -odi userx@xx.domain5.ex
+This is a test message 7.
+****
+exim -odi userx@domain6.yy.ex
+This is a test message 8.
--- /dev/null
+# Local part selection in routers
+exim -odi xx99@test.ex
+This is a test message 1.
+****
+exim -odi yy99@test.ex
+This is a test message 2.
+****
+exim -odi '!one@test.ex'
+This is a test message 3.
+****
+exim -odi '!two@test.ex'
+This is a test message 4.
--- /dev/null
+# Aliases including domains
+exim -bt bar@domain1.ex
+****
+2
+exim -bt foobar@domain1.ex
--- /dev/null
+# mx_domains
+exim -bt xxx@ten-1.test.ex
+****
+2
+exim -bt xxx@ten-2.test.ex
+****
--- /dev/null
+# queue_domains and queue_smtp_domains
+exim -odi -N xxx@unknown.test.ex
+****
+exim -odi -N xxx@local.test.ex
+****
+exim -odq userx@myhost.ex
+****
+exim -ql
+****
+exim -q
+****
+exim -odi -N xxx@ten-1.test.ex
+****
+exim -odi -N xxx@ten-2.test.ex
+****
+exim -q -N
+****
+exim -odq xxx@ten-1.test.ex
+First
+****
+exim -odq yyy@ten-1.test.ex
+Two
+****
+exim -qq -N
+****
+exim -odi -N xxx@ten-2.test.ex
+****
+exim -N -M $msg1
+****
+exim -odi -N xxx@local.test.ex
+****
+exim -N -M $msg1
+****
--- /dev/null
+# domain list set to *
+exim -bh V4NET.0.0.1
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@otherhost.example.com>
+rcpt to:<userx@3rdhost.example.com>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# domain list = !* and other ! and percent_hack domains
+exim -bh V4NET.0.0.1
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+rcpt to:<userx@3rdhost.example.com>
+data
+.
+quit
+****
+2
+exim -bv userx%myhost.ex@a.test.ex userx%myhost.ex@b.test.ex
+****
+2
+exim -bv userx%myhost.ex@d.test.ex userx%myhost.ex@d.test.ex
+****
+exim -bv userx%myhost.ex@z.test.ex
+****
+no_msglog_check
--- /dev/null
+# Relay by hostlist *
+exim -bh V4NET.0.0.1
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# Relay by hostlist !*
+exim -bh V4NET.0.0.1
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# Relay by hostlist match for host name or IP address
+exim -bh V4NET.0.0.1
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.2
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.5
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.6
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.255.0.1
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.255.0.2
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.255.0.3
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.255.0.4
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# Relay by hostlist @
+exim -bh V4NET.0.0.1
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.2
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# Relay by hostlist end name match
+exim -bh V4NET.0.0.1
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.2
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.3
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# Relay by hostlist regex match
+exim -bh V4NET.0.0.1
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.2
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# Relay by hostlist lsearch
+exim -bh V4NET.0.0.1
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.2
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# Relay by hostlist matching by network
+exim -bh 1.2.3.4
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh 1.2.3.5
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh 1.2.4.5
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh 1.3.2.4
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh 131.111.8.2
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh 192.152.98.3
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh 192.153.98.4
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# Relay by hostlist matching host or network
+exim -bh 1.2.3.4
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh 1.2.3.5
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh 1.2.4.5
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh 1.3.2.4
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh 131.111.8.2
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh 192.152.98.3
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.1
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.11.12.13
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.3
+mail from:<userx@somehost.example.com>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@anotherhost.example.com>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# sender_reject (various, including @@)
+exim -bh 1.2.3.4
+mail from:<userx@somehost.example.com>
+rcpt to:<x@test.ex>
+rset
+mail from:<x@b.c>
+rcpt to:<x@test.ex>
+rset
+mail from:<y@b.c>
+rcpt to:<x@test.ex>
+rset
+mail from:<philip@xy.z>
+rcpt to:<x@test.ex>
+rset
+mail from:<quilt@patch.work>
+rcpt to:<x@test.ex>
+rset
+mail from:<philip@a.b.c>
+rcpt to:<x@test.ex>
+rset
+mail from:<xx@abc.def>
+rcpt to:<x@test.ex>
+rset
+mail from:<abc@d.e.f>
+rcpt to:<x@test.ex>
+rset
+mail from:<xyz@d.e.f>
+rcpt to:<x@test.ex>
+rset
+mail from:<yy@abc.def>
+rcpt to:<x@test.ex>
+rset
+mail from:<abc@z.z>
+rcpt to:<x@test.ex>
+rset
+mail from:<cba@z.z>
+rcpt to:<x@test.ex>
+rset
+mail from:<xyz@z.z>
+rcpt to:<x@test.ex>
+rset
+mail from:<12345678@p.q.r>
+rcpt to:<x@test.ex>
+rset
+mail from:<12345678@z.z>
+rcpt to:<x@test.ex>
+rset
+mail from:<1234@p.q.r>
+rcpt to:<x@test.ex>
+rset
+mail from:<1234@m.n.o>
+rcpt to:<userx@test.ex>
+rcpt to:<postmaster@test.ex>
+rcpt to:<postmaster@myhost.ex>
+rset
+mail from:<rr01@a.b.c>
+rcpt to:<userx@test.ex>
+rset
+mail from:<qqq@a.b.c>
+rcpt to:<userx@test.ex>
+rset
+mail from:<qq@a.b.c>
+rcpt to:<userx@test.ex>
+rset
+mail from:<!excl@z.z>
+rcpt to:<userx@test.ex>
+rset
+mail from:<sh#rp@y.p.s>
+rcpt to:<userx@test.ex>
+rset
+mail from:<abc@xx.yy>
+rcpt to:<x@test.ex>
+rset
+mail from:<xyzbc@xx.yy>
+rcpt to:<x@test.ex>
+rset
+mail from:<aabc@xx.yy>
+rcpt to:<x@test.ex>
+rset
+mail from:<x@bb.cc>
+rcpt to:<x@test.ex>
+rset
+mail from:<y@bb.cc>
+rcpt to:<x@test.ex>
+rset
+mail from:<x@bbb.ccc>
+rcpt to:<x@test.ex>
+rset
+mail from:<y@bbb.ccc>
+rcpt to:<x@test.ex>
+rset
+mail from:<z@bbb.ccc>
+rcpt to:<x@test.ex>
+rset
+quit
--- /dev/null
+# recipients_max_reject
+exim -bh V4NET.10.10.10
+mail from:<x@y>
+rcpt to:<a@b>
+rcpt to:<a@b>
+rcpt to:<a@b>
+rcpt to:<a@b>
+rcpt to:<a@b>
+rcpt to:<a@b>
+rcpt to:<a@b>
+data
+quit
+****
--- /dev/null
+# +include_unknown and +ignore_unknown
+exim -bh V4NET.0.0.1
+mail from:<x@y>
+rcpt to:<x@test.ex>
+quit
+****
+exim -bh V4NET.0.0.13
+MAIL FROM:<userx>
+rcpt to:<x@test.ex>
+quit
+****
+exim -bh V4NET.0.0.13
+MAIL FROM:<userx@test.ex>
+rcpt to:<y@test.ex>
+quit
+****
+exim -bh V4NET.0.0.13
+MAIL FROM:<userx@test.ex>
+rcpt to:<z@test.ex>
+quit
+****
+exim -bh V4NET.0.0.13 -DLOG_SELECTOR=log_selector=+unknown_in_list
+MAIL FROM:<userx@test.ex>
+rcpt to:<y@test.ex>
+quit
+****
--- /dev/null
+# helo_verify_hosts and helo_try_verify_hosts
+exim -bh V4NET.0.0.1
+mail from:<userx@cus.cam.ac.uk>
+quit
+****
+exim -bh V4NET.0.0.13
+mail from:<userx@cus.cam.ac.uk>
+rcpt to:<a@b>
+quit
+****
+exim -bh V4NET.0.0.2
+helo [V4NET.0.0.1]
+mail from:<a@b>
+rcpt to:<c@d>
+quit
+****
+exim -bh V4NET.0.0.2
+helo [V4NET.0.0.2]
+mail from:<a@b>
+rcpt to:<c@d>
+quit
+****
+exim -bh V4NET.0.0.1
+helo ten-1.test.ex
+quit
+****
+exim -bh V4NET.0.0.3
+helo ten-3.test.ex
+helo ten-3-alias.test.ex
+helo ten-3xtra.test.ex
+quit
+****
+exim -bh V4NET.0.0.1
+ehlo rhubarb
+quit
+****
+# This is a special IP address that provokes a temporary lookup failure
+exim -DHVH=99.99.99.99 -bh 99.99.99.99
+ehlo rhubarb
+quit
+****
+exim -bh V4NET.0.0.13
+helo [V4NET.0.0.99]
+mail from:<a@b>
+rcpt to:<c@d>
+quit
+****
+exim -bh V4NET.0.0.13
+helo [V4NET.0.0.13]
+mail from:<a@b>
+rcpt to:<c@d>
+quit
+****
+# Temporary lookup when not in helo_try_verify_hosts
+exim -bh 99.99.99.99
+ehlo rhubarb
+mail from:<a@b>
+rcpt to:<c@d>
+quit
+****
--- /dev/null
+# pipe transport not set
+exim -odi pipe
+Some message text.
--- /dev/null
+# autoreply
+exim -odi userx@test.ex
+Subject: first message; non-printer >\r<
+****
+exim -odi userx@test.ex
+Subject: second message
+****
+exim -DONCE=once= -DRETURN=return_message -odi userx@test.ex
+Subject: third message
+
+This has return_message set.
+****
+exim -DONCE= -DRETURN=return_message -DONLY=body_only -odi userx@test.ex
+Subject: third message
+
+This has return_message set with body_only.
+****
+exim -DONCE= -DRETURN=return_message -DONLY=headers_only -odi userx@test.ex
+Subject: third message
+
+This has return_message set with headers_only.
+****
+# This message has a From: line that is syntactically OK when encoded, but
+# which isn't OK when decoded.
+exim -DONCE= -odi userx@test.ex
+Subject: Encoded from
+From: =?ISO-8859-1?Q?CALLER=40test=2Eex?= <CALLER@test.ex>
+
+This is a test for encoded headers ane $reply_address.
+****
+# This message has a From: line that is syntactically bad, and we process it
+# with a filter.
+exim -DONCE= -odi userx-filter@test.ex
+Subject: Bad from
+From: "something" x@y
+
+This is a test for a bad From: line.
+****
--- /dev/null
+# autoreply with once_repeat
+exim -odi userx@test.ex
+Subject: first message
+****
+exim -odi userx@test.ex
+Subject: second message
+****
+sleep 5
+exim -odi userx@test.ex
+Subject: third message
--- /dev/null
+# autoreply from filter (including once_repeat)
+exim -odi userx@test.ex
+Subject: first message
+****
+exim -odi userx@test.ex
+Subject: second message
+****
+sleep 5
+exim -odi userx@test.ex
+Subject: third message
+****
+exim -odi userx@test.ex
+Subject: fourth message
+X-nltest: xxxx
+****
+exim -odi userx@test.ex
+Subject: fifth message
+Reply-to: userx,
+ abcd
+****
--- /dev/null
+# appendfile subdirectory with create_directory
+exim -odi userx@test.ex
+Subject: first message
--- /dev/null
+# appendfile subdirectory without create_directory
+exim -odi userx@test.ex
+Subject: first message
--- /dev/null
+# host_reject !@ : !localhost
+exim -bh 127.0.0.1
+mail from:<x@test.ex>
+rcpt to:<x@test.ex>
+quit
+****
+exim -bh V4NET.10.10.10
+mail from:<x@test.ex>
+rcpt to:<x@test.ex>
+quit
+****
+exim -bh V4NET.0.0.1
+mail from:<x@test.ex>
+rcpt to:<x@test.ex>
+quit
--- /dev/null
+# self and no_more
+#
+exim -d-all+route -bt xx@mxt6.test.ex
+****
+exim -d-all+route -bt myhost.test.ex@mxt1.test.ex
+****
+exim -d-all+route -bt xx@mxt1.test.ex
+****
+2
+exim -d-all+route -bt xx@not.exist
--- /dev/null
+# RBL /warn (default reject)
+exim -bh V4NET.11.12.14
+ehlo exim.test.ex
+mail from:postmaster@exim.test.ex
+rcpt to:<postmaster@exim.test.ex>
+rcpt to:list@exim.test.ex
+data
+test data
+.
+quit
+****
+exim -odi -bs -oMa V4NET.11.12.13
+ehlo exim.test.ex
+mail from:<postmaster@exim.test.ex>
+rcpt to:<userx@exim.test.ex>
+data
+test message data
+.
+quit
+****
+exim -odi -bs -oMa V4NET.11.12.14 -oMi 14.12.11.10.PORT_D
+ehlo exim.test.ex
+mail from:<postmaster@exim.test.ex>
+rcpt to:<postmaster@exim.test.ex>
+rcpt to:<userx@exim.test.ex>
+data
+test message data
+.
+quit
+****
+exim -odi -bs
+mail from:<postmaster@exim.test.ex>
+rcpt to:<userx@exim.test.ex>
+data
+sysmail: yes
+Testing mail from system filter
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# RBL /reject (default warn)
+exim -bh V4NET.11.12.14
+ehlo exim.test.ex
+mail from:postmaster@exim.test.ex
+rcpt to:<postmaster@exim.test.ex>
+rcpt to:list@exim.test.ex
+data
+test data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# Concatenated headers in expansion
+exim -v -odi userx
+X-one: This is the first text.
+To: userx
+X-one: This is the second text.
+From: userx
+X-one: This is the third text.
+Subject: testing, testing
+X-one: This is the fourth text.
+
+This is the message body.
--- /dev/null
+# -bS with -oMr
+exim -bS -odi -oMr testproto
+mail from:userx@cus.cam.ac.uk
+rcpt to:userx@test.ex
+data
+from: me
+To: me
+
+This is some text
+.
+quit
--- /dev/null
+# -bS without -oMr
+exim -bS -odi
+mail from:userx@cus.cam.ac.uk
+rcpt to:userx@test.ex
+data
+from: me
+To: me
+
+This is some text
+.
+quit
--- /dev/null
+# require_files
+exim -d-all+route -bv yes@myhost.test.ex no@myhost.test.ex
--- /dev/null
+# domains, local_parts, sender, and require_files expansions
+2
+exim -d -f abc@d.e.f -bv x@y.z x@smart.domain x@test.ex x@myhost.test.ex
+****
+2
+exim -d -bv x@y.z x@smart.domain x@test.ex x@myhost.test.ex
--- /dev/null
+# verify = header_syntax
+exim -bh V4NET.10.10.10
+mail from:<userx@exim.test.ex>
+rcpt to:<userx@test.ex>
+data
+From: userx@exim.test.ex
+To: userx@test.ex
+Cc: <abcd@x.y.z
+Subject: testing
+
+.
+QUIT
+****
+exim -bh V4NET.10.10.10
+mail from:<userx@exim.test.ex>
+rcpt to:<userx@test.ex>
+data
+From: userx@exim.test.ex
+To: userx@test.ex
+Cc: <abcd@x.y.z
+Resent-From: postmaster@x.y.z
+Reply-To: <xyz@a.b.c.d
+Subject: testing
+
+.
+QUIT
+****
+exim -bh V4NET.10.10.10
+mail from:<userx@exim.test.ex>
+rcpt to:<userx@test.ex>
+data
+From: userx@exim.test.ex
+To: userx@test.ex
+Cc: <abcd@x.y.z>
+Resent-From: postmaster@x.y.z
+Resent-To: <xyz@a.b.c.d
+Subject: testing
+
+.
+QUIT
+****
+exim -bh V4NET.10.10.10
+mail from:<userx@exim.test.ex>
+rcpt to:<userx@test.ex>
+data
+From: userx@exim.test.ex
+To: userx@test.ex
+Cc: "abcd@x.y.z (missing quote),
+ longlonglonglonglong@long.long.long.long.long.long.long.long,
+ listlistlistlistlist@list.list.list.list.list.list.list.list,
+ ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,
+ addressesaddresses@addresses.addresses.addresses.addresses,
+ longlonglonglonglong@long.long.long.long.long.long.long.long,
+ listlistlistlistlist@list.list.list.list.list.list.list.list,
+ ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,
+ addressesaddresses@addresses.addresses.addresses.addresses,
+ longlonglonglonglong@long.long.long.long.long.long.long.long,
+ listlistlistlistlist@list.list.list.list.list.list.list.list,
+ ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,
+ addressesaddresses@addresses.addresses.addresses.addresses,
+ longlonglonglonglong@long.long.long.long.long.long.long.long,
+ listlistlistlistlist@list.list.list.list.list.list.list.list,
+ ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,
+ addressesaddresses@addresses.addresses.addresses.addresses,
+ longlonglonglonglong@long.long.long.long.long.long.long.long,
+ listlistlistlistlist@list.list.list.list.list.list.list.list,
+ ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,
+ addressesaddresses@addresses.addresses.addresses.addresses,
+ longlonglonglonglong@long.long.long.long.long.long.long.long,
+ listlistlistlistlist@list.list.list.list.list.list.list.list,
+ ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,
+ addressesaddresses@addresses.addresses.addresses.addresses,
+ longlonglonglonglong@long.long.long.long.long.long.long.long,
+ listlistlistlistlist@list.list.list.list.list.list.list.list,
+ ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,
+ addressesaddresses@addresses.addresses.addresses.addresses,
+ longlonglonglonglong@long.long.long.long.long.long.long.long,
+ listlistlistlistlist@list.list.list.list.list.list.list.list,
+ ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,
+ addressesaddresses@addresses.addresses.addresses.addresses,
+ longlonglonglonglong@long.long.long.long.long.long.long.long,
+ listlistlistlistlist@list.list.list.list.list.list.list.list,
+ ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,
+ addressesaddresses@addresses.addresses.addresses.addresses,
+ longlonglonglonglong@long.long.long.long.long.long.long.long,
+ listlistlistlistlist@list.list.list.list.list.list.list.list,
+ ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,
+ addressesaddresses@addresses.addresses.addresses.addresses,
+ longlonglonglonglong@long.long.long.long.long.long.long.long,
+ listlistlistlistlist@list.list.list.list.list.list.list.list,
+ ofofofofofofofofofof@of.of.of.of.of.of.of.of.of.of.of.of.of,
+ addressesaddresses@addresses.addresses.addresses.addresses
+.
+QUIT
+****
+exim -bh V4NET.10.10.10
+mail from:<userx@exim.test.ex>
+rcpt to:<userx@test.ex>
+data
+From: userx@exim.test.ex
+To: userx@test.ex
+Cc: <abcd>
+Subject: testing
+
+.
+QUIT
+****
+exim -bh V4NET.10.10.9
+mail from:<userx@exim.test.ex>
+rcpt to:<userx@test.ex>
+data
+From: userx@exim.test.ex
+To: userx@test.ex
+Cc: <abcd>
+Subject: testing
+
+.
+QUIT
+****
+no_msglog_check
--- /dev/null
+# verify = header_sender
+exim -bh V4NET.10.10.10
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+From: userx@test.ex
+Reply-to:
+To: userx@test.ex
+Subject: testing
+
+.
+QUIT
+****
+exim -bh V4NET.10.10.10
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+From: <userx@test.ex
+Reply-to:
+Sender: userx@test.ex
+To: userx@test.ex
+Subject: testing
+
+.
+QUIT
+****
+exim -bh V4NET.10.10.10
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+From: badbad@test.ex
+Sender:
+To: userx@test.ex
+Subject: testing
+
+.
+QUIT
+****
+exim -bh V4NET.10.10.10
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+From: badbad@test.ex, userx@test.ex
+Sender:
+To: userx@test.ex
+Subject: testing
+
+.
+QUIT
+****
+exim -bh V4NET.10.10.10
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+From: defer@test.ex
+To: userx@test.ex
+Subject: testing
+
+.
+QUIT
+****
+no_msglog_check
--- /dev/null
+# hosts_treat_as_local
+1
+exim -bv xx@ten-1.test.ex xx@ten-99.test.ex xx@mxcased.test.ex
--- /dev/null
+# host and domain list caseless matching and HELO checking
+#
+exim -bt userx@test.ex userx@myhost.test.ex
+****
+exim -bh V4NET.0.0.0
+helo @#$%^&*()
+helo abc_xyz
+mail from:<userx@cus.cam.ac.uk>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@else.where>
+rset
+quit
+****
+exim -bh V4NET.0.0.99
+helo @#$%^&*()
+mail from:<root>
+rcpt to:<xx@reLAY.ONE.ex>
+rcpt to:<yy@relay.two.ex>
+quit
+****
+2
+exim -bt abcd@test.ex ABCD@test.ex XYZ@ten-1.test.ex xyz@ten-1.test.ex
+****
--- /dev/null
+# address list !:
+exim -odi userx
+This is a test message
--- /dev/null
+# sender_verify_hosts
+exim -bh V4NET.0.0.1
+mail from:<junk@jink.jonk.test.ex>
+rcpt to:<root@test.ex>
+data
+From: <junk@jink.jonk.test.ex>
+.
+quit
+****
+exim -bh V4NET.0.0.2
+mail from:<junk@jink.jonk.test.ex>
+rcpt to:<root@test.ex>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.2
+mail from:<userx@test.ex>
+rcpt to:<root@test.ex>
+data
+From: <junk@jink.jonk.test.ex>
+.
+quit
+****
+exim -bh V4NET.0.0.2
+mail from:<userx@test.ex>
+rcpt to:<root@test.ex>
+data
+From: <userx@test.ex>
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# SMTP incoming timeout + receive_timeout
+1
+3 exim -bs
+****
+1
+3 exim -bs
+mail from: userx@test.ex
+rcpt to: userx@test.ex
+data
+****
+1
+3 exim -bh V4NET.0.0.1
+****
+1
+3 exim -bh V4NET.0.0.1
+mail from:userx@test.ex
+rcpt to:userx@test.ex
+data
+The quick brown fox
+****
+1
+3 exim userx@test.ex
+****
+1
+3 exim userx@test.ex
+The quick brown fox
+jumps over the lazy dog.
+****
+1
+3 exim -bh V4NET.0.0.1
+mail from: userx@test.ex
+rcpt to: verify@test.ex
+****
+2
+3 exim -bS
+****
+2
+3 exim -bS
+mail from: userx@test.ex
+rcpt to: userx@test.ex
+data
--- /dev/null
+# expansion tests in filter testing
+exim -bf DIR/aux-var/TESTNUM.f-1
+From: a@b
+To: c@d
+
+This is the body of the message.
+It has more than one line in it.
+This is the final line.
+****
+1
+exim -bf DIR/aux-var/TESTNUM.f-2 </dev/null
+****
+exim -bf DIR/aux-fixed/TESTNUM.f-3
+From: a@b
+Reply-to: x@y
+Repeated: this header is repeated
+ and continued
+Repeated: this header is repeated
+ and continued
+Repeated: this header is repeated
+ and continued
+Empty:
+Repeated-empty:
+Repeated-empty:
+Repeated-empty:
+Subject: this is the subject
+****
--- /dev/null
+# Reverse lookup failures
+exim -bh V4NET.11.12.13
+mail from:<userx@cam.ac.uk>
+rcpt to:<userx@cam.ac.uk>
+quit
+****
+exim -bh V4NET.0.0.1
+mail from:<userx@cam.ac.uk>
+rcpt to:<userx@cam.ac.uk>
+quit
+****
+sudo exim -odi -oMa V4NET.11.12.13 -bs
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+This is a test message
+.
+quit
+****
+exim -d -bh V4NET.99.99.90
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@cam.ac.uk>
+quit
+****
+sudo exim -odi -oMa 99.99.99.99 -bs
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+This is a test message
+.
+quit
+****
+sudo exim -odi -oMa V4NET.99.99.96 -bs
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+This is a test message
+.
+quit
+****
--- /dev/null
+# exim quota + warn threshold
+exim -odi userx
+This is a test message
+****
+exim -odi userx
+quota: 0
+threshold: 10
+This is a test message
+****
+exim -odi userx
+quota: 10K
+threshold: 900
+A test message
+****
+exim -odi userx
+quota: 2200
+threshold: 90%
+This is a test message
+****
+write test-data 100x60
+++++
+****
+exim -odi userx <test-data
+****
+exim -odi userx <test-data
+****
+millisleep 500
+exim -odi usery
+quota: 100
+threshold: 10
+This is a test message
+****
+exim -odi userz
+threshold: 330
+****
--- /dev/null
+# headers_add, headers_remove (fail, router only)
+exim -odi userx@test.ex
+Subject: First message subject
+****
+exim -odi userx@test.ex
+X-RBL-Warning: A faked up RBL header
+Subject: Second message subject
--- /dev/null
+# headers_add, headers_remove (blank, router and transport)
+exim -odi userx@test.ex
+Subject: First message subject
+****
+exim -odi userx@test.ex
+X-RBL-Warning: A faked up RBL header
+Subject: Second message subject
+Tadd: to be replaced
--- /dev/null
+# warning messages
+need_ipv4
+#
+exim -odi userx@test.ex defer@test.ex
+Test message
+****
+# -Tqt 11s/ sets the queue time for the message to 11s when deciding
+# on warnings.
+exim -Tqt 11s/ -odi -qf
+****
+exim -odi defer@test.ex defer@another.test.ex
+Test message
+****
+exim -Tqt 20s/13s/ -odi -qf
+****
+exim -odi xxxx@some.domain
+Test message
+****
+exim -Tqt 41s/15s/8s/ -odi -qf
+****
+exim -odi yyyy@connection.refused
+Nother test
+****
+exim -Tqt 42s/16s/9s/5s/ -odi -q
+****
+sleep 3
+exim -Tqt 42s/16s/9s/5s/ -odi -q
+****
+# Now test with custom file
+exim -Tqt 12m/45s/45s/11s/ -DWMF=warn_message_file=DIR/aux-fixed/TESTNUM.wmf -odi -qf
+****
+# Remove the previous 4 messages
+exim -Mrm $msg1 $msg2 $msg3 $msg4
+****
+# Check no warnings for non-warn domain
+exim -odi defer@another.test.ex
+Testing
+****
+exim -Tqt 20s/ -odi -qf
+****
+no_msglog_check
--- /dev/null
+# retry data
+exim -odi userx@far.away.ex
+Test message
+****
+dump retry
+sleep 1
+exim -odi -q
+****
+dump retry
+sleep 3
+exim -odi -q
+****
+dump retry
+exim -brt x@dark.star.ex
+****
+exim -brt x@a.b.c
+****
+exim -brt x@x.y.z
+****
+exim -brt x@9CDE.ex
+****
+exim -brt x@Q.abcd.ex
+****
+exim -brt x@literal.ex
+****
+exim -brt x@look.up
+****
+exim -brt x@[127.0.0.1]
+****
+exim -brt x@primary.test.ex
+****
+exim -brt x@rcpt4xx.test.ex rcpt_4xx
+****
+exim -brt x@rcpt45x.test.ex rcpt_45x
+****
+exim -brt x@rcpt463.test.ex rcpt_463
+****
+exim -f "" -brt x@Q.abcd.ex
+****
+exim -f "d@e.f" -brt x@Q.abcd.ex
+****
--- /dev/null
+# appendfile body escapes (including "from hack" and "SMTP dot" tests)
+need_ipv4
+#
+exim -odi userx@test.ex
+Test message
+From the deep abyss
+From
+out of nowhere
+Fromage please
+from is case sensitive
+From: is how headers start
+****
+exim -odi usery@test.ex
+Test message
+From the deep abyss
+From
+out of nowhere
+Fromage please
+from is case sensitive
+From: is how headers start
+****
+write test-data 128x64
+++++
+From Bohemia's woods and fields
+****
+exim -odi userx@test.ex <test-data
+****
+write test-data 127x64 1x63
+++++
+From Bohemia's woods and fields
+****
+exim -odi userx@test.ex <test-data
+****
+exim -odi userz@test.ex
+A message containing
+. a line starting with a dot
+.. and one starting with two dots
+From should not be escaped as this is
+going to be delivered using BSMTP.
+****
+exim -odi userw@test.ex
+A message containing
+. a line starting with a dot
+.. and one starting with two dots
+From should not be escaped as this is
+going to be delivered using BSMTP,
+via a filter.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -oi -odi userx@domain.com
+.dotheader: This is perfectly legal
+
+A message containing
+. a line starting with a dot
+.. and one starting with two dots
+.
+The previous one contains only a dot.
+****
+write test-data 127x64 1x62
+++++
+Frost isn't From.
+****
+exim -odi userx@test.ex <test-data
+****
+exim -odi userx@test.ex
+Last line ending without a newline and with a partial match:
+From\NONL\
+****
+exim -odi filter-userx@test.ex
+Test message
+From the deep abyss
+From
+out of nowhere
+Fromage please
+from is case sensitive
+From: is how headers start
+****
+exim -odi filter-userx@test.ex
+Last line ending without a newline and with a partial match:
+From\NONL\
+****
+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
+\ 1\ 1\ 1\ 1
+That should get escaped by adding a space.
+****
+exim -odi batch-userx@test.ex batch-userz@test.ex
+A message containing
+. a line starting with a dot
+.. and one starting with two dots
+From should be escaped as this is
+going to be delivered using batch. The dots
+shouldn't be escaped.
+****
+exim -odi userx@test.ex
+Subject: From
+
+From is the very first word of the message.
+From starts the second line.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -oi -odi userx@filtered.com
+.dotheader: This is perfectly legal
+
+A message containing
+. a line starting with a dot
+.. and one starting with two dots
+.
+The previous one contains only a dot.
+****
--- /dev/null
+# pipe body escapes (including "from hack" and "SMTP dot" tests)
+need_ipv4
+#
+exim -odi userx@test.ex
+Test message
+From the deep abyss
+From
+out of nowhere
+Fromage please
+from is case sensitive
+From: is how headers start
+****
+write test-data 128x64
+++++
+From Bohemia's woods and fields
+****
+exim -odi userx@test.ex <test-data
+****
+write test-data 127x64 1x63
+++++
+From Bohemia's woods and fields
+****
+exim -odi userx@test.ex <test-data
+****
+exim -odi userz@test.ex
+A message containing
+. a line starting with a dot
+.. and one starting with two dots
+From should not be escaped as this is
+going to be delivered using BSMTP.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -oi -odi userx@domain.com
+.dotheader: This is perfectly legal
+
+A message containing
+. a line starting with a dot
+.. and one starting with two dots
+.
+The previous one contains only a dot.
+****
+write test-data 127x64 1x62
+++++
+Frost isn't From.
+****
+exim -odi userx@test.ex <test-data
+****
+exim -odi userx@test.ex
+Last line ending without a newline and with a partial match:
+From\NONL\
+****
+exim -odi filter-userx@test.ex
+Test message
+From the deep abyss
+From
+out of nowhere
+Fromage please
+from is case sensitive
+From: is how headers start
+****
+exim -odi filter-userx@test.ex
+Last line ending without a newline and with a partial match:
+From\NONL\
+****
+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
+\ 1\ 1\ 1\ 1
+That should get escaped by adding a space.
+****
+exim -odi userx@test.ex
+Subject: From
+
+From is the very first word of the message.
+From starts the second line.
--- /dev/null
+# appendfile auto format recognition
+exim -odi userx@test.ex
+Initial test message, no prefix.
+****
+exim -odi userx@test.ex
+Second test message, no prefix.
+****
+exim -odi bsmtp_usery@test.ex
+Test message with bsmtp_ prefix
+****
+exim -odi usery@test.ex
+Second test message, no prefix.
+****
+exim -odi mmdf_userz@test.ex
+Test message with mmdf_ prefix
+****
+exim -odi userz@test.ex
+Second test message, no prefix.
+****
+exim -odi userz@test.ex
+Second test message, no prefix.
+****
+write test-mail/tpmissing
+tpmissing text at mailbox start
+****
+exim -odi tpmissing@test.ex
+Test message.
+****
+write test-mail/undefined
+undefined text at mailbox start
+****
+exim -odi undefined@test.ex
+Test message.
+****
+exim -odi batch-userx
+Test to batch-userx
+****
+exim -odi batch-userx batch-usery
+Test to batch-userx and batch-usery
+****
--- /dev/null
+# redirect router no_rewrite / no transport / :defer: etc
+exim -odi '"xyz@x.y.z"@test.ex'
+Message sent to "xyz@x.y.z"@test.ex.
+****
+exim -odi '"abc@x.y.z"@test.ex'
+Message sent to "abc@x.y.z"@test.ex.
+****
+exim -odi '":blackhole:"@special'
+Message sent to ":blackhole:"@special
+****
+exim -odi '":defer: defer message"@special'
+Message sent to ":defer: defer message"@special
+****
+exim -odi '":fail: fail message"@special'
+Message sent to ":fail: fail message"@special
+****
--- /dev/null
+# source routed addresses - collapsing
+exim -bt @exim.org:xxx@test.ex '@x.y,@a.b:xxx@test.ex' 'abcde <@x.y,@a.b:xxx@test.ex>'
+****
+exim -odi @x.y,@r.s:a.b@p.q
+To: comment <@x.y,@r.s:a.b@p.q>
+****
+exim -odi @x.y:mmm@ten-1
+To: You <@x.y:mmm@ten-1>
+****
--- /dev/null
+# aliasfile with transport + smartuser with new address and transport
+exim -odi firstuser
+Delivered to firstuser
+.
+****
+exim -odi seconduser@test.ex
+Delivered to seconduser
+.
+****
+exim -odi postmaster
+Delivered to default
+.
+****
--- /dev/null
+# SMTP outgoing timeout
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+*sleep 4
+****
+exim -odi userx@domain1.com
+.
+****
+sleep 1
+server PORT_S
+220 ESMTP
+EHLO
+250 OK
+MAIL FROM
+*sleep 4
+****
+exim -odi userx@domain2.com
+.
+****
--- /dev/null
+# create_file = belowhome
+mkdir test-empty
+ln -s ../test-empty test-mail/link
+exim -odi userx usery userz sub1 sub2 sub3
+To: userx
+
+Testing.
+****
+no_message_check
--- /dev/null
+# remote_sort_domains
+#
+exim -odi -N xx@ten-1.net xx@black.com xx@other.edu xx@myhost.com
+****
+exim -odi -N xx@myhost.com xx@ten-1.net xx@other.edu xx@black.com
+****
--- /dev/null
+# fallback hosts
+need_ipv4
+#
+exim -odi xx@non-exist.test.ex
+****
--- /dev/null
+# one_time in aliasfile
+exim -odi first
+****
+exim -qf
+****
--- /dev/null
+# check_ancestor, errors_to, headers_{add,remove} in redirect router
+exim -odi userx
+Remove: This header should go
+****
+exim -odi Philip
+Remove: This header should go
+****
+exim -odi philip
+Remove: This header should go
+****
--- /dev/null
+# pipe and file deliveries from aliasfile
+exim -odi pipe
+Message to pipe.
+****
+exim -odi file
+Message to file.
+****
--- /dev/null
+# one_time in forwardfile
+exim -odi first
+****
+exim -qf
+****
--- /dev/null
+# pipe, file, and autoreply deliveries from forwardfile
+exim -odi pipe
+Message to pipe.
+****
+exim -odi file
+Message to file.
+****
+exim -odi reply
+Message to reply.
+****
+exim -odi reply
+Message to reply.
+****
--- /dev/null
+# forwardfile: uid and home directory tests
+exim -odi userx
+Message to userx.
+****
+exim -odi one-userx
+Message to one-userx.
+****
+exim -odi two-userx
+Message to two-userx.
+****
+exim -odi three-userx
+Message to three-userx.
+****
--- /dev/null
+# unseen (including address_data passing)
+exim -odi dcopy defer
+Message sent to dcopy.
+****
+exim -odi acopy defer
+Message sent to acopy.
+****
+exim -qf
+****
--- /dev/null
+# host in MX list more than once
+#
+# The different domains produce the same list of hosts, but in different
+# orders, to simulate a real nameserver's round robinning.
+#
+exim -d-all+route -bv xxx@mxt9.test.ex
+****
+exim -d-all+route -bv xxx@mxt9a.test.ex
+****
+exim -d-all+route -bv xxx@mxt9b.test.ex
+****
--- /dev/null
+# first_delivery and queue_running
+exim -odi userx
+****
+exim -M $msg1
+****
+exim -qf
+****
--- /dev/null
+# -R and -S
+exim -odq postmaster
+****
+exim -Rpostmaster
+****
+exim -Rf postmaster
+****
+exim -R postmaster
+****
+exim -S postmaster
+****
+exim -S CALLER
+****
+exim -Rr p[aeiou]st
+****
+exim -Sr 'CALLER|^post'
+****
+exim -qqSr 'CALLER'
+****
+exim -qSr '^10'
+****
+exim -R postmaster -S postmaster
+****
+exim -S CALLER -R master
+****
--- /dev/null
+# $message_age
+exim -odi postmaster
+****
+exim -odi -qf
+****
+sleep 3
+exim -odi -qf
+****
--- /dev/null
+# Sender verification (envelope and header)
+exim -bh 127.0.0.1
+mail from:<unknown@test.ex>
+rcpt to:<userx@test.ex>
+rset
+mail from:<userx@unknown.dom.ain>
+rcpt to:<userx@test.ex>
+rset
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+From: unknown@test.ex
+.
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+From: <>
+.
+mail from:<defer@test.ex>
+rcpt to:<userx@test.ex>
+rset
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+from: <defer@test.ex>
+.
+quit
+****
--- /dev/null
+# msglog frozen messages
+exim -odi freeze
+****
+exim -odi -f '<>' unknown
+****
+sudo exim -odi -f '<>' unknown
+****
--- /dev/null
+# lookup_open_max
+2
+exim -d -bt x y z
+****
--- /dev/null
+# host lookup failure error message
+exim -bh V4NET.0.0.97
+mail from:<userx@test.ex>
+rcpt to:<userx@external.test.ex>
+rset
+mail from:<userx@test.ex>
+rcpt to:<userx@external.test.ex>
+quit
+****
--- /dev/null
+# very long header line
+exim -odq userx@test.ex
+From: userx@test.ex
+To: 000@test.ex, 001@test.ex, 002@test.ex, 003@test.ex, 004@test.ex,
+ 005@test.ex, 006@test.ex, 007@test.ex, 008@test.ex, 009@test.ex,
+ 010@test.ex, 011@test.ex, 012@test.ex, 013@test.ex, 014@test.ex,
+ 015@test.ex, 016@test.ex, 017@test.ex, 018@test.ex, 019@test.ex,
+ 020@test.ex, 021@test.ex, 022@test.ex, 023@test.ex, 024@test.ex,
+ 025@test.ex, 026@test.ex, 027@test.ex, 028@test.ex, 029@test.ex,
+ 030@test.ex, 031@test.ex, 032@test.ex, 033@test.ex, 034@test.ex,
+ 035@test.ex, 036@test.ex, 037@test.ex, 038@test.ex, 039@test.ex,
+ 040@test.ex, 041@test.ex, 042@test.ex, 043@test.ex, 044@test.ex,
+ 045@test.ex, 046@test.ex, 047@test.ex, 048@test.ex, 049@test.ex,
+ 050@test.ex, 051@test.ex, 052@test.ex, 053@test.ex, 054@test.ex,
+ 055@test.ex, 056@test.ex, 057@test.ex, 058@test.ex, 059@test.ex,
+ 060@test.ex, 061@test.ex, 062@test.ex, 063@test.ex, 064@test.ex,
+ 065@test.ex, 066@test.ex, 067@test.ex, 068@test.ex, 069@test.ex,
+ 070@test.ex, 071@test.ex, 072@test.ex, 073@test.ex, 074@test.ex,
+ 075@test.ex, 076@test.ex, 077@test.ex, 078@test.ex, 079@test.ex,
+ 080@test.ex, 081@test.ex, 082@test.ex, 083@test.ex, 084@test.ex,
+ 085@test.ex, 086@test.ex, 087@test.ex, 088@test.ex, 089@test.ex,
+ 090@test.ex, 091@test.ex, 092@test.ex, 093@test.ex, 094@test.ex,
+ 095@test.ex, 096@test.ex, 097@test.ex, 098@test.ex, 099@test.ex,
+ 100@test.ex, 101@test.ex, 102@test.ex, 103@test.ex, 104@test.ex,
+ 105@test.ex, 106@test.ex, 107@test.ex, 108@test.ex, 109@test.ex,
+ 110@test.ex, 111@test.ex, 112@test.ex, 113@test.ex, 114@test.ex,
+ 115@test.ex, 116@test.ex, 117@test.ex, 118@test.ex, 119@test.ex,
+ 120@test.ex, 121@test.ex, 122@test.ex, 123@test.ex, 124@test.ex,
+ 125@test.ex, 126@test.ex, 127@test.ex, 128@test.ex, 129@test.ex,
+ 130@test.ex, 131@test.ex, 132@test.ex, 133@test.ex, 134@test.ex,
+ 135@test.ex, 136@test.ex, 137@test.ex, 138@test.ex, 139@test.ex,
+ 140@test.ex, 141@test.ex, 142@test.ex, 143@test.ex, 144@test.ex,
+ 145@test.ex, 146@test.ex, 147@test.ex, 148@test.ex, 149@test.ex,
+ 150@test.ex, 151@test.ex, 152@test.ex, 153@test.ex, 154@test.ex,
+ 155@test.ex, 156@test.ex, 157@test.ex, 158@test.ex, 159@test.ex,
+ 160@test.ex, 161@test.ex, 162@test.ex, 163@test.ex, 164@test.ex,
+ 165@test.ex, 166@test.ex, 167@test.ex, 168@test.ex, 169@test.ex,
+ 170@test.ex, 171@test.ex, 172@test.ex, 173@test.ex, 174@test.ex,
+ 175@test.ex, 176@test.ex, 177@test.ex, 178@test.ex, 179@test.ex,
+ 180@test.ex, 181@test.ex, 182@test.ex, 183@test.ex, 184@test.ex,
+ 185@test.ex, 186@test.ex, 187@test.ex, 188@test.ex, 189@test.ex,
+ 190@test.ex, 191@test.ex, 192@test.ex, 193@test.ex, 194@test.ex,
+ 195@test.ex, 196@test.ex, 197@test.ex, 198@test.ex, 199@test.ex,
+ 200@test.ex, 201@test.ex, 202@test.ex, 203@test.ex, 204@test.ex,
+ 205@test.ex, 206@test.ex, 207@test.ex, 208@test.ex, 209@test.ex,
+ 210@test.ex, 211@test.ex, 212@test.ex, 213@test.ex, 214@test.ex,
+ 215@test.ex, 216@test.ex, 217@test.ex, 218@test.ex, 219@test.ex,
+ 220@test.ex, 221@test.ex, 222@test.ex, 223@test.ex, 224@test.ex,
+ 225@test.ex, 226@test.ex, 227@test.ex, 228@test.ex, 229@test.ex,
+ 230@test.ex, 231@test.ex, 232@test.ex, 233@test.ex, 234@test.ex,
+ 235@test.ex, 236@test.ex, 237@test.ex, 238@test.ex, 239@test.ex,
+ 240@test.ex, 241@test.ex, 242@test.ex, 243@test.ex, 244@test.ex,
+ 245@test.ex, 246@test.ex, 247@test.ex, 248@test.ex, 249@test.ex,
+ 250@test.ex, 251@test.ex, 252@test.ex, 253@test.ex, 254@test.ex,
+ 255@test.ex, 256@test.ex, 257@test.ex, 258@test.ex, 259@test.ex,
+ 260@test.ex, 261@test.ex, 262@test.ex, 263@test.ex, 264@test.ex,
+ 265@test.ex, 266@test.ex, 267@test.ex, 268@test.ex, 269@test.ex,
+ 270@test.ex, 271@test.ex, 272@test.ex, 273@test.ex, 274@test.ex,
+ 275@test.ex, 276@test.ex, 277@test.ex, 278@test.ex, 279@test.ex,
+ 280@test.ex, 281@test.ex, 282@test.ex, 283@test.ex, 284@test.ex,
+ 285@test.ex, 286@test.ex, 287@test.ex, 288@test.ex, 289@test.ex,
+ 290@test.ex, 291@test.ex, 292@test.ex, 293@test.ex, 294@test.ex,
+ 295@test.ex, 296@test.ex, 297@test.ex, 298@test.ex, 299@test.ex,
+ 300@test.ex, 301@test.ex, 302@test.ex, 303@test.ex, 304@test.ex,
+ 305@test.ex, 306@test.ex, 307@test.ex, 308@test.ex, 309@test.ex,
+ 310@test.ex, 311@test.ex, 312@test.ex, 313@test.ex, 314@test.ex,
+ 315@test.ex, 316@test.ex, 317@test.ex, 318@test.ex, 319@test.ex,
+ 320@test.ex, 321@test.ex, 322@test.ex, 323@test.ex, 324@test.ex,
+ 325@test.ex, 326@test.ex, 327@test.ex, 328@test.ex, 329@test.ex,
+ 330@test.ex, 331@test.ex, 332@test.ex, 333@test.ex, 334@test.ex,
+ 335@test.ex, 336@test.ex, 337@test.ex, 338@test.ex, 339@test.ex,
+ 340@test.ex, 341@test.ex, 342@test.ex, 343@test.ex, 344@test.ex,
+ 345@test.ex, 346@test.ex, 347@test.ex, 348@test.ex, 349@test.ex,
+ 350@test.ex, 351@test.ex, 352@test.ex, 353@test.ex, 354@test.ex,
+ 355@test.ex, 356@test.ex, 357@test.ex, 358@test.ex, 359@test.ex,
+ 360@test.ex, 361@test.ex, 362@test.ex, 363@test.ex, 364@test.ex,
+ 365@test.ex, 366@test.ex, 367@test.ex, 368@test.ex, 369@test.ex,
+ 370@test.ex, 371@test.ex, 372@test.ex, 373@test.ex, 374@test.ex,
+ 375@test.ex, 376@test.ex, 377@test.ex, 378@test.ex, 379@test.ex,
+ 380@test.ex, 381@test.ex, 382@test.ex, 383@test.ex, 384@test.ex,
+ 385@test.ex, 386@test.ex, 387@test.ex, 388@test.ex, 389@test.ex,
+ 390@test.ex, 391@test.ex, 392@test.ex, 393@test.ex, 394@test.ex,
+ 395@test.ex, 396@test.ex, 397@test.ex, 398@test.ex, 399@test.ex,
+ 400@test.ex, 401@test.ex, 402@test.ex, 403@test.ex, 404@test.ex,
+ 405@test.ex, 406@test.ex, 407@test.ex, 408@test.ex, 409@test.ex,
+ 410@test.ex, 411@test.ex, 412@test.ex, 413@test.ex, 414@test.ex,
+ 415@test.ex, 416@test.ex, 417@test.ex, 418@test.ex, 419@test.ex,
+ 420@test.ex, 421@test.ex, 422@test.ex, 423@test.ex, 424@test.ex,
+ 425@test.ex, 426@test.ex, 427@test.ex, 428@test.ex, 429@test.ex,
+ 430@test.ex, 431@test.ex, 432@test.ex, 433@test.ex, 434@test.ex,
+ 435@test.ex, 436@test.ex, 437@test.ex, 438@test.ex, 439@test.ex,
+ 440@test.ex, 441@test.ex, 442@test.ex, 443@test.ex, 444@test.ex,
+ 445@test.ex, 446@test.ex, 447@test.ex, 448@test.ex, 449@test.ex,
+ 450@test.ex, 451@test.ex, 452@test.ex, 453@test.ex, 454@test.ex,
+ 455@test.ex, 456@test.ex, 457@test.ex, 458@test.ex, 459@test.ex,
+ 460@test.ex, 461@test.ex, 462@test.ex, 463@test.ex, 464@test.ex,
+ 465@test.ex, 466@test.ex, 467@test.ex, 468@test.ex, 469@test.ex,
+ 470@test.ex, 471@test.ex, 472@test.ex, 473@test.ex, 474@test.ex,
+ 475@test.ex, 476@test.ex, 477@test.ex, 478@test.ex, 479@test.ex,
+ 480@test.ex, 481@test.ex, 482@test.ex, 483@test.ex, 484@test.ex,
+ 485@test.ex, 486@test.ex, 487@test.ex, 488@test.ex, 489@test.ex,
+ 490@test.ex, 491@test.ex, 492@test.ex, 493@test.ex, 494@test.ex,
+ 495@test.ex, 496@test.ex, 497@test.ex, 498@test.ex, 499@test.ex,
+ 500@test.ex, 501@test.ex, 502@test.ex, 503@test.ex, 504@test.ex,
+ 505@test.ex, 506@test.ex, 507@test.ex, 508@test.ex, 509@test.ex,
+ 510@test.ex, 511@test.ex, 512@test.ex, 513@test.ex, 514@test.ex,
+ 515@test.ex, 516@test.ex, 517@test.ex, 518@test.ex, 519@test.ex,
+ 520@test.ex, 521@test.ex, 522@test.ex, 523@test.ex, 524@test.ex,
+ 525@test.ex, 526@test.ex, 527@test.ex, 528@test.ex, 529@test.ex,
+ 530@test.ex, 531@test.ex, 532@test.ex, 533@test.ex, 534@test.ex,
+ 535@test.ex, 536@test.ex, 537@test.ex, 538@test.ex, 539@test.ex,
+ 540@test.ex, 541@test.ex, 542@test.ex, 543@test.ex, 544@test.ex,
+ 545@test.ex, 546@test.ex, 547@test.ex, 548@test.ex, 549@test.ex,
+ 550@test.ex, 551@test.ex, 552@test.ex, 553@test.ex, 554@test.ex,
+ 555@test.ex, 556@test.ex, 557@test.ex, 558@test.ex, 559@test.ex,
+ 560@test.ex, 561@test.ex, 562@test.ex, 563@test.ex, 564@test.ex,
+ 565@test.ex, 566@test.ex, 567@test.ex, 568@test.ex, 569@test.ex,
+ 570@test.ex, 571@test.ex, 572@test.ex, 573@test.ex, 574@test.ex,
+ 575@test.ex, 576@test.ex, 577@test.ex, 578@test.ex, 579@test.ex,
+ 580@test.ex, 581@test.ex, 582@test.ex, 583@test.ex, 584@test.ex,
+ 585@test.ex, 586@test.ex, 587@test.ex, 588@test.ex, 589@test.ex,
+ 590@test.ex, 591@test.ex, 592@test.ex, 593@test.ex, 594@test.ex,
+ 595@test.ex, 596@test.ex, 597@test.ex, 598@test.ex, 599@test.ex,
+ 600@test.ex, 601@test.ex, 602@test.ex, 603@test.ex, 604@test.ex,
+ 605@test.ex, 606@test.ex, 607@test.ex, 608@test.ex, 609@test.ex,
+ 610@test.ex, 611@test.ex, 612@test.ex, 613@test.ex, 614@test.ex,
+ 615@test.ex, 616@test.ex, 617@test.ex, 618@test.ex, 619@test.ex,
+ 620@test.ex, 621@test.ex, 622@test.ex, 623@test.ex, 624@test.ex,
+ 625@test.ex, 626@test.ex, 627@test.ex, 628@test.ex, 629@test.ex,
+ 630@test.ex, 631@test.ex, 632@test.ex, 633@test.ex, 634@test.ex,
+ 635@test.ex, 636@test.ex, 637@test.ex, 638@test.ex, 639@test.ex,
+ 640@test.ex, 641@test.ex, 642@test.ex, 643@test.ex, 644@test.ex,
+ 645@test.ex, 646@test.ex, 647@test.ex, 648@test.ex, 649@test.ex,
+ 650@test.ex, 651@test.ex, 652@test.ex, 653@test.ex, 654@test.ex,
+ 655@test.ex, 656@test.ex, 657@test.ex, 658@test.ex, 659@test.ex,
+ 660@test.ex, 661@test.ex, 662@test.ex, 663@test.ex, 664@test.ex,
+ 665@test.ex, 666@test.ex, 667@test.ex, 668@test.ex, 669@test.ex,
+ 670@test.ex, 671@test.ex, 672@test.ex, 673@test.ex, 674@test.ex,
+ 675@test.ex, 676@test.ex, 677@test.ex, 678@test.ex, 679@test.ex,
+ 680@test.ex, 681@test.ex, 682@test.ex, 683@test.ex, 684@test.ex,
+ 685@test.ex, 686@test.ex, 687@test.ex, 688@test.ex, 689@test.ex,
+ 690@test.ex, 691@test.ex, 692@test.ex, 693@test.ex, 694@test.ex,
+ 695@test.ex, 696@test.ex, 697@test.ex, 698@test.ex, 699@test.ex,
+ 700@test.ex, 701@test.ex, 702@test.ex, 703@test.ex, 704@test.ex,
+ 705@test.ex, 706@test.ex, 707@test.ex, 708@test.ex, 709@test.ex,
+ 710@test.ex, 711@test.ex, 712@test.ex, 713@test.ex, 714@test.ex,
+ 715@test.ex, 716@test.ex, 717@test.ex, 718@test.ex, 719@test.ex,
+ 720@test.ex, 721@test.ex, 722@test.ex, 723@test.ex, 724@test.ex,
+ 725@test.ex, 726@test.ex, 727@test.ex, 728@test.ex, 729@test.ex,
+ 730@test.ex, 731@test.ex, 732@test.ex, 733@test.ex, 734@test.ex,
+ 735@test.ex, 736@test.ex, 737@test.ex, 738@test.ex, 739@test.ex,
+ 740@test.ex, 741@test.ex, 742@test.ex, 743@test.ex, 744@test.ex,
+ 745@test.ex, 746@test.ex, 747@test.ex, 748@test.ex, 749@test.ex,
+ 750@test.ex, 751@test.ex, 752@test.ex, 753@test.ex, 754@test.ex,
+ 755@test.ex, 756@test.ex, 757@test.ex, 758@test.ex, 759@test.ex,
+ 760@test.ex, 761@test.ex, 762@test.ex, 763@test.ex, 764@test.ex,
+ 765@test.ex, 766@test.ex, 767@test.ex, 768@test.ex, 769@test.ex,
+ 770@test.ex, 771@test.ex, 772@test.ex, 773@test.ex, 774@test.ex,
+ 775@test.ex, 776@test.ex, 777@test.ex, 778@test.ex, 779@test.ex,
+ 780@test.ex, 781@test.ex, 782@test.ex, 783@test.ex, 784@test.ex,
+ 785@test.ex, 786@test.ex, 787@test.ex, 788@test.ex, 789@test.ex,
+ 790@test.ex, 791@test.ex, 792@test.ex, 793@test.ex, 794@test.ex,
+ 795@test.ex, 796@test.ex, 797@test.ex, 798@test.ex, 799@test.ex,
+ 800@test.ex, 801@test.ex, 802@test.ex, 803@test.ex, 804@test.ex,
+ 805@test.ex, 806@test.ex, 807@test.ex, 808@test.ex, 809@test.ex,
+ 810@test.ex, 811@test.ex, 812@test.ex, 813@test.ex, 814@test.ex,
+ 815@test.ex, 816@test.ex, 817@test.ex, 818@test.ex, 819@test.ex,
+ 820@test.ex, 821@test.ex, 822@test.ex, 823@test.ex, 824@test.ex,
+ 825@test.ex, 826@test.ex, 827@test.ex, 828@test.ex, 829@test.ex,
+ 830@test.ex, 831@test.ex, 832@test.ex, 833@test.ex, 834@test.ex,
+ 835@test.ex, 836@test.ex, 837@test.ex, 838@test.ex, 839@test.ex,
+ 840@test.ex, 841@test.ex, 842@test.ex, 843@test.ex, 844@test.ex,
+ 845@test.ex, 846@test.ex, 847@test.ex, 848@test.ex, 849@test.ex,
+ 850@test.ex, 851@test.ex, 852@test.ex, 853@test.ex, 854@test.ex,
+ 855@test.ex, 856@test.ex, 857@test.ex, 858@test.ex, 859@test.ex,
+ 860@test.ex, 861@test.ex, 862@test.ex, 863@test.ex, 864@test.ex,
+ 865@test.ex, 866@test.ex, 867@test.ex, 868@test.ex, 869@test.ex,
+ 870@test.ex, 871@test.ex, 872@test.ex, 873@test.ex, 874@test.ex,
+ 875@test.ex, 876@test.ex, 877@test.ex, 878@test.ex, 879@test.ex,
+ 880@test.ex, 881@test.ex, 882@test.ex, 883@test.ex, 884@test.ex,
+ 885@test.ex, 886@test.ex, 887@test.ex, 888@test.ex, 889@test.ex,
+ 890@test.ex, 891@test.ex, 892@test.ex, 893@test.ex, 894@test.ex,
+ 895@test.ex, 896@test.ex, 897@test.ex, 898@test.ex, 899@test.ex,
+ 900@test.ex, 901@test.ex, 902@test.ex, 903@test.ex, 904@test.ex,
+ 905@test.ex, 906@test.ex, 907@test.ex, 908@test.ex, 909@test.ex,
+ 910@test.ex, 911@test.ex, 912@test.ex, 913@test.ex, 914@test.ex,
+ 915@test.ex, 916@test.ex, 917@test.ex, 918@test.ex, 919@test.ex,
+ 920@test.ex, 921@test.ex, 922@test.ex, 923@test.ex, 924@test.ex,
+ 925@test.ex, 926@test.ex, 927@test.ex, 928@test.ex, 929@test.ex,
+ 930@test.ex, 931@test.ex, 932@test.ex, 933@test.ex, 934@test.ex,
+ 935@test.ex, 936@test.ex, 937@test.ex, 938@test.ex, 939@test.ex,
+ 940@test.ex, 941@test.ex, 942@test.ex, 943@test.ex, 944@test.ex,
+ 945@test.ex, 946@test.ex, 947@test.ex, 948@test.ex, 949@test.ex,
+ 950@test.ex, 951@test.ex, 952@test.ex, 953@test.ex, 954@test.ex,
+ 955@test.ex, 956@test.ex, 957@test.ex, 958@test.ex, 959@test.ex,
+ 960@test.ex, 961@test.ex, 962@test.ex, 963@test.ex, 964@test.ex,
+ 965@test.ex, 966@test.ex, 967@test.ex, 968@test.ex, 969@test.ex,
+ 970@test.ex, 971@test.ex, 972@test.ex, 973@test.ex, 974@test.ex,
+ 975@test.ex, 976@test.ex, 977@test.ex, 978@test.ex, 979@test.ex,
+ 980@test.ex, 981@test.ex, 982@test.ex, 983@test.ex, 984@test.ex,
+ 985@test.ex, 986@test.ex, 987@test.ex, 988@test.ex, 989@test.ex,
+ 990@test.ex, 991@test.ex, 992@test.ex, 993@test.ex, 994@test.ex,
+ 995@test.ex, 996@test.ex, 997@test.ex, 998@test.ex, 999@test.ex
+
+Here is a very short message.
+.
+****
+no_msglog_check
--- /dev/null
+# senders precondition in router
+2
+exim -bt userx@test.ex
--- /dev/null
+# Sender: header (untrusted caller with local_sender_retain)
+exim -odi userx@test.ex
+Sender: Sender in original <sender@original.ex>
+
+This is a test message.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+Sender: Sender in original <sender@original.ex>
+
+This is a test message.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+
+This is a test message.
+****
+exim -odi userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+
+This is a test message.
+****
+exim -bs -odi
+mail from:userx@cus.cam.ac.uk
+rcpt to:userx@test.ex
+data
+Sender: Sender in original <sender@original.ex>
+
+This is a test message.
+.
+quit
+****
+exim -odi userx@test.ex
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message.
+****
+exim -odi -f userx@outside.ex userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message.
+****
+exim -odi userx@test.ex
+From userx@elsewhere.ex Fri Jan 5 12:35 GMT 1996
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message.
+****
+exim -bs -odi
+mail from:userx@cus.cam.ac.uk
+rcpt to:userx@test.ex
+data
+Sender: Sender in original <sender@original.ex>
+From: From person <from@some.where>
+
+This is a test message.
+.
+quit
+
--- /dev/null
+# autoreply with failing once file
+exim -odi userx@test.ex
+Subject: first message; non-printer >\r<
+****
--- /dev/null
+# $domain_data
+2
+exim -v -bv xxx@test.ex xxx@one.test.ex
+****
--- /dev/null
+# remote host IP address is the local host
+need_ipv4
+#
+exim -bh V4NET.0.0.0
+mail from:<userx@test.ex>
+rcpt to:<userx@not.test.ex>
+quit
+****
+exim -odi userx@not.test.ex
+.
+****
+1
+exim -bt userx@not.test.ex
--- /dev/null
+# self = pass with unseen filter
+exim -odi userx@not.test.ex
+Test message
+.
--- /dev/null
+# deliver to a FIFO (nothing listening)
+mkfifo -m 0600 DIR/test-fifo
+exim -odi userx@test.ex
+Test message
+.
--- /dev/null
+# qualify_preserve_domain
+exim -odi userx@a.test.ex, usery@b.test.ex
+Test message
+.
--- /dev/null
+# $domain_data and $local_part_data and caseful $local_part handling
+exim -odi unknown@test.ex
+Test message
+.
+****
+exim -odi userx@unknown.test.ex
+Test message
+.
+****
+exim -odi unknown@test.ex userx@test.ex
+Test message
+.
+****
+exim -odi userx@unknown.domain
+Test message
+.
+****
+exim -odi userx@known.domain
+Test message
+.
+****
+exim -odi UNKNOWN@KNOWN.DOMAIN
+Test to uppercased local part UNKNOWN@KNOWN.DOMAIN
+.
+****
+exim -odi USERX@KNOWN.DOMAIN
+Test to uppercased local part USERX@KNOWN.DOMAIN
+.
+****
+exim -odi PIPE@PIPE.DOMAIN
+Test to uppercased piped address.
+.
+****
--- /dev/null
+# ultimate address timeout
+need_ipv4
+#
+exim -odq a@unknown.ex b@known.ex c@test.ex d@test.ex
+Test message
+.
+****
+sleep 3
+exim -odi -q
+****
+exim -odi -q
+****
+sleep 4
+exim -odi -q
+****
+# Remove so that next message does not arrive before
+# the time of first failure.
+sudo rm DIR/spool/db/retry
+exim -odq -f '<>' b@known.ex
+test 2
+.
+****
+sleep 3
+exim -odi -q
+****
+no_message_check
--- /dev/null
+# errors_to in user filters and bounce_return_body
+exim -odi -bs
+mail from:<abcd@x.y.z>
+rcpt to:<forwarder@test.ex>
+rcpt to:<forwarder2@test.ex>
+data
+Test message.
+.
+quit
+****
+exim -DBRB=false -odi -bs
+mail from:<abcd@x.y.z>
+rcpt to:<forwarder@test.ex>
+rcpt to:<forwarder2@test.ex>
+data
+Test message.
+Several lines.
+Several lines.
+.
+quit
+****
--- /dev/null
+# mailbox locking
+exim -odi userx
+Transport: local_delivery
+First message.
+****
+exim_lock -v test-mail/userx
+exim -odi userx
+Transport: local_delivery
+Second message
+****
+exim -qf
+****
+exim_lock -v -fcntl test-mail/userx
+exim -odi userx
+Transport: local_delivery_fcntl
+Third message
+****
+exim -qf
+****
+exim_lock -v -fcntl test-mail/userx
+exim -odi userx
+Transport: local_delivery_fcntl_blocking
+Fourth message
+****
+exim -qf
+****
--- /dev/null
+# RBL /accept (default reject)
+exim -bh V4NET.11.12.14
+ehlo exim.test.ex
+mail from:postmaster@exim.test.ex
+rcpt to:<userx@exim.test.ex>
+rcpt to:list@exim.test.ex
+data
+test data
+.
+quit
+****
+exim -bh V4NET.11.12.13
+ehlo exim.test.ex
+mail from:<postmaster@exim.test.ex>
+rcpt to:<userx@exim.test.ex>
+data
+test message data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# RBL specific address
+exim -bh V4NET.11.12.14
+mail from:postmaster@exim.test.ex
+rcpt to:<userx@exim.test.ex>
+rcpt to:list@exim.test.ex
+data
+test data
+.
+quit
+****
+exim -bh V4NET.11.12.15
+mail from:<postmaster@exim.test.ex>
+rcpt to:<userx@exim.test.ex>
+data
+test message data
+.
+quit
+****
+exim -bh V4NET.11.12.20
+mail from:<postmaster@exim.test.ex>
+quit
+****
+exim -bh V4NET.11.12.21
+mail from:<postmaster@exim.test.ex>
+quit
+****
+no_msglog_check
--- /dev/null
+# autoreply with non-printing characters
+exim -odi reply1@test.ex
+Subject: first message; non-printer >\b<
+****
+exim -odi reply2@test.ex
+Subject: first message; non-printer >\b<
+****
--- /dev/null
+# -bv, -bt with trusted things
+2
+exim -bv -oMr prot1 xxx@test.ex
+****
+2
+exim -bt -oMr prot2 xxx@test.ex
+****
+2
+exim -bvs xxx@test.ex
+****
+exim -odi -oMr prot1 xxx@test.ex
+****
--- /dev/null
+# open file descriptor test
+exim -odi pipe filter
+Test message
+.
+****
--- /dev/null
+# smtp client "interface" option
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH LOGIN
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -d-all+transport -odi userx@domain.com
+.
+****
--- /dev/null
+# DNS_AGAIN in manualroute
+need_ipv4
+#
+exim -odi x@remote.domain
+****
+no_msglog_check
--- /dev/null
+# MX pointing to IP address not allowed
+2
+exim -bt x@mxt10.test.ex
+****
+exim -bh V4NET.9.8.7
+mail from:<x@mxt10.test.ex>
+rcpt to:<x@y>
+quit
+****
+exim -bh V4NET.9.8.7
+mail from:<x@ten-1.test.ex>
+rcpt to:<x@mxt10.test.ex>
+quit
+****
--- /dev/null
+# MX pointing to IP address allowed
+exim -bt x@mxt10.test.ex
+****
--- /dev/null
+# Continuation lines and long lines and macro (re)definition
+need_ipv4
+#
+exim -bP percent_hack_domains hold_domains queue_domains host_lookup queue_smtp_domains hosts_treat_as_local ignore_fromline_hosts delay_warning_condition
+****
+exim -brw x@junk.junk
+****
+exim -brt x@junk.junk
+****
+exim -bP router R1
+****
+exim -bs
+****
--- /dev/null
+# Missing quote in option value
+1
+exim -bP log_file_path
+****
--- /dev/null
+# List delimiters
+exim -d-all+route -bv x@ten y@two x@test1 x@test2 x@test3-4 x@one x@six
+****
--- /dev/null
+# control of Sender: (default, includes Sender:)
+exim -odi postmaster
+From: not.the.login@test.ex
+Test message
+.
+****
--- /dev/null
+# control of Sender: (no_local_sender_check)
+exim -odi postmaster
+From: not.the.login@test.ex
+Test message
+.
+****
--- /dev/null
+# control of Sender: (local_from_{suf,pre}fix)
+exim -odi postmaster
+From: not.the.login@test.ex
+Test message
+.
+****
+exim -odi postmaster
+From: page+CALLER@test.ex
+Test message
+.
+****
+exim -odi postmaster
+From: call+CALLER@test.ex
+Test message
+.
+****
+exim -odi postmaster
+From: call-CALLER@test.ex
+Test message
+.
+****
+exim -odi postmaster
+From: CALLER&page@test.ex
+Test message
+.
+****
+exim -odi postmaster
+From: CALLER&call@test.ex
+Test message
+.
+****
+exim -odi postmaster
+From: CALLER=call@test.ex
+Test message
+.
+****
+exim -odi postmaster
+From: page+CALLER=call@test.ex
+Test message
+.
+****
--- /dev/null
+# virtual domains and mailing list basic test of no_more
+2
+exim -bv abcd@test.ex yes@exists.virt.test.ex no@exists.virt.test.ex xx@notexists.virt.test.ex
+****
+2
+exim -bv yes@list.test.ex no@list.test.ex
+****
--- /dev/null
+# queue run in order - single spool
+exim -odq a@test.ex
+****
+millisleep 500
+exim -odq b@test.ex
+****
+millisleep 500
+exim -odq c@test.ex
+****
+millisleep 500
+exim -odq d@test.ex
+****
+millisleep 500
+exim -odq e@test.ex
+****
+millisleep 500
+exim -odq f@test.ex
+****
+millisleep 500
+exim -odq g@test.ex
+****
+millisleep 500
+exim -odq h@test.ex
+****
+millisleep 500
+exim -odq i@test.ex
+****
+millisleep 500
+exim -odq j@test.ex
+****
+exim -bp
+****
+exim -q
+****
+no_msglog_check
--- /dev/null
+# queue run in order - split spool
+exim -odq a@test.ex
+****
+millisleep 500
+exim -odq b@test.ex
+****
+millisleep 500
+exim -odq c@test.ex
+****
+millisleep 500
+exim -odq d@test.ex
+****
+millisleep 500
+exim -odq e@test.ex
+****
+millisleep 500
+exim -odq f@test.ex
+****
+millisleep 500
+exim -odq g@test.ex
+****
+millisleep 500
+exim -odq h@test.ex
+****
+millisleep 500
+exim -odq i@test.ex
+****
+millisleep 500
+exim -odq j@test.ex
+****
+exim -bp
+****
+exim -q
+****
+no_msglog_check
--- /dev/null
+# redirect router with forbids
+1
+exim -bt defer file include
+****
+exim -odi defer file include
+****
+2
+exim -bt unknown
+****
+no_msglog_check
--- /dev/null
+# relay by sender and host
+exim -bh V4NET.0.0.1
+mail from:<x@y.z>
+rcpt to:<a@b.c>
+rset
+mail from:<userx@test.ex>
+rcpt to:<a@b.c>
+quit
+****
+exim -bh V4NET.0.0.2
+mail from:<x@y.z>
+rcpt to:<a@b.c>
+rset
+mail from:<userx@test.ex>
+rcpt to:<a@b.c>
+quit
+****
+exim -bh V4NET.0.0.3
+mail from:<x@y.z>
+rcpt to:<a@b.c>
+rset
+mail from:<userx@test.ex>
+rcpt to:<a@b.c>
+quit
+****
--- /dev/null
+# deliver_drop_privilege and setuid=EXIMUSER
+exim -odi CALLER
+Testing
+****
+exim -odi EXIMUSER
+Testing
+****
+exim_exim -odi EXIMUSER
+Testing setuid EXIMUSER
+****
+no_msglog_check
--- /dev/null
+# recognizing IPv4 address in HELO/EHLO
+need_ipv4
+#
+# Incoming messages will be queued; deliver by queue run at the end.
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client HOSTIPV4 PORT_D
+??? 220
+ehlo [HOSTIPV4]
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+data
+??? 354
+To: userx@test.ex
+
+EHLO [HOSTIPV4]
+.
+??? 250
+ehlo [IPV4:HOSTIPV4]
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+data
+??? 354
+To: userx@test.ex
+
+EHLO [IPV4:HOSTIPV4]
+.
+??? 250
+ehlo HOSTIPV4
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+data
+??? 354
+To: userx@test.ex
+
+EHLO HOSTIPV4
+.
+??? 250
+ehlo [V4NET.1.2.3]
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+data
+??? 354
+To: userx@test.ex
+
+EHLO [V4NET.1.2.3]
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+# Wait for delivery process
+millisleep 500
+exim -q
+****
--- /dev/null
+# queue_only is set in the configuration
+need_ipv4
+#
+exim userx@domain.com
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+452 Temporary error
+QUIT
+250 OK
+****
+exim -q
+****
+sleep 4
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+452 Temporary error
+QUIT
+250 OK
+****
+exim -q
+****
+exim -q
+****
+no_msglog_check
--- /dev/null
+# further "self" tests
+need_ipv4
+#
+exim -d-all+route -bt xx@mxt6.test.ex
+****
+exim -d-all+route -bt myhost.test.ex@mxt1.test.ex
+****
+exim -d-all+route -bt xx@mxt1.test.ex
+****
+2
+exim -d-all+route -bt xx@not.exist
+****
+2
+exim -d-all+route -bt ff@mxt1.test.ex
+****
+2
+exim -d-all+route -bt fff@mxt1.test.ex
+****
--- /dev/null
+# failing header with very long apparent address
+exim -odq -bs
+mail from:<u2@test.ex>
+rcpt to:<u3@test.ex>
+data
+To: <u5@compuserve.com>,
+ <u6@emory.org>,
+ <u7@hotmail.com>,
+ <u8@olympus.ics.uci.edu>,
+ <u9@diana.ics.uci.edu>,
+ <u10@ics.uci.edu>,
+ <u11@hera.ics.uci.edu>,
+ <u12@isdtcp3.hwc.ca>,
+ <u13@hotmail.com>,
+ <u14@harris.com>,
+ <u15@texaco.com>,
+ <u16@compuserve.com>,
+ <u17@compuserve.com>,
+ <u18@mines.edu>,
+ <u19@pmc-sierra.com>,
+ <u20@cc.umanitoba.ca>,
+ <u21@vt.edu>,
+ <u22@cesani.newforce.ca>,
+ <u23@hermes.cam.ac.uk>,
+ <u24@io.org>,
+ <u25@acsu.buffalo.edu>,
+ <u26@acsu.buffalo.edu>,
+ <u27@terraport.net>,
+ <u28@freenet.carleton.ca>,
+ <u29@tsluk.com>,
+ <u30@aol.com>,
+ <u31@bellsouth.net>,
+ <u32@mailexcite.com>,
+ <u33@gpu.srv.ualberta.ca>,
+ <u34@auvm.american.edu>,
+ <u35@maspar.com>,
+ <u36@vm.cc.famu.edu>,
+ <u37@sympatico.ca>,
+ <u38@gsalink.com>,
+ <u39@hp.com>,
+ <u40@eudoramail.com>,
+ <u41@aol.com>,
+ <u42@cadvision.com>,
+ <u43@switchboardmail.com>,
+ <u44@geocities.com>,
+ <u45@mailexcite.com>,
+ <u46@injapan.net>,
+ <u47@mailexcite.com>,
+ <u48@hotmail.com>,
+ <u49@hotmail.com>,
+ <u50@redshift.com>,
+ <u51@ix.netcom.com>,
+ <u52@ix.netcom.com>,
+ <u53@oe.fau.edu>,
+ <u54@worldnet.att.net>,
+ <u55@ix.netcom.com>,
+ <u56@capecod.net>,
+ <u57@nol.net>,
+ <u58@ux1.cso.uiuc.edu>,
+ <u59@hotmail.com>,
+ <u60@compuserve.com>,
+ <u61@aol.com>,
+ <u62@hotmail.com>,
+ <u63@hpb.hwc.ca>,
+ <u64@hotmail.com>,
+ <u65@hotmail.com>,
+ <u66@alcor.concordia.ca>,
+ <u67@compuserve.com>,
+ <u68@tstt.net.tt>,
+ <u69@luccpua.it.luc.edu>,
+ <u70@super.zippo.com>,
+ <u71@sirius.com>,
+ <u72@craft.clarkson.edu>,
+ <u73@hotmail.com>,
+ <u74@iprolink.co.nz>,
+ <u75@dircon.co.uk>,
+ <u76@stratis-caribbean.com>,
+ <u77@aol.com>,
+ <u78@hotmail.com>,
+ <u79@webtv.net>,
+ <u80@unbsj.ca>,
+ <u81@caribsurf.com>,
+ <u82@shaw.wave.ca>,
+ <u83@aol.com>,
+ <u84@prodigy.net>,
+ <u85@mailexcite.com>,
+ <u86@pegasus.cc.ucf.edu>,
+ <u87@aol.com>,
+ <u88@angelfire.com>,
+ <u89@tibco.com>,
+ <u90@mailexcite.com>,
+ <u91@angelfire.com>,
+ <u92@worldnet.att.net>,
+ <u93@pacebell.net>,
+ <u94@msn.com>,
+ <u95@voicenet.com>,
+ <u96@compuserve.com>,
+ <u97@gpu.srv.ualberta.ca>,
+ <u98@cam.ac.uk>,
+ <u99@syr.edu>,
+ <u100@hotmail.com>,
+ <u101@sjumusic.stjohns.edu>,
+ <u102@aol.com>,
+ <u103@compuserve.com>,
+ <u104@compuserve.com>,
+ <u105@compuserve.com>,
+ <u106@wpg.ramp.net>,
+ <u107@webtv.net>,
+ <u108@compuserve.com>,
+ <u109@aol.com>,
+ <u110@compuserve.com>,
+ <u111@hotmail.com>,
+ <u112@yahoo.co.uk>,
+ <u113@bigfoot.com>,
+ <u114@nl2k.ab.ca>,
+ <u115@caribsurf.com>,
+ <u116@guyana.net.gy>,
+ <u117@hotmail.com>,
+ <u118@hotmail.com>,
+ <u119@webstersite.com>,
+ <u120@nortel.ca>,
+ <u121@snet.net>,
+ <u122@mailcity.com>,
+ <u123@aol.com>,
+ <u124@ucla.edu>,
+ <u125@compuserve.com>,
+ <u126@mailexcite.com>,
+ <u127@vax2.concordia.ca>,
+ <u128@wpo.it.luc.edu>,
+ <u129@ori.org>,
+ <u130@hpwinh43.uksr.hp.com>,
+ <u131@umbc2.umbc.edu>,
+ <u132@mailexcite.com>,
+ <u133@compuserve.com>,
+ <u134@marge.cs.mcgill.ca>,
+ <u135@homemail.com>,
+ <u136@idirect.com>,
+ <u137@mailcity.com>,
+ <u138@myworldmail.com>,
+ <u139@compuserve.com>,
+ <u140@thedoghousemail.com>,
+ <u141@compuserve.com>,
+ <u142@prodigy.com>,
+ <u143@compuserve.com>,
+ <u144@compuserve.com>,
+ <u145@istar.ca>,
+ <u146@hotmail.com>,
+ <u147@isdtcp3.hwc.ca>,
+ <u148@isdtcp3.hwc.ca>,
+ <u149@isdtcp3.hwc.ca>,
+ <u150@hotmail.com>,
+ <u151@sjumusic.stjohns.edu>,
+ <u152@is2.nyu.edu>,
+ <u153@email.psu.edu>,
+ <u154@hotmail.com>,
+ <u155@inet.lasierra.edu>,
+ <u156@angelfire.com>,
+ <u157@mailexcite.com>,
+ <u158@sunbeach.net>,
+ <u159@hotmail.com>,
+ <u160@hotmail.com>,
+ <u161@rfhsm.ac.uk>,
+ <u162@worldnet.att.net>,
+ <u163@hotmail.com>,
+ <u164@hotmail.com>,
+ <u165@sunbeach.net>,
+ <u166@sunbeach.net>,
+ <u167@mailcity.com>,
+ <u168@mailexcite.com>,
+ <u169@angelfire.com>,
+ <u170@mailexcite.com>,
+ <u171@mailexcite.com>,
+ <u172@mailexcite.com>,
+ <u173@mailexcite.com>,
+ <u174@gurlmail.com>,
+ <u175@webtv.net>,
+ <u176@zelacom.com>,
+ <u177@hotmail.com>,
+ <u178@hotmail.com>,
+ <u179@hotmail.com>,
+ <u180@ic.ac.uk>,
+ <u181@hotmail.com>,
+ <u182@compuserve.com>,
+ <u183@hotmail.com>,
+ <u184@barnard.columbia.edu>,
+ <u185@hotmail.com>,
+ <u186@compuserve.com>,
+ <u187@hotmail.com>,
+ <u188@hotmail.com>,
+ <u189@bigfoot.com>,
+ <u190@yahoo.com>,
+ <u191@frontiernet.net>,
+ <u192@mailexcite.com>,
+ <u193@pilot.msu.edu>,
+ <u194@pilot.msu.edu>,
+ <u195@eudoramail.com>,
+ <u196@hotmail.com>,
+ <u197@angelfire.com>,
+ <u198@angelfire.com>,
+ <u199@acsu.buffalo.edu>,
+ <u200@mailexcite.com>,
+ <u201@caribsurf.com>,
+ <u202@hotmail.com>,
+ <u203@gsaix2.cc.gasou.edu>,
+ <u204@gsaix2.cc.gas>,
+ <u205@hotmail.com>,
+ <u206@ubvms.cc.buffalo.edu>,
+ <u207@hotmail.com>,
+ <u208@hotmail.com>,
+ <u209@hotmail.com>,
+ <u210@worldnet.att.net>,
+ <u211@hotmail.com>,
+ <u212@shrike.depaul.edu">,
+ <u213@shrike.depaul.edu>,
+ <u214@hotmail.com>,
+ <u215@hotmail.com>,
+ <u216@hotmail.com>,
+ <u217@hotmail.com>,
+ <u218@hotmail.com>,
+ <u219@angelfire.com>,
+ <u220@chickmail.com>,
+ <u221@excite.com>,
+ <u222@chickmail.com>,
+ <u223@eudoramail.com>,
+ <u224@alleyne.demon.co.uk>,
+ <u225@dial.pipex.com>,
+ <u226@hotmail.com>,
+ <u227@gpu.srv.ualberta.ca>,
+ <u228@ulst.ac.uk>,
+ <u229@worldnet.att.net>,
+ <u230@hotmail.com>,
+ <u231@careerbuildermail.com>,
+ <u232@MSN.COM>,
+ <u233@angelfire.com>,
+ <u234@hotmail.com>,
+ <u235@hotmail.com>,
+ <u236@compuserve.com>,
+ <u237@compuserve.com>,
+ <u238@hotmail.com>,
+ <u239@bellsouth.net>,
+ <u240@n64rocks.com>,
+ <u241@mailexcite.com>,
+ <u242@mailexcite.com>,
+ <u243@mailcity.com>,
+ <u244@bigfoot.com>,
+ <u245@sunbeach.net>,
+ <u246@mailcity.com>,
+ <u247@pacbell.net>,
+ <u248@hotmail.com>,
+ <u249@worldnet.att.net>,
+ <u250@bigfoot.com>,
+ <u251@mailexcite.com>,
+ <u252@netnoir.net>,
+ <u253@cablecomm1.pcs.mot.com>,
+ <u254@compuserve.com>,
+ <u255@hertscc.gov.uk>,
+ <u256@aol.com>,
+ <u257@bigfoot.com>,
+ <u258@hotmail.com>,
+ <u259@email.psu.edu>,
+ <u260@hotmail.com>,
+ <u261@hotmail.com>,
+ <u262@hotmail.com>,
+ <u263@compuserve.com>,
+ <u264@compuserve.com>,
+ <u265@compuserve.com>,
+ <u266@ucl.ac.uk>,
+ <u267@hotmail.com>,
+ <u268@hotmail.com>,
+ <u269@hotmail.com>,
+ <u270@worldnet.att.net>,
+ <u271@hotmail.com>,
+ <u272@hotmail.com>,
+ <u273@hotmail.com>,
+ <u274@hotmail.com>,
+ <u275@hotmail.com>,
+ <u276@hotmail.com>,
+ <u277@bris.ac.uk>,
+ <u278@cornell.edu>,
+ <u279@hotmail.com>,
+ <u280@luccpua.it.luc.edu>,
+ <u281@hotmail.com>,
+ <u282@hotmail.com>,
+ <u283@hotmail.com>,
+ <u284@bigfoot.com>,
+ <u285@online.no>,
+ <u286@mars.rowan.edu>,
+ <u287@gwis2.circ.gwu.edu>,
+ <u288@hotmail.com>,
+ <u289@hotmail.com>,
+ <u290@hotmail.com>,
+ <u291@hotmail.com>,
+ <u292@hotmail.com>,
+ <u293@hotmail.com>,
+ <u294@hotmail.com>,
+ <u295@hotmail.com>,
+ <u296@bradford.ac.uk>,
+ <u297@hotmail.com>,
+ <u298@bigfoot.com>,
+ <u299@tstt.net.tt>,
+ <u300@hotmail.com>,
+ <u301@hotmail.com>,
+ <u302@aol.com>,
+ <u303@worldnet.att.net>,
+ <u304@hotmail.com>,
+ <u305@hotmail.com>,
+ <u306@sjumusic.stjohns.edu>,
+ <u307@compuserve.com>,
+ <u308@bigfoot.com>,
+ <u309@netstarsolutions.co.uk>,
+ <u310@hotmail.com>,
+ <u311@aol.com>,
+ <u312@law.ucla.edu>,
+ <u313@hotmail.com>,
+ <u314@hotmail.com>,
+ <u315@aol.com>,
+ <u316@gmu.edu>,
+ <u317@compuserve.com>,
+ <u318@hotmail.com>,
+ <u319@hotmail.com>,
+ <u320@compuserve.com>,
+ <u321@sjumusic.stjohns.edu>,
+ <u322@hotmail.com>,
+ <u323@cornell.edu>,
+ <u324@bham.ac.uk>,
+ <u325@hotmail.com>,
+ <u326@cu.nih.gov>,
+ <u327@oswego.edu>,
+ <u328@hotmail.com>,
+ <u329@worldnet.att.net>,
+ <u330@cdvfs01.cdv.nyu.edu>,
+ <u331@worldnet.att.net>,
+ <u332@compuserve.com>,
+ <u333@hotmail.com>,
+ <u334@hotmail.com>,
+ <u335@stud.man.ac.uk>,
+ <u336@virginia.edu>,
+ <u337@columbia.edu>,
+ <u338@hotmail.com>,
+ <u339@hotmail.com>,
+ <u340@compuserve.com>,
+ <u341@compuserve.com>
+Subject: New Business Opportunity
+Date: Tue, 9 May 2000 20:08:52 -0300
+MIME-Version: 1.0
+Content-Type: multipart/alternative;
+ boundary="----=_NextPart_000_0004_01BFB9F2.65A80E80"
+X-Priority: 3
+X-MSMail-Priority: Normal
+X-Mailer: Microsoft Outlook Express 5.00.2314.1300
+X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300
+.
+quit
+****
--- /dev/null
+# Overlong SMTP response received
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+550 There is a problem with the message, but this response line is over the limit for reasonable SMTP responses. 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890
+QUIT
+250 OK
+****
+exim -odi userx@domain.com
+.
+****
+exim -q
+****
+no_msglog_check
--- /dev/null
+# system filter $recipients test (no shell)
+exim -odi pipe
+****
+exim -odi pipe another a-third
+****
--- /dev/null
+# system filter $recipients test (with shell)
+exim -odi pipe
+****
+exim -odi pipe another a-third
+****
--- /dev/null
+# multiple headers_add in routers
+exim -odi a
--- /dev/null
+# rewrite envelope sender or return path to null
+exim -odi userx
+****
+exim -odi -f remove userx
+****
+exim -odi -f trakill userx
+****
+exim -brw error@test.ex
+****
+exim -brw remove@test.ex
+****
--- /dev/null
+# system filter error text
+exim -odi joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs joebloggs
+****
+no_msglog_check
--- /dev/null
+# quota warn threshold when mailbox full
+exim -odi userx
+This is a test message
+****
+exim -odi userx
+quota: 0
+threshold: 10
+This is a test message
+****
+exim -odi userx
+quota: 10
+threshold: 100%
+This is a test message
+****
+exim -d-all+transport -odi userx
+quota: 50M
+threshold: 41%
+Another test
+****
+no_msglog_check
--- /dev/null
+# system filter to pipe without transport
+exim -odi userx
+This is a test message
+****
+no_msglog_check
--- /dev/null
+# local user home directory
+exim -odi CALLER
+****
--- /dev/null
+# :unknown:
+2
+exim -bt unknown
+****
--- /dev/null
+# deliver time scan - pipe not using BSMTP
+exim -odi userx
+Test message
+****
+exim -odi userx usery userz
+Another test message
+****
--- /dev/null
+# deliver time scan - pipe using BSMTP
+exim -odi userx
+Test message
+****
+exim -odi userx usery userz
+Another test message
+****
+exim -odi userx userx@non-local.example
+Yet another test message
+****
--- /dev/null
+# Forcing verify failures for specific senders
+need_ipv4
+#
+exim -bh V4NET.0.0.0
+mail from:<user@bad.domain>
+rcpt to:<userx@test.ex>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.0
+mail from:<user@bad.domain2>
+rcpt to:<userx@test.ex>
+data
+.
+quit
+****
+exim -bh V4NET.0.0.0
+mail from:<user@ten-1.test.ex>
+rcpt to:<userx@test.ex>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# -Mg -Mf -Mt
+exim -odq someone@somewhere
+Some message or other.
+****
+exim -Mf $msg1
+****
+exim -Mt $msg1
+****
+exim -odi -Mg $msg1
+****
+exim -odq -f '<>' someone@somewhere
+Another message or some.
+****
+exim -odi -Mg $msg1
+****
--- /dev/null
+# Per-user system-ish filter
+need_ipv4
+#
+exim -odi userx
+Subject: fail this
+This is a message to be failed.
+****
+exim -odi userx
+Subject: freeze this (1)
+This is a message to be frozen.
+****
+exim -odi userx
+Subject: reply to this
+This is a message to be replied to.
+****
+exim -bpa
+****
+exim -q
+****
+exim -qff
+****
+exim -odi userx
+Subject: freeze this (2)
+This is a second message to be frozen.
+****
+exim -qqRff userx
+****
+exim -odi userz
+Subject: freeze this (3)
+This is a third message to be frozen.
+****
+exim -bp
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+QUIT
+250 OK
+****
+exim -qqRff userz
+****
--- /dev/null
+# log_subject
+exim -odi userx
+Subject: one-line subject
+****
+exim -odi userx
+Subject: two-line subject,
+ that is, it covers two lines
+****
+exim -odi userx
+Subject: subject containing \b\b\b\b\b backspaces
+****
+exim -odi userx
+Subject: subject contains "quotes" and \backslashes\ and
+ \a non-prints over multiple
+ lines
+****
+exim -odi userx
+Subject: =?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= ABCD
+****
+no_message_check
--- /dev/null
+# -qqf
+need_ipv4
+#
+exim -odq userx@domain.com
+.
+****
+exim -odq abcd@domain.com
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi -qqf
+****
--- /dev/null
+# SIZE and check_spool_space
+exim -odq -bs
+EHLO some.host
+MAIL FROM:<userx@test.ex> SIZE=1000000000
+RSET
+MAIL FROM:<userx@test.ex> SIZE=10
+RSET
+MAIL FROM:<userx@test.ex>
+RSET
+MAIL FROM:<userx@test.ex> SIZE=5000000000
+QUIT
+****
+exim -bh 1.2.3.4
+EHLO some.host
+QuIt
+****
+exim -bh 5.6.7.8
+EHLO some.host
+QuIt
+****
+exim -DCSS= -odq -bs
+EHLO some.host
+MAIL FROM:<userx@test.ex> SIZE=1000000000
+RSET
+MAIL FROM:<userx@test.ex> SIZE=10
+RSET
+MAIL FROM:<userx@test.ex>
+RSET
+MAIL FROM:<userx@test.ex> SIZE=5000000000
+RSET
+MAIL FROM:<userx@test.ex> SIZE=50000000000000000000000
+QUIT
+****
--- /dev/null
+# message size check without SIZE
+exim -odq -bs
+EHLO some.host
+MAIL FROM:<userx@test.ex>
+RCPT TO:<userx@test.ex>
+Data
+The quick brown fox jumps over the lazy dog.
+The quick brown fox jumps over the lazy dog.
+The quick brown fox jumps over the lazy dog.
+The quick brown fox jumps over the lazy dog.
+The quick brown fox jumps over the lazy dog.
+.
+QUIT
+****
+1
+exim -oep -odq userx
+The quick brown fox jumps over the lazy dog.
+The quick brown fox jumps over the lazy dog.
+The quick brown fox jumps over the lazy dog.
+The quick brown fox jumps over the lazy dog.
+.
+****
+no_msglog_check
--- /dev/null
+# headers added by system filter
+exim -odi userx@test.ex
+Test message.
+.
+****
+exim -qf
+****
--- /dev/null
+# caching failed DNS lookups
+1
+exim -d -bt userx@test.again.dns abcd@test.again.dns abcd@ten-1.test.ex usery@test.again.dns userz@test.again.dns xyz@ten-1.test.ex
+****
+1
+exim -d -bt userx@test.fail.dns abcd@test.fail.dns abcd@ten-1.test.ex usery@test.fail.dns userz@test.fail.dns xyz@ten-1.test.ex
+****
+2
+exim -d -bt userx@nonexist.test.ex abcd@nonexist.test.ex abcd@ten-1.test.ex usery@nonexist.test.ex userz@nonexist.test.ex xyz@ten-1.test.ex
+****
+1
+exim -d -bt srv@test.again.dns srv@test.fail.dns
+****
--- /dev/null
+# expand very long header in user filter
+exim -odi userx@test.ex
+From: userx@test.ex
+To: 000@test.ex, 001@test.ex, 002@test.ex, 003@test.ex, 004@test.ex,
+ 005@test.ex, 006@test.ex, 007@test.ex, 008@test.ex, 009@test.ex,
+ 010@test.ex, 011@test.ex, 012@test.ex, 013@test.ex, 014@test.ex,
+ 015@test.ex, 016@test.ex, 017@test.ex, 018@test.ex, 019@test.ex,
+ 020@test.ex, 021@test.ex, 022@test.ex, 023@test.ex, 024@test.ex,
+ 025@test.ex, 026@test.ex, 027@test.ex, 028@test.ex, 029@test.ex,
+ 030@test.ex, 031@test.ex, 032@test.ex, 033@test.ex, 034@test.ex,
+ 035@test.ex, 036@test.ex, 037@test.ex, 038@test.ex, 039@test.ex,
+ 040@test.ex, 041@test.ex, 042@test.ex, 043@test.ex, 044@test.ex,
+ 045@test.ex, 046@test.ex, 047@test.ex, 048@test.ex, 049@test.ex,
+ 050@test.ex, 051@test.ex, 052@test.ex, 053@test.ex, 054@test.ex,
+ 055@test.ex, 056@test.ex, 057@test.ex, 058@test.ex, 059@test.ex,
+ 060@test.ex, 061@test.ex, 062@test.ex, 063@test.ex, 064@test.ex,
+ 065@test.ex, 066@test.ex, 067@test.ex, 068@test.ex, 069@test.ex,
+ 070@test.ex, 071@test.ex, 072@test.ex, 073@test.ex, 074@test.ex,
+ 075@test.ex, 076@test.ex, 077@test.ex, 078@test.ex, 079@test.ex,
+ 080@test.ex, 081@test.ex, 082@test.ex, 083@test.ex, 084@test.ex,
+ 085@test.ex, 086@test.ex, 087@test.ex, 088@test.ex, 089@test.ex,
+ 090@test.ex, 091@test.ex, 092@test.ex, 093@test.ex, 094@test.ex,
+ 095@test.ex, 096@test.ex, 097@test.ex, 098@test.ex, 099@test.ex,
+ 100@test.ex, 101@test.ex, 102@test.ex, 103@test.ex, 104@test.ex,
+ 105@test.ex, 106@test.ex, 107@test.ex, 108@test.ex, 109@test.ex,
+ 110@test.ex, 111@test.ex, 112@test.ex, 113@test.ex, 114@test.ex,
+ 115@test.ex, 116@test.ex, 117@test.ex, 118@test.ex, 119@test.ex,
+ 120@test.ex, 121@test.ex, 122@test.ex, 123@test.ex, 124@test.ex,
+ 125@test.ex, 126@test.ex, 127@test.ex, 128@test.ex, 129@test.ex,
+ 130@test.ex, 131@test.ex, 132@test.ex, 133@test.ex, 134@test.ex,
+ 135@test.ex, 136@test.ex, 137@test.ex, 138@test.ex, 139@test.ex,
+ 140@test.ex, 141@test.ex, 142@test.ex, 143@test.ex, 144@test.ex,
+ 145@test.ex, 146@test.ex, 147@test.ex, 148@test.ex, 149@test.ex,
+ 150@test.ex, 151@test.ex, 152@test.ex, 153@test.ex, 154@test.ex,
+ 155@test.ex, 156@test.ex, 157@test.ex, 158@test.ex, 159@test.ex,
+ 160@test.ex, 161@test.ex, 162@test.ex, 163@test.ex, 164@test.ex,
+ 165@test.ex, 166@test.ex, 167@test.ex, 168@test.ex, 169@test.ex,
+ 170@test.ex, 171@test.ex, 172@test.ex, 173@test.ex, 174@test.ex,
+ 175@test.ex, 176@test.ex, 177@test.ex, 178@test.ex, 179@test.ex,
+ 180@test.ex, 181@test.ex, 182@test.ex, 183@test.ex, 184@test.ex,
+ 185@test.ex, 186@test.ex, 187@test.ex, 188@test.ex, 189@test.ex,
+ 190@test.ex, 191@test.ex, 192@test.ex, 193@test.ex, 194@test.ex,
+ 195@test.ex, 196@test.ex, 197@test.ex, 198@test.ex, 199@test.ex,
+ 200@test.ex, 201@test.ex, 202@test.ex, 203@test.ex, 204@test.ex,
+ 205@test.ex, 206@test.ex, 207@test.ex, 208@test.ex, 209@test.ex,
+ 210@test.ex, 211@test.ex, 212@test.ex, 213@test.ex, 214@test.ex,
+ 215@test.ex, 216@test.ex, 217@test.ex, 218@test.ex, 219@test.ex,
+ 220@test.ex, 221@test.ex, 222@test.ex, 223@test.ex, 224@test.ex,
+ 225@test.ex, 226@test.ex, 227@test.ex, 228@test.ex, 229@test.ex,
+ 230@test.ex, 231@test.ex, 232@test.ex, 233@test.ex, 234@test.ex,
+ 235@test.ex, 236@test.ex, 237@test.ex, 238@test.ex, 239@test.ex,
+ 240@test.ex, 241@test.ex, 242@test.ex, 243@test.ex, 244@test.ex,
+ 245@test.ex, 246@test.ex, 247@test.ex, 248@test.ex, 249@test.ex,
+ 250@test.ex, 251@test.ex, 252@test.ex, 253@test.ex, 254@test.ex,
+ 255@test.ex, 256@test.ex, 257@test.ex, 258@test.ex, 259@test.ex,
+ 260@test.ex, 261@test.ex, 262@test.ex, 263@test.ex, 264@test.ex,
+ 265@test.ex, 266@test.ex, 267@test.ex, 268@test.ex, 269@test.ex,
+ 270@test.ex, 271@test.ex, 272@test.ex, 273@test.ex, 274@test.ex,
+ 275@test.ex, 276@test.ex, 277@test.ex, 278@test.ex, 279@test.ex,
+ 280@test.ex, 281@test.ex, 282@test.ex, 283@test.ex, 284@test.ex,
+ 285@test.ex, 286@test.ex, 287@test.ex, 288@test.ex, 289@test.ex,
+ 290@test.ex, 291@test.ex, 292@test.ex, 293@test.ex, 294@test.ex,
+ 295@test.ex, 296@test.ex, 297@test.ex, 298@test.ex, 299@test.ex,
+ 300@test.ex, 301@test.ex, 302@test.ex, 303@test.ex, 304@test.ex,
+ 305@test.ex, 306@test.ex, 307@test.ex, 308@test.ex, 309@test.ex,
+ 310@test.ex, 311@test.ex, 312@test.ex, 313@test.ex, 314@test.ex,
+ 315@test.ex, 316@test.ex, 317@test.ex, 318@test.ex, 319@test.ex,
+ 320@test.ex, 321@test.ex, 322@test.ex, 323@test.ex, 324@test.ex,
+ 325@test.ex, 326@test.ex, 327@test.ex, 328@test.ex, 329@test.ex,
+ 330@test.ex, 331@test.ex, 332@test.ex, 333@test.ex, 334@test.ex,
+ 335@test.ex, 336@test.ex, 337@test.ex, 338@test.ex, 339@test.ex,
+ 340@test.ex, 341@test.ex, 342@test.ex, 343@test.ex, 344@test.ex,
+ 345@test.ex, 346@test.ex, 347@test.ex, 348@test.ex, 349@test.ex,
+ 350@test.ex, 351@test.ex, 352@test.ex, 353@test.ex, 354@test.ex,
+ 355@test.ex, 356@test.ex, 357@test.ex, 358@test.ex, 359@test.ex,
+ 360@test.ex, 361@test.ex, 362@test.ex, 363@test.ex, 364@test.ex,
+ 365@test.ex, 366@test.ex, 367@test.ex, 368@test.ex, 369@test.ex,
+ 370@test.ex, 371@test.ex, 372@test.ex, 373@test.ex, 374@test.ex,
+ 375@test.ex, 376@test.ex, 377@test.ex, 378@test.ex, 379@test.ex,
+ 380@test.ex, 381@test.ex, 382@test.ex, 383@test.ex, 384@test.ex,
+ 385@test.ex, 386@test.ex, 387@test.ex, 388@test.ex, 389@test.ex,
+ 390@test.ex, 391@test.ex, 392@test.ex, 393@test.ex, 394@test.ex,
+ 395@test.ex, 396@test.ex, 397@test.ex, 398@test.ex, 399@test.ex,
+ 400@test.ex, 401@test.ex, 402@test.ex, 403@test.ex, 404@test.ex,
+ 405@test.ex, 406@test.ex, 407@test.ex, 408@test.ex, 409@test.ex,
+ 410@test.ex, 411@test.ex, 412@test.ex, 413@test.ex, 414@test.ex,
+ 415@test.ex, 416@test.ex, 417@test.ex, 418@test.ex, 419@test.ex,
+ 420@test.ex, 421@test.ex, 422@test.ex, 423@test.ex, 424@test.ex,
+ 425@test.ex, 426@test.ex, 427@test.ex, 428@test.ex, 429@test.ex,
+ 430@test.ex, 431@test.ex, 432@test.ex, 433@test.ex, 434@test.ex,
+ 435@test.ex, 436@test.ex, 437@test.ex, 438@test.ex, 439@test.ex,
+ 440@test.ex, 441@test.ex, 442@test.ex, 443@test.ex, 444@test.ex,
+ 445@test.ex, 446@test.ex, 447@test.ex, 448@test.ex, 449@test.ex,
+ 450@test.ex, 451@test.ex, 452@test.ex, 453@test.ex, 454@test.ex,
+ 455@test.ex, 456@test.ex, 457@test.ex, 458@test.ex, 459@test.ex,
+ 460@test.ex, 461@test.ex, 462@test.ex, 463@test.ex, 464@test.ex,
+ 465@test.ex, 466@test.ex, 467@test.ex, 468@test.ex, 469@test.ex,
+ 470@test.ex, 471@test.ex, 472@test.ex, 473@test.ex, 474@test.ex,
+ 475@test.ex, 476@test.ex, 477@test.ex, 478@test.ex, 479@test.ex,
+ 480@test.ex, 481@test.ex, 482@test.ex, 483@test.ex, 484@test.ex,
+ 485@test.ex, 486@test.ex, 487@test.ex, 488@test.ex, 489@test.ex,
+ 490@test.ex, 491@test.ex, 492@test.ex, 493@test.ex, 494@test.ex,
+ 495@test.ex, 496@test.ex, 497@test.ex, 498@test.ex, 499@test.ex,
+ 500@test.ex, 501@test.ex, 502@test.ex, 503@test.ex, 504@test.ex,
+ 505@test.ex, 506@test.ex, 507@test.ex, 508@test.ex, 509@test.ex,
+ 510@test.ex, 511@test.ex, 512@test.ex, 513@test.ex, 514@test.ex,
+ 515@test.ex, 516@test.ex, 517@test.ex, 518@test.ex, 519@test.ex,
+ 520@test.ex, 521@test.ex, 522@test.ex, 523@test.ex, 524@test.ex,
+ 525@test.ex, 526@test.ex, 527@test.ex, 528@test.ex, 529@test.ex,
+ 530@test.ex, 531@test.ex, 532@test.ex, 533@test.ex, 534@test.ex,
+ 535@test.ex, 536@test.ex, 537@test.ex, 538@test.ex, 539@test.ex,
+ 540@test.ex, 541@test.ex, 542@test.ex, 543@test.ex, 544@test.ex,
+ 545@test.ex, 546@test.ex, 547@test.ex, 548@test.ex, 549@test.ex,
+ 550@test.ex, 551@test.ex, 552@test.ex, 553@test.ex, 554@test.ex,
+ 555@test.ex, 556@test.ex, 557@test.ex, 558@test.ex, 559@test.ex,
+ 560@test.ex, 561@test.ex, 562@test.ex, 563@test.ex, 564@test.ex,
+ 565@test.ex, 566@test.ex, 567@test.ex, 568@test.ex, 569@test.ex,
+ 570@test.ex, 571@test.ex, 572@test.ex, 573@test.ex, 574@test.ex,
+ 575@test.ex, 576@test.ex, 577@test.ex, 578@test.ex, 579@test.ex,
+ 580@test.ex, 581@test.ex, 582@test.ex, 583@test.ex, 584@test.ex,
+ 585@test.ex, 586@test.ex, 587@test.ex, 588@test.ex, 589@test.ex,
+ 590@test.ex, 591@test.ex, 592@test.ex, 593@test.ex, 594@test.ex,
+ 595@test.ex, 596@test.ex, 597@test.ex, 598@test.ex, 599@test.ex,
+ 600@test.ex, 601@test.ex, 602@test.ex, 603@test.ex, 604@test.ex,
+ 605@test.ex, 606@test.ex, 607@test.ex, 608@test.ex, 609@test.ex,
+ 610@test.ex, 611@test.ex, 612@test.ex, 613@test.ex, 614@test.ex,
+ 615@test.ex, 616@test.ex, 617@test.ex, 618@test.ex, 619@test.ex,
+ 620@test.ex, 621@test.ex, 622@test.ex, 623@test.ex, 624@test.ex,
+ 625@test.ex, 626@test.ex, 627@test.ex, 628@test.ex, 629@test.ex,
+ 630@test.ex, 631@test.ex, 632@test.ex, 633@test.ex, 634@test.ex,
+ 635@test.ex, 636@test.ex, 637@test.ex, 638@test.ex, 639@test.ex,
+ 640@test.ex, 641@test.ex, 642@test.ex, 643@test.ex, 644@test.ex,
+ 645@test.ex, 646@test.ex, 647@test.ex, 648@test.ex, 649@test.ex,
+ 650@test.ex, 651@test.ex, 652@test.ex, 653@test.ex, 654@test.ex,
+ 655@test.ex, 656@test.ex, 657@test.ex, 658@test.ex, 659@test.ex,
+ 660@test.ex, 661@test.ex, 662@test.ex, 663@test.ex, 664@test.ex,
+ 665@test.ex, 666@test.ex, 667@test.ex, 668@test.ex, 669@test.ex,
+ 670@test.ex, 671@test.ex, 672@test.ex, 673@test.ex, 674@test.ex,
+ 675@test.ex, 676@test.ex, 677@test.ex, 678@test.ex, 679@test.ex,
+ 680@test.ex, 681@test.ex, 682@test.ex, 683@test.ex, 684@test.ex,
+ 685@test.ex, 686@test.ex, 687@test.ex, 688@test.ex, 689@test.ex,
+ 690@test.ex, 691@test.ex, 692@test.ex, 693@test.ex, 694@test.ex,
+ 695@test.ex, 696@test.ex, 697@test.ex, 698@test.ex, 699@test.ex,
+ 700@test.ex, 701@test.ex, 702@test.ex, 703@test.ex, 704@test.ex,
+ 705@test.ex, 706@test.ex, 707@test.ex, 708@test.ex, 709@test.ex,
+ 710@test.ex, 711@test.ex, 712@test.ex, 713@test.ex, 714@test.ex,
+ 715@test.ex, 716@test.ex, 717@test.ex, 718@test.ex, 719@test.ex,
+ 720@test.ex, 721@test.ex, 722@test.ex, 723@test.ex, 724@test.ex,
+ 725@test.ex, 726@test.ex, 727@test.ex, 728@test.ex, 729@test.ex,
+ 730@test.ex, 731@test.ex, 732@test.ex, 733@test.ex, 734@test.ex,
+ 735@test.ex, 736@test.ex, 737@test.ex, 738@test.ex, 739@test.ex,
+ 740@test.ex, 741@test.ex, 742@test.ex, 743@test.ex, 744@test.ex,
+ 745@test.ex, 746@test.ex, 747@test.ex, 748@test.ex, 749@test.ex,
+ 750@test.ex, 751@test.ex, 752@test.ex, 753@test.ex, 754@test.ex,
+ 755@test.ex, 756@test.ex, 757@test.ex, 758@test.ex, 759@test.ex,
+ 760@test.ex, 761@test.ex, 762@test.ex, 763@test.ex, 764@test.ex,
+ 765@test.ex, 766@test.ex, 767@test.ex, 768@test.ex, 769@test.ex,
+ 770@test.ex, 771@test.ex, 772@test.ex, 773@test.ex, 774@test.ex,
+ 775@test.ex, 776@test.ex, 777@test.ex, 778@test.ex, 779@test.ex,
+ 780@test.ex, 781@test.ex, 782@test.ex, 783@test.ex, 784@test.ex,
+ 785@test.ex, 786@test.ex, 787@test.ex, 788@test.ex, 789@test.ex,
+ 790@test.ex, 791@test.ex, 792@test.ex, 793@test.ex, 794@test.ex,
+ 795@test.ex, 796@test.ex, 797@test.ex, 798@test.ex, 799@test.ex,
+ 800@test.ex, 801@test.ex, 802@test.ex, 803@test.ex, 804@test.ex,
+ 805@test.ex, 806@test.ex, 807@test.ex, 808@test.ex, 809@test.ex,
+ 810@test.ex, 811@test.ex, 812@test.ex, 813@test.ex, 814@test.ex,
+ 815@test.ex, 816@test.ex, 817@test.ex, 818@test.ex, 819@test.ex,
+ 820@test.ex, 821@test.ex, 822@test.ex, 823@test.ex, 824@test.ex,
+ 825@test.ex, 826@test.ex, 827@test.ex, 828@test.ex, 829@test.ex,
+ 830@test.ex, 831@test.ex, 832@test.ex, 833@test.ex, 834@test.ex,
+ 835@test.ex, 836@test.ex, 837@test.ex, 838@test.ex, 839@test.ex,
+ 840@test.ex, 841@test.ex, 842@test.ex, 843@test.ex, 844@test.ex,
+ 845@test.ex, 846@test.ex, 847@test.ex, 848@test.ex, 849@test.ex,
+ 850@test.ex, 851@test.ex, 852@test.ex, 853@test.ex, 854@test.ex,
+ 855@test.ex, 856@test.ex, 857@test.ex, 858@test.ex, 859@test.ex,
+ 860@test.ex, 861@test.ex, 862@test.ex, 863@test.ex, 864@test.ex,
+ 865@test.ex, 866@test.ex, 867@test.ex, 868@test.ex, 869@test.ex,
+ 870@test.ex, 871@test.ex, 872@test.ex, 873@test.ex, 874@test.ex,
+ 875@test.ex, 876@test.ex, 877@test.ex, 878@test.ex, 879@test.ex,
+ 880@test.ex, 881@test.ex, 882@test.ex, 883@test.ex, 884@test.ex,
+ 885@test.ex, 886@test.ex, 887@test.ex, 888@test.ex, 889@test.ex,
+ 890@test.ex, 891@test.ex, 892@test.ex, 893@test.ex, 894@test.ex,
+ 895@test.ex, 896@test.ex, 897@test.ex, 898@test.ex, 899@test.ex,
+ 900@test.ex, 901@test.ex, 902@test.ex, 903@test.ex, 904@test.ex,
+ 905@test.ex, 906@test.ex, 907@test.ex, 908@test.ex, 909@test.ex,
+ 910@test.ex, 911@test.ex, 912@test.ex, 913@test.ex, 914@test.ex,
+ 915@test.ex, 916@test.ex, 917@test.ex, 918@test.ex, 919@test.ex,
+ 920@test.ex, 921@test.ex, 922@test.ex, 923@test.ex, 924@test.ex,
+ 925@test.ex, 926@test.ex, 927@test.ex, 928@test.ex, 929@test.ex,
+ 930@test.ex, 931@test.ex, 932@test.ex, 933@test.ex, 934@test.ex,
+ 935@test.ex, 936@test.ex, 937@test.ex, 938@test.ex, 939@test.ex,
+ 940@test.ex, 941@test.ex, 942@test.ex, 943@test.ex, 944@test.ex,
+ 945@test.ex, 946@test.ex, 947@test.ex, 948@test.ex, 949@test.ex,
+ 950@test.ex, 951@test.ex, 952@test.ex, 953@test.ex, 954@test.ex,
+ 955@test.ex, 956@test.ex, 957@test.ex, 958@test.ex, 959@test.ex,
+ 960@test.ex, 961@test.ex, 962@test.ex, 963@test.ex, 964@test.ex,
+ 965@test.ex, 966@test.ex, 967@test.ex, 968@test.ex, 969@test.ex,
+ 970@test.ex, 971@test.ex, 972@test.ex, 973@test.ex, 974@test.ex,
+ 975@test.ex, 976@test.ex, 977@test.ex, 978@test.ex, 979@test.ex,
+ 980@test.ex, 981@test.ex, 982@test.ex, 983@test.ex, 984@test.ex,
+ 985@test.ex, 986@test.ex, 987@test.ex, 988@test.ex, 989@test.ex,
+ 990@test.ex, 991@test.ex, 992@test.ex, 993@test.ex, 994@test.ex,
+ 995@test.ex, 996@test.ex, 997@test.ex, 998@test.ex, 999@test.ex
+
+Here is a very short message.
+.
+****
+no_msglog_check
--- /dev/null
+# More per-user system-ish filter
+need_ipv4
+#
+exim -odi usery
+Subject: freeze this
+This is a message to be frozen.
+****
+exim -bp
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+QUIT
+250 OK
+****
+exim -qqRff usery
+****
--- /dev/null
+# ignore_target_hosts (byname)
+exim -bt userx@other2.test.ex
+****
+exim -bt userx@ten-5-6.test.ex
+****
--- /dev/null
+# ignore_target_hosts (bydns)
+exim -bt userx@other2.test.ex
+****
+exim -bt userx@ten-5-6.test.ex
+****
+exim -bt userx@mxt7.test.ex
+****
+exim -bt userx@mxt9.test.ex
+****
+exim -bt userx@eximtesthost.test.ex
+****
+2
+exim -bt userx@localhost
+****
+2
+exim -bt userx@mxt10.test.ex
+****
+2
+exim -bt userx@mxt11.test.ex
+****
+2
+exim -bt userx@mxt12.test.ex
+****
--- /dev/null
+# ETRN (non-existent command)
+exim -bs -oMa 127.0.0.1
+etrn #some.random.domain
+quit
+****
+sleep 1
--- /dev/null
+# Sender: from trusted caller
+exim -odi userx
+Sender: sender@some.domain
+
+This is a test message from an untrusted caller.
+****
+sudo exim -odi userx
+Sender: sender@some.domain
+
+This is a test message from a trusted caller....
+****
--- /dev/null
+# hosts_randomize (smtp transport and manualroute)
+need_ipv4
+#
+server PORT_S 3
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+QUIT
+250 OK
+*eof
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+QUIT
+250 OK
+*eof
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx@domain1 userx@domain2 userx@domain3
+Test message
+****
+exim -bt x@x x@y x@z
+****
+server PORT_S 2
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+QUIT
+250 OK
+*eof
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx@adomain1 userx@adomain2 userx@adomain3
+Test message
+****
+exim -bt x@batch y@batch z@batch x@batch2 y@batch2 x@batch3 y@batch3 x@batch4 y@batch4
+****
+exim -bt userx@bdomain1 userx@bdomain2 userx@bdomain3
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx@bdomain1 userx@bdomain2 userx@bdomain3
+Test message
+****
--- /dev/null
+# transport filter with missing final NL
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send message
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx@domain1
+Test message
+****
--- /dev/null
+# alternate quota paradigm (and -F encoding)
+exim -odi -F 'Phil Q. Hazel' userx
+This is a test message which should get delivered.
+****
+exim -odi -F 'Mèé spaces: funny, char_acters' userx
+This is a test message which should go over the threshold, but still
+be delivered.
+****
+exim -odi userx
+This is a test message that should fail to be delivered.
+****
+no_msglog_check
--- /dev/null
+# message_size_limit on batched local delivery
+exim -odi userx usery userz
+This is a test message.
+****
--- /dev/null
+# pipe returned message for batched local delivery
+exim -odi userx usery userz
+This is a test message.
+****
+exim -odi one two three four five six seven
+Here's another message.
+****
+exim -odi userx usery userz
+ret: 75
+More message
+****
+exim -odi userx usery userz
+ret: 99
+More message 99
+****
+no_msglog_check
--- /dev/null
+# retry times on local addresses
+exim -odi userx usery userz
+This is a test message.
+****
+dump retry
+sleep 1
+exim -R usery
+****
+dump retry
+sleep 1
+exim -odi usery
+one-defer: set
+second message
+****
+dump retry
+sleep 1
+exim -Mc $msg2
+****
+dump retry
+sleep 1
+exim -q
+****
+dump retry
+no_msglog_check
+no_message_check
--- /dev/null
+# EXPN to daemon
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+expn postmaster
+??? 250-
+??? 250-
+??? 250
+expn rhubarb
+??? 553
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+# Taking copies of a domain's mail
+need_ipv4
+#
+exim -odi userx@copy.domain usery@copy.domain
+Test one.
+.
+****
+exim -odi -bs
+mail from:<doesn't@matter>
+rcpt to:<x@copy.domain>
+rcpt to:<y@copy.domain>
+rcpt to:<z@elsewhere>
+data
+Test two.
+.
+quit
+****
+exim -qf
+****
--- /dev/null
+# local part check before relay
+need_ipv4
+#
+exim -odi -bS
+MAIL FROM:<CALLER@the.local.host.name>
+RCPT TO:<userx@copy.domain>
+RCPT TO:<usery@copy.domain>
+DATA
+Received: from CALLER by the.local.host.name with local (Exim x.yz)
+ (envelope-from <CALLER@the.local.host.name>)
+ id 10HmaX-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
+Message-Id: <E10HmaX-0005vi-00@the.local.host.name>
+From: CALLER_NAME <CALLER@the.local.host.name>
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+
+Test one.
+.
+MAIL FROM:<doesn't@matter>
+RCPT TO:<x@copy.domain>
+RCPT TO:<y@copy.domain>
+DATA
+Received: from CALLER by the.local.host.name with local-smtp (Exim x.yz)
+ (envelope-from <doesn't@matter>)
+ id 10HmaY-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
+Message-Id: <E10HmaY-0005vi-00@the.local.host.name>
+From: doesn't@matter
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+
+Test two.
+.
+****
--- /dev/null
+# EXPN remote address becoming local
+exim -bs -oMa 127.0.0.1
+expn somewhere@over.the.rainbow
+expn somewhere@else.where
+expn xxxx@exim.org
+expn xxxx@test.ex
+quit
+****
--- /dev/null
+# syntax error in host name
+2
+exim -bt xx@host.test.ex yy@host.test.ex
+****
--- /dev/null
+# non-completing transport filter
+need_ipv4
+#
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+351 Send more
+.
+250 OK
+****
+exim -odi userx
+This is a test message.
+****
+no_msglog_check
--- /dev/null
+# .. in header lines (SMTP and otherwise)
+exim -bs
+MAIL FROM:<userx@test.ex>
+RCPT TO:<userx@test.ex>
+DATA
+..: this is legal
+From: me
+..
+This line follows ..
+.
+quit
+****
+exim -bs
+MAIL FROM:<userx@test.ex>
+RCPT TO:<userx@test.ex>
+DATA
+From: me
+
+..
+This line follows ..
+.
+quit
+****
+exim -oi userx@test.ex
+From: me
+..: this really is legal
+.. two dots
+.
+That was one dot with -oi
+****
+exim -oi userx@test.ex
+From: me
+..: this really is legal
+
+.. two dots
+.
+That was one dot with -oi
+****
+exim -qf
+****
--- /dev/null
+# Error for 2nd message down one SMTP connection
+need_ipv4
+#
+exim -odq userx@domain1
+Test message 1
+****
+exim -odq userx@domain1
+Test message 2
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 More...
+.
+250 OK
+MAIL
+550 Don't like that sender
+QUIT
+220 OK
+****
+exim -qqf
+****
+no_msglog_check
--- /dev/null
+# -N
+exim -odi -N userx@test.ex
+Lost
+****
+exim -N -odq userx@test.ex
+Should be lost
+****
+exim -qf
+****
--- /dev/null
+# percent hack
+2
+exim -bt
+x%y@testhack.test.ex
+x%y@test.ex
+x%y%testhack2.test.ex@testhack.test.ex
+X%test.ex@testhack.test.ex
+****
+exim -odi x%testhack.test.ex@testhack2.test.ex x@testhack.test.ex
+****
+exim -odi redirect@test.ex
+****
--- /dev/null
+# timeout_frozen_after with ignore_bounce_errors_after
+sudo exim -odi -f unknown@test.ex nonexist@test.ex freeze@test.ex
+****
+sleep 2
+sudo exim -Mf $msg1
+****
+exim -qf
+****
+sleep 2
+exim -q
+****
+no_msglog_check
--- /dev/null
+# timeout_frozen_after without ignore_bounce_errors_after
+sudo exim -odi -f unknown@test.ex nonexist@test.ex freeze@test.ex
+****
+sudo exim -Mf $msg1
+****
+sleep 2
+exim -q
+****
+no_msglog_check
--- /dev/null
+# msglog: success, defer, and failure messages
+need_ipv4
+#
+server PORT_S
+220 Welcome
+EHLO
+250 OK
+MAIL
+250 OK
+RCPT
+550 Recipient refused
+QUIT
+250 OK
+****
+exim -odi ok defer fail.transport fail.direct fail.route@unknown.domain
+****
+server PORT_S
+220 Welcome
+EHLO
+250 OK
+MAIL
+250 OK
+RCPT
+550 Recipient refused
+QUIT
+250 OK
+****
+exim -DMESSAGE_LOGS=false -odi ok defer fail.transport fail.direct fail.route@unknown.domain
+****
--- /dev/null
+# re-use of SMTP channel after 450 error
+need_ipv4
+#
+exim -odi -odqs userz@domain1
+Test message 1
+****
+exim -odi -odqs userz@domain1
+Test message 2
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+450 Temporary error
+QUIT
+250 OK
+****
+exim -q
+****
+exim -Mrm $msg1 $msg2
+****
+exim -odi -odqs userx@domain1 usery@domain1
+Test message 1
+****
+exim -odi -odqs userx@domain1 usery@domain1
+Test message 2
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+450 Temporary error
+RCPT TO:
+250 OK
+DATA
+354 Go ahead
+.
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+450 Temporary error
+RCPT TO:
+250 OK
+DATA
+354 Go ahead
+.
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+450 Temporary error
+QUIT
+250 OK
+****
+exim -q
+****
+exim -q
+****
+exim -q $msg2 $msg2
+****
+exim -Mc $msg1
+****
+no_msglog_check
--- /dev/null
+# Unprivileged use of -f <>
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 OK
+DATA
+345 Send it
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi -f '<>' file@test.ex pipe@test.ex smtp@test.ex
+This is a test message.
+****
--- /dev/null
+# SMTP connection & EHLO/HELO error responses (+log_sender_on_delivery)
+need_ipv4
+#
+server PORT_S
+450 I'm busy
+QUIT
+250 OK
+****
+exim -odi userx@domain1
+Test message 1
+****
+server PORT_S
+220 Connected OK
+EHLO
+450 I'm busy
+HELO
+450 I'm busy
+QUIT
+250 OK
+****
+exim -qf
+****
+server PORT_S
+550 Go away
+QUIT
+250 OK
+****
+exim -qf
+****
+server PORT_S
+220 Connected OK
+EHLO
+550 Go away
+HELO
+550 Go away
+QUIT
+250 OK
+****
+exim -odi userx@domain1 usery@domain2
+Test message 2
+****
--- /dev/null
+# verifying aliases with one or more generated addresses
+2
+exim -bv
+a
+b
+f
+p
+x
+y
+pipe
+file
+"smartuser.a@test.ex"@test.ex
+"smartuser.b@test.ex"@test.ex
+"smartuser.b@test.ex,a@test.ex"@test.ex
+****
+exim -bs -oMa V4NET.0.0.0
+mail from:<userx@test.ex>
+rcpt to:<a@test.ex>
+rcpt to:<b@test.ex>
+rcpt to:<f@test.ex>
+rcpt to:<p@test.ex>
+rcpt to:<x@test.ex>
+rcpt to:<y@test.ex>
+rcpt to:<pipe@test.ex>
+rcpt to:<file@test.ex>
+rcpt to:<"smartuser.a@test.ex"@test.ex>
+rcpt to:<"smartuser.b@test.ex"@test.ex>
+rcpt to:<"smartuser.b@test.ex,a@test.ex"@test.ex>
+rset
+vrfy <a@test.ex>
+vrfy <b@test.ex>
+vrfy <f@test.ex>
+vrfy <p@test.ex>
+vrfy <x@test.ex>
+vrfy <y@test.ex>
+vrfy <pipe@test.ex>
+vrfy <file@test.ex>
+vrfy <"smartuser.a@test.ex"@test.ex>
+vrfy <"smartuser.b@test.ex"@test.ex>
+vrfy <"smartuser.b@test.ex,a@test.ex"@test.ex>
+quit
+****
--- /dev/null
+# retry data with ginormous 550 error
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+550 The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. The answer is no, but I am going to make sure it is a very long answer. Each line is at least 100 chars. I said NO!
+QUIT
+250 OK
+****
+exim -odi userx@domain1
+Test message 1
+****
+dump retry
+no_msglog_check
--- /dev/null
+# Overlong header lines and SMTP errors
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+mail from:<x@y.x>
+??? 250
+rcpt to:<x@test.ex>
+??? 250
+data
+??? 354
+From: Me <x@y.z>
+Comment: This was really seen!
+To: bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ bad@address;bad@address;bad@address;bad@address;bad@address;bad@address;
+ END
+.
+??? 550
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+# LMTP over TCP/IP (with log_sender_on_delivery)
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+LHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Receiver OK
+DATA
+354 Send it
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx
+This is a test message.
+****
+server PORT_S
+220 ESMTP
+LHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+DATA
+354 Send it
+.
+250 OK
+440 Temporary error
+550 Bad user
+250 OK
+440 Temporary error
+550 Bad user
+QUIT
+250 OK
+****
+exim -odi userx userxx userxy userxz useryx useryy
+This is a test message.
+****
+exim -Mrm $msg1
+****
+# This is a repeat of the previous test, but with pauses between the
+# final responses, so they go out in separate packets, and some multilines.
+server PORT_S
+220 ESMTP
+LHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+DATA
+354 Send it
+.
+250 OK
+440 Temporary error
+550-I don't like this user
+*sleep 1
+550 Bad user
+250-This one's OK
+250 OK
+440-Here's a whole long message, in several lines,
+*sleep 1
+440-just for testing that nothing breaks when
+440-we do this
+440 Temporary error
+550 Bad user
+QUIT
+250 OK
+****
+exim -odi userx userxx userxy userxz useryx useryy
+This is a test message.
+****
+exim -Mrm $msg1
+****
+# This is another repeat of the previous test, but this time some addresses
+# get bounced at RCPT time.
+server PORT_S
+220 ESMTP
+LHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+550 Receiver BAD
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+450 Receiver temporarily bad
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+550 Receiver BAD
+DATA
+354 Send it
+.
+440 Temporary error
+550-I don't like this user
+550 Bad user
+250-This one's OK
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx userxx userxy userxz useryx useryy
+This is a test message.
+****
+# This is to test the ignore_quota feature; first time we don't support it.
+server PORT_S
+220 ESMTP
+LHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+DATA
+354 Send it
+.
+250 OK
+250 OK
+250 OK
+QUIT
+250 OK
+****
+exim -odi -DIGNORE_QUOTA=true userxx userxy userxz
+This is a test message.
+****
+# This is to test the ignore_quota feature; second time we do support it
+server PORT_S
+220 ESMTP
+LHLO
+250-OK
+250-IGNOREQUOTA
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+RCPT TO:
+250 Receiver OK
+DATA
+354 Send it
+.
+250 OK
+250 OK
+250 OK
+QUIT
+250 OK
+****
+exim -odi -DIGNORE_QUOTA=true userxx userxy userxz
+This is a test message.
+****
+no_msglog_check
--- /dev/null
+# PIPELINING (server and client, lots of addresses)
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim -t
+To: a000@test.ex,a001@test.ex,a002@test.ex,a003@test.ex,a004@test.ex,
+ a005@test.ex,a006@test.ex,a007@test.ex,a008@test.ex,a009@test.ex,
+ a010@test.ex,a011@test.ex,a012@test.ex,a013@test.ex,a014@test.ex,
+ a015@test.ex,a016@test.ex,a017@test.ex,a018@test.ex,a019@test.ex,
+ a020@test.ex,a021@test.ex,a022@test.ex,a023@test.ex,a024@test.ex,
+ a025@test.ex,a026@test.ex,a027@test.ex,a028@test.ex,a029@test.ex,
+ a030@test.ex,a031@test.ex,a032@test.ex,a033@test.ex,a034@test.ex,
+ a035@test.ex,a036@test.ex,a037@test.ex,a038@test.ex,a039@test.ex,
+ a040@test.ex,a041@test.ex,a042@test.ex,a043@test.ex,a044@test.ex,
+ a045@test.ex,a046@test.ex,a047@test.ex,a048@test.ex,a049@test.ex,
+ a050@test.ex,a051@test.ex,a052@test.ex,a053@test.ex,a054@test.ex,
+ a055@test.ex,a056@test.ex,a057@test.ex,a058@test.ex,a059@test.ex,
+ a060@test.ex,a061@test.ex,a062@test.ex,a063@test.ex,a064@test.ex,
+ a065@test.ex,a066@test.ex,a067@test.ex,a068@test.ex,a069@test.ex,
+ a070@test.ex,a071@test.ex,a072@test.ex,a073@test.ex,a074@test.ex,
+ a075@test.ex,a076@test.ex,a077@test.ex,a078@test.ex,a079@test.ex,
+ a080@test.ex,a081@test.ex,a082@test.ex,a083@test.ex,a084@test.ex,
+ a085@test.ex,a086@test.ex,a087@test.ex,a088@test.ex,a089@test.ex,
+ a090@test.ex,a091@test.ex,a092@test.ex,a093@test.ex,a094@test.ex,
+ a095@test.ex,a096@test.ex,a097@test.ex,a098@test.ex,a099@test.ex,
+ a100@test.ex,a101@test.ex,a102@test.ex,a103@test.ex,a104@test.ex,
+ a105@test.ex,a106@test.ex,a107@test.ex,a108@test.ex,a109@test.ex,
+ a110@test.ex,a111@test.ex,a112@test.ex,a113@test.ex,a114@test.ex,
+ a115@test.ex,a116@test.ex,a117@test.ex,a118@test.ex,a119@test.ex,
+ a120@test.ex,a121@test.ex,a122@test.ex,a123@test.ex,a124@test.ex,
+ a125@test.ex,a126@test.ex,a127@test.ex,a128@test.ex,a129@test.ex,
+ a130@test.ex,a131@test.ex,a132@test.ex,a133@test.ex,a134@test.ex,
+ a135@test.ex,a136@test.ex,a137@test.ex,a138@test.ex,a139@test.ex,
+ a140@test.ex,a141@test.ex,a142@test.ex,a143@test.ex,a144@test.ex,
+ a145@test.ex,a146@test.ex,a147@test.ex,a148@test.ex,a149@test.ex,
+ a150@test.ex,a151@test.ex,a152@test.ex,a153@test.ex,a154@test.ex,
+ a155@test.ex,a156@test.ex,a157@test.ex,a158@test.ex,a159@test.ex,
+ a160@test.ex,a161@test.ex,a162@test.ex,a163@test.ex,a164@test.ex,
+ a165@test.ex,a166@test.ex,a167@test.ex,a168@test.ex,a169@test.ex,
+ a170@test.ex,a171@test.ex,a172@test.ex,a173@test.ex,a174@test.ex,
+ a175@test.ex,a176@test.ex,a177@test.ex,a178@test.ex,a179@test.ex,
+ a180@test.ex,a181@test.ex,a182@test.ex,a183@test.ex,a184@test.ex,
+ a185@test.ex,a186@test.ex,a187@test.ex,a188@test.ex,a189@test.ex,
+ a190@test.ex,a191@test.ex,a192@test.ex,a193@test.ex,a194@test.ex,
+ a195@test.ex,a196@test.ex,a197@test.ex,a198@test.ex,a199@test.ex,
+ a200@test.ex,a201@test.ex,a202@test.ex,a203@test.ex,a204@test.ex,
+ a205@test.ex,a206@test.ex,a207@test.ex,a208@test.ex,a209@test.ex,
+ a210@test.ex,a211@test.ex,a212@test.ex,a213@test.ex,a214@test.ex,
+ a215@test.ex,a216@test.ex,a217@test.ex,a218@test.ex,a219@test.ex,
+ a220@test.ex,a221@test.ex,a222@test.ex,a223@test.ex,a224@test.ex,
+ a225@test.ex,a226@test.ex,a227@test.ex,a228@test.ex,a229@test.ex,
+ a230@test.ex,a231@test.ex,a232@test.ex,a233@test.ex,a234@test.ex,
+ a235@test.ex,a236@test.ex,a237@test.ex,a238@test.ex,a239@test.ex,
+ a240@test.ex,a241@test.ex,a242@test.ex,a243@test.ex,a244@test.ex,
+ a245@test.ex,a246@test.ex,a247@test.ex,a248@test.ex,a249@test.ex,
+ a250@test.ex,a251@test.ex,a252@test.ex,a253@test.ex,a254@test.ex,
+ a255@test.ex,a256@test.ex,a257@test.ex,a258@test.ex,a259@test.ex,
+ a260@test.ex,a261@test.ex,a262@test.ex,a263@test.ex,a264@test.ex,
+ a265@test.ex,a266@test.ex,a267@test.ex,a268@test.ex,a269@test.ex,
+ a270@test.ex,a271@test.ex,a272@test.ex,a273@test.ex,a274@test.ex,
+ a275@test.ex,a276@test.ex,a277@test.ex,a278@test.ex,a279@test.ex,
+ a280@test.ex,a281@test.ex,a282@test.ex,a283@test.ex,a284@test.ex,
+ a285@test.ex,a286@test.ex,a287@test.ex,a288@test.ex,a289@test.ex,
+ a290@test.ex,a291@test.ex,a292@test.ex,a293@test.ex,a294@test.ex,
+ a295@test.ex,a296@test.ex,a297@test.ex,a298@test.ex,a299@test.ex,
+ a300@test.ex,a301@test.ex,a302@test.ex,a303@test.ex,a304@test.ex,
+ a305@test.ex,a306@test.ex,a307@test.ex,a308@test.ex,a309@test.ex,
+ a310@test.ex,a311@test.ex,a312@test.ex,a313@test.ex,a314@test.ex,
+ a315@test.ex,a316@test.ex,a317@test.ex,a318@test.ex,a319@test.ex,
+ a320@test.ex,a321@test.ex,a322@test.ex,a323@test.ex,a324@test.ex,
+ a325@test.ex,a326@test.ex,a327@test.ex,a328@test.ex,a329@test.ex,
+ a330@test.ex,a331@test.ex,a332@test.ex,a333@test.ex,a334@test.ex,
+ a335@test.ex,a336@test.ex,a337@test.ex,a338@test.ex,a339@test.ex,
+ a340@test.ex,a341@test.ex,a342@test.ex,a343@test.ex,a344@test.ex,
+ a345@test.ex,a346@test.ex,a347@test.ex,a348@test.ex,a349@test.ex,
+ a350@test.ex,a351@test.ex,a352@test.ex,a353@test.ex,a354@test.ex,
+ a355@test.ex,a356@test.ex,a357@test.ex,a358@test.ex,a359@test.ex,
+ a360@test.ex,a361@test.ex,a362@test.ex,a363@test.ex,a364@test.ex,
+ a365@test.ex,a366@test.ex,a367@test.ex,a368@test.ex,a369@test.ex,
+ a370@test.ex,a371@test.ex,a372@test.ex,a373@test.ex,a374@test.ex,
+ a375@test.ex,a376@test.ex,a377@test.ex,a378@test.ex,a379@test.ex,
+ a380@test.ex,a381@test.ex,a382@test.ex,a383@test.ex,a384@test.ex,
+ a385@test.ex,a386@test.ex,a387@test.ex,a388@test.ex,a389@test.ex,
+ a390@test.ex,a391@test.ex,a392@test.ex,a393@test.ex,a394@test.ex,
+ a395@test.ex,a396@test.ex,a397@test.ex,a398@test.ex,a399@test.ex,
+ a400@test.ex,a401@test.ex,a402@test.ex,a403@test.ex,a404@test.ex,
+ a405@test.ex,a406@test.ex,a407@test.ex,a408@test.ex,a409@test.ex,
+ a410@test.ex,a411@test.ex,a412@test.ex,a413@test.ex,a414@test.ex,
+ a415@test.ex,a416@test.ex,a417@test.ex,a418@test.ex,a419@test.ex,
+ a420@test.ex,a421@test.ex,a422@test.ex,a423@test.ex,a424@test.ex,
+ a425@test.ex,a426@test.ex,a427@test.ex,a428@test.ex,a429@test.ex,
+ a430@test.ex,a431@test.ex,a432@test.ex,a433@test.ex,a434@test.ex,
+ a435@test.ex,a436@test.ex,a437@test.ex,a438@test.ex,a439@test.ex,
+ a440@test.ex,a441@test.ex,a442@test.ex,a443@test.ex,a444@test.ex,
+ a445@test.ex,a446@test.ex,a447@test.ex,a448@test.ex,a449@test.ex,
+ a450@test.ex,a451@test.ex,a452@test.ex,a453@test.ex,a454@test.ex,
+ a455@test.ex,a456@test.ex,a457@test.ex,a458@test.ex,a459@test.ex,
+ a460@test.ex,a461@test.ex,a462@test.ex,a463@test.ex,a464@test.ex,
+ a465@test.ex,a466@test.ex,a467@test.ex,a468@test.ex,a469@test.ex,
+ a470@test.ex,a471@test.ex,a472@test.ex,a473@test.ex,a474@test.ex,
+ a475@test.ex,a476@test.ex,a477@test.ex,a478@test.ex,a479@test.ex,
+ a480@test.ex,a481@test.ex,a482@test.ex,a483@test.ex,a484@test.ex,
+ a485@test.ex,a486@test.ex,a487@test.ex,a488@test.ex,a489@test.ex,
+ a490@test.ex,a491@test.ex,a492@test.ex,a493@test.ex,a494@test.ex,
+ a495@test.ex,a496@test.ex,a497@test.ex,a498@test.ex,a499@test.ex
+
+Testing
+****
+exim -M $msg1
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# PIPELINING (client: errors, etc)
+need_ipv4
+#
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+451 Temp error
+RCPT TO
+550 Perm error
+RCPT TO
+250 OK
+DATA
+351 Send more
+.
+250 OK
+****
+exim -odi a b c d
+.
+****
+# Response timeout
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+*sleep 2
+****
+exim -odi a b c
+.
+****
+# Temp error on MAIL
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+451 Temp error
+RCPT TO
+503 No sender given
+RCPT TO
+503 No sender given
+DATA
+503 No envelope
+QUIT
+250 OK
+****
+exim -odi a b
+.
+****
+# Perm error on MAIL
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+550 Perm error
+RCPT TO
+503 No sender given
+RCPT TO
+503 No sender given
+DATA
+503 No envelope
+QUIT
+250 OK
+****
+exim -odi a b
+.
+****
+# All get temp errors
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+451 Temp error 1
+RCPT TO
+451 Temp error 2
+DATA
+503 No recipients
+QUIT
+250 OK
+****
+exim -odi a b
+.
+****
+# All get perm errors
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+551 Perm error 1
+RCPT TO
+551 Perm error 2
+DATA
+503 No recipients
+QUIT
+250 OK
+****
+exim -odi a b
+.
+****
+# Mixed temp and perm
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+451 Temp error 1
+RCPT TO
+551 Perm error 2
+DATA
+503 No recipients
+QUIT
+250 OK
+****
+exim -odi a b
+.
+****
+# Perm error on DATA after good recipients
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+DATA
+503 Sorry perm data error
+QUIT
+250 OK
+****
+exim -odi a b
+.
+****
+# Temp error on DATA after good recipients
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+DATA
+403 Sorry temp data error
+QUIT
+250 OK
+****
+exim -odi a b
+.
+****
+# Temp error on DATA after good recipients, but in first block of a
+# multi-block interaction
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+RCPT TO
+550 NO
+DATA
+403 Sorry temp data error
+QUIT
+250 OK
+****
+exim -v -odi a b c d e f g h i j k l m n o p q r s t u v w x y z aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx yy zz
+.
+****
+# Server drops connection after some responses
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+550 NO
+****
+exim -odi a b c d e
+.
+****
+no_msglog_check
--- /dev/null
+# PIPELINING (client: multiple messages, with log_sender_on_delivery)
+need_ipv4
+#
+exim a
+Message 1
+****
+exim b
+Message 2
+****
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+351 Send more
+.
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+351 Send more
+.
+250 OK
+QUIT
+250 OK
+****
+exim -d-all+queue_run -v -qq
+.
+****
+# This time, the first one gets a MAIL error. As the message makes no
+# progress, the second one runs separately, and gets a refused connection.
+exim a
+Message 1
+****
+exim b
+Message 2
+****
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+550 NO
+RCPT TO
+503 Unexpected RCPT
+DATA
+503 Unexpected DATA
+QUIT
+250 OK
+****
+exim -d-all+queue_run -v -qq
+.
+****
+# One message and an error message were left on the queue. Add a new
+# message and try again; this time the first message gets a recipient error.
+exim c
+Message 3
+****
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+550 Unknown
+DATA
+503 Unexpected DATA
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+351 OK
+.
+250 OK
+QUIT
+250 OK
+****
+exim -d-all+ident -v -qqf
+.
+****
+no_msglog_check
--- /dev/null
+# -be and file permissions
+touch DIR/test-private
+sudo chown EXIMUSER DIR/test-private
+sudo chmod 0600 DIR/test-private
+#
+exim -be
+${lookup{junk}lsearch{DIR/test-private}{$value}fail}
+****
--- /dev/null
+# untrusted_set_sender: TRUE
+exim -odi -f foo@bar userx
+****
+exim -odi userx
+From foo@bar Fri Jan 5 12:35 GMT 1996
+****
+exim -odi -bs
+MAIL FROM:<foo@bar>
+RCPT TO:<userx@test.ex>
+DATA
+.
+QUIT
+****
+exim -odi -f foo@bar userx
+From: foobydooby <foo@bar>
+****
+1
+exim -odi -f '<>' userx
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+****
+exim -odq -f '' userx
+****
+exim -odq -f foo@bar userx
+****
+sudo exim -odq -f "<>" userx
+****
+exim -bp
+****
+exim -odi -f bar@foo userx
+****
+exim -odq -f userx-something@myhost.test.ex userx
+****
+exim -odq -f usery-something@myhost.test.ex userx
+****
+no_msglog_check
--- /dev/null
+# untrusted_set_sender: FALSE
+exim -odi -f foo@bar userx
+****
+exim -odi userx
+From foo@bar Fri Jan 5 12:35 GMT 1996
+****
+exim -odi -bs
+MAIL FROM:<foo@bar>
+RCPT TO:<userx@test.ex>
+DATA
+.
+QUIT
+****
+exim -odi -f foo@bar userx
+From: foobydooby <foo@bar>
+****
+1
+exim -odi -f '<>' userx
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+This message is going to be too large. Create a few lines to make it so.
+****
+exim -odq -f '<>' userx
+****
+exim -odq -f foo@bar userx
+****
+sudo exim -odq -f "<>" userx
+****
+exim -bp
+****
+no_msglog_check
--- /dev/null
+# autoreply and once and once_file_size
+exim -odi -f foo1 userx
+****
+exim -odi -f foo1 userx
+****
+exim -odi -f foo2 userx
+****
+exim -odi -f foo2 userx
+****
+exim -odi -f foo3 userx
+****
+exim -odi -f foo3 userx
+****
+exim -odi -f foo1 userx
+****
--- /dev/null
+# autoreply with once_repeat and once_file_size
+exim -odi userx@test.ex
+Subject: first message
+****
+exim -odi userx@test.ex
+Subject: second message
+****
+sleep 5
+exim -odi userx@test.ex
+Subject: third message
--- /dev/null
+# child addresses in bounce and delay messages
+exim -odi userxx@test.ex useryx@test.ex
+Subject: first message
+****
+exim -odi userxy@test.ex useryy@test.ex file@test.ex
+Subject: second message
+****
+sleep 1
+exim -odi -qf
+****
+no_msglog_check
--- /dev/null
+# self = pass and unseen
+exim -odi copy@localhost
+Original message
+****
+no_message_check
--- /dev/null
+# redirect: file and pipe addresses
+exim -odi /a/b/c@no.test.ex '|/p/q/r'@no.test.ex
+Message 1
+****
+exim -odi DIR/test-mail/file@yes.test.ex '|DIR/aux-fixed/showenv'@yes.test.ex
+Message 2
+****
+no_msglog_check
--- /dev/null
+# callout verification (no caching)
+need_ipv4
+#
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<ok@localhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+sudo exim -v -bs -oMa V4NET.0.0.2
+MAIL FROM:<unchecked@localhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 Unknown user
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<bad@localhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+450 Temporary error
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<uncheckable@localhost1>
+RCPT TO:<z@test.ex>
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+550 Error for <>
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<uncheckable2@localhost1>
+RCPT TO:<z@test.ex>
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+550-Multiline error for <>
+550 Here's the second line
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<uncheckable@localhost1>
+RCPT TO:<z@test.ex>
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 Recipient not liked
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.3
+MAIL FROM:<uncheckable@localhost1>
+RCPT TO:<z@remote.domain>
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550-Recipient not liked on two lines
+550 Here's the second
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.3
+MAIL FROM:<uncheckable@localhost1>
+RCPT TO:<z@remote.domain>
+QUIT
+****
+sudo exim -v -bs -oMa V4NET.0.0.3
+MAIL FROM:<uncheckable@localhost1>
+RCPT TO:<z@remote.domain>
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 Not liked
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.4
+MAIL FROM:<uncheckable@localhost1>
+RCPT TO:<z@remote.domain>
+DATA
+From: abcd@x.y.z
+.
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 Not liked
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.4
+MAIL FROM:<uncheckable@localhost1>
+RCPT TO:<z@remote.domain>
+DATA
+From: abcd@x.y.z
+.
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.5
+MAIL FROM:<ok@localhost1>
+RCPT TO:<z@remote.domain>
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 Don't like postmaster
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.5
+MAIL FROM:<ok@localhost1>
+RCPT TO:<z@remote.domain>
+QUIT
+****
+server PORT_S
+220 Server ready
+LHLO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 Recipient not liked
+QUIT
+250 OK
+****
+sudo exim -v -bs -oMa V4NET.0.0.3
+MAIL FROM:<uncheckable@localhost1>
+RCPT TO:<z@remote.lmtp>
+QUIT
+****
+server PORT_S
+****
+sudo exim -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<bad@localhost1>
+RCPT TO:<z@test.ex>
+QUIT
+****
+sudo exim -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<bad@localhost1>
+RCPT TO:<z@test.ex>
+QUIT
+****
--- /dev/null
+# fallback hosts and self=send on manualroute
+need_ipv4
+#
+exim -odi abcd@x.y.z
+****
+no_msglog_check
--- /dev/null
+# hosts_max_try
+need_ipv4
+#
+exim -odi a@test.ex
+****
+no_msglog_check
--- /dev/null
+# log_incoming_port and log_incoming_interface and -oMa/-bh with ports
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client HOSTIPV4 PORT_D
+??? 220
+mail from:<x@y.x>
+??? 250
+rcpt to:<x@test.ex>
+??? 250
+data
+??? 354
+.
+??? 250
+quit
+??? 221
++++ 1
+****
+client 127.0.0.1 PORT_D
+??? 220
+mail from:<x@y.x>
+??? 250
+rcpt to:<x@test.ex>
+??? 250
+data
+??? 354
+.
+??? 250
+quit
+??? 221
++++ 1
+****
+client HOSTIPV4 PORT_D
+??? 220
+helo rhubarb
+??? 250
+mail from:<x@y.x>
+??? 250
+rcpt to:<x@test.ex>
+??? 250
+data
+??? 354
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+sudo exim -bs -oMa V4NET.9.8.7.1234
+mail from:<x@y.x>
+rcpt to:<x@test.ex>
+data
+-oMa message
+.
+quit
+****
+exim -odi -qf
+****
+exim -bh 192.168.1.2.99
+quit
+****
--- /dev/null
+# rewriting at transport time
+need_ipv4
+#
+server PORT_S
+220 OK
+EHLO
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+RCPT
+250 OK
+RCPT
+250 OK
+RCPT
+250 OK
+DATA
+354 OK
+.
+250 OK
+QUIT
+220 OK
+****
+exim -odi a@test.ex b@test.ex a@domain1 b@domain1 a@domain3 b@domain3
+From: a@test.ex, b@test.ex, a@domain1, b@domain1, a@domain3, b@domain3
+To: a@test.ex, b@test.ex, a@domain1, b@domain1, a@domain3, b@domain3
+Reply-to: a@test.ex, b@test.ex, a@domain1, b@domain1, a@domain3, b@domain3
+****
--- /dev/null
+# Inline filter text
+exim -bt filter1.test.ex
+****
--- /dev/null
+# freeze_tell & system filter & ACL
+exim -odi userx
+Rhubarb
+****
+exim -odi -bs
+mail from:<a@test.ex>
+rcpt to:<usery@test.ex>
+data
+Should be frozen
+.
+quit
+****
--- /dev/null
+# @mx_any
+need_ipv4
+#
+exim -bh V4NET.0.0.0
+mail from:<a@b>
+rcpt to:<c@d>
+rcpt to:<e@mxt1.test.ex>
+rcpt to:<f@mxt6.test.ex>
+quit
+****
+sudo exim -bs -oMa V4NET.0.0.0
+mail from:<a@b>
+rcpt to:<c@d>
+rcpt to:<e@mxt1.test.ex>
+rcpt to:<f@mxt6.test.ex>
+rcpt to:<g@mxt98.test.ex>
+quit
+****
--- /dev/null
+# redirect with forced lookup fail and no_more
+2
+exim -bt xxx
+****
--- /dev/null
+# Macro name longer than 63 characters
+1
+exim -bP qualify_domain
+****
--- /dev/null
+# redirect: file and pipe addresses with hide_child_in_errmsg
+exim -odi /a/b/c@no.test.ex '|/p/q/r'@no.test.ex
+Message 1
+****
+exim -odi DIR/test-mail/file@yes.test.ex '|DIR/aux-fixed/showenv'@yes.test.ex
+Message 2
+****
+no_msglog_check
--- /dev/null
+# require_files with failing expansion or relative path
+need_ipv4
+#
+1
+exim -bt userx@test.ex
+****
+1
+exim -bt xxx@a.b.c
+****
--- /dev/null
+# host list in verify output when routing to a local transport
+exim -v -bv userx@localhost
+****
+exim -bv userx@localhost
+****
+exim -v -bt userx@localhost
+****
+exim -bt userx@localhost
+****
+exim -v -bt userx@smtp
+****
--- /dev/null
+# create_directory and directory_mode
+exim -odi userx@test.ex
+****
+ls -ld DIR/test-mail/subdir | cut -f 1 -d ' '
--- /dev/null
+# filter freeze + send message fails
+exim -odq userx@test.ex
+****
+exim -qf
+****
+exim -Mt $msg1
+****
+exim -qf
+****
+no_msglog_check
--- /dev/null
+# message with no terminating LF
+need_ipv4
+#
+server PORT_S
+220 Server ready
+EHLO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+354 Send more
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi abc@x.y.z
+Test message\NONL\
+****
+server PORT_S
+220 Server ready
+EHLO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+354 Send more
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi abc@x.y.z
+Subject: Test message\NONL\
+****
--- /dev/null
+# autoreply with unseen
+exim -odi faq@nl.demon.net
+Test message
+****
+exim -bh 1.2.3.4
+ehlo xxxx
+mail from:<abcd@x.y>
+rcpt to:<faq@nl.demon.net>
+quit
+****
--- /dev/null
+# skipping in expansions
+exim -be
+${if eq {0}{0}{OK}{${lookup{x}lsearch{/x/y}}}}
+${if eq {0}{0}{OK}{${extract{key}{${lookup{x}lsearch{/x/y}}}}}}
+${if eq {0}{0}{OK}{${tr{${extract{key}{${lookup{x}lsearch{/x/y}}}}}{x}{y}}}}
+${if eq {0}{0}{OK}{${sg{${extract{key}{${lookup{x}lsearch{/x/y}}}}}{x}{y}}}}
+****
--- /dev/null
+# -t with newline in address; also spaces after a "final" dot
+exim -odq -t
+To: <"abc
+ def"@test.ex>, xxx@yyy
+Bcc: aaa@bbb
+.
+****
+exim -bp
+****
+exim -Mvh $msg1
+****
+no_msglog_check
--- /dev/null
+# forbid lookup/exists in filter - with autoreply
+exim -odi filter
+.
+****
--- /dev/null
+# :blackhole: with deferred other address
+exim -odi blackhole devnull other
+.
+****
+exim -q
+****
--- /dev/null
+# humungous "freeze" message in system filter
+exim -odi xxxx
+X-Long:
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed-------
+ This is a very very long header line indeed----End
+.
+****
+no_msglog_check
--- /dev/null
+# local part case in rewrites
+exim -brw User@a.domain
+****
+exim -d-all+rewrite -brw User@c.domain
+****
--- /dev/null
+# From: and Sender: and rewriting
+exim -odq SomeOne
+From: userx@test.ex
+****
+exim -Mvh $msg1
+****
+exim -odq OtherOne
+From: usery@test.ex
+****
+exim -Mvh $msg2
+****
+exim -odq ThirdOne
+****
+exim -Mvh $msg3
+****
+no_msglog_check
--- /dev/null
+# senders check while verifying
+need_ipv4
+#
+exim -bh V4NET.0.0.0
+mail from:<ok@sender>
+rcpt to:<oklist@listr.test.ex>
+rset
+mail from:<bad@sender>
+rcpt to:<oklist@listr.test.ex>
+quit
+****
+exim -DSERVER=server -bd -oX PORT_D
+****
+client HOSTIPV4 PORT_D
+??? 220
+mail from:<ok@sender>
+??? 250
+rcpt to:<oklist@listr.test.ex>
+??? 250
+rset
+??? 250
+mail from:<bad@sender>
+??? 250
+rcpt to:<oklist@listr.test.ex>
+??? 250
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+# errors_to and unseen
+exim -odi -f abc@x.y.z userx
+Test message
+****
+exim -odi -f pqr@x.y.z alias
+Test message
+****
+exim -odi -f gfh@x.y.z forward
+Test message
+****
+exim -odi -f mno@x.y.z smart
+Test message
+****
--- /dev/null
+# return_path on appendfile and smtp transports
+need_ipv4
+#
+exim -odi -f abc@x.y.z userx
+Test message
+****
+exim -odi -f xyz@x.y.z userx
+Test message 2
+****
+server PORT_S 3
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 PIPELINING
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Go ahead
+.
+250 OK
+QUIT
+250 OK
+*eof
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 PIPELINING
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Go ahead
+.
+250 OK
+QUIT
+250 OK
+*eof
+220 ESMTP
+EHLO
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+550 Recipient not OK
+QUIT
+250 OK
+****
+exim -odi -f pqr@x.y.z userx phil fail
+Test message 3
+****
--- /dev/null
+# resent headers
+exim -odq userx
+From: f
+To: t
+Date: d
+Subject: s
+Resent-From: f
+Resent-To: t
+Resent-Date: d
+Resent-Subject: should not exist
+****
+exim -Mvh $msg1
+****
+exim -odq userx
+From: f
+Resent-From: f
+****
+exim -Mvh $msg2
+****
+exim -odq userx
+From: userx
+To: xx@yy
+Resent-From: userx
+Resent-To: xx@yy
+****
+exim -Mvh $msg3
+****
+no_msglog_check
--- /dev/null
+# repeated unknown SMTP commands
+exim -bs
+one
+two
+three
+four
+five
+six
+****
+exim -bh V4NET.0.0.0
+one
+two
+three
+four
+five
+six
+****
+exim -DOPTION=smtp_max_unknown_commands=1 -bh V4NET.0.0.0
+one
+two
+****
--- /dev/null
+# errors_copy
+exim -odi unknown
+.
+****
--- /dev/null
+# fallback hosts on transport with dnslookup using A record
+need_ipv4
+#
+exim -odi abcd@ten-1.test.ex
+****
+no_msglog_check
--- /dev/null
+# CRs in messages
+exim -odi userx
+crheader: includes <\r> and ends CRLF\r
+Subject: this is still a header\r
+\r
+Text includes <\r> and ends CRLF\r
+Text includes <\r> and ends CRLF\r
+CR-dot-CR in body:\r.\rline continues
+.\r
+****
+exim -i -odi userx
+crheader: includes <\r> and ends CRLF\r
+\r
+Text includes <\r> and ends CRLF\r
+Text includes <\r> and ends CRLF\r
+CR-dot-CR in body:\r.\rline continues
+.\r
+****
+exim -odi userx
+crheader: includes <\r> and ends CRLF\r
+\r
+Text includes <\r> and ends CRLF\r
+Text includes <\r> and ends CRLF\r
+CR-dot-CR in body:\r.\rline continues
+.
+****
+exim -odi userx <DIR/aux-fixed/TESTNUM.m1
+****
+exim -odi userx <DIR/aux-fixed/TESTNUM.m2
+****
+exim -i -odi userx <DIR/aux-fixed/TESTNUM.m1
+****
+exim -i -odi userx <DIR/aux-fixed/TESTNUM.m2
+****
+exim -odi userx
+.dotheader: header line starts with a dot
+xxx: dot bare CR:.\rxyz
+.\rweird header line
+Not: a header line
+****
+exim -odi -bs <DIR/aux-fixed/TESTNUM.m3
+****
+exim -odi -bs <DIR/aux-fixed/TESTNUM.m4
+****
--- /dev/null
+# ident queries
+need_ipv4
+#
+server 1413
+<999 , 25
+>999 , 25 : USERID : UNIX :abcd
+****
+exim -bh 127.0.0.1 -oMa 127.0.0.1.999 -oMi '[127.0.0.1]:25'
+helo a.b.c
+quit
+****
+# No CRLF send with output
+server 1413
+<999 , 25
+>>999 , 25 : USERID : UNIX :abcd
+****
+exim -bh 127.0.0.1 -oMa '[127.0.0.1]:999' -oMi 127.0.0.1.25
+helo a.b.c
+quit
+****
+# Non-printing characters
+server 1413
+<999 , 25
+>999 , 25 : USERID : UNIX :ab\rcd
+****
+exim -bh 127.0.0.1 -oMa 127.0.0.1.999 -oMi 127.0.0.1.25
+helo a.b.c
+quit
+****
+# More than 127 but less than 2K
+server 1413
+<999 , 25
+>999 , 25 : USERID : UNIX :abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++<<<
+****
+exim -bh 127.0.0.1 -oMa 127.0.0.1.999 -oMi 127.0.0.1.25
+helo a.b.c
+quit
+****
+# More than 2K
+server 1413
+<999 , 25
+>999 , 25 : USERID : UNIX :abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++abcdefghijklmnopqrstuvwxyz++++
+****
+exim -bh 127.0.0.1 -oMa 127.0.0.1.999 -oMi 127.0.0.1.25
+helo a.b.c
+quit
+****
+# Different spacing in the returned identity (1)
+server 1413
+<999 , 25
+>999, 25 : USERID : UNIX :abcd
+****
+exim -bh 127.0.0.1 -oMa 127.0.0.1.999 -oMi 127.0.0.1.25
+helo a.b.c
+quit
+****
+# Different spacing in the returned identity (2)
+server 1413
+<999 , 25
+>999,25 : USERID : UNIX :abcd
+****
+exim -bh 127.0.0.1 -oMa 127.0.0.1.999 -oMi 127.0.0.1.25
+helo a.b.c
+quit
+****
--- /dev/null
+# local delivery config problems
+exim -odi bad.return bad.return2 bad.uid exp.fail userx
+****
+exim -qf
+****
+no_msglog_check
--- /dev/null
+# remote delivery config problems
+need_ipv4
+#
+exim -N -odi bad.return bad.return2 no.hosts userx
+****
+exim -qf
+****
+no_msglog_check
--- /dev/null
+# too many environment settings in pipe
+exim -odi userx
+****
+no_msglog_check
--- /dev/null
+# pass_router
+need_ipv4
+#
+2
+exim -bt x@domain0 x@domain1 x@domain2
--- /dev/null
+# retry rules and local parts
+exim -odi userx@test.ex
+****
+dump retry
+exim -odi usery@test.ex
+****
+exim -odq userz@test.ex
+****
+exim -q
+****
+exim -odi notuser@test.ex
+****
+dump retry
+exim -odi notuser2@test.ex
+****
+exim -odq notuser3@test.ex
+****
+exim -q
+****
+exim -Mrm $msg1 $msg2 $msg3 $msg4
+****
+exim -odi r3.a@outside
+****
+exim -odq r3.b@outside
+****
+exim -q
+****
+exim -Mrm $msg1 $msg2
+****
+exim -odi r4.a@outside
+****
+exim -odq r4.b@outside
+****
+exim -q
+****
+exim -odi r5.a@r5domain.ex
+****
+no_msglog_check
+no_message_check
--- /dev/null
+# error message when filter disabled
+1
+exim -bt userx@x.y
--- /dev/null
+# skip_syntax_errors and syntax_errors_to
+exim -odi list@test.ex
+****
+exim -odi list2@test.ex
+Message to list2.
+****
+exim -odi filter@test.ex
+****
+exim -odi nmlist@test.ex
+Message to nmlist.
+****
+exim -odi filter2@test.ex
+Message to filter2.
+****
+exim -odi filter3@test.ex
+Message to filter3.
+****
+no_msglog_check
--- /dev/null
+# prefix/suffix when router skipped
+2
+exim -bt pre-x@test.ex x-post@test.ex pre-z@test.ex
+****
--- /dev/null
+# redirect and owners/owngroups/modemask
+cp DIR/aux-fixed/TESTNUM.exim DIR/test-owned-by-exim
+sudo chown EXIMUSER:EXIMGROUP DIR/test-owned-by-exim
+2
+exim -bt CALLER@r1 CALLER@r2 CALLER@r3 CALLER@r4 CALLER@r5 CALLER@r6 CALLER@r7 CALLER@r8
+****
+2
+exim -bt CALLER@r9 CALLER@r10 CALLER@r11
+****
--- /dev/null
+# error message when filter disabled
+1
+exim -bt userx@x.y
--- /dev/null
+# skip_syntax_errors and syntax_errors_to
+touch DIR/test-private
+sudo chown EXIMUSER DIR/test-private
+sudo chmod 0600 DIR/test-private
+#
+exim -odi list@test.ex
+****
+exim -odi list2@test.ex
+Message to list2.
+****
+exim -odi filter@test.ex
+****
+exim -odi nmlist@test.ex
+Message to nmlist.
+****
+exim -odi filter2@test.ex
+Message to filter2.
+****
+exim -odi filter3@test.ex
+Message to filter3.
+****
+no_msglog_check
--- /dev/null
+# prefix/suffix when router skipped
+2
+exim -bt pre-x@test.ex x-post@test.ex pre-z@test.ex
+****
--- /dev/null
+# redirect and owners/owngroups/modemask
+sudo chown EXIMUSER:EXIMGROUP DIR/aux-var/TESTNUM.exim
+sudo chmod 0644 DIR/aux-var/TESTNUM.exim
+#
+2
+exim -bt CALLER@r1 CALLER@r2 CALLER@r3 CALLER@r4 CALLER@r5 CALLER@r6 CALLER@r7 CALLER@r8
+****
+2
+exim -bt CALLER@r9 CALLER@r10 CALLER@r11
+****
--- /dev/null
+# require_files and user tests
+sudo chown EXIMUSER:EXIMGROUP DIR/aux-var/TESTNUM.exim
+sudo chmod 0640 DIR/aux-var/TESTNUM.exim
+#
+2
+exim -bt userx@r1 userx@r2 userx@r3 userx@r4 userx@r5 userx@r6 userx@r7 userx@r8
+****
+exim -bs
+vrfy userx@r1
+vrfy userx@r2
+vrfy userx@r3
+vrfy userx@r4
+vrfy userx@r5
+vrfy userx@r6
+vrfy userx@r7
+vrfy userx@r8
+vrfy userx@r9
+quit
+****
--- /dev/null
+# address_data
+exim -odi userx@r1 userx@r2 userx@r3 userx@r4 userx@r5
+****
+no_msglog_check
--- /dev/null
+# named domain lists
+exim -d -bt userx@test.ex
+****
+exim -d -odi userx@test.ex
+****
--- /dev/null
+# 5xx after DATA
+need_ipv4
+#
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+500 NO
+QUIT
+200 OK
+****
+exim -v -odi userx@test.ex
+****
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+500 NO
+QUIT
+200 OK
+****
+exim -v -odi userx@test.ex
+****
--- /dev/null
+# named host lists
+exim -d -bh V4NET.2.3.4
+quit
+****
+exim -d -bh V4NET.6.7.8
+quit
+****
+exim -d -bh V4NET.10.11.12
+quit
+****
+exim -d -bh V4NET.1.1.1
+quit
+****
+exim -d -bh V4NET.2.2.2
+quit
+****
--- /dev/null
+# named local part lists
+exim -d -bt CALLER@test.ex
+****
+exim -d -odi CALLER@test.ex
+****
+2
+exim -d -bt unknown@test.ex
+****
--- /dev/null
+# named address lists
+exim -d -f CALLER@test.ex -bt CALLER@test.ex
+****
+2
+exim -d -f user1@fun.1 -bt CALLER@test.ex
+****
--- /dev/null
+# errors_copy
+exim -odi -f spqr@test.ex spqr@test.ex
+****
+exim -odi -f abcd@test.ex abcd@test.ex
+****
+no_msglog_check
--- /dev/null
+# @ items in domain lists and host lists
+exim -bh V4NET.1.1.1
+mail from:<x@y>
+rcpt to:<1@myhost.test.ex>
+rcpt to:<1@[127.0.0.1]>
+rcpt to:<1@else.where>
+rcpt to:<2@mxt13.test.ex>
+rcpt to:<2@mxt1.test.ex>
+rcpt to:<2@mxt6.test.ex>
+rcpt to:<2@mxt9.test.ex>
+rcpt to:<2@mxnone.test.ex>
+rcpt to:<3@mxt5.test.ex>
+rcpt to:<3@mxt6.test.ex>
+rcpt to:<3@mxt9.test.ex>
+rcpt to:<3@mxnone.test.ex>
+rcpt to:<4@mxt5.test.ex>
+rcpt to:<4@mxt6.test.ex>
+rcpt to:<4@mxt9.test.ex>
+rcpt to:<4@mxnone.test.ex>
+rcpt to:<5@myhost.test.ex>
+quit
+****
+exim -bh V4NET.10.10.10
+mail from:<x@y>
+rcpt to:<5@myhost.test.ex>
+quit
+****
+exim -bh 127.0.0.1
+mail from:<x@y>
+rcpt to:<5@myhost.test.ex>
+quit
+****
+exim -bh V4NET.1.1.1
+mail from:<x@y>
+rcpt to:<2@mxt3.test.ex>
+rcpt to:<3@mxt3.test.ex>
+rcpt to:<4@mxt3.test.ex>
+quit
+****
--- /dev/null
+# Multiple ports on a server
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D3
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test message.
+.
+??? 250
+quit
+??? 221
+****
+client 127.0.0.1 PORT_D2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test message.
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -q
+****
--- /dev/null
+# Default uid for delivery and never_users
+exim -odi -d-all+uid somebody
+test
+.
+****
+exim -odi -d-all+uid never
+test to root
+.
+****
+no_msglog_check
--- /dev/null
+# batching controls for local delivery
+exim -odi x-t1 y-t1
+.
+****
+exim -odi x-t2 y-t2
+.
+****
+exim -odi x-t3 y-t3 z-t3@other.domain
+.
+****
+exim -odi x-t4 y-t4 xx-t4 yy-t4
+.
+****
--- /dev/null
+# max_rcpt and connection_max_messages (no parallelism)
+need_ipv4
+#
+exim -odq a b c d e f
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+550 Recipient not OK
+RCPT TO:
+550 Recipient not OK
+RSET
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi -q
+****
+exim -odq a b c d e f g h
+.
+****
+server PORT_S 2
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+550 Recipient not OK
+RCPT TO:
+550 Recipient not OK
+RSET
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+*eof
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi -q
+****
--- /dev/null
+# max_rcpt and connection_max_messages (2x parallel)
+need_ipv4
+#
+# There are deliveries in parallel in this script, and the processes that
+# run in parallel may not finish in the same order on different hosts. (Indeed,
+# they always seem to finish in precisely the opposite orders on Linux and
+# FreeBSD.) For that reason, we do a hacked-up sort on the log file right at
+# the end, to ensure that the log lines are always in the same order.
+#
+exim -odq a b c d e f
+.
+****
+server PORT_S 2
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+550 Recipient not OK
+QUIT
+250 OK
+*eof
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+550 Recipient not OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -q
+****
+exim -q
+****
+exim -odq a b c d e f g h
+.
+****
+server PORT_S 2
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+550 Recipient not OK
+RCPT TO:
+550 Recipient not OK
+RSET
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+*eof
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+550 Recipient not OK
+RCPT TO:
+550 Recipient not OK
+RSET
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -q
+****
+exim -q
+****
+# This is the hack to sort the log lines. Search for groups of delivery log
+# lines (**, =>, and -> lines), and sort them according to the local part of
+# the address.
+#
+sudo perl
+open(IN, "DIR/spool/log/mainlog") ||
+ die "Can't open DIR/spool/log/mainlog: $!\n";
+@lines = <IN>;
+close(IN);
+
+for ($i = 0; $i < @lines; $i++)
+ {
+ next unless $lines[$i] =~ / \*\* | => | -> /;
+ for ($j = $i + 1; $j < @lines; $j++)
+ { last if $lines[$j] !~ / \*\* | => | -> /; }
+
+ @sublist = splice @lines, $i, $j - $i;
+ @sublist = sort {
+ my($x) = $a =~ /(?: \*\* | => | -> )([^@]+)/;
+ my($y) = $b =~ /(?: \*\* | => | -> )([^@]+)/;
+ return $x cmp $y;
+ } @sublist;
+
+ splice @lines, $i, 0, @sublist;
+ $i = $j;
+ }
+
+open (OUT, ">DIR/spool/log/mainlog") ||
+ die "Can't open DIR/spool/log/mainlog: $!\n";
+print OUT @lines;
+close(OUT);
+****
--- /dev/null
+# ETRN serialization
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+ETRN one
+??? 250
+ETRN one
+??? 458
+ETRN two
+??? 250
++++ 2
+ETRN one
+??? 250
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+# serialize_hosts
+need_ipv4
+#
+exim -odq a b
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+*sleep 2
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -q
+****
+no_msglog_check
--- /dev/null
+# recipients_max
+1
+exim -odi userx usery
+From: me
+
+Body
+.
+****
+1
+exim -odi -oep userx usery
+From: me
+
+Body
+.
+****
--- /dev/null
+# .include and macro tests
+exim -bP local_interfaces message_size_limit recipients_max remote_sort_domains receive_timeout
+****
+exim -DRT= -bP receive_timeout
+****
+exim -DRT -bP receive_timeout
+****
+exim '-D RT = receive_timeout = 4s ' -bP receive_timeout
+****
--- /dev/null
+# repeat_use
+exim -v -bv a@one b@one a@two b@two
+****
--- /dev/null
+# manualroute passing hosts to local & remote transports
+need_ipv4
+#
+exim -odi -v -N userx@t1 userx@t2
+****
--- /dev/null
+# smtp_accept_{max,queue}_per_connection
+exim -odi -v -bs
+mail from:<x@y>
+rcpt to:<one@z>
+data
+.
+mail from:<x@y>
+rcpt to:<two@z>
+data
+.
+mail from:<x@y>
+quit
+****
+exim -odi -v -bs
+mail from:<x@y>
+rset
+mail from:<x@y>
+rset
+mail from:<x@y>
+quit
+****
+no_msglog_check
--- /dev/null
+# SMTP rate limiting using smtp_ratelimit_xxx settings
+exim -d-all+receive -odq -bs
+mail from:<x@y>
+rcpt to:<one@z>
+rcpt to:<one@z>
+rcpt to:<one@z>
+rcpt to:<one@z>
+rcpt to:<one@z>
+data
+.
+mail from:<x@y>
+rcpt to:<two@z>
+data
+.
+mail from:<x@y>
+quit
+****
+exim -d-all+receive -bh 1.2.3.4
+mail from:<x@y>
+rcpt to:<one@z>
+rcpt to:<one@z>
+quit
+****
+exim -d-all+receive -bh V4NET.9.8.7
+mail from:<x@y>
+rcpt to:<one@z>
+rcpt to:<one@z>
+quit
+****
+exim -d-all+receive -odq -bs
+mail from:<x@y>
+rcpt to:<reject@z>
+rcpt to:<reject@z>
+rcpt to:<reject@z>
+rcpt to:<reject@z>
+rcpt to:<reject@z>
+rset
+mail from:<x@y>
+rcpt to:<reject@z>
+rset
+mail from:<x@y>
+quit
+****
+no_msglog_check
--- /dev/null
+# received_headers_max
+exim -odi userx usery
+Received: from here to eternity
+Received: another time
+
+Test junk data
+.
+****
+exim -odi -f '<>' userx usery
+Received: from here to eternity
+Received: another time
+
+Test junk data
+.
+****
--- /dev/null
+# 'fail' in system filter
+exim -odi failure
+Test junk data
+.
+****
+exim -odi -f '<>' failure
+Test junk data
+.
+****
--- /dev/null
+# expandable file/directory transports
+exim -d-all+route -bt /a/b/c
+****
+exim -d-all+route -bt /x/y/z
+****
+exim -bt /a/b/c/
+****
+exim -bt /a/a/b//
+****
+exim -odi -N -f fil@ter /a/b/c
+****
+exim -odi -N -f fil@ter /x/y/z
+****
+exim -odi -N -f fil@ter /a/b/c/
+****
+exim -odi -N -f fil@ter /a/b/c//
+****
--- /dev/null
+# different logging text for system filter fail messages
+exim -odi failure1
+****
+exim -odi failure2
+****
--- /dev/null
+# log delivery_size
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi abc@test.ex xyz1@ex.test xyz2@ex.test xyz3@ex.test
+****
+no_message_check
--- /dev/null
+# SMTP synchronization checks, with and without PIPELINING
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo abcd\r\nmail from:<userx@test.ex>
+??? 554
+****
+# The pause (+++ 1) in the middle of this is to be sure the first message is
+# delivered before generating the sync error; without it, there's a race.
+client 127.0.0.1 PORT_D
+??? 220
+ehlo abcd
+??? 250-
+??? 250-
+??? 250-
+??? 250
+rset\r\nmail from:<userx@test.ex>\r\nrcpt to:<userx@test.ex>\r\ndata
+??? 250
+??? 250
+??? 250
+??? 354
+the message
+.\r\nmail from:<userx@test.ex>
++++ 1
+rcpt to:<userx@test.ex>\r\ndata\r\nthe message\r\nsecond line
+??? 250
+??? 250
+??? 250
+??? 554
+****
+sleep 1
+# This time, don't send EHLO
+client 127.0.0.1 PORT_D
+??? 220
+helo abcd
+??? 250
+mail from:<userx@test.ex>\r\nrcpt to:<userx@test.ex>
+??? 554
+****
+# This shouldn't get advertised pipelining
+client HOSTIPV4 PORT_D
+??? 220
+ehlo abcd
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>\r\nrcpt to:<userx@test.ex>
+??? 554
+****
+# Check on unrecognized commands
+client HOSTIPV4 PORT_D
+??? 220
+junk0
+??? 500
+junk1\r\njunk2
+??? 554
+****
+# Check on RSET and QUIT
+client 127.0.0.1 PORT_D
+??? 220
+ehlo abcd
+??? 250-
+??? 250-
+??? 250-
+??? 250
+rset\r\nquit
+??? 250
+??? 221
+****
+# Check on RSET and QUIT
+client HOSTIPV4 PORT_D
+??? 220
+ehlo abcd
+??? 250-
+??? 250-
+??? 250
+rset\r\nquit
+??? 554
+****
+# This one disables the check dynamically
+client 127.0.0.1 PORT_D
+??? 220
+ehlo dis.able
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>\r\nrcpt to:<userx@test.ex>\r\ndata\r\nthe message\r\nsecond line
+.
+??? 250
+??? 250
+??? 354
+??? 250
+quit
+??? 221
+****
+killdaemon
+# In these next tests, PIPELINING is not advertised, and the server delays for
+# 1s before trying to send the banner to give the client time to send input.
+exim -DPAH= -DDELAY=1s -DSERVER=server -bd -oX PORT_D
+****
+# Send HELO without waiting for greeting
+client -t2 127.0.0.1 PORT_D
+helo abcd
+??? 554
+****
+# Disconnect without waiting for the greeting. This should
+# test the check for input that happens before sending the
+# banner (there was a bug at one point; missing error check).
+client -t2 127.0.0.1 PORT_D
+****
+killdaemon
--- /dev/null
+# SMTP synchronization checks disabled, with and without PIPELINING
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo abcd\r\nmail from:<userx@test.ex>
+??? 250-
+??? 250-
+??? 250-
+??? 250
+??? 250
+quit
+??? 221
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo abcd
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>\r\nrcpt to:<userx@test.ex>\r\ndata
+??? 250
+??? 250
+??? 354
+the message
+.\r\nmail from:<userx@test.ex>\r\nrcpt to:<userx@test.ex>\r\ndata\r\nthe message
+??? 250
+??? 250
+??? 250
+??? 354
+.
+??? 250
+quit
+??? 221
+****
+# For this one, the check will be dyamically turned on again
+client 127.0.0.1 PORT_D
+??? 220
+ehlo en.force
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>\r\nrcpt to:<userx@test.ex>\r\ndata\r\nthe message
+.
+??? 250
+??? 250
+??? 554
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# -qi (deliver messages not yet tried)
+exim abcd defer
+message 1
+****
+exim -qi
+****
+exim -bp
+****
+exim wxyz
+message 2
+****
+exim -qi
+****
+exim -qif
+****
+exim -qf
+****
+no_msglog_check
--- /dev/null
+# helo_lookup_domains (default setting) and helo literals
+exim -bh V4NET.0.0.1
+helo myhost.test.ex
+quit
+****
+exim -bh V4NET.0.0.1
+ehlo [127.0.0.1]
+quit
+****
+exim -bh V4NET.0.0.1
+helo rhubarb.custard
+quit
+****
+exim -d -bh V4NET.2.3.4
+EHLO [V4NET.2.3.4]
+mail from:<>
+rcpt to:<x@y>
+data
+.
+quit
+****
+exim -d -bh V4NET.2.3.4 -oMs host.name.tld
+EHLO [V4NET.2.3.4]
+mail from:<>
+rcpt to:<x@y>
+data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# address lists
+exim -bh 1.2.3.4
+mail from:<>
+rcpt to:<b1@x>
+rcpt to:<b2@x>
+rcpt to:<b9@x>
+rset
+mail from:<x@y>
+rcpt to:<abc@w.x.y.z>
+rcpt to:<abcdef@q.x.y.z>
+rcpt to:<a@b>
+rcpt to:<ok@ok>
+rcpt to:<x@a.b.c>
+rcpt to:<abc@d.e.f>
+rcpt to:<x@d.e.f>
+rcpt to:<abc@at.1>
+rcpt to:<xyz@at.1>
+rcpt to:<abcxyz@at.1>
+rcpt to:<ok@at.1>
+rcpt to:<x@domain.only>
+rcpt to:<x@abc.domain2.only>
+rcpt to:<x@domain2.only>
+rcpt to:<abc@domain3>
+rcpt to:<xyz@x.domain4>
+rcpt to:<abc@x.domain4>
+rcpt to:<xyz@domain3>
+rcpt to:<pqr@myhost.test.ex>
+rcpt to:<xxx@myhost.test.ex>
+rcpt to:<a@domain5>
+rcpt to:<xyz@domain6>
+rcpt to:<abc@domain6>
+rcpt to:<x@domain7>
+quit
+****
--- /dev/null
+# expansion in domain lists
+exim -bh V4NET.2.3.4
+mail from:<x@y>
+rcpt to:<x@ten-1.test.ex>
+rcpt to:<x@junk.junk>
+quit
+****
+2
+exim -bv x@ten-1.test.ex x@junk.junk
+****
--- /dev/null
+# closed mailing lists (3 routers)
+exim -odi -f anyone@anywhere list1-request@lists.test.ex
+****
+exim -odi -f sub1@test.ex list1@lists.test.ex
+****
+exim -odi -f anyone@anywhere list1@lists.test.ex
+****
+exim -odi -f anyone@anywhere nonlist@lists.test.ex
+****
+exim -bh 1.2.3.4
+mail from:<anyone@anywhere>
+rcpt to:<list1-request@lists.test.ex>
+rset
+mail from:<sub1@test.ex>
+rcpt to:<list1@lists.test.ex>
+rset
+mail from:<anyone@anywhere>
+rcpt to:<list1@lists.test.ex>
+rset
+mail from:<anyone@anywhere>
+rcpt to:<nonlist@lists.test.ex>
+quit
+****
--- /dev/null
+# closed mailing lists (2 routers)
+exim -odi -f anyone@anywhere list1-request@lists.test.ex
+****
+exim -odi -f sub1@test.ex list1@lists.test.ex
+****
+exim -odi -f anyone@anywhere list1@lists.test.ex
+****
+exim -odi -f anyone@anywhere nonlist@lists.test.ex
+****
--- /dev/null
+# host lists and unknown host names - maximal checking
+exim -bh V4NET.0.0.97
+mail from:<x@y>
+rcpt to:<z@z>
+quit
+****
+exim -bh V4NET.0.0.1
+mail from:<x@y>
+rcpt to:<z@z>
+quit
+****
--- /dev/null
+# expansion of message_size_limit on transport
+exim -odi 50 55 1k 44litres
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+This is a test message. This is a test message.
+****
+no_msglog_check
--- /dev/null
+# bounce message for quota exceeded; no_bounce_return_message
+exim -odi abcd
+This is a test message. This is a test message.
+****
--- /dev/null
+# return-path, delivery-date, envelope-to removal
+exim -odq xx
+return-path: x@y
+Delivery-date: Mon, 08 May 2000 11:07:20 +0100
+envelope-to: p@q
+****
+exim -Mvh $msg1
+****
+exim -DDYNAMIC_OPTION=return_path_remove=no -odq xx
+return-path: x@y
+Delivery-date: Mon, 08 May 2000 11:07:20 +0100
+envelope-to: p@q
+****
+exim -Mvh $msg2
+****
+no_msglog_check
--- /dev/null
+# RBL timeout logging
+exim -bh V4NET.0.0.1
+mail from:<userx@x>
+rcpt to:<userx@y>
+quit
+****
--- /dev/null
+# limits on filter and include file size
+#
+# Make a file that has a huge hole in it
+perl
+open(OUT, ">DIR/test-holey");
+seek OUT, 104857620, 0;
+print OUT "End\n";
+close(OUT);
+****
+#
+exim -odi filter include
+****
+no_msglog_check
--- /dev/null
+# host_reject_connection
+exim -bh V4NET.0.0.1
+****
+exim -bh V4NET.0.0.2
+****
--- /dev/null
+# same_domain_copy_routing
+need_ipv4
+#
+exim -odi -d-all+route -N x@ten-1.test.ex y@ten-1.test.ex
+****
+exim -odi -d-all+route -N x@ten-2.test.ex y@ten-2.test.ex
+****
--- /dev/null
+# foranyaddress
+exim -bf DIR/aux-fixed/TESTNUM.f-user </dev/null
+****
+no_msglog_check
--- /dev/null
+# Use of -t, with and without resent-
+exim -d-all+receive -odq -t
+To: x@y.z
+Cc: a@b.c
+Bcc: p@q.r
+.
+****
+exim -d-all+receive -odq -t
+To: x@y.z
+Cc: a@b.c
+Bcc: p@q.r
+Resent-to: aa@bb.cc
+Resent-cc: pp@qq.rr
+Resent-bcc: xx@yy.zz
+.
+****
+exim -bp
+****
+no_msglog_check
--- /dev/null
+# file name in directory
+exim -odi userx@test.ex
+This is the first message.
+****
+exim -odi userx@test.ex
+This is the second message.
+****
+no_msglog_check
--- /dev/null
+# filter does significant delivery
+exim -odi userx@test.ex
+subject: file
+
+This is the first message.
+****
+exim -odi userx@test.ex
+subject: discard
+
+This is the second message.
+****
--- /dev/null
+# comments and +caseful in local part lists
+exim -odq -bs
+mail from:<x@y>
+rcpt to:<lp1@z>
+rcpt to:<LP1@z>
+rcpt to:<lp2@z>
+rcpt to:<LP2@z>
+rcpt to:<lp#3@z>
+rcpt to:<lp#4#@z>
+rcpt to:<bad@z>
+rcpt to:<LP10@z>
+rcpt to:<lp10@z>
+quit
+****
--- /dev/null
+# local part starting | routed to pipe
+exim -odi '|/bin/cat\ /etc/aliases\ '
+quit
+****
--- /dev/null
+# Error messages for outgoing pipelining and non-pipelining
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 PIPELINING
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+>
+QUIT
+250 OK
+****
+exim -odi x@test.ex
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 PIPELINING
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+>
+DATA
+550 Failed DATA
+QUIT
+250 OK
+****
+exim -odi x@test.ex
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 PIPELINING
+MAIL FROM:
+>
+RCPT TO:
+550 Can't send RCPT
+DATA
+550 Can't send DATA
+QUIT
+250 OK
+****
+exim -odi x@test.ex
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 PIPELINING
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 First RCPT OK
+RCPT TO:
+>
+250 Second RCPT malformed
+RCPT TO:
+250 Third RCPT OK
+DATA
+550 Failed DATA
+QUIT
+250 OK
+****
+exim -odi x@test.ex y@test.ex z@test.ex
+****
+# Temporarily reject all recipients in pipelining, and also data;
+# the client shouldn't bother with the data error.
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 PIPELINING
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+450 Recipient bad
+RCPT TO:
+450 Recipient bad
+DATA
+550 Data not expected
+QUIT
+250 OK
+****
+exim -odi a@test.ex b@test.ex
+****
+#
+########### NON PIPELINING ##########
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+>
+QUIT
+250 OK
+****
+exim -odi x@test.ex
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+>
+DATA
+550 Failed DATA
+QUIT
+250 OK
+****
+exim -odi x@test.ex
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+>
+RCPT TO:
+550 Can't send RCPT
+DATA
+550 Can't send DATA
+QUIT
+250 OK
+****
+exim -odi x@test.ex
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 First RCPT OK
+RCPT TO:
+>
+250 Second RCPT malformed
+RCPT TO:
+250 Third RCPT OK
+DATA
+550 Failed DATA
+QUIT
+250 OK
+****
+exim -odi x@test.ex y@test.ex z@test.ex
+****
--- /dev/null
+# quote handling in route_list
+exim -v -bv x@y
+****
--- /dev/null
+# $message_headers
+write test-data 655x100=__continued...
+X-Long: This is a very long header
+++++
+ This is the final line which should get chopped.
+X-Long: This is another header with the same name.
+****
+exim -odi userx <test-data
+****
--- /dev/null
+# $domain_data and $local_part_data
+exim -v -bt xxx@a.b.c
+****
+exim -bh V4NET.0.0.0
+mail from:a@b.c
+rcpt to:xxx@a.b.c
+quit
+****
--- /dev/null
+# prefix/suffix in $original_local_part
+exim -odi pppp-userx@test.ex
+****
+exim -odi userx+ssss@test.ex
+****
+exim -odi userx@test.ex
+****
--- /dev/null
+# Redirection to same address, and "unseen"
+exim -odi userx@test.ex
+****
--- /dev/null
+# System filter munges headers, running as root
+exim -odi userx@test.ex
+Remove: this header should get removed
+****
--- /dev/null
+# System filter munges headers, running as exim
+exim -odi userx@test.ex
+Remove: this header should get removed
+****
--- /dev/null
+# check_ancestor with case sensitivity
+exim -odi userx
+Remove: This header should go
+****
+exim -odi UserY
+Remove: This header should go
+****
+exim -odi usery
+Remove: This header should go
+****
--- /dev/null
+# more rewriting tests using -brw
+exim -brw x@y
+****
+exim -brw a@b
+****
+exim -brw 2047@x.y
+****
+exim -brw unq1@x.y
+****
+exim -brw unq2@x.y
+****
+exim -brw unq3@x.y
+****
+exim -brw 4@x.y
+****
+exim -brw fw@fw
+****
+exim -brw gw@fw
+****
+exim -brw abc@abc
+****
+exim -brw ABC@abc
+****
--- /dev/null
+# routing delay in message on existing connection (queue run)
+need_ipv4
+#
+exim -odi -odqs ok@no.delay
+Message 1
+****
+exim -odi -odqs delay@test.again.dns ok@no.delay
+Message 2
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 PIPELINING
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Go ahead
+.
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Go ahead
+.
+250 OK
+QUIT
+250 OK
+****
+exim -q -d-all+route
+****
--- /dev/null
+# routing delay in message on existing connection (not queue run)
+need_ipv4
+#
+exim -odi -odqs ok@no.delay
+Message 1
+****
+exim -odi -odqs delay@test.again.dns ok@no.delay
+Message 2
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 PIPELINING
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Go ahead
+.
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Go ahead
+.
+250 OK
+QUIT
+250 OK
+****
+exim -d-all+route -M $msg1
+****
+millisleep 100
--- /dev/null
+# Detect 0.0.0.0 as local
+need_ipv4
+#
+1
+exim -bt x@y
+****
--- /dev/null
+# Envelope-to: and duplicates
+exim -odi onelevel1 onelevel2
+****
+exim -odi top1 top2
+****
+exim -odi top1 top2 onelevel1 onelevel2
+****
+exim -odi batch
+****
+exim -odi clone clone clone c2 c2
+****
--- /dev/null
+# -N in queued mail
+exim -odq -N userx
+****
+exim -odq userx
+****
+exim -R userx
+****
+exim -odq -N userx
+****
+exim -odq userx
+****
+exim -q
+****
--- /dev/null
+# errors_to verify loop
+exim -bv userx
+****
+exim -bt userx
+****
--- /dev/null
+# errors_to and one_time
+exim -odi userx
+****
+exim -bp
+****
+exim -Mvh $msg1
+****
+exim -qf
+****
--- /dev/null
+# Missing command in pipe transport
+exim -odi userx@test.ex
+****
+no_msglog_check
--- /dev/null
+# dnslist when no host address
+exim -bs
+mail from:<userx@test.ex>
+rcpt to:<userx@test.again.dns>
+quit
+****
--- /dev/null
+# batching and errors_to (local and remote delivery)
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex usery@test.ex
+****
+exim -qf
+****
+exim userx@xxx usery@xxx
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# verification of recipient at non FQDN
+need_ipv4
+#
+exim -bh 1.2.3.4
+mail from:<x@y>
+rcpt to:<x@ten-1>
+quit
+****
--- /dev/null
+# Retry after queue and -Mc
+need_ipv4
+#
+exim -odq x@y
+Testing.
+****
+exim -Mc $msg1
+****
+dump retry
+exim -Mc $msg1
+****
+dump retry
+no_msglog_check
--- /dev/null
+# Individual transports in manualroute
+need_ipv4
+#
+exim -bt x@d1 x@d2 x@d30 x@d31
+****
--- /dev/null
+# quota_xxx in retry rules
+exim -odi a@test.ex
+This is a test message which should be over quota.
+****
+dump retry
+touch -a -t 0205100000 DIR/test-mail/a
+ls -lu DIR/test-mail/a
+sleep 1
+exim -odi -qf
+****
+dump retry
+sleep 1
+exim -odi -qf
+****
+dump retry
+no_message_check
+no_msglog_check
--- /dev/null
+# duplicate loops in address graphs
+exim -odi x@dom1 x@dom2
+****
+no_msglog_check
--- /dev/null
+# Different domains, same self_hostname for batch delivery
+exim -odi x@dom1 x@dom2 x@dom3
+****
--- /dev/null
+# Invalid time in retry rules
+1
+exim -brt a@b
+****
+1
+exim -DRETRY=G,1d,20,1.5 -brt a@b
+****
+1
+exim -DRETRY=F,1,30m -brt a@b
+****
+1
+exim -DRETRY=F,1d,30 -brt a@b
+****
--- /dev/null
+# Non-absolute file name in filter save - transport sets home_directory
+exim -odi userx
+Testing, testing
+****
--- /dev/null
+# $host_address in ignore_target_hosts
+need_ipv4
+#
+exim -bt xx@yy
--- /dev/null
+# Header concatenation with addresses
+exim -odi userx
+To: userx
+To: usery
+Cc: Him
+Cc: Her
+Subject: one
+Subject: two
+Resent-to: a@b, aa@bb
+Resent-to: c@d
+Reply-to: r@s
+Reply-to: t@u
+****
--- /dev/null
+# Address headers containing spaces only
+exim -odi userx
+From:
+To:
+
+Testing
+****
+exim -odi userx
+To: abcd
+To:
+To: xyz
+To: pqr
+
+Testing 2
+****
+exim -odi userx
+To:
+To: abcd
+To: xyz
+To: pqr
+
+Testing 3
+****
+exim -odi userx
+To: abcd
+To: xyz
+To: pqr
+To:
+
+Testing 4
+****
--- /dev/null
+# Non-absolute path in system filter (no user set)
+exim -odi userx
+Testing
+****
+no_msglog_check
--- /dev/null
+# No slash path in system filter (user set)
+exim -odi userx
+Testing
+****
+no_msglog_check
--- /dev/null
+# No slash path in user filter
+exim -odi userx
+Testing
+****
+no_msglog_check
--- /dev/null
+# no_message_logs
+exim -odi userx
+Testing 1
+****
+exim -DMESSAGE_LOGS=no_message_logs -odi userx
+Testing 2
+****
--- /dev/null
+# retrying address errors
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250 HELP
+MAIL
+250 OK
+RCPT
+451 Temporary error
+QUIT
+250 OK
+****
+exim -odi -d-all+retry userx
+Testing 1
+****
+dump retry
+sleep 1
+server PORT_S
+220 ESMTP
+EHLO
+250 HELP
+MAIL
+250 OK
+RCPT
+451 Temporary error
+QUIT
+250 OK
+****
+exim -q -d-all+retry
+****
+dump retry
+sleep 3
+server PORT_S
+220 ESMTP
+EHLO
+250 HELP
+MAIL
+250 OK
+RCPT
+451 Temporary error
+QUIT
+250 OK
+****
+exim -q -d-all+retry
+****
+dump retry
+no_msglog_check
--- /dev/null
+# retrying address errors (not first address)
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250 HELP
+MAIL
+250 OK
+RCPT
+451 Temporary error
+RCPT
+451 Temporary error
+QUIT
+250 OK
+****
+exim -odi -d-all+retry userx usery
+Testing 1
+****
+dump retry
+sleep 4
+server PORT_S
+220 ESMTP
+EHLO
+250 HELP
+MAIL
+250 OK
+RCPT
+451 Temporary error
+RCPT
+451 Temporary error
+QUIT
+250 OK
+****
+exim -q -d-all+retry
+Testing 1
+****
+dump retry
+no_msglog_check
--- /dev/null
+# shadow_transport_condition and $local_part
+exim -odi userx
+.
+****
+exim -odi usery
+.
+****
--- /dev/null
+# widened domains
+need_ipv4
+#
+exim -d-all+route -N -odi cms
+.
+****
+exim -bpa
+****
+exim -qf -d-all+route
+****
+no_msglog_check
--- /dev/null
+# widened domains and duplication
+need_ipv4
+#
+exim -odi -N miles@thishost.test.ex
+****
+exim -odi -d -N kilos@recurse.test.ex
+****
--- /dev/null
+# cached named lists after rewriting for verification
+need_ipv4
+#
+exim -d -bh V4NET.0.0.0
+mail from:<x@y>
+rcpt to:<x@a.b.c>
+quit
+****
--- /dev/null
+# percent hack and rcpt addresses
+need_ipv4
+#
+server PORT_S
+220
+EHLO
+220 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+334 send more
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi Aa%Bb@Cc
+To: aa%bb@cc
+****
--- /dev/null
+# widening by steam
+need_ipv4
+#
+2
+exim -d-all+route -bt kilos@thishost solik@otherhost xxx@ten-1 xxx@testsub
+****
--- /dev/null
+# SMTP error details and rejected_header log selector
+need_ipv4
+#
+exim -bs
+mail from:<>
+rcpt to:<x@y>
+data
+From: <bad@syntax
+.
+mail from:<>
+rcpt to:<x@y>
+data
+From: bad@domain
+.
+mail from:<callout@x>
+rcpt to:<x@y>
+rset
+mail from:<nosyntax@x>
+rcpt to:<x@y>
+data
+From: <bad@syntax
+.
+mail from:<>
+rcpt to:<x@y>
+data
+From: <unverifiable@y>
+.
+mail from:<recipcallout@y>
+rcpt to:<callout@y>
+rset
+mail from:<>
+rcpt to:<cantverify.fail@y>
+rset
+mail from:<>
+rcpt to:<cantverify.defer@y>
+rset
+quit
+****
+exim -DDETAILS=true -DSELECTOR=-rejected_header -bs
+mail from:<>
+rcpt to:<x@y>
+data
+From: <bad@syntax
+.
+mail from:<>
+rcpt to:<x@y>
+data
+From: bad@domain
+.
+mail from:<callout@x>
+rcpt to:<x@y>
+rset
+mail from:<nosyntax@x>
+rcpt to:<x@y>
+data
+From: <bad@syntax
+.
+mail from:<>
+rcpt to:<x@y>
+data
+From: <unverifiable@y>
+.
+mail from:<recipcallout@y>
+rcpt to:<callout@y>
+rset
+mail from:<>
+rcpt to:<cantverify.fail@y>
+rset
+rset
+mail from:<>
+rcpt to:<cantverify.defer@y>
+quit
+****
--- /dev/null
+# hosts_max_try
+need_ipv4
+#
+exim -brt userx@mxt99.text.ex ten-1.test.ex
+****
+exim -odi userx@mxt99.test.ex
+****
+sleep 3
+exim -q
+****
+sleep 1
+exim -q
+****
+no_msglog_check
--- /dev/null
+# Multiple messages down one SMTP connection
+need_ipv4
+#
+exim -odq userx@domain1
+Test message 1
+****
+exim -odq userx@domain1
+Test message 2
+****
+exim -odq userx@domain1
+Test message 3
+****
+exim -odq userx@domain1
+Test message 4
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 More...
+.
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 More...
+.
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 More...
+.
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 More...
+.
+250 OK
+QUIT
+220 OK
+****
+exim -qqf
+****
+no_msglog_check
--- /dev/null
+# removal of duplicate IP addresses
+need_ipv4
+#
+exim -d-all+host_lookup -bt x@mxt9.test.ex x@mxt14.test.ex x@manualroute
+****
--- /dev/null
+# temp_errors in pipe transport
+exim -odi 0@test.ex 10@test.ex 45@test.ex
+****
+exim -odi 0@test2.ex 10@test2.ex 45@test2.ex
+****
+no_msglog_check
--- /dev/null
+# gid (only) set in router for pipe transport
+exim -d-all+transport+uid -odi userx@test.ex
+****
--- /dev/null
+# acl variables
+exim -d -bh V4NET.0.0.0
+ehlo something
+mail from:<x@y>
+rcpt to:<x@y>
+data
+.
+vrfy x@y
+mail from:<x@y>
+quit
+****
+no_msglog_check
--- /dev/null
+# Preservation of ACL variables
+exim -v -odi -bs -oMa 1.2.3.4 -oMs host.name
+mail from:<>
+rcpt to:<x@y>
+data
+.
+mail from:<>
+rcpt to:<a@b>
+data
+.
+quit
+****
--- /dev/null
+# ${readsocket
+need_ipv4
+#
+exim -be
+1 >>${readsocket{DIR/test-socket}{QUERY-1\n}}<<
+2 ${if exists{DIR/test-socket}\
+ {>>${readsocket{DIR/test-socket}{QUERY-1\n}}<<}\
+ {++ no socket ++}}
+****
+#
+# Note the difference between:
+# >*eof => close the connection
+# *eof => expect to read EOF from client
+#
+server DIR/test-socket 9
+QUERY-1
+>LF>ANSWER-1
+>*eof
+QUERY-2
+>>ANSWER-2
+>*eof
+QUERY-3
+>LF>ANSWER-3
+>*eof
+QUERY-4
+>LF>ANSWER-4
+>*eof
+>>ANSWER-5
+>*eof
+*sleep 1
+>*eof
+>*eof
+QUERY-8
+*sleep 2
+*eof
+QUERY-9
+*sleep 2
+****
+millisleep 500
+exim -be
+1 >>${readsocket{DIR/test-socket}{QUERY-1\n}}<<
+2 >>${readsocket{DIR/test-socket}{QUERY-2\n}}<<
+3 >>${readsocket{DIR/test-socket}{QUERY-3\n}{2s}{*EOL*}}<<
+4 >>${readsocket{DIR/test-socket}{QUERY-4\n}{2s}{*EOL*}{sock error}}<<
+5 >>${readsocket{DIR/test-socket}{}}<<
+6 >>${readsocket{DIR/test-socket}{QUERY-6\n}}<<
+7 >>${readsocket{DIR/test-socket}{QUERY-7\n}{1s}{}{sock error}}<<
+8 >>${readsocket{DIR/test-socket}{QUERY-8\n}{1s}}<<
+9 >>${readsocket{DIR/test-socket}{QUERY-9\n}{1s}{}{sock error}}<<
+****
+server DIR/test-socket
+QUERY-ACL
+*sleep 3
+****
+exim -odq -bs -oMa V4NET.0.0.0
+quit
+****
--- /dev/null
+# unseen without disable_logging and errors_to = ""
+need_ipv4
+#
+server PORT_S 3
+220
+EHLO
+220 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+334 send more
+.
+250 OK
+QUIT
+250 OK
+*eof
+220
+EHLO
+220 OK
+MAIL
+250 OK
+RCPT
+450 soft error
+QUIT
+250 OK
+*eof
+220
+EHLO
+220 OK
+MAIL
+250 OK
+RCPT
+550 hard error
+QUIT
+250 OK
+****
+exim -d-all+route -odi a1 b1 c1 d1 d2 d3
+****
+exim -qf
+****
+no_msglog_check
--- /dev/null
+# unseen with disable_logging and errors_to = "" or forced fail
+need_ipv4
+#
+server -t 10 PORT_S 7
+220
+EHLO
+220 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+334 send more
+.
+250 OK
+QUIT
+250 OK
+*eof
+220
+EHLO
+220 OK
+MAIL
+250 OK
+RCPT
+450 soft error
+QUIT
+250 OK
+*eof
+220
+EHLO
+220 OK
+MAIL
+250 OK
+RCPT
+550 hard error
+QUIT
+250 OK
+*eof
+220
+EHLO
+220 OK
+MAIL
+250 OK
+RCPT
+550 hard error
+QUIT
+250 OK
+*eof
+220
+EHLO
+220 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+334 send more
+.
+250 OK
+QUIT
+250 OK
+*eof
+220
+EHLO
+220 OK
+MAIL
+250 OK
+RCPT
+450 soft error
+QUIT
+250 OK
+*eof
+220
+EHLO
+220 OK
+MAIL
+250 OK
+RCPT
+550 hard error
+QUIT
+250 OK
+****
+exim -d-all+route -odi a1 b1 c1 d1 d2 d3 e1 f1 f2 f3 g1
+****
+exim -qf
+****
+exim -d-all+route -odi h1
+****
+no_msglog_check
--- /dev/null
+# callout verification (with caching)
+need_ipv4
+#
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<ok@localhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<ok@localhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Wait for the record to time out and try again
+sleep 2
+# Should want to connect, but fail
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<ok@localhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Test unsuccessful caching
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 REJECTED
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<bad@localhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<bad@localhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Test caching of rejection of MAIL FROM:<>
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+550 REJECT MAIL FROM
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<ok@localhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<ok@localhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Test caching of rejection of postmaster
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 NOT OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.2
+MAIL FROM:<ok@otherhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.2
+MAIL FROM:<ok@otherhost>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Test caching of accepting of postmaster
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.2
+MAIL FROM:<ok@otherhost2>
+RCPT TO:<z@test.ex>
+QUIT
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.2
+MAIL FROM:<ok@otherhost2>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Test caching of accepting a random address
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.3
+MAIL FROM:<ok@otherhost3>
+RCPT TO:<z@test.ex>
+QUIT
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.3
+MAIL FROM:<otherok@otherhost3>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Test caching of accepting a random address and postmaster
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.4
+MAIL FROM:<ok@otherhost4>
+RCPT TO:<z@test.ex>
+QUIT
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.4
+MAIL FROM:<ok@otherhost4>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Test caching of rejecting a random address and postmaster
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 NOT OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.4
+MAIL FROM:<ok@otherhost41>
+RCPT TO:<z@test.ex>
+QUIT
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.4
+MAIL FROM:<ok@otherhost41>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Test caching of accepting of postmaster when another
+# address has to be tested
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.2
+MAIL FROM:<ok@otherhost21>
+RCPT TO:<z@test.ex>
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.2
+MAIL FROM:<ok2@otherhost21>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Test caching of rejecting a random address
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 NOT OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.3
+MAIL FROM:<ok@otherhost31>
+RCPT TO:<z@test.ex>
+QUIT
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.3
+MAIL FROM:<okok@otherhost31>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Wait a bit for the record to expire and then try again
+sleep 2
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 NOT OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -DPEX=1s -d-all+verify -v -bs -oMa V4NET.0.0.3
+MAIL FROM:<okokok@otherhost31>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Timeout on the RCPT for random
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+*sleep 2
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.5
+MAIL FROM:<okok@otherhost51>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Postmaster_sender set non-empty
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.6
+MAIL FROM:<okokok@otherhost52>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Header_sender sender set non-empty
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -odq -v -bs -oMa V4NET.0.0.7
+MAIL FROM:<ok7@otherhost53>
+RCPT TO:<z@test.ex>
+DATA
+Reply-To: abcd@x.y.z
+.
+QUIT
+****
+# Timeout on RCPT for header_sender (defer_ok test)
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+*sleep 2
+****
+sudo exim -d-all+verify -odq -v -bs -oMa V4NET.0.0.8
+MAIL FROM:<ok7@otherhost53>
+RCPT TO:<z@test.ex>
+DATA
+Reply-To: abcd@x.y.z
+.
+QUIT
+****
+# Test full postmaster check
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 NOT OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.9
+MAIL FROM:<ok@otherhost9>
+RCPT TO:<z@test.ex>
+QUIT
+****
+# Test postmaster_mailfrom with random
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 RANDOM IS BAD
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.10
+MAIL FROM:<ok@otherhost10>
+RCPT TO:<z@test.ex>
+QUIT
+****
+no_msglog_check
--- /dev/null
+# unseen and other redirecting routers that aren't always triggered
+exim -d-all+route -odi aaaa bbbb cccc
+****
+exim -Mvh $msg1
+****
+exim -d-all+route -qf
+****
+exim -d-all+route -qf
+****
+no_msglog_check
--- /dev/null
+# pipe/file/reply check recorded delivery
+exim -d-all+route -odi aaaa
+****
+exim -Mvh $msg1
+****
+exim -d-all+route -qf
+****
+no_msglog_check
--- /dev/null
+# non-homonym redirection - marking done
+exim -d-all+route -odi defer aaaa
+****
+exim -Mvh $msg1
+****
+exim -d-all+route -qf
+****
+no_msglog_check
--- /dev/null
+# ignore_enotdir
+exim -d-all+route -odi aaaa bbbb
+****
+no_msglog_check
--- /dev/null
+# negatives with wildcard hosts when host has multiple names
+exim -d -bs -oMa V4NET.99.99.97
+mail from:<notgov@test.ex>
+rcpt to:<x@test.ex>
+quit
+****
--- /dev/null
+# timeout_frozen_after and system filter
+exim -d-all+filter -odi userx
+****
+sleep 1
+exim -d-all+filter -qf
+****
+no_msglog_check
--- /dev/null
+# $thisaddress passed to a pipe
+exim -odi alice
+To: alice@test.ex
+****
+exim -odi jabberwocky
+To: jabberwocky@test.ex
+****
+exim -odi redking
+To: redking@test.ex
+****
+no_msglog_check
--- /dev/null
+# preserve state on 2nd EHLO
+exim -bh V4NET.9.8.7
+EHLO [V4NET.9.8.7]
+MAIL FROM:<x@y>
+EHLO [1.2.3.4]
+RCPT TO:<a@b>
+QUIT
+****
--- /dev/null
+# return_size_limit was losing data
+exim -odi userx
+Subject: body size = 2
+
+X
+****
+exim -odi userx
+Subject: body size = 200
+
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+****
+exim -odi userx
+Subject: body size = 1600
+
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+****
+write test-data 200x50
+++++
+****
+exim -odi userx <test-data
+****
--- /dev/null
+# ACLs and multiple messages
+exim -d -bh V4NET.9.8.7
+mail from:<x@y>
+rcpt to:<1@b>
+rset
+mail from:<x@y>
+rcpt to:<1@b>
+quit
+****
+exim -d -odi -bs -oMa V4NET.11.12.13 userx
+mail from:<x@y>
+rcpt to:<2@b>
+data
+Message 1
+.
+rset
+mail from:<x@y>
+rcpt to:<2@b>
+data
+Message 2
+.
+quit
+****
--- /dev/null
+# Partial matching and lookup name decoding
+exim -bs
+mail from:<x@a.b.c>
+rcpt to:<x@y>
+rset
+mail from:<x@b.c.a>
+rcpt to:<x@y>
+quit
+****
+exim -bs -oMa 10.9.8.7
+mail from:<x@b.c.a>
+rcpt to:<x@y>
+quit
+****
+exim -bs -oMa 192.168.4.5
+mail from:<x@b.c.a>
+rcpt to:<x@y>
+quit
+****
+exim -bs -oMa 1.2.3.4
+mail from:<x@b.c.a>
+rcpt to:<x@y>
+quit
+****
+exim -d-all+lookup -be
+ 1 ${lookup{a.b.c}partial-lsearch{DIR/aux-fixed/TESTNUM.1}}
+ 2 ${lookup{x.y.c}partial-lsearch{DIR/aux-fixed/TESTNUM.1}}
+ 3 ${lookup{x.y.c}partial-lsearch*{DIR/aux-fixed/TESTNUM.1}}
+ 4 ${lookup{x.y.c}partial1-lsearch{DIR/aux-fixed/TESTNUM.1}}
+ 5 ${lookup{x@y.c}partial1-lsearch*@{DIR/aux-fixed/TESTNUM.1}}
+ 6 ${lookup{x@y.c}lsearch*@{DIR/aux-fixed/TESTNUM.1}}
+ 7 ${lookup{a.b.c}partial(*.)lsearch{DIR/aux-fixed/TESTNUM.1}}
+ 8 ${lookup{a.b.c}partial(.)lsearch{DIR/aux-fixed/TESTNUM.1}}
+ 9 ${lookup{a.b.c}partial()lsearch{DIR/aux-fixed/TESTNUM.1}}
+10 ${lookup{a.b.c}partial(*)lsearch{DIR/aux-fixed/TESTNUM.1}}
+11 ${lookup{p.q.r}partial0(*.)lsearch{DIR/aux-fixed/TESTNUM.1}}
+12 ${lookup{p.q.r}partial0(.)lsearch{DIR/aux-fixed/TESTNUM.1}}
+13 ${lookup{x.aa.bb}partial0(++)lsearch{DIR/aux-fixed/TESTNUM.1}}
+14 ${lookup{x.aa.zz}partial0(++)lsearch{DIR/aux-fixed/TESTNUM.1}}
+15 ${lookup{x.aa.zz}partial1(++)lsearch*{DIR/aux-fixed/TESTNUM.1}}
+16 ${lookup{a.b.c}partial-lsearch{DIR/aux-fixed/TESTNUM.1}{$value|$0|$1|$2}}
+****
--- /dev/null
+# Recipient errors and hosts_max_try
+need_ipv4
+#
+exim -odq x@y
+****
+sleep 2
+server PORT_S
+220 Server ready
+EHLO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+451 Temporary error
+QUIT
+250 OK
+****
+exim -odi -d-deliver-transport -M $msg1
+****
--- /dev/null
+# warn with log_message but no message
+exim -bs
+mail from:x@y
+rcpt to:x@y
+data
+.
+quit
+****
+exim -Mvh $msg1
+****
+no_msglog_check
--- /dev/null
+# .ifdef etc
+exim -bP accept_8bitmime acl_not_smtp acl_smtp_auth acl_smtp_connect acl_smtp_data acl_smtp_etrn acl_smtp_expn acl_smtp_mail acl_smtp_rcpt acl_smtp_vrfy
+****
+exim -DAA -bP accept_8bitmime acl_not_smtp acl_smtp_auth acl_smtp_connect acl_smtp_data acl_smtp_etrn acl_smtp_expn acl_smtp_mail acl_smtp_rcpt acl_smtp_vrfy
+****
+exim -DBB -bP accept_8bitmime acl_not_smtp acl_smtp_auth acl_smtp_connect acl_smtp_data acl_smtp_etrn acl_smtp_expn acl_smtp_mail acl_smtp_rcpt acl_smtp_vrfy
+****
+exim -DAA -DBB -bP accept_8bitmime acl_not_smtp acl_smtp_auth acl_smtp_connect acl_smtp_data acl_smtp_etrn acl_smtp_expn acl_smtp_mail acl_smtp_rcpt acl_smtp_vrfy
+****
+exim -bP transport t1
+****
+exim -DAA -bP transport t1
--- /dev/null
+# Sender verify rewrite and $sender_address
+exim -d -bh 1.2.3.4
+mail from:<U@W.x.y>
+rcpt to:<B@a.b.c>
+quit
+****
--- /dev/null
+# -bt and no_address_test
+need_ipv4
+#
+exim -bt x@y
+****
+exim -v -bv x@y
+****
--- /dev/null
+# empty transport filter
+exim -d-all+transport -odi userx
+Testing with filter
+****
+exim -DFILTER= -d-all+transport -odi userx
+Testing without filter
+****
--- /dev/null
+# null reverse lookup result; errors for verify items with no options
+exim -DOPT=reverse_host_lookup -bh V4NET.255.255.255
+****
+exim -DOPT=reverse_host_lookup/defer_ok -bh V4NET.255.255.255
+****
+exim -DOPT=certificate/defer_ok -bh V4NET.255.255.255
+****
+exim -DOPT=helo/defer_ok -bh V4NET.255.255.255
+****
+exim -DOPT=header_syntax/defer_ok -bh V4NET.255.255.255
+****
--- /dev/null
+# -bnq and address qualification in local messages
+1
+exim -odi -bnq userx
+From: userx
+To: userx
+****
+exim -odi -bnq userx@origin.ex
+From: philip
+To: userx
+****
+exim -odi -bnq userx@origin.ex
+From: userx@origin.ex
+To: userx@test.ex
+****
+exim -odi userx
+From: userx
+To: userx
+****
+exim -DTRUSTED=CALLER -odi -bnq userx@origin.ex
+From: philip
+To: userx
+****
+# Same tests for BSMTP
+2
+exim -odi -bnq -bS
+mail from: userx
+rcpt to: userx
+data
+From: userx
+To: userx
+.
+quit
+****
+2
+exim -odi -bnq -bS
+mail from: userx@origin.ex
+rcpt to: userx
+data
+From: userx
+To: userx
+.
+quit
+****
+exim -odi -bnq -bS
+mail from: userx@origin.ex
+rcpt to: userx@test.ex
+data
+From: userx
+To: userx
+.
+quit
+****
+exim -odi -bS
+mail from: userx@origin.ex
+rcpt to: userx@test.ex
+data
+From: userx
+To: userx
+.
+quit
+****
+exim -odi -bnq -bs
+mail from: userx@origin.ex
+rcpt to: userx
+data
+From: userx
+To: userx
+.
+quit
+****
+exim -odi -bnq -bs
+mail from: userx@origin.ex
+rcpt to: userx@test.ex
+data
+From: userx
+To: userx
+.
+quit
+****
+exim -odi -bs
+mail from: userx@origin.ex
+rcpt to: userx@test.ex
+data
+From: userx
+To: userx
+.
+quit
+****
--- /dev/null
+# forced failure in named list
+exim -d -bs
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
--- /dev/null
+# failure to open main and panic logs
+1
+exim -q
+****
--- /dev/null
+# acl warning with verify callout failure
+need_ipv4
+#
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 Unknown
+QUIT
+250 OK
+****
+exim -odi -bs
+mail from:<x@remote>
+rcpt to:<x@local>
+data
+Testing
+.
+quit
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 Unknown
+QUIT
+250 OK
+****
+exim -odi -bs
+mail from:<z@remote>
+rcpt to:<deny@local>
+quit
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 Unknown
+QUIT
+250 OK
+****
+exim -d -odi -bs
+mail from:<qq@remote>
+rcpt to:<abc@local>
+rcpt to:<xyz@local>
+quit
+****
+exim -odi -bs
+mail from:<>
+rcpt to:<abc@local>
+rcpt to:<xyz@local>
+quit
+****
--- /dev/null
+# expanding "more"
+1
+exim -d -bt x@y
+****
--- /dev/null
+# backslash in redirection
+exim -DDATA=abcd -bt t1@d1
+****
+exim -DDATA=\\\\abcd -bt t1@d1
+****
+exim -DDATA=\\\\abcd@test.ex -bt t1@d1
+****
+exim -bt alias1@d2 alias2@d2
+****
--- /dev/null
+# host lookup error from embedded file
+exim -bh V4NET.9.8.7
+helo xxx
+mail from:<x@y>
+quit
+****
+exim -bh V4NET.9.9.9
+quit
+****
--- /dev/null
+# expansion of router_home_directory
+exim -odi -d+expand CALLER@test.ex usery@test.ex userz rd+CALLER rd+usery
+****
+no_message_check
--- /dev/null
+# domain_data and local_part_data for redirection to file
+exim -N -odi -d userx@test.ex
+****
+no_message_check
--- /dev/null
+# filter "mail" with huge reply-to header line
+exim -d -odi userx
+Reply-to: sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex,
+ sender@test.ex, sender@test.ex, sender@test.ex, sender@test.ex
+****
--- /dev/null
+# allow_utf8_domains
+need_ipv4
+#
+2
+exim -bt bounce@Ï€.test.ex
+****
+exim -DUTF8=allow_utf8_domains -bt bounce@Ï€.test.ex
+****
--- /dev/null
+# $h_ $bh_ and $rh_ expansions
+exim -bf DIR/aux-fixed/TESTNUM.f
+subject: lots of leading and trailing space
+To: a@b
+To: c@d
+X-1: (=?ISO-8859-1?Q?a?=)
+X-2: (=?ISO-8859-1?Q?a?= b)
+X-3: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)
+X-4: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)
+X-5: (=?ISO-8859-1?Q?a?=
+ =?ISO-8859-1?Q?b?=)
+X-6: (=?ISO-8859-1?Q?a_b?=)
+X-7: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)
+X-8: (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)
+X-9: =?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= <xxx>
+X-10: =?US-ASCII?Q?Keith_Moore?= <xxx>
+X-11: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <xxx>
+X-12: =?ISO-8859-1?Q?Andr=E9?= Pirard <xxx>
+X-13: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
+ =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
+X-14: =?ISO-8859-1?Q?X=00Y?=
+X-15: =?iso-8859-3?Q?=?= =?US-ASCII?Q?ABCD?= Text
+X-16: =?iso-8859-3?B?+2?= =?UTF-8?Q?ABCD?= Text
+X-17: =?UTF-8?Q?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?=
+X-18: =?UTF-8?Q?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?=
+X-19: =?iso-8859-3?B?=?= =?UTF-8?Q?ABCD?= Text
+X-20: =?iso-8859-1?Q?a?= =?ISO-8859-1?Q?x y?= bad because of space
+****
--- /dev/null
+# overlong headers and header lines
+write test-data 15000x100=__
+From: x@y
+Subject: this will be very long
+++++
+
+Short message body.
+****
+1
+exim x@y <DIR/test-data
+****
+exim -DHEADER_MAXSIZE=header_maxsize=2M x@y <DIR/test-data
+****
+1
+exim -DHEADER_MAXSIZE=header_maxsize=2M -DHEADER_LINE_MAXSIZE=header_line_maxsize=1024 x@y <DIR/test-data
+****
+exim -DHEADER_LINE_MAXSIZE=header_line_maxsize=20 -bs
+mail from:<x@y>
+rcpt to:<x@y>
+data
+Subject: Here is a line that is going to overflow the small limit
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# errors_to for local delivery
+exim -odi -d userx@test.ex
+****
--- /dev/null
+# smtp_banner tests (including empty banner)
+exim -bs
+quit
+****
+exim '-DBANNER=$qualify_domain XYZ' -bs
+quit
+****
--- /dev/null
+# address_data in ACLs after verification
+exim -bs
+MAIL FROM:<oksender@y>
+rcpt to:<child@test.ex>
+rcpt to:<orig@test.ex>
+quit
+****
--- /dev/null
+# use of file= in appendfile with filter setting the folder
+exim -odi t1
+****
+# Batched multiple deliveries (it doesn't batch)
+exim -odi t11 t12
+****
+# Error message for failure before full path is set
+exim -odi t2
+****
+no_msglog_check
--- /dev/null
+# $reply_address
+exim -odi CALLER
+From: CALLER
+
+From set, reply-to non-existent.
+****
+exim -odi CALLER
+From: CALLER
+Reply-to:
+
+From set, reply-to empty
+****
+exim -odi CALLER
+From: CALLER
+Reply-to: usery
+
+From set, reply-to set
+****
+exim -odi CALLER
+From:
+
+From empty, reply-to non-existent
+****
--- /dev/null
+# callout hosts taken from transport
+need_ipv4
+#
+server PORT_S 3
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+450 Temporary error
+QUIT
+250 OK
+*eof
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+450 Temporary error
+QUIT
+250 OK
+*eof
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+450 Temporary error
+QUIT
+250 OK
+****
+exim -odi -bs
+mail from:<r1@domain1>
+rset
+mail from:<r2@domain2>
+rset
+mail from:<r3@domain3>
+quit
+****
--- /dev/null
+# caching in nested domainlists
+exim -d -bt x@b.domain x@a.domain
+****
--- /dev/null
+# overflow in integer options
+1
+exim -DARG1=4000000M -bP check_spool_space
+****
+1
+exim -DARG1=40MK -bP check_spool_space
+****
+1
+exim -DARG2=4000000000.123 -bP queue_only_load
+****
+1
+exim -DARG2=4000000.123 -bP queue_only_load
+****
+exim -bP finduser_retries
+****
+1
+exim -DVALUE=999999999999999999 -bP finduser_retries
+****
+exim -DVALUE=999999999 -bP finduser_retries
+****
+1
+exim -DVALUE=999999999K -bP finduser_retries
+****
+exim -DVALUE=999999K -bP finduser_retries
+****
+1
+exim -DVALUE=999999M -bP finduser_retries
+****
+1
+exim -DVALUE=99Q -bP finduser_retries
+****
+1
+exim -DVALUE=Q -bP finduser_retries
+****
+1
+exim -DVALUE="99 extra" -bP finduser_retries
+****
--- /dev/null
+# ACL "discard" verb
+1
+exim -bs
+helo xxx
+****
+# The -odi's below aren't for real - they are just testing that -odi cannot
+# override queue_only because no_queue_only_override is set.
+1
+exim -odi x@y
+discard: yes
+.
+****
+exim -odi -bs
+mail from:<discard@x.y>
+rcpt to:<a@b>
+rcpt to:<discard@p.q>
+data
+Testing
+.
+mail from:<ok@x.y>
+rcpt to:<a@b>
+rcpt to:<discard@p.q>
+rcpt to:<nested_discard@p.q>
+data
+Testing
+.
+mail from:<ok@x.y>
+rcpt to:<discard@p.q>
+data
+Testing
+.
+mail from:<ok@x.y>
+rcpt to:<a@b>
+data
+discard: yes
+
+Testing
+.
+mail from:<ok@x.y>
+rcpt to:<data_message_discard@b>
+data
+.
+quit
+****
+1
+exim data_message_discard@y
+.
+****
+no_msglog_check
--- /dev/null
+# smtp_return_error_details and sender verify defer
+need_ipv4
+#
+exim -bs
+mail from:<x@host.test.again.dns>
+rcpt to:<x@y>
+rcpt to:<a@b>
+quit
+****
+exim -DRETURN_ERROR_DETAILS=true -bs
+mail from:<x@host.test.again.dns>
+rcpt to:<x@y>
+rcpt to:<a@b>
+quit
+****
--- /dev/null
+# Continuations in file ACL
+exim -odq -bs
+mail from:<>
+rcpt to:<x@y>
+quit
+****
--- /dev/null
+# hosts_treat_as_local and +local_domains
+need_ipv4
+#
+exim -d -bv k@mxt13.test.ex
+****
--- /dev/null
+# received_header_text
+exim -d -bh V4NET.0.0.0
+mail from:<x@y>
+rcpt to:<x@y>
+data
+Message.
+.
+mail from:<a@b>
+rcpt to:<x@y>
+data
+Message.
+.
+quit
+****
--- /dev/null
+# rewrite at transport time
+exim -odi a@b.c
+From: p@q.r
+To: a@b.c
+Reply-to: e@f.g
+****
--- /dev/null
+# dnsbl: orphan CNAME and multiple A records
+exim -bh V4NET.13.13.1
+quit
+****
+exim -bh V4NET.13.13.2
+quit
+****
--- /dev/null
+# Line breaking in SMTP error message containing a long word
+exim -bh V4NET.13.13.1
+quit
+****
--- /dev/null
+# Default value of return-path in -bt and delivery
+2
+exim -bt userx
+****
+exim -odi userx
+****
--- /dev/null
+# log_message with warn
+need_ipv4
+#
+exim -bs
+mail from:<BAD@y>
+rcpt to:<OK@x>
+rcpt to:<BAD@x>
+quit
+****
--- /dev/null
+# upper case letters in canonical domain name
+need_ipv4
+#
+server PORT_S
+220 Server ready
+EHLO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 Unknown
+QUIT
+250 OK
+****
+exim -d-all+route+host_lookup -odi x@uppercase.test.ex
+Testing
+****
--- /dev/null
+# Sieve tests using -bf
+rmfiltertest
+catwrite test-data
+# Sieve filter
+if address ["From","To"] "marian@abcdefgh.example"
+ { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if address :is "From" "marian@abcdefgh.example"
+ { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if address :is "To" "marian@abcdefgh.example"
+ { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if address :contains "To" "abcdefgh"
+ { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if address :matches "To" "*abc?efgh*"
+ { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if true { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if false { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if allof (false,false) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if allof (true,false) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if allof (false,true) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if allof (true,true) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if anyof (false,false) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if anyof (true,false) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if anyof (false,true) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if anyof (true,true) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if not anyof (false,false) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if not anyof (true,false) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if not anyof (false,true) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if not anyof (true,true) { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header "to" "MARIAN@abcdefgh.example" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :comparator "i;octet" "to" "MARIAN@abcdefgh.example" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :comparator "i;ascii-casemap" "to" "MARIAN@abcdefgh.example" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+require "envelope";
+if envelope "from" "marian@somenet.example" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+require "envelope";
+if envelope "from" "offerqn@bpk.example.com" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if exists [ "X-NotHere", "X-Notheretoo" ] { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if exists [ "X-NotHere", "Delivered-To" ] { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if exists [ "From", "Delivered-To" ] { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :contains "X-NotHere" "" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header "Delivered-To" "" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :contains "Delivered-To" "" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :contains "Delivered-To" "rc@irc.somenet.example" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header "Delivered-To" ["irc@irc.somenet.example"] { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header "Delivered-To" ["irc@irc.somenet.example","irc@01019somenet.example","some.one"] { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header "Mime-Version" "1.0" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if false { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if true { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if true { discard; } else { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if false { keep; } else { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if false { keep; } elsif true { discard; } else { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if true { discard; } elsif true { keep; } else { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if false { keep; }
+ else
+ { if true { discard; } else { keep; } }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :matches "to" "MA*AN@abc*fg?.example" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if not header :matches "to" "MA?AN@abc*fg?.example" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :matches "to" "*marian@abcdefgh.example" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if not header :matches "to" "?marian@abcdefgh.example" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :matches "to" "marian@abcdefgh.example*" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if not header :matches "to" "marian@abcdefgh.example?" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :matches "x-special1" "\\?*\\*" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :matches "x-special1" "*\0*" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if not header :matches "x-special1" "*\0*q" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if not header :matches "x-special2" "\\?*\\*" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if not header :matches "x-special2" "*\0*" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if size :over 400 {
+ discard;
+ }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if size :over 4K {
+ discard;
+ }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if size :under 4K { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if size :under 400 { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if false { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+# Syntax checks
+catwrite test-data
+# no filter line here
+if unknowntest { keep; }
+****
+1
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if test keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if test { keep;
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if true { unknownaction; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if true { fileinto abcdefgh; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+require "fileinto";
+if true { fileinto "abcdefgh"; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header ["to"] [ "marian@abcdefgh.example", "achnee"] { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header "to" [ "egal", "achnee" { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header "to","from"] "egal" { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header ["to","from" "egal" { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header ["to",,"from"] "egal" { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header ["to",] "egal" { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header [,"to"] "egal" { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if unknowntest { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :matches "to" "egal" { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+if header :unknown "to" "egal" { keep; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message
+****
+catwrite test-data
+# Sieve filter
+#
+require ["fileinto", "envelope"];
+
+if header :matches "X-Warning" "* is listed at list.dsbl.org*"
+ {
+ keep; # keep in "In" folder
+ }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message2
+****
+catwrite test-data
+# Sieve filter
+if header "x-1" "1" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
+catwrite test-data
+# Sieve filter
+if not header "x-1" "=?ISO-8859-1?Q?=31?=" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
+catwrite test-data
+# Sieve filter
+if header "x-1b" "=?ISO-8859-1?Q?=31=" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
+catwrite test-data
+# Sieve filter
+if header "x-b64" "This is BASE64" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
+catwrite test-data
+# Sieve filter
+if header "x-b64-broken" "=?iso-8859-1?b?VGhpcyBpcyBCQVNFNjQ?=" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
+catwrite test-data
+# Sieve filter
+if header "x-q75total" "0123456789012345678901234567890123456789012345678901234567" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
+catwrite test-data
+# Sieve filter
+if header "x-q76total" "=?ISO-8859-1?Q?01234567890123456789012345678901234567890123456789012345678?=" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
+catwrite test-data
+# Sieve filter
+if header "X-Wrapped" "eins zwei drei" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
+catwrite test-data
+# Sieve filter
+if header "x-nomimewrap" "=?iso-8859-1?q?abc def ghi?=" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
+catwrite test-data
+# Sieve filter
+if header "subject" "abcdefghi" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
+catwrite test-data
+# Sieve filter
+if header "x-mixed" "abc def" { discard; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
+catwrite test-data
+#Sieve filter
+if true { stop; fileinto "inbox.never"; }
+****
+exim -bf test-data <aux-fixed/TESTNUM.message3
+****
--- /dev/null
+# Sieve tests with actual delivery
+exim -odi userx
+Test 1
+****
+exim -odi userx
+Filter: discard;
+Test 2
+****
+exim -odi userx
+Filter: require "fileinto"; fileinto "userx-extra";
+Test 3
+****
+exim -odi userx
+Filter: redirect "redirected@test.ex";
+Test 4
+****
+exim -odi restrict-userx
+Filter: require "fileinto"; fileinto "userx-extra";
+Test 5
+****
+# Syntax error in Sieve filter (missing "require")
+exim -odi restrict-userx
+Filter: fileinto "userx-extra";
+Test 6
+****
+# Test stop inside a block
+exim -odi userx
+Filter: if true { stop; fileinto "inbox.never"; }
+Test 7
+****
+# This should fileinto inbox.JUNK (99 equal 99):
+exim -odi userx
+X-Sieve: 99
+Filter: require["fileinto","comparator-i;ascii-numeric"];
+ if header :comparator "i;ascii-numeric" "X-Sieve" "99" {
+ fileinto "inbox.JUNK";
+ stop;
+ }
+Test 8
+****
+# This should not fileinto inbox.JUNK (98 not equal 99):
+exim -odi userx
+X-Sieve: 99
+Filter: require["fileinto","comparator-i;ascii-numeric"];
+ if header :comparator "i;ascii-numeric" "X-Sieve" "98" {
+ fileinto "inbox.JUNK";
+ stop;
+ }
+Test 9
+****
+# This should fileinto inbox.JUNK (99-suffix equal 99):
+exim -odi userx
+X-Sieve: 99-
+Filter: require["fileinto","comparator-i;ascii-numeric"];
+ if header :comparator "i;ascii-numeric" "X-Sieve" "99" {
+ fileinto "inbox.JUNK";
+ stop;
+ }
+Test 10
+****
+# This should fileinto inbox.JUNK (non-numeric equal non-numeric):
+exim -odi userx
+X-Sieve: -99
+Filter: require["fileinto","comparator-i;ascii-numeric"];
+ if header :comparator "i;ascii-numeric" "X-Sieve" "-99" {
+ fileinto "inbox.JUNK";
+ stop;
+ }
+Test 11
+****
+# This should fileinto inbox.JUNK (non-numeric equal non-numeric):
+exim -odi userx
+X-Sieve: -99
+Filter: require["fileinto","comparator-i;ascii-numeric"];
+ if header :comparator "i;ascii-numeric" "X-Sieve" "-98" {
+ fileinto "inbox.JUNK";
+ stop;
+ }
+Test 12
+****
+# This is a simple test of "vacation"
+exim -odi -f someone@test.ex userx
+To: userx@test.ex
+Filter: require ["vacation"];
+ vacation "I am gone. Not here.";
+Test 13
+****
--- /dev/null
+# hosts_avoid_esmtp
+need_ipv4
+#
+exim x@y
+****
+server PORT_S
+220 Server ready
+HELO
+550 No
+QUIT
+250 OK
+****
+exim -q
+****
+no_msglog_check
--- /dev/null
+# /MX in a list of hosts
+exim -DLIST=ten-1.test.ex:mxt8.test.ex/MX -bt x@manual.route
+****
+exim -DLIST=ten-1.test.ex:mxt8.test.ex/MX:ten-6.test.ex -bt x@manual.route
+****
+exim -DLIST=mxt8.test.ex/MX:ten-6.test.ex -bt x@manual.route
+****
+exim -DLIST=mxt8.test.ex/MX -bt x@random.manual.route
+****
+exim -DLIST=ten-1.test.ex:mxt8.test.ex/MX -bt x@random.manual.route
+****
+exim -DLIST=ten-1.test.ex:mxt8.test.ex/MX:ten-6.test.ex -bt x@random.manual.route y@random.manual.route
+****
+exim -DLIST=mxt8.test.ex/MX:ten-6.test.ex -bt x@random.manual.route
+****
+exim -DLIST=ten-1.test.ex:mxt5.test.ex/MX:ten-6.test.ex -bt x@manual.route
+****
+1
+exim -DLIST=mxt5.test.ex/MX:ten-6.test.ex -bt x@manual.route
+****
+exim -DSELF=send -DLIST=mxt5.test.ex/MX:ten-6.test.ex -bt x@manual.route
+****
+2
+exim -DSELF=pass -DLIST=mxt5.test.ex/MX:ten-6.test.ex -bt x@manual.route
+****
+1
+exim -DLIST=mxt11.test.ex/MX:ten-6.test.ex -bt x@random.manual.route
+****
+exim -DLIST=mxt11a.test.ex/MX:ten-6.test.ex -bt x@random.manual.route
+****
--- /dev/null
+# affixes in RCPT commands
+need_ipv4
+#
+server PORT_S
+220 Server ready
+EHLO
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+RCPT
+250 OK
+DATA
+354 Go ahead
+.
+250 OK
+QUIT
+220 OK
+****
+exim -odi pre-xxx@a.b xxx+post@a.b
+****
+server PORT_S
+220 Server ready
+EHLO
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+RCPT
+250 OK
+DATA
+354 Go ahead
+.
+250 OK
+QUIT
+220 OK
+****
+exim -DAFFIX=rcpt_include_affixes -odi pre-xxx@a.b xxx+post@a.b
+****
+exim -odi pre.xxx@a.b
+****
+exim -DAFFIX=rcpt_include_affixes -odi pre.xxx@a.b
+****
--- /dev/null
+# callout with -bh and -bhc
+need_ipv4
+#
+exim -bh 1.2.3.4
+mail from:<x@y>
+quit
+****
+server PORT_S
+220 server ready
+HELO
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+QUIT
+220 OK
+****
+exim -d -bhc 1.2.3.4
+mail from:<x@y>
+quit
+****
+exim -d -bhc 1.2.3.4
+mail from:<x@y>
+quit
+****
+exim -bhc 1.2.3.4
+mail from:<x@y>
+quit
+****
+server PORT_S
+220 server ready
+HELO
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+QUIT
+220 OK
+****
+exim -bhc 1.2.3.4
+mail from:<a@b>
+quit
+****
+# Timeout stuff
+server PORT_S
+220 server ready
+HELO
+*sleep 2
+*eof
+****
+exim -bhc 1.2.3.4
+mail from:<p1@q>
+quit
+****
--- /dev/null
+# local_interfaces, daemon_smtp_port, and -oX interactions (IPv4)
+need_ipv4
+#
+exim -d -bd -DSERVER=server -DPORT=daemon_smtp_port=PORT_D
+****
+killdaemon
+exim -d -bd -DSERVER=server -DPORT=daemon_smtp_port=PORT_D:PORT_D2
+****
+killdaemon
+exim -d -bd -DSERVER=server -DPORT=daemon_smtp_port=PORT_D:PORT_D2 -DIFACE='local_interfaces = <; 127.0.0.1.PORT_D4 ; 0.0.0.0'
+****
+killdaemon
+exim -d -bd -DSERVER=server -DPORT=daemon_smtp_port=PORT_D:PORT_D2 -DIFACE='local_interfaces = <; 0.0.0.0; 127.0.0.1.PORT_D4'
+****
+killdaemon
+exim -d -bd -DSERVER=server -oX PORT_D3 -DPORT=daemon_smtp_port=PORT_D:PORT_D2 -DIFACE='local_interfaces = <; 127.0.0.1.PORT_D4 ; 0.0.0.0'
+****
+killdaemon
+exim -d -bd -DSERVER=server -oX '<; 0.0.0.0.PORT_D;0.0.0.0.PORT_D2'
+****
+killdaemon
--- /dev/null
+# extra_local_interfaces
+need_ipv4
+#
+exim -bt a@b
+****
+1
+exim -bt -DELI=1.2.3.4 a@b
+****
--- /dev/null
+# batch_max and multiple domains
+exim -odi a@d1.ex b@d1.ex c@d2.ex d@d2.ex
+****
--- /dev/null
+# queue run: close lookups before delivery
+exim -odq userx
+First message
+****
+exim -odq userx
+Second message
+****
+exim -q -d-all+lookup
+****
--- /dev/null
+# -oP to override pid file
+need_ipv4
+#
+exim -d -DSERVER=server -bd -oX PORT_D
+****
+killdaemon
+# PID file must be DIR/spool/exim-daemon.* in order for "killdaemon" to work
+exim -d -DSERVER=server -bd -oX PORT_D -oP DIR/spool/exim-daemon.anotherpid
+****
+killdaemon
--- /dev/null
+# ridiculously large message_size_limit
+need_ipv4
+#
+1
+exim -odq userx
+****
+exim -bs
+quit
+****
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 421
+QUIT
+??? 221
+****
+killdaemon
--- /dev/null
+# More than two messages to same host, with transport filter
+need_ipv4
+#
+exim -odi -odqs x1@y1
+First message
+****
+exim -odi -odqs x2@y2
+Second message
+****
+exim -odi -odqs x3@y3
+Third message
+****
+server PORT_S
+220 server ready
+EHLO
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 OK
+.
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 OK
+.
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 OK
+.
+250 OK
+QUIT
+221 OK
+****
+exim -q
+****
--- /dev/null
+# Message ids with and without domain literals
+exim -odq userx
+Message-id: <something@[1.2.3.4]>
+****
+exim -odq userx
+Message-Id: <something@some.domain>
+****
+no_msglog_check
--- /dev/null
+# multiple .includes and .include_if_exists
+exim -bP routers
+****
+1
+exim -DBAD=".include /non/existent"
+****
--- /dev/null
+# verify callout with no transport
+exim -bhc V4NET.0.0.1
+Mail from: x@ten-1.test.ex
+rcpt to: x@y
+quit
+****
--- /dev/null
+# headers remove in system filter
+exim -odi userx
+X-XXX-Original-Host: some.host.name
+This is a test message.
+****
--- /dev/null
+# :fail: with looked up empty string
+exim -bh 1.2.3.4
+mail from:<lp1@x.y>
+rcpt to:<zz@x.y>
+rset
+mail from:<lp2@x.y>
+rcpt to:<zz@x.y>
+quit
+****
--- /dev/null
+# $received_count
+exim -odi userx
+Received: the first received: line
+Received: the second received: line
+****
+exim -odi -bs
+mail from:<>
+rcpt to:userx@test.ex
+data
+Received: the first received: line
+Received: the second received: line
+.
+quit
+****
--- /dev/null
+# timeout_connect etc.
+need_ipv4
+#
+exim -brt a.c auth_failed
+****
+exim -brt a.c timeout
+****
+exim -brt a.c timeout_connect
+****
+exim -DINSERT="* timeout_A F,1d,30s" -brt a.c timeout_a
+****
+exim -DINSERT="* timeout_connect_A F,1d,29s" -brt a.c timeout_connect_a
+****
+# Hits the timeout_connect line
+exim -odi userx
+****
+dump retry
+sudo rm spool/db/*
+# Hits the inserted line - any timeout for A
+exim -DINSERT="* timeout_A F,1d,30s" -qf
+****
+dump retry
+sudo rm spool/db/*
+# Hits the inserted line - timeout_connect for A
+exim -DINSERT="* timeout_connect_A F,1d,29s" -qf
+****
+dump retry
+sudo rm spool/db/*
+exim -odi userx@xx.test.again.dns
+****
+dump retry
+sudo rm spool/db/*
+no_msglog_check
--- /dev/null
+# rewrite to empty sender
+exim -f postmaster@my.domain userx
+****
+exim -bs
+ehlo x.y.z
+mail from:<postmaster@my.domain>
+rcpt to:<userx@test.ex>
+data
+1234
+.
+quit
+****
+# This one provokes a sender verify (the above one doesn't)
+exim -bs
+ehlo x.y.z
+mail from:<postmaster@my.domain>
+rcpt to:<usery@test.ex>
+data
+1234
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# queue_only_file
+sudo rm -f DIR/test-data
+exim -odi userx
+Message 1
+****
+touch DIR/test-data
+exim -odi userx
+Message 2
+****
+sudo rm DIR/test-data
+no_msglog_check
--- /dev/null
+# expanded port option
+need_ipv4
+#
+exim -d-all+transport -odi userx
+Message 1
+****
+exim -d-all+transport -q
+****
+dump retry
+no_msglog_check
--- /dev/null
+# verify sender at DATA time
+exim -odq -bs
+ehlo a.b.c.d
+mail from:<bad@test.ex>
+rcpt to:<good@test.ex>
+data
+This is a message.
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# "extra_headers" argument in "mail" in user filter
+exim -odi userx
+fno: 1
+This is a message.
+****
+exim -odi userx
+fno: 2
+Another message
+****
+no_msglog_check
--- /dev/null
+# smtp_max_synprot_errors
+1
+exim -bs
+helo
+helo
+helo
+helo
+helo
+helo
+****
+1
+exim -DLIMIT=smtp_max_synprot_errors=1 -bs
+mail from:<>
+mail from:<>
+mail from:<>
+****
+exim -bh V4NET.0.0.1
+helo xxxx
+mail from:<>
+rcpt to:<bad syntax@x.y.z>
+rcpt to:<bad syntax@x.y.z>
+rcpt to:<bad syntax@x.y.z>
+rcpt to:<bad syntax@x.y.z>
+rcpt to:<bad syntax@x.y.z>
+quit
+****
--- /dev/null
+# rewrite logging provoked from filter
+need_ipv4
+#
+exim -bd -DSERVER=server -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+helo rhu.barb
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test message.
+.
+??? 250
+QUIT
+??? 221
+****
+killdaemon
+# Wait for delivery process
+sleep 1
+no_msglog_check
--- /dev/null
+# hosts_max_try and final cutoff
+need_ipv4
+#
+exim -DHOSTS_MAX_TRY=1 -odi userx@mxt97.test.ex
+****
+sleep 4
+exim -DHOSTS_MAX_TRY=1 -q
+****
+no_msglog_check
--- /dev/null
+# errors_to when sender address is empty
+exim -f "" -bt test-bus-error@localhost
+****
--- /dev/null
+# sender_helo_name resetting after reject
+exim -bs
+HELO a.b.c.d
+MAIL FROM:<x@y>
+quit
+****
--- /dev/null
+# logging smtp protocol errors and pipelining
+need_ipv4
+#
+exim -bd -DSERVER=server -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+DATA
+??? 503
+QUIT
+??? 221
+****
+client 127.0.0.1 PORT_D
+??? 220
+helo rhu.barb
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+DATA
+??? 503
+QUIT
+??? 221
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<deny@test.ex>
+??? 550
+rcpt to:<userx@test.ex>
+??? 503
+DATA
+??? 503
+QUIT
+??? 221
+****
+client 127.0.0.1 PORT_D
+??? 220
+helo rhu.barb
+??? 250
+mail from:<deny@test.ex>
+??? 550
+rcpt to:<userx@test.ex>
+??? 503
+DATA
+??? 503
+QUIT
+??? 221
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+rcpt to:<ph11@test.ex>
+??? 550
+rcpt to:<ph12@test.ex>
+??? 550
+DATA
+??? 503
+QUIT
+??? 221
+****
+client 127.0.0.1 PORT_D
+??? 220
+helo rhu.barb
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+rcpt to:<ph11@test.ex>
+??? 550
+rcpt to:<ph12@test.ex>
+??? 550
+DATA
+??? 503
+QUIT
+??? 221
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+rcpt to:<userx@test.ex>
+??? 503
+DATA
+??? 503
+QUIT
+??? 221
+****
+killdaemon
+# Wait for delivery process
+sleep 1
+no_msglog_check
--- /dev/null
+# unwanted search error messages in ACLs
+exim -bs
+mail from:<>
+rcpt to:outer@xx
+quit
+****
--- /dev/null
+# bare LF in header lines (TCP input)
+need_ipv4
+#
+exim -bd -DSERVER=server -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+From: x@y
+To: some@one
+Subject: contains >\n< bare lf
+Aheader: Another header line
+
+This is the message body.
+.
+??? 2
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+From: x@y\nBheader: some text
+To: some@one
+Subject: contains >\n< bare lf
+Aheader: Another header line
+
+This is the message body.
+.
+??? 2
+QUIT
+??? 221
+****
+killdaemon
+# Wait for delivery process
+sleep 1
--- /dev/null
+# fallback_hosts after main hosts have timed out
+need_ipv4
+#
+server PORT_S
+220 server ready
+EHLO
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 OK
+.
+250 OK
+QUIT
+221 OK
+****
+exim -odi userx@test.ex
+Short message
+****
+sleep 2
+server PORT_S
+220 server ready
+EHLO
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 OK
+.
+250 OK
+QUIT
+221 OK
+****
+exim -odi userx@test.ex
+Short message
+****
+server PORT_S
+220 server ready
+EHLO
+250 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 OK
+.
+250 OK
+QUIT
+221 OK
+****
+exim -odi userx@test.ex
+Short message
+****
+exim -DFALLBACK= -odi userx@test.ex
+Short message
+****
+exim -DFALLBACK= -DROUTE_DATA=V4NET.0.0.2 -odi userx@test.ex
+Short message
+****
+sleep 2
+exim -DFALLBACK= -DROUTE_DATA=V4NET.0.0.2 -q
+****
+exim -DFALLBACK= -DROUTE_DATA=V4NET.0.0.2 -odi userx@test.ex
+Short message
+****
+no_msglog_check
--- /dev/null
+# callout verification with/without postmaster and caching
+need_ipv4
+#
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RSET
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 NO
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.1
+MAIL FROM:<Ok@localhost>
+RCPT TO:<checkpm@test.ex>
+RCPT TO:<nocheckpm@test.ex>
+QUIT
+****
+# This one fails the actual address
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 NO
+QUIT
+250 OK
+****
+sudo exim -d-all+verify -v -bs -oMa V4NET.0.0.2
+MAIL FROM:<NOTok@elsewhere>
+RCPT TO:<nocheckpm@test.ex>
+QUIT
+****
--- /dev/null
+# @mx_xxx with domain widening
+need_ipv4
+#
+exim -d -bt x@ten-1
+****
--- /dev/null
+# domain_data for multiple recipient verify in an ACL
+need_ipv4
+#
+exim -d -bs
+mail from:<>
+rcpt to:<abc@domain1>
+quit
+****
--- /dev/null
+# strip_trailing_dot
+exim -d -bs
+mail from:<>
+rcpt to:<abc@domain.>
+quit
+****
+1
+exim -f abc@somewhere. xxx
+****
+exim -DSTD=strip_trailing_dot -d -bs
+mail from:<>
+rcpt to:<abc@domain.>
+data
+To: abc@domain.
+.
+quit
+****
+exim -DSTD=strip_trailing_dot -f abc@somewhere. xxx@yyy.
+****
+exim -d -bs
+mail from:<>
+rcpt to:<abc@xyz>
+data
+To: abc@xyz.
+.
+quit
+****
+exim -bp
+****
+no_msglog_check
--- /dev/null
+# long hostlist string in route_list expansion
+need_ipv4
+#
+exim -bt x@y
+****
--- /dev/null
+# SRV lookups
+need_ipv4
+#
+2
+exim -bt x@nosrv.test.ex x@srv01.test.ex x@mx246.test.ex x@srv02.test.ex x@nosmtp.test.ex x@srv03.test.ex
+****
+exim -DSRV=smtp2 -bt x@srv03.test.ex
+****
+exim -odi -N x@srv01.test.ex
+****
+exim -odi -DSRV=smtp2 -N x@srv03.test.ex
+****
+# Actually send a message to a port specified in the SRV record.
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+354 OK
+.
+250 OK
+QUIT
+250 OK
+****
+exim -v -odi x@srv27.test.ex
+****
--- /dev/null
+# $message_body in multiple SMTP messages
+exim -bs
+mail from:<>
+rcpt to:<x@y>
+data
+This is the FIRST message body.
+.
+mail from:<>
+rcpt to:<x@y>
+data
+This is the SECOND message body.
+.
+quit
+****
--- /dev/null
+# MX -> one-component name
+need_ipv4
+#
+2
+exim -d -bt x@mxt1c.test.ex
+****
--- /dev/null
+# logging repeated warning messages in ACLs
+exim -bs
+HELO xxx
+MAIL FROM:<>
+RCPT TO:<a@b.c>
+RCPT TO:<x@y.z>
+RSET
+MAIL FROM:<>
+RCPT TO:<a@b.c>
+RCPT TO:<x@y.z>
+QUIT
+****
--- /dev/null
+# multiple rewrites on stupidly long header lines
+exim -d -odq r1@test.ex
+To: random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example,
+ random@test.example
+****
+no_msglog_check
--- /dev/null
+# $n in system filter -> $sn in user filter with different filter users
+exim -odi userz
+Testing
+****
+exim -DFUSER=system_filter_user=EXIMUSER -odi userz
+Testing 2
+****
--- /dev/null
+# recipient callouts - sender/postmaster caching and QUIT after timeout
+need_ipv4
+#
+server PORT_S 3
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+*eof
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+*eof
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+550 NOTOK
+QUIT
+250 OK
+****
+exim -bs
+ehlo xxxx
+mail from: s1@test.ex
+rcpt to: r1@test.ex
+rset
+mail from: s1@test.ex
+rcpt to: r1@test.ex
+rset
+mail from: s2@test.ex
+rcpt to: r1@test.ex
+rset
+mail from: s3@other.ex
+rcpt to: r3@other.ex
+rset
+mail from: s4@other.ex
+rcpt to: r4@other.ex
+rset
+quit
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+exim -DUSE_SENDER= -bs
+ehlo xxxx
+mail from: x9@test.ex
+rcpt to: r1@test.ex
+quit
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+exim -DUSE_SENDER=,use_postmaster -bs
+ehlo xxxx
+mail from: x9@test.ex
+rcpt to: r1@test.ex
+quit
+****
+server PORT_S
+220 server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 NO
+QUIT
+250 OK
+****
+exim -bs
+ehlo xxxx
+mail from:<x9@test.ex>
+rcpt to:<r9@test.ex>
+quit
+****
+# A repeat should use the cache
+exim -bs
+ehlo xxxx
+mail from:<x9@test.ex>
+rcpt to:<r9@test.ex>
+quit
+****
+server PORT_S
+220 server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 NO
+QUIT
+250 OK
+****
+# Ditto for sender verify
+exim -DACL_RCPT=acl_rcpt_sender -bs
+ehlo xxxx
+mail from:<x9@test.ex>
+rcpt to:<r9@test.ex>
+quit
+****
+# Repeat for cache
+exim -DACL_RCPT=acl_rcpt_sender -bs
+ehlo xxxx
+mail from:<x9@test.ex>
+rcpt to:<r9@test.ex>
+quit
+****
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+exim -DUSE_SENDER=,defer_ok,random,use_postmaster -bs
+ehlo xxxx
+mail from: x11@two.test.ex
+rcpt to: r11@two.test.ex
+quit
+****
+dump callout
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+*sleep 2
+****
+exim -DUSE_SENDER= -bs -d-all+verify -v
+ehlo xxxx
+mail from: x11@two.test.ex
+rcpt to: r11@two.test.ex
+quit
+****
+server PORT_S
+*sleep 2
+****
+exim -DUSE_SENDER= -bs -d-all+verify -v
+ehlo xxxx
+mail from: x11@two.test.ex
+rcpt to: r11@two.test.ex
+quit
+****
--- /dev/null
+# handling malformed SMTP return codes
+need_ipv4
+#
+server PORT_S
+220 Server ready
+EHLO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+354 SEND IT
+.
+850 NONSENSE
+QUIT
+250 OK
+****
+exim -odi abcd@xyz
+Test data.
+****
+dump retry
+server PORT_S
+220 Server ready
+EHLO
+250 OK
+MAIL FROM
+850 RUBBISH
+QUIT
+250 OK
+****
+exim -qf
+****
+dump retry
+server PORT_S
+220 Server ready
+EHLO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+850 RUBBISH
+QUIT
+250 OK
+****
+exim -qf
+****
+dump retry
+no_msglog_check
--- /dev/null
+# malformed item in host list
+exim -bh V4NET.0.0.0
+mail from:<>
+rcpt to:<a@b>
+quit
+****
--- /dev/null
+# RSET error for multiple messages
+need_ipv4
+#
+exim -odi -odqs userx@test.ex
+First message
+****
+exim -odi -odqs usery@test.ex
+Second message
+****
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 NO
+>*eof
+****
+exim -d-all+transport+process_info -q
+****
+no_msglog_check
--- /dev/null
+# bind to outgoing interface fails
+need_ipv4
+#
+exim -odi userx@test.ex
+****
+no_msglog_check
--- /dev/null
+# connection error on and not on queue run, with deliver_drop_privilege
+need_ipv4
+#
+exim -odq V4NET.0.0.1@test.ex
+****
+exim -DSERVER=server -q1h -bd -oX PORT_D
+****
+sleep 1
+exim -odi 127.0.0.1@test.ex
+****
+sleep 1
+killdaemon
+no_msglog_check
--- /dev/null
+# verifying and rewriting sender address
+need_ipv4
+#
+exim -d -bh 1.2.3.4
+helo [1.2.3.4]
+mail from:<a@b>
+rcpt to:<c@d>
+rcpt to:<e@f>
+quit
+****
--- /dev/null
+# smtp_active_hostname
+need_ipv4
+#
+exim -bh 1.2.3.4 -oMi V4NET.0.0.1
+helo a.b.c
+quit
+****
+exim -bh 1.2.3.4 -oMi V4NET.0.0.2
+helo a.b.c
+quit
+****
+1
+exim -bh 1.2.3.4 -oMi V4NET.0.0.3
+helo a.b.c
+quit
+****
+exim -bh 1.2.3.4 -oMi V4NET.0.0.4
+helo a.b.c
+quit
+****
+exim -DSERVER=server -DIP1=127.0.0.1 -DIP2=HOSTIPV4 -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+helo foobar
+??? 250
+mail from:<>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+data
+??? 354
+.
+??? 250
+quit
+??? 221
+****
+# Wait for it to be delivered
+sleep 1
+client HOSTIPV4 PORT_D
+??? 220
+helo foobar
+??? 250
+quit
+??? 221
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# remove_headers and trailing colons
+exim -odi userx
+Remove-Me: this header is to be removed
+Another: This is another header
+****
--- /dev/null
+# much space before : in header line
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+helo foobar
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+data
+??? 3
+From : userx
+
+This is junk
+.
+??? 5
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+# $sender_data and $recipient_data
+exim -bs -d-all+route
+mail from:<sender@domain1>
+rcpt to:<recip@domain2>
+rcpt to:<other@domain2>
+quit
+****
--- /dev/null
+# lookup caching all
+exim -d -be
+${lookup{list}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+${lookup{list}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+${lookup{root}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+${lookup{root}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+${lookup{list}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+
+${lookup{list}lsearch{DIR/aux-fixed/TESTNUM.aliases2}{$value}{NOT FOUND}}
+${lookup{root}lsearch{DIR/aux-fixed/TESTNUM.aliases2}{$value}{NOT FOUND}}
+${lookup{list}lsearch{DIR/aux-fixed/TESTNUM.aliases2}{$value}{NOT FOUND}}
+
+${lookup{list}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+${lookup{root}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+****
--- /dev/null
+# $host_data in multiple messages in one connection
+exim -odi -bs -oMa 1.2.3.4
+ehlo x.y.z
+mail from:<>
+rcpt to:<userx@test.ex>
+data
+This is a test message.
+.
+mail from:<>
+rset
+mail from:<nonnull@non.null>
+rcpt to:<userx@test.ex>
+data
+This is a test message.
+.
+mail from:<third@non.null>
+quit
+****
--- /dev/null
+# timing of rewriting
+exim -bs
+ehlo x.y.z
+mail from:<writer@wdomain>
+rcpt to:<reader1@rdomain>
+rcpt to:<reader2@rdomain>
+data
+from: writer@wdomain
+to: reader1@rdomain, reader2@rdomain
+.
+mail from:<smtp-writer@wdomain>
+rcpt to:<smtp-reader@rdomain>
+data
+from: smtp-writer@wdomain
+to: smtp-reader@rdomain
+.
+quit
+****
--- /dev/null
+# qualification in headers with rewrite in transport
+exim -d -bnq -odi -bs userx
+ehlo x.y
+mail from:<x@y>
+rcpt to:<userx@test.ex>
+data
+From: unqualified
+
+Test message.
+.
+quit
+****
--- /dev/null
+# Multiple headers in one warn message
+exim -odq -bs
+MAIL FROM:<>
+RCPT TO:<userx@test.ex>
+DATA
+.
+QUIT
+****
+exim -Mvh $msg1
+****
+no_msglog_check
--- /dev/null
+# parse_fix_phrase
+exim -d-all+receive -F 'Phil Q. Hazel' X
+****
+exim -d-all+receive -F 'John "Jack" Smith' X
+****
+exim -d-all+receive -F 'John "Jack" Q. Smith' X
+****
+exim -d-all+receive -F 'John (Jack) Q. Smith' X
+****
+exim -d-all+receive -F 'John ("Jack") Q. Smith' X
+****
+exim -d-all+receive -F 'John (\"Jack\") Q. Smith' X
+****
+exim -d-all+receive -F 'Phil \"Q Hazel' X
+****
+exim -d-all+receive -F 'Phil \"Q "X." Hazel' X
+****
+no_msglog_check
--- /dev/null
+# Quoting of local parts in generated From: and Sender:
+exim -odi userx
+****
+exim -odi -DUL=a.b userx
+****
+exim -odi -DUL=.a.b userx
+****
+exim -odi -DUL=a.b. userx
+****
+exim -odi "-DUL=a\"b" userx
+****
+exim -odi userx
+From: x@y
+****
+exim -odi "-DREWRITE=^([^@]+)@([^@]+)@(.*) \$1%\$2@\$3" userx
+****
--- /dev/null
+# return_path_on_delivery with parallel deliveries and no deliveries
+need_ipv4
+sortlog
+no_stderr_check
+#
+exim -odi -N a@test.ex b@test.ex
+****
+exim -odi -N b@test.ex a@test.ex
+****
+exim -odi blackhole@test.ex
+****
--- /dev/null
+# headers_add adding to a very long header line
+exim -odi a@test.ex
+To: 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ 12345@some.domain.or.other, 54321@some.domain.or.other,
+ last@one
+****
--- /dev/null
+# never_mail in autoreply transport
+exim -odi xyz@test.ex
+Testing original message
+****
--- /dev/null
+# mua_wrapper
+need_ipv4
+#
+1
+exim xyz@test.ex
+This should fail hard (nothing listening)
+****
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+DATA
+354 OK
+.
+250 OK
+****
+exim a@x.y b@x.y
+This should succeed
+****
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+550 NOTOK
+QUIT
+250 OK
+****
+1
+exim a@x.y b@x.y
+This should not succeed (one recipient rejected)
+****
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+550 BAD MAIL
+RCPT TO
+550 NOTOK
+RCPT TO
+550 NOTOK
+QUIT
+250 OK
+****
+1
+exim a@x.y b@x.y
+This should not succeed (mail rejected)
+****
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+450 TEMPORARY MAIL FAIL
+RCPT TO
+450 NOTOK
+RCPT TO
+450 NOTOK
+QUIT
+250 OK
+****
+1
+exim a@x.y b@x.y
+This should not succeed (mail rejected, even though temporary)
+****
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+DATA
+354 OK
+.
+250 OK
+****
+exim postmaster@x.y b@x.y
+This should succeed (alias to normal address)
+****
+1
+exim file@x.y b@x.y
+This should not succeed (alias to local delivery)
+****
+1
+exim fail@x.y b@x.y
+This should not succeed (alias to fail)
+****
+1
+exim a@x.y defer@x.y
+This should not succeed (alias to defer)
+****
+1
+exim a@x.y otherhost@x.y
+This should not succeed (routed to different hosts)
+****
+1
+exim a@x.y addheader@x.y
+This should not succeed (different headers add)
+****
+# Should fail - daemon not allowed
+1
+exim -bd
+****
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+DATA
+354 OK
+.
+250 OK
+****
+exim -bs
+ehlo a.b
+mail from:<sen@der>
+rcpt to:<a@x.y>
+rcpt to:<b@x.y>
+data
+This should succeed.
+.
+quit
+****
+1
+exim -bs
+ehlo a.b
+mail from:<sen@der>
+rcpt to:<a@x.y>
+rcpt to:<b@x.y>
+data
+This should fail - nothing listening
+.
+quit
+****
+server PORT_S 2
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+*sleep 2
+>*eof
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+*sleep 2
+****
+1
+exim a@x.y b@x.y
+This should fail because of timeouts
+.
+quit
+****
+1
+exim badport1@z badport2@z
+This should fail because of a bad port definition.
+****
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250-PIPELINING
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 SORRY
+QUIT
+221 BYE
+****
+# Test for an empty sender
+1
+exim -f '<>' a@x.y
+This should fail.
+****
--- /dev/null
+# acl adding positioned headers
+exim -odi -bs
+Mail From:<some@ne>
+rcpt To: <someone@el.se>
+data
+From: some@ne
+To: someone@el.se
+
+Testing message
+.
+quit
+****
--- /dev/null
+# rcpt_4xx from server with no retry
+need_ipv4
+#
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+452 temporary error
+QUIT
+250 OK
+****
+exim -odi userx@x.y
+****
+dump retry
+no_message_check
--- /dev/null
+# message error: ultimate retry when received_time = first failed time
+need_ipv4
+#
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250 OK
+MAIL FROM
+450 DELAY
+QUIT
+225 OK
+****
+exim -odi userx@x.y
+****
+dump retry
+# This is messy. To test a specific bug we want to set the received time
+# to be the same as the first failed time. Hacked up a perl script to do it.
+#
+sudo perl DIR/aux-fixed/TESTNUM.fudge
+****
+sleep 2
+server PORT_S
+220 Server ready
+EHLO
+250-server id
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+345 OK
+.
+*sleep 2
+****
+exim -q
+****
+no_msglog_check
--- /dev/null
+# @mx_any used in match_domains condition
+need_ipv4
+#
+exim -d -bt ph@mxt1.test.ex
+****
--- /dev/null
+# predata ACL
+exim -odi -bs
+mail from:<x@y>
+rcpt to:<userx@y>
+data
+quit
+****
+exim -odi -bs
+mail from:<postmaster@y>
+rcpt to:<userx@y>
+data
+Subject: testing
+.
+quit
+****
--- /dev/null
+# control = case{ful,less}_local_part
+exim -odi -bs
+mail from:<x@y>
+rcpt to:<Phil.Hazel@y>
+quit
+****
--- /dev/null
+# ACL for QUIT
+exim -bs
+mail from:<x@y>
+rcpt to:<a@y>
+rcpt to:<b@y>
+data
+.
+mail from:<x@y>
+rcpt to:<c@y>
+rset
+mail from:<x@y>
+rset
+mail from:<x@y>
+rcpt to:<d@y>
+data
+.
+quit
+****
+exim -bs -DLAST='deny message = Your message here'
+quit
+****
+exim -bs -DLAST=''
+mail from:<a@b>
+quit
+****
--- /dev/null
+# mailbox_size
+exim -odi userx
+Test 1
+****
+exim -odi -DMSIZE='mailbox_size = 10K' userx
+Test 2
+****
+exim -odi -DMSIZE='mailbox_size = ${if eq{1}{1}{20F}{}}' userx
+test 3
+****
+no_msglog_check
--- /dev/null
+# transport filter command fails to execute
+need_ipv4
+#
+exim -odi userx
+transport: t1
+Test 1
+****
+exim -odi userx
+transport: t2
+Test 2
+****
+server PORT_S
+220 Welcome
+EHLO
+250-Hello there
+250 SIZE
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+354 Send it
+****
+exim -odi userx
+transport: t3
+Test 3
+****
+no_msglog_check
--- /dev/null
+# check illegally placed ACL control modifiers
+exim -DACL=smtp_data -DCONTROL=submission -bs
+mail from:<>
+rcpt to:<userx@x.y>
+data
+Rhubarb
+.
+quit
+****
+exim -DACL=smtp_predata -DCONTROL=submission -bs
+mail from:<>
+rcpt to:<userx@x.y>
+data
+Rhubarb
+.
+quit
+****
+exim -DACL=smtp_helo -DCONTROL=submission -bs
+ehlo xxx
+quit
+****
+exim -DACL=smtp_quit -DCONTROL=freeze -bs
+quit
+****
+1
+exim -DACL=not_smtp -DCONTROL=enforce_sync -oep userx
+****
+exim -DACL=smtp_connect -DCONTROL=queue_only -bs
+****
+no_msglog_check
--- /dev/null
+# forbid_sieve_filter and forbid_exim_filter
+exim -odi sieve-filter@test.ex exim-filter@test.ex
+****
+exim -DFORBID=forbid_sieve_filter -odi sieve-filter@test.ex exim-filter@test.ex
+****
+exim -DFORBID=forbid_exim_filter -odi sieve-filter@test.ex exim-filter@test.ex
+****
+exim -DALLOW= -odi sieve-filter@test.ex exim-filter@test.ex
+****
+no_msglog_check
--- /dev/null
+# verify = not_blind
+exim -odq -bs
+mail from:<>
+rcpt to:<userx@dom.com>
+data
+To: a@b.c, himself <userx@dom.com>
+.
+quit
+****
+exim -odq -bs
+mail from:<>
+rcpt to:<userx@dom.com>
+data
+To: a@b.c, himself <usery@dom.com>
+.
+quit
+****
+exim -DERROR_DETAILS=smtp_return_error_details -odq -bs
+mail from:<>
+rcpt to:<userx@dom.com>
+data
+To: a@b.c, himself <usery@dom.com>
+.
+quit
+****
+exim -odq -bs
+mail from:<>
+rcpt to:<userx@dom.com>
+rcpt to:<usery@dom.com>
+data
+To: a@b.c, himself <usery@dom.com>
+Cc: unqualified, userx@dom.com, x@y.z
+.
+quit
+****
+exim -odq -bs
+mail from:<>
+rcpt to:<userx@dom.com>
+rcpt to:<usery@dom.com>
+rcpt to:<userz@dom.com>
+data
+To: a@b.c, himself <usery@dom.com>
+Cc: unqualified, userx@dom.com, x@y.z
+.
+quit
+****
+exim -odq -bs
+mail from:<>
+rcpt to:<userx@dom.com>
+rcpt to:<usery@dom.com>
+data
+Resent-To: a@b.c, himself <usery@dom.com>
+Resent-Cc: unqualified, userx@dom.com, x@y.z
+To: an@other
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# errors_to and failing pipe
+exim -odi -f '<>' userx
+This is a test message
+****
--- /dev/null
+# list of keys in dnslists
+exim -bs
+****
--- /dev/null
+# -bf and -bF combined
+exim -bf DIR/aux-fixed/TESTNUM.ufilter -bF \
+ DIR/aux-fixed/TESTNUM.sfilter -f sen@d.e.r
+From: a.user@a.domain
+Subject: test 1
+
+Body content.
+****
--- /dev/null
+# very long messages from remote deliveries
+need_ipv4
+#
+server PORT_S
+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
+****
+exim -odi userx ph11 ph12 ph13 ph14 ph15 ph16 ph17 ph18 ph19 ph20 ph21 ph22 ph23 ph24 ph25
+****
+no_msglog_check
--- /dev/null
+# hosts_max_try_hardlimit
+need_ipv4
+#
+exim -odi userx
+****
+sleep 2
+exim -d-all+transport -qf
+****
+sudo rm spool/db/retry
+exim -odi userx
+****
+sleep 2
+exim -d-all+transport -qf -DHARDLIMIT=hosts_max_try_hardlimit=2
+****
+no_msglog_check
--- /dev/null
+# $acl_verify_message
+exim -bh 1.2.3.4
+ehlo a.b.c.d
+mail from:<>
+rcpt to:<x@mxt2.test.ex>
+quit
+****
--- /dev/null
+# local user name containing space
+exim -odq userx
+Testing
+.
+****
+exim -d -bp
+****
+exim -Mvh $msg1
+****
+exim -q
+****
--- /dev/null
+# "unseen" combined with "one_time"
+1
+exim -q
+****
--- /dev/null
+# homonymic batched addresses with defer (stop duplicate delivery)
+exim -odi toplevel
+****
+exim -qf
+****
+exim -qf
+****
+no_msglog_check
--- /dev/null
+# control = suppress_local_fixups
+exim -odi -bs
+mail from:<>
+rcpt to:<userx@dom.com>
+data
+.
+quit
+****
+exim -odi -bs
+mail from:<>
+rcpt to:<usery@dom.com>
+data
+.
+quit
+****
--- /dev/null
+# Affixes in RCPT commands for recipient callouts
+need_ipv4
+#
+server PORT_S 8
+220 Welcome
+HELO
+250 Hi
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+*eof
+220 Welcome
+HELO
+250 Hi
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+*eof
+220 Welcome
+HELO
+250 Hi
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+*eof
+220 Welcome
+HELO
+250 Hi
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+*eof
+220 Welcome
+HELO
+250 Hi
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+*eof
+220 Welcome
+HELO
+250 Hi
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+*eof
+220 Welcome
+HELO
+250 Hi
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+*eof
+220 Welcome
+HELO
+250 Hi
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+QUIT
+250 OK
+****
+exim -odq -bs
+mail from:<>
+RCPT TO:<abc@include>
+RCPT TO:<abc@exclude>
+RCPT TO:<p+abc@include>
+RCPT TO:<p+abc@exclude>
+RCPT TO:<abc-s@include>
+RCPT TO:<abc-s@exclude>
+RCPT TO:<p+abc-s@include>
+RCPT TO:<p+abc-s@exclude>
+quit
+****
--- /dev/null
+# Missing IP addresses for 2nd host in smtp router
+need_ipv4
+#
+exim -odi userx
+****
--- /dev/null
+# Duplicate addresses that depend on previous routing (1)
+exim -odi bob alice
+****
+exim -odi alice bob
+****
--- /dev/null
+# Duplicate addresses that depend on previous routing (2)
+exim -odi abc xyz
+****
--- /dev/null
+# Timeouts in pipe with and without a transport filter
+exim -odi nofilter
+****
+exim -odi filter
+****
+exim -DTIMEOUTDEFER=timeout_defer -odi nofilter
+****
+exim -DTIMEOUTDEFER=timeout_defer -odi filter
+****
+no_msglog_check
--- /dev/null
+# Multiple headers_add in router
+exim -odi one two three four
+****
--- /dev/null
+# Simple CSA test
+exim -bh V4NET.9.8.7
+ehlo csa1.test.ex
+mail from:<>
+rset
+ehlo csa2.test.ex
+mail from:<>
+quit
+****
+exim -bh V4NET.9.8.8
+ehlo csa1.test.ex
+mail from:<>
+rset
+ehlo csa2.test.ex
+mail from:<>
+quit
+****
--- /dev/null
+# Timeout while actually writing the data for a message
+need_ipv4
+#
+server PORT_S
+220 Welcome
+EHLO
+250 Hi
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+DATA
+354 SEND
+*sleep 3
+****
+write test-data 20000x80
+mail from:<abc@xyz>
+RCPT TO:<def@pqr>
+DATA
+++++
+.
+quit
+****
+exim -v -odi -bs <test-data
+****
+no_msglog_check
--- /dev/null
+# def:variable with a value of "0"
+exim -bs
+quit
+****
--- /dev/null
+# callout with no transport
+need_ipv4
+#
+server PORT_S
+220 Welcome
+HELO
+250 Hi
+MAIL FROM
+250 OK
+RCPT TO
+550 unrouteable address
+QUIT
+221 Bye
+****
+exim -bs
+mail from:<unknown@x.x.x.x>
+rcpt to:<unknown@u.u.u.u>
+quit
+****
--- /dev/null
+# port specifications in list of hosts
+need_ipv4
+#
+exim -bt x@y
+****
+exim -odi x@y
+****
+no_msglog_check
--- /dev/null
+# -bh and non-canonical IPv6 addresses
+exim -bh 2001:ab8:37f:20::1.999
+****
+exim -DHL=host_lookup=* -bh V6NET:1234:5:6:7:8:abc:0d
+****
+exim -bh V6NET:ffff:836f:0a00:000a:0800:200a:c032
+****
--- /dev/null
+# recognizing IPv6 address in HELO/EHLO
+need_ipv6
+#
+# Incoming messages will be queued; deliver by queue run at the end.
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client HOSTIPV6 PORT_D
+??? 220
+ehlo [HOSTIPV6]
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+data
+??? 354
+To: userx@test.ex
+
+EHLO [HOSTIPV6]
+.
+??? 250
+ehlo [IPV6:HOSTIPV6]
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+data
+??? 354
+To: userx@test.ex
+
+EHLO [IPV6:HOSTIPV6]
+.
+??? 250
+ehlo [IPV6:V6NET:0:12:1:a00:20ff:fe86:a062]
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+data
+??? 354
+To: userx@test.ex
+
+EHLO [IPV6:V6NET:0:12:1:a00:20ff:fe86:a062]
+.
+??? 250
+ehlo HOSTIPV6
+??? 501
+quit
+??? 221
+****
+killdaemon
+# Wait for delivery process
+millisleep 500
+exim -q
+****
--- /dev/null
+# @ items in domain lists and host lists
+exim -bh V4NET.1.1.1
+mail from:<x@y>
+rcpt to:<1@[::1]>
+rcpt to:<6@mxt11a.test.ex>
+quit
+****
--- /dev/null
+# interface selection (v4 vs v6) in outgoing SMTP
+need_ipv4
+need_ipv6
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+hosts: 127.0.0.1
+interface: <; ::1 ; HOSTIPV4
+****
+exim userx@test.ex
+hosts: <; ::1
+interface: <; HOSTIPV6 ; HOSTIPV4
+****
+exim userx@test.ex
+hosts: <; ::1
+interface: <; ${if eq{0}{1}{HOSTIPV6}fail}
+****
+exim userx@test.ex
+hosts: <; ::1
+interface: <; ${if eq{0}{1}{HOSTIPV6}{ }}
+****
+exim userx@test.ex
+hosts: <; ::1
+interface: <; ${if
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# dns_ipv4_lookup and gethostbyname
+need_ipv4
+need_ipv6
+#
+1
+exim -bt userx@eximtesthost.ipv6.test.ex
+****
--- /dev/null
+# disable_ipv6
+need_ipv4
+need_ipv6
+#
+exim -d-all+dns -bt dnslookup@mx46.test.ex \
+ manualroute@test.ex \
+ dnslookup@v6.test.ex
+****
+2
+exim -DD6=disable_ipv6 -d-all+dns -bt dnslookup@mx46.test.ex \
+ manualroute@test.ex \
+ dnslookup@v6.test.ex
+****
+exim -DSERVER=server -bd -oX PORT_D
+****
+client HOSTIPV6 PORT_D
+??? 220
+quit
+??? 221
+****
+killdaemon
+exim -DSERVER=server -DD6=disable_ipv6 -bd -oX PORT_D
+****
+1
+client HOSTIPV6 PORT_D
+****
+killdaemon
--- /dev/null
+# local_interfaces, daemon_smtp_port, and -oX interactions
+need_ipv4
+need_ipv6
+#
+exim -d -bd -DSERVER=server -DPORT=daemon_smtp_port=PORT_D
+****
+killdaemon
+exim -d -bd -DSERVER=server -DPORT=daemon_smtp_port=PORT_D:PORT_D2
+****
+killdaemon
+exim -d -bd -DSERVER=server -DPORT=daemon_smtp_port=PORT_D:PORT_D2 -DIFACE='local_interfaces = <; ::0 ; 127.0.0.1.PORT_D4 ; 0.0.0.0'
+****
+killdaemon
+exim -d -bd -DSERVER=server -DPORT=daemon_smtp_port=PORT_D:PORT_D2 -DIFACE='local_interfaces = <; 0.0.0.0; 127.0.0.1.PORT_D4 ; ::0'
+****
+killdaemon
+exim -d -bd -DSERVER=server -DPORT=daemon_smtp_port=PORT_D:PORT_D2 -DIFACE='local_interfaces = <; HOSTIPV6'
+****
+killdaemon
+exim -d -bd -DSERVER=server -oX PORT_D3 -DPORT=daemon_smtp_port=PORT_D:PORT_D2 -DIFACE='local_interfaces = <; ::0 ; 127.0.0.1.PORT_D4 ; 0.0.0.0'
+****
+killdaemon
+exim -d -bd -DSERVER=server -oX '<; PORT_D3;PORT_D;127.0.0.1' -DPORT=daemon_smtp_port=PORT_D:PORT_D2 -DIFACE='local_interfaces = <; ::0 ; 127.0.0.1.PORT_D4 ; 0.0.0.0'
+****
+killdaemon
+exim -d -bd -DSERVER=server -oX '<; ::0.PORT_D; 0.0.0.0.PORT_D;0.0.0.0.PORT_D2'
+****
+killdaemon
--- /dev/null
+# exinext and ports/message-ids and IPv6
+need_ipv4
+#
+server PORT_S 2
+220 Server ready
+EHLO
+250-server id
+250 OK
+MAIL FROM
+450 Temporary error
+QUIT
+250 OK
+*eof
+220 Server ready
+EHLO
+250-server id
+250 OK
+MAIL FROM
+450 Temporary error
+QUIT
+250 OK
+****
+exim -odi userx@test.ex
+****
+dump retry
+exinext 127.0.0.1
+exinext ::1
+no_msglog_check
--- /dev/null
+support IPv6
--- /dev/null
+# TLS client: TLS setup fails - retry in clear
+#
+# For this first GnuTLS test, we do not obey "gnutls", so that Exim has to
+# create the GnuTLS paramter data for itself.
+#
+echo ==> Creating GnuTLS parameter data ... may take some time ...
+echo ==> Moving the mouse about may help ...
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim CALLER@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: TLS setup fails - don't retry in clear
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim CALLER@test.ex
+Testing
+****
+exim -DOPTION=hosts_require_tls=127.0.0.1 -qf
+****
+exim -DOPTION=tls_tempfail_tryclear=false -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS server: general
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<CALLER@test.ex>
+??? 250
+rcpt to:<CALLER@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message.
+.
+??? 250
+quit
+??? 221
+****
+client-gnutls HOSTIPV4 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+****
+client-gnutls HOSTIPV4 PORT_D DIR/aux-fixed/cert2 DIR/aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<CALLER@test.ex>
+??? 250
+rcpt to:<CALLER@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message from a verified host.
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -qf
+****
+exim -bh 10.0.0.1
+starttls
+quit
+****
--- /dev/null
+# TLS server: unavailable cipher
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-gnutls HOSTIPV4 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+quit
+??? 221
+****
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+helo rhu.barb
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message.
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -qf
+****
--- /dev/null
+# TLS server: TLS required
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+quit
+??? 221
+****
+client-gnutls HOSTIPV4 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test unencrypted message.
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -qf
+****
--- /dev/null
+# TLS server: accept for relay if encrypted
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@remote.test.ex>
+??? 550
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@remote.test.ex>
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -qf
+****
--- /dev/null
+# TLS server: timeout in TLS session
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
++++ 3
+****
+killdaemon
--- /dev/null
+# TLS client: log_smtp_confirmation
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: general
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim CALLER@test.ex
+Test message. Contains FF: ÿ
+****
+exim CALLER@test.ex abcd@test.ex xyz@test.ex
+Test message to two different hosts
+****
+exim -v -qf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# TLS client: hosts_avoid_tls
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: hosts_require_tls
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: require_ciphers
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: verify certificate from server - fails
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: multiple messages over one connection
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message 1
+****
+exim userx@test.ex
+Test message 2
+****
+exim -qqf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# TLS server: mandatory, optional, and revoked certificates
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+# No certificate, certificate required
+client-gnutls HOSTIPV4 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+****
+# No certificate, certificate optional at TLS time, required by ACL
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+helo rhu.barb
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+quit
+??? 221
+****
+# Good certificate, certificate required
+client-gnutls HOSTIPV4 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+quit
+??? 221
+****
+# Good certificate, certificate optional at TLS time, checked by ACL
+client-gnutls 127.0.0.1 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+quit
+??? 221
+****
+# Bad certificate, certificate required
+client-gnutls HOSTIPV4 PORT_D aux-fixed/cert1 aux-fixed/cert1
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+****
+# Bad certificate, certificate optional at TLS time, reject at ACL time
+client-gnutls 127.0.0.1 PORT_D aux-fixed/cert1 aux-fixed/cert1
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550-
+??? 550
+quit
+??? 221
+****
+killdaemon
+exim -DCRL=DIR/aux-fixed/crl.pem -DSERVER=server -bd -oX PORT_D
+****
+# Good but revoked certificate, certificate required
+client-gnutls HOSTIPV4 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+****
+# Revoked certificate, certificate optional at TLS time, reject at ACL time
+client-gnutls 127.0.0.1 PORT_D aux-fixed/cert1 aux-fixed/cert1
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550-
+??? 550
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+# TLS server: timeout after accepting STARTTLS
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls_wait
+??? 220
++++ 2
+??? 421
+****
+killdaemon
--- /dev/null
+# TLS client: timeout while setting up TLS
+gnutls
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-STARTTLS
+250 HELP
+STARTTLS
+220 Go ahead
+*sleep 2
+****
+exim -odi userx@domain1
+Test message
+****
+no_msglog_check
--- /dev/null
+# TLS client: hosts_nopass_tls
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message 1
+****
+exim userx@test.ex
+Test message 2
+****
+exim -qqf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# TLS: ACL encryption test
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message.
+.
+??? 250
+quit
+??? 221
+****
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+quit
+??? 221
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS server: -tls-on-connect
+gnutls
+exim -DSERVER=server -tls-on-connect -bd -oX PORT_D
+****
+client-gnutls -tls-on-connect 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message.
+.
+??? 250
+quit
+??? 221
+****
+client-gnutls -tls-on-connect HOSTIPV4 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message from a verified host.
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -qf
+****
--- /dev/null
+# TLS server: no certificate defined, client sends in clear
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx
+Test
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: 4xx response to STARTTLS
+gnutls
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250-STARTTLS
+250 PIPELINING
+STARTTLS
+450 temp problem
+QUIT
+250 OK
+****
+exim -DTRYCLEAR=tls_tempfail_tryclear=false -odi x@y
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250-STARTTLS
+250 PIPELINING
+STARTTLS
+450 temp problem
+MAIL FROM:
+250 OK
+RCPT TO:
+250 OK
+DATA
+354 Go ahead
+.
+250 OK
+QUIT
+250 OK
+****
+exim -qf
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250-STARTTLS
+250 PIPELINING
+STARTTLS
+450 temp problem
+QUIT
+250 OK
+****
+exim -DREQUIRE=hosts_require_tls=* -odi x@y
+****
+no_msglog_check
--- /dev/null
+# TLS server: help command in encrypted session
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-gnutls HOSTIPV4 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+help
+??? 214-
+??? 214
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+# TLS: ACL for STARTTLS
+gnutls
+exim -bs -oMa 10.9.8.10
+ehlo a.b.c
+starttls
+quit
+****
--- /dev/null
+# TLS server: empty/non-existent certificate file
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-gnutls HOSTIPV4 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+****
+killdaemon
+exim -DSERVER=server -DCERT=/non/exist -bd -oX PORT_D
+****
+client-gnutls HOSTIPV4 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 454
+****
+killdaemon
--- /dev/null
+# TLS server: tls_require_ciphers
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS: logging parameters for 2 different recipients
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim -odi userx usery
+****
+# Wait to allow delivery to finish before killing the daemon
+sleep 1
+killdaemon
--- /dev/null
+# TLS server & client: no certificate in client
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim usery@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# tls_on_connect_ports
+need_ipv4
+#
+gnutls
+exim -DSERVER=server -bd -oX PORT_D:PORT_D2:PORT_D3
+****
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+quit
+??? 221
+****
+client-gnutls -tls-on-connect 127.0.0.1 PORT_D2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+quit
+??? 221
+****
+killdaemon
+no_msglog_check
--- /dev/null
+support GnuTLS
+running IPv4
--- /dev/null
+# TLS client: TLS setup fails - retry in clear
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim CALLER@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: TLS setup fails - don't retry in clear
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim CALLER@test.ex
+Testing
+****
+exim -DOPTION=hosts_require_tls=127.0.0.1 -qf
+****
+exim -DOPTION=tls_tempfail_tryclear=false -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS server: general
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<CALLER@test.ex>
+??? 250
+rcpt to:<CALLER@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message.
+.
+??? 250
+quit
+??? 221
+****
+client-ssl HOSTIPV4 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+****
+client-ssl HOSTIPV4 PORT_D DIR/aux-fixed/cert2 DIR/aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<CALLER@test.ex>
+??? 250
+rcpt to:<CALLER@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message from a verified host.
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -qf
+****
+exim -bh 10.0.0.1
+starttls
+quit
+****
--- /dev/null
+# TLS server: unavailable cipher
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl HOSTIPV4 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+quit
+??? 221
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+helo rhu.barb
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message.
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -qf
+****
--- /dev/null
+# TLS server: TLS required
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+quit
+??? 221
+****
+client-ssl HOSTIPV4 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test unencrypted message.
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -qf
+****
--- /dev/null
+# TLS server: accept for relay if encrypted
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@remote.test.ex>
+??? 550
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@remote.test.ex>
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -qf
+****
--- /dev/null
+# TLS server: timeout in TLS session
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
++++ 3
+****
+killdaemon
--- /dev/null
+# TLS client: log_smtp_confirmation
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: general
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim CALLER@test.ex
+Test message. Contains FF: ÿ
+****
+exim CALLER@test.ex abcd@test.ex xyz@test.ex
+Test message to two different hosts
+****
+exim -v -qf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# TLS client: hosts_avoid_tls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: hosts_require_tls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: require_ciphers
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: verify certificate from server - fails
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: multiple messages over one connection
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message 1
+****
+exim userx@test.ex
+Test message 2
+****
+exim -qqf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# TLS server: mandatory, optional, and revoked certificates
+exim -DSERVER=server -bd -oX PORT_D
+****
+# No certificate, certificate required
+client-ssl HOSTIPV4 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+****
+# No certificate, certificate optional at TLS time, required by ACL
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+helo rhu.barb
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+quit
+??? 221
+****
+# Good certificate, certificate required
+client-ssl HOSTIPV4 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+quit
+??? 221
+****
+# Good certificate, certificate optional at TLS time, checked by ACL
+client-ssl 127.0.0.1 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+quit
+??? 221
+****
+# Bad certificate, certificate required
+client-ssl HOSTIPV4 PORT_D aux-fixed/cert1 aux-fixed/cert1
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+****
+# Bad certificate, certificate optional at TLS time, reject at ACL time
+client-ssl 127.0.0.1 PORT_D aux-fixed/cert1 aux-fixed/cert1
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550-
+??? 550
+quit
+??? 221
+****
+killdaemon
+exim -DCRL=DIR/aux-fixed/crl.pem -DSERVER=server -bd -oX PORT_D
+****
+# Good but revoked certificate, certificate required
+client-ssl HOSTIPV4 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+****
+# Revoked certificate, certificate optional at TLS time, reject at ACL time
+client-ssl 127.0.0.1 PORT_D aux-fixed/cert1 aux-fixed/cert1
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550-
+??? 550
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+# TLS server: timeout after accepting STARTTLS
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls_wait
+??? 220
++++ 2
+??? 421
+****
+killdaemon
--- /dev/null
+# TLS client: timeout while setting up TLS
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-STARTTLS
+250 HELP
+STARTTLS
+220 Go ahead
+*sleep 2
+****
+exim -odi userx@domain1
+Test message
+****
+no_msglog_check
--- /dev/null
+# TLS client: hosts_nopass_tls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message 1
+****
+exim userx@test.ex
+Test message 2
+****
+exim -qqf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# TLS: ACL encryption test
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message.
+.
+??? 250
+quit
+??? 221
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 550
+quit
+??? 221
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS server: -tls-on-connect
+exim -DSERVER=server -tls-on-connect -bd -oX PORT_D
+****
+client-ssl -tls-on-connect 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message.
+.
+??? 250
+quit
+??? 221
+****
+client-ssl -tls-on-connect HOSTIPV4 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+mail from:<userx@test.ex>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+DATA
+??? 3
+This is a test encrypted message from a verified host.
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -qf
+****
--- /dev/null
+# TLS server: no certificate defined, client sends in clear
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx
+Test
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS client: 4xx response to STARTTLS
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250-STARTTLS
+250 PIPELINING
+STARTTLS
+450 temp problem
+QUIT
+250 OK
+****
+exim -DTRYCLEAR=tls_tempfail_tryclear=false -odi x@y
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250-STARTTLS
+250 PIPELINING
+STARTTLS
+450 temp problem
+MAIL FROM:
+250 OK
+RCPT TO:
+250 OK
+DATA
+354 Go ahead
+.
+250 OK
+QUIT
+250 OK
+****
+exim -qf
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250-STARTTLS
+250 PIPELINING
+STARTTLS
+450 temp problem
+QUIT
+250 OK
+****
+exim -DREQUIRE=hosts_require_tls=* -odi x@y
+****
+no_msglog_check
--- /dev/null
+# TLS server: help command in encrypted session
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl HOSTIPV4 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+help
+??? 214-
+??? 214
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+# TLS: ACL for STARTTLS
+exim -bs -oMa 10.9.8.10
+ehlo a.b.c
+starttls
+quit
+****
--- /dev/null
+# TLS server: empty/non-existent certificate file
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl HOSTIPV4 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+****
+killdaemon
+exim -DSERVER=server -DCERT=/non/exist -bd -oX PORT_D
+****
+client-ssl HOSTIPV4 PORT_D aux-fixed/cert2 aux-fixed/cert2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 454
+****
+killdaemon
--- /dev/null
+# TLS server: tls_require_ciphers
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS: logging parameters for 2 different recipients
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim -odi userx usery
+****
+# Wait to allow delivery to finish before killing the daemon
+sleep 1
+killdaemon
--- /dev/null
+# TLS server & client: no certificate in client
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim usery@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# tls_on_connect_ports
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D:PORT_D2:PORT_D3
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+quit
+??? 221
+****
+client-ssl -tls-on-connect 127.0.0.1 PORT_D2
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250
+quit
+??? 221
+****
+killdaemon
+no_msglog_check
--- /dev/null
+# TLS: DH ciphers for OpenSSL
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+support OpenSSL
+running IPv4
--- /dev/null
+# dnsdb lookup in string expansions
+
+exim -be
+test.ex ${lookup dnsdb{test.ex}{$value}fail}
+txt=test.ex ${lookup dnsdb{txt=test.ex}{$value}fail}
+a=black-1.test.ex ${lookup dnsdb{a=black-1.test.ex}{$value}fail}
+xxx=test.ex ${lookup dnsdb{xxx=test.ex}{$value}fail}
+a=localhost.test.ex ${lookup dnsdb{a=localhost.test.ex}{$value}fail}
+cname=alias-eximtesthost.test.ex ${lookup dnsdb{cname=alias-eximtesthost.test.ex}{$value}fail}
+ns=test.ex ${lookup dnsdb{ns=test.ex}{$value}fail}
+zns=x.y.z.test.ex ${lookup dnsdb{zns=x.y.z.test.ex}{$value}fail}
+mx=mxt1.test.ex ${lookup dnsdb{mx=mxt1.test.ex}{$value}fail}
+mx=mxt3.test.ex ${lookup dnsdb{mx=mxt3.test.ex}{$value}fail}
+mxh=mxt1.test.ex ${lookup dnsdb{mxh=mxt1.test.ex}{$value}fail}
+ptr=V4NET.0.0.1 ${lookup dnsdb{ptr=V4NET.0.0.1}{$value}fail}
+ptr=ptr.test.ex ${lookup dnsdb{ptr=ptr.test.ex}{$value}fail}
+srv=_smtp._tcp.srv01.test.ex ${lookup dnsdb{srv=_smtp._tcp.srv01.test.ex}{$value}{fail}}
+srv=_smtp._tcp.nosmtp.test.ex ${lookup dnsdb{srv=_smtp._tcp.nosmtp.test.ex}{$value}{fail}}
+
+csa=csa1.test.ex ${lookup dnsdb{csa=csa1.test.ex}}
+csa=csa2.test.ex ${lookup dnsdb{csa=csa2.test.ex}}
+
+# DNS lookups with multiple items
+
+ten-1:ten2 ${lookup dnsdb{a=ten-1.test.ex:ten-2.test.ex}}
+ten-1:defer:ten2 ${lookup dnsdb{a=ten-1.test.ex:test.again.dns:ten-2.test.ex}}
+ten-1|ten2 ${lookup dnsdb{a=<|ten-1.test.ex|ten-2.test.ex}}
+mxt1;mxt2 | output ${lookup dnsdb{>|mx=<;mxt1.test.ex;mxt2.test.ex}}
+mxt1;mxt2 | output ${lookup dnsdb{>|mxh=<;mxt1.test.ex;mxt2.test.ex}}
+13/14 rbl ${lookup dnsdb{> 13.12.11.V4NET.rbl.test.ex:13.12.11.V4NET.rbl.test.ex}}
+double ptr ${lookup dnsdb{ptr=V4NET.0.0.1:V4NET.0.0.2}}
+ten-1:bad ${lookup dnsdb{ a = ten-1.test.ex:badbad.test.ex}{$value}{FAILED}}
+bad:bad ${lookup dnsdb{ a = <; badbad.test.ex ; badbad.test.ex}{$value}{FAILED}}
+
+defer:defer ${lookup dnsdb{a=test.again.dns:test.again.dns}}
+defer_lax:ten-1 ${lookup dnsdb{a=test.again.dns:ten-1.test.ex}}
+defer_lax:ten-1 ${lookup dnsdb{defer_lax,a=test.again.dns:ten-1.test.ex}}
+defer_never:ten-1 ${lookup dnsdb{defer_never,a=test.again.dns:ten-1.test.ex}}
+defer_never:defer ${lookup dnsdb{defer_never,a=test.again.dns:test.again.dns}}
+defer_strict:ten-1 ${lookup dnsdb{defer_strict,a=test.again.dns:ten-1.test.ex}}
+****
--- /dev/null
+# query-style lookup in domains, local_parts, senders
+exim -d -bt test.ex@test.ex unknown@test.ex
+****
+2
+exim -f a@b.c -bt test.ex@test.ex unknown@test.ex
+****
--- /dev/null
+lookup dnsdb
--- /dev/null
+# dnsdb ipv6 lookup in string expansions
+
+exim -be
+ptr=V6NET:0:12:1:a00:20ff:fe86:a062 ${lookup dnsdb {ptr=<;V6NET:0:12:1:a00:20ff:fe86:a062}{$value}{fail}}
+ptr=V6NET:0:12:1:a00:20ff:fe86:a062 ${lookup dnsdb {ptr=V6NET:0:12:1:a00:20ff:fe86:a062}{$value}{fail}}
+****
--- /dev/null
+support IPv6
+lookup dnsdb
--- /dev/null
+# DBM files and exim_dbmbuild
+# This tests not only the exim_dbmbuild utility, but also dbm lookups.
+
+write test-dbm-input 1x10000=xxxxxxxx:_ 2x512=_
+++++
+****
+dbmbuild test-dbm-input test-dbm-file
+exim -be
+lsearch: ${lookup{xxxxxxxx}lsearch{DIR/test-dbm-input}}
+dbm: ${lookup{xxxxxxxx}dbm{DIR/test-dbm-file}}
+****
+write test-dbm-input 1x20000=xxxxxxxx:_ 2x512=_
+++++
+****
+dbmbuild test-dbm-input test-dbm-file
+write test-dbm-input 1x19999=xxxxxxxx:_ 4x19999=_ 1x50=_
+++++
+****
+dbmbuild test-dbm-input test-dbm-file
+write test-dbm-input
+abc: [abc]
+#ignored
+"abc:" [abc:]
+"#xyz:": [#xyz:]
+"a \"b\" c" [a "b" c]
+++++
+****
+dbmbuild test-dbm-input test-dbm-file
+exim -be
+${lookup{abc}dbm{DIR/test-dbm-file}}
+${lookup{abc:}dbm{DIR/test-dbm-file}}
+${lookup{#xyz:}dbm{DIR/test-dbm-file}}
+${lookup{a "b" c}dbm{DIR/test-dbm-file}}
+****
--- /dev/null
+lookup dbm
--- /dev/null
+# cdb lookup
+exim -be
+${lookup{first}cdb{DIR/aux-fixed/TESTNUM.cdb}}
+${lookup{first}cdb{DIR/aux-fixed/TESTNUM.cdb}{$value}fail}
+${lookup{fail}cdb{DIR/aux-fixed/TESTNUM.cdb}{$value}{failure value}}
+${lookup{fail}cdb{DIR/aux-fixed/TESTNUM.cdb}{$value}fail}
+${lookup{second}cdb{DIR/aux-fixed/TESTNUM.cdb}{$value}fail}
+${extract{A}{${lookup{second}cdb{DIR/aux-fixed/TESTNUM.cdb}{$value}fail}}}
+${extract{B}{${lookup{second}cdb{DIR/aux-fixed/TESTNUM.cdb}{$value}fail}}}
+${extract{C}{${lookup{second}cdb{DIR/aux-fixed/TESTNUM.cdb}{$value}fail}}{$value}fail}
+****
--- /dev/null
+lookup cdb
--- /dev/null
+# dsearch lookup
+exim -be
+${lookup{TESTNUM.tst}dsearch{DIR/aux-fixed}{$value}{FAIL}}
+${lookup{TESTNUM.TST}dsearch{DIR/aux-fixed}{$value}{FAIL}}
+${lookup{TESTNUM.TST}dsearch{DIR/AUX-fixed}{$value}{FAIL}}
+****
--- /dev/null
+# dsearch in domain list
+2
+exim -bt xxx@okdomain yyy@notokdomain zzz@dom/mod
+****
--- /dev/null
+lookup dsearch
--- /dev/null
+# sqlite lookups
+exim -d-all+lookup -be
+${lookup sqlite{DIR/aux-fixed/sqlitedb select name from them where id='userx';}}
+${lookup sqlite{DIR/aux-fixed/sqlitedb select name from them where id='userx';}}
+${lookup sqlite{DIR/aux-fixed/sqlitedb select name from them where id='xxxx';}}
+${lookup sqlite{DIR/aux-fixed/sqlitedb select name from them where id='nothing';}}
+${lookup sqlite{DIR/aux-fixed/sqlitedb select id,name from them where id='nothing';}}
+${lookup sqlite{DIR/aux-fixed/sqlitedb select * from them where id='quote2';}}
+${lookup sqlite{DIR/aux-fixed/sqlitedb select * from them where id='newline';}}
+${lookup sqlite{DIR/aux-fixed/sqlitedb select * from them where id='tab';}}
+${lookup sqlite{DIR/aux-fixed/sqlitedb select * from them where id='its';}}
+${lookup sqlite{DIR/aux-fixed/sqlitedb select * from them where name='${quote_sqlite:it's}';}}
+****
+exim -d -bh 10.0.0.0
+mail from:<a@b>
+rcpt to:<c@d>
+rcpt to:<c@d>
+quit
+****
+exim -d -bh 10.10.10.10
+mail from:<a@b>
+rcpt to:<c@d>
+rcpt to:<c@d>
+quit
+****
+exim -odi -d userx
+Test message
+.
+****
+exim -d-all+lookup -be
+${lookup sqlite{DIR/aux-fixed/sqlitedb select name from them where id='userx';}}
+****
--- /dev/null
+lookup sqlite
--- /dev/null
+# Embedded Perl
+exim -be
+${perl{foo}}
+${perl{foo}{arg1}}
+${perl{foo_undef}}
+${perl{foo_die}}
+${perl{foo_warn}}
+${perl{unknown}}
+${perl{readvar}{primary_hostname}}
+${perl{readvar}{notexists}}
+
+${perl}
+${perl{foo}{1}{2}{3}{4}{5}{6}{7}{8}}
+${perl{foo}{1}{2}{3}{4}{5}{6}{7}{8}{9}}
+
+${perl{return_scalar}}
+${perl{return_list}}
+${perl{return_variable_vector}}
+${perl{return_hash}}
+
+$tod_full // ${perl{change_locale}} // $tod_full
+****
+exim -d-all+expand -be
+${perl{foo}{arg1}}
+${perl{foo_undef}}
+${perl{debug_write}{debug from Perl\n}}
+${perl{log_write}{log from Perl}}
+****
+exim -v -bs
+ehlo x.y.z
+mail from:<>
+rcpt to:<abc@x.y.z>
+quit
+****
+exim -bh 10.0.0.1
+ehlo x.y.z
+mail from:<>
+rcpt to:<abc@x.y.z>
+quit
+****
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+helo x.y.z
+??? 250
+mail from:<>
+??? 250
+rcpt to:<abc@x.y.z>
+??? 250
+quit
+??? 221
+****
+killdaemon
+exim -be
+${perl{no_warn}}
+${perl{foo_warn}}
+****
+no_msglog_check
--- /dev/null
+support Perl
--- /dev/null
+# dlfunc expansion
+exim -be
+${dlfunc{DIR/bin/loaded}{dltest}}
+${dlfunc{DIR/bin/loaded}{dltest}{one argument}}
+${dlfunc{DIR/bin/loaded}{dltest}{1}{2}}
+${dlfunc{DIR/bin/loaded}{dltest}{1}{2}{3}}
+****
--- /dev/null
+support Expand_dlfunc
--- /dev/null
+# testdb lookups
+
+exim -be
+match_ip: 12 ${if match_ip{10.11.12.13}{testdb;something}}
+match_ip: 13 ${if match_ip{10.11.12.13}{testdb;fail}}
+****
--- /dev/null
+# $sender_host_name - no auto lookup in query-style lookups
+exim -d -bh 10.0.0.1
+****
+exim -d -bh 10.0.0.2
+****
--- /dev/null
+# ACL defer tests
+exim -bh 1.1.1.1
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
+exim -bh 1.1.2.1
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
+exim -bh 1.1.3.1
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
--- /dev/null
+# Lookup defer (senders)
+exim -odi userx@test.ex
+****
+no_msglog_check
--- /dev/null
+# Lookup defer (sender_reject)
+exim -bh 1.2.3.4
+mail from:<userx@somehost.example.com>
+rcpt to:<x@y>
+quit
--- /dev/null
+# lookup defer (senders and hosts conditions in ACL)
+exim -bh 1.2.3.4
+mail from:<userx@external.test.ex>
+rcpt to:<userx@test.ex>
+quit
+****
+exim -bh 4.3.2.1
+mail from:<userx@external.test.ex>
+rcpt to:<userx@test.ex>
+quit
+****
--- /dev/null
+# defer in hold_domains, queue_domains
+exim -odi a@test.ex b@other.domain c@hold.remote.ex d@hold2.remote.ex e@queue.go.remote.ex f@queue2.go.remote.ex
+****
+1
+exim -bv a@test.ex b@other.domain
+****
+no_message_check
+no_msglog_check
--- /dev/null
+# defer in domains, local_parts, senders, condition
+exim -odi r1@r1.ex r2@r2.ex r3@r3.ex r4@r4.ex d1@d1.ex d2@d2.ex d3@d3.ex d4@d4.ex
+****
+no_message_check
+no_msglog_check
--- /dev/null
+# defer in percent_hack_domains, relay_domains
+exim -bh V4NET.0.0.1
+ehlo remote.host
+mail from:<user@remote.host>
+rcpt to:<a@test.ex>
+rcpt to:<a@other.ex>
+rcpt to:<a%b@testhack.ex>
+rcpt to:<a%b@test.ex>
+rcpt to:<a%b@testhack2.ex>
+rcpt to:<a@yesrelay.ex>
+rcpt to:<a@norelay.ex>
+rcpt to:<a%yesrelay.ex@testhack.ex>
+rcpt to:<a%norelay.ex@testhack.ex>
+quit
+****
--- /dev/null
+# defer in mx_domains
+need_ipv4
+#
+exim -odi x@mxt7.test.ex x@ten-1.test.ex
+****
+no_msglog_check
--- /dev/null
+# named domain lists - lookup defer
+1
+exim -d -bt userx@test.ex
+****
--- /dev/null
+# reset search_error_message for next router
+exim -bs
+mail from:<userx@test.ex>
+rcpt to:<userx@test.again.dns>
+quit
+****
+exim -bh 1.2.3.4
+mail from:<userx@test.ex>
+rcpt to:<userx@test.again.dns>
+quit
+****
+exim -bh 1.2.3.4
+mail from:<userx@test.ex>
+rcpt to:<r1-userx@test.again.dns>
+quit
+****
--- /dev/null
+# lookup caching all
+exim -d -be
+${lookup{list}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+${lookup{list}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+${lookup{root}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+${lookup{root}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+${lookup{list}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+
+${lookup testdb {something}{$value}{NOT FOUND}}
+${lookup testdb {something}{$value}{NOT FOUND}}
+${lookup testdb {nocache}{$value}{NOT FOUND}}
+${lookup testdb {something}{$value}{NOT FOUND}}
+
+${lookup{list}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+${lookup{root}lsearch{DIR/aux-fixed/TESTNUM.aliases}{$value}{NOT FOUND}}
+****
--- /dev/null
+# address list matching an empty address
+exim -bs
+helo x.y.z
+mail from:<>
+rset
+mail from:<x@y>
+quit
+****
--- /dev/null
+lookup testdb
--- /dev/null
+# crypteq expansions
+
+exim -be
+BadCrypt: ${if crypteq{MySecret}{}{yes}{no}}
+MySecret: ${if crypteq{MySecret}{azrazPWCQJhyg}{yes}{no}}
+MySecret: ${if crypteq{MySecret}{aarazPWCQJhyg}{yes}{no}}
+MySecret: ${if crypteq{MySecret}{\{crypt\}azrazPWCQJhyg}{yes}{no}}
+MySecret: ${if crypteq{MySecret}{\{CRYPT\}zzrazPWCQJhyg}{yes}{no}}
+
+crypt16: ${if crypteq{MySecret}{\{crypt16\}azrazPWCQJhyg}{yes}{no}}
+crypt16: ${if crypteq{MySecretRhubarb}{\{crypt\}azrazPWCQJhyg}{yes}{no}}
+crypt16: ${if crypteq{MySecretRhubarb}{\{crypt16\}azrazPWCQJhyg}{yes}{no}}
+crypt16: ${if crypteq{MySecretRhubarb}{\{CRYPT16\}azrazPWCQJhygdJWzb77lQMA}{yes}{no}}
+
+test: ${if crypteq{test}{\{md5\}CY9rzUYh03PK3k6DJie09g==}{yes}{no}}
+test: ${if crypteq{test}{\{MD5\}CY9rzUYh03PK3k6DJie09g==}{yes}{no}}
+test: ${if crypteq{test}{\{md5\}AY9rzUYh03PK3k6DJie09g==}{yes}{no}}
+test: ${if crypteq{test}{\{md5\}098f6bcd4621d373cade4e832627b4f6}{yes}{no}}
+test: ${if crypteq{test}{\{md5\}198f6bcd4621d373cade4e832627b4f6}{yes}{no}}
+test: ${if crypteq{test}{\{md5\}098f6bcd4621d373cade4e832627b4f}{yes}{no}}
+
+abc: ${if crypteq{abc}{\{sha1\}A9993E364706816ABA3E25717850C26C9CD0D89D}{yes}{no}}
+abc: ${if crypteq{abc}{\{SHA1\}A9993E364706816ABA3E25717850C26C9CD0D89D}{yes}{no}}
+abc: ${if crypteq{abc}{\{sha1\}qZk+NkcGgWq6PiVxeFDCbJzQ2J0=}{yes}{no}}
+abd: ${if crypteq{abd}{\{sha1\}A9993E364706816ABA3E25717850C26C9CD0D89D}{yes}{no}}
+
+# Combinations
+
+Y: ${if and {{crypteq{MySecret}{azrazPWCQJhyg}}{exists{/etc/passwd}}}{Y}{N}}
+Y: ${if or {{crypteq{MySecret}{azrazQWCQJhyg}}{exists{/etc/passwd}}}{Y}{N}}
+Y: ${if or {{crypteq{MySecret}{azrazPWCQJhyg}}{exists{/etc/pxsswd}}}{Y}{N}}
+N: ${if or {{crypteq{MySecret}{azrazQWCQJhyg}}{exists{/etc/pxsswd}}}{Y}{N}}
+N: ${if and {{crypteq{MySecret}{azrazQWCQJhyg}}{exists{/etc/passwd}}}{Y}{N}}
+****
--- /dev/null
+support crypteq
--- /dev/null
+# plaintext server tests
+exim -bh 10.0.0.2
+mail from:<junk@jink.jonk.test.ex>
+rset
+vrfy userx@test.ex
+expn list@test.ex
+etrn #abcd
+quit
+****
+exim -bh 10.0.0.1
+ehlo test.host
+vrfy userx@test.ex
+expn list@test.ex
+etrn abcd
+mail from:<junk@jink.jonk.test.ex>
+rcpt to:<userx@test.ex>
+noop
+rset
+auth mylogin dXNlcnggc2VjcmV0
+auth mylogin dXNlcnggc2VjcmV0
+mail from:<junk@jink.jonk.test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<userx@cus.cam.ac.uk>
+rset
+vrfy userx@test.ex
+expn list@test.ex
+etrn #abcd
+noop
+auth mylogin dXNlcnggc2VjcmV0
+quit
+****
+exim -bh 10.0.0.3
+ehlo test.host
+mail from:<junk@jink.jonk.test.ex>
+rcpt to:<userx@cus.cam.ac.uk>
+rset
+auth mylogin dXNlcnggc2VjcmV0
+mail from:<junk@jink.jonk.test.ex>
+rcpt to:<userx@cus.cam.ac.uk>
+quit
+****
+exim -odi -bs -oMa 10.0.0.3
+ehlo testclient.ex
+mail from:<userx@cus.cam.ac.uk>
+rcpt to:<userx@test.ex>
+data
+Testing unauthenticated.
+.
+mail from:<userx@cus.cam.ac.uk> auth=auth@cus.cam.ac.uk
+rcpt to:<userx@test.ex>
+data
+Testing unauthenticated (2).
+.
+auth mylogin dXNlcnggc2VjcmV0
+mail from:<userx@cus.cam.ac.uk>
+rcpt to:<userx@test.ex>
+data
+Testing authenticated.
+.
+mail from:<userx@cus.cam.ac.uk> auth=auth@cus.cam.ac.uk
+rcpt to:<userx@test.ex>
+data
+Testing authenticated (2).
+.
+mail from:<userx@cus.cam.ac.uk> auth=au+zzth@cus.cam.ac.uk
+rset
+mail from:<userx@cus.cam.ac.uk> auth=<>
+rcpt to:<userx@test.ex>
+data
+Testing authenticated (3).
+.
+quit
+****
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+auth plain AHVzZXJ4AHNlY3JldA==
+quit
+****
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+auth defer AHVzZXJ4AHNlY3JldA==
+quit
+****
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+auth plain
+AHVzZXJ4AHNlY3JldA==
+quit
+****
+exim -odi -bs -oMa 10.0.0.1
+ehlo test.host
+AUTH LOGIN
+dXNlcng=
+c2VjcmV0
+mail from:<userx@cus.cam.ac.uk>
+rcpt to:<userx@test.ex>
+data
+Testing authenticated.
+.
+quit
+****
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+AUTH LOGIN
+dXNlcngAc2VjcmV0
+quit
+****
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+AUTH LOGIN dXNlcngAc2VjcmV0
+quit
+****
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+AUTH LOGIN dXNlcng=
+c2VjcmV0
+quit
+****
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+AUTH LOGIN
+dXNlcng=
+*
+quit
+****
+exim -bh 10.0.0.4
+ehlo test.host
+quit
+****
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+auth plain AGVzZXJ4AHNlY3JldA==
+quit
+****
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+auth explain
+AHVzZXJ4AHNlY3JldA==
+quit
+****
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+auth expanded
+AHVzZXJ4AHNlY3JldA==
+quit
+****
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+auth expandfail
+AHVzZXJ4AHNlY3JldA==
+quit
+****
+exim -bs -oMa 10.0.0.2
+ehlo test.host
+auth expandfail
+AHVzZXJ4AHNlY3JldA==
+quit
+****
+1
+exim -bs -oMa 10.0.0.1
+ehlo test.host
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+auth expanded AHVzZXJ4AHNlY3JlVw==
+****
+exim -odi -bs -oMa 10.0.0.5
+ehlo testing.testing
+mail from:<x@y>
+rcpt to:<userx@test.ex>
+data
+Without authenticating
+.
+auth mylogin dXNlcnggc2VjcmV0
+mail from:<x@y>
+rcpt to:<userx@test.ex>
+data
+Authentication failed
+.
+auth mylogin dXNlcnggc2VjcmV0
+mail from:<x@y>
+rcpt to:<userx@test.ex>
+data
+Authentication succeeded
+.
+quit
+****
+exim -odi -bs -oMa 10.0.0.1
+ehlo test.host
+AUTH LOGIN
+
+c2VjcmV0
+quit
+****
+exim -d -odi -bs -oMa 10.0.0.5
+ehlo testing.testing
+auth mylogin dXNlcnggc2VjcmV0
+quit
+****
+no_msglog_check
--- /dev/null
+# plaintext client tests
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH LOGIN
+AUTH LOGIN
+334 VXNlciBOYW1l
+dXNlcng
+334 UGFzc3dvcmQ=
+c2VjcmV0
+235 Authentication successful
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx@domain.com
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH PLAIN
+AUTH PLAIN AHVzZXJ4AHNlY3JldA==
+235 Authentication successful
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx@domain.com
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH PLAIN
+AUTH PLAIN AHVzZXJ4AHNlY3JldA==
+535 Sorry, authentication failed
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx@domain.com
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH LOGIN
+AUTH LOGIN
+****
+exim -odi userx@domain.com
+.
+****
+# Authentication required, but fails
+# Get rid of retry first
+sudo rm spool/db/*
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH PLAIN
+AUTH PLAIN AHVzZXJ4AHNlY3JldA==
+535 Sorry, authentication failed
+QUIT
+250 OK
+****
+exim -odi userx@authdomain.com
+.
+****
+# Authentication required, but not offered
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+QUIT
+250 OK
+****
+exim -odi userx@authdomain.com
+.
+****
+# Forced AUTH sender
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH LOGIN
+AUTH LOGIN
+334 VXNlciBOYW1l
+dXNlcng
+334 UGFzc3dvcmQ=
+c2VjcmV0
+235 Authentication successful
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi forcesender@domain.com
+.
+****
+no_msglog_check
--- /dev/null
+# authentication (server_mail_auth_condition)
+exim -bs -oMa 10.0.0.2
+ehlo testing.ex
+auth plain AHVzZXJ4AHNlY3JldA==
+mail from:<userx@test.ex> AUTH=xyz@test.ex
+quit
+****
+exim -bs -oMa 10.0.0.2
+ehlo testing.ex
+auth plain AHVzZXJ5AGFiPw==
+mail from:<userx@test.ex> AUTH=xyz@test.ex
+quit
+****
--- /dev/null
+# authentication (preservation of $authenticated_id)
+exim -odi -bs -oMa 10.0.0.2
+ehlo testing.ex
+auth plain AHVzZXJ4CgBzZWNyZXQ=
+auth plain AHVzZXJ4AHNlY3JldA==
+mail from:<userx@test.ex>
+rcpt to:<userx@test.ex>
+data
+Test data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# -Mas -Mai (trusted caller); also -v and auth data
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH PLAIN
+AUTH PLAIN AHVzZXJ4AHNlY3JldA==
+235 Authentication successful
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -v -odi userx@domain.com
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH PLAIN
+AUTH PLAIN AHVzZXJ4AHNlY3JldA==
+235 Authentication successful
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -v -oMas xxx@yyy -oMai zzz -odi userx@domain.com
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH LOGIN
+AUTH LOGIN
+300 User?
+dXNlcng=
+300 Password?
+c2VjcmV0
+235 Authentication successful
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -v -odi userx@domain.com
+.
+****
--- /dev/null
+# -Mas -Mai (untrusted caller)
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH PLAIN
+AUTH PLAIN AHVzZXJ4AHNlY3JldA==
+235 Authentication successful
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx@domain.com
+.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH PLAIN
+AUTH PLAIN AHVzZXJ4AHNlY3JldA==
+235 Authentication successful
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -oMas xxx@yyy -oMai zzz -odi userx@domain.com
+.
+****
--- /dev/null
+# server_advertise_condition
+exim -bs -oMa 10.0.0.2
+ehlo testing.ex
+auth first
+quit
+****
+exim -bs -oMa 10.0.0.3
+ehlo testing.ex
+auth first
+quit
+****
+exim -bs -oMa 10.0.0.2
+ehlo testing.ex
+auth second
+quit
+****
+exim -bs -oMa 10.0.0.3
+ehlo testing.ex
+auth second
+quit
+****
--- /dev/null
+# diagnose duplicate authenticator methods
+1
+exim -bP authenticators
+****
+exim -DOPTION= -bP authenticators
+****
+1
+exim -DOPTION=client_send=zzz -bP authenticators
+****
--- /dev/null
+# RBL blocking (postmaster exception, AUTH exception)
+exim -bh V4NET.11.12.14
+ehlo exim.test.ex
+mail from:postmaster@exim.test.ex
+rcpt to:<postmaster@exim.test.ex>
+rcpt to:userx@exim.test.ex
+data
+test data
+.
+quit
+****
+exim -bh V4NET.11.12.14
+ehlo exim.test.ex
+auth plain AHVzZXJ4AHNlY3JldA==
+mail from:postmaster@exim.test.ex
+rcpt to:<postmaster@exim.test.ex>
+rcpt to:userx@exim.test.ex
+data
+test data
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# SMTP syntax errors logging
+exim -bs
+ehlo a.b.c
+auth a%b
+auth plain AHVzZXJ4AHNlY3JldA==
+auth plain AHVzZXJ4AHNlY3JldA==
+mail from:<x@y> auth=a+b@c.d
+quit
+****
+exim -bs
+ehlo a.b.c
+mail from:<x@y>
+auth plain AHVzZXJ4AHNlY3JldA==
+quit
+****
--- /dev/null
+# ACL basic auth tests
+exim -bh 5.6.9.1
+mail from:<x@y>
+rcpt to:<x@y>
+rset
+ehlo rhu.barb
+auth PLAIN AHVzZXJ4AHNlY3JldA==
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
+exim -bh 5.6.10.1
+mail from:<x@y>
+rcpt to:<x@y>
+rset
+ehlo rhu.barb
+auth PLAIN AHVzZXJ4AHNlY3JldA==
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
+exim -bh 5.6.10.1
+ehlo rhu.barb
+auth LOGIN
+dXNlcng=
+c2VjcmV0
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
--- /dev/null
+# ACL with a "standard" auth configuration
+#
+# Not a relay host, but authenticated, sender address does verify.
+# accept postmaster@test.ex (postmaster at local domain)
+# accept userx@test.ex (good address in local domain)
+# deny x@y (bad address)
+# accept x@ten-1.test.ex (good relay address)
+# accept x@ten-2.test.ex (good address, not relay domain/host, but authenticated)
+exim -odi -oMa 10.0.0.0 -bs
+ehlo rhu.barb
+auth PLAIN AHBoMTAAc2VjcmV0
+mail from:<userx@test.ex>
+rcpt to:<postmaster@test.ex>
+rcpt to:<userx@test.ex>
+rcpt to:<x@y>
+rcpt to:<x@ten-1.test.ex>
+rcpt to:<x@ten-2.test.ex>
+data
+Message 6
+.
+quit
+****
--- /dev/null
+# bounce_sender_authentication
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH PLAIN
+AUTH PLAIN
+254 Authentication OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi x@test.ex
+****
--- /dev/null
+# smtp_accept_max_nonmail and failing auth
+1
+exim -bs
+ehlo x.y.z
+auth rhubarb
+auth rhubarb
+auth rhubarb
+auth rhubarb
+auth rhubarb
+****
--- /dev/null
+# control of AUTH= on MAIL by ACL
+exim -DS=# -bs
+ehlo xxxx
+mail from:<a@b> auth=c@d
+quit
+****
+exim -bs
+ehlo xxxx
+mail from:<a@b> auth=c@d
+quit
+****
+exim -DACL=accept -bs
+ehlo xxxx
+mail from:<a@b> auth=c@d
+quit
+****
+# No acl_smtp_mailauth, but authenticated
+exim -DS=# -bs
+ehlo xxxx
+auth plain abcd
+mail from:<a@b> auth=c@d
+quit
+****
+# Authenticated but ACL rejects
+exim -bs
+ehlo xxxx
+auth plain abcd
+mail from:<a@b> auth=c@d
+quit
+****
+# ACL allows some only
+exim -DACL=acl1 -bs
+ehlo xxxx
+mail from:<a@b> auth=bad@bad
+rset
+mail from:<a@b> auth=ok@ok
+quit
+****
--- /dev/null
+# control = submission with authentication
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+auth plain AHVzZXJuYW1lAG15c2VjcmV0
+??? 235
+mail from:<a@y>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+.
+??? 250
+mail from:<>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+# Wait for delivery process
+millisleep 500
+exim -DSERVER=server -DSUBMISSION_OPTIONS=/domain=another.domain -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+auth plain AHVzZXJuYW1lAG15c2VjcmV0
+??? 235
+mail from:<>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+# Wait for delivery process
+millisleep 500
+exim -DSERVER=server -DSUBMISSION_OPTIONS=/domain= -DAUTH_ID_DOMAIN=@auth.id.domain -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+auth plain AHVzZXJuYW1lAG15c2VjcmV0
+??? 235
+mail from:<>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+# Wait for delivery process
+millisleep 500
+exim -DSERVER=server -DSUBMISSION_OPTIONS=/domain= -DAUTH_ID_DOMAIN=@auth.id.domain -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+auth plain AHVzZXJuYW1lAG15c2VjcmV0
+??? 235
+mail from:<>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+From: abc@x.y.z
+.
+??? 250
+quit
+??? 221
+****
+killdaemon
+# Wait for delivery process
+millisleep 500
+exim -Mvh $msg1
+****
+exim -Mvh $msg2
+****
+exim -Mvh $msg3
+****
+exim -Mvh $msg4
+****
+exim -Mvh $msg5
+****
+no_msglog_check
--- /dev/null
+authenticator plaintext
--- /dev/null
+# TLS (server: TLS required before AUTH)
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl HOSTIPV4 PORT_D
+??? 220
+ehlo foobar
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+auth plain AHVzZXJ4AHNlY3JldA==
+??? 235
+quit
+??? 221
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo foobar
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+auth plain AHVzZXJ4AHNlY3JldA==
+??? 503
+starttls
+??? 220
+ehlo foobar
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+auth plain AHVzZXJ4AHNlY3JldA==
+??? 235
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+# TLS (server: AUTH PLAIN + TLS with multiple messages)
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message 1
+****
+exim userx@test.ex
+Test message 2
+****
+exim -qqf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# TLS (server: AUTH LOGIN + TLS with multiple messages)
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message 1
+****
+exim userx@test.ex
+Test message 2
+****
+exim -qqf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# TLS (server: tls_remember_esmtp)
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+ehlo foobar
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+auth plain AHVzZXJ4AHNlY3JldA==
+??? 503
+mail from:<x@y> size=1234
+??? 501
+quit
+??? 221
+****
+killdaemon
+exim -DSERVER=server -DREMEMBER=true -bd -oX PORT_D
+****
+client-gnutls 127.0.0.1 PORT_D
+??? 220
+ehlo foobar
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+auth plain AHVzZXJ4AHNlY3JldA==
+??? 235
+mail from:<x@y> size=1234
+??? 250
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+support GnuTLS
+authenticator plaintext
+running IPv4
--- /dev/null
+# TLS (server: TLS required before AUTH)
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl HOSTIPV4 PORT_D
+??? 220
+ehlo foobar
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+auth plain AHVzZXJ4AHNlY3JldA==
+??? 235
+quit
+??? 221
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo foobar
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+auth plain AHVzZXJ4AHNlY3JldA==
+??? 503
+starttls
+??? 220
+ehlo foobar
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+auth plain AHVzZXJ4AHNlY3JldA==
+??? 235
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+# TLS (server: AUTH PLAIN + TLS with multiple messages)
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message 1
+****
+exim userx@test.ex
+Test message 2
+****
+exim -qqf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# TLS (server: AUTH LOGIN + TLS with multiple messages)
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message 1
+****
+exim userx@test.ex
+Test message 2
+****
+exim -qqf
+****
+killdaemon
+exim -DSERVER=server -DNOTDAEMON -qf
+****
--- /dev/null
+# TLS (server: tls_remember_esmtp)
+exim -DSERVER=server -bd -oX PORT_D
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo foobar
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+auth plain AHVzZXJ4AHNlY3JldA==
+??? 503
+mail from:<x@y> size=1234
+??? 501
+quit
+??? 221
+****
+killdaemon
+exim -DSERVER=server -DREMEMBER=true -bd -oX PORT_D
+****
+client-ssl 127.0.0.1 PORT_D
+??? 220
+ehlo foobar
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+starttls
+??? 220
+auth plain AHVzZXJ4AHNlY3JldA==
+??? 235
+mail from:<x@y> size=1234
+??? 250
+quit
+??? 221
+****
+killdaemon
--- /dev/null
+support OpenSSL
+authenticator plaintext
+running IPv4
--- /dev/null
+# CRAM-MD5 server tests
+
+exim -odi -bs -oMa 10.0.0.1
+ehlo test.host
+AUTH CRAM-MD5
+dGltIGI5MTNhNjAyYzdlZGE3YTQ5NWI0ZTZlNzMzNGQzODkw
+mail from:<userx@some.domain>
+rcpt to:<userx@test.ex>
+data
+Testing authenticated CRAM-MD5.
+.
+quit
+****
+exim -odi -bs -oMa 10.0.0.1
+ehlo test.host
+AUTH CRAM-MD5
+dXNlcnggNzMzYmE4N2U2NGVkN2U0NDFmMDYyYzRhYzZkYjAxMDM=
+quit
+****
+exim -bh 10.0.0.4
+ehlo test.host
+quit
+****
+exim -bh 10.0.0.1
+ehlo test.host
+AUTH CRAM-MD5
+dGltIGI5MTNhNjAyYzdlZGE3YTQ5NWI0ZTZlNzMzNGQzODkw
+mail from:<userx@some.domain>
+rcpt to:<userx@test.ex>
+data
+Testing authenticated CRAM-MD5.
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# CRAM-MD5 client tests
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250-HELP
+250 AUTH CRAM-MD5
+AUTH CRAM-MD5
+334 PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ+
+dGltIGI5MTNhNjAyYzdlZGE3YTQ5NWI0ZTZlNzMzNGQzODkw
+235 Authentication successful
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+354 Send data
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx@domain.com
+.
+****
+no_msglog_check
--- /dev/null
+authenticator cram_md5
--- /dev/null
+# SPA authentication (server and client)
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim -f ok@test.ex x@y
+****
+exim -q
+****
+exim -Mes $msg1 bad@test.ex
+****
+exim -q
+****
+client -t3 127.0.0.1 PORT_D
+??? 220
+EHLO xxxx
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+AUTH NTLM
+??? 334
+teststring
+??? 535
+quit
+??? 221
+****
+client -t3 127.0.0.1 PORT_D
+??? 220
+EHLO xxxx
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+AUTH NTLM
+??? 334
+dGVzdHN0cmluZw==
+??? 334
+teststring
+??? 535
+quit
+??? 221
+****
+killdaemon
+no_msglog_check
--- /dev/null
+authenticator spa
+running IPv4
--- /dev/null
+# Basic exiscan feature tests
+echo ==> This test may take a bit of time, depending on exactly
+echo ==> how your SpamAssassin is configured.
+exim -odi -bs
+ehlo test.ex
+mail from:<>
+rcpt to:<userx@test.ex>
+data
+A message without any headers.
+.
+quit
+****
+exim -odi -bs
+ehlo test.ex
+mail from:<>
+rcpt to:<userx@test.ex>
+data
+From: Test person <tp@cam.ac.uk>
+To: Me <userx@test.ex>
+Subject: A real test message
+Date: Fri, 17 Dec 2004 16:13:04 +0100
+Message-ID: <41C2F849.3060203@projectile.test.ex>
+
+OK, this should look like a genuine message.
+.
+quit
+****
+exim -odi -bs
+ehlo test.ex
+mail from:<>
+rcpt to:<userx@test.ex>
+data
+From: 99Junk99@somewhere.com
+To:
+Subject: MAKE MONEY FAST!!!!
+Message-id: abcde
+
+This should be enough to trip the threshold.
+.
+quit
+****
+exim -odi -bs
+ehlo test.ex
+mail from:<>
+rcpt to:<userx@test.ex>
+data
+From: Test person <tp@cam.ac.uk>
+To: Me <userx@test.ex>
+Subject: A real test message
+Date: Fri, 17 Dec 2004 16:13:04 +0100
+Message-ID: <41C2F849.3060203@projectile.test.ex>
+FakeReject: test fakereject
+
+OK, this should look like a genuine message, but
+it will trip on THIS REGEX.
+.
+quit
+****
+exim -odi -bs
+ehlo test.ex
+mail from:<>
+rcpt to:<userx@test.ex>
+data
+Date: Fri, 17 Dec 2004 14:35:01 +0100
+From: J Caesar <jcaesar@test.ex>
+To: a-list00@exim.org
+Message-ID: <20041217133501.GA3058@test.ex>
+Mime-Version: 1.0
+Content-Type: multipart/mixed; boundary="T4sUOijqQbZv57TR"
+Content-Disposition: inline
+Subject: [exim] Re: Bug#286074: eximstats: uses message count as data for
+ the "volume" charts
+X-BeenThere: a-list00@exim.org
+X-Mailman-Version: 2.1.5
+Precedence: list
+
+--T4sUOijqQbZv57TR
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+
+There was a part of the patch missing, complete one is attached.
+ sorry for wasting your time
+
+--T4sUOijqQbZv57TR
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: attachment; filename=working-patch
+
+--- /usr/sbin/eximstats 2004-12-17 13:36:44.381983753 +0100
++++ eximstats 2004-12-17 13:47:37.763185260 +0100
+@@ -1107,11 +1107,11 @@
+ if (scalar @chartdatanames < $ntopchart)
+ {
+ push(@chartdatanames, $key);
+- push(@chartdatavals, $$m_count{$key});
++ push(@chartdatavals, $$m_data{$key});
+ }
+ else
+ {
+- $chartotherval += $$m_count{$key};
++ $chartotherval += $$m_data{$key};
+ }
+ }
+ push(@chartdatanames, "Other");
+
+--T4sUOijqQbZv57TR
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+--
+
+--T4sUOijqQbZv57TR--
+.
+quit
+****
+# Non-smtp message
+exim -odi userx@test.ex
+A message without any headers.
+.
+****
+# Non-smtp MIME message
+exim -odi userx@test.ex
+Date: Fri, 17 Dec 2004 14:35:01 +0100
+From: J Caesar <jcaesar@test.ex>
+To: a-list00@exim.org
+Message-ID: <20041217133501.GA3058@test.ex>
+Mime-Version: 1.0
+Content-Type: multipart/mixed; boundary="T4sUOijqQbZv57TR"
+Content-Disposition: inline
+Subject: [exim] Re: Bug#286074: eximstats: uses message count as data for
+ the "volume" charts
+X-BeenThere: a-list00@exim.org
+X-Mailman-Version: 2.1.5
+Precedence: list
+
+--T4sUOijqQbZv57TR
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+
+There was a part of the patch missing, complete one is attached.
+ sorry for wasting your time
+
+--T4sUOijqQbZv57TR
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: attachment; filename=working-patch
+
+--- /usr/sbin/eximstats 2004-12-17 13:36:44.381983753 +0100
++++ eximstats 2004-12-17 13:47:37.763185260 +0100
+@@ -1107,11 +1107,11 @@
+ if (scalar @chartdatanames < $ntopchart)
+ {
+ push(@chartdatanames, $key);
+- push(@chartdatavals, $$m_count{$key});
++ push(@chartdatavals, $$m_data{$key});
+ }
+ else
+ {
+- $chartotherval += $$m_count{$key};
++ $chartotherval += $$m_data{$key};
+ }
+ }
+ push(@chartdatanames, "Other");
+
+--T4sUOijqQbZv57TR
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+--
+
+--T4sUOijqQbZv57TR--
+****
+exim -odi -bs
+ehlo test.ex
+mail from:<>
+rcpt to:<userx@test.ex>
+data
+From: Test person <tp@cam.ac.uk>
+To: Me <userx@test.ex>
+Subject: A real test message
+Date: Fri, 17 Dec 2004 16:13:04 +0100
+Message-ID: <41C2F849.3060203@projectile.test.ex>
+FakeDefer: test fakedefer
+
+OK, this should look like a genuine message, but
+it will trip on THIS REGEX.
+.
+quit
+****
+# Very simple virus test
+exim -odi -bs
+mail from:<>
+rcpt to:<userx@test.ex>
+data
+Subject: a virus test
+
+X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
+.
+quit
+****
--- /dev/null
+support Content_Scanning
+running SpamAssassin
+running ClamAV
--- /dev/null
+# $h_ $bh_ and $rh_ expansions
+exim -bf DIR/aux-fixed/TESTNUM.f
+subject: lots of leading and trailing space
+To: a@b
+To: c@d
+X-8: (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)
+X-9: =?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= <xxx>
+X-10: =?US-ASCII?Q?Keith_Moore?= <xxx>
+****
--- /dev/null
+support iconv()
--- /dev/null
+# smtp translate_ip_address
+exim -d-all+route -bt userx@black-1.test.ex
+****
+exim -d-all+route -bt userx@myhost.test.ex
+****
+exim -d-all+route -bt userx@ten-1.test.ex
+****
+exim -d-all+route -bt userx@other1.test.ex
+****
+1
+exim -d-all+route -bt userx@other99.test.ex
--- /dev/null
+support translate_ip_address
--- /dev/null
+# exim quota + warn threshold with maildir
+exim -odi userx
+maildir:maildir_
+This is a test message
+****
+write test-data 100x60
+maildir:maildir_
+++++
+****
+exim -odi userx <test-data
+****
+exim -odi userx <test-data
+****
+exim -odi userx
+maildir:maildir_tagged_
+tag:S370
+This is a test message
+****
+sleep 1
+exim -odi userx
+maildir:maildir_tagged_
+tag:,S=370
+This is a test message
+****
+sleep 1
+exim -odi userx
+maildir:maildir_tagged_
+tag:${if eq{0}{1}{rhubarb}fail}
+This is a test message
+****
+sleep 1
+# deliberate syntax fail
+exim -odi userx
+maildir:maildir_tagged_
+tag:${if eq{0}{1}{rhubarb}
+This is a test message
+****
+sleep 1
+# overlongname
+exim -odi userx
+maildir:maildir_tagged_
+tag:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+This is a test message
+****
+sleep 1
+exim -odi userx
+maildir:maildir_taggedX_
+tag:,S=10694953:2,S
+****
+exim -d-all+transport -odi userx
+maildir:maildir_taggedX_
+tag:,S=412:2,S
+****
--- /dev/null
+# create_file = belowhome
+mkdir test-empty
+ln -s ../test-empty test-mail/link
+exim -odi maildir-userx maildir-usery maildir-userz maildir-sub1 maildir-sub2 maildir-sub3
+To: userx
+
+Testing.
+****
+no_message_check
--- /dev/null
+# quota and maildir
+exim -odi userx@test.ex
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+****
+exim -odi userx@test.ex
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+****
+exim -odi qqq
+.
+****
+exim -odi userx@test.ex
+.
+****
+no_msglog_check
--- /dev/null
+# quota and maildir with the maildir++ folder stuff
+mkdir test-mail/dir1 test-mail/dir2 test-mail/dir3
+touch test-mail/dir1/maildirfolder test-mail/dir2/maildirfolder test-mail/dir3/maildirfolder
+exim -odi dir1@test.ex
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+****
+exim -odi dir2@test.ex
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+****
+exim -odi dir3@test.ex
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+This is a message of a reasonable size. Fifty here.
+****
+no_msglog_check
+no_message_check
--- /dev/null
+# maildir_format forced for address_file
+exim -d -odi userx@test.ex
+Testing
+****
--- /dev/null
+# maildir with maildirsize for quota handling
+exim -d -odi nofile@test.ex
+Message for nofile
+****
+# Create a maildir and put a quota/size file in it, but the quota in the
+# transport will override the value.
+mkdir DIR/test-mail/userx
+write DIR/test-mail/userx/maildirsize
+50S,2C
+****
+# Now try some deliveries
+exim -d -odi userx@test.ex
+Short message
+****
+exim -d -odi userx@test.ex
+A slightly longer message
+****
+exim -d -odi userx@test.ex
+A slightly longer message
+****
+no_msglog_check
--- /dev/null
+# maildir with maildirsize when no quota set
+exim -d -odi userx@test.ex
+Short message
+****
+no_msglog_check
--- /dev/null
+transport appendfile/maildir
--- /dev/null
+# appendfile auto format recognition
+exim -odi userx@test.ex
+Initial test message, no prefix.
+****
+exim -odi userx@test.ex
+Second test message, no prefix.
+****
+exim -odi usery@test.ex
+Second test message, no prefix.
+****
+exim -odi userz@test.ex
+Second test message, no prefix.
+****
+exim -odi mbx_userz@test.ex
+Test message with mbx_ prefix
+****
+exim -odi userz@test.ex
+Second test message, no prefix.
+****
+write test-mail/tpmissing
+tpmissing text at mailbox start
+****
+exim -odi tpmissing@test.ex
+Test message.
+****
+write test-mail/undefined
+undefined text at mailbox start
+****
+exim -odi undefined@test.ex
+Test message.
+****
--- /dev/null
+transport appendfile/mbx
--- /dev/null
+# LMTP over a pipe (using lmtp transport)
+exim -odi userx
+script: 01
+This is a test message.
+****
+exim -odi userx
+script: 02
+This is a test message.
+****
+exim -odi userx
+script: 03
+This is a test message.
+****
+exim -odi userx
+script: 04
+This is a test message.
+****
+exim -odi userx jack jill tom dick harry
+script: 05
+This is a test message.
+****
+dump retry
+exim -odi userx jack jill tom dick harry
+script: 06
+This is a test message.
+****
+exim -odi userx jack jill tom dick harry
+script: 07
+This is a test message.
+****
+exim -odi -DIGNORE_QUOTA=true jack jill
+script: 08
+This is a test message.
+****
+exim -odi -DIGNORE_QUOTA=true jack jill
+script: 09
+This is a test message.
+****
+no_msglog_check
--- /dev/null
+# LMTP and transport filter and shadow transport
+exim -odi userx jack jill
+mailbox: copied
+This is a test message.
+****
+exim -odi userx jack jill
+This is another test message.
+****
--- /dev/null
+# LMTP over a socket (using lmtp transport)
+need_ipv4
+#
+server DIR/test.socket
+220
+LHLO
+220 OK
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+334 send more
+.
+250 OK
+QUIT
+250 OK
+****
+exim -odi userx
+This is a test message.
+****
+server DIR/test.socket
+*sleep 3
+****
+exim -odi userx
+This is a test message.
+****
+server DIR/test.socket
+440 Sorry, there's a problem here
+****
+exim -qf
+****
+server DIR/test.socket
+220 Welcome to this LMTP simulation
+LHLO
+250-Hello there
+250 SIZE
+MAIL FROM
+550 Don't like that sender
+QUIT
+250 OK
+****
+exim -qf
+****
+server DIR/test.socket
+220 Welcome to this LMTP simulation
+LHLO
+250-Hello there
+250 SIZE
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+450 This one is delayed on RCPT
+RCPT TO
+550 This one is unknown on RCPT
+RCPT TO
+250 OK
+DATA
+354 Send it
+.
+250 Number 1 is OK
+450 Number 2 is now delayed
+550 Number 3 is now rejected
+250 Number 6 is OK
+QUIT
+250 OK
+****
+exim -odi lp1 lp2 lp3 lp4 lp5 lp6
+This is a test message
+****
+no_msglog_check
--- /dev/null
+# transport filter command fails to execute
+need_ipv4
+#
+exim -odi userx
+transport: t1
+Test 1
+****
+no_msglog_check
--- /dev/null
+transport lmtp
--- /dev/null
+# top-level freezing mechanisms
+exim -odi userx@test.ex
+Text.
+****
--- /dev/null
+# freeze, move_frozen_messages
+need_move_frozen_messages
+exim -odq userx
+****
+sudo exim -Mf $msg1
+****
+exim -q
+****
+exim -odi freeze
+****
+exim -odi anything
+****
+exim -odi notfrozen
+Test
+****
+no_message_check
--- /dev/null
+# freeze, move_frozen_messages, split spool
+need_move_frozen_messages
+exim -odi freeze
+****
+exim -odi anything
+****
+# Attempt to remove the subdirectories; this will fail if they still
+# have anything in them, and so provoke an error.
+sudo rmdir spool/input/* spool/msglog/*
--- /dev/null
+# open file descriptor test
+exim -odi userx@remote.domain
+Test message
+.
+****
--- /dev/null
+# queryprogram
+1
+exim -bt '"ACCEPT hosts=localhost lookup=byname"@some.host'
+****
+2
+exim -d-all+route -bt '"DECLINE cannot route this one (DECLINE)"@some.host'
+****
+2
+exim -d-all+route -bt '"FAIL cannot route this one (FAIL)"@some.host'
+****
+1
+exim -d-all+route -bt '"ERROR cannot route this one (ERROR)"@some.host'
+****
+1
+exim -d-all+route -bt '"DEFER cannot route this one (DEFER)"@some.host'
+****
+exim -d-all+route -bt '"ACCEPT transport = other_smtp hosts=ten-1.test.ex"@some.host'
+****
+exim -d-all+route -bt PASS@some.host
+****
+1
+exim -d-all+route -bt '"FREEZE cannot route this one (FREEZE)"@some.host'
+****
+exim -d-all+route -bt '"REDIRECT postmaster@test.ex"@some.host'
+****
+exim -odi '"FAIL cannot route this one (FAIL)"@some.host'
+Test message
+****
--- /dev/null
+# ignore_target_hosts (byname)
+1
+exim -bt userx@ten-3.test.ex
+****
--- /dev/null
+# ignore_target_hosts (bydns)
+1
+exim -bt userx@ten-3.test.ex
+****
--- /dev/null
+# check address_data is preserved
+exim -odi userx@r6 userx@r7
+****
+no_msglog_check
--- /dev/null
+# /MX in a list of hosts
+exim -DLIST=mxt8.test.ex/MX -bt x@query.program
+****
--- /dev/null
+# queryprogram and long return lines
+2
+exim -bt x@y
+****
--- /dev/null
+router queryprogram
--- /dev/null
+# domain literals (IPv4)
+need_ipv4
+#
+exim -bt x@[V4NET.9.8.7] x@[127.0.0.1]
+****
+1
+exim -DALLOW=false -odq -f 'x@[10.9.8.7]' zz
+****
+0
+exim -odq -f 'y@[10.9.8.7]' zz
+****
+0
+exim -bp
+****
+0
+exim -odq -bs
+MAIL FROM:<>
+RCPT TO:<x@[1.2.3.4]>
+RCPT TO:<x@[ipv4:1.2.3.4]>
+quit
+****
+no_msglog_check
+
--- /dev/null
+# domain literals (IPv6)
+need_ipv6
+#
+exim -bt x@[abcd::dcba] x@[IPv6:cba::abc]
+****
+exim -DD6=disable_ipv6 -bt x@[abcd::dcba] x@[IPv6:cba::abc]
+****
+0
+exim -odq -bs
+MAIL FROM:<>
+RCPT TO:<x@[3ffe:ffff:836f:0a00:000a:0800:200a:c031]>
+RCPT TO:<x@[ipv6:3ffe:ffff:836f:0a00:000a:0800:200a:c031]>
+quit
+****
--- /dev/null
+router ipliteral
--- /dev/null
+# LDAP lookups - expects specific data
+#
+LDAPTLS_REQCERT=never exim -be
+Expect "Hazel"
+\${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{\$value}fail}
+${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+
+DN is: $ldap_dn
+
+Expect "Hazel" (Unix socket interface)
+\${lookup ldap {ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+
+Expect syntax failure
+${lookup ldap {X=y ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+
+Expect "Hazel"
+\${lookup ldap {time=1 ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{\$value}fail}
+${lookup ldap {time=1 ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+
+Expect "manager" followed by "Hazel" 5 times
+\${lookup ldapm {ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{\$value}fail}
+${lookup ldapm {ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{$value}fail}
+
+DN is: $ldap_dn
+
+Expect "manager" followed by "Hazel"
+\${lookup ldapm {Size=2 ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{\$value}fail}
+${lookup ldapm {Size=2 ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{$value}fail}
+
+Expect "manager" followed by "Hazel" 5 times
+\${lookup ldapm {ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{\$value}fail}
+${lookup ldapm {ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{$value}fail}
+
+Expect "manager"
+\${lookup ldap {size=1 ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{\$value}fail}
+${lookup ldap {size=1 ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{$value}fail}
+
+Expect too many results error
+${lookup ldap {size=0 time=0 ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{$value}fail}
+
+Expect "manager"
+\${lookup ldap {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{\$value}fail}
+${lookup ldap {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{$value}fail}
+
+Expect invalid credentials
+\${lookup ldap {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=known ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{\$value}fail}
+${lookup ldap {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=known ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{$value}fail}
+
+cn="Philip Hazel" sn=Hazel
+\${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK?sn,cn?sub?(cn=Philip%20Hazel)}{\$value}fail}
+${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK?sn,cn?sub?(cn=Philip%20Hazel)}{$value}fail}
+
+cn="Philip Hazel" sn=Hazel objectClass=person
+\${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK??sub?(cn=Philip%20Hazel)}{\$value}fail}
+${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK??sub?(cn=Philip%20Hazel)}{$value}fail}
+
+P Hazel, Phil Hazel
+\${lookup ldapm {ldap:///o=University%20of%20Cambridge,c=UK?cn?sub?(cn=Phil%20Hazel)}{\$value}fail}
+${lookup ldapm {ldap:///o=University%20of%20Cambridge,c=UK?cn?sub?(cn=Phil%20Hazel)}{$value}fail}
+
+cn="P Hazel" cn="Phil Hazel" sn=Hazel objectClass=person
+\${lookup ldapm {ldap:///o=University%20of%20Cambridge,c=UK??sub?(cn=Phil%20Hazel)}{\$value}fail}
+${lookup ldapm {ldap:///o=University%20of%20Cambridge,c=UK??sub?(cn=Phil%20Hazel)}{$value}fail}
+
+cn=P Hazel, o=University of Cambridge, c=UK
+\${lookup ldapdn {ldap:///o=University%20of%20Cambridge,c=UK??sub?(cn=manager)}{\$value}fail}
+${lookup ldapdn {ldap:///o=University%20of%20Cambridge,c=UK??sub?(cn=manager)}{$value}fail}
+
+Expect too many results error
+${lookup ldapdn {ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{$value}fail}
+
+Expect "yes"
+\${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+
+Expect "no"
+\${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=known ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=known ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+
+Expect "no"
+\${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass= ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass= ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+
+Expect "no"
+\${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=known ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=known ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+
+Expect failure to contact server
+\${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=known ldaps://127.0.0.1:9999/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=known ldaps://127.0.0.1:9999/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+
+Expect "yes"
+\${if ldapauth { size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth { size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+
+Expect "yes"
+\${if ldapauth { size=1 time=0 user=cn%3dmanager%2co%3DUniversity%20of%20Cambridge%2Cc%3dUK pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth { size=1 time=0 user=cn%3dmanager%2co%3DUniversity%20of%20Cambridge%2Cc%3dUK pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+
+Expect syntax error
+\${lookup ldap {ldapz:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {ldapz:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+
+Expect error for missing user
+\${if ldapauth {size=1 time=0 pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth {size=1 time=0 pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+
+Expect error for missing password
+\${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+
+Expect "no" because of empty password
+\${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass="" ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth {size=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass="" ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+
+Expect "FAILED" because no such object
+\${lookup ldap {ldap:///o=JUNK}{$value}{FAILED}}
+${lookup ldap {ldap:///o=JUNK}{$value}{FAILED}}
+
+Expect "P*Hazel (starry)"
+\${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK?cn?sub?(cn=P%5C2AHazel*)}{\$value}fail}
+${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK?cn?sub?(cn=P%5C2AHazel*)}{$value}fail}
+
+DN is: $ldap_dn
+
+Expect "P\,Hazel"
+\${lookup ldap {ldap:///cn=P%5C%2CHazel,o=University%20of%20Cambridge,c=UK?cn?sub?(cn=*)}{\$value}fail}
+${lookup ldap {ldap:///cn=P%5C%2CHazel,o=University%20of%20Cambridge,c=UK?cn?sub?(cn=*)}{$value}fail}
+****
+exim -d -be
+Expect syntax error
+\${if ldapauth { soze=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth { soze=1 time=0 user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+****
+exim -d -be
+Expect syntax error
+\${if ldapauth { size=1 time=0 user"cn=manager,o=University of Cambridge,c=UK" pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+${if ldapauth { size=1 time=0 user"cn=manager,o=University of Cambridge,c=UK" pass=secret ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=*)}{yes}{no}}
+****
+LDAPTLS_REQCERT=never exim -d-all+lookup -be
+Expect 5 x "Hazel"
+${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {ldap://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {ldaps://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+
+Expect 2 x "Hazel" (using ldaps)
+\${lookup ldap {user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {user="cn=manager,o=University of Cambridge,c=UK" pass=secret ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {user="cn=manager,o=University of Cambridge,c=UK" pass="secret" ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+****
+exim -DLDAPSERVERS=ldap_default_servers=127.0.0.1 -d-all+lookup -be
+Expect 2 x "Hazel"
+${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+****
+LDAPTLS_REQCERT=never exim -DLDAPSERVERS=ldap_default_servers=/tmp/ldap.sock -d-all+lookup -be
+Expect 3 x "Hazel"
+${lookup ldap {ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {ldapi://%2Ftmp%2Fldap.sock/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {dereference=always ldap:///o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+
+Expect errors
+\${lookup ldap {ldapi://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {ldapi://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+
+\${lookup ldap {user="cn=manager,o=University of Cambridge,c=UK" pass="se\"cret" ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+${lookup ldap {user="cn=manager,o=University of Cambridge,c=UK" pass=${quote:se"cret} ldaps://127.0.0.1/o=University%20of%20Cambridge,c=UK?sn?sub?(cn=Philip%20Hazel)}{$value}fail}
+****
+exim -be
+Expect ldap_search to fail
+${lookup ldap {ldap:///o=top?mailRoutingAddress,mailHost,objectClass?sub?(&(mailLocalAddress=3-1546081-domain.net?wendling@stderr.efficientimpacte.com)(objectClass=inetLocalMailRecipient))}{$value}fail}
+****
--- /dev/null
+# hide LDAP password in log after expansion failure (no LDAP needed)
+exim -odi userx
+****
--- /dev/null
+lookup ldap
--- /dev/null
+# mysql lookups - expects specific data
+exim -d-all+lookup -be
+${lookup mysql {select name from them where id='ph10';}}
+${lookup mysql {select name from them where id='ph10';}}
+${lookup mysql {select name from them where id='xxxx';}}
+${lookup mysql {select name from them where id='nothing';}}
+${lookup mysql {select id,name from them where id='nothing';}}
+${lookup mysql {delete from them where id='nonexist';}}
+${lookup mysql {select * from them where id='quote';}}
+${lookup mysql {select * from them where id='filter';}}
+${lookup mysql {select * from them where id='quote2';}}
+${lookup mysql {select * from them where id='nlonly';}}
+****
+exim -d -bh 10.0.0.0
+mail from:<a@b>
+rcpt to:<c@d>
+quit
+****
+exim -odi -d ph10
+Test message
+.
+****
--- /dev/null
+# pgsql lookups - expects specific data
+exim -d-all+lookup -be
+${lookup pgsql {select name from them where id='ph10';}}
+${lookup pgsql {select name from them where id='ph10';}}
+${lookup pgsql {select name from them where id='xxxx';}}
+${lookup pgsql {select name from them where id='nothing';}}
+${lookup pgsql {select id,name from them where id='nothing';}}
+${lookup pgsql {delete from them where id='nonexist';}}
+${lookup pgsql {select * from them where id='quote2';}}
+${lookup pgsql {select * from them where id='newline';}}
+${lookup pgsql {select * from them where id='tab';}}
+****
+exim -d -bh 10.0.0.0
+mail from:<a@b>
+rcpt to:<c@d>
+rcpt to:<c@d>
+quit
+****
+exim -odi -d CALLER
+Test message
+.
+****
+exim -DSERVERS=\(/tmp/.s.PGSQL.5432\)/test/ph10/ -d-all+lookup -be
+${lookup pgsql {select name from them where id='CALLER';}}
+****
--- /dev/null
+# Cyrus SASL authentication (server only)
+exim -DSERVER=server -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 220
+EHLO xxxx
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250
+AUTH PLAIN AHBoMTAAc2VjcmV0
+??? 535
+AUTH ANONYMOUS
+??? 334
+ph10
+??? 235
+quit
+??? 221
+****
+killdaemon
+no_msglog_check
--- /dev/null
+authenticator cyrus_sasl
--- /dev/null
+# local_scan() miscellaneous tests
+exim -odi -bs
+mail from:<x@y>
+rcpt to:<userx@test.ex>
+data
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: reject
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: reject this message isn't wanted
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: reject this message isn't wanted
+ and we tell it on two lines
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: tempreject
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: tempreject this message isn't wanted just now
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: sendto
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: sendto usery@test.ex
+Testing, testing, was originally to userx.
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: sendto *this is a blackhole message*
+Testing, testing, was originally to userx.
+.
+quit
+****
+1
+exim -odi -f test-local-scan@y userx@test.ex
+local-scan: reject this message isn't wanted
+Testing, testing, local message (1)
+.
+****
+exim -odi -oee -f test-local-scan@y userx@test.ex
+local-scan: reject this message isn't wanted
+Testing, testing, local message (2)
+.
+****
+1
+exim -odi -oep -f test-local-scan@y userx@test.ex
+local-scan: reject this message isn't wanted
+Testing, testing, local message (3)
+.
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: accept A=orses b=mutton
+Testing, testing
+.
+quit
+****
+1
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan:timeout
+test test
+.
+quit
+****
+1
+exim -odi -oep -f test-local-scan@y userx@test.ex
+local-scan: timeout
+test test
+.
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: sendto bounce@test.ex exbounce@test.ex
+Testing, testing, was originally to userx.
+Sent to bounce@test.ex; bounce should go to exbounce.
+.
+quit
+****
+2
+exim -odi -bS
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: reject not wanted -bS
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: accept A=orses b=mutton
+ c=forthighlanders
+ some newlines in here
+Testing, testing
+.
+quit
+****
+exim -odi -N -d-all+receive -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+.
+quit
+****
+exim -odi -N -d-all+local_scan -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+.
+quit
+****
+2
+exim -odi -bS
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: reject_nologhdr not wanted -bS
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: tempreject_nologhdr
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: accept_expand sender=$sender_address
+Testing, testing
+.
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: accept_expand sender=$rhubarb
+Testing, testing
+.
+quit
+****
+exim -bP local_scan
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: accept_freeze
+Testing, testing
+.
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: accept_queue
+Testing, testing
+.
+quit
+****
+exim -bp
+****
+exim -d-all+local_scan -bh 1.2.3.4
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: accept_freeze
+Testing, testing
+.
+quit
+****
+exim -d-all+local_scan -bh 1.2.3.4
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: accept_test_lists
+Testing, testing
+.
+quit
+****
+1
+exim -d-all+local_scan -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: crash
+Testing, testing
+.
+quit
+****
+ls DIR/spool/input
+exim -odq -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: sendto unqualified
+Testing, testing, was originally to userx.
+Sent to unqualified address
+.
+quit
+****
+exim -bp
+****
+exim -M $msg3
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: header_remove 2 remove-me
+remove-me: this is the first one
+remove-me : this is the second one
+remove-me : this is the third one
+
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: header_remove 0 remove-me
+remove-me: this is the first one
+remove-me : this is the second one
+remove-me : this is the third one
+
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: header_add_at_position TT received X-new: added
+
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: header_add_at_position FT received X-new: added
+
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: header_add_at_position FT From X-new: added
+
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: header_add_at_position FT Non-exist X-new: added
+
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: remove userx@test.ex
+
+Testing, testing
+.
+quit
+****
+exim -odi -bs
+mail from:<test-local-scan@y>
+rcpt to:<userx@test.ex>
+data
+local-scan: remove abcd@test.ex
+
+Testing, testing
+.
+quit
+****
+no_msglog_check
--- /dev/null
+# -R and spool pollution
+exim -odq -f test-local-scan@test.ex userx
+local-scan: accept This is text for the local scan returned header
+ and I am going to make sure that it is quite long
+****
+exim -odq userx
+Message 2
+.
+****
+exim -Rf userx
+****
+sudo perl DIR/aux-fixed/9401.perl
+****
+no_msglog_check
--- /dev/null
+# local_scan() smtp_printf() and smtp_fflush()
+need_ipv4
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+client -t2 127.0.0.1 PORT_D
+??? 220
+ehlo foobar
+??? 250-
+??? 250-
+??? 250-
+??? 250
+mail from:<test-local-scan@y>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+local-scan: reject rhubarb rhubarb
+.
+??? 550
+mail from:<test-local-scan@y>
+??? 250
+rcpt to:<x@y>
+??? 250
+data
+??? 354
+local-scan: teergrube
+.
+??? 550-
+??? 550-
+****
+# Wait because of the teergrube
+sleep 3
+killdaemon
+no_msglog_check
--- /dev/null
+# Memory handling for lookups that build long strings
+exim -d-all+memory -bt alias
+****
--- /dev/null
+# retry times when no IPv6 connectivity
+need_ipv4
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+QUIT
+250 OK
+****
+# This should successfully send to the IPv4 address, after failing to
+# connect to the IPv6 address.
+exim -odi userx@mx46cd.test.ex
+First message
+****
+# Let the IPv6 address time out
+sleep 2
+#
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+250 Recipient OK
+DATA
+350 Send message
+.
+250 OK
+QUIT
+250 OK
+****
+# This should also be successful
+exim -odi userx@mx46cd.test.ex
+Second message
+****
+#
+dump retry
+# The IPv6 address has timed out, but the IPv4 address should still be OK
+exim -odi userx@mx46cd.test.ex
+Third message
+****
+dump retry
+exim -q
+****
+exim -q
+****
+exim -q
+****
+exim -q
+****
+exim -q
+****
--- /dev/null
+# long routing delay in message on reused connection (server timeout)
+# This test is problematical - trying to cause a timeout in a server for the
+# 2nd message down the same connection. Works on Linux, but does different
+# things on FreeBSD.
+#
+need_ipv4
+#
+exim -DCOM=# -DSERVER=server -bd -oX PORT_D
+****
+exim -odi -odqs ok@no.delay
+Message 1
+****
+exim -odi -odqs ok@no.delay
+Message 2
+****
+sudo exim -Mar $msg2 delay@2.test.again.dns
+****
+# Remove the retry data so that we do attempt the routing during
+# delivery. That slows it down enough for the server to time out.
+#
+# sudo rm spool/db/retry
+exim -q -d-all+route+dns
+****
+killdaemon
+dump retry
+no_msglog_check
--- /dev/null
+# host name lookup order
+# NOT WORKING
+echo THIS TEST DOES NOT WORK
+exim -d-all+lookup+dns -bh V4NET.0.0.1
+quit
+****
+exim -DORDER='host_lookup_order=byaddr:bydns' -d-all+lookup+dns -bh V4NET.0.0.1
+quit
+****
+exim -d-all+lookup+dns -bh 1.2.3.4
+quit
+****
+exim -DORDER='host_lookup_order=byaddr:bydns' -d-all+lookup+dns -bh 1.2.3.4
+quit
+****