listextract: ${listextract{ 5}{a:b:c:d}{}{fail}}
listextract: ${listextract{ 5}{a:b:c:d}{}fail}
+listquote: ${listquote{:}{abcd}}
+listquote: ${listquote{:}{ab:cd}}
+listquote: ${listquote{:}{:a:b:c:d:}}
+listquote: ${listquote{:}{ab::cd}}
+listquote: ${listquote{;}{ab:cd}}
+listquote: ${listquote{;}{ab;cd}}
+listquote: ${listquote{ }{ ab cd}}
+listquote: <${listquote{:}{}}>
+
sort: ${sort{3:2:1:4}{<}{$item}}
sort: ${sort {<, 3,2,1,4}{>}{$item}}
sort: ${sort{c:B:a:aa}{lti}{$item}}
mask: ${mask:192.168.10.206/0}
mask: ${mask:192.168.10.206}
mask: ${mask:a.b.c.d}
+mask: ${mask:2a00:2:3:4:5:6:7:8/79}
+mask: ${mask:2a00:2:3:4:5:6:7:8/128}
+mask: ${mask:2a00:2:3:4:5:6:7:8/129}
+mask_n: ${mask_n:2a00:2:3:4:5:6:7:8/79}
ipv6denorm: ${ipv6denorm:::1}
ipv6denorm: ${ipv6denorm:fe00::1}
ipv6denorm: ${ipv6denorm:192.168.0.1}
ipv6norm: ${ipv6norm:2a00:eadf:0000:0000:0000:0000:0001:0000}
ipv6norm: ${ipv6norm:2a00:eadf:0000:0001:0000:0000:0000:0000}
ipv6norm: ${ipv6norm:2a00:0:0:0::}
-ipv6norm: ${ipv6norm:2a00:2:3:4:5:6:7:8}
+ipv6norm: ${ipv6norm:2a00:2:3:4:5:6:7:8}trailing_text
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}
gei: ${if gei{ABC}{abc}{y}{n}}
isip: ${if isip {1.2.3.4}{y}{n}} 1.2.3.4
+isip: ${if isip {1.2.3}{y}{n}} 1.2.3
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.256}{y}{n}} ::1.2.3.256
isip: ${if isip {rhubarb}{y}{n}} rhubarb
isip4: ${if isip4{rhubarb}{y}{n}} rhubarb
isip6: ${if isip6{rhubarb}{y}{n}} rhubarb
+isip6: ${if isip6{::/100}{y}{n}} ::/100
+isip6: ${if isip6{::/foo}{y}{n}} ::/foo
+isip6: ${if isip6{::/f o}{y}{n}} ::/f o
match: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
match: ${if match{abcd}{^\N([ab]+)(\w+)$\N}{$2$1}fail}
# 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{postmaster}lsearch {DIR/aux-fixed/0002.aliases}{$value}fail}
+${lookup{postmaster}lsearch,ret=full{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@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}}
+${lookup{x@y}lsearch*@,ret=full {DIR/aux-fixed/0002.starat}{$value}fail}
+${lookup{x@z}lsearch*,ret=full {DIR/aux-fixed/0002.starat}{$value}fail}
+${lookup{x@z}lsearch*@,ret=full {DIR/aux-fixed/0002.starat}{$value}fail}
+${lookup{x@w}lsearch*@,ret=full {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}
+
+${lookup{a.b.c.d} partial-lsearch,ret=full {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z} partial-lsearch,ret=full {DIR/aux-fixed/0002.domains}{$value}{failed x.y.z}}
+${lookup{p.q} partial-lsearch,ret=full {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{o.p.q} partial-lsearch,ret=full {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{m.n.o.p.q}partial-lsearch,ret=full {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z} partial1-lsearch,ret=full{DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z} partial0-lsearch,ret=full{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}}
+q7: ${lookup{b\\s} lsearch{DIR/aux-fixed/0002.quoted}}
+
+q1f: ${lookup{abc} lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q2f: ${lookup{xyz} lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q3f: ${lookup{pqr} lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q4f: ${lookup{a:b} lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q5f: ${lookup{"quoted"} lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q6f: ${lookup{white space}lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q7f: ${lookup{b\\s} lsearch,ret=full{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}}
rc=$runrc
${if eq{1}{2}{${run{/non/exist}}}{1!=2}}
rc=$runrc
+${run,preexpand {DIR/aux-fixed/0002.runfile 0}}
+rc=$runrc
# PRVS
****
# Test $reply_address
exim -bh V4NET.0.0.0
+helo test
mail from:<>
rcpt to:<some@body>
data
****
# Check RFC 2047 decoding with (default) length check
exim -bh V4NET.0.0.0
+helo test
mail from:<>
rcpt to:<some@body>
data
****
# Check RFC 2047 decoding with length check disabled
exim -DLENCHECK=check_rfc2047_length=false -bh V4NET.0.0.0
+helo test
mail from:<>
rcpt to:<some@body>
data
${if inlist{aa}{aa} {in list}{not in list}}
${if !inlist{aa}{aa} {not in list}{in list}}
****
+# listextract from tainted list
+exim -be -oMs my.target.host.name
+'\${listextract {2} {<. $sender_host_name}}' => '${listextract {2} {<. $sender_host_name}}'
+****