1==== no search string extension 2inline:{plain1@1.example=plain2@2.example,{"aa bb"@cc.example="dd ee"@dd.example}} 3internal:plain1@1.example -external-> external:plain2@2.example (null extension) 4internal:aa bb@cc.example -external-> external:"dd ee"@dd.example (null extension) 5external:"aa bb"@cc.example -external-> external:"dd ee"@dd.example (null extension) 6external:"aa bb"@cc.example -external-> internal:dd ee@dd.example (null extension) 7internal:plain1@1.example -internal-> external:plain2@2.example (null extension) 8internal:aa bb@cc.example -internal-> external:(not found) (null extension) 9internal:"aa bb"@cc.example -internal-> external:"dd ee"@dd.example (null extension) 10==== with search string extension 11inline:{plain1@1.example=plain2@2.example,{"aa bb"@cc.example="dd ee"@dd.example}} 12internal:plain1+ext@1.example -external-> external:plain2@2.example (+ext) 13internal:aa bb+ax bx@cc.example -external-> external:"dd ee"@dd.example (+ax bx) 14external:"aa bb+ax bx"@cc.example -external-> external:"dd ee"@dd.example (+ax bx) 15external:"aa bb+ax bx"@cc.example -external-> internal:dd ee@dd.example (+ax bx) 16internal:plain1+ext@1.example -internal-> external:plain2@2.example (+ext) 17internal:"aa bb+ax bx"@cc.example -internal-> external:(not found) (null extension) 18internal:"aa bb"+ax bx@cc.example -internal-> external:"dd ee"@dd.example (+ax bx) 19==== at in localpart 20inline:{"a@b"=foo@example,"a.b."=bar@example} 21external:"a@b"@localhost.localdomain -external-> external:foo@example (null extension) 22external:"a@b+ext"@localhost.localdomain -external-> external:foo@example (+ext) 23external:"a.b."@localhost.localdomain -external-> external:bar@example (null extension) 24==== legacy support 25inline:{"a@b"=extern-1@example,a@b=intern-1@example,a.b.=intern-2@example} 26internal:a@b@localhost.localdomain -external-first-> external:extern-1@example (null extension) 27internal:a.b.@localhost.localdomain -external-first-> external:intern-2@example (null extension) 28==== at_domain test 29inline:{plain1@1.example=plain2@2.example,@3.example=plain4@4.example,plain5@3.example=plain6@6.example} 30external:plain1+ext@1.example -external-> external:plain2@2.example (+ext) 31external:plain2@2.example -external-> external:(not found) (null extension) 32external:plain3@3.example -external-> external:plain4@4.example (null extension) 33external:plain5@3.example -external-> external:plain6@6.example (null extension) 34==== domain test 35inline:{plain1@1.example=plain2@2.example,3.example=plain4@4.example,plain5@3.example=plain6@6.example} 36external:plain1+ext@1.example -external-> external:plain2@2.example (+ext) 37external:plain2@2.example -external-> external:(not found) (null extension) 38external:plain3@3.example -external-> external:plain4@4.example (null extension) 39external:plain5@3.example -external-> external:plain6@6.example (null extension) 40==== at_domain for local domain 41inline:{ab=foo@example,@localhost.localdomain=@bar.example} 42external:ab@localhost.localdomain -external-> external:foo@example (null extension) 43external:cd@localhost.localdomain -external-> external:@bar.example (null extension) 44==== localpart_at_if_local and domain test 45inline:{ab@=foo@example,localhost.localdomain=@bar.example} 46internal:ab@localhost.localdomain -external-> external:foo@example (null extension) 47internal:ab+ext@localhost.localdomain -external-> external:foo@example (+ext) 48internal:cd@localhost.localdomain -external-> external:@bar.example (null extension) 49==== localpart_at has less precedence than domain test 50inline:{ab@=foo@example,localhost.localdomain=@bar.example} 51external:ab@localhost.localdomain -external-> external:@bar.example (null extension) 52external:ab@foo -external-> external:foo@example (null extension) 53==== domain and subdomain test 54inline:{example=example-result,.example=dot-example-result} 55external:plain1+ext@1.example -external-> external:(not found) (null extension) 56external:foo@sub.example -external-> external:(not found) (null extension) 57external:foo@example -external-> external:example-result (null extension) 58external:foo@example -external-> external:example-result (null extension) 59external:foo@sub.example -external-> external:example-result (null extension) 60external:foo@sub.sub.example -external-> external:example-result (null extension) 61external:foo@example -external-> external:example-result (null extension) 62external:foo@sub.example -external-> external:dot-example-result (null extension) 63external:foo@sub.sub.example -external-> external:dot-example-result (null extension) 64