summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Hazel <ph10@hermes.cam.ac.uk>2006-02-07 10:54:33 +0000
committerPhilip Hazel <ph10@hermes.cam.ac.uk>2006-02-07 10:54:33 +0000
commit59371ea735c941334861aa5b8e1e9a06facf044f (patch)
tree79168561a70a94a3994fbe362b904ff9aab86136
parent54c5ebb14ead7439af300e9d7d9d7d2ba29ff32e (diff)
Hopefully the final lot of test files.
-rw-r--r--test/scripts/0000-Basic/000129
-rw-r--r--test/scripts/0000-Basic/0002678
-rw-r--r--test/scripts/0000-Basic/0003101
-rw-r--r--test/scripts/0000-Basic/0004109
-rw-r--r--test/scripts/0000-Basic/000534
-rw-r--r--test/scripts/0000-Basic/000628
-rw-r--r--test/scripts/0000-Basic/000712
-rw-r--r--test/scripts/0000-Basic/000823
-rw-r--r--test/scripts/0000-Basic/000922
-rw-r--r--test/scripts/0000-Basic/001020
-rw-r--r--test/scripts/0000-Basic/001117
-rw-r--r--test/scripts/0000-Basic/001214
-rw-r--r--test/scripts/0000-Basic/00136
-rw-r--r--test/scripts/0000-Basic/001442
-rw-r--r--test/scripts/0000-Basic/001550
-rw-r--r--test/scripts/0000-Basic/00163
-rw-r--r--test/scripts/0000-Basic/001713
-rw-r--r--test/scripts/0000-Basic/00184
-rw-r--r--test/scripts/0000-Basic/001938
-rw-r--r--test/scripts/0000-Basic/00209
-rw-r--r--test/scripts/0000-Basic/002150
-rw-r--r--test/scripts/0000-Basic/0022146
-rw-r--r--test/scripts/0000-Basic/0023333
-rw-r--r--test/scripts/0000-Basic/002492
-rw-r--r--test/scripts/0000-Basic/002516
-rw-r--r--test/scripts/0000-Basic/0026107
-rw-r--r--test/scripts/0000-Basic/002753
-rw-r--r--test/scripts/0000-Basic/002818
-rw-r--r--test/scripts/0000-Basic/002915
-rw-r--r--test/scripts/0000-Basic/00307
-rw-r--r--test/scripts/0000-Basic/00319
-rw-r--r--test/scripts/0000-Basic/00324
-rw-r--r--test/scripts/0000-Basic/003351
-rw-r--r--test/scripts/0000-Basic/003487
-rw-r--r--test/scripts/0000-Basic/0035121
-rw-r--r--test/scripts/0000-Basic/003615
-rw-r--r--test/scripts/0000-Basic/0037174
-rw-r--r--test/scripts/0000-Basic/003848
-rw-r--r--test/scripts/0000-Basic/00395
-rw-r--r--test/scripts/0000-Basic/00403
-rw-r--r--test/scripts/0000-Basic/004114
-rw-r--r--test/scripts/0000-Basic/00425
-rw-r--r--test/scripts/0000-Basic/004311
-rw-r--r--test/scripts/0000-Basic/004421
-rw-r--r--test/scripts/0000-Basic/004531
-rw-r--r--test/scripts/0000-Basic/0046bin0 -> 3911 bytes
-rw-r--r--test/scripts/0000-Basic/00476
-rw-r--r--test/scripts/0000-Basic/004816
-rw-r--r--test/scripts/0000-Basic/004970
-rw-r--r--test/scripts/0000-Basic/005075
-rw-r--r--test/scripts/0000-Basic/005124
-rw-r--r--test/scripts/0000-Basic/005212
-rw-r--r--test/scripts/0000-Basic/00535
-rw-r--r--test/scripts/0000-Basic/00546
-rw-r--r--test/scripts/0000-Basic/005533
-rw-r--r--test/scripts/0000-Basic/005611
-rw-r--r--test/scripts/0000-Basic/005719
-rw-r--r--test/scripts/0000-Basic/005813
-rw-r--r--test/scripts/0000-Basic/005910
-rw-r--r--test/scripts/0000-Basic/006066
-rw-r--r--test/scripts/0000-Basic/006118
-rw-r--r--test/scripts/0000-Basic/006226
-rw-r--r--test/scripts/0000-Basic/006318
-rw-r--r--test/scripts/0000-Basic/006418
-rw-r--r--test/scripts/0000-Basic/006558
-rw-r--r--test/scripts/0000-Basic/006674
-rw-r--r--test/scripts/0000-Basic/006795
-rw-r--r--test/scripts/0000-Basic/006813
-rw-r--r--test/scripts/0000-Basic/006926
-rw-r--r--test/scripts/0000-Basic/007060
-rw-r--r--test/scripts/0000-Basic/00713
-rw-r--r--test/scripts/0000-Basic/007238
-rw-r--r--test/scripts/0000-Basic/007310
-rw-r--r--test/scripts/0000-Basic/007420
-rw-r--r--test/scripts/0000-Basic/00753
-rw-r--r--test/scripts/0000-Basic/00763
-rw-r--r--test/scripts/0000-Basic/007715
-rw-r--r--test/scripts/0000-Basic/007810
-rw-r--r--test/scripts/0000-Basic/007940
-rw-r--r--test/scripts/0000-Basic/008012
-rw-r--r--test/scripts/0000-Basic/008111
-rw-r--r--test/scripts/0000-Basic/008211
-rw-r--r--test/scripts/0000-Basic/008311
-rw-r--r--test/scripts/0000-Basic/00842
-rw-r--r--test/scripts/0000-Basic/00856
-rw-r--r--test/scripts/0000-Basic/0086120
-rw-r--r--test/scripts/0000-Basic/008762
-rw-r--r--test/scripts/0000-Basic/00883
-rw-r--r--test/scripts/0000-Basic/008923
-rw-r--r--test/scripts/0000-Basic/00903
-rw-r--r--test/scripts/0000-Basic/009133
-rw-r--r--test/scripts/0000-Basic/009241
-rw-r--r--test/scripts/0000-Basic/009327
-rw-r--r--test/scripts/0000-Basic/009441
-rw-r--r--test/scripts/0000-Basic/009535
-rw-r--r--test/scripts/0000-Basic/00967
-rw-r--r--test/scripts/0000-Basic/00978
-rw-r--r--test/scripts/0000-Basic/009841
-rw-r--r--test/scripts/0000-Basic/009941
-rw-r--r--test/scripts/0000-Basic/0100142
-rw-r--r--test/scripts/0000-Basic/010192
-rw-r--r--test/scripts/0000-Basic/010240
-rw-r--r--test/scripts/0000-Basic/010316
-rw-r--r--test/scripts/0000-Basic/01049
-rw-r--r--test/scripts/0000-Basic/010513
-rw-r--r--test/scripts/0000-Basic/010622
-rw-r--r--test/scripts/0000-Basic/01079
-rw-r--r--test/scripts/0000-Basic/01086
-rw-r--r--test/scripts/0000-Basic/01095
-rw-r--r--test/scripts/0000-Basic/01105
-rw-r--r--test/scripts/0000-Basic/011110
-rw-r--r--test/scripts/0000-Basic/01127
-rw-r--r--test/scripts/0000-Basic/01135
-rw-r--r--test/scripts/0000-Basic/011413
-rw-r--r--test/scripts/0000-Basic/011513
-rw-r--r--test/scripts/0000-Basic/01169
-rw-r--r--test/scripts/0000-Basic/011711
-rw-r--r--test/scripts/0000-Basic/01187
-rw-r--r--test/scripts/0000-Basic/011925
-rw-r--r--test/scripts/0000-Basic/01208
-rw-r--r--test/scripts/0000-Basic/012128
-rw-r--r--test/scripts/0000-Basic/01227
-rw-r--r--test/scripts/0000-Basic/01234
-rw-r--r--test/scripts/0000-Basic/01249
-rw-r--r--test/scripts/0000-Basic/0125208
-rw-r--r--test/scripts/0000-Basic/01263
-rw-r--r--test/scripts/0000-Basic/012770
-rw-r--r--test/scripts/0000-Basic/01284
-rw-r--r--test/scripts/0000-Basic/01294
-rw-r--r--test/scripts/0000-Basic/013013
-rw-r--r--test/scripts/0000-Basic/01314
-rw-r--r--test/scripts/0000-Basic/01325
-rw-r--r--test/scripts/0000-Basic/01334
-rw-r--r--test/scripts/0000-Basic/013433
-rw-r--r--test/scripts/0000-Basic/013526
-rw-r--r--test/scripts/0000-Basic/013621
-rw-r--r--test/scripts/0000-Basic/013726
-rw-r--r--test/scripts/0000-Basic/013821
-rw-r--r--test/scripts/0000-Basic/013927
-rw-r--r--test/scripts/0000-Basic/01407
-rw-r--r--test/scripts/0000-Basic/014112
-rw-r--r--test/scripts/0000-Basic/01425
-rw-r--r--test/scripts/0000-Basic/014323
-rw-r--r--test/scripts/0000-Basic/01446
-rw-r--r--test/scripts/0000-Basic/014514
-rw-r--r--test/scripts/0000-Basic/01463
-rw-r--r--test/scripts/0000-Basic/014713
-rw-r--r--test/scripts/0000-Basic/01484
-rw-r--r--test/scripts/0000-Basic/01493
-rw-r--r--test/scripts/0000-Basic/01506
-rw-r--r--test/scripts/0000-Basic/01516
-rw-r--r--test/scripts/0000-Basic/015241
-rw-r--r--test/scripts/0000-Basic/01537
-rw-r--r--test/scripts/0000-Basic/015435
-rw-r--r--test/scripts/0000-Basic/015535
-rw-r--r--test/scripts/0000-Basic/015610
-rw-r--r--test/scripts/0000-Basic/015725
-rw-r--r--test/scripts/0000-Basic/015811
-rw-r--r--test/scripts/0000-Basic/015981
-rw-r--r--test/scripts/0000-Basic/016038
-rw-r--r--test/scripts/0000-Basic/016118
-rw-r--r--test/scripts/0000-Basic/0162354
-rw-r--r--test/scripts/0000-Basic/016325
-rw-r--r--test/scripts/0000-Basic/01645
-rw-r--r--test/scripts/0000-Basic/01655
-rw-r--r--test/scripts/0000-Basic/01662
-rw-r--r--test/scripts/0000-Basic/016711
-rw-r--r--test/scripts/0000-Basic/01684
-rw-r--r--test/scripts/0000-Basic/016920
-rw-r--r--test/scripts/0000-Basic/01705
-rw-r--r--test/scripts/0000-Basic/01713
-rw-r--r--test/scripts/0000-Basic/01724
-rw-r--r--test/scripts/0000-Basic/01737
-rw-r--r--test/scripts/0000-Basic/017410
-rw-r--r--test/scripts/0000-Basic/017525
-rw-r--r--test/scripts/0000-Basic/017615
-rw-r--r--test/scripts/0000-Basic/017751
-rw-r--r--test/scripts/0000-Basic/017820
-rw-r--r--test/scripts/0000-Basic/017935
-rw-r--r--test/scripts/0000-Basic/018033
-rw-r--r--test/scripts/0000-Basic/018123
-rw-r--r--test/scripts/0000-Basic/01827
-rw-r--r--test/scripts/0000-Basic/018313
-rw-r--r--test/scripts/0000-Basic/0184208
-rw-r--r--test/scripts/0000-Basic/018527
-rw-r--r--test/scripts/0000-Basic/01865
-rw-r--r--test/scripts/0000-Basic/018723
-rw-r--r--test/scripts/0000-Basic/01886
-rw-r--r--test/scripts/0000-Basic/018911
-rw-r--r--test/scripts/0000-Basic/0190117
-rw-r--r--test/scripts/0000-Basic/019122
-rw-r--r--test/scripts/0000-Basic/019212
-rw-r--r--test/scripts/0000-Basic/01934
-rw-r--r--test/scripts/0000-Basic/019416
-rw-r--r--test/scripts/0000-Basic/019525
-rw-r--r--test/scripts/0000-Basic/019617
-rw-r--r--test/scripts/0000-Basic/019719
-rw-r--r--test/scripts/0000-Basic/019831
-rw-r--r--test/scripts/0000-Basic/01998
-rw-r--r--test/scripts/0000-Basic/02004
-rw-r--r--test/scripts/0000-Basic/020121
-rw-r--r--test/scripts/0000-Basic/020240
-rw-r--r--test/scripts/0000-Basic/020330
-rw-r--r--test/scripts/0000-Basic/02049
-rw-r--r--test/scripts/0000-Basic/020512
-rw-r--r--test/scripts/0000-Basic/020612
-rw-r--r--test/scripts/0000-Basic/02079
-rw-r--r--test/scripts/0000-Basic/020829
-rw-r--r--test/scripts/0000-Basic/020972
-rw-r--r--test/scripts/0000-Basic/021022
-rw-r--r--test/scripts/0000-Basic/021141
-rw-r--r--test/scripts/0000-Basic/021242
-rw-r--r--test/scripts/0000-Basic/021320
-rw-r--r--test/scripts/0000-Basic/021444
-rw-r--r--test/scripts/0000-Basic/0215192
-rw-r--r--test/scripts/0000-Basic/0216113
-rw-r--r--test/scripts/0000-Basic/0217319
-rw-r--r--test/scripts/0000-Basic/021894
-rw-r--r--test/scripts/0000-Basic/02198
-rw-r--r--test/scripts/0000-Basic/022043
-rw-r--r--test/scripts/0000-Basic/022137
-rw-r--r--test/scripts/0000-Basic/022215
-rw-r--r--test/scripts/0000-Basic/022310
-rw-r--r--test/scripts/0000-Basic/022411
-rw-r--r--test/scripts/0000-Basic/02255
-rw-r--r--test/scripts/0000-Basic/02268
-rw-r--r--test/scripts/0000-Basic/0227233
-rw-r--r--test/scripts/0000-Basic/02286
-rw-r--r--test/scripts/0000-Basic/02296
-rw-r--r--test/scripts/0000-Basic/023062
-rw-r--r--test/scripts/0000-Basic/023129
-rw-r--r--test/scripts/0000-Basic/02323
-rw-r--r--test/scripts/0000-Basic/023312
-rw-r--r--test/scripts/0000-Basic/023418
-rw-r--r--test/scripts/0000-Basic/02354
-rw-r--r--test/scripts/0000-Basic/02364
-rw-r--r--test/scripts/0000-Basic/02378
-rw-r--r--test/scripts/0000-Basic/02389
-rw-r--r--test/scripts/0000-Basic/023911
-rw-r--r--test/scripts/0000-Basic/02404
-rw-r--r--test/scripts/0000-Basic/024110
-rw-r--r--test/scripts/0000-Basic/024239
-rw-r--r--test/scripts/0000-Basic/024310
-rw-r--r--test/scripts/0000-Basic/02447
-rw-r--r--test/scripts/0000-Basic/024512
-rw-r--r--test/scripts/0000-Basic/02464
-rw-r--r--test/scripts/0000-Basic/02476
-rw-r--r--test/scripts/0000-Basic/0248186
-rw-r--r--test/scripts/0000-Basic/02495
-rw-r--r--test/scripts/0000-Basic/025016
-rw-r--r--test/scripts/0000-Basic/025129
-rw-r--r--test/scripts/0000-Basic/025213
-rw-r--r--test/scripts/0000-Basic/025355
-rw-r--r--test/scripts/0000-Basic/025428
-rw-r--r--test/scripts/0000-Basic/025521
-rw-r--r--test/scripts/0000-Basic/02564
-rw-r--r--test/scripts/0000-Basic/02576
-rw-r--r--test/scripts/0000-Basic/025844
-rw-r--r--test/scripts/0000-Basic/025965
-rw-r--r--test/scripts/0000-Basic/02606
-rw-r--r--test/scripts/0000-Basic/02618
-rw-r--r--test/scripts/0000-Basic/02624
-rw-r--r--test/scripts/0000-Basic/02635
-rw-r--r--test/scripts/0000-Basic/026439
-rw-r--r--test/scripts/0000-Basic/02653
-rw-r--r--test/scripts/0000-Basic/026618
-rw-r--r--test/scripts/0000-Basic/02674
-rw-r--r--test/scripts/0000-Basic/02689
-rw-r--r--test/scripts/0000-Basic/02693
-rw-r--r--test/scripts/0000-Basic/027022
-rw-r--r--test/scripts/0000-Basic/02714
-rw-r--r--test/scripts/0000-Basic/027210
-rw-r--r--test/scripts/0000-Basic/027319
-rw-r--r--test/scripts/0000-Basic/02744
-rw-r--r--test/scripts/0000-Basic/02755
-rw-r--r--test/scripts/0000-Basic/027636
-rw-r--r--test/scripts/0000-Basic/027716
-rw-r--r--test/scripts/0000-Basic/02788
-rw-r--r--test/scripts/0000-Basic/02796
-rw-r--r--test/scripts/0000-Basic/02806
-rw-r--r--test/scripts/0000-Basic/028139
-rw-r--r--test/scripts/0000-Basic/028246
-rw-r--r--test/scripts/0000-Basic/028310
-rw-r--r--test/scripts/0000-Basic/028413
-rw-r--r--test/scripts/0000-Basic/0285102
-rw-r--r--test/scripts/0000-Basic/0286153
-rw-r--r--test/scripts/0000-Basic/028726
-rw-r--r--test/scripts/0000-Basic/028826
-rw-r--r--test/scripts/0000-Basic/028915
-rw-r--r--test/scripts/0000-Basic/02909
-rw-r--r--test/scripts/0000-Basic/02913
-rw-r--r--test/scripts/0000-Basic/02925
-rw-r--r--test/scripts/0000-Basic/029322
-rw-r--r--test/scripts/0000-Basic/029444
-rw-r--r--test/scripts/0000-Basic/029515
-rw-r--r--test/scripts/0000-Basic/02969
-rw-r--r--test/scripts/0000-Basic/029717
-rw-r--r--test/scripts/0000-Basic/02985
-rw-r--r--test/scripts/0000-Basic/029932
-rw-r--r--test/scripts/0000-Basic/0300115
-rw-r--r--test/scripts/0000-Basic/030154
-rw-r--r--test/scripts/0000-Basic/030218
-rw-r--r--test/scripts/0000-Basic/030330
-rw-r--r--test/scripts/0000-Basic/030434
-rw-r--r--test/scripts/0000-Basic/030510
-rw-r--r--test/scripts/0000-Basic/030623
-rw-r--r--test/scripts/0000-Basic/03079
-rw-r--r--test/scripts/0000-Basic/030811
-rw-r--r--test/scripts/0000-Basic/030925
-rw-r--r--test/scripts/0000-Basic/03104
-rw-r--r--test/scripts/0000-Basic/031116
-rw-r--r--test/scripts/0000-Basic/03126
-rw-r--r--test/scripts/0000-Basic/031313
-rw-r--r--test/scripts/0000-Basic/03145
-rw-r--r--test/scripts/0000-Basic/03157
-rw-r--r--test/scripts/0000-Basic/03164
-rw-r--r--test/scripts/0000-Basic/031719
-rw-r--r--test/scripts/0000-Basic/03188
-rw-r--r--test/scripts/0000-Basic/031911
-rw-r--r--test/scripts/0000-Basic/032014
-rw-r--r--test/scripts/0000-Basic/03214
-rw-r--r--test/scripts/0000-Basic/0322169
-rw-r--r--test/scripts/0000-Basic/03233
-rw-r--r--test/scripts/0000-Basic/03249
-rw-r--r--test/scripts/0000-Basic/03258
-rw-r--r--test/scripts/0000-Basic/03267
-rw-r--r--test/scripts/0000-Basic/03273
-rw-r--r--test/scripts/0000-Basic/03284
-rw-r--r--test/scripts/0000-Basic/03294
-rw-r--r--test/scripts/0000-Basic/033010
-rw-r--r--test/scripts/0000-Basic/033123
-rw-r--r--test/scripts/0000-Basic/033236
-rw-r--r--test/scripts/0000-Basic/033337
-rw-r--r--test/scripts/0000-Basic/03346
-rw-r--r--test/scripts/0000-Basic/033511
-rw-r--r--test/scripts/0000-Basic/033613
-rw-r--r--test/scripts/0000-Basic/03375
-rw-r--r--test/scripts/0000-Basic/03389
-rw-r--r--test/scripts/0000-Basic/03394
-rw-r--r--test/scripts/0000-Basic/03406
-rw-r--r--test/scripts/0000-Basic/034115
-rw-r--r--test/scripts/0000-Basic/03428
-rw-r--r--test/scripts/0000-Basic/034313
-rw-r--r--test/scripts/0000-Basic/03445
-rw-r--r--test/scripts/0000-Basic/034517
-rw-r--r--test/scripts/0000-Basic/03464
-rw-r--r--test/scripts/0000-Basic/03473
-rw-r--r--test/scripts/0000-Basic/034813
-rw-r--r--test/scripts/0000-Basic/03494
-rw-r--r--test/scripts/0000-Basic/03504
-rw-r--r--test/scripts/0000-Basic/035113
-rw-r--r--test/scripts/0000-Basic/035231
-rw-r--r--test/scripts/0000-Basic/03535
-rw-r--r--test/scripts/0000-Basic/03545
-rw-r--r--test/scripts/0000-Basic/03555
-rw-r--r--test/scripts/0000-Basic/03567
-rw-r--r--test/scripts/0000-Basic/035749
-rw-r--r--test/scripts/0000-Basic/035839
-rw-r--r--test/scripts/0000-Basic/03597
-rw-r--r--test/scripts/0000-Basic/036011
-rw-r--r--test/scripts/0000-Basic/03617
-rw-r--r--test/scripts/0000-Basic/03628
-rw-r--r--test/scripts/0000-Basic/036321
-rw-r--r--test/scripts/0000-Basic/03646
-rw-r--r--test/scripts/0000-Basic/036573
-rw-r--r--test/scripts/0000-Basic/036614
-rw-r--r--test/scripts/0000-Basic/036758
-rw-r--r--test/scripts/0000-Basic/03685
-rw-r--r--test/scripts/0000-Basic/03696
-rw-r--r--test/scripts/0000-Basic/03703
-rw-r--r--test/scripts/0000-Basic/037112
-rw-r--r--test/scripts/0000-Basic/037212
-rw-r--r--test/scripts/0000-Basic/037357
-rw-r--r--test/scripts/0000-Basic/037443
-rw-r--r--test/scripts/0000-Basic/037589
-rw-r--r--test/scripts/0000-Basic/0376442
-rw-r--r--test/scripts/0000-Basic/037710
-rw-r--r--test/scripts/0000-Basic/03788
-rw-r--r--test/scripts/0000-Basic/03798
-rw-r--r--test/scripts/0000-Basic/03804
-rw-r--r--test/scripts/0000-Basic/03816
-rw-r--r--test/scripts/0000-Basic/03827
-rw-r--r--test/scripts/0000-Basic/038311
-rw-r--r--test/scripts/0000-Basic/03848
-rw-r--r--test/scripts/0000-Basic/038555
-rw-r--r--test/scripts/0000-Basic/038623
-rw-r--r--test/scripts/0000-Basic/038742
-rw-r--r--test/scripts/0000-Basic/038819
-rw-r--r--test/scripts/0000-Basic/038911
-rw-r--r--test/scripts/0000-Basic/039012
-rw-r--r--test/scripts/0000-Basic/03916
-rw-r--r--test/scripts/0000-Basic/03927
-rw-r--r--test/scripts/0000-Basic/03937
-rw-r--r--test/scripts/0000-Basic/039411
-rw-r--r--test/scripts/0000-Basic/039588
-rw-r--r--test/scripts/0000-Basic/03966
-rw-r--r--test/scripts/0000-Basic/03974
-rw-r--r--test/scripts/0000-Basic/039861
-rw-r--r--test/scripts/0000-Basic/03994
-rw-r--r--test/scripts/0000-Basic/04009
-rw-r--r--test/scripts/0000-Basic/04019
-rw-r--r--test/scripts/0000-Basic/04024
-rw-r--r--test/scripts/0000-Basic/04034
-rw-r--r--test/scripts/0000-Basic/0404155
-rw-r--r--test/scripts/0000-Basic/04058
-rw-r--r--test/scripts/0000-Basic/040628
-rw-r--r--test/scripts/0000-Basic/040725
-rw-r--r--test/scripts/0000-Basic/04083
-rw-r--r--test/scripts/0000-Basic/04097
-rw-r--r--test/scripts/0000-Basic/04107
-rw-r--r--test/scripts/0000-Basic/041110
-rw-r--r--test/scripts/0000-Basic/041223
-rw-r--r--test/scripts/0000-Basic/041342
-rw-r--r--test/scripts/0000-Basic/04143
-rw-r--r--test/scripts/0000-Basic/041537
-rw-r--r--test/scripts/0000-Basic/041649
-rw-r--r--test/scripts/0000-Basic/041715
-rw-r--r--test/scripts/0000-Basic/04186
-rw-r--r--test/scripts/0000-Basic/04195
-rw-r--r--test/scripts/0000-Basic/042014
-rw-r--r--test/scripts/0000-Basic/04216
-rw-r--r--test/scripts/0000-Basic/04227
-rw-r--r--test/scripts/0000-Basic/04234
-rw-r--r--test/scripts/0000-Basic/04246
-rw-r--r--test/scripts/0000-Basic/04259
-rw-r--r--test/scripts/0000-Basic/042617
-rw-r--r--test/scripts/0000-Basic/0427540
-rw-r--r--test/scripts/0000-Basic/042887
-rw-r--r--test/scripts/0000-Basic/042915
-rw-r--r--test/scripts/0000-Basic/043030
-rw-r--r--test/scripts/0000-Basic/043145
-rw-r--r--test/scripts/0000-Basic/043256
-rw-r--r--test/scripts/0000-Basic/043321
-rw-r--r--test/scripts/0000-Basic/04348
-rw-r--r--test/scripts/0000-Basic/0435bin0 -> 55 bytes
-rw-r--r--test/scripts/0000-Basic/04363
-rw-r--r--test/scripts/0000-Basic/04379
-rw-r--r--test/scripts/0000-Basic/043810
-rw-r--r--test/scripts/0000-Basic/043917
-rw-r--r--test/scripts/0000-Basic/044045
-rw-r--r--test/scripts/0000-Basic/04418
-rw-r--r--test/scripts/0000-Basic/04426
-rw-r--r--test/scripts/0000-Basic/04436
-rw-r--r--test/scripts/0000-Basic/04445
-rw-r--r--test/scripts/0000-Basic/04459
-rw-r--r--test/scripts/0000-Basic/044614
-rw-r--r--test/scripts/0000-Basic/044733
-rw-r--r--test/scripts/0000-Basic/044823
-rw-r--r--test/scripts/0000-Basic/044911
-rw-r--r--test/scripts/0000-Basic/045010
-rw-r--r--test/scripts/0000-Basic/045111
-rw-r--r--test/scripts/0000-Basic/045210
-rw-r--r--test/scripts/0000-Basic/045326
-rw-r--r--test/scripts/0000-Basic/045425
-rw-r--r--test/scripts/0000-Basic/04559
-rw-r--r--test/scripts/0000-Basic/04563
-rw-r--r--test/scripts/0000-Basic/04576
-rw-r--r--test/scripts/0000-Basic/0458118
-rw-r--r--test/scripts/0000-Basic/04596
-rw-r--r--test/scripts/0000-Basic/046046
-rw-r--r--test/scripts/0000-Basic/046171
-rw-r--r--test/scripts/0000-Basic/046243
-rw-r--r--test/scripts/0000-Basic/04635
-rw-r--r--test/scripts/0000-Basic/04648
-rw-r--r--test/scripts/0000-Basic/046530
-rw-r--r--test/scripts/0000-Basic/04665
-rw-r--r--test/scripts/0000-Basic/046731
-rw-r--r--test/scripts/0000-Basic/046814
-rw-r--r--test/scripts/0000-Basic/04696
-rw-r--r--test/scripts/0000-Basic/047012
-rw-r--r--test/scripts/0000-Basic/0471166
-rw-r--r--test/scripts/0000-Basic/04727
-rw-r--r--test/scripts/0000-Basic/0473176
-rw-r--r--test/scripts/0000-Basic/047449
-rw-r--r--test/scripts/0000-Basic/04756
-rw-r--r--test/scripts/0000-Basic/047624
-rw-r--r--test/scripts/0000-Basic/04776
-rw-r--r--test/scripts/0000-Basic/047813
-rw-r--r--test/scripts/0000-Basic/047910
-rw-r--r--test/scripts/0000-Basic/048048
-rw-r--r--test/scripts/0000-Basic/04815
-rw-r--r--test/scripts/0000-Basic/048224
-rw-r--r--test/scripts/0000-Basic/04837
-rw-r--r--test/scripts/0000-Basic/048415
-rw-r--r--test/scripts/0000-Basic/048518
-rw-r--r--test/scripts/0000-Basic/048618
-rw-r--r--test/scripts/0000-Basic/048712
-rw-r--r--test/scripts/0000-Basic/048811
-rw-r--r--test/scripts/0000-Basic/048918
-rw-r--r--test/scripts/0000-Basic/0490bin0 -> 190 bytes
-rw-r--r--test/scripts/0000-Basic/049116
-rw-r--r--test/scripts/0000-Basic/049211
-rw-r--r--test/scripts/0000-Basic/0493176
-rw-r--r--test/scripts/0000-Basic/04944
-rw-r--r--test/scripts/0000-Basic/0495219
-rw-r--r--test/scripts/0000-Basic/049612
-rw-r--r--test/scripts/0000-Basic/049719
-rw-r--r--test/scripts/0000-Basic/049839
-rw-r--r--test/scripts/0000-Basic/04995
-rw-r--r--test/scripts/0000-Basic/050015
-rw-r--r--test/scripts/0000-Basic/05016
-rw-r--r--test/scripts/0000-Basic/050225
-rw-r--r--test/scripts/0000-Basic/050311
-rw-r--r--test/scripts/0000-Basic/050428
-rw-r--r--test/scripts/0000-Basic/050530
-rw-r--r--test/scripts/0000-Basic/050610
-rw-r--r--test/scripts/0000-Basic/050758
-rw-r--r--test/scripts/0000-Basic/05084
-rw-r--r--test/scripts/0000-Basic/05093
-rw-r--r--test/scripts/0000-Basic/05108
-rw-r--r--test/scripts/0000-Basic/051168
-rw-r--r--test/scripts/0000-Basic/051215
-rw-r--r--test/scripts/0000-Basic/05137
-rw-r--r--test/scripts/0000-Basic/051411
-rw-r--r--test/scripts/0000-Basic/05154
-rw-r--r--test/scripts/0000-Basic/05168
-rw-r--r--test/scripts/0000-Basic/051715
-rw-r--r--test/scripts/0000-Basic/051896
-rw-r--r--test/scripts/0000-Basic/05195
-rw-r--r--test/scripts/0000-Basic/05205
-rw-r--r--test/scripts/0000-Basic/05213
-rw-r--r--test/scripts/0000-Basic/052210
-rw-r--r--test/scripts/0000-Basic/05233
-rw-r--r--test/scripts/0000-Basic/052417
-rw-r--r--test/scripts/0000-Basic/052526
-rw-r--r--test/scripts/0000-Basic/05264
-rw-r--r--test/scripts/0000-Basic/052719
-rw-r--r--test/scripts/0000-Basic/05288
-rw-r--r--test/scripts/1000-Basic-ipv6/10007
-rw-r--r--test/scripts/1000-Basic-ipv6/100167
-rw-r--r--test/scripts/1000-Basic-ipv6/10027
-rw-r--r--test/scripts/1000-Basic-ipv6/100330
-rw-r--r--test/scripts/1000-Basic-ipv6/10057
-rw-r--r--test/scripts/1000-Basic-ipv6/100627
-rw-r--r--test/scripts/1000-Basic-ipv6/100728
-rw-r--r--test/scripts/1000-Basic-ipv6/100828
-rw-r--r--test/scripts/1000-Basic-ipv6/REQUIRES1
-rw-r--r--test/scripts/2000-GnuTLS/200016
-rw-r--r--test/scripts/2000-GnuTLS/200113
-rw-r--r--test/scripts/2000-GnuTLS/200266
-rw-r--r--test/scripts/2000-GnuTLS/200348
-rw-r--r--test/scripts/2000-GnuTLS/200442
-rw-r--r--test/scripts/2000-GnuTLS/200528
-rw-r--r--test/scripts/2000-GnuTLS/200617
-rw-r--r--test/scripts/2000-GnuTLS/200711
-rw-r--r--test/scripts/2000-GnuTLS/200815
-rw-r--r--test/scripts/2000-GnuTLS/200911
-rw-r--r--test/scripts/2000-GnuTLS/201011
-rw-r--r--test/scripts/2000-GnuTLS/201111
-rw-r--r--test/scripts/2000-GnuTLS/201211
-rw-r--r--test/scripts/2000-GnuTLS/201315
-rw-r--r--test/scripts/2000-GnuTLS/2014138
-rw-r--r--test/scripts/2000-GnuTLS/201518
-rw-r--r--test/scripts/2000-GnuTLS/201616
-rw-r--r--test/scripts/2000-GnuTLS/201715
-rw-r--r--test/scripts/2000-GnuTLS/201843
-rw-r--r--test/scripts/2000-GnuTLS/201940
-rw-r--r--test/scripts/2000-GnuTLS/202011
-rw-r--r--test/scripts/2000-GnuTLS/202153
-rw-r--r--test/scripts/2000-GnuTLS/202221
-rw-r--r--test/scripts/2000-GnuTLS/20237
-rw-r--r--test/scripts/2000-GnuTLS/202430
-rw-r--r--test/scripts/2000-GnuTLS/202511
-rw-r--r--test/scripts/2000-GnuTLS/20269
-rw-r--r--test/scripts/2000-GnuTLS/202715
-rw-r--r--test/scripts/2000-GnuTLS/202831
-rw-r--r--test/scripts/2000-GnuTLS/REQUIRES2
-rw-r--r--test/scripts/2100-OpenSSL/210010
-rw-r--r--test/scripts/2100-OpenSSL/210112
-rw-r--r--test/scripts/2100-OpenSSL/210265
-rw-r--r--test/scripts/2100-OpenSSL/210347
-rw-r--r--test/scripts/2100-OpenSSL/210441
-rw-r--r--test/scripts/2100-OpenSSL/210527
-rw-r--r--test/scripts/2100-OpenSSL/210616
-rw-r--r--test/scripts/2100-OpenSSL/210710
-rw-r--r--test/scripts/2100-OpenSSL/210814
-rw-r--r--test/scripts/2100-OpenSSL/210910
-rw-r--r--test/scripts/2100-OpenSSL/211010
-rw-r--r--test/scripts/2100-OpenSSL/211110
-rw-r--r--test/scripts/2100-OpenSSL/211210
-rw-r--r--test/scripts/2100-OpenSSL/211314
-rw-r--r--test/scripts/2100-OpenSSL/2114137
-rw-r--r--test/scripts/2100-OpenSSL/211517
-rw-r--r--test/scripts/2100-OpenSSL/211615
-rw-r--r--test/scripts/2100-OpenSSL/211714
-rw-r--r--test/scripts/2100-OpenSSL/211842
-rw-r--r--test/scripts/2100-OpenSSL/211939
-rw-r--r--test/scripts/2100-OpenSSL/212010
-rw-r--r--test/scripts/2100-OpenSSL/212152
-rw-r--r--test/scripts/2100-OpenSSL/212220
-rw-r--r--test/scripts/2100-OpenSSL/21236
-rw-r--r--test/scripts/2100-OpenSSL/212429
-rw-r--r--test/scripts/2100-OpenSSL/212510
-rw-r--r--test/scripts/2100-OpenSSL/21268
-rw-r--r--test/scripts/2100-OpenSSL/212714
-rw-r--r--test/scripts/2100-OpenSSL/212830
-rw-r--r--test/scripts/2100-OpenSSL/214911
-rw-r--r--test/scripts/2100-OpenSSL/REQUIRES2
-rw-r--r--test/scripts/2200-dnsdb/220041
-rw-r--r--test/scripts/2200-dnsdb/22016
-rw-r--r--test/scripts/2200-dnsdb/REQUIRES1
-rw-r--r--test/scripts/2250-dnsdb-ipv6/22506
-rw-r--r--test/scripts/2250-dnsdb-ipv6/REQUIRES2
-rw-r--r--test/scripts/2300-DBM/230034
-rw-r--r--test/scripts/2300-DBM/REQUIRES1
-rw-r--r--test/scripts/2400-cdb/240011
-rw-r--r--test/scripts/2400-cdb/REQUIRES1
-rw-r--r--test/scripts/2500-dsearch/25006
-rw-r--r--test/scripts/2500-dsearch/25014
-rw-r--r--test/scripts/2500-dsearch/REQUIRES1
-rw-r--r--test/scripts/2600-SQLite/260032
-rw-r--r--test/scripts/2600-SQLite/REQUIRES1
-rw-r--r--test/scripts/3000-Perl/300059
-rw-r--r--test/scripts/3000-Perl/REQUIRES1
-rw-r--r--test/scripts/3100-dlfunc/31007
-rw-r--r--test/scripts/3100-dlfunc/REQUIRES1
-rw-r--r--test/scripts/3200-testdb/32006
-rw-r--r--test/scripts/3200-testdb/32015
-rw-r--r--test/scripts/3200-testdb/320216
-rw-r--r--test/scripts/3200-testdb/32034
-rw-r--r--test/scripts/3200-testdb/32045
-rw-r--r--test/scripts/3200-testdb/320511
-rw-r--r--test/scripts/3200-testdb/32068
-rw-r--r--test/scripts/3200-testdb/32075
-rw-r--r--test/scripts/3200-testdb/320815
-rw-r--r--test/scripts/3200-testdb/32096
-rw-r--r--test/scripts/3200-testdb/32104
-rw-r--r--test/scripts/3200-testdb/321116
-rw-r--r--test/scripts/3200-testdb/321216
-rw-r--r--test/scripts/3200-testdb/32138
-rw-r--r--test/scripts/3200-testdb/REQUIRES1
-rw-r--r--test/scripts/3300-crypteq/330034
-rw-r--r--test/scripts/3300-crypteq/REQUIRES1
-rw-r--r--test/scripts/3400-plaintext/3400218
-rw-r--r--test/scripts/3400-plaintext/3401141
-rw-r--r--test/scripts/3400-plaintext/340213
-rw-r--r--test/scripts/3400-plaintext/340313
-rw-r--r--test/scripts/3400-plaintext/340473
-rw-r--r--test/scripts/3400-plaintext/340547
-rw-r--r--test/scripts/3400-plaintext/340621
-rw-r--r--test/scripts/3400-plaintext/34079
-rw-r--r--test/scripts/3400-plaintext/340823
-rw-r--r--test/scripts/3400-plaintext/340915
-rw-r--r--test/scripts/3400-plaintext/341030
-rw-r--r--test/scripts/3400-plaintext/341122
-rw-r--r--test/scripts/3400-plaintext/341224
-rw-r--r--test/scripts/3400-plaintext/341310
-rw-r--r--test/scripts/3400-plaintext/341438
-rw-r--r--test/scripts/3400-plaintext/3415127
-rw-r--r--test/scripts/3400-plaintext/REQUIRES1
-rw-r--r--test/scripts/3450-plaintext-GnuTLS/345043
-rw-r--r--test/scripts/3450-plaintext-GnuTLS/345115
-rw-r--r--test/scripts/3450-plaintext-GnuTLS/345215
-rw-r--r--test/scripts/3450-plaintext-GnuTLS/345344
-rw-r--r--test/scripts/3450-plaintext-GnuTLS/REQUIRES3
-rw-r--r--test/scripts/3460-plaintext-OpenSSL/346042
-rw-r--r--test/scripts/3460-plaintext-OpenSSL/346114
-rw-r--r--test/scripts/3460-plaintext-OpenSSL/346214
-rw-r--r--test/scripts/3460-plaintext-OpenSSL/346343
-rw-r--r--test/scripts/3460-plaintext-OpenSSL/REQUIRES3
-rw-r--r--test/scripts/3500-CRAM-MD5/350035
-rw-r--r--test/scripts/3500-CRAM-MD5/350128
-rw-r--r--test/scripts/3500-CRAM-MD5/REQUIRES1
-rw-r--r--test/scripts/3600-SPA/360045
-rw-r--r--test/scripts/3600-SPA/REQUIRES2
-rw-r--r--test/scripts/4000-scanning/4000202
-rw-r--r--test/scripts/4000-scanning/REQUIRES3
-rw-r--r--test/scripts/4100-iconv/41009
-rw-r--r--test/scripts/4100-iconv/REQUIRES1
-rw-r--r--test/scripts/4950-translate-ip/495011
-rw-r--r--test/scripts/4950-translate-ip/REQUIRES1
-rw-r--r--test/scripts/5000-maildir/500058
-rw-r--r--test/scripts/5000-maildir/50019
-rw-r--r--test/scripts/5000-maildir/500241
-rw-r--r--test/scripts/5000-maildir/500371
-rw-r--r--test/scripts/5000-maildir/50044
-rw-r--r--test/scripts/5000-maildir/500521
-rw-r--r--test/scripts/5000-maildir/50065
-rw-r--r--test/scripts/5000-maildir/REQUIRES1
-rw-r--r--test/scripts/5050-mbx/505031
-rw-r--r--test/scripts/5050-mbx/REQUIRES1
-rw-r--r--test/scripts/5100-lmtp-transport/510039
-rw-r--r--test/scripts/5100-lmtp-transport/51018
-rw-r--r--test/scripts/5100-lmtp-transport/510277
-rw-r--r--test/scripts/5100-lmtp-transport/51038
-rw-r--r--test/scripts/5100-lmtp-transport/REQUIRES1
-rw-r--r--test/scripts/5200-queryprogram/52004
-rw-r--r--test/scripts/5200-queryprogram/520116
-rw-r--r--test/scripts/5200-queryprogram/52029
-rw-r--r--test/scripts/5200-queryprogram/52035
-rw-r--r--test/scripts/5200-queryprogram/520428
-rw-r--r--test/scripts/5200-queryprogram/52054
-rw-r--r--test/scripts/5200-queryprogram/52064
-rw-r--r--test/scripts/5200-queryprogram/52074
-rw-r--r--test/scripts/5200-queryprogram/52083
-rw-r--r--test/scripts/5200-queryprogram/52094
-rw-r--r--test/scripts/5200-queryprogram/REQUIRES1
-rw-r--r--test/scripts/5300-ipliteral/530023
-rw-r--r--test/scripts/5300-ipliteral/530114
-rw-r--r--test/scripts/5300-ipliteral/REQUIRES1
-rw-r--r--test/scripts/9000-LDAP/9000175
-rw-r--r--test/scripts/9000-LDAP/90013
-rw-r--r--test/scripts/9000-LDAP/REQUIRES1
-rw-r--r--test/scripts/9100-MySQL/910022
-rw-r--r--test/scripts/9200-PostgreSQL/920025
-rw-r--r--test/scripts/9300-Cyrus-SASL/930022
-rw-r--r--test/scripts/9300-Cyrus-SASL/REQUIRES1
-rw-r--r--test/scripts/9400-local_scan/9400360
-rw-r--r--test/scripts/9400-local_scan/940114
-rw-r--r--test/scripts/9400-local_scan/940236
-rw-r--r--test/scripts/9450-memory/94503
-rw-r--r--test/scripts/9900-testing/990064
-rw-r--r--test/scripts/9900-testing/990126
-rw-r--r--test/scripts/9900-testing/990215
714 files changed, 20581 insertions, 0 deletions
diff --git a/test/scripts/0000-Basic/0001 b/test/scripts/0000-Basic/0001
new file mode 100644
index 000000000..039c7a668
--- /dev/null
+++ b/test/scripts/0000-Basic/0001
@@ -0,0 +1,29 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0002 b/test/scripts/0000-Basic/0002
new file mode 100644
index 000000000..eaa0dd82a
--- /dev/null
+++ b/test/scripts/0000-Basic/0002
@@ -0,0 +1,678 @@
+# 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Àÿ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
+****
diff --git a/test/scripts/0000-Basic/0003 b/test/scripts/0000-Basic/0003
new file mode 100644
index 000000000..58868bb67
--- /dev/null
+++ b/test/scripts/0000-Basic/0003
@@ -0,0 +1,101 @@
+# 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
diff --git a/test/scripts/0000-Basic/0004 b/test/scripts/0000-Basic/0004
new file mode 100644
index 000000000..2732d001e
--- /dev/null
+++ b/test/scripts/0000-Basic/0004
@@ -0,0 +1,109 @@
+# 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>
diff --git a/test/scripts/0000-Basic/0005 b/test/scripts/0000-Basic/0005
new file mode 100644
index 000000000..8e7b0d8c1
--- /dev/null
+++ b/test/scripts/0000-Basic/0005
@@ -0,0 +1,34 @@
+# -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
+****
diff --git a/test/scripts/0000-Basic/0006 b/test/scripts/0000-Basic/0006
new file mode 100644
index 000000000..6db44fbb6
--- /dev/null
+++ b/test/scripts/0000-Basic/0006
@@ -0,0 +1,28 @@
+# -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
diff --git a/test/scripts/0000-Basic/0007 b/test/scripts/0000-Basic/0007
new file mode 100644
index 000000000..c129b76d6
--- /dev/null
+++ b/test/scripts/0000-Basic/0007
@@ -0,0 +1,12 @@
+# -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
diff --git a/test/scripts/0000-Basic/0008 b/test/scripts/0000-Basic/0008
new file mode 100644
index 000000000..a77bf01b3
--- /dev/null
+++ b/test/scripts/0000-Basic/0008
@@ -0,0 +1,23 @@
+# -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
diff --git a/test/scripts/0000-Basic/0009 b/test/scripts/0000-Basic/0009
new file mode 100644
index 000000000..b4c3025c3
--- /dev/null
+++ b/test/scripts/0000-Basic/0009
@@ -0,0 +1,22 @@
+# -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
diff --git a/test/scripts/0000-Basic/0010 b/test/scripts/0000-Basic/0010
new file mode 100644
index 000000000..a53363592
--- /dev/null
+++ b/test/scripts/0000-Basic/0010
@@ -0,0 +1,20 @@
+# -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 .
diff --git a/test/scripts/0000-Basic/0011 b/test/scripts/0000-Basic/0011
new file mode 100644
index 000000000..2a9412f4a
--- /dev/null
+++ b/test/scripts/0000-Basic/0011
@@ -0,0 +1,17 @@
+# -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
diff --git a/test/scripts/0000-Basic/0012 b/test/scripts/0000-Basic/0012
new file mode 100644
index 000000000..e81082388
--- /dev/null
+++ b/test/scripts/0000-Basic/0012
@@ -0,0 +1,14 @@
+# -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...
+.
diff --git a/test/scripts/0000-Basic/0013 b/test/scripts/0000-Basic/0013
new file mode 100644
index 000000000..b2c9b63d7
--- /dev/null
+++ b/test/scripts/0000-Basic/0013
@@ -0,0 +1,6 @@
+# Data after quoted string
+no_stdout_check
+1
+exim -bV
+****
+
diff --git a/test/scripts/0000-Basic/0014 b/test/scripts/0000-Basic/0014
new file mode 100644
index 000000000..a3c939a1b
--- /dev/null
+++ b/test/scripts/0000-Basic/0014
@@ -0,0 +1,42 @@
+# 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
diff --git a/test/scripts/0000-Basic/0015 b/test/scripts/0000-Basic/0015
new file mode 100644
index 000000000..4c8c5e7e4
--- /dev/null
+++ b/test/scripts/0000-Basic/0015
@@ -0,0 +1,50 @@
+# 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.
+****
diff --git a/test/scripts/0000-Basic/0016 b/test/scripts/0000-Basic/0016
new file mode 100644
index 000000000..d2b07d281
--- /dev/null
+++ b/test/scripts/0000-Basic/0016
@@ -0,0 +1,3 @@
+# local part suffix
+exim -odi userx+page
+Some message text.
diff --git a/test/scripts/0000-Basic/0017 b/test/scripts/0000-Basic/0017
new file mode 100644
index 000000000..7523c7fa4
--- /dev/null
+++ b/test/scripts/0000-Basic/0017
@@ -0,0 +1,13 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0018 b/test/scripts/0000-Basic/0018
new file mode 100644
index 000000000..a6857ae28
--- /dev/null
+++ b/test/scripts/0000-Basic/0018
@@ -0,0 +1,4 @@
+# ETRN (permitted host)
+exim -bh 127.0.0.1
+etrn #some.random.domain
+quit
diff --git a/test/scripts/0000-Basic/0019 b/test/scripts/0000-Basic/0019
new file mode 100644
index 000000000..fd646eb81
--- /dev/null
+++ b/test/scripts/0000-Basic/0019
@@ -0,0 +1,38 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0020 b/test/scripts/0000-Basic/0020
new file mode 100644
index 000000000..55f4c94ed
--- /dev/null
+++ b/test/scripts/0000-Basic/0020
@@ -0,0 +1,9 @@
+# -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
+****
diff --git a/test/scripts/0000-Basic/0021 b/test/scripts/0000-Basic/0021
new file mode 100644
index 000000000..2ec354ffd
--- /dev/null
+++ b/test/scripts/0000-Basic/0021
@@ -0,0 +1,50 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0022 b/test/scripts/0000-Basic/0022
new file mode 100644
index 000000000..92d955171
--- /dev/null
+++ b/test/scripts/0000-Basic/0022
@@ -0,0 +1,146 @@
+# 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
diff --git a/test/scripts/0000-Basic/0023 b/test/scripts/0000-Basic/0023
new file mode 100644
index 000000000..1f9cb2ee8
--- /dev/null
+++ b/test/scripts/0000-Basic/0023
@@ -0,0 +1,333 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0024 b/test/scripts/0000-Basic/0024
new file mode 100644
index 000000000..ca6a2b4a0
--- /dev/null
+++ b/test/scripts/0000-Basic/0024
@@ -0,0 +1,92 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0025 b/test/scripts/0000-Basic/0025
new file mode 100644
index 000000000..8d5e00512
--- /dev/null
+++ b/test/scripts/0000-Basic/0025
@@ -0,0 +1,16 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0026 b/test/scripts/0000-Basic/0026
new file mode 100644
index 000000000..e81e0d9d0
--- /dev/null
+++ b/test/scripts/0000-Basic/0026
@@ -0,0 +1,107 @@
+# 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
diff --git a/test/scripts/0000-Basic/0027 b/test/scripts/0000-Basic/0027
new file mode 100644
index 000000000..606c1095f
--- /dev/null
+++ b/test/scripts/0000-Basic/0027
@@ -0,0 +1,53 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0028 b/test/scripts/0000-Basic/0028
new file mode 100644
index 000000000..4cf458d4e
--- /dev/null
+++ b/test/scripts/0000-Basic/0028
@@ -0,0 +1,18 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0029 b/test/scripts/0000-Basic/0029
new file mode 100644
index 000000000..d1f297e24
--- /dev/null
+++ b/test/scripts/0000-Basic/0029
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0030 b/test/scripts/0000-Basic/0030
new file mode 100644
index 000000000..b200e2704
--- /dev/null
+++ b/test/scripts/0000-Basic/0030
@@ -0,0 +1,7 @@
+# Use of $address_data in ACL
+exim -bs
+mail from:<>
+rcpt to:<ok@test.ex>
+rcpt to:<notok@test.ex>
+quit
+****
diff --git a/test/scripts/0000-Basic/0031 b/test/scripts/0000-Basic/0031
new file mode 100644
index 000000000..8c05fbbbd
--- /dev/null
+++ b/test/scripts/0000-Basic/0031
@@ -0,0 +1,9 @@
+# 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.
diff --git a/test/scripts/0000-Basic/0032 b/test/scripts/0000-Basic/0032
new file mode 100644
index 000000000..d25c95d38
--- /dev/null
+++ b/test/scripts/0000-Basic/0032
@@ -0,0 +1,4 @@
+# Bounce message for MX->localhost
+exim -odi userx@mxt1.test.ex
+This is a test message.
+****
diff --git a/test/scripts/0000-Basic/0033 b/test/scripts/0000-Basic/0033
new file mode 100644
index 000000000..8c188c9a9
--- /dev/null
+++ b/test/scripts/0000-Basic/0033
@@ -0,0 +1,51 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0034 b/test/scripts/0000-Basic/0034
new file mode 100644
index 000000000..1c8c38016
--- /dev/null
+++ b/test/scripts/0000-Basic/0034
@@ -0,0 +1,87 @@
+# 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
diff --git a/test/scripts/0000-Basic/0035 b/test/scripts/0000-Basic/0035
new file mode 100644
index 000000000..8a49f9491
--- /dev/null
+++ b/test/scripts/0000-Basic/0035
@@ -0,0 +1,121 @@
+# 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
diff --git a/test/scripts/0000-Basic/0036 b/test/scripts/0000-Basic/0036
new file mode 100644
index 000000000..b4155ac13
--- /dev/null
+++ b/test/scripts/0000-Basic/0036
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0037 b/test/scripts/0000-Basic/0037
new file mode 100644
index 000000000..be3aa94cd
--- /dev/null
+++ b/test/scripts/0000-Basic/0037
@@ -0,0 +1,174 @@
+# 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
diff --git a/test/scripts/0000-Basic/0038 b/test/scripts/0000-Basic/0038
new file mode 100644
index 000000000..6ba85d3cf
--- /dev/null
+++ b/test/scripts/0000-Basic/0038
@@ -0,0 +1,48 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0039 b/test/scripts/0000-Basic/0039
new file mode 100644
index 000000000..4c996291b
--- /dev/null
+++ b/test/scripts/0000-Basic/0039
@@ -0,0 +1,5 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0040 b/test/scripts/0000-Basic/0040
new file mode 100644
index 000000000..3353ec233
--- /dev/null
+++ b/test/scripts/0000-Basic/0040
@@ -0,0 +1,3 @@
+# 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.
diff --git a/test/scripts/0000-Basic/0041 b/test/scripts/0000-Basic/0041
new file mode 100644
index 000000000..5601d6506
--- /dev/null
+++ b/test/scripts/0000-Basic/0041
@@ -0,0 +1,14 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0042 b/test/scripts/0000-Basic/0042
new file mode 100644
index 000000000..a0b2e4f2c
--- /dev/null
+++ b/test/scripts/0000-Basic/0042
@@ -0,0 +1,5 @@
+# VRFY logging failures
+exim -bh 1.1.1.1
+vrfy userx@test.ex
+vrfy junkjunk@test.ex
+quit
diff --git a/test/scripts/0000-Basic/0043 b/test/scripts/0000-Basic/0043
new file mode 100644
index 000000000..63a0f99c0
--- /dev/null
+++ b/test/scripts/0000-Basic/0043
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/0000-Basic/0044 b/test/scripts/0000-Basic/0044
new file mode 100644
index 000000000..90870b700
--- /dev/null
+++ b/test/scripts/0000-Basic/0044
@@ -0,0 +1,21 @@
+# 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
diff --git a/test/scripts/0000-Basic/0045 b/test/scripts/0000-Basic/0045
new file mode 100644
index 000000000..1b3aae09d
--- /dev/null
+++ b/test/scripts/0000-Basic/0045
@@ -0,0 +1,31 @@
+# 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
diff --git a/test/scripts/0000-Basic/0046 b/test/scripts/0000-Basic/0046
new file mode 100644
index 000000000..62d7ec83b
--- /dev/null
+++ b/test/scripts/0000-Basic/0046
Binary files differ
diff --git a/test/scripts/0000-Basic/0047 b/test/scripts/0000-Basic/0047
new file mode 100644
index 000000000..86a40fbf7
--- /dev/null
+++ b/test/scripts/0000-Basic/0047
@@ -0,0 +1,6 @@
+# domain matching in manualroute router
+exim -bt xx@domain1
+****
+exim -bt xx@route1.ex
+****
+exim -bt xx@domain3
diff --git a/test/scripts/0000-Basic/0048 b/test/scripts/0000-Basic/0048
new file mode 100644
index 000000000..47815e80c
--- /dev/null
+++ b/test/scripts/0000-Basic/0048
@@ -0,0 +1,16 @@
+# 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.
+****
diff --git a/test/scripts/0000-Basic/0049 b/test/scripts/0000-Basic/0049
new file mode 100644
index 000000000..e3146a083
--- /dev/null
+++ b/test/scripts/0000-Basic/0049
@@ -0,0 +1,70 @@
+# 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
+
diff --git a/test/scripts/0000-Basic/0050 b/test/scripts/0000-Basic/0050
new file mode 100644
index 000000000..82e5cad0e
--- /dev/null
+++ b/test/scripts/0000-Basic/0050
@@ -0,0 +1,75 @@
+# 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
+
diff --git a/test/scripts/0000-Basic/0051 b/test/scripts/0000-Basic/0051
new file mode 100644
index 000000000..2651d99dd
--- /dev/null
+++ b/test/scripts/0000-Basic/0051
@@ -0,0 +1,24 @@
+# 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.
diff --git a/test/scripts/0000-Basic/0052 b/test/scripts/0000-Basic/0052
new file mode 100644
index 000000000..279a82348
--- /dev/null
+++ b/test/scripts/0000-Basic/0052
@@ -0,0 +1,12 @@
+# 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.
diff --git a/test/scripts/0000-Basic/0053 b/test/scripts/0000-Basic/0053
new file mode 100644
index 000000000..b35a94c5b
--- /dev/null
+++ b/test/scripts/0000-Basic/0053
@@ -0,0 +1,5 @@
+# Aliases including domains
+exim -bt bar@domain1.ex
+****
+2
+exim -bt foobar@domain1.ex
diff --git a/test/scripts/0000-Basic/0054 b/test/scripts/0000-Basic/0054
new file mode 100644
index 000000000..703779c78
--- /dev/null
+++ b/test/scripts/0000-Basic/0054
@@ -0,0 +1,6 @@
+# mx_domains
+exim -bt xxx@ten-1.test.ex
+****
+2
+exim -bt xxx@ten-2.test.ex
+****
diff --git a/test/scripts/0000-Basic/0055 b/test/scripts/0000-Basic/0055
new file mode 100644
index 000000000..cc06129fe
--- /dev/null
+++ b/test/scripts/0000-Basic/0055
@@ -0,0 +1,33 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0056 b/test/scripts/0000-Basic/0056
new file mode 100644
index 000000000..5e033ce1e
--- /dev/null
+++ b/test/scripts/0000-Basic/0056
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/0000-Basic/0057 b/test/scripts/0000-Basic/0057
new file mode 100644
index 000000000..0c39e13ec
--- /dev/null
+++ b/test/scripts/0000-Basic/0057
@@ -0,0 +1,19 @@
+# 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
diff --git a/test/scripts/0000-Basic/0058 b/test/scripts/0000-Basic/0058
new file mode 100644
index 000000000..4b0771444
--- /dev/null
+++ b/test/scripts/0000-Basic/0058
@@ -0,0 +1,13 @@
+# 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
diff --git a/test/scripts/0000-Basic/0059 b/test/scripts/0000-Basic/0059
new file mode 100644
index 000000000..85c971651
--- /dev/null
+++ b/test/scripts/0000-Basic/0059
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/0000-Basic/0060 b/test/scripts/0000-Basic/0060
new file mode 100644
index 000000000..87981047c
--- /dev/null
+++ b/test/scripts/0000-Basic/0060
@@ -0,0 +1,66 @@
+# 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
diff --git a/test/scripts/0000-Basic/0061 b/test/scripts/0000-Basic/0061
new file mode 100644
index 000000000..5177f8eac
--- /dev/null
+++ b/test/scripts/0000-Basic/0061
@@ -0,0 +1,18 @@
+# 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
diff --git a/test/scripts/0000-Basic/0062 b/test/scripts/0000-Basic/0062
new file mode 100644
index 000000000..b5802a0f4
--- /dev/null
+++ b/test/scripts/0000-Basic/0062
@@ -0,0 +1,26 @@
+# 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
diff --git a/test/scripts/0000-Basic/0063 b/test/scripts/0000-Basic/0063
new file mode 100644
index 000000000..61abb6ef1
--- /dev/null
+++ b/test/scripts/0000-Basic/0063
@@ -0,0 +1,18 @@
+# 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
diff --git a/test/scripts/0000-Basic/0064 b/test/scripts/0000-Basic/0064
new file mode 100644
index 000000000..a6ff0df12
--- /dev/null
+++ b/test/scripts/0000-Basic/0064
@@ -0,0 +1,18 @@
+# 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
diff --git a/test/scripts/0000-Basic/0065 b/test/scripts/0000-Basic/0065
new file mode 100644
index 000000000..d7862004c
--- /dev/null
+++ b/test/scripts/0000-Basic/0065
@@ -0,0 +1,58 @@
+# 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
diff --git a/test/scripts/0000-Basic/0066 b/test/scripts/0000-Basic/0066
new file mode 100644
index 000000000..cb4492ed1
--- /dev/null
+++ b/test/scripts/0000-Basic/0066
@@ -0,0 +1,74 @@
+# 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
diff --git a/test/scripts/0000-Basic/0067 b/test/scripts/0000-Basic/0067
new file mode 100644
index 000000000..5212719c3
--- /dev/null
+++ b/test/scripts/0000-Basic/0067
@@ -0,0 +1,95 @@
+# 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
diff --git a/test/scripts/0000-Basic/0068 b/test/scripts/0000-Basic/0068
new file mode 100644
index 000000000..dd8cce033
--- /dev/null
+++ b/test/scripts/0000-Basic/0068
@@ -0,0 +1,13 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0069 b/test/scripts/0000-Basic/0069
new file mode 100644
index 000000000..5afefcec5
--- /dev/null
+++ b/test/scripts/0000-Basic/0069
@@ -0,0 +1,26 @@
+# +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
+****
diff --git a/test/scripts/0000-Basic/0070 b/test/scripts/0000-Basic/0070
new file mode 100644
index 000000000..67d53b828
--- /dev/null
+++ b/test/scripts/0000-Basic/0070
@@ -0,0 +1,60 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0071 b/test/scripts/0000-Basic/0071
new file mode 100644
index 000000000..5cfb6097c
--- /dev/null
+++ b/test/scripts/0000-Basic/0071
@@ -0,0 +1,3 @@
+# pipe transport not set
+exim -odi pipe
+Some message text.
diff --git a/test/scripts/0000-Basic/0072 b/test/scripts/0000-Basic/0072
new file mode 100644
index 000000000..14bc9f4a8
--- /dev/null
+++ b/test/scripts/0000-Basic/0072
@@ -0,0 +1,38 @@
+# autoreply
+exim -odi userx@test.ex
+Subject: first message; non-printer > <
+****
+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.
+****
diff --git a/test/scripts/0000-Basic/0073 b/test/scripts/0000-Basic/0073
new file mode 100644
index 000000000..346bc0f43
--- /dev/null
+++ b/test/scripts/0000-Basic/0073
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/0000-Basic/0074 b/test/scripts/0000-Basic/0074
new file mode 100644
index 000000000..04923ef60
--- /dev/null
+++ b/test/scripts/0000-Basic/0074
@@ -0,0 +1,20 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0075 b/test/scripts/0000-Basic/0075
new file mode 100644
index 000000000..b28b4d229
--- /dev/null
+++ b/test/scripts/0000-Basic/0075
@@ -0,0 +1,3 @@
+# appendfile subdirectory with create_directory
+exim -odi userx@test.ex
+Subject: first message
diff --git a/test/scripts/0000-Basic/0076 b/test/scripts/0000-Basic/0076
new file mode 100644
index 000000000..9e6f3116f
--- /dev/null
+++ b/test/scripts/0000-Basic/0076
@@ -0,0 +1,3 @@
+# appendfile subdirectory without create_directory
+exim -odi userx@test.ex
+Subject: first message
diff --git a/test/scripts/0000-Basic/0077 b/test/scripts/0000-Basic/0077
new file mode 100644
index 000000000..715bd289e
--- /dev/null
+++ b/test/scripts/0000-Basic/0077
@@ -0,0 +1,15 @@
+# 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
diff --git a/test/scripts/0000-Basic/0078 b/test/scripts/0000-Basic/0078
new file mode 100644
index 000000000..0333aa3f3
--- /dev/null
+++ b/test/scripts/0000-Basic/0078
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/0000-Basic/0079 b/test/scripts/0000-Basic/0079
new file mode 100644
index 000000000..0875ed0c4
--- /dev/null
+++ b/test/scripts/0000-Basic/0079
@@ -0,0 +1,40 @@
+# 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
diff --git a/test/scripts/0000-Basic/0080 b/test/scripts/0000-Basic/0080
new file mode 100644
index 000000000..12a7de2d1
--- /dev/null
+++ b/test/scripts/0000-Basic/0080
@@ -0,0 +1,12 @@
+# 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
diff --git a/test/scripts/0000-Basic/0081 b/test/scripts/0000-Basic/0081
new file mode 100644
index 000000000..a392fd166
--- /dev/null
+++ b/test/scripts/0000-Basic/0081
@@ -0,0 +1,11 @@
+# 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.
diff --git a/test/scripts/0000-Basic/0082 b/test/scripts/0000-Basic/0082
new file mode 100644
index 000000000..77bcdbfa8
--- /dev/null
+++ b/test/scripts/0000-Basic/0082
@@ -0,0 +1,11 @@
+# -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
diff --git a/test/scripts/0000-Basic/0083 b/test/scripts/0000-Basic/0083
new file mode 100644
index 000000000..0aa9d93e9
--- /dev/null
+++ b/test/scripts/0000-Basic/0083
@@ -0,0 +1,11 @@
+# -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
diff --git a/test/scripts/0000-Basic/0084 b/test/scripts/0000-Basic/0084
new file mode 100644
index 000000000..4227199b4
--- /dev/null
+++ b/test/scripts/0000-Basic/0084
@@ -0,0 +1,2 @@
+# require_files
+exim -d-all+route -bv yes@myhost.test.ex no@myhost.test.ex
diff --git a/test/scripts/0000-Basic/0085 b/test/scripts/0000-Basic/0085
new file mode 100644
index 000000000..3d0f5131b
--- /dev/null
+++ b/test/scripts/0000-Basic/0085
@@ -0,0 +1,6 @@
+# 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
diff --git a/test/scripts/0000-Basic/0086 b/test/scripts/0000-Basic/0086
new file mode 100644
index 000000000..0a7582ebe
--- /dev/null
+++ b/test/scripts/0000-Basic/0086
@@ -0,0 +1,120 @@
+# 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
diff --git a/test/scripts/0000-Basic/0087 b/test/scripts/0000-Basic/0087
new file mode 100644
index 000000000..c77b69cc4
--- /dev/null
+++ b/test/scripts/0000-Basic/0087
@@ -0,0 +1,62 @@
+# 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
diff --git a/test/scripts/0000-Basic/0088 b/test/scripts/0000-Basic/0088
new file mode 100644
index 000000000..63f3f0f16
--- /dev/null
+++ b/test/scripts/0000-Basic/0088
@@ -0,0 +1,3 @@
+# hosts_treat_as_local
+1
+exim -bv xx@ten-1.test.ex xx@ten-99.test.ex xx@mxcased.test.ex
diff --git a/test/scripts/0000-Basic/0089 b/test/scripts/0000-Basic/0089
new file mode 100644
index 000000000..d7ddbd6cb
--- /dev/null
+++ b/test/scripts/0000-Basic/0089
@@ -0,0 +1,23 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0090 b/test/scripts/0000-Basic/0090
new file mode 100644
index 000000000..c99777f2d
--- /dev/null
+++ b/test/scripts/0000-Basic/0090
@@ -0,0 +1,3 @@
+# address list !:
+exim -odi userx
+This is a test message
diff --git a/test/scripts/0000-Basic/0091 b/test/scripts/0000-Basic/0091
new file mode 100644
index 000000000..89025e757
--- /dev/null
+++ b/test/scripts/0000-Basic/0091
@@ -0,0 +1,33 @@
+# 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
diff --git a/test/scripts/0000-Basic/0092 b/test/scripts/0000-Basic/0092
new file mode 100644
index 000000000..78c713e1c
--- /dev/null
+++ b/test/scripts/0000-Basic/0092
@@ -0,0 +1,41 @@
+# 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
diff --git a/test/scripts/0000-Basic/0093 b/test/scripts/0000-Basic/0093
new file mode 100644
index 000000000..576e738df
--- /dev/null
+++ b/test/scripts/0000-Basic/0093
@@ -0,0 +1,27 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0094 b/test/scripts/0000-Basic/0094
new file mode 100644
index 000000000..9a915e06f
--- /dev/null
+++ b/test/scripts/0000-Basic/0094
@@ -0,0 +1,41 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0095 b/test/scripts/0000-Basic/0095
new file mode 100644
index 000000000..45b6a7053
--- /dev/null
+++ b/test/scripts/0000-Basic/0095
@@ -0,0 +1,35 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0096 b/test/scripts/0000-Basic/0096
new file mode 100644
index 000000000..935f91f1a
--- /dev/null
+++ b/test/scripts/0000-Basic/0096
@@ -0,0 +1,7 @@
+# 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
diff --git a/test/scripts/0000-Basic/0097 b/test/scripts/0000-Basic/0097
new file mode 100644
index 000000000..2470159de
--- /dev/null
+++ b/test/scripts/0000-Basic/0097
@@ -0,0 +1,8 @@
+# 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
diff --git a/test/scripts/0000-Basic/0098 b/test/scripts/0000-Basic/0098
new file mode 100644
index 000000000..18f348718
--- /dev/null
+++ b/test/scripts/0000-Basic/0098
@@ -0,0 +1,41 @@
+# 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
diff --git a/test/scripts/0000-Basic/0099 b/test/scripts/0000-Basic/0099
new file mode 100644
index 000000000..d770eef54
--- /dev/null
+++ b/test/scripts/0000-Basic/0099
@@ -0,0 +1,41 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0100 b/test/scripts/0000-Basic/0100
new file mode 100644
index 000000000..a8cf6863d
--- /dev/null
+++ b/test/scripts/0000-Basic/0100
@@ -0,0 +1,142 @@
+# 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
+
+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.
+****
diff --git a/test/scripts/0000-Basic/0101 b/test/scripts/0000-Basic/0101
new file mode 100644
index 000000000..12f73c0b8
--- /dev/null
+++ b/test/scripts/0000-Basic/0101
@@ -0,0 +1,92 @@
+# 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
+
+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.
diff --git a/test/scripts/0000-Basic/0102 b/test/scripts/0000-Basic/0102
new file mode 100644
index 000000000..a6a6f6eb7
--- /dev/null
+++ b/test/scripts/0000-Basic/0102
@@ -0,0 +1,40 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0103 b/test/scripts/0000-Basic/0103
new file mode 100644
index 000000000..13c9918ae
--- /dev/null
+++ b/test/scripts/0000-Basic/0103
@@ -0,0 +1,16 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0104 b/test/scripts/0000-Basic/0104
new file mode 100644
index 000000000..f4f902698
--- /dev/null
+++ b/test/scripts/0000-Basic/0104
@@ -0,0 +1,9 @@
+# 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>
+****
diff --git a/test/scripts/0000-Basic/0105 b/test/scripts/0000-Basic/0105
new file mode 100644
index 000000000..156ed6c22
--- /dev/null
+++ b/test/scripts/0000-Basic/0105
@@ -0,0 +1,13 @@
+# 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
+.
+****
diff --git a/test/scripts/0000-Basic/0106 b/test/scripts/0000-Basic/0106
new file mode 100644
index 000000000..e829b7cad
--- /dev/null
+++ b/test/scripts/0000-Basic/0106
@@ -0,0 +1,22 @@
+# 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
+.
+****
diff --git a/test/scripts/0000-Basic/0107 b/test/scripts/0000-Basic/0107
new file mode 100644
index 000000000..1dd0f5251
--- /dev/null
+++ b/test/scripts/0000-Basic/0107
@@ -0,0 +1,9 @@
+# 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
diff --git a/test/scripts/0000-Basic/0108 b/test/scripts/0000-Basic/0108
new file mode 100644
index 000000000..ffe9f660d
--- /dev/null
+++ b/test/scripts/0000-Basic/0108
@@ -0,0 +1,6 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0109 b/test/scripts/0000-Basic/0109
new file mode 100644
index 000000000..97b7d1f13
--- /dev/null
+++ b/test/scripts/0000-Basic/0109
@@ -0,0 +1,5 @@
+# fallback hosts
+need_ipv4
+#
+exim -odi xx@non-exist.test.ex
+****
diff --git a/test/scripts/0000-Basic/0110 b/test/scripts/0000-Basic/0110
new file mode 100644
index 000000000..8b0d33198
--- /dev/null
+++ b/test/scripts/0000-Basic/0110
@@ -0,0 +1,5 @@
+# one_time in aliasfile
+exim -odi first
+****
+exim -qf
+****
diff --git a/test/scripts/0000-Basic/0111 b/test/scripts/0000-Basic/0111
new file mode 100644
index 000000000..053d40b95
--- /dev/null
+++ b/test/scripts/0000-Basic/0111
@@ -0,0 +1,10 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0112 b/test/scripts/0000-Basic/0112
new file mode 100644
index 000000000..947ea2426
--- /dev/null
+++ b/test/scripts/0000-Basic/0112
@@ -0,0 +1,7 @@
+# pipe and file deliveries from aliasfile
+exim -odi pipe
+Message to pipe.
+****
+exim -odi file
+Message to file.
+****
diff --git a/test/scripts/0000-Basic/0113 b/test/scripts/0000-Basic/0113
new file mode 100644
index 000000000..1779abc11
--- /dev/null
+++ b/test/scripts/0000-Basic/0113
@@ -0,0 +1,5 @@
+# one_time in forwardfile
+exim -odi first
+****
+exim -qf
+****
diff --git a/test/scripts/0000-Basic/0114 b/test/scripts/0000-Basic/0114
new file mode 100644
index 000000000..b41b7c3a6
--- /dev/null
+++ b/test/scripts/0000-Basic/0114
@@ -0,0 +1,13 @@
+# 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.
+****
diff --git a/test/scripts/0000-Basic/0115 b/test/scripts/0000-Basic/0115
new file mode 100644
index 000000000..5a94670b7
--- /dev/null
+++ b/test/scripts/0000-Basic/0115
@@ -0,0 +1,13 @@
+# 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.
+****
diff --git a/test/scripts/0000-Basic/0116 b/test/scripts/0000-Basic/0116
new file mode 100644
index 000000000..839e0cb70
--- /dev/null
+++ b/test/scripts/0000-Basic/0116
@@ -0,0 +1,9 @@
+# unseen (including address_data passing)
+exim -odi dcopy defer
+Message sent to dcopy.
+****
+exim -odi acopy defer
+Message sent to acopy.
+****
+exim -qf
+****
diff --git a/test/scripts/0000-Basic/0117 b/test/scripts/0000-Basic/0117
new file mode 100644
index 000000000..8c1196988
--- /dev/null
+++ b/test/scripts/0000-Basic/0117
@@ -0,0 +1,11 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0118 b/test/scripts/0000-Basic/0118
new file mode 100644
index 000000000..76f94e327
--- /dev/null
+++ b/test/scripts/0000-Basic/0118
@@ -0,0 +1,7 @@
+# first_delivery and queue_running
+exim -odi userx
+****
+exim -M $msg1
+****
+exim -qf
+****
diff --git a/test/scripts/0000-Basic/0119 b/test/scripts/0000-Basic/0119
new file mode 100644
index 000000000..01b111fef
--- /dev/null
+++ b/test/scripts/0000-Basic/0119
@@ -0,0 +1,25 @@
+# -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
+****
diff --git a/test/scripts/0000-Basic/0120 b/test/scripts/0000-Basic/0120
new file mode 100644
index 000000000..a40e7cd07
--- /dev/null
+++ b/test/scripts/0000-Basic/0120
@@ -0,0 +1,8 @@
+# $message_age
+exim -odi postmaster
+****
+exim -odi -qf
+****
+sleep 3
+exim -odi -qf
+****
diff --git a/test/scripts/0000-Basic/0121 b/test/scripts/0000-Basic/0121
new file mode 100644
index 000000000..4bcb99b47
--- /dev/null
+++ b/test/scripts/0000-Basic/0121
@@ -0,0 +1,28 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0122 b/test/scripts/0000-Basic/0122
new file mode 100644
index 000000000..baa8e0b72
--- /dev/null
+++ b/test/scripts/0000-Basic/0122
@@ -0,0 +1,7 @@
+# msglog frozen messages
+exim -odi freeze
+****
+exim -odi -f '<>' unknown
+****
+sudo exim -odi -f '<>' unknown
+****
diff --git a/test/scripts/0000-Basic/0123 b/test/scripts/0000-Basic/0123
new file mode 100644
index 000000000..9f5aac013
--- /dev/null
+++ b/test/scripts/0000-Basic/0123
@@ -0,0 +1,4 @@
+# lookup_open_max
+2
+exim -d -bt x y z
+****
diff --git a/test/scripts/0000-Basic/0124 b/test/scripts/0000-Basic/0124
new file mode 100644
index 000000000..fccedda6b
--- /dev/null
+++ b/test/scripts/0000-Basic/0124
@@ -0,0 +1,9 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0125 b/test/scripts/0000-Basic/0125
new file mode 100644
index 000000000..0741f3067
--- /dev/null
+++ b/test/scripts/0000-Basic/0125
@@ -0,0 +1,208 @@
+# 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
diff --git a/test/scripts/0000-Basic/0126 b/test/scripts/0000-Basic/0126
new file mode 100644
index 000000000..3a2ca2641
--- /dev/null
+++ b/test/scripts/0000-Basic/0126
@@ -0,0 +1,3 @@
+# senders precondition in router
+2
+exim -bt userx@test.ex
diff --git a/test/scripts/0000-Basic/0127 b/test/scripts/0000-Basic/0127
new file mode 100644
index 000000000..430d425ce
--- /dev/null
+++ b/test/scripts/0000-Basic/0127
@@ -0,0 +1,70 @@
+# 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
+
diff --git a/test/scripts/0000-Basic/0128 b/test/scripts/0000-Basic/0128
new file mode 100644
index 000000000..bb6a686d0
--- /dev/null
+++ b/test/scripts/0000-Basic/0128
@@ -0,0 +1,4 @@
+# autoreply with failing once file
+exim -odi userx@test.ex
+Subject: first message; non-printer > <
+****
diff --git a/test/scripts/0000-Basic/0129 b/test/scripts/0000-Basic/0129
new file mode 100644
index 000000000..96491ba99
--- /dev/null
+++ b/test/scripts/0000-Basic/0129
@@ -0,0 +1,4 @@
+# $domain_data
+2
+exim -v -bv xxx@test.ex xxx@one.test.ex
+****
diff --git a/test/scripts/0000-Basic/0130 b/test/scripts/0000-Basic/0130
new file mode 100644
index 000000000..11f0fb717
--- /dev/null
+++ b/test/scripts/0000-Basic/0130
@@ -0,0 +1,13 @@
+# 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
diff --git a/test/scripts/0000-Basic/0131 b/test/scripts/0000-Basic/0131
new file mode 100644
index 000000000..1a1fad3cb
--- /dev/null
+++ b/test/scripts/0000-Basic/0131
@@ -0,0 +1,4 @@
+# self = pass with unseen filter
+exim -odi userx@not.test.ex
+Test message
+.
diff --git a/test/scripts/0000-Basic/0132 b/test/scripts/0000-Basic/0132
new file mode 100644
index 000000000..6f81d5fe5
--- /dev/null
+++ b/test/scripts/0000-Basic/0132
@@ -0,0 +1,5 @@
+# deliver to a FIFO (nothing listening)
+mkfifo -m 0600 DIR/test-fifo
+exim -odi userx@test.ex
+Test message
+.
diff --git a/test/scripts/0000-Basic/0133 b/test/scripts/0000-Basic/0133
new file mode 100644
index 000000000..da7848667
--- /dev/null
+++ b/test/scripts/0000-Basic/0133
@@ -0,0 +1,4 @@
+# qualify_preserve_domain
+exim -odi userx@a.test.ex, usery@b.test.ex
+Test message
+.
diff --git a/test/scripts/0000-Basic/0134 b/test/scripts/0000-Basic/0134
new file mode 100644
index 000000000..76c1f8206
--- /dev/null
+++ b/test/scripts/0000-Basic/0134
@@ -0,0 +1,33 @@
+# $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.
+.
+****
diff --git a/test/scripts/0000-Basic/0135 b/test/scripts/0000-Basic/0135
new file mode 100644
index 000000000..f8f661a43
--- /dev/null
+++ b/test/scripts/0000-Basic/0135
@@ -0,0 +1,26 @@
+# 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
diff --git a/test/scripts/0000-Basic/0136 b/test/scripts/0000-Basic/0136
new file mode 100644
index 000000000..61afd6df6
--- /dev/null
+++ b/test/scripts/0000-Basic/0136
@@ -0,0 +1,21 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0137 b/test/scripts/0000-Basic/0137
new file mode 100644
index 000000000..0335afe57
--- /dev/null
+++ b/test/scripts/0000-Basic/0137
@@ -0,0 +1,26 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0138 b/test/scripts/0000-Basic/0138
new file mode 100644
index 000000000..66719f697
--- /dev/null
+++ b/test/scripts/0000-Basic/0138
@@ -0,0 +1,21 @@
+# 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
diff --git a/test/scripts/0000-Basic/0139 b/test/scripts/0000-Basic/0139
new file mode 100644
index 000000000..6d613a7ca
--- /dev/null
+++ b/test/scripts/0000-Basic/0139
@@ -0,0 +1,27 @@
+# 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
diff --git a/test/scripts/0000-Basic/0140 b/test/scripts/0000-Basic/0140
new file mode 100644
index 000000000..74de75b6c
--- /dev/null
+++ b/test/scripts/0000-Basic/0140
@@ -0,0 +1,7 @@
+# autoreply with non-printing characters
+exim -odi reply1@test.ex
+Subject: first message; non-printer ><
+****
+exim -odi reply2@test.ex
+Subject: first message; non-printer ><
+****
diff --git a/test/scripts/0000-Basic/0141 b/test/scripts/0000-Basic/0141
new file mode 100644
index 000000000..1c22139ef
--- /dev/null
+++ b/test/scripts/0000-Basic/0141
@@ -0,0 +1,12 @@
+# -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
+****
diff --git a/test/scripts/0000-Basic/0142 b/test/scripts/0000-Basic/0142
new file mode 100644
index 000000000..f43ae68a4
--- /dev/null
+++ b/test/scripts/0000-Basic/0142
@@ -0,0 +1,5 @@
+# open file descriptor test
+exim -odi pipe filter
+Test message
+.
+****
diff --git a/test/scripts/0000-Basic/0143 b/test/scripts/0000-Basic/0143
new file mode 100644
index 000000000..41596d6b5
--- /dev/null
+++ b/test/scripts/0000-Basic/0143
@@ -0,0 +1,23 @@
+# 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
+.
+****
diff --git a/test/scripts/0000-Basic/0144 b/test/scripts/0000-Basic/0144
new file mode 100644
index 000000000..39701f1be
--- /dev/null
+++ b/test/scripts/0000-Basic/0144
@@ -0,0 +1,6 @@
+# DNS_AGAIN in manualroute
+need_ipv4
+#
+exim -odi x@remote.domain
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0145 b/test/scripts/0000-Basic/0145
new file mode 100644
index 000000000..44a37c329
--- /dev/null
+++ b/test/scripts/0000-Basic/0145
@@ -0,0 +1,14 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0146 b/test/scripts/0000-Basic/0146
new file mode 100644
index 000000000..1fb8c2d01
--- /dev/null
+++ b/test/scripts/0000-Basic/0146
@@ -0,0 +1,3 @@
+# MX pointing to IP address allowed
+exim -bt x@mxt10.test.ex
+****
diff --git a/test/scripts/0000-Basic/0147 b/test/scripts/0000-Basic/0147
new file mode 100644
index 000000000..aa3b8f6af
--- /dev/null
+++ b/test/scripts/0000-Basic/0147
@@ -0,0 +1,13 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0148 b/test/scripts/0000-Basic/0148
new file mode 100644
index 000000000..2ac079dec
--- /dev/null
+++ b/test/scripts/0000-Basic/0148
@@ -0,0 +1,4 @@
+# Missing quote in option value
+1
+exim -bP log_file_path
+****
diff --git a/test/scripts/0000-Basic/0149 b/test/scripts/0000-Basic/0149
new file mode 100644
index 000000000..3b3111638
--- /dev/null
+++ b/test/scripts/0000-Basic/0149
@@ -0,0 +1,3 @@
+# List delimiters
+exim -d-all+route -bv x@ten y@two x@test1 x@test2 x@test3-4 x@one x@six
+****
diff --git a/test/scripts/0000-Basic/0150 b/test/scripts/0000-Basic/0150
new file mode 100644
index 000000000..0b3e6eb80
--- /dev/null
+++ b/test/scripts/0000-Basic/0150
@@ -0,0 +1,6 @@
+# control of Sender: (default, includes Sender:)
+exim -odi postmaster
+From: not.the.login@test.ex
+Test message
+.
+****
diff --git a/test/scripts/0000-Basic/0151 b/test/scripts/0000-Basic/0151
new file mode 100644
index 000000000..0b83c718f
--- /dev/null
+++ b/test/scripts/0000-Basic/0151
@@ -0,0 +1,6 @@
+# control of Sender: (no_local_sender_check)
+exim -odi postmaster
+From: not.the.login@test.ex
+Test message
+.
+****
diff --git a/test/scripts/0000-Basic/0152 b/test/scripts/0000-Basic/0152
new file mode 100644
index 000000000..e5915d114
--- /dev/null
+++ b/test/scripts/0000-Basic/0152
@@ -0,0 +1,41 @@
+# 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
+.
+****
diff --git a/test/scripts/0000-Basic/0153 b/test/scripts/0000-Basic/0153
new file mode 100644
index 000000000..4415eb78b
--- /dev/null
+++ b/test/scripts/0000-Basic/0153
@@ -0,0 +1,7 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0154 b/test/scripts/0000-Basic/0154
new file mode 100644
index 000000000..2a7e19955
--- /dev/null
+++ b/test/scripts/0000-Basic/0154
@@ -0,0 +1,35 @@
+# 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
diff --git a/test/scripts/0000-Basic/0155 b/test/scripts/0000-Basic/0155
new file mode 100644
index 000000000..3cf45f8af
--- /dev/null
+++ b/test/scripts/0000-Basic/0155
@@ -0,0 +1,35 @@
+# 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
diff --git a/test/scripts/0000-Basic/0156 b/test/scripts/0000-Basic/0156
new file mode 100644
index 000000000..4a51ff5f8
--- /dev/null
+++ b/test/scripts/0000-Basic/0156
@@ -0,0 +1,10 @@
+# redirect router with forbids
+1
+exim -bt defer file include
+****
+exim -odi defer file include
+****
+2
+exim -bt unknown
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0157 b/test/scripts/0000-Basic/0157
new file mode 100644
index 000000000..03d397893
--- /dev/null
+++ b/test/scripts/0000-Basic/0157
@@ -0,0 +1,25 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0158 b/test/scripts/0000-Basic/0158
new file mode 100644
index 000000000..740bf4a8e
--- /dev/null
+++ b/test/scripts/0000-Basic/0158
@@ -0,0 +1,11 @@
+# deliver_drop_privilege and setuid=EXIMUSER
+exim -odi CALLER
+Testing
+****
+exim -odi EXIMUSER
+Testing
+****
+exim_exim -odi EXIMUSER
+Testing setuid EXIMUSER
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0159 b/test/scripts/0000-Basic/0159
new file mode 100644
index 000000000..adadf2d3a
--- /dev/null
+++ b/test/scripts/0000-Basic/0159
@@ -0,0 +1,81 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0160 b/test/scripts/0000-Basic/0160
new file mode 100644
index 000000000..0c699ce97
--- /dev/null
+++ b/test/scripts/0000-Basic/0160
@@ -0,0 +1,38 @@
+# 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
diff --git a/test/scripts/0000-Basic/0161 b/test/scripts/0000-Basic/0161
new file mode 100644
index 000000000..0d453ea25
--- /dev/null
+++ b/test/scripts/0000-Basic/0161
@@ -0,0 +1,18 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0162 b/test/scripts/0000-Basic/0162
new file mode 100644
index 000000000..6b24b20bb
--- /dev/null
+++ b/test/scripts/0000-Basic/0162
@@ -0,0 +1,354 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0163 b/test/scripts/0000-Basic/0163
new file mode 100644
index 000000000..c4500830d
--- /dev/null
+++ b/test/scripts/0000-Basic/0163
@@ -0,0 +1,25 @@
+# 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
diff --git a/test/scripts/0000-Basic/0164 b/test/scripts/0000-Basic/0164
new file mode 100644
index 000000000..1524f9be4
--- /dev/null
+++ b/test/scripts/0000-Basic/0164
@@ -0,0 +1,5 @@
+# system filter $recipients test (no shell)
+exim -odi pipe
+****
+exim -odi pipe another a-third
+****
diff --git a/test/scripts/0000-Basic/0165 b/test/scripts/0000-Basic/0165
new file mode 100644
index 000000000..09c1eac4a
--- /dev/null
+++ b/test/scripts/0000-Basic/0165
@@ -0,0 +1,5 @@
+# system filter $recipients test (with shell)
+exim -odi pipe
+****
+exim -odi pipe another a-third
+****
diff --git a/test/scripts/0000-Basic/0166 b/test/scripts/0000-Basic/0166
new file mode 100644
index 000000000..effc4fe82
--- /dev/null
+++ b/test/scripts/0000-Basic/0166
@@ -0,0 +1,2 @@
+# multiple headers_add in routers
+exim -odi a
diff --git a/test/scripts/0000-Basic/0167 b/test/scripts/0000-Basic/0167
new file mode 100644
index 000000000..2ec274a2f
--- /dev/null
+++ b/test/scripts/0000-Basic/0167
@@ -0,0 +1,11 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0168 b/test/scripts/0000-Basic/0168
new file mode 100644
index 000000000..16a2756f1
--- /dev/null
+++ b/test/scripts/0000-Basic/0168
@@ -0,0 +1,4 @@
+# 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
diff --git a/test/scripts/0000-Basic/0169 b/test/scripts/0000-Basic/0169
new file mode 100644
index 000000000..38a49e791
--- /dev/null
+++ b/test/scripts/0000-Basic/0169
@@ -0,0 +1,20 @@
+# 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
diff --git a/test/scripts/0000-Basic/0170 b/test/scripts/0000-Basic/0170
new file mode 100644
index 000000000..059cb6e94
--- /dev/null
+++ b/test/scripts/0000-Basic/0170
@@ -0,0 +1,5 @@
+# system filter to pipe without transport
+exim -odi userx
+This is a test message
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0171 b/test/scripts/0000-Basic/0171
new file mode 100644
index 000000000..b1a4d724f
--- /dev/null
+++ b/test/scripts/0000-Basic/0171
@@ -0,0 +1,3 @@
+# local user home directory
+exim -odi CALLER
+****
diff --git a/test/scripts/0000-Basic/0172 b/test/scripts/0000-Basic/0172
new file mode 100644
index 000000000..becfd5f99
--- /dev/null
+++ b/test/scripts/0000-Basic/0172
@@ -0,0 +1,4 @@
+# :unknown:
+2
+exim -bt unknown
+****
diff --git a/test/scripts/0000-Basic/0173 b/test/scripts/0000-Basic/0173
new file mode 100644
index 000000000..485bcd59b
--- /dev/null
+++ b/test/scripts/0000-Basic/0173
@@ -0,0 +1,7 @@
+# deliver time scan - pipe not using BSMTP
+exim -odi userx
+Test message
+****
+exim -odi userx usery userz
+Another test message
+****
diff --git a/test/scripts/0000-Basic/0174 b/test/scripts/0000-Basic/0174
new file mode 100644
index 000000000..8ee2d1ae9
--- /dev/null
+++ b/test/scripts/0000-Basic/0174
@@ -0,0 +1,10 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0175 b/test/scripts/0000-Basic/0175
new file mode 100644
index 000000000..ef4098586
--- /dev/null
+++ b/test/scripts/0000-Basic/0175
@@ -0,0 +1,25 @@
+# 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
diff --git a/test/scripts/0000-Basic/0176 b/test/scripts/0000-Basic/0176
new file mode 100644
index 000000000..077f1d0d1
--- /dev/null
+++ b/test/scripts/0000-Basic/0176
@@ -0,0 +1,15 @@
+# -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
+****
diff --git a/test/scripts/0000-Basic/0177 b/test/scripts/0000-Basic/0177
new file mode 100644
index 000000000..bfdf09154
--- /dev/null
+++ b/test/scripts/0000-Basic/0177
@@ -0,0 +1,51 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0178 b/test/scripts/0000-Basic/0178
new file mode 100644
index 000000000..36f276217
--- /dev/null
+++ b/test/scripts/0000-Basic/0178
@@ -0,0 +1,20 @@
+# 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  backspaces
+****
+exim -odi userx
+Subject: subject contains "quotes" and \backslashes\ and
+  non-prints over multiple
+ lines
+****
+exim -odi userx
+Subject: =?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= ABCD
+****
+no_message_check
diff --git a/test/scripts/0000-Basic/0179 b/test/scripts/0000-Basic/0179
new file mode 100644
index 000000000..58d869b4d
--- /dev/null
+++ b/test/scripts/0000-Basic/0179
@@ -0,0 +1,35 @@
+# -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
+****
diff --git a/test/scripts/0000-Basic/0180 b/test/scripts/0000-Basic/0180
new file mode 100644
index 000000000..2dbfee734
--- /dev/null
+++ b/test/scripts/0000-Basic/0180
@@ -0,0 +1,33 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0181 b/test/scripts/0000-Basic/0181
new file mode 100644
index 000000000..cf1cb05c2
--- /dev/null
+++ b/test/scripts/0000-Basic/0181
@@ -0,0 +1,23 @@
+# 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
diff --git a/test/scripts/0000-Basic/0182 b/test/scripts/0000-Basic/0182
new file mode 100644
index 000000000..126dc9d03
--- /dev/null
+++ b/test/scripts/0000-Basic/0182
@@ -0,0 +1,7 @@
+# headers added by system filter
+exim -odi userx@test.ex
+Test message.
+.
+****
+exim -qf
+****
diff --git a/test/scripts/0000-Basic/0183 b/test/scripts/0000-Basic/0183
new file mode 100644
index 000000000..7dd6ff5ea
--- /dev/null
+++ b/test/scripts/0000-Basic/0183
@@ -0,0 +1,13 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0184 b/test/scripts/0000-Basic/0184
new file mode 100644
index 000000000..4110cb126
--- /dev/null
+++ b/test/scripts/0000-Basic/0184
@@ -0,0 +1,208 @@
+# 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
diff --git a/test/scripts/0000-Basic/0185 b/test/scripts/0000-Basic/0185
new file mode 100644
index 000000000..6a59a8072
--- /dev/null
+++ b/test/scripts/0000-Basic/0185
@@ -0,0 +1,27 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0186 b/test/scripts/0000-Basic/0186
new file mode 100644
index 000000000..534d7bce6
--- /dev/null
+++ b/test/scripts/0000-Basic/0186
@@ -0,0 +1,5 @@
+# ignore_target_hosts (byname)
+exim -bt userx@other2.test.ex
+****
+exim -bt userx@ten-5-6.test.ex
+****
diff --git a/test/scripts/0000-Basic/0187 b/test/scripts/0000-Basic/0187
new file mode 100644
index 000000000..8389b2982
--- /dev/null
+++ b/test/scripts/0000-Basic/0187
@@ -0,0 +1,23 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0188 b/test/scripts/0000-Basic/0188
new file mode 100644
index 000000000..2beef48e3
--- /dev/null
+++ b/test/scripts/0000-Basic/0188
@@ -0,0 +1,6 @@
+# ETRN (non-existent command)
+exim -bs -oMa 127.0.0.1
+etrn #some.random.domain
+quit
+****
+sleep 1
diff --git a/test/scripts/0000-Basic/0189 b/test/scripts/0000-Basic/0189
new file mode 100644
index 000000000..7a2a934c3
--- /dev/null
+++ b/test/scripts/0000-Basic/0189
@@ -0,0 +1,11 @@
+# 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....
+****
diff --git a/test/scripts/0000-Basic/0190 b/test/scripts/0000-Basic/0190
new file mode 100644
index 000000000..9bd9afce5
--- /dev/null
+++ b/test/scripts/0000-Basic/0190
@@ -0,0 +1,117 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0191 b/test/scripts/0000-Basic/0191
new file mode 100644
index 000000000..4ac11154d
--- /dev/null
+++ b/test/scripts/0000-Basic/0191
@@ -0,0 +1,22 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0192 b/test/scripts/0000-Basic/0192
new file mode 100644
index 000000000..a015ccac0
--- /dev/null
+++ b/test/scripts/0000-Basic/0192
@@ -0,0 +1,12 @@
+# 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
diff --git a/test/scripts/0000-Basic/0193 b/test/scripts/0000-Basic/0193
new file mode 100644
index 000000000..906b82a54
--- /dev/null
+++ b/test/scripts/0000-Basic/0193
@@ -0,0 +1,4 @@
+# message_size_limit on batched local delivery
+exim -odi userx usery userz
+This is a test message.
+****
diff --git a/test/scripts/0000-Basic/0194 b/test/scripts/0000-Basic/0194
new file mode 100644
index 000000000..172d4996f
--- /dev/null
+++ b/test/scripts/0000-Basic/0194
@@ -0,0 +1,16 @@
+# 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
diff --git a/test/scripts/0000-Basic/0195 b/test/scripts/0000-Basic/0195
new file mode 100644
index 000000000..3c487ded1
--- /dev/null
+++ b/test/scripts/0000-Basic/0195
@@ -0,0 +1,25 @@
+# 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
diff --git a/test/scripts/0000-Basic/0196 b/test/scripts/0000-Basic/0196
new file mode 100644
index 000000000..7100f1e92
--- /dev/null
+++ b/test/scripts/0000-Basic/0196
@@ -0,0 +1,17 @@
+# 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
diff --git a/test/scripts/0000-Basic/0197 b/test/scripts/0000-Basic/0197
new file mode 100644
index 000000000..dc6bb520e
--- /dev/null
+++ b/test/scripts/0000-Basic/0197
@@ -0,0 +1,19 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0198 b/test/scripts/0000-Basic/0198
new file mode 100644
index 000000000..2305559fe
--- /dev/null
+++ b/test/scripts/0000-Basic/0198
@@ -0,0 +1,31 @@
+# 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.
+.
+****
diff --git a/test/scripts/0000-Basic/0199 b/test/scripts/0000-Basic/0199
new file mode 100644
index 000000000..46573afdf
--- /dev/null
+++ b/test/scripts/0000-Basic/0199
@@ -0,0 +1,8 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0200 b/test/scripts/0000-Basic/0200
new file mode 100644
index 000000000..cf800aa01
--- /dev/null
+++ b/test/scripts/0000-Basic/0200
@@ -0,0 +1,4 @@
+# syntax error in host name
+2
+exim -bt xx@host.test.ex yy@host.test.ex
+****
diff --git a/test/scripts/0000-Basic/0201 b/test/scripts/0000-Basic/0201
new file mode 100644
index 000000000..6c8e4441e
--- /dev/null
+++ b/test/scripts/0000-Basic/0201
@@ -0,0 +1,21 @@
+# 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
diff --git a/test/scripts/0000-Basic/0202 b/test/scripts/0000-Basic/0202
new file mode 100644
index 000000000..0bba061e7
--- /dev/null
+++ b/test/scripts/0000-Basic/0202
@@ -0,0 +1,40 @@
+# .. 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
+****
diff --git a/test/scripts/0000-Basic/0203 b/test/scripts/0000-Basic/0203
new file mode 100644
index 000000000..857488da7
--- /dev/null
+++ b/test/scripts/0000-Basic/0203
@@ -0,0 +1,30 @@
+# 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
diff --git a/test/scripts/0000-Basic/0204 b/test/scripts/0000-Basic/0204
new file mode 100644
index 000000000..00d27890f
--- /dev/null
+++ b/test/scripts/0000-Basic/0204
@@ -0,0 +1,9 @@
+# -N
+exim -odi -N userx@test.ex
+Lost
+****
+exim -N -odq userx@test.ex
+Should be lost
+****
+exim -qf
+****
diff --git a/test/scripts/0000-Basic/0205 b/test/scripts/0000-Basic/0205
new file mode 100644
index 000000000..d7367b9ff
--- /dev/null
+++ b/test/scripts/0000-Basic/0205
@@ -0,0 +1,12 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0206 b/test/scripts/0000-Basic/0206
new file mode 100644
index 000000000..baf8571ef
--- /dev/null
+++ b/test/scripts/0000-Basic/0206
@@ -0,0 +1,12 @@
+# 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
diff --git a/test/scripts/0000-Basic/0207 b/test/scripts/0000-Basic/0207
new file mode 100644
index 000000000..add3ba1e7
--- /dev/null
+++ b/test/scripts/0000-Basic/0207
@@ -0,0 +1,9 @@
+# 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
diff --git a/test/scripts/0000-Basic/0208 b/test/scripts/0000-Basic/0208
new file mode 100644
index 000000000..24367df0e
--- /dev/null
+++ b/test/scripts/0000-Basic/0208
@@ -0,0 +1,29 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0209 b/test/scripts/0000-Basic/0209
new file mode 100644
index 000000000..3bb43f78f
--- /dev/null
+++ b/test/scripts/0000-Basic/0209
@@ -0,0 +1,72 @@
+# 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
diff --git a/test/scripts/0000-Basic/0210 b/test/scripts/0000-Basic/0210
new file mode 100644
index 000000000..ff6d03a9e
--- /dev/null
+++ b/test/scripts/0000-Basic/0210
@@ -0,0 +1,22 @@
+# 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.
+****
diff --git a/test/scripts/0000-Basic/0211 b/test/scripts/0000-Basic/0211
new file mode 100644
index 000000000..ddf99060b
--- /dev/null
+++ b/test/scripts/0000-Basic/0211
@@ -0,0 +1,41 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0212 b/test/scripts/0000-Basic/0212
new file mode 100644
index 000000000..534f0d94c
--- /dev/null
+++ b/test/scripts/0000-Basic/0212
@@ -0,0 +1,42 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0213 b/test/scripts/0000-Basic/0213
new file mode 100644
index 000000000..5bf073ea5
--- /dev/null
+++ b/test/scripts/0000-Basic/0213
@@ -0,0 +1,20 @@
+# 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
diff --git a/test/scripts/0000-Basic/0214 b/test/scripts/0000-Basic/0214
new file mode 100644
index 000000000..fa2a5334a
--- /dev/null
+++ b/test/scripts/0000-Basic/0214
@@ -0,0 +1,44 @@
+# 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
diff --git a/test/scripts/0000-Basic/0215 b/test/scripts/0000-Basic/0215
new file mode 100644
index 000000000..ab108bc87
--- /dev/null
+++ b/test/scripts/0000-Basic/0215
@@ -0,0 +1,192 @@
+# 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
diff --git a/test/scripts/0000-Basic/0216 b/test/scripts/0000-Basic/0216
new file mode 100644
index 000000000..50ae0230a
--- /dev/null
+++ b/test/scripts/0000-Basic/0216
@@ -0,0 +1,113 @@
+# 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
diff --git a/test/scripts/0000-Basic/0217 b/test/scripts/0000-Basic/0217
new file mode 100644
index 000000000..c91d24254
--- /dev/null
+++ b/test/scripts/0000-Basic/0217
@@ -0,0 +1,319 @@
+# 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
diff --git a/test/scripts/0000-Basic/0218 b/test/scripts/0000-Basic/0218
new file mode 100644
index 000000000..f9d036ae3
--- /dev/null
+++ b/test/scripts/0000-Basic/0218
@@ -0,0 +1,94 @@
+# 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
diff --git a/test/scripts/0000-Basic/0219 b/test/scripts/0000-Basic/0219
new file mode 100644
index 000000000..f5de21e21
--- /dev/null
+++ b/test/scripts/0000-Basic/0219
@@ -0,0 +1,8 @@
+# -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}
+****
diff --git a/test/scripts/0000-Basic/0220 b/test/scripts/0000-Basic/0220
new file mode 100644
index 000000000..2ac40c98d
--- /dev/null
+++ b/test/scripts/0000-Basic/0220
@@ -0,0 +1,43 @@
+# 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
diff --git a/test/scripts/0000-Basic/0221 b/test/scripts/0000-Basic/0221
new file mode 100644
index 000000000..d08fc4abd
--- /dev/null
+++ b/test/scripts/0000-Basic/0221
@@ -0,0 +1,37 @@
+# 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
diff --git a/test/scripts/0000-Basic/0222 b/test/scripts/0000-Basic/0222
new file mode 100644
index 000000000..d2bda8e22
--- /dev/null
+++ b/test/scripts/0000-Basic/0222
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0223 b/test/scripts/0000-Basic/0223
new file mode 100644
index 000000000..76671f625
--- /dev/null
+++ b/test/scripts/0000-Basic/0223
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/0000-Basic/0224 b/test/scripts/0000-Basic/0224
new file mode 100644
index 000000000..565aad55a
--- /dev/null
+++ b/test/scripts/0000-Basic/0224
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/0000-Basic/0225 b/test/scripts/0000-Basic/0225
new file mode 100644
index 000000000..ac6cf59a3
--- /dev/null
+++ b/test/scripts/0000-Basic/0225
@@ -0,0 +1,5 @@
+# self = pass and unseen
+exim -odi copy@localhost
+Original message
+****
+no_message_check
diff --git a/test/scripts/0000-Basic/0226 b/test/scripts/0000-Basic/0226
new file mode 100644
index 000000000..ce7e4701e
--- /dev/null
+++ b/test/scripts/0000-Basic/0226
@@ -0,0 +1,8 @@
+# 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
diff --git a/test/scripts/0000-Basic/0227 b/test/scripts/0000-Basic/0227
new file mode 100644
index 000000000..62832e012
--- /dev/null
+++ b/test/scripts/0000-Basic/0227
@@ -0,0 +1,233 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0228 b/test/scripts/0000-Basic/0228
new file mode 100644
index 000000000..827effae3
--- /dev/null
+++ b/test/scripts/0000-Basic/0228
@@ -0,0 +1,6 @@
+# fallback hosts and self=send on manualroute
+need_ipv4
+#
+exim -odi abcd@x.y.z
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0229 b/test/scripts/0000-Basic/0229
new file mode 100644
index 000000000..c968376df
--- /dev/null
+++ b/test/scripts/0000-Basic/0229
@@ -0,0 +1,6 @@
+# hosts_max_try
+need_ipv4
+#
+exim -odi a@test.ex
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0230 b/test/scripts/0000-Basic/0230
new file mode 100644
index 000000000..1bd97d670
--- /dev/null
+++ b/test/scripts/0000-Basic/0230
@@ -0,0 +1,62 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0231 b/test/scripts/0000-Basic/0231
new file mode 100644
index 000000000..561dac235
--- /dev/null
+++ b/test/scripts/0000-Basic/0231
@@ -0,0 +1,29 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0232 b/test/scripts/0000-Basic/0232
new file mode 100644
index 000000000..989174d3e
--- /dev/null
+++ b/test/scripts/0000-Basic/0232
@@ -0,0 +1,3 @@
+# Inline filter text
+exim -bt filter1.test.ex
+****
diff --git a/test/scripts/0000-Basic/0233 b/test/scripts/0000-Basic/0233
new file mode 100644
index 000000000..0acb13fca
--- /dev/null
+++ b/test/scripts/0000-Basic/0233
@@ -0,0 +1,12 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0234 b/test/scripts/0000-Basic/0234
new file mode 100644
index 000000000..41eaafa72
--- /dev/null
+++ b/test/scripts/0000-Basic/0234
@@ -0,0 +1,18 @@
+# @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
+****
diff --git a/test/scripts/0000-Basic/0235 b/test/scripts/0000-Basic/0235
new file mode 100644
index 000000000..2183f6fb8
--- /dev/null
+++ b/test/scripts/0000-Basic/0235
@@ -0,0 +1,4 @@
+# redirect with forced lookup fail and no_more
+2
+exim -bt xxx
+****
diff --git a/test/scripts/0000-Basic/0236 b/test/scripts/0000-Basic/0236
new file mode 100644
index 000000000..b9d3f4c4d
--- /dev/null
+++ b/test/scripts/0000-Basic/0236
@@ -0,0 +1,4 @@
+# Macro name longer than 63 characters
+1
+exim -bP qualify_domain
+****
diff --git a/test/scripts/0000-Basic/0237 b/test/scripts/0000-Basic/0237
new file mode 100644
index 000000000..9cb2aa655
--- /dev/null
+++ b/test/scripts/0000-Basic/0237
@@ -0,0 +1,8 @@
+# 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
diff --git a/test/scripts/0000-Basic/0238 b/test/scripts/0000-Basic/0238
new file mode 100644
index 000000000..b7365d7b9
--- /dev/null
+++ b/test/scripts/0000-Basic/0238
@@ -0,0 +1,9 @@
+# require_files with failing expansion or relative path
+need_ipv4
+#
+1
+exim -bt userx@test.ex
+****
+1
+exim -bt xxx@a.b.c
+****
diff --git a/test/scripts/0000-Basic/0239 b/test/scripts/0000-Basic/0239
new file mode 100644
index 000000000..d89570e30
--- /dev/null
+++ b/test/scripts/0000-Basic/0239
@@ -0,0 +1,11 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0240 b/test/scripts/0000-Basic/0240
new file mode 100644
index 000000000..3bb5bbb70
--- /dev/null
+++ b/test/scripts/0000-Basic/0240
@@ -0,0 +1,4 @@
+# create_directory and directory_mode
+exim -odi userx@test.ex
+****
+ls -ld DIR/test-mail/subdir | cut -f 1 -d ' '
diff --git a/test/scripts/0000-Basic/0241 b/test/scripts/0000-Basic/0241
new file mode 100644
index 000000000..cfb7707ae
--- /dev/null
+++ b/test/scripts/0000-Basic/0241
@@ -0,0 +1,10 @@
+# filter freeze + send message fails
+exim -odq userx@test.ex
+****
+exim -qf
+****
+exim -Mt $msg1
+****
+exim -qf
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0242 b/test/scripts/0000-Basic/0242
new file mode 100644
index 000000000..38e49edae
--- /dev/null
+++ b/test/scripts/0000-Basic/0242
@@ -0,0 +1,39 @@
+# 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\
+****
diff --git a/test/scripts/0000-Basic/0243 b/test/scripts/0000-Basic/0243
new file mode 100644
index 000000000..e51fcd461
--- /dev/null
+++ b/test/scripts/0000-Basic/0243
@@ -0,0 +1,10 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0244 b/test/scripts/0000-Basic/0244
new file mode 100644
index 000000000..95f291db5
--- /dev/null
+++ b/test/scripts/0000-Basic/0244
@@ -0,0 +1,7 @@
+# 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}}}}
+****
diff --git a/test/scripts/0000-Basic/0245 b/test/scripts/0000-Basic/0245
new file mode 100644
index 000000000..2f96bea6d
--- /dev/null
+++ b/test/scripts/0000-Basic/0245
@@ -0,0 +1,12 @@
+# -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
diff --git a/test/scripts/0000-Basic/0246 b/test/scripts/0000-Basic/0246
new file mode 100644
index 000000000..d8986532d
--- /dev/null
+++ b/test/scripts/0000-Basic/0246
@@ -0,0 +1,4 @@
+# forbid lookup/exists in filter - with autoreply
+exim -odi filter
+.
+****
diff --git a/test/scripts/0000-Basic/0247 b/test/scripts/0000-Basic/0247
new file mode 100644
index 000000000..e2d2eb5aa
--- /dev/null
+++ b/test/scripts/0000-Basic/0247
@@ -0,0 +1,6 @@
+# :blackhole: with deferred other address
+exim -odi blackhole devnull other
+.
+****
+exim -q
+****
diff --git a/test/scripts/0000-Basic/0248 b/test/scripts/0000-Basic/0248
new file mode 100644
index 000000000..178169ac5
--- /dev/null
+++ b/test/scripts/0000-Basic/0248
@@ -0,0 +1,186 @@
+# 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
diff --git a/test/scripts/0000-Basic/0249 b/test/scripts/0000-Basic/0249
new file mode 100644
index 000000000..2394cd76b
--- /dev/null
+++ b/test/scripts/0000-Basic/0249
@@ -0,0 +1,5 @@
+# local part case in rewrites
+exim -brw User@a.domain
+****
+exim -d-all+rewrite -brw User@c.domain
+****
diff --git a/test/scripts/0000-Basic/0250 b/test/scripts/0000-Basic/0250
new file mode 100644
index 000000000..3fbd98871
--- /dev/null
+++ b/test/scripts/0000-Basic/0250
@@ -0,0 +1,16 @@
+# 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
diff --git a/test/scripts/0000-Basic/0251 b/test/scripts/0000-Basic/0251
new file mode 100644
index 000000000..457154389
--- /dev/null
+++ b/test/scripts/0000-Basic/0251
@@ -0,0 +1,29 @@
+# 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
diff --git a/test/scripts/0000-Basic/0252 b/test/scripts/0000-Basic/0252
new file mode 100644
index 000000000..5eb20138a
--- /dev/null
+++ b/test/scripts/0000-Basic/0252
@@ -0,0 +1,13 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0253 b/test/scripts/0000-Basic/0253
new file mode 100644
index 000000000..56362e0db
--- /dev/null
+++ b/test/scripts/0000-Basic/0253
@@ -0,0 +1,55 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0254 b/test/scripts/0000-Basic/0254
new file mode 100644
index 000000000..b4977a36a
--- /dev/null
+++ b/test/scripts/0000-Basic/0254
@@ -0,0 +1,28 @@
+# 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
diff --git a/test/scripts/0000-Basic/0255 b/test/scripts/0000-Basic/0255
new file mode 100644
index 000000000..e27e0e735
--- /dev/null
+++ b/test/scripts/0000-Basic/0255
@@ -0,0 +1,21 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0256 b/test/scripts/0000-Basic/0256
new file mode 100644
index 000000000..0eefe7485
--- /dev/null
+++ b/test/scripts/0000-Basic/0256
@@ -0,0 +1,4 @@
+# errors_copy
+exim -odi unknown
+.
+****
diff --git a/test/scripts/0000-Basic/0257 b/test/scripts/0000-Basic/0257
new file mode 100644
index 000000000..43a1c3c18
--- /dev/null
+++ b/test/scripts/0000-Basic/0257
@@ -0,0 +1,6 @@
+# fallback hosts on transport with dnslookup using A record
+need_ipv4
+#
+exim -odi abcd@ten-1.test.ex
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0258 b/test/scripts/0000-Basic/0258
new file mode 100644
index 000000000..13e176765
--- /dev/null
+++ b/test/scripts/0000-Basic/0258
@@ -0,0 +1,44 @@
+# CRs in messages
+exim -odi userx
+crheader: includes < > and ends CRLF
+Subject: this is still a header
+
+Text includes < > and ends CRLF
+Text includes < > and ends CRLF
+CR-dot-CR in body: . line continues
+.
+****
+exim -i -odi userx
+crheader: includes < > and ends CRLF
+
+Text includes < > and ends CRLF
+Text includes < > and ends CRLF
+CR-dot-CR in body: . line continues
+.
+****
+exim -odi userx
+crheader: includes < > and ends CRLF
+
+Text includes < > and ends CRLF
+Text includes < > and ends CRLF
+CR-dot-CR in body: . line 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:. xyz
+. weird header line
+Not: a header line
+****
+exim -odi -bs <DIR/aux-fixed/TESTNUM.m3
+****
+exim -odi -bs <DIR/aux-fixed/TESTNUM.m4
+****
diff --git a/test/scripts/0000-Basic/0259 b/test/scripts/0000-Basic/0259
new file mode 100644
index 000000000..211b473b3
--- /dev/null
+++ b/test/scripts/0000-Basic/0259
@@ -0,0 +1,65 @@
+# 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 cd
+****
+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
+****
diff --git a/test/scripts/0000-Basic/0260 b/test/scripts/0000-Basic/0260
new file mode 100644
index 000000000..300814605
--- /dev/null
+++ b/test/scripts/0000-Basic/0260
@@ -0,0 +1,6 @@
+# local delivery config problems
+exim -odi bad.return bad.return2 bad.uid exp.fail userx
+****
+exim -qf
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0261 b/test/scripts/0000-Basic/0261
new file mode 100644
index 000000000..45e4e066b
--- /dev/null
+++ b/test/scripts/0000-Basic/0261
@@ -0,0 +1,8 @@
+# remote delivery config problems
+need_ipv4
+#
+exim -N -odi bad.return bad.return2 no.hosts userx
+****
+exim -qf
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0262 b/test/scripts/0000-Basic/0262
new file mode 100644
index 000000000..f0722c629
--- /dev/null
+++ b/test/scripts/0000-Basic/0262
@@ -0,0 +1,4 @@
+# too many environment settings in pipe
+exim -odi userx
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0263 b/test/scripts/0000-Basic/0263
new file mode 100644
index 000000000..4f4eb9190
--- /dev/null
+++ b/test/scripts/0000-Basic/0263
@@ -0,0 +1,5 @@
+# pass_router
+need_ipv4
+#
+2
+exim -bt x@domain0 x@domain1 x@domain2
diff --git a/test/scripts/0000-Basic/0264 b/test/scripts/0000-Basic/0264
new file mode 100644
index 000000000..5d6bcfb29
--- /dev/null
+++ b/test/scripts/0000-Basic/0264
@@ -0,0 +1,39 @@
+# 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
diff --git a/test/scripts/0000-Basic/0265 b/test/scripts/0000-Basic/0265
new file mode 100644
index 000000000..9d8428cce
--- /dev/null
+++ b/test/scripts/0000-Basic/0265
@@ -0,0 +1,3 @@
+# error message when filter disabled
+1
+exim -bt userx@x.y
diff --git a/test/scripts/0000-Basic/0266 b/test/scripts/0000-Basic/0266
new file mode 100644
index 000000000..5c6ffa7e3
--- /dev/null
+++ b/test/scripts/0000-Basic/0266
@@ -0,0 +1,18 @@
+# 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
diff --git a/test/scripts/0000-Basic/0267 b/test/scripts/0000-Basic/0267
new file mode 100644
index 000000000..044eb073a
--- /dev/null
+++ b/test/scripts/0000-Basic/0267
@@ -0,0 +1,4 @@
+# prefix/suffix when router skipped
+2
+exim -bt pre-x@test.ex x-post@test.ex pre-z@test.ex
+****
diff --git a/test/scripts/0000-Basic/0268 b/test/scripts/0000-Basic/0268
new file mode 100644
index 000000000..2cb2f8376
--- /dev/null
+++ b/test/scripts/0000-Basic/0268
@@ -0,0 +1,9 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0269 b/test/scripts/0000-Basic/0269
new file mode 100644
index 000000000..9d8428cce
--- /dev/null
+++ b/test/scripts/0000-Basic/0269
@@ -0,0 +1,3 @@
+# error message when filter disabled
+1
+exim -bt userx@x.y
diff --git a/test/scripts/0000-Basic/0270 b/test/scripts/0000-Basic/0270
new file mode 100644
index 000000000..bf29b941e
--- /dev/null
+++ b/test/scripts/0000-Basic/0270
@@ -0,0 +1,22 @@
+# 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
diff --git a/test/scripts/0000-Basic/0271 b/test/scripts/0000-Basic/0271
new file mode 100644
index 000000000..044eb073a
--- /dev/null
+++ b/test/scripts/0000-Basic/0271
@@ -0,0 +1,4 @@
+# prefix/suffix when router skipped
+2
+exim -bt pre-x@test.ex x-post@test.ex pre-z@test.ex
+****
diff --git a/test/scripts/0000-Basic/0272 b/test/scripts/0000-Basic/0272
new file mode 100644
index 000000000..7a1301939
--- /dev/null
+++ b/test/scripts/0000-Basic/0272
@@ -0,0 +1,10 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0273 b/test/scripts/0000-Basic/0273
new file mode 100644
index 000000000..a5c74d2ae
--- /dev/null
+++ b/test/scripts/0000-Basic/0273
@@ -0,0 +1,19 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0274 b/test/scripts/0000-Basic/0274
new file mode 100644
index 000000000..6431eb0d7
--- /dev/null
+++ b/test/scripts/0000-Basic/0274
@@ -0,0 +1,4 @@
+# address_data
+exim -odi userx@r1 userx@r2 userx@r3 userx@r4 userx@r5
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0275 b/test/scripts/0000-Basic/0275
new file mode 100644
index 000000000..410efa8d3
--- /dev/null
+++ b/test/scripts/0000-Basic/0275
@@ -0,0 +1,5 @@
+# named domain lists
+exim -d -bt userx@test.ex
+****
+exim -d -odi userx@test.ex
+****
diff --git a/test/scripts/0000-Basic/0276 b/test/scripts/0000-Basic/0276
new file mode 100644
index 000000000..467c11e49
--- /dev/null
+++ b/test/scripts/0000-Basic/0276
@@ -0,0 +1,36 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0277 b/test/scripts/0000-Basic/0277
new file mode 100644
index 000000000..20c2454c6
--- /dev/null
+++ b/test/scripts/0000-Basic/0277
@@ -0,0 +1,16 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0278 b/test/scripts/0000-Basic/0278
new file mode 100644
index 000000000..48c5172af
--- /dev/null
+++ b/test/scripts/0000-Basic/0278
@@ -0,0 +1,8 @@
+# named local part lists
+exim -d -bt CALLER@test.ex
+****
+exim -d -odi CALLER@test.ex
+****
+2
+exim -d -bt unknown@test.ex
+****
diff --git a/test/scripts/0000-Basic/0279 b/test/scripts/0000-Basic/0279
new file mode 100644
index 000000000..b10d79bb0
--- /dev/null
+++ b/test/scripts/0000-Basic/0279
@@ -0,0 +1,6 @@
+# named address lists
+exim -d -f CALLER@test.ex -bt CALLER@test.ex
+****
+2
+exim -d -f user1@fun.1 -bt CALLER@test.ex
+****
diff --git a/test/scripts/0000-Basic/0280 b/test/scripts/0000-Basic/0280
new file mode 100644
index 000000000..00cca8f7b
--- /dev/null
+++ b/test/scripts/0000-Basic/0280
@@ -0,0 +1,6 @@
+# errors_copy
+exim -odi -f spqr@test.ex spqr@test.ex
+****
+exim -odi -f abcd@test.ex abcd@test.ex
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0281 b/test/scripts/0000-Basic/0281
new file mode 100644
index 000000000..ae5624792
--- /dev/null
+++ b/test/scripts/0000-Basic/0281
@@ -0,0 +1,39 @@
+# @ 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
+****
diff --git a/test/scripts/0000-Basic/0282 b/test/scripts/0000-Basic/0282
new file mode 100644
index 000000000..f53e8a9fb
--- /dev/null
+++ b/test/scripts/0000-Basic/0282
@@ -0,0 +1,46 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0283 b/test/scripts/0000-Basic/0283
new file mode 100644
index 000000000..dd0d48d1e
--- /dev/null
+++ b/test/scripts/0000-Basic/0283
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/0000-Basic/0284 b/test/scripts/0000-Basic/0284
new file mode 100644
index 000000000..65bb051cc
--- /dev/null
+++ b/test/scripts/0000-Basic/0284
@@ -0,0 +1,13 @@
+# 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
+.
+****
diff --git a/test/scripts/0000-Basic/0285 b/test/scripts/0000-Basic/0285
new file mode 100644
index 000000000..1ecc64202
--- /dev/null
+++ b/test/scripts/0000-Basic/0285
@@ -0,0 +1,102 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0286 b/test/scripts/0000-Basic/0286
new file mode 100644
index 000000000..61c8b5173
--- /dev/null
+++ b/test/scripts/0000-Basic/0286
@@ -0,0 +1,153 @@
+# 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);
+****
diff --git a/test/scripts/0000-Basic/0287 b/test/scripts/0000-Basic/0287
new file mode 100644
index 000000000..7ef2fccfb
--- /dev/null
+++ b/test/scripts/0000-Basic/0287
@@ -0,0 +1,26 @@
+# 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
diff --git a/test/scripts/0000-Basic/0288 b/test/scripts/0000-Basic/0288
new file mode 100644
index 000000000..7b867cedb
--- /dev/null
+++ b/test/scripts/0000-Basic/0288
@@ -0,0 +1,26 @@
+# 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
diff --git a/test/scripts/0000-Basic/0289 b/test/scripts/0000-Basic/0289
new file mode 100644
index 000000000..2483b3706
--- /dev/null
+++ b/test/scripts/0000-Basic/0289
@@ -0,0 +1,15 @@
+# recipients_max
+1
+exim -odi userx usery
+From: me
+
+Body
+.
+****
+1
+exim -odi -oep userx usery
+From: me
+
+Body
+.
+****
diff --git a/test/scripts/0000-Basic/0290 b/test/scripts/0000-Basic/0290
new file mode 100644
index 000000000..48907f4fc
--- /dev/null
+++ b/test/scripts/0000-Basic/0290
@@ -0,0 +1,9 @@
+# .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
+****
diff --git a/test/scripts/0000-Basic/0291 b/test/scripts/0000-Basic/0291
new file mode 100644
index 000000000..7dff7b18e
--- /dev/null
+++ b/test/scripts/0000-Basic/0291
@@ -0,0 +1,3 @@
+# repeat_use
+exim -v -bv a@one b@one a@two b@two
+****
diff --git a/test/scripts/0000-Basic/0292 b/test/scripts/0000-Basic/0292
new file mode 100644
index 000000000..3ca0bf6d6
--- /dev/null
+++ b/test/scripts/0000-Basic/0292
@@ -0,0 +1,5 @@
+# manualroute passing hosts to local & remote transports
+need_ipv4
+#
+exim -odi -v -N userx@t1 userx@t2
+****
diff --git a/test/scripts/0000-Basic/0293 b/test/scripts/0000-Basic/0293
new file mode 100644
index 000000000..159353530
--- /dev/null
+++ b/test/scripts/0000-Basic/0293
@@ -0,0 +1,22 @@
+# 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
diff --git a/test/scripts/0000-Basic/0294 b/test/scripts/0000-Basic/0294
new file mode 100644
index 000000000..bbb595ddd
--- /dev/null
+++ b/test/scripts/0000-Basic/0294
@@ -0,0 +1,44 @@
+# 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
diff --git a/test/scripts/0000-Basic/0295 b/test/scripts/0000-Basic/0295
new file mode 100644
index 000000000..4b6183705
--- /dev/null
+++ b/test/scripts/0000-Basic/0295
@@ -0,0 +1,15 @@
+# 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
+.
+****
diff --git a/test/scripts/0000-Basic/0296 b/test/scripts/0000-Basic/0296
new file mode 100644
index 000000000..fb6bd3fc3
--- /dev/null
+++ b/test/scripts/0000-Basic/0296
@@ -0,0 +1,9 @@
+# 'fail' in system filter
+exim -odi failure
+Test junk data
+.
+****
+exim -odi -f '<>' failure
+Test junk data
+.
+****
diff --git a/test/scripts/0000-Basic/0297 b/test/scripts/0000-Basic/0297
new file mode 100644
index 000000000..2ce6ca308
--- /dev/null
+++ b/test/scripts/0000-Basic/0297
@@ -0,0 +1,17 @@
+# 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//
+****
diff --git a/test/scripts/0000-Basic/0298 b/test/scripts/0000-Basic/0298
new file mode 100644
index 000000000..1435d9d78
--- /dev/null
+++ b/test/scripts/0000-Basic/0298
@@ -0,0 +1,5 @@
+# different logging text for system filter fail messages
+exim -odi failure1
+****
+exim -odi failure2
+****
diff --git a/test/scripts/0000-Basic/0299 b/test/scripts/0000-Basic/0299
new file mode 100644
index 000000000..b89a756c8
--- /dev/null
+++ b/test/scripts/0000-Basic/0299
@@ -0,0 +1,32 @@
+# 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
diff --git a/test/scripts/0000-Basic/0300 b/test/scripts/0000-Basic/0300
new file mode 100644
index 000000000..053aec804
--- /dev/null
+++ b/test/scripts/0000-Basic/0300
@@ -0,0 +1,115 @@
+# 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
diff --git a/test/scripts/0000-Basic/0301 b/test/scripts/0000-Basic/0301
new file mode 100644
index 000000000..4add8f42c
--- /dev/null
+++ b/test/scripts/0000-Basic/0301
@@ -0,0 +1,54 @@
+# 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
diff --git a/test/scripts/0000-Basic/0302 b/test/scripts/0000-Basic/0302
new file mode 100644
index 000000000..413c3a2af
--- /dev/null
+++ b/test/scripts/0000-Basic/0302
@@ -0,0 +1,18 @@
+# -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
diff --git a/test/scripts/0000-Basic/0303 b/test/scripts/0000-Basic/0303
new file mode 100644
index 000000000..854206e4a
--- /dev/null
+++ b/test/scripts/0000-Basic/0303
@@ -0,0 +1,30 @@
+# 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
diff --git a/test/scripts/0000-Basic/0304 b/test/scripts/0000-Basic/0304
new file mode 100644
index 000000000..8b1c39d0f
--- /dev/null
+++ b/test/scripts/0000-Basic/0304
@@ -0,0 +1,34 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0305 b/test/scripts/0000-Basic/0305
new file mode 100644
index 000000000..e6b752363
--- /dev/null
+++ b/test/scripts/0000-Basic/0305
@@ -0,0 +1,10 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0306 b/test/scripts/0000-Basic/0306
new file mode 100644
index 000000000..8a2dc9110
--- /dev/null
+++ b/test/scripts/0000-Basic/0306
@@ -0,0 +1,23 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0307 b/test/scripts/0000-Basic/0307
new file mode 100644
index 000000000..72985608b
--- /dev/null
+++ b/test/scripts/0000-Basic/0307
@@ -0,0 +1,9 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0308 b/test/scripts/0000-Basic/0308
new file mode 100644
index 000000000..39b9ba259
--- /dev/null
+++ b/test/scripts/0000-Basic/0308
@@ -0,0 +1,11 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0309 b/test/scripts/0000-Basic/0309
new file mode 100644
index 000000000..81d4d40bb
--- /dev/null
+++ b/test/scripts/0000-Basic/0309
@@ -0,0 +1,25 @@
+# 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
diff --git a/test/scripts/0000-Basic/0310 b/test/scripts/0000-Basic/0310
new file mode 100644
index 000000000..e3ae01c4c
--- /dev/null
+++ b/test/scripts/0000-Basic/0310
@@ -0,0 +1,4 @@
+# bounce message for quota exceeded; no_bounce_return_message
+exim -odi abcd
+This is a test message. This is a test message.
+****
diff --git a/test/scripts/0000-Basic/0311 b/test/scripts/0000-Basic/0311
new file mode 100644
index 000000000..4a7132ed7
--- /dev/null
+++ b/test/scripts/0000-Basic/0311
@@ -0,0 +1,16 @@
+# 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
diff --git a/test/scripts/0000-Basic/0312 b/test/scripts/0000-Basic/0312
new file mode 100644
index 000000000..19cab2c0a
--- /dev/null
+++ b/test/scripts/0000-Basic/0312
@@ -0,0 +1,6 @@
+# RBL timeout logging
+exim -bh V4NET.0.0.1
+mail from:<userx@x>
+rcpt to:<userx@y>
+quit
+****
diff --git a/test/scripts/0000-Basic/0313 b/test/scripts/0000-Basic/0313
new file mode 100644
index 000000000..c118a28d8
--- /dev/null
+++ b/test/scripts/0000-Basic/0313
@@ -0,0 +1,13 @@
+# 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
diff --git a/test/scripts/0000-Basic/0314 b/test/scripts/0000-Basic/0314
new file mode 100644
index 000000000..6fec248d8
--- /dev/null
+++ b/test/scripts/0000-Basic/0314
@@ -0,0 +1,5 @@
+# host_reject_connection
+exim -bh V4NET.0.0.1
+****
+exim -bh V4NET.0.0.2
+****
diff --git a/test/scripts/0000-Basic/0315 b/test/scripts/0000-Basic/0315
new file mode 100644
index 000000000..e6fc59bb9
--- /dev/null
+++ b/test/scripts/0000-Basic/0315
@@ -0,0 +1,7 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0316 b/test/scripts/0000-Basic/0316
new file mode 100644
index 000000000..7a5cc26ba
--- /dev/null
+++ b/test/scripts/0000-Basic/0316
@@ -0,0 +1,4 @@
+# foranyaddress
+exim -bf DIR/aux-fixed/TESTNUM.f-user </dev/null
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0317 b/test/scripts/0000-Basic/0317
new file mode 100644
index 000000000..021246ecb
--- /dev/null
+++ b/test/scripts/0000-Basic/0317
@@ -0,0 +1,19 @@
+# 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
diff --git a/test/scripts/0000-Basic/0318 b/test/scripts/0000-Basic/0318
new file mode 100644
index 000000000..eb312a678
--- /dev/null
+++ b/test/scripts/0000-Basic/0318
@@ -0,0 +1,8 @@
+# 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
diff --git a/test/scripts/0000-Basic/0319 b/test/scripts/0000-Basic/0319
new file mode 100644
index 000000000..ec4a098ef
--- /dev/null
+++ b/test/scripts/0000-Basic/0319
@@ -0,0 +1,11 @@
+# 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.
+****
diff --git a/test/scripts/0000-Basic/0320 b/test/scripts/0000-Basic/0320
new file mode 100644
index 000000000..c031567ef
--- /dev/null
+++ b/test/scripts/0000-Basic/0320
@@ -0,0 +1,14 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0321 b/test/scripts/0000-Basic/0321
new file mode 100644
index 000000000..01c5633e4
--- /dev/null
+++ b/test/scripts/0000-Basic/0321
@@ -0,0 +1,4 @@
+# local part starting | routed to pipe
+exim -odi '|/bin/cat\ /etc/aliases\ '
+quit
+****
diff --git a/test/scripts/0000-Basic/0322 b/test/scripts/0000-Basic/0322
new file mode 100644
index 000000000..e317eb784
--- /dev/null
+++ b/test/scripts/0000-Basic/0322
@@ -0,0 +1,169 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0323 b/test/scripts/0000-Basic/0323
new file mode 100644
index 000000000..cff75d41c
--- /dev/null
+++ b/test/scripts/0000-Basic/0323
@@ -0,0 +1,3 @@
+# quote handling in route_list
+exim -v -bv x@y
+****
diff --git a/test/scripts/0000-Basic/0324 b/test/scripts/0000-Basic/0324
new file mode 100644
index 000000000..56d6ffd52
--- /dev/null
+++ b/test/scripts/0000-Basic/0324
@@ -0,0 +1,9 @@
+# $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
+****
diff --git a/test/scripts/0000-Basic/0325 b/test/scripts/0000-Basic/0325
new file mode 100644
index 000000000..b2109f096
--- /dev/null
+++ b/test/scripts/0000-Basic/0325
@@ -0,0 +1,8 @@
+# $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
+****
diff --git a/test/scripts/0000-Basic/0326 b/test/scripts/0000-Basic/0326
new file mode 100644
index 000000000..77eeba275
--- /dev/null
+++ b/test/scripts/0000-Basic/0326
@@ -0,0 +1,7 @@
+# prefix/suffix in $original_local_part
+exim -odi pppp-userx@test.ex
+****
+exim -odi userx+ssss@test.ex
+****
+exim -odi userx@test.ex
+****
diff --git a/test/scripts/0000-Basic/0327 b/test/scripts/0000-Basic/0327
new file mode 100644
index 000000000..2cbc1f3a4
--- /dev/null
+++ b/test/scripts/0000-Basic/0327
@@ -0,0 +1,3 @@
+# Redirection to same address, and "unseen"
+exim -odi userx@test.ex
+****
diff --git a/test/scripts/0000-Basic/0328 b/test/scripts/0000-Basic/0328
new file mode 100644
index 000000000..129aa8c40
--- /dev/null
+++ b/test/scripts/0000-Basic/0328
@@ -0,0 +1,4 @@
+# System filter munges headers, running as root
+exim -odi userx@test.ex
+Remove: this header should get removed
+****
diff --git a/test/scripts/0000-Basic/0329 b/test/scripts/0000-Basic/0329
new file mode 100644
index 000000000..9ec5964f8
--- /dev/null
+++ b/test/scripts/0000-Basic/0329
@@ -0,0 +1,4 @@
+# System filter munges headers, running as exim
+exim -odi userx@test.ex
+Remove: this header should get removed
+****
diff --git a/test/scripts/0000-Basic/0330 b/test/scripts/0000-Basic/0330
new file mode 100644
index 000000000..41fc4e257
--- /dev/null
+++ b/test/scripts/0000-Basic/0330
@@ -0,0 +1,10 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0331 b/test/scripts/0000-Basic/0331
new file mode 100644
index 000000000..d78af27c5
--- /dev/null
+++ b/test/scripts/0000-Basic/0331
@@ -0,0 +1,23 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0332 b/test/scripts/0000-Basic/0332
new file mode 100644
index 000000000..41ef06acd
--- /dev/null
+++ b/test/scripts/0000-Basic/0332
@@ -0,0 +1,36 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0333 b/test/scripts/0000-Basic/0333
new file mode 100644
index 000000000..1cb3de2e7
--- /dev/null
+++ b/test/scripts/0000-Basic/0333
@@ -0,0 +1,37 @@
+# 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
diff --git a/test/scripts/0000-Basic/0334 b/test/scripts/0000-Basic/0334
new file mode 100644
index 000000000..91a67365e
--- /dev/null
+++ b/test/scripts/0000-Basic/0334
@@ -0,0 +1,6 @@
+# Detect 0.0.0.0 as local
+need_ipv4
+#
+1
+exim -bt x@y
+****
diff --git a/test/scripts/0000-Basic/0335 b/test/scripts/0000-Basic/0335
new file mode 100644
index 000000000..38564e26a
--- /dev/null
+++ b/test/scripts/0000-Basic/0335
@@ -0,0 +1,11 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0336 b/test/scripts/0000-Basic/0336
new file mode 100644
index 000000000..dd5016396
--- /dev/null
+++ b/test/scripts/0000-Basic/0336
@@ -0,0 +1,13 @@
+# -N in queued mail
+exim -odq -N userx
+****
+exim -odq userx
+****
+exim -R userx
+****
+exim -odq -N userx
+****
+exim -odq userx
+****
+exim -q
+****
diff --git a/test/scripts/0000-Basic/0337 b/test/scripts/0000-Basic/0337
new file mode 100644
index 000000000..65901d2e2
--- /dev/null
+++ b/test/scripts/0000-Basic/0337
@@ -0,0 +1,5 @@
+# errors_to verify loop
+exim -bv userx
+****
+exim -bt userx
+****
diff --git a/test/scripts/0000-Basic/0338 b/test/scripts/0000-Basic/0338
new file mode 100644
index 000000000..481a33083
--- /dev/null
+++ b/test/scripts/0000-Basic/0338
@@ -0,0 +1,9 @@
+# errors_to and one_time
+exim -odi userx
+****
+exim -bp
+****
+exim -Mvh $msg1
+****
+exim -qf
+****
diff --git a/test/scripts/0000-Basic/0339 b/test/scripts/0000-Basic/0339
new file mode 100644
index 000000000..ccf5a269d
--- /dev/null
+++ b/test/scripts/0000-Basic/0339
@@ -0,0 +1,4 @@
+# Missing command in pipe transport
+exim -odi userx@test.ex
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0340 b/test/scripts/0000-Basic/0340
new file mode 100644
index 000000000..a4ee6ad66
--- /dev/null
+++ b/test/scripts/0000-Basic/0340
@@ -0,0 +1,6 @@
+# dnslist when no host address
+exim -bs
+mail from:<userx@test.ex>
+rcpt to:<userx@test.again.dns>
+quit
+****
diff --git a/test/scripts/0000-Basic/0341 b/test/scripts/0000-Basic/0341
new file mode 100644
index 000000000..a323e936b
--- /dev/null
+++ b/test/scripts/0000-Basic/0341
@@ -0,0 +1,15 @@
+# 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
diff --git a/test/scripts/0000-Basic/0342 b/test/scripts/0000-Basic/0342
new file mode 100644
index 000000000..0b4016293
--- /dev/null
+++ b/test/scripts/0000-Basic/0342
@@ -0,0 +1,8 @@
+# verification of recipient at non FQDN
+need_ipv4
+#
+exim -bh 1.2.3.4
+mail from:<x@y>
+rcpt to:<x@ten-1>
+quit
+****
diff --git a/test/scripts/0000-Basic/0343 b/test/scripts/0000-Basic/0343
new file mode 100644
index 000000000..9487b5b97
--- /dev/null
+++ b/test/scripts/0000-Basic/0343
@@ -0,0 +1,13 @@
+# 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
diff --git a/test/scripts/0000-Basic/0344 b/test/scripts/0000-Basic/0344
new file mode 100644
index 000000000..2f8ca288c
--- /dev/null
+++ b/test/scripts/0000-Basic/0344
@@ -0,0 +1,5 @@
+# Individual transports in manualroute
+need_ipv4
+#
+exim -bt x@d1 x@d2 x@d30 x@d31
+****
diff --git a/test/scripts/0000-Basic/0345 b/test/scripts/0000-Basic/0345
new file mode 100644
index 000000000..b9a77e672
--- /dev/null
+++ b/test/scripts/0000-Basic/0345
@@ -0,0 +1,17 @@
+# 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
diff --git a/test/scripts/0000-Basic/0346 b/test/scripts/0000-Basic/0346
new file mode 100644
index 000000000..8e47911af
--- /dev/null
+++ b/test/scripts/0000-Basic/0346
@@ -0,0 +1,4 @@
+# duplicate loops in address graphs
+exim -odi x@dom1 x@dom2
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0347 b/test/scripts/0000-Basic/0347
new file mode 100644
index 000000000..58adb2acf
--- /dev/null
+++ b/test/scripts/0000-Basic/0347
@@ -0,0 +1,3 @@
+# Different domains, same self_hostname for batch delivery
+exim -odi x@dom1 x@dom2 x@dom3
+****
diff --git a/test/scripts/0000-Basic/0348 b/test/scripts/0000-Basic/0348
new file mode 100644
index 000000000..89f390e8d
--- /dev/null
+++ b/test/scripts/0000-Basic/0348
@@ -0,0 +1,13 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0349 b/test/scripts/0000-Basic/0349
new file mode 100644
index 000000000..1d53d2256
--- /dev/null
+++ b/test/scripts/0000-Basic/0349
@@ -0,0 +1,4 @@
+# Non-absolute file name in filter save - transport sets home_directory
+exim -odi userx
+Testing, testing
+****
diff --git a/test/scripts/0000-Basic/0350 b/test/scripts/0000-Basic/0350
new file mode 100644
index 000000000..0b4f7196b
--- /dev/null
+++ b/test/scripts/0000-Basic/0350
@@ -0,0 +1,4 @@
+# $host_address in ignore_target_hosts
+need_ipv4
+#
+exim -bt xx@yy
diff --git a/test/scripts/0000-Basic/0351 b/test/scripts/0000-Basic/0351
new file mode 100644
index 000000000..739748385
--- /dev/null
+++ b/test/scripts/0000-Basic/0351
@@ -0,0 +1,13 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0352 b/test/scripts/0000-Basic/0352
new file mode 100644
index 000000000..45db18520
--- /dev/null
+++ b/test/scripts/0000-Basic/0352
@@ -0,0 +1,31 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0353 b/test/scripts/0000-Basic/0353
new file mode 100644
index 000000000..c95d13a29
--- /dev/null
+++ b/test/scripts/0000-Basic/0353
@@ -0,0 +1,5 @@
+# Non-absolute path in system filter (no user set)
+exim -odi userx
+Testing
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0354 b/test/scripts/0000-Basic/0354
new file mode 100644
index 000000000..a8464b36f
--- /dev/null
+++ b/test/scripts/0000-Basic/0354
@@ -0,0 +1,5 @@
+# No slash path in system filter (user set)
+exim -odi userx
+Testing
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0355 b/test/scripts/0000-Basic/0355
new file mode 100644
index 000000000..788bfffe9
--- /dev/null
+++ b/test/scripts/0000-Basic/0355
@@ -0,0 +1,5 @@
+# No slash path in user filter
+exim -odi userx
+Testing
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0356 b/test/scripts/0000-Basic/0356
new file mode 100644
index 000000000..cf6cd6f9c
--- /dev/null
+++ b/test/scripts/0000-Basic/0356
@@ -0,0 +1,7 @@
+# no_message_logs
+exim -odi userx
+Testing 1
+****
+exim -DMESSAGE_LOGS=no_message_logs -odi userx
+Testing 2
+****
diff --git a/test/scripts/0000-Basic/0357 b/test/scripts/0000-Basic/0357
new file mode 100644
index 000000000..1ca60b12d
--- /dev/null
+++ b/test/scripts/0000-Basic/0357
@@ -0,0 +1,49 @@
+# 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
diff --git a/test/scripts/0000-Basic/0358 b/test/scripts/0000-Basic/0358
new file mode 100644
index 000000000..7571c277f
--- /dev/null
+++ b/test/scripts/0000-Basic/0358
@@ -0,0 +1,39 @@
+# 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
diff --git a/test/scripts/0000-Basic/0359 b/test/scripts/0000-Basic/0359
new file mode 100644
index 000000000..682d4301f
--- /dev/null
+++ b/test/scripts/0000-Basic/0359
@@ -0,0 +1,7 @@
+# shadow_transport_condition and $local_part
+exim -odi userx
+.
+****
+exim -odi usery
+.
+****
diff --git a/test/scripts/0000-Basic/0360 b/test/scripts/0000-Basic/0360
new file mode 100644
index 000000000..449e7ed42
--- /dev/null
+++ b/test/scripts/0000-Basic/0360
@@ -0,0 +1,11 @@
+# widened domains
+need_ipv4
+#
+exim -d-all+route -N -odi cms
+.
+****
+exim -bpa
+****
+exim -qf -d-all+route
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0361 b/test/scripts/0000-Basic/0361
new file mode 100644
index 000000000..fa684acb2
--- /dev/null
+++ b/test/scripts/0000-Basic/0361
@@ -0,0 +1,7 @@
+# widened domains and duplication
+need_ipv4
+#
+exim -odi -N miles@thishost.test.ex
+****
+exim -odi -d -N kilos@recurse.test.ex
+****
diff --git a/test/scripts/0000-Basic/0362 b/test/scripts/0000-Basic/0362
new file mode 100644
index 000000000..60d5155e3
--- /dev/null
+++ b/test/scripts/0000-Basic/0362
@@ -0,0 +1,8 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0363 b/test/scripts/0000-Basic/0363
new file mode 100644
index 000000000..d6b2e1601
--- /dev/null
+++ b/test/scripts/0000-Basic/0363
@@ -0,0 +1,21 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0364 b/test/scripts/0000-Basic/0364
new file mode 100644
index 000000000..821caddba
--- /dev/null
+++ b/test/scripts/0000-Basic/0364
@@ -0,0 +1,6 @@
+# widening by steam
+need_ipv4
+#
+2
+exim -d-all+route -bt kilos@thishost solik@otherhost xxx@ten-1 xxx@testsub
+****
diff --git a/test/scripts/0000-Basic/0365 b/test/scripts/0000-Basic/0365
new file mode 100644
index 000000000..0697f1e0d
--- /dev/null
+++ b/test/scripts/0000-Basic/0365
@@ -0,0 +1,73 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0366 b/test/scripts/0000-Basic/0366
new file mode 100644
index 000000000..36f87e759
--- /dev/null
+++ b/test/scripts/0000-Basic/0366
@@ -0,0 +1,14 @@
+# 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
diff --git a/test/scripts/0000-Basic/0367 b/test/scripts/0000-Basic/0367
new file mode 100644
index 000000000..0c03b391b
--- /dev/null
+++ b/test/scripts/0000-Basic/0367
@@ -0,0 +1,58 @@
+# 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
diff --git a/test/scripts/0000-Basic/0368 b/test/scripts/0000-Basic/0368
new file mode 100644
index 000000000..1cce863bc
--- /dev/null
+++ b/test/scripts/0000-Basic/0368
@@ -0,0 +1,5 @@
+# removal of duplicate IP addresses
+need_ipv4
+#
+exim -d-all+host_lookup -bt x@mxt9.test.ex x@mxt14.test.ex x@manualroute
+****
diff --git a/test/scripts/0000-Basic/0369 b/test/scripts/0000-Basic/0369
new file mode 100644
index 000000000..bffb727ce
--- /dev/null
+++ b/test/scripts/0000-Basic/0369
@@ -0,0 +1,6 @@
+# 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
diff --git a/test/scripts/0000-Basic/0370 b/test/scripts/0000-Basic/0370
new file mode 100644
index 000000000..a58563c67
--- /dev/null
+++ b/test/scripts/0000-Basic/0370
@@ -0,0 +1,3 @@
+# gid (only) set in router for pipe transport
+exim -d-all+transport+uid -odi userx@test.ex
+****
diff --git a/test/scripts/0000-Basic/0371 b/test/scripts/0000-Basic/0371
new file mode 100644
index 000000000..2850fc12f
--- /dev/null
+++ b/test/scripts/0000-Basic/0371
@@ -0,0 +1,12 @@
+# 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
diff --git a/test/scripts/0000-Basic/0372 b/test/scripts/0000-Basic/0372
new file mode 100644
index 000000000..4e670167e
--- /dev/null
+++ b/test/scripts/0000-Basic/0372
@@ -0,0 +1,12 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0373 b/test/scripts/0000-Basic/0373
new file mode 100644
index 000000000..a20e79ecd
--- /dev/null
+++ b/test/scripts/0000-Basic/0373
@@ -0,0 +1,57 @@
+# ${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
+****
diff --git a/test/scripts/0000-Basic/0374 b/test/scripts/0000-Basic/0374
new file mode 100644
index 000000000..2bde68338
--- /dev/null
+++ b/test/scripts/0000-Basic/0374
@@ -0,0 +1,43 @@
+# 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
diff --git a/test/scripts/0000-Basic/0375 b/test/scripts/0000-Basic/0375
new file mode 100644
index 000000000..8d2608fb8
--- /dev/null
+++ b/test/scripts/0000-Basic/0375
@@ -0,0 +1,89 @@
+# 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
diff --git a/test/scripts/0000-Basic/0376 b/test/scripts/0000-Basic/0376
new file mode 100644
index 000000000..7430a6bce
--- /dev/null
+++ b/test/scripts/0000-Basic/0376
@@ -0,0 +1,442 @@
+# 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
diff --git a/test/scripts/0000-Basic/0377 b/test/scripts/0000-Basic/0377
new file mode 100644
index 000000000..97b03f59d
--- /dev/null
+++ b/test/scripts/0000-Basic/0377
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/0000-Basic/0378 b/test/scripts/0000-Basic/0378
new file mode 100644
index 000000000..46a032514
--- /dev/null
+++ b/test/scripts/0000-Basic/0378
@@ -0,0 +1,8 @@
+# pipe/file/reply check recorded delivery
+exim -d-all+route -odi aaaa
+****
+exim -Mvh $msg1
+****
+exim -d-all+route -qf
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0379 b/test/scripts/0000-Basic/0379
new file mode 100644
index 000000000..1928e377b
--- /dev/null
+++ b/test/scripts/0000-Basic/0379
@@ -0,0 +1,8 @@
+# non-homonym redirection - marking done
+exim -d-all+route -odi defer aaaa
+****
+exim -Mvh $msg1
+****
+exim -d-all+route -qf
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0380 b/test/scripts/0000-Basic/0380
new file mode 100644
index 000000000..10e93b9cd
--- /dev/null
+++ b/test/scripts/0000-Basic/0380
@@ -0,0 +1,4 @@
+# ignore_enotdir
+exim -d-all+route -odi aaaa bbbb
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0381 b/test/scripts/0000-Basic/0381
new file mode 100644
index 000000000..c5f7d8441
--- /dev/null
+++ b/test/scripts/0000-Basic/0381
@@ -0,0 +1,6 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0382 b/test/scripts/0000-Basic/0382
new file mode 100644
index 000000000..3eadb403d
--- /dev/null
+++ b/test/scripts/0000-Basic/0382
@@ -0,0 +1,7 @@
+# timeout_frozen_after and system filter
+exim -d-all+filter -odi userx
+****
+sleep 1
+exim -d-all+filter -qf
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0383 b/test/scripts/0000-Basic/0383
new file mode 100644
index 000000000..ab2f44808
--- /dev/null
+++ b/test/scripts/0000-Basic/0383
@@ -0,0 +1,11 @@
+# $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
diff --git a/test/scripts/0000-Basic/0384 b/test/scripts/0000-Basic/0384
new file mode 100644
index 000000000..f95a2076a
--- /dev/null
+++ b/test/scripts/0000-Basic/0384
@@ -0,0 +1,8 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0385 b/test/scripts/0000-Basic/0385
new file mode 100644
index 000000000..402a8915a
--- /dev/null
+++ b/test/scripts/0000-Basic/0385
@@ -0,0 +1,55 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0386 b/test/scripts/0000-Basic/0386
new file mode 100644
index 000000000..172c8b79a
--- /dev/null
+++ b/test/scripts/0000-Basic/0386
@@ -0,0 +1,23 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0387 b/test/scripts/0000-Basic/0387
new file mode 100644
index 000000000..155ad0235
--- /dev/null
+++ b/test/scripts/0000-Basic/0387
@@ -0,0 +1,42 @@
+# 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}}
+****
diff --git a/test/scripts/0000-Basic/0388 b/test/scripts/0000-Basic/0388
new file mode 100644
index 000000000..ec2d798fd
--- /dev/null
+++ b/test/scripts/0000-Basic/0388
@@ -0,0 +1,19 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0389 b/test/scripts/0000-Basic/0389
new file mode 100644
index 000000000..d23af20c3
--- /dev/null
+++ b/test/scripts/0000-Basic/0389
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/0000-Basic/0390 b/test/scripts/0000-Basic/0390
new file mode 100644
index 000000000..cbd8c0ddf
--- /dev/null
+++ b/test/scripts/0000-Basic/0390
@@ -0,0 +1,12 @@
+# .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
diff --git a/test/scripts/0000-Basic/0391 b/test/scripts/0000-Basic/0391
new file mode 100644
index 000000000..bbb0fb577
--- /dev/null
+++ b/test/scripts/0000-Basic/0391
@@ -0,0 +1,6 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0392 b/test/scripts/0000-Basic/0392
new file mode 100644
index 000000000..e1a9fec59
--- /dev/null
+++ b/test/scripts/0000-Basic/0392
@@ -0,0 +1,7 @@
+# -bt and no_address_test
+need_ipv4
+#
+exim -bt x@y
+****
+exim -v -bv x@y
+****
diff --git a/test/scripts/0000-Basic/0393 b/test/scripts/0000-Basic/0393
new file mode 100644
index 000000000..89a1b6a98
--- /dev/null
+++ b/test/scripts/0000-Basic/0393
@@ -0,0 +1,7 @@
+# empty transport filter
+exim -d-all+transport -odi userx
+Testing with filter
+****
+exim -DFILTER= -d-all+transport -odi userx
+Testing without filter
+****
diff --git a/test/scripts/0000-Basic/0394 b/test/scripts/0000-Basic/0394
new file mode 100644
index 000000000..f43f906a4
--- /dev/null
+++ b/test/scripts/0000-Basic/0394
@@ -0,0 +1,11 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0395 b/test/scripts/0000-Basic/0395
new file mode 100644
index 000000000..01afebdf4
--- /dev/null
+++ b/test/scripts/0000-Basic/0395
@@ -0,0 +1,88 @@
+# -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
+****
diff --git a/test/scripts/0000-Basic/0396 b/test/scripts/0000-Basic/0396
new file mode 100644
index 000000000..356021a24
--- /dev/null
+++ b/test/scripts/0000-Basic/0396
@@ -0,0 +1,6 @@
+# forced failure in named list
+exim -d -bs
+mail from:<x@y>
+rcpt to:<x@y>
+quit
+****
diff --git a/test/scripts/0000-Basic/0397 b/test/scripts/0000-Basic/0397
new file mode 100644
index 000000000..46a5a07b0
--- /dev/null
+++ b/test/scripts/0000-Basic/0397
@@ -0,0 +1,4 @@
+# failure to open main and panic logs
+1
+exim -q
+****
diff --git a/test/scripts/0000-Basic/0398 b/test/scripts/0000-Basic/0398
new file mode 100644
index 000000000..c98016a69
--- /dev/null
+++ b/test/scripts/0000-Basic/0398
@@ -0,0 +1,61 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0399 b/test/scripts/0000-Basic/0399
new file mode 100644
index 000000000..534fab21f
--- /dev/null
+++ b/test/scripts/0000-Basic/0399
@@ -0,0 +1,4 @@
+# expanding "more"
+1
+exim -d -bt x@y
+****
diff --git a/test/scripts/0000-Basic/0400 b/test/scripts/0000-Basic/0400
new file mode 100644
index 000000000..219dcc236
--- /dev/null
+++ b/test/scripts/0000-Basic/0400
@@ -0,0 +1,9 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0401 b/test/scripts/0000-Basic/0401
new file mode 100644
index 000000000..4c6e49177
--- /dev/null
+++ b/test/scripts/0000-Basic/0401
@@ -0,0 +1,9 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0402 b/test/scripts/0000-Basic/0402
new file mode 100644
index 000000000..a73872dc2
--- /dev/null
+++ b/test/scripts/0000-Basic/0402
@@ -0,0 +1,4 @@
+# expansion of router_home_directory
+exim -odi -d+expand CALLER@test.ex usery@test.ex userz rd+CALLER rd+usery
+****
+no_message_check
diff --git a/test/scripts/0000-Basic/0403 b/test/scripts/0000-Basic/0403
new file mode 100644
index 000000000..b6b3b6d47
--- /dev/null
+++ b/test/scripts/0000-Basic/0403
@@ -0,0 +1,4 @@
+# domain_data and local_part_data for redirection to file
+exim -N -odi -d userx@test.ex
+****
+no_message_check
diff --git a/test/scripts/0000-Basic/0404 b/test/scripts/0000-Basic/0404
new file mode 100644
index 000000000..318d151f7
--- /dev/null
+++ b/test/scripts/0000-Basic/0404
@@ -0,0 +1,155 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0405 b/test/scripts/0000-Basic/0405
new file mode 100644
index 000000000..ae96c894c
--- /dev/null
+++ b/test/scripts/0000-Basic/0405
@@ -0,0 +1,8 @@
+# allow_utf8_domains
+need_ipv4
+#
+2
+exim -bt bounce@Ï€.test.ex
+****
+exim -DUTF8=allow_utf8_domains -bt bounce@Ï€.test.ex
+****
diff --git a/test/scripts/0000-Basic/0406 b/test/scripts/0000-Basic/0406
new file mode 100644
index 000000000..216d88241
--- /dev/null
+++ b/test/scripts/0000-Basic/0406
@@ -0,0 +1,28 @@
+# $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
+****
diff --git a/test/scripts/0000-Basic/0407 b/test/scripts/0000-Basic/0407
new file mode 100644
index 000000000..0d8e7ca37
--- /dev/null
+++ b/test/scripts/0000-Basic/0407
@@ -0,0 +1,25 @@
+# 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
diff --git a/test/scripts/0000-Basic/0408 b/test/scripts/0000-Basic/0408
new file mode 100644
index 000000000..ddcec0a79
--- /dev/null
+++ b/test/scripts/0000-Basic/0408
@@ -0,0 +1,3 @@
+# errors_to for local delivery
+exim -odi -d userx@test.ex
+****
diff --git a/test/scripts/0000-Basic/0409 b/test/scripts/0000-Basic/0409
new file mode 100644
index 000000000..f1b3dd0f0
--- /dev/null
+++ b/test/scripts/0000-Basic/0409
@@ -0,0 +1,7 @@
+# smtp_banner tests (including empty banner)
+exim -bs
+quit
+****
+exim '-DBANNER=$qualify_domain XYZ' -bs
+quit
+****
diff --git a/test/scripts/0000-Basic/0410 b/test/scripts/0000-Basic/0410
new file mode 100644
index 000000000..512484574
--- /dev/null
+++ b/test/scripts/0000-Basic/0410
@@ -0,0 +1,7 @@
+# address_data in ACLs after verification
+exim -bs
+MAIL FROM:<oksender@y>
+rcpt to:<child@test.ex>
+rcpt to:<orig@test.ex>
+quit
+****
diff --git a/test/scripts/0000-Basic/0411 b/test/scripts/0000-Basic/0411
new file mode 100644
index 000000000..7bd1ff9d4
--- /dev/null
+++ b/test/scripts/0000-Basic/0411
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/0000-Basic/0412 b/test/scripts/0000-Basic/0412
new file mode 100644
index 000000000..7fe5f5876
--- /dev/null
+++ b/test/scripts/0000-Basic/0412
@@ -0,0 +1,23 @@
+# $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
+****
diff --git a/test/scripts/0000-Basic/0413 b/test/scripts/0000-Basic/0413
new file mode 100644
index 000000000..583ea2ca5
--- /dev/null
+++ b/test/scripts/0000-Basic/0413
@@ -0,0 +1,42 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0414 b/test/scripts/0000-Basic/0414
new file mode 100644
index 000000000..1d86997db
--- /dev/null
+++ b/test/scripts/0000-Basic/0414
@@ -0,0 +1,3 @@
+# caching in nested domainlists
+exim -d -bt x@b.domain x@a.domain
+****
diff --git a/test/scripts/0000-Basic/0415 b/test/scripts/0000-Basic/0415
new file mode 100644
index 000000000..29628b87a
--- /dev/null
+++ b/test/scripts/0000-Basic/0415
@@ -0,0 +1,37 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0416 b/test/scripts/0000-Basic/0416
new file mode 100644
index 000000000..973316b3a
--- /dev/null
+++ b/test/scripts/0000-Basic/0416
@@ -0,0 +1,49 @@
+# 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
diff --git a/test/scripts/0000-Basic/0417 b/test/scripts/0000-Basic/0417
new file mode 100644
index 000000000..ac3da7d32
--- /dev/null
+++ b/test/scripts/0000-Basic/0417
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0418 b/test/scripts/0000-Basic/0418
new file mode 100644
index 000000000..147ae559a
--- /dev/null
+++ b/test/scripts/0000-Basic/0418
@@ -0,0 +1,6 @@
+# Continuations in file ACL
+exim -odq -bs
+mail from:<>
+rcpt to:<x@y>
+quit
+****
diff --git a/test/scripts/0000-Basic/0419 b/test/scripts/0000-Basic/0419
new file mode 100644
index 000000000..c79a4e392
--- /dev/null
+++ b/test/scripts/0000-Basic/0419
@@ -0,0 +1,5 @@
+# hosts_treat_as_local and +local_domains
+need_ipv4
+#
+exim -d -bv k@mxt13.test.ex
+****
diff --git a/test/scripts/0000-Basic/0420 b/test/scripts/0000-Basic/0420
new file mode 100644
index 000000000..c61a23d1e
--- /dev/null
+++ b/test/scripts/0000-Basic/0420
@@ -0,0 +1,14 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0421 b/test/scripts/0000-Basic/0421
new file mode 100644
index 000000000..f4bcd651d
--- /dev/null
+++ b/test/scripts/0000-Basic/0421
@@ -0,0 +1,6 @@
+# rewrite at transport time
+exim -odi a@b.c
+From: p@q.r
+To: a@b.c
+Reply-to: e@f.g
+****
diff --git a/test/scripts/0000-Basic/0422 b/test/scripts/0000-Basic/0422
new file mode 100644
index 000000000..4dbf104bd
--- /dev/null
+++ b/test/scripts/0000-Basic/0422
@@ -0,0 +1,7 @@
+# dnsbl: orphan CNAME and multiple A records
+exim -bh V4NET.13.13.1
+quit
+****
+exim -bh V4NET.13.13.2
+quit
+****
diff --git a/test/scripts/0000-Basic/0423 b/test/scripts/0000-Basic/0423
new file mode 100644
index 000000000..693abf1b1
--- /dev/null
+++ b/test/scripts/0000-Basic/0423
@@ -0,0 +1,4 @@
+# Line breaking in SMTP error message containing a long word
+exim -bh V4NET.13.13.1
+quit
+****
diff --git a/test/scripts/0000-Basic/0424 b/test/scripts/0000-Basic/0424
new file mode 100644
index 000000000..aed286881
--- /dev/null
+++ b/test/scripts/0000-Basic/0424
@@ -0,0 +1,6 @@
+# Default value of return-path in -bt and delivery
+2
+exim -bt userx
+****
+exim -odi userx
+****
diff --git a/test/scripts/0000-Basic/0425 b/test/scripts/0000-Basic/0425
new file mode 100644
index 000000000..725900a2f
--- /dev/null
+++ b/test/scripts/0000-Basic/0425
@@ -0,0 +1,9 @@
+# log_message with warn
+need_ipv4
+#
+exim -bs
+mail from:<BAD@y>
+rcpt to:<OK@x>
+rcpt to:<BAD@x>
+quit
+****
diff --git a/test/scripts/0000-Basic/0426 b/test/scripts/0000-Basic/0426
new file mode 100644
index 000000000..eb7a27fba
--- /dev/null
+++ b/test/scripts/0000-Basic/0426
@@ -0,0 +1,17 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0427 b/test/scripts/0000-Basic/0427
new file mode 100644
index 000000000..540d60ae5
--- /dev/null
+++ b/test/scripts/0000-Basic/0427
@@ -0,0 +1,540 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0428 b/test/scripts/0000-Basic/0428
new file mode 100644
index 000000000..940dea898
--- /dev/null
+++ b/test/scripts/0000-Basic/0428
@@ -0,0 +1,87 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0429 b/test/scripts/0000-Basic/0429
new file mode 100644
index 000000000..e430e7856
--- /dev/null
+++ b/test/scripts/0000-Basic/0429
@@ -0,0 +1,15 @@
+# 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
diff --git a/test/scripts/0000-Basic/0430 b/test/scripts/0000-Basic/0430
new file mode 100644
index 000000000..2d338965d
--- /dev/null
+++ b/test/scripts/0000-Basic/0430
@@ -0,0 +1,30 @@
+# /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
+****
diff --git a/test/scripts/0000-Basic/0431 b/test/scripts/0000-Basic/0431
new file mode 100644
index 000000000..093e26325
--- /dev/null
+++ b/test/scripts/0000-Basic/0431
@@ -0,0 +1,45 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0432 b/test/scripts/0000-Basic/0432
new file mode 100644
index 000000000..4d9935317
--- /dev/null
+++ b/test/scripts/0000-Basic/0432
@@ -0,0 +1,56 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0433 b/test/scripts/0000-Basic/0433
new file mode 100644
index 000000000..995259e8a
--- /dev/null
+++ b/test/scripts/0000-Basic/0433
@@ -0,0 +1,21 @@
+# 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
diff --git a/test/scripts/0000-Basic/0434 b/test/scripts/0000-Basic/0434
new file mode 100644
index 000000000..17c3377b2
--- /dev/null
+++ b/test/scripts/0000-Basic/0434
@@ -0,0 +1,8 @@
+# extra_local_interfaces
+need_ipv4
+#
+exim -bt a@b
+****
+1
+exim -bt -DELI=1.2.3.4 a@b
+****
diff --git a/test/scripts/0000-Basic/0435 b/test/scripts/0000-Basic/0435
new file mode 100644
index 000000000..3b7a9092b
--- /dev/null
+++ b/test/scripts/0000-Basic/0435
Binary files differ
diff --git a/test/scripts/0000-Basic/0436 b/test/scripts/0000-Basic/0436
new file mode 100644
index 000000000..5e23ba7e4
--- /dev/null
+++ b/test/scripts/0000-Basic/0436
@@ -0,0 +1,3 @@
+# batch_max and multiple domains
+exim -odi a@d1.ex b@d1.ex c@d2.ex d@d2.ex
+****
diff --git a/test/scripts/0000-Basic/0437 b/test/scripts/0000-Basic/0437
new file mode 100644
index 000000000..c1b4c121d
--- /dev/null
+++ b/test/scripts/0000-Basic/0437
@@ -0,0 +1,9 @@
+# queue run: close lookups before delivery
+exim -odq userx
+First message
+****
+exim -odq userx
+Second message
+****
+exim -q -d-all+lookup
+****
diff --git a/test/scripts/0000-Basic/0438 b/test/scripts/0000-Basic/0438
new file mode 100644
index 000000000..099efba0d
--- /dev/null
+++ b/test/scripts/0000-Basic/0438
@@ -0,0 +1,10 @@
+# -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
diff --git a/test/scripts/0000-Basic/0439 b/test/scripts/0000-Basic/0439
new file mode 100644
index 000000000..0da12190d
--- /dev/null
+++ b/test/scripts/0000-Basic/0439
@@ -0,0 +1,17 @@
+# 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
diff --git a/test/scripts/0000-Basic/0440 b/test/scripts/0000-Basic/0440
new file mode 100644
index 000000000..12609f756
--- /dev/null
+++ b/test/scripts/0000-Basic/0440
@@ -0,0 +1,45 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0441 b/test/scripts/0000-Basic/0441
new file mode 100644
index 000000000..0dc17616c
--- /dev/null
+++ b/test/scripts/0000-Basic/0441
@@ -0,0 +1,8 @@
+# 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
diff --git a/test/scripts/0000-Basic/0442 b/test/scripts/0000-Basic/0442
new file mode 100644
index 000000000..d5c11ce88
--- /dev/null
+++ b/test/scripts/0000-Basic/0442
@@ -0,0 +1,6 @@
+# multiple .includes and .include_if_exists
+exim -bP routers
+****
+1
+exim -DBAD=".include /non/existent"
+****
diff --git a/test/scripts/0000-Basic/0443 b/test/scripts/0000-Basic/0443
new file mode 100644
index 000000000..8e3b03779
--- /dev/null
+++ b/test/scripts/0000-Basic/0443
@@ -0,0 +1,6 @@
+# verify callout with no transport
+exim -bhc V4NET.0.0.1
+Mail from: x@ten-1.test.ex
+rcpt to: x@y
+quit
+****
diff --git a/test/scripts/0000-Basic/0444 b/test/scripts/0000-Basic/0444
new file mode 100644
index 000000000..2f2e865e5
--- /dev/null
+++ b/test/scripts/0000-Basic/0444
@@ -0,0 +1,5 @@
+# headers remove in system filter
+exim -odi userx
+X-XXX-Original-Host: some.host.name
+This is a test message.
+****
diff --git a/test/scripts/0000-Basic/0445 b/test/scripts/0000-Basic/0445
new file mode 100644
index 000000000..fd38f85b5
--- /dev/null
+++ b/test/scripts/0000-Basic/0445
@@ -0,0 +1,9 @@
+# :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
+****
diff --git a/test/scripts/0000-Basic/0446 b/test/scripts/0000-Basic/0446
new file mode 100644
index 000000000..00e7ec6b9
--- /dev/null
+++ b/test/scripts/0000-Basic/0446
@@ -0,0 +1,14 @@
+# $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
+****
diff --git a/test/scripts/0000-Basic/0447 b/test/scripts/0000-Basic/0447
new file mode 100644
index 000000000..fdea6c066
--- /dev/null
+++ b/test/scripts/0000-Basic/0447
@@ -0,0 +1,33 @@
+# 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
diff --git a/test/scripts/0000-Basic/0448 b/test/scripts/0000-Basic/0448
new file mode 100644
index 000000000..bc2856036
--- /dev/null
+++ b/test/scripts/0000-Basic/0448
@@ -0,0 +1,23 @@
+# 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
diff --git a/test/scripts/0000-Basic/0449 b/test/scripts/0000-Basic/0449
new file mode 100644
index 000000000..42f2dfb51
--- /dev/null
+++ b/test/scripts/0000-Basic/0449
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/0000-Basic/0450 b/test/scripts/0000-Basic/0450
new file mode 100644
index 000000000..fed2df219
--- /dev/null
+++ b/test/scripts/0000-Basic/0450
@@ -0,0 +1,10 @@
+# expanded port option
+need_ipv4
+#
+exim -d-all+transport -odi userx
+Message 1
+****
+exim -d-all+transport -q
+****
+dump retry
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0451 b/test/scripts/0000-Basic/0451
new file mode 100644
index 000000000..178b4a51f
--- /dev/null
+++ b/test/scripts/0000-Basic/0451
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/0000-Basic/0452 b/test/scripts/0000-Basic/0452
new file mode 100644
index 000000000..7f94509b9
--- /dev/null
+++ b/test/scripts/0000-Basic/0452
@@ -0,0 +1,10 @@
+# "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
diff --git a/test/scripts/0000-Basic/0453 b/test/scripts/0000-Basic/0453
new file mode 100644
index 000000000..8c199fe39
--- /dev/null
+++ b/test/scripts/0000-Basic/0453
@@ -0,0 +1,26 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0454 b/test/scripts/0000-Basic/0454
new file mode 100644
index 000000000..902e2966e
--- /dev/null
+++ b/test/scripts/0000-Basic/0454
@@ -0,0 +1,25 @@
+# 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
diff --git a/test/scripts/0000-Basic/0455 b/test/scripts/0000-Basic/0455
new file mode 100644
index 000000000..42b03cfbf
--- /dev/null
+++ b/test/scripts/0000-Basic/0455
@@ -0,0 +1,9 @@
+# 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
diff --git a/test/scripts/0000-Basic/0456 b/test/scripts/0000-Basic/0456
new file mode 100644
index 000000000..a0ad96132
--- /dev/null
+++ b/test/scripts/0000-Basic/0456
@@ -0,0 +1,3 @@
+# errors_to when sender address is empty
+exim -f "" -bt test-bus-error@localhost
+****
diff --git a/test/scripts/0000-Basic/0457 b/test/scripts/0000-Basic/0457
new file mode 100644
index 000000000..6c57b378c
--- /dev/null
+++ b/test/scripts/0000-Basic/0457
@@ -0,0 +1,6 @@
+# sender_helo_name resetting after reject
+exim -bs
+HELO a.b.c.d
+MAIL FROM:<x@y>
+quit
+****
diff --git a/test/scripts/0000-Basic/0458 b/test/scripts/0000-Basic/0458
new file mode 100644
index 000000000..c05b4b6ff
--- /dev/null
+++ b/test/scripts/0000-Basic/0458
@@ -0,0 +1,118 @@
+# 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
diff --git a/test/scripts/0000-Basic/0459 b/test/scripts/0000-Basic/0459
new file mode 100644
index 000000000..873c5d87f
--- /dev/null
+++ b/test/scripts/0000-Basic/0459
@@ -0,0 +1,6 @@
+# unwanted search error messages in ACLs
+exim -bs
+mail from:<>
+rcpt to:outer@xx
+quit
+****
diff --git a/test/scripts/0000-Basic/0460 b/test/scripts/0000-Basic/0460
new file mode 100644
index 000000000..aa9a45084
--- /dev/null
+++ b/test/scripts/0000-Basic/0460
@@ -0,0 +1,46 @@
+# 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
diff --git a/test/scripts/0000-Basic/0461 b/test/scripts/0000-Basic/0461
new file mode 100644
index 000000000..8e6bc2acb
--- /dev/null
+++ b/test/scripts/0000-Basic/0461
@@ -0,0 +1,71 @@
+# 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
diff --git a/test/scripts/0000-Basic/0462 b/test/scripts/0000-Basic/0462
new file mode 100644
index 000000000..a6f3622ba
--- /dev/null
+++ b/test/scripts/0000-Basic/0462
@@ -0,0 +1,43 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0463 b/test/scripts/0000-Basic/0463
new file mode 100644
index 000000000..19577d803
--- /dev/null
+++ b/test/scripts/0000-Basic/0463
@@ -0,0 +1,5 @@
+# @mx_xxx with domain widening
+need_ipv4
+#
+exim -d -bt x@ten-1
+****
diff --git a/test/scripts/0000-Basic/0464 b/test/scripts/0000-Basic/0464
new file mode 100644
index 000000000..d2e231cac
--- /dev/null
+++ b/test/scripts/0000-Basic/0464
@@ -0,0 +1,8 @@
+# domain_data for multiple recipient verify in an ACL
+need_ipv4
+#
+exim -d -bs
+mail from:<>
+rcpt to:<abc@domain1>
+quit
+****
diff --git a/test/scripts/0000-Basic/0465 b/test/scripts/0000-Basic/0465
new file mode 100644
index 000000000..03abe164f
--- /dev/null
+++ b/test/scripts/0000-Basic/0465
@@ -0,0 +1,30 @@
+# 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
diff --git a/test/scripts/0000-Basic/0466 b/test/scripts/0000-Basic/0466
new file mode 100644
index 000000000..933a1dbd2
--- /dev/null
+++ b/test/scripts/0000-Basic/0466
@@ -0,0 +1,5 @@
+# long hostlist string in route_list expansion
+need_ipv4
+#
+exim -bt x@y
+****
diff --git a/test/scripts/0000-Basic/0467 b/test/scripts/0000-Basic/0467
new file mode 100644
index 000000000..dcd19b9d7
--- /dev/null
+++ b/test/scripts/0000-Basic/0467
@@ -0,0 +1,31 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0468 b/test/scripts/0000-Basic/0468
new file mode 100644
index 000000000..7c0790526
--- /dev/null
+++ b/test/scripts/0000-Basic/0468
@@ -0,0 +1,14 @@
+# $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
+****
diff --git a/test/scripts/0000-Basic/0469 b/test/scripts/0000-Basic/0469
new file mode 100644
index 000000000..ac2b67969
--- /dev/null
+++ b/test/scripts/0000-Basic/0469
@@ -0,0 +1,6 @@
+# MX -> one-component name
+need_ipv4
+#
+2
+exim -d -bt x@mxt1c.test.ex
+****
diff --git a/test/scripts/0000-Basic/0470 b/test/scripts/0000-Basic/0470
new file mode 100644
index 000000000..b836021f8
--- /dev/null
+++ b/test/scripts/0000-Basic/0470
@@ -0,0 +1,12 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0471 b/test/scripts/0000-Basic/0471
new file mode 100644
index 000000000..b00658c30
--- /dev/null
+++ b/test/scripts/0000-Basic/0471
@@ -0,0 +1,166 @@
+# 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
diff --git a/test/scripts/0000-Basic/0472 b/test/scripts/0000-Basic/0472
new file mode 100644
index 000000000..94d2dc929
--- /dev/null
+++ b/test/scripts/0000-Basic/0472
@@ -0,0 +1,7 @@
+# $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
+****
diff --git a/test/scripts/0000-Basic/0473 b/test/scripts/0000-Basic/0473
new file mode 100644
index 000000000..4624f5f01
--- /dev/null
+++ b/test/scripts/0000-Basic/0473
@@ -0,0 +1,176 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0474 b/test/scripts/0000-Basic/0474
new file mode 100644
index 000000000..4aae5d2f9
--- /dev/null
+++ b/test/scripts/0000-Basic/0474
@@ -0,0 +1,49 @@
+# 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
diff --git a/test/scripts/0000-Basic/0475 b/test/scripts/0000-Basic/0475
new file mode 100644
index 000000000..e863f07c6
--- /dev/null
+++ b/test/scripts/0000-Basic/0475
@@ -0,0 +1,6 @@
+# malformed item in host list
+exim -bh V4NET.0.0.0
+mail from:<>
+rcpt to:<a@b>
+quit
+****
diff --git a/test/scripts/0000-Basic/0476 b/test/scripts/0000-Basic/0476
new file mode 100644
index 000000000..a7ddb0f4b
--- /dev/null
+++ b/test/scripts/0000-Basic/0476
@@ -0,0 +1,24 @@
+# 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
diff --git a/test/scripts/0000-Basic/0477 b/test/scripts/0000-Basic/0477
new file mode 100644
index 000000000..a4f71e185
--- /dev/null
+++ b/test/scripts/0000-Basic/0477
@@ -0,0 +1,6 @@
+# bind to outgoing interface fails
+need_ipv4
+#
+exim -odi userx@test.ex
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0478 b/test/scripts/0000-Basic/0478
new file mode 100644
index 000000000..fcbc98938
--- /dev/null
+++ b/test/scripts/0000-Basic/0478
@@ -0,0 +1,13 @@
+# 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
diff --git a/test/scripts/0000-Basic/0479 b/test/scripts/0000-Basic/0479
new file mode 100644
index 000000000..d0c5fb03a
--- /dev/null
+++ b/test/scripts/0000-Basic/0479
@@ -0,0 +1,10 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0480 b/test/scripts/0000-Basic/0480
new file mode 100644
index 000000000..cb4712bb1
--- /dev/null
+++ b/test/scripts/0000-Basic/0480
@@ -0,0 +1,48 @@
+# 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
diff --git a/test/scripts/0000-Basic/0481 b/test/scripts/0000-Basic/0481
new file mode 100644
index 000000000..3f308f992
--- /dev/null
+++ b/test/scripts/0000-Basic/0481
@@ -0,0 +1,5 @@
+# remove_headers and trailing colons
+exim -odi userx
+Remove-Me: this header is to be removed
+Another: This is another header
+****
diff --git a/test/scripts/0000-Basic/0482 b/test/scripts/0000-Basic/0482
new file mode 100644
index 000000000..48a53d749
--- /dev/null
+++ b/test/scripts/0000-Basic/0482
@@ -0,0 +1,24 @@
+# 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
diff --git a/test/scripts/0000-Basic/0483 b/test/scripts/0000-Basic/0483
new file mode 100644
index 000000000..14e42e3b9
--- /dev/null
+++ b/test/scripts/0000-Basic/0483
@@ -0,0 +1,7 @@
+# $sender_data and $recipient_data
+exim -bs -d-all+route
+mail from:<sender@domain1>
+rcpt to:<recip@domain2>
+rcpt to:<other@domain2>
+quit
+****
diff --git a/test/scripts/0000-Basic/0484 b/test/scripts/0000-Basic/0484
new file mode 100644
index 000000000..2c7c44bdb
--- /dev/null
+++ b/test/scripts/0000-Basic/0484
@@ -0,0 +1,15 @@
+# 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}}
+****
diff --git a/test/scripts/0000-Basic/0485 b/test/scripts/0000-Basic/0485
new file mode 100644
index 000000000..318e5a56a
--- /dev/null
+++ b/test/scripts/0000-Basic/0485
@@ -0,0 +1,18 @@
+# $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
+****
diff --git a/test/scripts/0000-Basic/0486 b/test/scripts/0000-Basic/0486
new file mode 100644
index 000000000..1d834da27
--- /dev/null
+++ b/test/scripts/0000-Basic/0486
@@ -0,0 +1,18 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0487 b/test/scripts/0000-Basic/0487
new file mode 100644
index 000000000..a4fc29881
--- /dev/null
+++ b/test/scripts/0000-Basic/0487
@@ -0,0 +1,12 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0488 b/test/scripts/0000-Basic/0488
new file mode 100644
index 000000000..e4b96b70a
--- /dev/null
+++ b/test/scripts/0000-Basic/0488
@@ -0,0 +1,11 @@
+# Multiple headers in one warn message
+exim -odq -bs
+MAIL FROM:<>
+RCPT TO:<userx@test.ex>
+DATA
+.
+QUIT
+****
+exim -Mvh $msg1
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0489 b/test/scripts/0000-Basic/0489
new file mode 100644
index 000000000..a824fc8aa
--- /dev/null
+++ b/test/scripts/0000-Basic/0489
@@ -0,0 +1,18 @@
+# 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
diff --git a/test/scripts/0000-Basic/0490 b/test/scripts/0000-Basic/0490
new file mode 100644
index 000000000..060e270b4
--- /dev/null
+++ b/test/scripts/0000-Basic/0490
Binary files differ
diff --git a/test/scripts/0000-Basic/0491 b/test/scripts/0000-Basic/0491
new file mode 100644
index 000000000..338d76281
--- /dev/null
+++ b/test/scripts/0000-Basic/0491
@@ -0,0 +1,16 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0492 b/test/scripts/0000-Basic/0492
new file mode 100644
index 000000000..cecea5fac
--- /dev/null
+++ b/test/scripts/0000-Basic/0492
@@ -0,0 +1,11 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0493 b/test/scripts/0000-Basic/0493
new file mode 100644
index 000000000..5a491b3fc
--- /dev/null
+++ b/test/scripts/0000-Basic/0493
@@ -0,0 +1,176 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0494 b/test/scripts/0000-Basic/0494
new file mode 100644
index 000000000..cb5732ddc
--- /dev/null
+++ b/test/scripts/0000-Basic/0494
@@ -0,0 +1,4 @@
+# never_mail in autoreply transport
+exim -odi xyz@test.ex
+Testing original message
+****
diff --git a/test/scripts/0000-Basic/0495 b/test/scripts/0000-Basic/0495
new file mode 100644
index 000000000..a6c1dcf40
--- /dev/null
+++ b/test/scripts/0000-Basic/0495
@@ -0,0 +1,219 @@
+# 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.
+****
diff --git a/test/scripts/0000-Basic/0496 b/test/scripts/0000-Basic/0496
new file mode 100644
index 000000000..ba96dc7dc
--- /dev/null
+++ b/test/scripts/0000-Basic/0496
@@ -0,0 +1,12 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0497 b/test/scripts/0000-Basic/0497
new file mode 100644
index 000000000..1465afec4
--- /dev/null
+++ b/test/scripts/0000-Basic/0497
@@ -0,0 +1,19 @@
+# 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
diff --git a/test/scripts/0000-Basic/0498 b/test/scripts/0000-Basic/0498
new file mode 100644
index 000000000..61a4ab923
--- /dev/null
+++ b/test/scripts/0000-Basic/0498
@@ -0,0 +1,39 @@
+# 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
diff --git a/test/scripts/0000-Basic/0499 b/test/scripts/0000-Basic/0499
new file mode 100644
index 000000000..f84a662f0
--- /dev/null
+++ b/test/scripts/0000-Basic/0499
@@ -0,0 +1,5 @@
+# @mx_any used in match_domains condition
+need_ipv4
+#
+exim -d -bt ph@mxt1.test.ex
+****
diff --git a/test/scripts/0000-Basic/0500 b/test/scripts/0000-Basic/0500
new file mode 100644
index 000000000..75bffe425
--- /dev/null
+++ b/test/scripts/0000-Basic/0500
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0501 b/test/scripts/0000-Basic/0501
new file mode 100644
index 000000000..c173255cb
--- /dev/null
+++ b/test/scripts/0000-Basic/0501
@@ -0,0 +1,6 @@
+# control = case{ful,less}_local_part
+exim -odi -bs
+mail from:<x@y>
+rcpt to:<Phil.Hazel@y>
+quit
+****
diff --git a/test/scripts/0000-Basic/0502 b/test/scripts/0000-Basic/0502
new file mode 100644
index 000000000..d4b8f0fdb
--- /dev/null
+++ b/test/scripts/0000-Basic/0502
@@ -0,0 +1,25 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0503 b/test/scripts/0000-Basic/0503
new file mode 100644
index 000000000..1a42005fc
--- /dev/null
+++ b/test/scripts/0000-Basic/0503
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/0000-Basic/0504 b/test/scripts/0000-Basic/0504
new file mode 100644
index 000000000..a48e8b4fe
--- /dev/null
+++ b/test/scripts/0000-Basic/0504
@@ -0,0 +1,28 @@
+# 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
diff --git a/test/scripts/0000-Basic/0505 b/test/scripts/0000-Basic/0505
new file mode 100644
index 000000000..7059a93b5
--- /dev/null
+++ b/test/scripts/0000-Basic/0505
@@ -0,0 +1,30 @@
+# 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
diff --git a/test/scripts/0000-Basic/0506 b/test/scripts/0000-Basic/0506
new file mode 100644
index 000000000..ed1d7bdff
--- /dev/null
+++ b/test/scripts/0000-Basic/0506
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/0000-Basic/0507 b/test/scripts/0000-Basic/0507
new file mode 100644
index 000000000..d4f5bc065
--- /dev/null
+++ b/test/scripts/0000-Basic/0507
@@ -0,0 +1,58 @@
+# 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
diff --git a/test/scripts/0000-Basic/0508 b/test/scripts/0000-Basic/0508
new file mode 100644
index 000000000..dede4cc7a
--- /dev/null
+++ b/test/scripts/0000-Basic/0508
@@ -0,0 +1,4 @@
+# errors_to and failing pipe
+exim -odi -f '<>' userx
+This is a test message
+****
diff --git a/test/scripts/0000-Basic/0509 b/test/scripts/0000-Basic/0509
new file mode 100644
index 000000000..7fb5809d9
--- /dev/null
+++ b/test/scripts/0000-Basic/0509
@@ -0,0 +1,3 @@
+# list of keys in dnslists
+exim -bs
+****
diff --git a/test/scripts/0000-Basic/0510 b/test/scripts/0000-Basic/0510
new file mode 100644
index 000000000..25b8a1e92
--- /dev/null
+++ b/test/scripts/0000-Basic/0510
@@ -0,0 +1,8 @@
+# -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.
+****
diff --git a/test/scripts/0000-Basic/0511 b/test/scripts/0000-Basic/0511
new file mode 100644
index 000000000..334646d6b
--- /dev/null
+++ b/test/scripts/0000-Basic/0511
@@ -0,0 +1,68 @@
+# 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
diff --git a/test/scripts/0000-Basic/0512 b/test/scripts/0000-Basic/0512
new file mode 100644
index 000000000..c33e0adba
--- /dev/null
+++ b/test/scripts/0000-Basic/0512
@@ -0,0 +1,15 @@
+# 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
diff --git a/test/scripts/0000-Basic/0513 b/test/scripts/0000-Basic/0513
new file mode 100644
index 000000000..ae0099eca
--- /dev/null
+++ b/test/scripts/0000-Basic/0513
@@ -0,0 +1,7 @@
+# $acl_verify_message
+exim -bh 1.2.3.4
+ehlo a.b.c.d
+mail from:<>
+rcpt to:<x@mxt2.test.ex>
+quit
+****
diff --git a/test/scripts/0000-Basic/0514 b/test/scripts/0000-Basic/0514
new file mode 100644
index 000000000..9343ff78e
--- /dev/null
+++ b/test/scripts/0000-Basic/0514
@@ -0,0 +1,11 @@
+# local user name containing space
+exim -odq userx
+Testing
+.
+****
+exim -d -bp
+****
+exim -Mvh $msg1
+****
+exim -q
+****
diff --git a/test/scripts/0000-Basic/0515 b/test/scripts/0000-Basic/0515
new file mode 100644
index 000000000..54dae445c
--- /dev/null
+++ b/test/scripts/0000-Basic/0515
@@ -0,0 +1,4 @@
+# "unseen" combined with "one_time"
+1
+exim -q
+****
diff --git a/test/scripts/0000-Basic/0516 b/test/scripts/0000-Basic/0516
new file mode 100644
index 000000000..f80a75fd2
--- /dev/null
+++ b/test/scripts/0000-Basic/0516
@@ -0,0 +1,8 @@
+# homonymic batched addresses with defer (stop duplicate delivery)
+exim -odi toplevel
+****
+exim -qf
+****
+exim -qf
+****
+no_msglog_check
diff --git a/test/scripts/0000-Basic/0517 b/test/scripts/0000-Basic/0517
new file mode 100644
index 000000000..44e0c7633
--- /dev/null
+++ b/test/scripts/0000-Basic/0517
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0518 b/test/scripts/0000-Basic/0518
new file mode 100644
index 000000000..1a6da0129
--- /dev/null
+++ b/test/scripts/0000-Basic/0518
@@ -0,0 +1,96 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0519 b/test/scripts/0000-Basic/0519
new file mode 100644
index 000000000..4c3a6cfbe
--- /dev/null
+++ b/test/scripts/0000-Basic/0519
@@ -0,0 +1,5 @@
+# Missing IP addresses for 2nd host in smtp router
+need_ipv4
+#
+exim -odi userx
+****
diff --git a/test/scripts/0000-Basic/0520 b/test/scripts/0000-Basic/0520
new file mode 100644
index 000000000..1954e8eec
--- /dev/null
+++ b/test/scripts/0000-Basic/0520
@@ -0,0 +1,5 @@
+# Duplicate addresses that depend on previous routing (1)
+exim -odi bob alice
+****
+exim -odi alice bob
+****
diff --git a/test/scripts/0000-Basic/0521 b/test/scripts/0000-Basic/0521
new file mode 100644
index 000000000..56c804cf2
--- /dev/null
+++ b/test/scripts/0000-Basic/0521
@@ -0,0 +1,3 @@
+# Duplicate addresses that depend on previous routing (2)
+exim -odi abc xyz
+****
diff --git a/test/scripts/0000-Basic/0522 b/test/scripts/0000-Basic/0522
new file mode 100644
index 000000000..e3efa2ee6
--- /dev/null
+++ b/test/scripts/0000-Basic/0522
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/0000-Basic/0523 b/test/scripts/0000-Basic/0523
new file mode 100644
index 000000000..eae8d4723
--- /dev/null
+++ b/test/scripts/0000-Basic/0523
@@ -0,0 +1,3 @@
+# Multiple headers_add in router
+exim -odi one two three four
+****
diff --git a/test/scripts/0000-Basic/0524 b/test/scripts/0000-Basic/0524
new file mode 100644
index 000000000..245c3d0a1
--- /dev/null
+++ b/test/scripts/0000-Basic/0524
@@ -0,0 +1,17 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0525 b/test/scripts/0000-Basic/0525
new file mode 100644
index 000000000..11b8784eb
--- /dev/null
+++ b/test/scripts/0000-Basic/0525
@@ -0,0 +1,26 @@
+# 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
diff --git a/test/scripts/0000-Basic/0526 b/test/scripts/0000-Basic/0526
new file mode 100644
index 000000000..053f0ae25
--- /dev/null
+++ b/test/scripts/0000-Basic/0526
@@ -0,0 +1,4 @@
+# def:variable with a value of "0"
+exim -bs
+quit
+****
diff --git a/test/scripts/0000-Basic/0527 b/test/scripts/0000-Basic/0527
new file mode 100644
index 000000000..e65032b4d
--- /dev/null
+++ b/test/scripts/0000-Basic/0527
@@ -0,0 +1,19 @@
+# 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
+****
diff --git a/test/scripts/0000-Basic/0528 b/test/scripts/0000-Basic/0528
new file mode 100644
index 000000000..0f640e87f
--- /dev/null
+++ b/test/scripts/0000-Basic/0528
@@ -0,0 +1,8 @@
+# port specifications in list of hosts
+need_ipv4
+#
+exim -bt x@y
+****
+exim -odi x@y
+****
+no_msglog_check
diff --git a/test/scripts/1000-Basic-ipv6/1000 b/test/scripts/1000-Basic-ipv6/1000
new file mode 100644
index 000000000..8788da94b
--- /dev/null
+++ b/test/scripts/1000-Basic-ipv6/1000
@@ -0,0 +1,7 @@
+# -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
+****
diff --git a/test/scripts/1000-Basic-ipv6/1001 b/test/scripts/1000-Basic-ipv6/1001
new file mode 100644
index 000000000..282c7eb8c
--- /dev/null
+++ b/test/scripts/1000-Basic-ipv6/1001
@@ -0,0 +1,67 @@
+# 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
+****
diff --git a/test/scripts/1000-Basic-ipv6/1002 b/test/scripts/1000-Basic-ipv6/1002
new file mode 100644
index 000000000..c9a8b3f22
--- /dev/null
+++ b/test/scripts/1000-Basic-ipv6/1002
@@ -0,0 +1,7 @@
+# @ 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
+****
diff --git a/test/scripts/1000-Basic-ipv6/1003 b/test/scripts/1000-Basic-ipv6/1003
new file mode 100644
index 000000000..646b1b4a3
--- /dev/null
+++ b/test/scripts/1000-Basic-ipv6/1003
@@ -0,0 +1,30 @@
+# 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
diff --git a/test/scripts/1000-Basic-ipv6/1005 b/test/scripts/1000-Basic-ipv6/1005
new file mode 100644
index 000000000..e4af6713c
--- /dev/null
+++ b/test/scripts/1000-Basic-ipv6/1005
@@ -0,0 +1,7 @@
+# dns_ipv4_lookup and gethostbyname
+need_ipv4
+need_ipv6
+#
+1
+exim -bt userx@eximtesthost.ipv6.test.ex
+****
diff --git a/test/scripts/1000-Basic-ipv6/1006 b/test/scripts/1000-Basic-ipv6/1006
new file mode 100644
index 000000000..365d1c68c
--- /dev/null
+++ b/test/scripts/1000-Basic-ipv6/1006
@@ -0,0 +1,27 @@
+# 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
diff --git a/test/scripts/1000-Basic-ipv6/1007 b/test/scripts/1000-Basic-ipv6/1007
new file mode 100644
index 000000000..9a2cbd638
--- /dev/null
+++ b/test/scripts/1000-Basic-ipv6/1007
@@ -0,0 +1,28 @@
+# 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
diff --git a/test/scripts/1000-Basic-ipv6/1008 b/test/scripts/1000-Basic-ipv6/1008
new file mode 100644
index 000000000..a91252af5
--- /dev/null
+++ b/test/scripts/1000-Basic-ipv6/1008
@@ -0,0 +1,28 @@
+# 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
diff --git a/test/scripts/1000-Basic-ipv6/REQUIRES b/test/scripts/1000-Basic-ipv6/REQUIRES
new file mode 100644
index 000000000..2923dcae2
--- /dev/null
+++ b/test/scripts/1000-Basic-ipv6/REQUIRES
@@ -0,0 +1 @@
+support IPv6
diff --git a/test/scripts/2000-GnuTLS/2000 b/test/scripts/2000-GnuTLS/2000
new file mode 100644
index 000000000..60afb52b4
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2000
@@ -0,0 +1,16 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2001 b/test/scripts/2000-GnuTLS/2001
new file mode 100644
index 000000000..cf1611a15
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2001
@@ -0,0 +1,13 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2002 b/test/scripts/2000-GnuTLS/2002
new file mode 100644
index 000000000..9c7ad0ff0
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2002
@@ -0,0 +1,66 @@
+# 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
+****
diff --git a/test/scripts/2000-GnuTLS/2003 b/test/scripts/2000-GnuTLS/2003
new file mode 100644
index 000000000..2e8eeae5f
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2003
@@ -0,0 +1,48 @@
+# 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
+****
diff --git a/test/scripts/2000-GnuTLS/2004 b/test/scripts/2000-GnuTLS/2004
new file mode 100644
index 000000000..4cdcab48f
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2004
@@ -0,0 +1,42 @@
+# 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
+****
diff --git a/test/scripts/2000-GnuTLS/2005 b/test/scripts/2000-GnuTLS/2005
new file mode 100644
index 000000000..333f8bc6a
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2005
@@ -0,0 +1,28 @@
+# 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
+****
diff --git a/test/scripts/2000-GnuTLS/2006 b/test/scripts/2000-GnuTLS/2006
new file mode 100644
index 000000000..7fd89dc3f
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2006
@@ -0,0 +1,17 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2007 b/test/scripts/2000-GnuTLS/2007
new file mode 100644
index 000000000..280c426d2
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2007
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2008 b/test/scripts/2000-GnuTLS/2008
new file mode 100644
index 000000000..f22086a76
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2008
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/2000-GnuTLS/2009 b/test/scripts/2000-GnuTLS/2009
new file mode 100644
index 000000000..69eb61d07
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2009
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2010 b/test/scripts/2000-GnuTLS/2010
new file mode 100644
index 000000000..06e259567
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2010
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2011 b/test/scripts/2000-GnuTLS/2011
new file mode 100644
index 000000000..4e48ebce6
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2011
@@ -0,0 +1,11 @@
+# TLS client: require_ciphers
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
diff --git a/test/scripts/2000-GnuTLS/2012 b/test/scripts/2000-GnuTLS/2012
new file mode 100644
index 000000000..e86bf1707
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2012
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2013 b/test/scripts/2000-GnuTLS/2013
new file mode 100644
index 000000000..ef34a6677
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2013
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/2000-GnuTLS/2014 b/test/scripts/2000-GnuTLS/2014
new file mode 100644
index 000000000..21b703c38
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2014
@@ -0,0 +1,138 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2015 b/test/scripts/2000-GnuTLS/2015
new file mode 100644
index 000000000..a03bf9b51
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2015
@@ -0,0 +1,18 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2016 b/test/scripts/2000-GnuTLS/2016
new file mode 100644
index 000000000..2da309d68
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2016
@@ -0,0 +1,16 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2017 b/test/scripts/2000-GnuTLS/2017
new file mode 100644
index 000000000..af08df0b1
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2017
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/2000-GnuTLS/2018 b/test/scripts/2000-GnuTLS/2018
new file mode 100644
index 000000000..6f67615a5
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2018
@@ -0,0 +1,43 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2019 b/test/scripts/2000-GnuTLS/2019
new file mode 100644
index 000000000..28d2de0ef
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2019
@@ -0,0 +1,40 @@
+# 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
+****
diff --git a/test/scripts/2000-GnuTLS/2020 b/test/scripts/2000-GnuTLS/2020
new file mode 100644
index 000000000..bd00740bf
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2020
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2021 b/test/scripts/2000-GnuTLS/2021
new file mode 100644
index 000000000..5c402ce2c
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2021
@@ -0,0 +1,53 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2022 b/test/scripts/2000-GnuTLS/2022
new file mode 100644
index 000000000..4a3d53339
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2022
@@ -0,0 +1,21 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2023 b/test/scripts/2000-GnuTLS/2023
new file mode 100644
index 000000000..395fcdcde
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2023
@@ -0,0 +1,7 @@
+# TLS: ACL for STARTTLS
+gnutls
+exim -bs -oMa 10.9.8.10
+ehlo a.b.c
+starttls
+quit
+****
diff --git a/test/scripts/2000-GnuTLS/2024 b/test/scripts/2000-GnuTLS/2024
new file mode 100644
index 000000000..46b93d413
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2024
@@ -0,0 +1,30 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2025 b/test/scripts/2000-GnuTLS/2025
new file mode 100644
index 000000000..38ffccf84
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2025
@@ -0,0 +1,11 @@
+# TLS server: tls_require_ciphers
+gnutls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
diff --git a/test/scripts/2000-GnuTLS/2026 b/test/scripts/2000-GnuTLS/2026
new file mode 100644
index 000000000..18361c62f
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2026
@@ -0,0 +1,9 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/2027 b/test/scripts/2000-GnuTLS/2027
new file mode 100644
index 000000000..5d713121d
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2027
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/2000-GnuTLS/2028 b/test/scripts/2000-GnuTLS/2028
new file mode 100644
index 000000000..64855c2a9
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/2028
@@ -0,0 +1,31 @@
+# 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
diff --git a/test/scripts/2000-GnuTLS/REQUIRES b/test/scripts/2000-GnuTLS/REQUIRES
new file mode 100644
index 000000000..d21ee471d
--- /dev/null
+++ b/test/scripts/2000-GnuTLS/REQUIRES
@@ -0,0 +1,2 @@
+support GnuTLS
+running IPv4
diff --git a/test/scripts/2100-OpenSSL/2100 b/test/scripts/2100-OpenSSL/2100
new file mode 100644
index 000000000..c2b0f8981
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2100
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2101 b/test/scripts/2100-OpenSSL/2101
new file mode 100644
index 000000000..824503e92
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2101
@@ -0,0 +1,12 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2102 b/test/scripts/2100-OpenSSL/2102
new file mode 100644
index 000000000..50fa905c3
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2102
@@ -0,0 +1,65 @@
+# 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
+****
diff --git a/test/scripts/2100-OpenSSL/2103 b/test/scripts/2100-OpenSSL/2103
new file mode 100644
index 000000000..c108d027e
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2103
@@ -0,0 +1,47 @@
+# 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
+****
diff --git a/test/scripts/2100-OpenSSL/2104 b/test/scripts/2100-OpenSSL/2104
new file mode 100644
index 000000000..ddf4546fe
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2104
@@ -0,0 +1,41 @@
+# 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
+****
diff --git a/test/scripts/2100-OpenSSL/2105 b/test/scripts/2100-OpenSSL/2105
new file mode 100644
index 000000000..96321f108
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2105
@@ -0,0 +1,27 @@
+# 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
+****
diff --git a/test/scripts/2100-OpenSSL/2106 b/test/scripts/2100-OpenSSL/2106
new file mode 100644
index 000000000..518c4be36
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2106
@@ -0,0 +1,16 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2107 b/test/scripts/2100-OpenSSL/2107
new file mode 100644
index 000000000..9317a5e86
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2107
@@ -0,0 +1,10 @@
+# TLS client: log_smtp_confirmation
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
diff --git a/test/scripts/2100-OpenSSL/2108 b/test/scripts/2100-OpenSSL/2108
new file mode 100644
index 000000000..43ca6cff0
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2108
@@ -0,0 +1,14 @@
+# 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
+****
diff --git a/test/scripts/2100-OpenSSL/2109 b/test/scripts/2100-OpenSSL/2109
new file mode 100644
index 000000000..85cb1300c
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2109
@@ -0,0 +1,10 @@
+# TLS client: hosts_avoid_tls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
diff --git a/test/scripts/2100-OpenSSL/2110 b/test/scripts/2100-OpenSSL/2110
new file mode 100644
index 000000000..fe197fabd
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2110
@@ -0,0 +1,10 @@
+# TLS client: hosts_require_tls
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Test message
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
diff --git a/test/scripts/2100-OpenSSL/2111 b/test/scripts/2100-OpenSSL/2111
new file mode 100644
index 000000000..516aa8292
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2111
@@ -0,0 +1,10 @@
+# TLS client: require_ciphers
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
diff --git a/test/scripts/2100-OpenSSL/2112 b/test/scripts/2100-OpenSSL/2112
new file mode 100644
index 000000000..4793929bc
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2112
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2113 b/test/scripts/2100-OpenSSL/2113
new file mode 100644
index 000000000..292b4086a
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2113
@@ -0,0 +1,14 @@
+# 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
+****
diff --git a/test/scripts/2100-OpenSSL/2114 b/test/scripts/2100-OpenSSL/2114
new file mode 100644
index 000000000..f671da4a4
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2114
@@ -0,0 +1,137 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2115 b/test/scripts/2100-OpenSSL/2115
new file mode 100644
index 000000000..b77fd9227
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2115
@@ -0,0 +1,17 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2116 b/test/scripts/2100-OpenSSL/2116
new file mode 100644
index 000000000..a11125bfb
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2116
@@ -0,0 +1,15 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2117 b/test/scripts/2100-OpenSSL/2117
new file mode 100644
index 000000000..2d7bffff1
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2117
@@ -0,0 +1,14 @@
+# 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
+****
diff --git a/test/scripts/2100-OpenSSL/2118 b/test/scripts/2100-OpenSSL/2118
new file mode 100644
index 000000000..c612f085c
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2118
@@ -0,0 +1,42 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2119 b/test/scripts/2100-OpenSSL/2119
new file mode 100644
index 000000000..d0fa719ca
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2119
@@ -0,0 +1,39 @@
+# 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
+****
diff --git a/test/scripts/2100-OpenSSL/2120 b/test/scripts/2100-OpenSSL/2120
new file mode 100644
index 000000000..7e0aa1e0e
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2120
@@ -0,0 +1,10 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2121 b/test/scripts/2100-OpenSSL/2121
new file mode 100644
index 000000000..49ee4c14e
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2121
@@ -0,0 +1,52 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2122 b/test/scripts/2100-OpenSSL/2122
new file mode 100644
index 000000000..f1b1d355f
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2122
@@ -0,0 +1,20 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2123 b/test/scripts/2100-OpenSSL/2123
new file mode 100644
index 000000000..927c266c6
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2123
@@ -0,0 +1,6 @@
+# TLS: ACL for STARTTLS
+exim -bs -oMa 10.9.8.10
+ehlo a.b.c
+starttls
+quit
+****
diff --git a/test/scripts/2100-OpenSSL/2124 b/test/scripts/2100-OpenSSL/2124
new file mode 100644
index 000000000..420f6ccdf
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2124
@@ -0,0 +1,29 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2125 b/test/scripts/2100-OpenSSL/2125
new file mode 100644
index 000000000..1899c4564
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2125
@@ -0,0 +1,10 @@
+# TLS server: tls_require_ciphers
+exim -DSERVER=server -bd -oX PORT_D
+****
+exim userx@test.ex
+Testing
+****
+exim -qf
+****
+killdaemon
+no_msglog_check
diff --git a/test/scripts/2100-OpenSSL/2126 b/test/scripts/2100-OpenSSL/2126
new file mode 100644
index 000000000..40e42f443
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2126
@@ -0,0 +1,8 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2127 b/test/scripts/2100-OpenSSL/2127
new file mode 100644
index 000000000..f2054ff5a
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2127
@@ -0,0 +1,14 @@
+# 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
+****
diff --git a/test/scripts/2100-OpenSSL/2128 b/test/scripts/2100-OpenSSL/2128
new file mode 100644
index 000000000..a2e74bfaa
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2128
@@ -0,0 +1,30 @@
+# 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
diff --git a/test/scripts/2100-OpenSSL/2149 b/test/scripts/2100-OpenSSL/2149
new file mode 100644
index 000000000..bba059158
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/2149
@@ -0,0 +1,11 @@
+# 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
+****
diff --git a/test/scripts/2100-OpenSSL/REQUIRES b/test/scripts/2100-OpenSSL/REQUIRES
new file mode 100644
index 000000000..9e2124e10
--- /dev/null
+++ b/test/scripts/2100-OpenSSL/REQUIRES
@@ -0,0 +1,2 @@
+support OpenSSL
+running IPv4
diff --git a/test/scripts/2200-dnsdb/2200 b/test/scripts/2200-dnsdb/2200
new file mode 100644
index 000000000..ccb326c2b
--- /dev/null
+++ b/test/scripts/2200-dnsdb/2200
@@ -0,0 +1,41 @@
+# 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}}
+****
diff --git a/test/scripts/2200-dnsdb/2201 b/test/scripts/2200-dnsdb/2201
new file mode 100644
index 000000000..600298793
--- /dev/null
+++ b/test/scripts/2200-dnsdb/2201
@@ -0,0 +1,6 @@
+# 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
+****
diff --git a/test/scripts/2200-dnsdb/REQUIRES b/test/scripts/2200-dnsdb/REQUIRES
new file mode 100644
index 000000000..abdd8f513
--- /dev/null
+++ b/test/scripts/2200-dnsdb/REQUIRES
@@ -0,0 +1 @@
+lookup dnsdb
diff --git a/test/scripts/2250-dnsdb-ipv6/2250 b/test/scripts/2250-dnsdb-ipv6/2250
new file mode 100644
index 000000000..08cd326ad
--- /dev/null
+++ b/test/scripts/2250-dnsdb-ipv6/2250
@@ -0,0 +1,6 @@
+# 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}}
+****
diff --git a/test/scripts/2250-dnsdb-ipv6/REQUIRES b/test/scripts/2250-dnsdb-ipv6/REQUIRES
new file mode 100644
index 000000000..383609dbc
--- /dev/null
+++ b/test/scripts/2250-dnsdb-ipv6/REQUIRES
@@ -0,0 +1,2 @@
+support IPv6
+lookup dnsdb
diff --git a/test/scripts/2300-DBM/2300 b/test/scripts/2300-DBM/2300
new file mode 100644
index 000000000..aee60f7de
--- /dev/null
+++ b/test/scripts/2300-DBM/2300
@@ -0,0 +1,34 @@
+# 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}}
+****
diff --git a/test/scripts/2300-DBM/REQUIRES b/test/scripts/2300-DBM/REQUIRES
new file mode 100644
index 000000000..92ba0b493
--- /dev/null
+++ b/test/scripts/2300-DBM/REQUIRES
@@ -0,0 +1 @@
+lookup dbm
diff --git a/test/scripts/2400-cdb/2400 b/test/scripts/2400-cdb/2400
new file mode 100644
index 000000000..85747a4f5
--- /dev/null
+++ b/test/scripts/2400-cdb/2400
@@ -0,0 +1,11 @@
+# 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}
+****
diff --git a/test/scripts/2400-cdb/REQUIRES b/test/scripts/2400-cdb/REQUIRES
new file mode 100644
index 000000000..1fb3adda4
--- /dev/null
+++ b/test/scripts/2400-cdb/REQUIRES
@@ -0,0 +1 @@
+lookup cdb
diff --git a/test/scripts/2500-dsearch/2500 b/test/scripts/2500-dsearch/2500
new file mode 100644
index 000000000..a1f4ac18b
--- /dev/null
+++ b/test/scripts/2500-dsearch/2500
@@ -0,0 +1,6 @@
+# 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}}
+****
diff --git a/test/scripts/2500-dsearch/2501 b/test/scripts/2500-dsearch/2501
new file mode 100644
index 000000000..44b5308eb
--- /dev/null
+++ b/test/scripts/2500-dsearch/2501
@@ -0,0 +1,4 @@
+# dsearch in domain list
+2
+exim -bt xxx@okdomain yyy@notokdomain zzz@dom/mod
+****
diff --git a/test/scripts/2500-dsearch/REQUIRES b/test/scripts/2500-dsearch/REQUIRES
new file mode 100644
index 000000000..2f6e8f319
--- /dev/null
+++ b/test/scripts/2500-dsearch/REQUIRES
@@ -0,0 +1 @@
+lookup dsearch
diff --git a/test/scripts/2600-SQLite/2600 b/test/scripts/2600-SQLite/2600
new file mode 100644
index 000000000..f388b1ac1
--- /dev/null
+++ b/test/scripts/2600-SQLite/2600
@@ -0,0 +1,32 @@
+# 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';}}
+****
diff --git a/test/scripts/2600-SQLite/REQUIRES b/test/scripts/2600-SQLite/REQUIRES
new file mode 100644
index 000000000..a00342498
--- /dev/null
+++ b/test/scripts/2600-SQLite/REQUIRES
@@ -0,0 +1 @@
+lookup sqlite
diff --git a/test/scripts/3000-Perl/3000 b/test/scripts/3000-Perl/3000
new file mode 100644
index 000000000..fc5002012
--- /dev/null
+++ b/test/scripts/3000-Perl/3000
@@ -0,0 +1,59 @@
+# 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
diff --git a/test/scripts/3000-Perl/REQUIRES b/test/scripts/3000-Perl/REQUIRES
new file mode 100644
index 000000000..36471ad08
--- /dev/null
+++ b/test/scripts/3000-Perl/REQUIRES
@@ -0,0 +1 @@
+support Perl
diff --git a/test/scripts/3100-dlfunc/3100 b/test/scripts/3100-dlfunc/3100
new file mode 100644
index 000000000..472fd9920
--- /dev/null
+++ b/test/scripts/3100-dlfunc/3100
@@ -0,0 +1,7 @@
+# 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}}
+****
diff --git a/test/scripts/3100-dlfunc/REQUIRES b/test/scripts/3100-dlfunc/REQUIRES
new file mode 100644
index 000000000..156565c5f
--- /dev/null
+++ b/test/scripts/3100-dlfunc/REQUIRES
@@ -0,0 +1 @@
+support Expand_dlfunc
diff --git a/test/scripts/3200-testdb/3200 b/test/scripts/3200-testdb/3200
new file mode 100644
index 000000000..cd02ab5bc
--- /dev/null
+++ b/test/scripts/3200-testdb/3200
@@ -0,0 +1,6 @@
+# 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}}
+****
diff --git a/test/scripts/3200-testdb/3201 b/test/scripts/3200-testdb/3201
new file mode 100644
index 000000000..bddea5439
--- /dev/null
+++ b/test/scripts/3200-testdb/3201
@@ -0,0 +1,5 @@
+# $sender_host_name - no auto lookup in query-style lookups
+exim -d -bh 10.0.0.1
+****
+exim -d -bh 10.0.0.2
+****
diff --git a/test/scripts/3200-testdb/3202 b/test/scripts/3200-testdb/3202
new file mode 100644
index 000000000..7b7206353
--- /dev/null
+++ b/test/scripts/3200-testdb/3202
@@ -0,0 +1,16 @@
+# 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
+****
diff --git a/test/scripts/3200-testdb/3203 b/test/scripts/3200-testdb/3203
new file mode 100644
index 000000000..46617d8b4
--- /dev/null
+++ b/test/scripts/3200-testdb/3203
@@ -0,0 +1,4 @@
+# Lookup defer (senders)
+exim -odi userx@test.ex
+****
+no_msglog_check
diff --git a/test/scripts/3200-testdb/3204 b/test/scripts/3200-testdb/3204
new file mode 100644
index 000000000..d4a24fe1b
--- /dev/null
+++ b/test/scripts/3200-testdb/3204
@@ -0,0 +1,5 @@
+# Lookup defer (sender_reject)
+exim -bh 1.2.3.4
+mail from:<userx@somehost.example.com>
+rcpt to:<x@y>
+quit
diff --git a/test/scripts/3200-testdb/3205 b/test/scripts/3200-testdb/3205
new file mode 100644
index 000000000..adb8be659
--- /dev/null
+++ b/test/scripts/3200-testdb/3205
@@ -0,0 +1,11 @@
+# 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
+****
diff --git a/test/scripts/3200-testdb/3206 b/test/scripts/3200-testdb/3206
new file mode 100644
index 000000000..925a6f85e
--- /dev/null
+++ b/test/scripts/3200-testdb/3206
@@ -0,0 +1,8 @@
+# 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
diff --git a/test/scripts/3200-testdb/3207 b/test/scripts/3200-testdb/3207
new file mode 100644
index 000000000..7325d0ea3
--- /dev/null
+++ b/test/scripts/3200-testdb/3207
@@ -0,0 +1,5 @@
+# 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
diff --git a/test/scripts/3200-testdb/3208 b/test/scripts/3200-testdb/3208
new file mode 100644
index 000000000..9e4f9e38a
--- /dev/null
+++ b/test/scripts/3200-testdb/3208
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/3200-testdb/3209 b/test/scripts/3200-testdb/3209
new file mode 100644
index 000000000..c619253a4
--- /dev/null
+++ b/test/scripts/3200-testdb/3209
@@ -0,0 +1,6 @@
+# defer in mx_domains
+need_ipv4
+#
+exim -odi x@mxt7.test.ex x@ten-1.test.ex
+****
+no_msglog_check
diff --git a/test/scripts/3200-testdb/3210 b/test/scripts/3200-testdb/3210
new file mode 100644
index 000000000..7a61c83ec
--- /dev/null
+++ b/test/scripts/3200-testdb/3210
@@ -0,0 +1,4 @@
+# named domain lists - lookup defer
+1
+exim -d -bt userx@test.ex
+****
diff --git a/test/scripts/3200-testdb/3211 b/test/scripts/3200-testdb/3211
new file mode 100644
index 000000000..44ab87238
--- /dev/null
+++ b/test/scripts/3200-testdb/3211
@@ -0,0 +1,16 @@
+# 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
+****
diff --git a/test/scripts/3200-testdb/3212 b/test/scripts/3200-testdb/3212
new file mode 100644
index 000000000..c6e809ccb
--- /dev/null
+++ b/test/scripts/3200-testdb/3212
@@ -0,0 +1,16 @@
+# 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}}
+****
diff --git a/test/scripts/3200-testdb/3213 b/test/scripts/3200-testdb/3213
new file mode 100644
index 000000000..ba34ffe11
--- /dev/null
+++ b/test/scripts/3200-testdb/3213
@@ -0,0 +1,8 @@
+# address list matching an empty address
+exim -bs
+helo x.y.z
+mail from:<>
+rset
+mail from:<x@y>
+quit
+****
diff --git a/test/scripts/3200-testdb/REQUIRES b/test/scripts/3200-testdb/REQUIRES
new file mode 100644
index 000000000..36e522fc2
--- /dev/null
+++ b/test/scripts/3200-testdb/REQUIRES
@@ -0,0 +1 @@
+lookup testdb
diff --git a/test/scripts/3300-crypteq/3300 b/test/scripts/3300-crypteq/3300
new file mode 100644
index 000000000..bd4dfccd2
--- /dev/null
+++ b/test/scripts/3300-crypteq/3300
@@ -0,0 +1,34 @@
+# 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}}
+****
diff --git a/test/scripts/3300-crypteq/REQUIRES b/test/scripts/3300-crypteq/REQUIRES
new file mode 100644
index 000000000..b3928b51a
--- /dev/null
+++ b/test/scripts/3300-crypteq/REQUIRES
@@ -0,0 +1 @@
+support crypteq
diff --git a/test/scripts/3400-plaintext/3400 b/test/scripts/3400-plaintext/3400
new file mode 100644
index 000000000..b547a21b9
--- /dev/null
+++ b/test/scripts/3400-plaintext/3400
@@ -0,0 +1,218 @@
+# 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
diff --git a/test/scripts/3400-plaintext/3401 b/test/scripts/3400-plaintext/3401
new file mode 100644
index 000000000..b3e7c6a0a
--- /dev/null
+++ b/test/scripts/3400-plaintext/3401
@@ -0,0 +1,141 @@
+# 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
diff --git a/test/scripts/3400-plaintext/3402 b/test/scripts/3400-plaintext/3402
new file mode 100644
index 000000000..c14066143
--- /dev/null
+++ b/test/scripts/3400-plaintext/3402
@@ -0,0 +1,13 @@
+# 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
+****
diff --git a/test/scripts/3400-plaintext/3403 b/test/scripts/3400-plaintext/3403
new file mode 100644
index 000000000..98981fa36
--- /dev/null
+++ b/test/scripts/3400-plaintext/3403
@@ -0,0 +1,13 @@
+# 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
diff --git a/test/scripts/3400-plaintext/3404 b/test/scripts/3400-plaintext/3404
new file mode 100644
index 000000000..98f737eac
--- /dev/null
+++ b/test/scripts/3400-plaintext/3404
@@ -0,0 +1,73 @@
+# -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
+.
+****
diff --git a/test/scripts/3400-plaintext/3405 b/test/scripts/3400-plaintext/3405
new file mode 100644
index 000000000..6312d1f40
--- /dev/null
+++ b/test/scripts/3400-plaintext/3405
@@ -0,0 +1,47 @@
+# -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
+.
+****
diff --git a/test/scripts/3400-plaintext/3406 b/test/scripts/3400-plaintext/3406
new file mode 100644
index 000000000..ea61c88e9
--- /dev/null
+++ b/test/scripts/3400-plaintext/3406
@@ -0,0 +1,21 @@
+# 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
+****
diff --git a/test/scripts/3400-plaintext/3407 b/test/scripts/3400-plaintext/3407
new file mode 100644
index 000000000..d42a22a74
--- /dev/null
+++ b/test/scripts/3400-plaintext/3407
@@ -0,0 +1,9 @@
+# diagnose duplicate authenticator methods
+1
+exim -bP authenticators
+****
+exim -DOPTION= -bP authenticators
+****
+1
+exim -DOPTION=client_send=zzz -bP authenticators
+****
diff --git a/test/scripts/3400-plaintext/3408 b/test/scripts/3400-plaintext/3408
new file mode 100644
index 000000000..25374a129
--- /dev/null
+++ b/test/scripts/3400-plaintext/3408
@@ -0,0 +1,23 @@
+# 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
diff --git a/test/scripts/3400-plaintext/3409 b/test/scripts/3400-plaintext/3409
new file mode 100644
index 000000000..e719d1084
--- /dev/null
+++ b/test/scripts/3400-plaintext/3409
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/3400-plaintext/3410 b/test/scripts/3400-plaintext/3410
new file mode 100644
index 000000000..20b5e067c
--- /dev/null
+++ b/test/scripts/3400-plaintext/3410
@@ -0,0 +1,30 @@
+# 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
+****
diff --git a/test/scripts/3400-plaintext/3411 b/test/scripts/3400-plaintext/3411
new file mode 100644
index 000000000..bd8dc2738
--- /dev/null
+++ b/test/scripts/3400-plaintext/3411
@@ -0,0 +1,22 @@
+# 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
+****
diff --git a/test/scripts/3400-plaintext/3412 b/test/scripts/3400-plaintext/3412
new file mode 100644
index 000000000..a551ad28c
--- /dev/null
+++ b/test/scripts/3400-plaintext/3412
@@ -0,0 +1,24 @@
+# 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
+****
diff --git a/test/scripts/3400-plaintext/3413 b/test/scripts/3400-plaintext/3413
new file mode 100644
index 000000000..3737d23d2
--- /dev/null
+++ b/test/scripts/3400-plaintext/3413
@@ -0,0 +1,10 @@
+# smtp_accept_max_nonmail and failing auth
+1
+exim -bs
+ehlo x.y.z
+auth rhubarb
+auth rhubarb
+auth rhubarb
+auth rhubarb
+auth rhubarb
+****
diff --git a/test/scripts/3400-plaintext/3414 b/test/scripts/3400-plaintext/3414
new file mode 100644
index 000000000..37528f2ea
--- /dev/null
+++ b/test/scripts/3400-plaintext/3414
@@ -0,0 +1,38 @@
+# 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
+****
diff --git a/test/scripts/3400-plaintext/3415 b/test/scripts/3400-plaintext/3415
new file mode 100644
index 000000000..05c7f0ae2
--- /dev/null
+++ b/test/scripts/3400-plaintext/3415
@@ -0,0 +1,127 @@
+# 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
diff --git a/test/scripts/3400-plaintext/REQUIRES b/test/scripts/3400-plaintext/REQUIRES
new file mode 100644
index 000000000..9690eb334
--- /dev/null
+++ b/test/scripts/3400-plaintext/REQUIRES
@@ -0,0 +1 @@
+authenticator plaintext
diff --git a/test/scripts/3450-plaintext-GnuTLS/3450 b/test/scripts/3450-plaintext-GnuTLS/3450
new file mode 100644
index 000000000..bb50a3e9c
--- /dev/null
+++ b/test/scripts/3450-plaintext-GnuTLS/3450
@@ -0,0 +1,43 @@
+# 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
diff --git a/test/scripts/3450-plaintext-GnuTLS/3451 b/test/scripts/3450-plaintext-GnuTLS/3451
new file mode 100644
index 000000000..762366324
--- /dev/null
+++ b/test/scripts/3450-plaintext-GnuTLS/3451
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/3450-plaintext-GnuTLS/3452 b/test/scripts/3450-plaintext-GnuTLS/3452
new file mode 100644
index 000000000..5cb7dd4f5
--- /dev/null
+++ b/test/scripts/3450-plaintext-GnuTLS/3452
@@ -0,0 +1,15 @@
+# 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
+****
diff --git a/test/scripts/3450-plaintext-GnuTLS/3453 b/test/scripts/3450-plaintext-GnuTLS/3453
new file mode 100644
index 000000000..cf99cd896
--- /dev/null
+++ b/test/scripts/3450-plaintext-GnuTLS/3453
@@ -0,0 +1,44 @@
+# 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
diff --git a/test/scripts/3450-plaintext-GnuTLS/REQUIRES b/test/scripts/3450-plaintext-GnuTLS/REQUIRES
new file mode 100644
index 000000000..eec18be19
--- /dev/null
+++ b/test/scripts/3450-plaintext-GnuTLS/REQUIRES
@@ -0,0 +1,3 @@
+support GnuTLS
+authenticator plaintext
+running IPv4
diff --git a/test/scripts/3460-plaintext-OpenSSL/3460 b/test/scripts/3460-plaintext-OpenSSL/3460
new file mode 100644
index 000000000..3d8f36c80
--- /dev/null
+++ b/test/scripts/3460-plaintext-OpenSSL/3460
@@ -0,0 +1,42 @@
+# 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
diff --git a/test/scripts/3460-plaintext-OpenSSL/3461 b/test/scripts/3460-plaintext-OpenSSL/3461
new file mode 100644
index 000000000..1366f1f72
--- /dev/null
+++ b/test/scripts/3460-plaintext-OpenSSL/3461
@@ -0,0 +1,14 @@
+# 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
+****
diff --git a/test/scripts/3460-plaintext-OpenSSL/3462 b/test/scripts/3460-plaintext-OpenSSL/3462
new file mode 100644
index 000000000..7f4d94e4e
--- /dev/null
+++ b/test/scripts/3460-plaintext-OpenSSL/3462
@@ -0,0 +1,14 @@
+# 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
+****
diff --git a/test/scripts/3460-plaintext-OpenSSL/3463 b/test/scripts/3460-plaintext-OpenSSL/3463
new file mode 100644
index 000000000..e2de70bb2
--- /dev/null
+++ b/test/scripts/3460-plaintext-OpenSSL/3463
@@ -0,0 +1,43 @@
+# 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
diff --git a/test/scripts/3460-plaintext-OpenSSL/REQUIRES b/test/scripts/3460-plaintext-OpenSSL/REQUIRES
new file mode 100644
index 000000000..264909808
--- /dev/null
+++ b/test/scripts/3460-plaintext-OpenSSL/REQUIRES
@@ -0,0 +1,3 @@
+support OpenSSL
+authenticator plaintext
+running IPv4
diff --git a/test/scripts/3500-CRAM-MD5/3500 b/test/scripts/3500-CRAM-MD5/3500
new file mode 100644
index 000000000..b3d2c05aa
--- /dev/null
+++ b/test/scripts/3500-CRAM-MD5/3500
@@ -0,0 +1,35 @@
+# 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
diff --git a/test/scripts/3500-CRAM-MD5/3501 b/test/scripts/3500-CRAM-MD5/3501
new file mode 100644
index 000000000..d9a27278c
--- /dev/null
+++ b/test/scripts/3500-CRAM-MD5/3501
@@ -0,0 +1,28 @@
+# 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
diff --git a/test/scripts/3500-CRAM-MD5/REQUIRES b/test/scripts/3500-CRAM-MD5/REQUIRES
new file mode 100644
index 000000000..93ec9fe82
--- /dev/null
+++ b/test/scripts/3500-CRAM-MD5/REQUIRES
@@ -0,0 +1 @@
+authenticator cram_md5
diff --git a/test/scripts/3600-SPA/3600 b/test/scripts/3600-SPA/3600
new file mode 100644
index 000000000..51b6f9083
--- /dev/null
+++ b/test/scripts/3600-SPA/3600
@@ -0,0 +1,45 @@
+# 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
diff --git a/test/scripts/3600-SPA/REQUIRES b/test/scripts/3600-SPA/REQUIRES
new file mode 100644
index 000000000..d5f7283b3
--- /dev/null
+++ b/test/scripts/3600-SPA/REQUIRES
@@ -0,0 +1,2 @@
+authenticator spa
+running IPv4
diff --git a/test/scripts/4000-scanning/4000 b/test/scripts/4000-scanning/4000
new file mode 100644
index 000000000..d0f132ce5
--- /dev/null
+++ b/test/scripts/4000-scanning/4000
@@ -0,0 +1,202 @@
+# 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
+****
diff --git a/test/scripts/4000-scanning/REQUIRES b/test/scripts/4000-scanning/REQUIRES
new file mode 100644
index 000000000..3f002958c
--- /dev/null
+++ b/test/scripts/4000-scanning/REQUIRES
@@ -0,0 +1,3 @@
+support Content_Scanning
+running SpamAssassin
+running ClamAV
diff --git a/test/scripts/4100-iconv/4100 b/test/scripts/4100-iconv/4100
new file mode 100644
index 000000000..37a1bd512
--- /dev/null
+++ b/test/scripts/4100-iconv/4100
@@ -0,0 +1,9 @@
+# $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>
+****
diff --git a/test/scripts/4100-iconv/REQUIRES b/test/scripts/4100-iconv/REQUIRES
new file mode 100644
index 000000000..84e013f1d
--- /dev/null
+++ b/test/scripts/4100-iconv/REQUIRES
@@ -0,0 +1 @@
+support iconv()
diff --git a/test/scripts/4950-translate-ip/4950 b/test/scripts/4950-translate-ip/4950
new file mode 100644
index 000000000..f8e1f389e
--- /dev/null
+++ b/test/scripts/4950-translate-ip/4950
@@ -0,0 +1,11 @@
+# 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
diff --git a/test/scripts/4950-translate-ip/REQUIRES b/test/scripts/4950-translate-ip/REQUIRES
new file mode 100644
index 000000000..b35172fe1
--- /dev/null
+++ b/test/scripts/4950-translate-ip/REQUIRES
@@ -0,0 +1 @@
+support translate_ip_address
diff --git a/test/scripts/5000-maildir/5000 b/test/scripts/5000-maildir/5000
new file mode 100644
index 000000000..5b763fcd3
--- /dev/null
+++ b/test/scripts/5000-maildir/5000
@@ -0,0 +1,58 @@
+# 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
+****
diff --git a/test/scripts/5000-maildir/5001 b/test/scripts/5000-maildir/5001
new file mode 100644
index 000000000..febf214c2
--- /dev/null
+++ b/test/scripts/5000-maildir/5001
@@ -0,0 +1,9 @@
+# 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
diff --git a/test/scripts/5000-maildir/5002 b/test/scripts/5000-maildir/5002
new file mode 100644
index 000000000..8b4b85529
--- /dev/null
+++ b/test/scripts/5000-maildir/5002
@@ -0,0 +1,41 @@
+# 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
diff --git a/test/scripts/5000-maildir/5003 b/test/scripts/5000-maildir/5003
new file mode 100644
index 000000000..851052e38
--- /dev/null
+++ b/test/scripts/5000-maildir/5003
@@ -0,0 +1,71 @@
+# 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
diff --git a/test/scripts/5000-maildir/5004 b/test/scripts/5000-maildir/5004
new file mode 100644
index 000000000..7317f4223
--- /dev/null
+++ b/test/scripts/5000-maildir/5004
@@ -0,0 +1,4 @@
+# maildir_format forced for address_file
+exim -d -odi userx@test.ex
+Testing
+****
diff --git a/test/scripts/5000-maildir/5005 b/test/scripts/5000-maildir/5005
new file mode 100644
index 000000000..ea7ccc360
--- /dev/null
+++ b/test/scripts/5000-maildir/5005
@@ -0,0 +1,21 @@
+# 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
diff --git a/test/scripts/5000-maildir/5006 b/test/scripts/5000-maildir/5006
new file mode 100644
index 000000000..253ba1bba
--- /dev/null
+++ b/test/scripts/5000-maildir/5006
@@ -0,0 +1,5 @@
+# maildir with maildirsize when no quota set
+exim -d -odi userx@test.ex
+Short message
+****
+no_msglog_check
diff --git a/test/scripts/5000-maildir/REQUIRES b/test/scripts/5000-maildir/REQUIRES
new file mode 100644
index 000000000..2b5a3c0ce
--- /dev/null
+++ b/test/scripts/5000-maildir/REQUIRES
@@ -0,0 +1 @@
+transport appendfile/maildir
diff --git a/test/scripts/5050-mbx/5050 b/test/scripts/5050-mbx/5050
new file mode 100644
index 000000000..a086efec4
--- /dev/null
+++ b/test/scripts/5050-mbx/5050
@@ -0,0 +1,31 @@
+# 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.
+****
diff --git a/test/scripts/5050-mbx/REQUIRES b/test/scripts/5050-mbx/REQUIRES
new file mode 100644
index 000000000..f63aaf6e7
--- /dev/null
+++ b/test/scripts/5050-mbx/REQUIRES
@@ -0,0 +1 @@
+transport appendfile/mbx
diff --git a/test/scripts/5100-lmtp-transport/5100 b/test/scripts/5100-lmtp-transport/5100
new file mode 100644
index 000000000..224943d44
--- /dev/null
+++ b/test/scripts/5100-lmtp-transport/5100
@@ -0,0 +1,39 @@
+# 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
diff --git a/test/scripts/5100-lmtp-transport/5101 b/test/scripts/5100-lmtp-transport/5101
new file mode 100644
index 000000000..45a69abcd
--- /dev/null
+++ b/test/scripts/5100-lmtp-transport/5101
@@ -0,0 +1,8 @@
+# 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.
+****
diff --git a/test/scripts/5100-lmtp-transport/5102 b/test/scripts/5100-lmtp-transport/5102
new file mode 100644
index 000000000..a12e3164d
--- /dev/null
+++ b/test/scripts/5100-lmtp-transport/5102
@@ -0,0 +1,77 @@
+# 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
diff --git a/test/scripts/5100-lmtp-transport/5103 b/test/scripts/5100-lmtp-transport/5103
new file mode 100644
index 000000000..3d7ace50f
--- /dev/null
+++ b/test/scripts/5100-lmtp-transport/5103
@@ -0,0 +1,8 @@
+# transport filter command fails to execute
+need_ipv4
+#
+exim -odi userx
+transport: t1
+Test 1
+****
+no_msglog_check
diff --git a/test/scripts/5100-lmtp-transport/REQUIRES b/test/scripts/5100-lmtp-transport/REQUIRES
new file mode 100644
index 000000000..2b68349b0
--- /dev/null
+++ b/test/scripts/5100-lmtp-transport/REQUIRES
@@ -0,0 +1 @@
+transport lmtp
diff --git a/test/scripts/5200-queryprogram/5200 b/test/scripts/5200-queryprogram/5200
new file mode 100644
index 000000000..457bb958a
--- /dev/null
+++ b/test/scripts/5200-queryprogram/5200
@@ -0,0 +1,4 @@
+# top-level freezing mechanisms
+exim -odi userx@test.ex
+Text.
+****
diff --git a/test/scripts/5200-queryprogram/5201 b/test/scripts/5200-queryprogram/5201
new file mode 100644
index 000000000..c46b2a775
--- /dev/null
+++ b/test/scripts/5200-queryprogram/5201
@@ -0,0 +1,16 @@
+# 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
diff --git a/test/scripts/5200-queryprogram/5202 b/test/scripts/5200-queryprogram/5202
new file mode 100644
index 000000000..b171f3b95
--- /dev/null
+++ b/test/scripts/5200-queryprogram/5202
@@ -0,0 +1,9 @@
+# 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/*
diff --git a/test/scripts/5200-queryprogram/5203 b/test/scripts/5200-queryprogram/5203
new file mode 100644
index 000000000..4441fc40b
--- /dev/null
+++ b/test/scripts/5200-queryprogram/5203
@@ -0,0 +1,5 @@
+# open file descriptor test
+exim -odi userx@remote.domain
+Test message
+.
+****
diff --git a/test/scripts/5200-queryprogram/5204 b/test/scripts/5200-queryprogram/5204
new file mode 100644
index 000000000..593ce82eb
--- /dev/null
+++ b/test/scripts/5200-queryprogram/5204
@@ -0,0 +1,28 @@
+# 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
+****
diff --git a/test/scripts/5200-queryprogram/5205 b/test/scripts/5200-queryprogram/5205
new file mode 100644
index 000000000..d014baff5
--- /dev/null
+++ b/test/scripts/5200-queryprogram/5205
@@ -0,0 +1,4 @@
+# ignore_target_hosts (byname)
+1
+exim -bt userx@ten-3.test.ex
+****
diff --git a/test/scripts/5200-queryprogram/5206 b/test/scripts/5200-queryprogram/5206
new file mode 100644
index 000000000..75d2110ed
--- /dev/null
+++ b/test/scripts/5200-queryprogram/5206
@@ -0,0 +1,4 @@
+# ignore_target_hosts (bydns)
+1
+exim -bt userx@ten-3.test.ex
+****
diff --git a/test/scripts/5200-queryprogram/5207 b/test/scripts/5200-queryprogram/5207
new file mode 100644
index 000000000..a0b6dffa0
--- /dev/null
+++ b/test/scripts/5200-queryprogram/5207
@@ -0,0 +1,4 @@
+# check address_data is preserved
+exim -odi userx@r6 userx@r7
+****
+no_msglog_check
diff --git a/test/scripts/5200-queryprogram/5208 b/test/scripts/5200-queryprogram/5208
new file mode 100644
index 000000000..892ec29dd
--- /dev/null
+++ b/test/scripts/5200-queryprogram/5208
@@ -0,0 +1,3 @@
+# /MX in a list of hosts
+exim -DLIST=mxt8.test.ex/MX -bt x@query.program
+****
diff --git a/test/scripts/5200-queryprogram/5209 b/test/scripts/5200-queryprogram/5209
new file mode 100644
index 000000000..136e413f8
--- /dev/null
+++ b/test/scripts/5200-queryprogram/5209
@@ -0,0 +1,4 @@
+# queryprogram and long return lines
+2
+exim -bt x@y
+****
diff --git a/test/scripts/5200-queryprogram/REQUIRES b/test/scripts/5200-queryprogram/REQUIRES
new file mode 100644
index 000000000..ecc95ade0
--- /dev/null
+++ b/test/scripts/5200-queryprogram/REQUIRES
@@ -0,0 +1 @@
+router queryprogram
diff --git a/test/scripts/5300-ipliteral/5300 b/test/scripts/5300-ipliteral/5300
new file mode 100644
index 000000000..fba34c471
--- /dev/null
+++ b/test/scripts/5300-ipliteral/5300
@@ -0,0 +1,23 @@
+# 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
+
diff --git a/test/scripts/5300-ipliteral/5301 b/test/scripts/5300-ipliteral/5301
new file mode 100644
index 000000000..300b4f0d0
--- /dev/null
+++ b/test/scripts/5300-ipliteral/5301
@@ -0,0 +1,14 @@
+# 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
+****
diff --git a/test/scripts/5300-ipliteral/REQUIRES b/test/scripts/5300-ipliteral/REQUIRES
new file mode 100644
index 000000000..fde468626
--- /dev/null
+++ b/test/scripts/5300-ipliteral/REQUIRES
@@ -0,0 +1 @@
+router ipliteral
diff --git a/test/scripts/9000-LDAP/9000 b/test/scripts/9000-LDAP/9000
new file mode 100644
index 000000000..0924b79a5
--- /dev/null
+++ b/test/scripts/9000-LDAP/9000
@@ -0,0 +1,175 @@
+# 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}
+****
diff --git a/test/scripts/9000-LDAP/9001 b/test/scripts/9000-LDAP/9001
new file mode 100644
index 000000000..1e385cd1b
--- /dev/null
+++ b/test/scripts/9000-LDAP/9001
@@ -0,0 +1,3 @@
+# hide LDAP password in log after expansion failure (no LDAP needed)
+exim -odi userx
+****
diff --git a/test/scripts/9000-LDAP/REQUIRES b/test/scripts/9000-LDAP/REQUIRES
new file mode 100644
index 000000000..941855d59
--- /dev/null
+++ b/test/scripts/9000-LDAP/REQUIRES
@@ -0,0 +1 @@
+lookup ldap
diff --git a/test/scripts/9100-MySQL/9100 b/test/scripts/9100-MySQL/9100
new file mode 100644
index 000000000..3121ca950
--- /dev/null
+++ b/test/scripts/9100-MySQL/9100
@@ -0,0 +1,22 @@
+# 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
+.
+****
diff --git a/test/scripts/9200-PostgreSQL/9200 b/test/scripts/9200-PostgreSQL/9200
new file mode 100644
index 000000000..2fd81f5e4
--- /dev/null
+++ b/test/scripts/9200-PostgreSQL/9200
@@ -0,0 +1,25 @@
+# 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';}}
+****
diff --git a/test/scripts/9300-Cyrus-SASL/9300 b/test/scripts/9300-Cyrus-SASL/9300
new file mode 100644
index 000000000..4be6c17c0
--- /dev/null
+++ b/test/scripts/9300-Cyrus-SASL/9300
@@ -0,0 +1,22 @@
+# 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
diff --git a/test/scripts/9300-Cyrus-SASL/REQUIRES b/test/scripts/9300-Cyrus-SASL/REQUIRES
new file mode 100644
index 000000000..f6c49fc42
--- /dev/null
+++ b/test/scripts/9300-Cyrus-SASL/REQUIRES
@@ -0,0 +1 @@
+authenticator cyrus_sasl
diff --git a/test/scripts/9400-local_scan/9400 b/test/scripts/9400-local_scan/9400
new file mode 100644
index 000000000..aa5bc9214
--- /dev/null
+++ b/test/scripts/9400-local_scan/9400
@@ -0,0 +1,360 @@
+# 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
diff --git a/test/scripts/9400-local_scan/9401 b/test/scripts/9400-local_scan/9401
new file mode 100644
index 000000000..c310d09a4
--- /dev/null
+++ b/test/scripts/9400-local_scan/9401
@@ -0,0 +1,14 @@
+# -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
diff --git a/test/scripts/9400-local_scan/9402 b/test/scripts/9400-local_scan/9402
new file mode 100644
index 000000000..a4345acce
--- /dev/null
+++ b/test/scripts/9400-local_scan/9402
@@ -0,0 +1,36 @@
+# 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
diff --git a/test/scripts/9450-memory/9450 b/test/scripts/9450-memory/9450
new file mode 100644
index 000000000..fb6cd683f
--- /dev/null
+++ b/test/scripts/9450-memory/9450
@@ -0,0 +1,3 @@
+# Memory handling for lookups that build long strings
+exim -d-all+memory -bt alias
+****
diff --git a/test/scripts/9900-testing/9900 b/test/scripts/9900-testing/9900
new file mode 100644
index 000000000..0ed4bab6e
--- /dev/null
+++ b/test/scripts/9900-testing/9900
@@ -0,0 +1,64 @@
+# 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
+****
diff --git a/test/scripts/9900-testing/9901 b/test/scripts/9900-testing/9901
new file mode 100644
index 000000000..b9943ce2c
--- /dev/null
+++ b/test/scripts/9900-testing/9901
@@ -0,0 +1,26 @@
+# 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
diff --git a/test/scripts/9900-testing/9902 b/test/scripts/9900-testing/9902
new file mode 100644
index 000000000..d20ade8ee
--- /dev/null
+++ b/test/scripts/9900-testing/9902
@@ -0,0 +1,15 @@
+# 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
+****