Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
  134
  135
  136
  137
  138
  139
  140
  141
  142
  143
  144
  145
  146
  147
  148
  149
  150
  151
  152
  153
  154
  155
  156
  157
  158
  159
  160
  161
  162
  163
  164
  165
  166
  167
  168
  169
  170
  171
  172
  173
  174
  175
  176
  177
  178
  179
  180
  181
  182
  183
  184
  185
  186
  187
  188
  189
  190
  191
  192
  193
  194
  195
  196
  197
  198
  199
  200
  201
  202
  203
  204
  205
  206
  207
  208
  209
  210
  211
  212
  213
  214
  215
  216
  217
  218
  219
  220
  221
  222
  223
  224
  225
  226
  227
  228
  229
  230
  231
  232
  233
  234
  235
  236
  237
  238
  239
  240
  241
  242
  243
  244
  245
  246
  247
  248
  249
  250
  251
  252
  253
  254
  255
  256
  257
  258
  259
  260
  261
  262
  263
  264
  265
  266
  267
  268
  269
  270
  271
  272
  273
  274
  275
  276
  277
  278
  279
  280
  281
  282
  283
  284
  285
  286
  287
  288
  289
  290
  291
  292
  293
  294
  295
  296
  297
  298
  299
  300
  301
  302
  303
  304
  305
  306
  307
  308
  309
  310
  311
  312
  313
  314
  315
  316
  317
  318
  319
  320
  321
  322
  323
  324
  325
  326
  327
  328
  329
  330
  331
  332
  333
  334
  335
  336
  337
  338
  339
  340
  341
  342
  343
  344
  345
  346
  347
  348
  349
  350
  351
  352
  353
  354
  355
  356
  357
  358
  359
  360
  361
  362
  363
  364
  365
  366
  367
  368
  369
  370
  371
  372
  373
  374
  375
  376
  377
  378
  379
  380
  381
  382
  383
  384
  385
  386
  387
  388
  389
  390
  391
  392
  393
  394
  395
  396
  397
  398
  399
  400
  401
  402
  403
  404
  405
  406
  407
  408
  409
  410
  411
  412
  413
  414
  415
  416
  417
  418
  419
  420
  421
  422
  423
  424
  425
  426
  427
  428
  429
  430
  431
  432
  433
  434
  435
  436
  437
  438
  439
  440
  441
  442
  443
  444
  445
  446
  447
  448
  449
  450
  451
  452
  453
  454
  455
  456
  457
  458
  459
  460
  461
  462
  463
  464
  465
  466
  467
  468
  469
  470
  471
  472
  473
  474
  475
  476
  477
  478
  479
  480
  481
  482
  483
  484
  485
  486
  487
  488
  489
  490
  491
  492
  493
  494
  495
  496
  497
  498
  499
  500
  501
  502
  503
  504
  505
  506
  507
  508
  509
  510
  511
  512
  513
  514
  515
  516
  517
  518
  519
  520
  521
  522
  523
  524
  525
  526
  527
  528
  529
  530
  531
  532
  533
  534
  535
  536
  537
  538
  539
  540
  541
  542
  543
  544
  545
  546
  547
  548
  549
  550
  551
  552
  553
  554
  555
  556
  557
  558
  559
  560
  561
  562
  563
  564
  565
  566
  567
  568
  569
  570
  571
  572
  573
  574
  575
  576
  577
  578
  579
  580
  581
  582
  583
  584
  585
  586
  587
  588
  589
  590
  591
  592
  593
  594
  595
  596
  597
  598
  599
  600
  601
  602
  603
  604
  605
  606
  607
  608
  609
  610
  611
  612
  613
  614
  615
  616
  617
  618
  619
  620
  621
  622
  623
  624
  625
  626
  627
  628
  629
  630
  631
  632
  633
  634
  635
  636
  637
  638
  639
  640
  641
  642
  643
  644
  645
  646
  647
  648
  649
  650
  651
  652
  653
  654
  655
  656
  657
  658
  659
  660
  661
  662
  663
  664
  665
  666
  667
  668
  669
  670
  671
  672
  673
  674
  675
  676
  677
  678
  679
  680
  681
  682
  683
  684
  685
  686
  687
  688
  689
  690
  691
  692
  693
  694
  695
  696
  697
  698
  699
  700
  701
  702
  703
  704
  705
  706
  707
  708
  709
  710
  711
  712
  713
  714
  715
  716
  717
  718
  719
  720
  721
  722
  723
  724
  725
  726
  727
  728
  729
  730
  731
  732
  733
  734
  735
  736
  737
  738
  739
  740
  741
  742
  743
  744
  745
  746
  747
  748
  749
  750
  751
  752
  753
  754
  755
  756
  757
  758
  759
  760
  761
  762
  763
  764
  765
  766
  767
  768
  769
  770
  771
  772
  773
  774
  775
  776
  777
  778
  779
  780
  781
  782
  783
  784
  785
  786
  787
  788
  789
  790
  791
  792
  793
  794
  795
  796
  797
  798
  799
  800
  801
  802
  803
  804
  805
  806
  807
  808
  809
  810
  811
  812
  813
  814
  815
  816
  817
  818
  819
  820
  821
  822
  823
  824
  825
  826
  827
  828
  829
  830
  831
  832
  833
  834
  835
  836
  837
  838
  839
  840
  841
  842
  843
  844
  845
  846
  847
  848
  849
  850
  851
  852
  853
  854
  855
  856
  857
  858
  859
  860
  861
  862
  863
  864
  865
  866
  867
  868
  869
  870
  871
  872
  873
  874
  875
  876
  877
  878
  879
  880
  881
  882
  883
  884
  885
  886
  887
  888
  889
  890
  891
  892
  893
  894
  895
  896
  897
  898
  899
  900
  901
  902
  903
  904
  905
  906
  907
  908
  909
  910
  911
  912
  913
  914
  915
  916
  917
  918
  919
  920
  921
  922
  923
  924
  925
  926
  927
  928
  929
  930
  931
  932
  933
  934
  935
  936
  937
  938
  939
  940
  941
  942
  943
  944
  945
  946
  947
  948
  949
  950
  951
  952
  953
  954
  955
  956
  957
  958
  959
  960
  961
  962
  963
  964
  965
  966
  967
  968
  969
  970
  971
  972
  973
  974
  975
  976
  977
  978
  979
  980
  981
  982
  983
  984
  985
  986
  987
  988
  989
  990
  991
  992
  993
  994
  995
  996
  997
  998
  999
 1000
 1001
 1002
 1003
 1004
 1005
 1006
 1007
 1008
 1009
 1010
 1011
 1012
 1013
 1014
 1015
 1016
 1017
 1018
 1019
 1020
 1021
 1022
 1023
 1024
 1025
 1026
 1027
 1028
 1029
 1030
 1031
 1032
 1033
 1034
 1035
 1036
 1037
 1038
 1039
 1040
 1041
 1042
 1043
 1044
 1045
 1046
 1047
 1048
 1049
 1050
 1051
 1052
 1053
 1054
 1055
 1056
 1057
 1058
 1059
 1060
 1061
 1062
 1063
 1064
 1065
 1066
 1067
 1068
 1069
 1070
 1071
 1072
 1073
 1074
 1075
 1076
 1077
 1078
 1079
 1080
 1081
 1082
 1083
 1084
 1085
 1086
 1087
 1088
 1089
 1090
 1091
 1092
 1093
 1094
 1095
 1096
 1097
 1098
 1099
 1100
 1101
 1102
 1103
 1104
 1105
 1106
 1107
 1108
 1109
 1110
 1111
 1112
 1113
 1114
 1115
 1116
 1117
 1118
 1119
 1120
 1121
 1122
 1123
 1124
 1125
 1126
 1127
 1128
 1129
 1130
 1131
 1132
 1133
 1134
 1135
 1136
 1137
 1138
 1139
 1140
 1141
 1142
 1143
 1144
 1145
 1146
 1147
 1148
 1149
 1150
 1151
 1152
 1153
 1154
 1155
 1156
 1157
 1158
 1159
 1160
 1161
 1162
 1163
 1164
 1165
 1166
 1167
 1168
 1169
 1170
 1171
 1172
 1173
 1174
 1175
 1176
 1177
 1178
 1179
 1180
 1181
 1182
 1183
 1184
 1185
 1186
 1187
 1188
 1189
 1190
 1191
 1192
 1193
 1194
 1195
 1196
 1197
 1198
 1199
 1200
 1201
 1202
 1203
 1204
 1205
 1206
 1207
 1208
 1209
 1210
 1211
 1212
 1213
 1214
 1215
 1216
 1217
 1218
 1219
 1220
 1221
 1222
 1223
 1224
 1225
 1226
 1227
 1228
 1229
 1230
 1231
 1232
 1233
 1234
 1235
 1236
 1237
 1238
 1239
 1240
 1241
 1242
 1243
 1244
 1245
 1246
 1247
 1248
 1249
 1250
 1251
 1252
 1253
 1254
 1255
 1256
 1257
 1258
 1259
 1260
 1261
 1262
 1263
 1264
 1265
 1266
 1267
 1268
 1269
 1270
 1271
 1272
 1273
 1274
 1275
 1276
 1277
 1278
 1279
 1280
 1281
 1282
 1283
 1284
 1285
 1286
 1287
 1288
 1289
 1290
 1291
 1292
 1293
 1294
 1295
 1296
 1297
 1298
 1299
 1300
 1301
 1302
 1303
 1304
 1305
 1306
 1307
 1308
 1309
 1310
 1311
 1312
 1313
 1314
 1315
 1316
 1317
 1318
 1319
 1320
 1321
 1322
 1323
 1324
 1325
 1326
 1327
 1328
 1329
 1330
 1331
 1332
 1333
 1334
 1335
 1336
 1337
 1338
 1339
 1340
 1341
 1342
 1343
 1344
 1345
 1346
 1347
 1348
 1349
 1350
 1351
 1352
 1353
 1354
 1355
 1356
 1357
 1358
 1359
 1360
 1361
 1362
 1363
 1364
 1365
 1366
 1367
 1368
 1369
 1370
 1371
 1372
 1373
 1374
 1375
 1376
 1377
 1378
 1379
 1380
 1381
 1382
 1383
 1384
 1385
 1386
 1387
 1388
 1389
 1390
 1391
 1392
 1393
 1394
 1395
 1396
 1397
 1398
 1399
 1400
 1401
 1402
 1403
 1404
 1405
 1406
 1407
 1408
 1409
 1410
 1411
 1412
 1413
 1414
 1415
 1416
 1417
 1418
 1419
 1420
 1421
 1422
 1423
 1424
 1425
 1426
 1427
 1428
 1429
 1430
 1431
 1432
 1433
 1434
 1435
 1436
 1437
 1438
 1439
 1440
 1441
 1442
 1443
 1444
 1445
 1446
 1447
 1448
 1449
 1450
 1451
 1452
 1453
 1454
 1455
 1456
 1457
 1458
 1459
 1460
 1461
 1462
 1463
 1464
 1465
 1466
 1467
 1468
 1469
 1470
 1471
 1472
 1473
 1474
 1475
 1476
 1477
 1478
 1479
 1480
 1481
 1482
 1483
 1484
 1485
 1486
 1487
 1488
 1489
 1490
 1491
 1492
 1493
 1494
 1495
 1496
 1497
 1498
 1499
 1500
 1501
 1502
 1503
 1504
 1505
 1506
 1507
 1508
 1509
 1510
 1511
 1512
 1513
 1514
 1515
 1516
 1517
 1518
 1519
 1520
 1521
 1522
 1523
 1524
 1525
 1526
 1527
 1528
 1529
 1530
 1531
 1532
 1533
 1534
 1535
 1536
 1537
 1538
 1539
 1540
 1541
 1542
 1543
 1544
 1545
 1546
 1547
 1548
 1549
 1550
 1551
 1552
 1553
 1554
 1555
 1556
 1557
 1558
 1559
 1560
 1561
 1562
 1563
 1564
 1565
 1566
 1567
 1568
 1569
 1570
 1571
 1572
 1573
 1574
 1575
 1576
 1577
 1578
 1579
 1580
 1581
 1582
 1583
 1584
 1585
 1586
 1587
 1588
 1589
 1590
 1591
 1592
 1593
 1594
 1595
 1596
 1597
 1598
 1599
 1600
 1601
 1602
 1603
 1604
 1605
 1606
 1607
 1608
 1609
 1610
 1611
 1612
 1613
 1614
 1615
 1616
 1617
 1618
 1619
 1620
 1621
 1622
 1623
 1624
 1625
 1626
 1627
 1628
 1629
 1630
 1631
 1632
 1633
 1634
 1635
 1636
 1637
 1638
 1639
 1640
 1641
 1642
 1643
 1644
 1645
 1646
 1647
 1648
 1649
 1650
 1651
 1652
 1653
 1654
 1655
 1656
 1657
 1658
 1659
 1660
 1661
 1662
 1663
 1664
 1665
 1666
 1667
 1668
 1669
 1670
 1671
 1672
 1673
 1674
 1675
 1676
 1677
 1678
 1679
 1680
 1681
 1682
 1683
 1684
 1685
 1686
 1687
 1688
 1689
 1690
 1691
 1692
 1693
 1694
 1695
 1696
 1697
 1698
 1699
 1700
 1701
 1702
 1703
 1704
 1705
 1706
 1707
 1708
 1709
 1710
 1711
 1712
 1713
 1714
 1715
 1716
 1717
 1718
 1719
 1720
 1721
 1722
 1723
 1724
 1725
 1726
 1727
 1728
 1729
 1730
 1731
 1732
 1733
 1734
 1735
 1736
 1737
 1738
 1739
 1740
 1741
 1742
 1743
 1744
 1745
 1746
 1747
 1748
 1749
 1750
 1751
 1752
 1753
 1754
 1755
 1756
 1757
 1758
 1759
 1760
 1761
 1762
 1763
 1764
 1765
 1766
 1767
 1768
 1769
 1770
 1771
 1772
 1773
 1774
 1775
 1776
 1777
 1778
 1779
 1780
 1781
 1782
 1783
 1784
 1785
 1786
 1787
 1788
 1789
 1790
 1791
 1792
 1793
 1794
 1795
 1796
 1797
 1798
 1799
 1800
 1801
 1802
 1803
 1804
 1805
 1806
 1807
 1808
 1809
 1810
 1811
 1812
 1813
 1814
 1815
 1816
 1817
 1818
 1819
 1820
 1821
 1822
 1823
 1824
 1825
 1826
 1827
 1828
 1829
 1830
 1831
 1832
 1833
 1834
 1835
 1836
 1837
 1838
 1839
 1840
 1841
 1842
 1843
 1844
 1845
 1846
 1847
 1848
 1849
 1850
 1851
 1852
 1853
 1854
 1855
 1856
 1857
 1858
 1859
 1860
 1861
 1862
 1863
 1864
 1865
 1866
 1867
 1868
 1869
 1870
 1871
 1872
 1873
 1874
 1875
 1876
 1877
 1878
 1879
 1880
 1881
 1882
 1883
 1884
 1885
 1886
 1887
 1888
 1889
 1890
 1891
 1892
 1893
 1894
 1895
 1896
 1897
 1898
 1899
 1900
 1901
 1902
 1903
 1904
 1905
 1906
 1907
 1908
 1909
 1910
 1911
 1912
 1913
 1914
 1915
 1916
 1917
 1918
 1919
 1920
 1921
 1922
 1923
 1924
 1925
 1926
 1927
 1928
 1929
 1930
 1931
 1932
 1933
 1934
 1935
 1936
 1937
 1938
 1939
 1940
 1941
 1942
 1943
 1944
 1945
 1946
 1947
 1948
 1949
 1950
 1951
 1952
 1953
 1954
 1955
 1956
 1957
 1958
 1959
 1960
 1961
 1962
 1963
 1964
 1965
 1966
 1967
 1968
 1969
 1970
 1971
 1972
 1973
 1974
 1975
 1976
 1977
 1978
 1979
 1980
 1981
 1982
 1983
 1984
 1985
 1986
 1987
 1988
 1989
 1990
 1991
 1992
 1993
 1994
 1995
 1996
 1997
 1998
 1999
 2000
 2001
 2002
 2003
 2004
 2005
 2006
 2007
 2008
 2009
 2010
 2011
 2012
 2013
 2014
 2015
 2016
 2017
 2018
 2019
 2020
 2021
 2022
 2023
 2024
 2025
 2026
 2027
 2028
 2029
 2030
 2031
 2032
 2033
 2034
 2035
 2036
 2037
 2038
 2039
 2040
 2041
 2042
 2043
 2044
 2045
 2046
 2047
 2048
 2049
 2050
 2051
 2052
 2053
 2054
 2055
 2056
 2057
 2058
 2059
 2060
 2061
 2062
 2063
 2064
 2065
 2066
 2067
 2068
 2069
 2070
 2071
 2072
 2073
 2074
 2075
 2076
 2077
 2078
 2079
 2080
 2081
 2082
 2083
 2084
 2085
 2086
 2087
 2088
 2089
 2090
 2091
 2092
 2093
 2094
 2095
 2096
 2097
 2098
 2099
 2100
 2101
 2102
 2103
 2104
 2105
 2106
 2107
 2108
 2109
 2110
 2111
 2112
 2113
 2114
 2115
 2116
 2117
 2118
 2119
 2120
 2121
 2122
 2123
 2124
 2125
 2126
 2127
 2128
 2129
 2130
 2131
 2132
 2133
 2134
 2135
 2136
 2137
 2138
 2139
 2140
 2141
 2142
 2143
 2144
 2145
 2146
 2147
 2148
 2149
 2150
 2151
 2152
 2153
 2154
 2155
 2156
 2157
 2158
 2159
 2160
 2161
 2162
 2163
 2164
 2165
 2166
 2167
 2168
 2169
 2170
 2171
 2172
 2173
 2174
 2175
 2176
 2177
 2178
 2179
 2180
 2181
 2182
 2183
 2184
 2185
 2186
 2187
 2188
 2189
 2190
 2191
 2192
 2193
 2194
 2195
 2196
 2197
 2198
 2199
 2200
 2201
 2202
 2203
 2204
 2205
 2206
 2207
 2208
 2209
 2210
 2211
 2212
 2213
 2214
 2215
 2216
 2217
 2218
 2219
 2220
 2221
 2222
 2223
 2224
 2225
 2226
 2227
 2228
 2229
 2230
 2231
 2232
 2233
 2234
 2235
 2236
 2237
 2238
 2239
 2240
 2241
 2242
 2243
 2244
 2245
 2246
 2247
 2248
 2249
 2250
 2251
 2252
 2253
 2254
 2255
 2256
 2257
 2258
 2259
 2260
 2261
 2262
 2263
 2264
 2265
 2266
 2267
 2268
 2269
 2270
 2271
 2272
 2273
 2274
 2275
 2276
 2277
 2278
 2279
 2280
 2281
 2282
 2283
 2284
 2285
 2286
 2287
 2288
 2289
 2290
 2291
 2292
 2293
 2294
 2295
 2296
 2297
 2298
 2299
 2300
 2301
 2302
 2303
 2304
 2305
 2306
 2307
 2308
 2309
 2310
 2311
 2312
 2313
 2314
 2315
 2316
 2317
 2318
 2319
 2320
 2321
 2322
 2323
 2324
 2325
 2326
 2327
 2328
 2329
 2330
 2331
 2332
 2333
 2334
 2335
 2336
 2337
 2338
 2339
 2340
 2341
 2342
 2343
 2344
 2345
 2346
 2347
 2348
 2349
 2350
 2351
 2352
 2353
 2354
 2355
 2356
 2357
 2358
 2359
 2360
 2361
 2362
 2363
 2364
 2365
 2366
 2367
 2368
 2369
 2370
 2371
 2372
 2373
 2374
 2375
 2376
 2377
 2378
 2379
 2380
 2381
 2382
 2383
 2384
 2385
 2386
 2387
 2388
 2389
 2390
 2391
 2392
 2393
 2394
 2395
 2396
 2397
 2398
 2399
 2400
 2401
 2402
 2403
 2404
 2405
 2406
 2407
 2408
 2409
 2410
 2411
 2412
 2413
 2414
 2415
 2416
 2417
 2418
 2419
 2420
 2421
 2422
 2423
 2424
 2425
 2426
 2427
 2428
 2429
 2430
 2431
 2432
 2433
 2434
 2435
 2436
 2437
 2438
 2439
 2440
 2441
 2442
 2443
 2444
 2445
 2446
 2447
 2448
 2449
 2450
 2451
 2452
 2453
 2454
 2455
 2456
 2457
 2458
 2459
 2460
 2461
 2462
 2463
 2464
 2465
 2466
 2467
 2468
 2469
 2470
 2471
 2472
 2473
 2474
 2475
 2476
 2477
 2478
 2479
 2480
 2481
 2482
 2483
 2484
 2485
 2486
 2487
 2488
 2489
 2490
 2491
 2492
 2493
 2494
 2495
 2496
 2497
 2498
 2499
 2500
 2501
 2502
 2503
 2504
 2505
 2506
 2507
 2508
 2509
 2510
 2511
 2512
 2513
 2514
 2515
 2516
 2517
 2518
 2519
 2520
 2521
 2522
 2523
 2524
 2525
 2526
 2527
 2528
 2529
 2530
 2531
 2532
 2533
 2534
 2535
 2536
 2537
 2538
 2539
 2540
 2541
 2542
 2543
 2544
 2545
 2546
 2547
 2548
 2549
 2550
 2551
 2552
 2553
 2554
 2555
 2556
 2557
 2558
 2559
 2560
 2561
 2562
 2563
 2564
 2565
 2566
 2567
 2568
 2569
 2570
 2571
 2572
 2573
 2574
 2575
 2576
 2577
 2578
 2579
 2580
 2581
 2582
 2583
 2584
 2585
 2586
 2587
 2588
 2589
 2590
 2591
 2592
 2593
 2594
 2595
 2596
 2597
 2598
 2599
 2600
 2601
 2602
 2603
 2604
 2605
 2606
 2607
 2608
 2609
 2610
 2611
 2612
 2613
 2614
 2615
 2616
 2617
 2618
 2619
 2620
 2621
 2622
 2623
 2624
 2625
 2626
 2627
 2628
 2629
 2630
 2631
 2632
 2633
 2634
 2635
 2636
 2637
 2638
 2639
 2640
 2641
 2642
 2643
 2644
 2645
 2646
 2647
 2648
 2649
 2650
 2651
 2652
 2653
 2654
 2655
 2656
 2657
 2658
 2659
 2660
 2661
 2662
 2663
 2664
 2665
 2666
 2667
 2668
 2669
 2670
 2671
 2672
 2673
 2674
 2675
 2676
 2677
 2678
 2679
 2680
 2681
 2682
 2683
 2684
 2685
 2686
 2687
 2688
 2689
 2690
 2691
 2692
 2693
 2694
 2695
 2696
 2697
 2698
 2699
 2700
 2701
 2702
 2703
 2704
 2705
 2706
 2707
 2708
 2709
 2710
 2711
 2712
 2713
 2714
 2715
 2716
 2717
 2718
 2719
 2720
 2721
 2722
 2723
 2724
 2725
 2726
 2727
 2728
 2729
 2730
 2731
 2732
 2733
 2734
 2735
 2736
 2737
 2738
 2739
 2740
 2741
 2742
 2743
 2744
 2745
 2746
 2747
 2748
 2749
 2750
 2751
 2752
 2753
 2754
 2755
 2756
 2757
 2758
 2759
 2760
 2761
 2762
 2763
 2764
 2765
 2766
 2767
 2768
 2769
 2770
 2771
 2772
 2773
 2774
 2775
 2776
 2777
 2778
 2779
 2780
 2781
 2782
 2783
 2784
 2785
 2786
 2787
 2788
 2789
 2790
 2791
 2792
 2793
 2794
 2795
 2796
 2797
 2798
 2799
 2800
 2801
 2802
 2803
 2804
 2805
 2806
 2807
 2808
 2809
 2810
 2811
 2812
 2813
 2814
 2815
 2816
 2817
 2818
 2819
 2820
 2821
 2822
 2823
 2824
 2825
 2826
 2827
 2828
 2829
 2830
 2831
 2832
 2833
 2834
 2835
 2836
 2837
 2838
 2839
 2840
 2841
 2842
 2843
 2844
 2845
 2846
 2847
 2848
 2849
 2850
 2851
 2852
 2853
 2854
 2855
 2856
 2857
 2858
 2859
 2860
 2861
 2862
 2863
 2864
 2865
 2866
 2867
 2868
 2869
 2870
 2871
 2872
 2873
 2874
 2875
 2876
 2877
 2878
 2879
 2880
 2881
 2882
 2883
 2884
 2885
 2886
 2887
 2888
 2889
 2890
 2891
 2892
 2893
 2894
 2895
 2896
 2897
 2898
 2899
 2900
 2901
 2902
 2903
 2904
 2905
 2906
 2907
 2908
 2909
 2910
 2911
 2912
 2913
 2914
 2915
 2916
 2917
 2918
 2919
 2920
 2921
 2922
 2923
 2924
 2925
 2926
 2927
 2928
 2929
 2930
 2931
 2932
 2933
 2934
 2935
 2936
 2937
 2938
 2939
 2940
 2941
 2942
 2943
 2944
 2945
 2946
 2947
 2948
 2949
 2950
 2951
 2952
 2953
 2954
 2955
 2956
 2957
 2958
 2959
 2960
 2961
 2962
 2963
 2964
 2965
 2966
 2967
 2968
 2969
 2970
 2971
 2972
 2973
 2974
 2975
 2976
 2977
 2978
 2979
 2980
 2981
 2982
 2983
 2984
 2985
 2986
 2987
 2988
 2989
 2990
 2991
 2992
 2993
 2994
 2995
 2996
 2997
 2998
 2999
 3000
 3001
 3002
 3003
 3004
 3005
 3006
 3007
 3008
 3009
 3010
 3011
 3012
 3013
 3014
 3015
 3016
 3017
 3018
 3019
 3020
 3021
 3022
 3023
 3024
 3025
 3026
 3027
 3028
 3029
 3030
 3031
 3032
 3033
 3034
 3035
 3036
 3037
 3038
 3039
 3040
 3041
 3042
 3043
 3044
 3045
 3046
 3047
 3048
 3049
 3050
 3051
 3052
 3053
 3054
 3055
 3056
 3057
 3058
 3059
 3060
 3061
 3062
 3063
 3064
 3065
 3066
 3067
 3068
 3069
 3070
 3071
 3072
 3073
 3074
 3075
 3076
 3077
 3078
 3079
 3080
 3081
 3082
 3083
 3084
 3085
 3086
 3087
 3088
 3089
 3090
 3091
 3092
 3093
 3094
 3095
 3096
 3097
 3098
 3099
 3100
 3101
 3102
 3103
 3104
 3105
 3106
 3107
 3108
 3109
 3110
 3111
 3112
 3113
 3114
 3115
 3116
 3117
 3118
 3119
 3120
 3121
 3122
 3123
 3124
 3125
 3126
 3127
 3128
 3129
 3130
 3131
 3132
 3133
 3134
 3135
 3136
 3137
 3138
 3139
 3140
 3141
 3142
 3143
 3144
 3145
 3146
 3147
 3148
 3149
 3150
 3151
 3152
 3153
 3154
 3155
 3156
 3157
 3158
 3159
 3160
 3161
 3162
 3163
 3164
 3165
 3166
 3167
 3168
 3169
 3170
 3171
 3172
 3173
 3174
 3175
 3176
 3177
 3178
 3179
 3180
 3181
 3182
 3183
 3184
 3185
 3186
 3187
 3188
 3189
 3190
 3191
 3192
 3193
 3194
 3195
 3196
 3197
 3198
 3199
 3200
 3201
 3202
 3203
 3204
 3205
 3206
 3207
 3208
 3209
 3210
 3211
 3212
 3213
 3214
 3215
 3216
 3217
 3218
 3219
 3220
 3221
 3222
 3223
 3224
 3225
 3226
 3227
 3228
 3229
 3230
 3231
 3232
 3233
 3234
 3235
 3236
 3237
 3238
 3239
 3240
 3241
 3242
 3243
 3244
 3245
 3246
 3247
 3248
 3249
 3250
 3251
 3252
 3253
 3254
 3255
 3256
 3257
 3258
 3259
 3260
 3261
 3262
 3263
 3264
 3265
 3266
 3267
 3268
 3269
 3270
 3271
 3272
 3273
 3274
 3275
 3276
 3277
 3278
 3279
 3280
 3281
 3282
 3283
 3284
 3285
 3286
 3287
 3288
 3289
 3290
 3291
 3292
 3293
 3294
 3295
 3296
 3297
 3298
 3299
 3300
 3301
 3302
 3303
 3304
 3305
 3306
 3307
 3308
 3309
 3310
 3311
 3312
 3313
 3314
 3315
 3316
 3317
 3318
 3319
 3320
 3321
 3322
 3323
 3324
 3325
 3326
 3327
 3328
 3329
 3330
 3331
 3332
 3333
 3334
 3335
 3336
 3337
 3338
 3339
 3340
 3341
 3342
 3343
 3344
 3345
 3346
 3347
 3348
 3349
 3350
 3351
 3352
 3353
 3354
 3355
 3356
 3357
 3358
 3359
 3360
 3361
 3362
 3363
 3364
 3365
 3366
 3367
 3368
 3369
 3370
 3371
 3372
 3373
 3374
 3375
 3376
 3377
 3378
 3379
 3380
 3381
 3382
 3383
 3384
 3385
 3386
 3387
 3388
 3389
 3390
 3391
 3392
 3393
 3394
 3395
 3396
 3397
 3398
 3399
 3400
 3401
 3402
 3403
 3404
 3405
 3406
 3407
 3408
 3409
 3410
 3411
 3412
 3413
 3414
 3415
 3416
 3417
 3418
 3419
 3420
 3421
 3422
 3423
 3424
 3425
 3426
 3427
 3428
 3429
 3430
 3431
 3432
 3433
 3434
 3435
 3436
 3437
 3438
 3439
 3440
 3441
 3442
 3443
 3444
 3445
 3446
 3447
 3448
 3449
 3450
 3451
 3452
 3453
 3454
 3455
 3456
 3457
 3458
 3459
 3460
 3461
 3462
 3463
 3464
 3465
 3466
 3467
 3468
 3469
 3470
 3471
 3472
 3473
 3474
 3475
 3476
 3477
 3478
 3479
 3480
 3481
 3482
 3483
 3484
 3485
 3486
 3487
 3488
 3489
 3490
 3491
 3492
 3493
 3494
 3495
 3496
 3497
 3498
 3499
 3500
 3501
 3502
 3503
 3504
 3505
 3506
 3507
 3508
 3509
 3510
 3511
 3512
 3513
 3514
 3515
 3516
 3517
 3518
 3519
 3520
 3521
 3522
 3523
 3524
 3525
 3526
 3527
 3528
 3529
 3530
 3531
 3532
 3533
 3534
 3535
 3536
 3537
 3538
 3539
 3540
 3541
 3542
 3543
 3544
 3545
 3546
 3547
 3548
 3549
 3550
 3551
 3552
 3553
 3554
 3555
 3556
 3557
 3558
 3559
 3560
 3561
 3562
 3563
 3564
 3565
 3566
 3567
 3568
 3569
 3570
 3571
 3572
 3573
 3574
 3575
 3576
 3577
 3578
 3579
 3580
 3581
 3582
 3583
 3584
 3585
 3586
 3587
 3588
 3589
 3590
 3591
 3592
 3593
 3594
 3595
 3596
 3597
 3598
 3599
 3600
 3601
 3602
 3603
 3604
 3605
 3606
 3607
 3608
 3609
 3610
 3611
 3612
 3613
 3614
 3615
 3616
 3617
 3618
 3619
 3620
 3621
 3622
 3623
 3624
 3625
 3626
 3627
 3628
 3629
 3630
 3631
 3632
 3633
 3634
 3635
 3636
 3637
 3638
 3639
 3640
 3641
 3642
 3643
 3644
 3645
 3646
 3647
 3648
 3649
 3650
 3651
 3652
 3653
 3654
 3655
 3656
 3657
 3658
 3659
 3660
 3661
 3662
 3663
 3664
 3665
 3666
 3667
 3668
 3669
 3670
 3671
 3672
 3673
 3674
 3675
 3676
 3677
 3678
 3679
 3680
 3681
 3682
 3683
 3684
 3685
 3686
 3687
 3688
 3689
 3690
 3691
 3692
 3693
 3694
 3695
 3696
 3697
 3698
 3699
 3700
 3701
 3702
 3703
 3704
 3705
 3706
 3707
 3708
 3709
 3710
 3711
 3712
 3713
 3714
 3715
 3716
 3717
 3718
 3719
 3720
 3721
 3722
 3723
 3724
 3725
 3726
 3727
 3728
 3729
 3730
 3731
 3732
 3733
 3734
 3735
 3736
 3737
 3738
 3739
 3740
 3741
 3742
 3743
 3744
 3745
 3746
 3747
 3748
 3749
 3750
 3751
 3752
 3753
 3754
 3755
 3756
 3757
 3758
 3759
 3760
 3761
 3762
 3763
 3764
 3765
 3766
 3767
 3768
 3769
 3770
 3771
 3772
 3773
 3774
 3775
 3776
 3777
 3778
 3779
 3780
 3781
 3782
 3783
 3784
 3785
 3786
 3787
 3788
 3789
 3790
 3791
 3792
 3793
 3794
 3795
 3796
 3797
 3798
 3799
 3800
 3801
 3802
 3803
 3804
 3805
 3806
 3807
 3808
 3809
 3810
 3811
 3812
 3813
 3814
 3815
 3816
 3817
 3818
 3819
 3820
 3821
 3822
 3823
 3824
 3825
 3826
 3827
 3828
 3829
 3830
 3831
 3832
 3833
 3834
 3835
 3836
 3837
 3838
 3839
 3840
 3841
 3842
 3843
 3844
 3845
 3846
 3847
 3848
 3849
 3850
 3851
 3852
 3853
 3854
 3855
 3856
 3857
 3858
 3859
 3860
 3861
 3862
 3863
 3864
 3865
 3866
 3867
 3868
 3869
 3870
 3871
 3872
 3873
 3874
 3875
 3876
 3877
 3878
 3879
 3880
 3881
 3882
 3883
 3884
 3885
 3886
 3887
 3888
 3889
 3890
 3891
 3892
 3893
 3894
 3895
 3896
 3897
 3898
 3899
 3900
 3901
 3902
 3903
 3904
 3905
 3906
 3907
 3908
 3909
 3910
 3911
 3912
 3913
 3914
 3915
 3916
 3917
 3918
 3919
 3920
 3921
 3922
 3923
 3924
 3925
 3926
 3927
 3928
 3929
 3930
 3931
 3932
 3933
 3934
 3935
 3936
 3937
 3938
 3939
 3940
 3941
 3942
 3943
 3944
 3945
 3946
 3947
 3948
 3949
 3950
 3951
 3952
 3953
 3954
 3955
 3956
 3957
 3958
 3959
 3960
 3961
 3962
 3963
 3964
 3965
 3966
 3967
 3968
 3969
 3970
 3971
 3972
 3973
 3974
 3975
 3976
 3977
 3978
 3979
 3980
 3981
 3982
 3983
 3984
 3985
 3986
 3987
 3988
 3989
 3990
 3991
 3992
 3993
 3994
 3995
 3996
 3997
 3998
 3999
 4000
 4001
 4002
 4003
 4004
 4005
 4006
 4007
 4008
 4009
 4010
 4011
 4012
 4013
 4014
 4015
 4016
 4017
 4018
 4019
 4020
 4021
 4022
 4023
 4024
 4025
 4026
 4027
 4028
 4029
 4030
 4031
 4032
 4033
 4034
 4035
 4036
 4037
 4038
 4039
 4040
 4041
 4042
 4043
 4044
 4045
 4046
 4047
 4048
 4049
 4050
 4051
 4052
 4053
 4054
 4055
 4056
 4057
 4058
 4059
 4060
 4061
 4062
 4063
 4064
 4065
 4066
 4067
 4068
 4069
 4070
 4071
 4072
 4073
 4074
 4075
 4076
 4077
 4078
 4079
 4080
 4081
 4082
 4083
 4084
 4085
 4086
 4087
 4088
 4089
 4090
 4091
 4092
 4093
 4094
 4095
 4096
 4097
 4098
 4099
 4100
 4101
 4102
 4103
 4104
 4105
 4106
 4107
 4108
 4109
 4110
 4111
 4112
 4113
 4114
 4115
 4116
 4117
 4118
 4119
 4120
 4121
 4122
 4123
 4124
 4125
 4126
 4127
 4128
 4129
 4130
 4131
 4132
 4133
 4134
 4135
 4136
 4137
 4138
 4139
 4140
 4141
 4142
 4143
 4144
 4145
 4146
 4147
 4148
 4149
 4150
 4151
 4152
 4153
 4154
 4155
 4156
 4157
 4158
 4159
 4160
 4161
 4162
 4163
 4164
 4165
 4166
 4167
 4168
 4169
 4170
 4171
 4172
 4173
 4174
 4175
 4176
 4177
 4178
 4179
 4180
 4181
 4182
 4183
 4184
 4185
 4186
 4187
 4188
 4189
 4190
 4191
 4192
 4193
 4194
 4195
 4196
 4197
 4198
 4199
 4200
 4201
 4202
 4203
 4204
 4205
 4206
 4207
 4208
 4209
 4210
 4211
 4212
 4213
 4214
 4215
 4216
 4217
 4218
 4219
 4220
 4221
 4222
 4223
 4224
 4225
 4226
 4227
 4228
 4229
 4230
 4231
 4232
 4233
 4234
 4235
 4236
 4237
 4238
 4239
 4240
 4241
 4242
 4243
 4244
 4245
 4246
 4247
 4248
 4249
 4250
 4251
 4252
 4253
 4254
 4255
 4256
 4257
 4258
 4259
 4260
 4261
 4262
 4263
 4264
 4265
 4266
 4267
 4268
 4269
 4270
 4271
 4272
 4273
 4274
 4275
 4276
 4277
 4278
 4279
 4280
 4281
 4282
 4283
 4284
 4285
 4286
 4287
 4288
 4289
 4290
 4291
 4292
 4293
 4294
 4295
 4296
 4297
 4298
 4299
 4300
 4301
 4302
 4303
 4304
 4305
 4306
 4307
 4308
 4309
 4310
 4311
 4312
 4313
 4314
 4315
 4316
 4317
 4318
 4319
 4320
 4321
 4322
 4323
 4324
 4325
 4326
 4327
 4328
 4329
 4330
 4331
 4332
 4333
 4334
 4335
 4336
 4337
 4338
 4339
 4340
 4341
 4342
 4343
 4344
 4345
 4346
 4347
 4348
 4349
 4350
 4351
 4352
 4353
 4354
 4355
 4356
 4357
 4358
 4359
 4360
 4361
 4362
 4363
 4364
 4365
 4366
 4367
 4368
 4369
 4370
 4371
 4372
 4373
 4374
 4375
 4376
 4377
 4378
 4379
 4380
 4381
 4382
 4383
 4384
 4385
 4386
 4387
 4388
 4389
 4390
 4391
 4392
 4393
 4394
 4395
 4396
 4397
 4398
 4399
 4400
 4401
 4402
 4403
 4404
 4405
 4406
 4407
 4408
 4409
 4410
 4411
 4412
 4413
 4414
 4415
 4416
 4417
 4418
 4419
 4420
 4421
 4422
 4423
 4424
 4425
 4426
 4427
 4428
 4429
 4430
 4431
 4432
 4433
 4434
 4435
 4436
 4437
 4438
 4439
 4440
 4441
 4442
 4443
 4444
 4445
 4446
 4447
 4448
 4449
 4450
 4451
 4452
 4453
 4454
 4455
 4456
 4457
 4458
 4459
 4460
 4461
 4462
 4463
 4464
 4465
 4466
 4467
 4468
 4469
 4470
 4471
 4472
 4473
 4474
 4475
 4476
 4477
 4478
 4479
 4480
 4481
 4482
 4483
 4484
 4485
 4486
 4487
 4488
 4489
 4490
 4491
 4492
 4493
 4494
 4495
 4496
 4497
 4498
 4499
 4500
 4501
 4502
 4503
 4504
 4505
 4506
 4507
 4508
 4509
 4510
 4511
 4512
 4513
 4514
 4515
 4516
 4517
 4518
 4519
 4520
 4521
 4522
 4523
 4524
 4525
 4526
 4527
 4528
 4529
 4530
 4531
 4532
 4533
 4534
 4535
 4536
 4537
 4538
 4539
 4540
 4541
 4542
 4543
 4544
 4545
 4546
 4547
 4548
 4549
 4550
 4551
 4552
 4553
 4554
 4555
 4556
 4557
 4558
 4559
 4560
 4561
 4562
 4563
 4564
 4565
 4566
 4567
 4568
 4569
 4570
 4571
 4572
 4573
 4574
 4575
 4576
 4577
 4578
 4579
 4580
 4581
 4582
 4583
 4584
 4585
 4586
 4587
 4588
 4589
 4590
 4591
 4592
 4593
 4594
 4595
 4596
 4597
 4598
 4599
 4600
 4601
 4602
 4603
 4604
 4605
 4606
 4607
 4608
 4609
 4610
 4611
 4612
 4613
 4614
 4615
 4616
 4617
 4618
 4619
 4620
 4621
 4622
 4623
 4624
 4625
 4626
 4627
 4628
 4629
 4630
 4631
 4632
 4633
 4634
 4635
 4636
 4637
 4638
 4639
 4640
 4641
 4642
 4643
 4644
 4645
 4646
 4647
 4648
 4649
 4650
 4651
 4652
 4653
 4654
 4655
 4656
 4657
 4658
 4659
 4660
 4661
 4662
 4663
 4664
 4665
 4666
 4667
 4668
 4669
 4670
 4671
 4672
 4673
 4674
 4675
 4676
 4677
 4678
 4679
 4680
 4681
 4682
 4683
 4684
 4685
 4686
 4687
 4688
 4689
 4690
 4691
 4692
 4693
 4694
 4695
 4696
 4697
 4698
 4699
 4700
 4701
 4702
 4703
 4704
 4705
 4706
 4707
 4708
 4709
 4710
 4711
 4712
 4713
 4714
 4715
 4716
 4717
 4718
 4719
 4720
 4721
 4722
 4723
 4724
 4725
 4726
 4727
 4728
 4729
 4730
 4731
 4732
 4733
 4734
 4735
 4736
 4737
 4738
 4739
 4740
 4741
 4742
 4743
 4744
 4745
 4746
 4747
 4748
 4749
 4750
 4751
 4752
 4753
 4754
 4755
 4756
 4757
 4758
 4759
 4760
 4761
 4762
 4763
 4764
 4765
 4766
 4767
 4768
 4769
 4770
 4771
 4772
 4773
 4774
 4775
 4776
 4777
 4778
 4779
 4780
 4781
 4782
 4783
 4784
 4785
 4786
 4787
 4788
 4789
 4790
 4791
 4792
 4793
 4794
 4795
 4796
 4797
 4798
 4799
 4800
 4801
 4802
 4803
 4804
 4805
 4806
 4807
 4808
 4809
 4810
 4811
 4812
 4813
 4814
 4815
 4816
 4817
 4818
 4819
 4820
 4821
 4822
 4823
 4824
 4825
 4826
 4827
 4828
 4829
 4830
 4831
 4832
 4833
 4834
 4835
 4836
 4837
 4838
 4839
 4840
 4841
 4842
 4843
 4844
 4845
 4846
 4847
 4848
 4849
 4850
 4851
 4852
 4853
 4854
 4855
 4856
 4857
 4858
 4859
 4860
 4861
 4862
 4863
 4864
 4865
 4866
 4867
 4868
 4869
 4870
 4871
 4872
 4873
 4874
 4875
 4876
 4877
 4878
 4879
 4880
 4881
 4882
 4883
 4884
 4885
 4886
 4887
 4888
 4889
 4890
 4891
 4892
 4893
 4894
 4895
 4896
 4897
 4898
 4899
 4900
 4901
 4902
 4903
 4904
 4905
 4906
 4907
 4908
 4909
 4910
 4911
 4912
 4913
 4914
 4915
 4916
 4917
 4918
 4919
 4920
 4921
 4922
 4923
 4924
 4925
 4926
 4927
 4928
 4929
 4930
 4931
 4932
 4933
 4934
 4935
 4936
 4937
 4938
 4939
 4940
 4941
 4942
 4943
 4944
 4945
 4946
 4947
 4948
 4949
 4950
 4951
 4952
 4953
 4954
 4955
 4956
 4957
 4958
 4959
 4960
 4961
 4962
 4963
 4964
 4965
 4966
 4967
 4968
 4969
 4970
 4971
 4972
 4973
 4974
 4975
 4976
 4977
 4978
 4979
 4980
 4981
 4982
 4983
 4984
 4985
 4986
 4987
 4988
 4989
 4990
 4991
 4992
 4993
 4994
 4995
 4996
 4997
 4998
 4999
 5000
 5001
 5002
 5003
 5004
 5005
 5006
 5007
 5008
 5009
 5010
 5011
 5012
 5013
 5014
 5015
 5016
 5017
 5018
 5019
 5020
 5021
 5022
 5023
 5024
 5025
 5026
 5027
 5028
 5029
 5030
 5031
 5032
 5033
 5034
 5035
 5036
 5037
 5038
 5039
 5040
 5041
 5042
 5043
 5044
 5045
 5046
 5047
 5048
 5049
 5050
 5051
 5052
 5053
 5054
 5055
 5056
 5057
 5058
 5059
 5060
 5061
 5062
 5063
 5064
 5065
 5066
 5067
 5068
 5069
 5070
 5071
 5072
 5073
 5074
 5075
 5076
 5077
 5078
 5079
 5080
 5081
 5082
 5083
 5084
 5085
 5086
 5087
 5088
 5089
 5090
 5091
 5092
 5093
 5094
 5095
 5096
 5097
 5098
 5099
 5100
 5101
 5102
 5103
 5104
 5105
 5106
 5107
 5108
 5109
 5110
 5111
 5112
 5113
 5114
 5115
 5116
 5117
 5118
 5119
 5120
 5121
 5122
 5123
 5124
 5125
 5126
 5127
 5128
 5129
 5130
 5131
 5132
 5133
 5134
 5135
 5136
 5137
 5138
 5139
 5140
 5141
 5142
 5143
 5144
 5145
 5146
 5147
 5148
 5149
 5150
 5151
 5152
 5153
 5154
 5155
 5156
 5157
 5158
 5159
 5160
 5161
 5162
 5163
 5164
 5165
 5166
 5167
 5168
 5169
 5170
 5171
 5172
 5173
 5174
 5175
 5176
 5177
 5178
 5179
 5180
 5181
 5182
 5183
 5184
 5185
 5186
 5187
 5188
 5189
 5190
 5191
 5192
 5193
 5194
 5195
 5196
 5197
 5198
 5199
 5200
 5201
 5202
 5203
 5204
 5205
 5206
 5207
 5208
 5209
 5210
 5211
 5212
 5213
 5214
 5215
 5216
 5217
 5218
 5219
 5220
 5221
 5222
 5223
 5224
 5225
 5226
 5227
 5228
 5229
 5230
 5231
 5232
 5233
 5234
 5235
 5236
 5237
 5238
 5239
 5240
 5241
 5242
 5243
 5244
 5245
 5246
 5247
 5248
 5249
 5250
 5251
 5252
 5253
 5254
 5255
 5256
 5257
 5258
 5259
 5260
 5261
 5262
 5263
 5264
 5265
 5266
 5267
 5268
 5269
 5270
 5271
 5272
 5273
 5274
 5275
 5276
 5277
 5278
 5279
 5280
 5281
 5282
 5283
 5284
 5285
 5286
 5287
 5288
 5289
 5290
 5291
 5292
 5293
 5294
 5295
 5296
 5297
 5298
 5299
 5300
 5301
 5302
 5303
 5304
 5305
 5306
 5307
 5308
 5309
 5310
 5311
 5312
 5313
 5314
 5315
 5316
 5317
 5318
 5319
 5320
 5321
 5322
 5323
 5324
 5325
 5326
 5327
 5328
 5329
 5330
 5331
 5332
 5333
 5334
 5335
 5336
 5337
 5338
 5339
 5340
 5341
 5342
 5343
 5344
 5345
 5346
 5347
 5348
 5349
 5350
 5351
 5352
 5353
 5354
 5355
 5356
 5357
 5358
 5359
 5360
 5361
 5362
 5363
 5364
 5365
 5366
 5367
 5368
 5369
 5370
 5371
 5372
 5373
 5374
 5375
 5376
 5377
 5378
 5379
 5380
 5381
 5382
 5383
 5384
 5385
 5386
 5387
 5388
 5389
 5390
 5391
 5392
 5393
 5394
 5395
 5396
 5397
 5398
 5399
 5400
 5401
 5402
 5403
 5404
 5405
 5406
 5407
 5408
 5409
 5410
 5411
 5412
 5413
 5414
 5415
 5416
 5417
 5418
 5419
 5420
 5421
 5422
 5423
 5424
 5425
 5426
 5427
 5428
 5429
 5430
 5431
 5432
 5433
 5434
 5435
 5436
 5437
 5438
 5439
 5440
 5441
 5442
 5443
 5444
 5445
 5446
 5447
 5448
 5449
 5450
 5451
 5452
 5453
 5454
 5455
 5456
 5457
 5458
 5459
 5460
 5461
 5462
 5463
 5464
 5465
 5466
 5467
 5468
 5469
 5470
 5471
 5472
 5473
 5474
 5475
 5476
 5477
 5478
 5479
 5480
 5481
 5482
 5483
 5484
 5485
 5486
 5487
 5488
 5489
 5490
 5491
 5492
 5493
 5494
 5495
 5496
 5497
 5498
 5499
 5500
 5501
 5502
 5503
 5504
 5505
 5506
 5507
 5508
 5509
 5510
 5511
 5512
 5513
 5514
 5515
 5516
 5517
 5518
 5519
 5520
 5521
 5522
 5523
 5524
 5525
 5526
 5527
 5528
 5529
 5530
 5531
 5532
 5533
 5534
 5535
 5536
 5537
 5538
 5539
 5540
 5541
 5542
 5543
 5544
 5545
 5546
 5547
 5548
 5549
 5550
 5551
 5552
 5553
 5554
 5555
 5556
 5557
 5558
 5559
 5560
 5561
 5562
 5563
 5564
 5565
 5566
 5567
 5568
 5569
 5570
 5571
 5572
 5573
 5574
 5575
 5576
 5577
 5578
 5579
 5580
 5581
 5582
 5583
 5584
 5585
 5586
 5587
 5588
 5589
 5590
 5591
 5592
 5593
 5594
 5595
 5596
 5597
 5598
 5599
 5600
 5601
 5602
 5603
 5604
 5605
 5606
 5607
 5608
 5609
 5610
 5611
 5612
 5613
 5614
 5615
 5616
 5617
 5618
 5619
 5620
 5621
 5622
 5623
 5624
 5625
 5626
 5627
 5628
 5629
 5630
 5631
 5632
 5633
 5634
 5635
 5636
 5637
 5638
 5639
 5640
 5641
 5642
 5643
 5644
 5645
 5646
 5647
 5648
 5649
 5650
 5651
 5652
 5653
 5654
 5655
 5656
 5657
 5658
 5659
 5660
 5661
 5662
 5663
 5664
 5665
 5666
 5667
 5668
 5669
 5670
 5671
 5672
 5673
 5674
 5675
 5676
 5677
 5678
 5679
 5680
 5681
 5682
 5683
 5684
 5685
 5686
 5687
 5688
 5689
 5690
 5691
 5692
 5693
 5694
 5695
 5696
 5697
 5698
 5699
 5700
 5701
 5702
 5703
 5704
 5705
 5706
 5707
 5708
 5709
 5710
 5711
 5712
 5713
 5714
 5715
 5716
 5717
 5718
 5719
 5720
 5721
 5722
 5723
 5724
 5725
 5726
 5727
 5728
 5729
 5730
 5731
 5732
 5733
 5734
 5735
 5736
 5737
 5738
 5739
 5740
 5741
 5742
 5743
 5744
 5745
 5746
 5747
 5748
 5749
 5750
 5751
 5752
 5753
 5754
 5755
 5756
 5757
 5758
 5759
 5760
 5761
 5762
 5763
 5764
 5765
 5766
 5767
 5768
 5769
 5770
 5771
 5772
 5773
 5774
 5775
 5776
 5777
 5778
 5779
 5780
 5781
 5782
 5783
 5784
 5785
 5786
 5787
 5788
 5789
 5790
 5791
 5792
 5793
 5794
 5795
 5796
 5797
 5798
 5799
 5800
 5801
 5802
 5803
 5804
 5805
 5806
 5807
 5808
 5809
 5810
 5811
 5812
 5813
 5814
 5815
 5816
 5817
 5818
 5819
 5820
 5821
 5822
 5823
 5824
 5825
 5826
 5827
 5828
 5829
 5830
 5831
 5832
 5833
 5834
 5835
 5836
 5837
 5838
 5839
 5840
 5841
 5842
 5843
 5844
 5845
 5846
 5847
 5848
 5849
 5850
 5851
 5852
 5853
 5854
 5855
 5856
 5857
 5858
 5859
 5860
 5861
 5862
 5863
 5864
 5865
 5866
 5867
 5868
 5869
 5870
 5871
 5872
 5873
 5874
 5875
 5876
 5877
 5878
 5879
 5880
 5881
 5882
 5883
 5884
 5885
 5886
 5887
 5888
 5889
 5890
 5891
 5892
 5893
 5894
 5895
 5896
 5897
 5898
 5899
 5900
 5901
 5902
 5903
 5904
 5905
 5906
 5907
 5908
 5909
 5910
 5911
 5912
 5913
 5914
 5915
 5916
 5917
 5918
 5919
 5920
 5921
 5922
 5923
 5924
 5925
 5926
 5927
 5928
 5929
 5930
 5931
 5932
 5933
 5934
 5935
 5936
 5937
 5938
 5939
 5940
 5941
 5942
 5943
 5944
 5945
 5946
 5947
 5948
 5949
 5950
 5951
 5952
 5953
 5954
 5955
 5956
 5957
 5958
 5959
 5960
 5961
 5962
 5963
 5964
 5965
 5966
 5967
 5968
 5969
 5970
 5971
 5972
 5973
 5974
 5975
 5976
 5977
 5978
 5979
 5980
 5981
 5982
 5983
 5984
 5985
 5986
 5987
 5988
 5989
 5990
 5991
 5992
 5993
 5994
 5995
 5996
 5997
 5998
 5999
 6000
 6001
 6002
 6003
 6004
 6005
 6006
 6007
 6008
 6009
 6010
 6011
 6012
 6013
 6014
 6015
 6016
 6017
 6018
 6019
 6020
 6021
 6022
 6023
 6024
 6025
 6026
 6027
 6028
 6029
 6030
 6031
 6032
 6033
 6034
 6035
 6036
 6037
 6038
 6039
 6040
 6041
 6042
 6043
 6044
 6045
 6046
 6047
 6048
 6049
 6050
 6051
 6052
 6053
 6054
 6055
 6056
 6057
 6058
 6059
 6060
 6061
 6062
 6063
 6064
 6065
 6066
 6067
 6068
 6069
 6070
 6071
 6072
 6073
 6074
 6075
 6076
 6077
 6078
 6079
 6080
 6081
 6082
 6083
 6084
 6085
 6086
 6087
 6088
 6089
 6090
 6091
 6092
 6093
 6094
 6095
 6096
 6097
 6098
 6099
 6100
 6101
 6102
 6103
 6104
 6105
 6106
 6107
 6108
 6109
 6110
 6111
 6112
 6113
 6114
 6115
 6116
 6117
 6118
 6119
 6120
 6121
 6122
 6123
 6124
 6125
 6126
 6127
 6128
 6129
 6130
 6131
 6132
 6133
 6134
 6135
 6136
 6137
 6138
 6139
 6140
 6141
 6142
 6143
 6144
 6145
 6146
 6147
 6148
 6149
 6150
 6151
 6152
 6153
 6154
 6155
 6156
 6157
 6158
 6159
 6160
 6161
 6162
 6163
 6164
 6165
 6166
 6167
 6168
 6169
 6170
 6171
 6172
 6173
 6174
 6175
 6176
 6177
 6178
 6179
 6180
 6181
 6182
 6183
 6184
 6185
 6186
 6187
 6188
 6189
 6190
 6191
 6192
 6193
 6194
 6195
 6196
 6197
 6198
 6199
 6200
 6201
 6202
 6203
 6204
 6205
 6206
 6207
 6208
 6209
 6210
 6211
 6212
 6213
 6214
 6215
 6216
 6217
 6218
 6219
 6220
 6221
 6222
 6223
 6224
 6225
 6226
 6227
 6228
 6229
 6230
 6231
 6232
 6233
 6234
 6235
 6236
 6237
 6238
 6239
 6240
 6241
 6242
 6243
 6244
 6245
 6246
 6247
 6248
 6249
 6250
 6251
 6252
 6253
 6254
 6255
 6256
 6257
 6258
 6259
 6260
 6261
 6262
 6263
 6264
 6265
 6266
 6267
 6268
 6269
 6270
 6271
 6272
 6273
 6274
 6275
 6276
 6277
 6278
 6279
 6280
 6281
 6282
 6283
 6284
 6285
 6286
 6287
 6288
 6289
 6290
 6291
 6292
 6293
 6294
 6295
 6296
 6297
 6298
 6299
 6300
 6301
 6302
 6303
 6304
 6305
 6306
 6307
 6308
 6309
 6310
 6311
 6312
 6313
 6314
 6315
 6316
 6317
 6318
 6319
 6320
 6321
 6322
 6323
 6324
 6325
 6326
 6327
 6328
 6329
 6330
 6331
 6332
 6333
 6334
 6335
 6336
 6337
 6338
 6339
 6340
 6341
 6342
 6343
 6344
 6345
 6346
 6347
 6348
 6349
 6350
 6351
 6352
 6353
 6354
 6355
 6356
 6357
 6358
 6359
 6360
 6361
 6362
 6363
 6364
 6365
 6366
 6367
 6368
 6369
 6370
 6371
 6372
 6373
 6374
 6375
 6376
 6377
 6378
 6379
 6380
 6381
 6382
 6383
 6384
 6385
 6386
 6387
 6388
 6389
 6390
 6391
 6392
 6393
 6394
 6395
 6396
 6397
 6398
 6399
 6400
 6401
 6402
 6403
 6404
 6405
 6406
 6407
 6408
 6409
 6410
 6411
 6412
 6413
 6414
 6415
 6416
 6417
 6418
 6419
 6420
 6421
 6422
 6423
 6424
 6425
 6426
 6427
 6428
 6429
 6430
 6431
 6432
 6433
 6434
 6435
 6436
 6437
 6438
 6439
 6440
 6441
 6442
 6443
 6444
 6445
 6446
 6447
 6448
 6449
 6450
 6451
 6452
 6453
 6454
 6455
 6456
 6457
 6458
 6459
 6460
 6461
 6462
 6463
 6464
 6465
 6466
 6467
 6468
 6469
 6470
 6471
 6472
 6473
 6474
 6475
 6476
 6477
 6478
 6479
 6480
 6481
 6482
 6483
 6484
 6485
 6486
 6487
 6488
 6489
 6490
 6491
 6492
 6493
 6494
 6495
 6496
 6497
 6498
 6499
 6500
 6501
 6502
 6503
 6504
 6505
 6506
 6507
 6508
 6509
 6510
 6511
 6512
 6513
 6514
 6515
 6516
 6517
 6518
 6519
 6520
 6521
 6522
 6523
 6524
 6525
 6526
 6527
 6528
 6529
 6530
 6531
 6532
 6533
 6534
 6535
 6536
 6537
 6538
 6539
 6540
 6541
 6542
 6543
 6544
 6545
 6546
 6547
 6548
 6549
 6550
 6551
 6552
 6553
 6554
 6555
 6556
 6557
 6558
 6559
 6560
 6561
 6562
 6563
 6564
 6565
 6566
 6567
 6568
 6569
 6570
 6571
 6572
 6573
 6574
 6575
 6576
 6577
 6578
 6579
 6580
 6581
 6582
 6583
 6584
 6585
 6586
 6587
 6588
 6589
 6590
 6591
 6592
 6593
 6594
 6595
 6596
 6597
 6598
 6599
 6600
 6601
 6602
 6603
 6604
 6605
 6606
 6607
 6608
 6609
 6610
 6611
 6612
 6613
 6614
 6615
 6616
 6617
 6618
 6619
 6620
 6621
 6622
 6623
 6624
 6625
 6626
 6627
 6628
 6629
 6630
 6631
 6632
 6633
 6634
 6635
 6636
 6637
 6638
 6639
 6640
 6641
 6642
 6643
 6644
 6645
 6646
 6647
 6648
 6649
 6650
 6651
 6652
 6653
 6654
 6655
 6656
 6657
 6658
 6659
 6660
 6661
 6662
 6663
 6664
 6665
 6666
 6667
 6668
 6669
 6670
 6671
 6672
 6673
 6674
 6675
 6676
 6677
 6678
 6679
 6680
 6681
 6682
 6683
 6684
 6685
 6686
 6687
 6688
 6689
 6690
 6691
 6692
 6693
 6694
 6695
 6696
 6697
 6698
 6699
 6700
 6701
 6702
 6703
 6704
 6705
 6706
 6707
 6708
 6709
 6710
 6711
 6712
 6713
 6714
 6715
 6716
 6717
 6718
 6719
 6720
 6721
 6722
 6723
 6724
 6725
 6726
 6727
 6728
 6729
 6730
 6731
 6732
 6733
 6734
 6735
 6736
 6737
 6738
 6739
 6740
 6741
 6742
 6743
 6744
 6745
 6746
 6747
 6748
 6749
 6750
 6751
 6752
 6753
 6754
 6755
 6756
 6757
 6758
 6759
 6760
 6761
 6762
 6763
 6764
 6765
 6766
 6767
 6768
 6769
 6770
 6771
 6772
 6773
 6774
 6775
 6776
 6777
 6778
 6779
 6780
 6781
 6782
 6783
 6784
 6785
 6786
 6787
 6788
 6789
 6790
 6791
 6792
 6793
 6794
 6795
 6796
 6797
 6798
 6799
 6800
 6801
 6802
 6803
 6804
 6805
 6806
 6807
 6808
 6809
 6810
 6811
 6812
 6813
 6814
 6815
 6816
 6817
 6818
 6819
 6820
 6821
 6822
 6823
 6824
 6825
 6826
 6827
 6828
 6829
 6830
 6831
 6832
 6833
 6834
 6835
 6836
 6837
 6838
 6839
 6840
 6841
 6842
 6843
 6844
 6845
 6846
 6847
 6848
 6849
 6850
 6851
 6852
 6853
 6854
 6855
 6856
 6857
 6858
 6859
 6860
 6861
 6862
 6863
 6864
 6865
 6866
 6867
 6868
 6869
 6870
 6871
 6872
 6873
 6874
 6875
 6876
 6877
 6878
 6879
 6880
 6881
 6882
 6883
 6884
 6885
 6886
 6887
 6888
 6889
 6890
 6891
 6892
 6893
 6894
 6895
 6896
 6897
 6898
 6899
 6900
 6901
 6902
 6903
 6904
 6905
 6906
 6907
 6908
 6909
 6910
 6911
 6912
 6913
 6914
 6915
 6916
 6917
 6918
 6919
 6920
 6921
 6922
 6923
 6924
 6925
 6926
 6927
 6928
 6929
 6930
 6931
 6932
 6933
 6934
 6935
 6936
 6937
 6938
 6939
 6940
 6941
 6942
 6943
 6944
 6945
 6946
 6947
 6948
 6949
 6950
 6951
 6952
 6953
 6954
 6955
 6956
 6957
 6958
 6959
 6960
 6961
 6962
 6963
 6964
 6965
 6966
 6967
 6968
 6969
 6970
 6971
 6972
 6973
 6974
 6975
 6976
 6977
 6978
 6979
 6980
 6981
 6982
 6983
 6984
 6985
 6986
 6987
 6988
 6989
 6990
 6991
 6992
 6993
 6994
 6995
 6996
 6997
 6998
 6999
 7000
 7001
 7002
 7003
 7004
 7005
 7006
 7007
 7008
 7009
 7010
 7011
 7012
 7013
 7014
 7015
 7016
 7017
 7018
 7019
 7020
 7021
 7022
 7023
 7024
 7025
 7026
 7027
 7028
 7029
 7030
 7031
 7032
 7033
 7034
 7035
 7036
 7037
 7038
 7039
 7040
 7041
 7042
 7043
 7044
 7045
 7046
 7047
 7048
 7049
 7050
 7051
 7052
 7053
 7054
 7055
 7056
 7057
 7058
 7059
 7060
 7061
 7062
 7063
 7064
 7065
 7066
 7067
 7068
 7069
 7070
 7071
 7072
 7073
 7074
 7075
 7076
 7077
 7078
 7079
 7080
 7081
 7082
 7083
 7084
 7085
 7086
 7087
 7088
 7089
 7090
 7091
 7092
 7093
 7094
 7095
 7096
 7097
 7098
 7099
 7100
 7101
 7102
 7103
 7104
 7105
 7106
 7107
 7108
 7109
 7110
 7111
 7112
 7113
 7114
 7115
 7116
 7117
 7118
 7119
 7120
 7121
 7122
 7123
 7124
 7125
 7126
 7127
 7128
 7129
 7130
 7131
 7132
 7133
 7134
 7135
 7136
 7137
 7138
 7139
 7140
 7141
 7142
 7143
 7144
 7145
 7146
 7147
 7148
 7149
 7150
 7151
 7152
 7153
 7154
 7155
 7156
 7157
 7158
 7159
 7160
 7161
 7162
 7163
 7164
 7165
 7166
 7167
 7168
 7169
 7170
 7171
 7172
 7173
 7174
 7175
 7176
 7177
 7178
 7179
 7180
 7181
 7182
 7183
 7184
 7185
 7186
 7187
 7188
 7189
 7190
 7191
 7192
 7193
 7194
 7195
 7196
 7197
 7198
 7199
 7200
 7201
 7202
 7203
 7204
 7205
 7206
 7207
 7208
 7209
 7210
 7211
 7212
 7213
 7214
 7215
 7216
 7217
 7218
 7219
 7220
 7221
 7222
 7223
 7224
 7225
 7226
 7227
 7228
 7229
 7230
 7231
 7232
 7233
 7234
 7235
 7236
 7237
 7238
 7239
 7240
 7241
 7242
 7243
 7244
 7245
 7246
 7247
 7248
 7249
 7250
 7251
 7252
 7253
 7254
 7255
 7256
 7257
 7258
 7259
 7260
 7261
 7262
 7263
 7264
 7265
 7266
 7267
 7268
 7269
 7270
 7271
 7272
 7273
 7274
 7275
 7276
 7277
 7278
 7279
 7280
 7281
 7282
 7283
 7284
 7285
 7286
 7287
 7288
 7289
 7290
 7291
 7292
 7293
 7294
 7295
 7296
 7297
 7298
 7299
 7300
 7301
 7302
 7303
 7304
 7305
 7306
 7307
 7308
 7309
 7310
 7311
 7312
 7313
 7314
 7315
 7316
 7317
 7318
 7319
 7320
 7321
 7322
 7323
 7324
 7325
 7326
 7327
 7328
 7329
 7330
 7331
 7332
 7333
 7334
 7335
 7336
 7337
 7338
 7339
 7340
 7341
 7342
 7343
 7344
 7345
 7346
 7347
 7348
 7349
 7350
 7351
 7352
 7353
 7354
 7355
 7356
 7357
 7358
 7359
 7360
 7361
 7362
 7363
 7364
 7365
 7366
 7367
 7368
 7369
 7370
 7371
 7372
 7373
 7374
 7375
 7376
 7377
 7378
 7379
 7380
 7381
 7382
 7383
 7384
 7385
 7386
 7387
 7388
 7389
 7390
 7391
 7392
 7393
 7394
 7395
 7396
 7397
 7398
 7399
 7400
 7401
 7402
 7403
 7404
 7405
 7406
 7407
 7408
 7409
 7410
 7411
 7412
 7413
 7414
 7415
 7416
 7417
 7418
 7419
 7420
 7421
 7422
 7423
 7424
 7425
 7426
 7427
 7428
 7429
 7430
 7431
 7432
 7433
 7434
 7435
 7436
 7437
 7438
 7439
 7440
 7441
 7442
 7443
 7444
 7445
 7446
 7447
 7448
 7449
 7450
 7451
 7452
 7453
 7454
 7455
 7456
 7457
 7458
 7459
 7460
 7461
 7462
 7463
 7464
 7465
 7466
 7467
 7468
 7469
 7470
 7471
 7472
 7473
 7474
 7475
 7476
 7477
 7478
 7479
 7480
 7481
 7482
 7483
 7484
 7485
 7486
 7487
 7488
 7489
 7490
 7491
 7492
 7493
 7494
 7495
 7496
 7497
 7498
 7499
 7500
 7501
 7502
 7503
 7504
 7505
 7506
 7507
 7508
 7509
 7510
 7511
 7512
 7513
 7514
 7515
 7516
 7517
 7518
 7519
 7520
 7521
 7522
 7523
 7524
 7525
 7526
 7527
 7528
 7529
 7530
 7531
 7532
 7533
 7534
 7535
 7536
 7537
 7538
 7539
 7540
 7541
 7542
 7543
 7544
 7545
 7546
 7547
 7548
 7549
 7550
 7551
 7552
 7553
 7554
 7555
 7556
 7557
 7558
 7559
 7560
 7561
 7562
 7563
 7564
 7565
 7566
 7567
 7568
 7569
 7570
 7571
 7572
 7573
 7574
 7575
 7576
 7577
 7578
 7579
 7580
 7581
 7582
 7583
 7584
 7585
 7586
 7587
 7588
 7589
 7590
 7591
 7592
 7593
 7594
 7595
 7596
 7597
 7598
 7599
 7600
 7601
 7602
 7603
 7604
 7605
 7606
 7607
 7608
 7609
 7610
 7611
 7612
 7613
 7614
 7615
 7616
 7617
 7618
 7619
 7620
 7621
 7622
 7623
 7624
 7625
 7626
 7627
 7628
 7629
 7630
 7631
 7632
 7633
 7634
 7635
 7636
 7637
 7638
 7639
 7640
 7641
 7642
 7643
 7644
 7645
 7646
 7647
 7648
 7649
 7650
 7651
 7652
 7653
 7654
 7655
 7656
 7657
 7658
 7659
 7660
 7661
 7662
 7663
 7664
 7665
 7666
 7667
 7668
 7669
 7670
 7671
 7672
 7673
 7674
 7675
 7676
 7677
 7678
 7679
 7680
 7681
 7682
 7683
 7684
 7685
 7686
 7687
 7688
 7689
 7690
 7691
 7692
 7693
 7694
 7695
 7696
 7697
 7698
 7699
 7700
 7701
 7702
 7703
 7704
 7705
 7706
 7707
 7708
 7709
 7710
 7711
 7712
 7713
 7714
 7715
 7716
 7717
 7718
 7719
 7720
 7721
 7722
 7723
 7724
 7725
 7726
 7727
 7728
 7729
 7730
 7731
 7732
 7733
 7734
 7735
 7736
 7737
 7738
 7739
 7740
 7741
 7742
 7743
 7744
 7745
 7746
 7747
 7748
 7749
 7750
 7751
 7752
 7753
 7754
 7755
 7756
 7757
 7758
 7759
 7760
 7761
 7762
 7763
 7764
 7765
 7766
 7767
 7768
 7769
 7770
 7771
 7772
 7773
 7774
 7775
 7776
 7777
 7778
 7779
 7780
 7781
 7782
 7783
 7784
 7785
 7786
 7787
 7788
 7789
 7790
 7791
 7792
 7793
 7794
 7795
 7796
 7797
 7798
 7799
 7800
 7801
 7802
 7803
 7804
 7805
 7806
 7807
 7808
 7809
 7810
 7811
 7812
 7813
 7814
 7815
 7816
 7817
 7818
 7819
 7820
 7821
 7822
 7823
 7824
 7825
 7826
 7827
 7828
 7829
 7830
 7831
 7832
 7833
 7834
 7835
 7836
 7837
 7838
 7839
 7840
 7841
 7842
 7843
 7844
 7845
 7846
 7847
 7848
 7849
 7850
 7851
 7852
 7853
 7854
 7855
 7856
 7857
 7858
 7859
 7860
 7861
 7862
 7863
 7864
 7865
 7866
 7867
 7868
 7869
 7870
 7871
 7872
 7873
 7874
 7875
 7876
 7877
 7878
 7879
 7880
 7881
 7882
 7883
 7884
 7885
 7886
 7887
 7888
 7889
 7890
 7891
 7892
 7893
 7894
 7895
 7896
 7897
 7898
 7899
 7900
 7901
 7902
 7903
 7904
 7905
 7906
 7907
 7908
 7909
 7910
 7911
 7912
 7913
 7914
 7915
 7916
 7917
 7918
 7919
 7920
 7921
 7922
 7923
 7924
 7925
 7926
 7927
 7928
 7929
 7930
 7931
 7932
 7933
 7934
 7935
 7936
 7937
 7938
 7939
 7940
 7941
 7942
 7943
 7944
 7945
 7946
 7947
 7948
 7949
 7950
 7951
 7952
 7953
 7954
 7955
 7956
 7957
 7958
 7959
 7960
 7961
 7962
 7963
 7964
 7965
 7966
 7967
 7968
 7969
 7970
 7971
 7972
 7973
 7974
 7975
 7976
 7977
 7978
 7979
 7980
 7981
 7982
 7983
 7984
 7985
 7986
 7987
 7988
 7989
 7990
 7991
 7992
 7993
 7994
 7995
 7996
 7997
 7998
 7999
 8000
 8001
 8002
 8003
 8004
 8005
 8006
 8007
 8008
 8009
 8010
 8011
 8012
 8013
 8014
 8015
 8016
 8017
 8018
 8019
 8020
 8021
 8022
 8023
 8024
 8025
 8026
 8027
 8028
 8029
 8030
 8031
 8032
 8033
 8034
 8035
 8036
 8037
 8038
 8039
 8040
 8041
 8042
 8043
 8044
 8045
 8046
 8047
 8048
 8049
 8050
 8051
 8052
 8053
 8054
 8055
 8056
 8057
 8058
 8059
 8060
 8061
 8062
 8063
 8064
 8065
 8066
 8067
 8068
 8069
 8070
 8071
 8072
 8073
 8074
 8075
 8076
 8077
 8078
 8079
 8080
 8081
 8082
 8083
 8084
 8085
 8086
 8087
 8088
 8089
 8090
 8091
 8092
 8093
 8094
 8095
 8096
 8097
 8098
 8099
 8100
 8101
 8102
 8103
 8104
 8105
 8106
 8107
 8108
 8109
 8110
 8111
 8112
 8113
 8114
 8115
 8116
 8117
 8118
 8119
 8120
 8121
 8122
 8123
 8124
 8125
 8126
 8127
 8128
 8129
 8130
 8131
 8132
 8133
 8134
 8135
 8136
 8137
 8138
 8139
 8140
 8141
 8142
 8143
 8144
 8145
 8146
 8147
 8148
 8149
 8150
 8151
 8152
 8153
 8154
 8155
 8156
 8157
 8158
 8159
 8160
 8161
 8162
 8163
 8164
 8165
 8166
 8167
 8168
 8169
 8170
 8171
 8172
 8173
 8174
 8175
 8176
 8177
 8178
 8179
 8180
 8181
 8182
 8183
 8184
 8185
 8186
 8187
 8188
 8189
 8190
 8191
 8192
 8193
 8194
 8195
 8196
 8197
 8198
 8199
 8200
 8201
 8202
 8203
 8204
 8205
 8206
 8207
 8208
 8209
 8210
 8211
 8212
 8213
 8214
 8215
 8216
 8217
 8218
 8219
 8220
 8221
 8222
 8223
 8224
 8225
 8226
 8227
 8228
 8229
 8230
 8231
 8232
 8233
 8234
 8235
 8236
 8237
 8238
 8239
 8240
 8241
 8242
 8243
 8244
 8245
 8246
 8247
 8248
 8249
 8250
 8251
 8252
 8253
 8254
 8255
 8256
 8257
 8258
 8259
 8260
 8261
 8262
 8263
 8264
 8265
 8266
 8267
 8268
 8269
 8270
 8271
 8272
 8273
 8274
 8275
 8276
 8277
 8278
 8279
 8280
 8281
 8282
 8283
 8284
 8285
 8286
 8287
 8288
 8289
 8290
 8291
 8292
 8293
 8294
 8295
 8296
 8297
 8298
 8299
 8300
 8301
 8302
 8303
 8304
 8305
 8306
 8307
 8308
 8309
 8310
 8311
 8312
 8313
 8314
 8315
 8316
 8317
 8318
 8319
 8320
 8321
 8322
 8323
 8324
 8325
 8326
 8327
 8328
 8329
 8330
 8331
 8332
 8333
 8334
 8335
 8336
 8337
 8338
 8339
 8340
 8341
 8342
 8343
 8344
 8345
 8346
 8347
 8348
 8349
 8350
 8351
 8352
 8353
 8354
 8355
 8356
 8357
 8358
 8359
 8360
 8361
 8362
 8363
 8364
 8365
 8366
 8367
 8368
 8369
 8370
 8371
 8372
 8373
 8374
 8375
 8376
 8377
 8378
 8379
 8380
 8381
 8382
 8383
 8384
 8385
 8386
 8387
 8388
 8389
 8390
 8391
 8392
 8393
 8394
 8395
 8396
 8397
 8398
 8399
 8400
 8401
 8402
 8403
 8404
 8405
 8406
 8407
 8408
 8409
 8410
 8411
 8412
 8413
 8414
 8415
 8416
 8417
 8418
 8419
 8420
 8421
 8422
 8423
 8424
 8425
 8426
 8427
 8428
 8429
 8430
 8431
 8432
 8433
 8434
 8435
 8436
 8437
 8438
 8439
 8440
 8441
 8442
 8443
 8444
 8445
 8446
 8447
 8448
 8449
 8450
 8451
 8452
 8453
 8454
 8455
 8456
 8457
 8458
 8459
 8460
 8461
 8462
 8463
 8464
 8465
 8466
 8467
 8468
 8469
 8470
 8471
 8472
 8473
 8474
 8475
 8476
 8477
 8478
 8479
 8480
 8481
 8482
 8483
 8484
 8485
 8486
 8487
 8488
 8489
 8490
 8491
 8492
 8493
 8494
 8495
 8496
 8497
 8498
 8499
 8500
 8501
 8502
 8503
 8504
 8505
 8506
 8507
 8508
 8509
 8510
 8511
 8512
 8513
 8514
 8515
 8516
 8517
 8518
 8519
 8520
 8521
 8522
 8523
 8524
 8525
 8526
 8527
 8528
 8529
 8530
 8531
 8532
 8533
 8534
 8535
 8536
 8537
 8538
 8539
 8540
 8541
 8542
 8543
 8544
 8545
 8546
 8547
 8548
 8549
 8550
 8551
 8552
 8553
 8554
 8555
 8556
 8557
 8558
 8559
 8560
 8561
 8562
 8563
 8564
 8565
 8566
 8567
 8568
 8569
 8570
 8571
 8572
 8573
 8574
 8575
 8576
 8577
 8578
 8579
 8580
 8581
 8582
 8583
 8584
 8585
 8586
 8587
 8588
 8589
 8590
 8591
 8592
 8593
 8594
 8595
 8596
 8597
 8598
 8599
 8600
 8601
 8602
 8603
 8604
 8605
 8606
 8607
 8608
 8609
 8610
 8611
 8612
 8613
 8614
 8615
 8616
 8617
 8618
 8619
 8620
 8621
 8622
 8623
 8624
 8625
 8626
 8627
 8628
 8629
 8630
 8631
 8632
 8633
 8634
 8635
 8636
 8637
 8638
 8639
 8640
 8641
 8642
 8643
 8644
 8645
 8646
 8647
 8648
 8649
 8650
 8651
 8652
 8653
 8654
 8655
 8656
 8657
 8658
 8659
 8660
 8661
 8662
 8663
 8664
 8665
 8666
 8667
 8668
 8669
 8670
 8671
 8672
 8673
 8674
 8675
 8676
 8677
 8678
 8679
 8680
 8681
 8682
 8683
 8684
 8685
 8686
 8687
 8688
 8689
 8690
 8691
 8692
 8693
 8694
 8695
 8696
 8697
 8698
 8699
 8700
 8701
 8702
 8703
 8704
 8705
 8706
 8707
 8708
 8709
 8710
 8711
 8712
 8713
 8714
 8715
 8716
 8717
 8718
 8719
 8720
 8721
 8722
 8723
 8724
 8725
 8726
 8727
 8728
 8729
 8730
 8731
 8732
 8733
 8734
 8735
 8736
 8737
 8738
 8739
 8740
 8741
 8742
 8743
 8744
 8745
 8746
 8747
 8748
 8749
 8750
 8751
 8752
 8753
 8754
 8755
 8756
 8757
 8758
 8759
 8760
 8761
 8762
 8763
 8764
 8765
 8766
 8767
 8768
 8769
 8770
 8771
 8772
 8773
 8774
 8775
 8776
 8777
 8778
 8779
 8780
 8781
 8782
 8783
 8784
 8785
 8786
 8787
 8788
 8789
 8790
 8791
 8792
 8793
 8794
 8795
 8796
 8797
 8798
 8799
 8800
 8801
 8802
 8803
 8804
 8805
 8806
 8807
 8808
 8809
 8810
 8811
 8812
 8813
 8814
 8815
 8816
 8817
 8818
 8819
 8820
 8821
 8822
 8823
 8824
 8825
 8826
 8827
 8828
 8829
 8830
 8831
 8832
 8833
 8834
 8835
 8836
 8837
 8838
 8839
 8840
 8841
 8842
 8843
 8844
 8845
 8846
 8847
 8848
 8849
 8850
 8851
 8852
 8853
 8854
 8855
 8856
 8857
 8858
 8859
 8860
 8861
 8862
 8863
 8864
 8865
 8866
 8867
 8868
 8869
 8870
 8871
 8872
 8873
 8874
 8875
 8876
 8877
 8878
 8879
 8880
 8881
 8882
 8883
 8884
 8885
 8886
 8887
 8888
 8889
 8890
 8891
 8892
 8893
 8894
 8895
 8896
 8897
 8898
 8899
 8900
 8901
 8902
 8903
 8904
 8905
 8906
 8907
 8908
 8909
 8910
 8911
 8912
 8913
 8914
 8915
 8916
 8917
 8918
 8919
 8920
 8921
 8922
 8923
 8924
 8925
 8926
 8927
 8928
 8929
 8930
 8931
 8932
 8933
 8934
 8935
 8936
 8937
 8938
 8939
 8940
 8941
 8942
 8943
 8944
 8945
 8946
 8947
 8948
 8949
 8950
 8951
 8952
 8953
 8954
 8955
 8956
 8957
 8958
 8959
 8960
 8961
 8962
 8963
 8964
 8965
 8966
 8967
 8968
 8969
 8970
 8971
 8972
 8973
 8974
 8975
 8976
 8977
 8978
 8979
 8980
 8981
 8982
 8983
 8984
 8985
 8986
 8987
 8988
 8989
 8990
 8991
 8992
 8993
 8994
 8995
 8996
 8997
 8998
 8999
 9000
 9001
 9002
 9003
 9004
 9005
 9006
 9007
 9008
 9009
 9010
 9011
 9012
 9013
 9014
 9015
 9016
 9017
 9018
 9019
 9020
 9021
 9022
 9023
 9024
 9025
 9026
 9027
 9028
 9029
 9030
 9031
 9032
 9033
 9034
 9035
 9036
 9037
 9038
 9039
 9040
 9041
 9042
 9043
 9044
 9045
 9046
 9047
 9048
 9049
 9050
 9051
 9052
 9053
 9054
 9055
 9056
 9057
 9058
 9059
 9060
 9061
 9062
 9063
 9064
 9065
 9066
 9067
 9068
 9069
 9070
 9071
 9072
 9073
 9074
 9075
 9076
 9077
 9078
 9079
 9080
 9081
 9082
 9083
 9084
 9085
 9086
 9087
 9088
 9089
 9090
 9091
 9092
 9093
 9094
 9095
 9096
 9097
 9098
 9099
 9100
 9101
 9102
 9103
 9104
 9105
 9106
 9107
 9108
 9109
 9110
 9111
 9112
 9113
 9114
 9115
 9116
 9117
 9118
 9119
 9120
 9121
 9122
 9123
 9124
 9125
 9126
 9127
 9128
 9129
 9130
 9131
 9132
 9133
 9134
 9135
 9136
 9137
 9138
 9139
 9140
 9141
 9142
 9143
 9144
 9145
 9146
 9147
 9148
 9149
 9150
 9151
 9152
 9153
 9154
 9155
 9156
 9157
 9158
 9159
 9160
 9161
 9162
 9163
 9164
 9165
 9166
 9167
 9168
 9169
 9170
 9171
 9172
 9173
 9174
 9175
 9176
 9177
 9178
 9179
 9180
 9181
 9182
 9183
 9184
 9185
 9186
 9187
 9188
 9189
 9190
 9191
 9192
 9193
 9194
 9195
 9196
 9197
 9198
 9199
 9200
 9201
 9202
 9203
 9204
 9205
 9206
 9207
 9208
 9209
 9210
 9211
 9212
 9213
 9214
 9215
 9216
 9217
 9218
 9219
 9220
 9221
 9222
 9223
 9224
 9225
 9226
 9227
 9228
 9229
 9230
 9231
 9232
 9233
 9234
 9235
 9236
 9237
 9238
 9239
 9240
 9241
 9242
 9243
 9244
 9245
 9246
 9247
 9248
 9249
 9250
 9251
 9252
 9253
 9254
 9255
 9256
 9257
 9258
 9259
 9260
 9261
 9262
 9263
 9264
 9265
 9266
 9267
 9268
 9269
 9270
 9271
 9272
 9273
 9274
 9275
 9276
 9277
 9278
 9279
 9280
 9281
 9282
 9283
 9284
 9285
 9286
 9287
 9288
 9289
 9290
 9291
 9292
 9293
 9294
 9295
 9296
 9297
 9298
 9299
 9300
 9301
 9302
 9303
 9304
 9305
 9306
 9307
 9308
 9309
 9310
 9311
 9312
 9313
 9314
 9315
 9316
 9317
 9318
 9319
 9320
 9321
 9322
 9323
 9324
 9325
 9326
 9327
 9328
 9329
 9330
 9331
 9332
 9333
 9334
 9335
 9336
 9337
 9338
 9339
 9340
 9341
 9342
 9343
 9344
 9345
 9346
 9347
 9348
 9349
 9350
 9351
 9352
 9353
 9354
 9355
 9356
 9357
 9358
 9359
 9360
 9361
 9362
 9363
 9364
 9365
 9366
 9367
 9368
 9369
 9370
 9371
 9372
 9373
 9374
 9375
 9376
 9377
 9378
 9379
 9380
 9381
 9382
 9383
 9384
 9385
 9386
 9387
 9388
 9389
 9390
 9391
 9392
 9393
 9394
 9395
 9396
 9397
 9398
 9399
 9400
 9401
 9402
 9403
 9404
 9405
 9406
 9407
 9408
 9409
 9410
 9411
 9412
 9413
 9414
 9415
 9416
 9417
 9418
 9419
 9420
 9421
 9422
 9423
 9424
 9425
 9426
 9427
 9428
 9429
 9430
 9431
 9432
 9433
 9434
 9435
 9436
 9437
 9438
 9439
 9440
 9441
 9442
 9443
 9444
 9445
 9446
 9447
 9448
 9449
 9450
 9451
 9452
 9453
 9454
 9455
 9456
 9457
 9458
 9459
 9460
 9461
 9462
 9463
 9464
 9465
 9466
 9467
 9468
 9469
 9470
 9471
 9472
 9473
 9474
 9475
 9476
 9477
 9478
 9479
 9480
 9481
 9482
 9483
 9484
 9485
 9486
 9487
 9488
 9489
 9490
 9491
 9492
 9493
 9494
 9495
 9496
 9497
 9498
 9499
 9500
 9501
 9502
 9503
 9504
 9505
 9506
 9507
 9508
 9509
 9510
 9511
 9512
 9513
 9514
 9515
 9516
 9517
 9518
 9519
 9520
 9521
 9522
 9523
 9524
 9525
 9526
 9527
 9528
 9529
 9530
 9531
 9532
 9533
 9534
 9535
 9536
 9537
 9538
 9539
 9540
 9541
 9542
 9543
 9544
 9545
 9546
 9547
 9548
 9549
 9550
 9551
 9552
 9553
 9554
 9555
 9556
 9557
 9558
 9559
 9560
 9561
 9562
 9563
 9564
 9565
 9566
 9567
 9568
 9569
 9570
 9571
 9572
 9573
 9574
 9575
 9576
 9577
 9578
 9579
 9580
 9581
 9582
 9583
 9584
 9585
 9586
 9587
 9588
 9589
 9590
 9591
 9592
 9593
 9594
 9595
 9596
 9597
 9598
 9599
 9600
 9601
 9602
 9603
 9604
 9605
 9606
 9607
 9608
 9609
 9610
 9611
 9612
 9613
 9614
 9615
 9616
 9617
 9618
 9619
 9620
 9621
 9622
 9623
 9624
 9625
 9626
 9627
 9628
 9629
 9630
 9631
 9632
 9633
 9634
 9635
 9636
 9637
 9638
 9639
 9640
 9641
 9642
 9643
 9644
 9645
 9646
 9647
 9648
 9649
 9650
 9651
 9652
 9653
 9654
 9655
 9656
 9657
 9658
 9659
 9660
 9661
 9662
 9663
 9664
 9665
 9666
 9667
 9668
 9669
 9670
 9671
 9672
 9673
 9674
 9675
 9676
 9677
 9678
 9679
 9680
 9681
 9682
 9683
 9684
 9685
 9686
 9687
 9688
 9689
 9690
 9691
 9692
 9693
 9694
 9695
 9696
 9697
 9698
 9699
 9700
 9701
 9702
 9703
 9704
 9705
 9706
 9707
 9708
 9709
 9710
 9711
 9712
 9713
 9714
 9715
 9716
 9717
 9718
 9719
 9720
 9721
 9722
 9723
 9724
 9725
 9726
 9727
 9728
 9729
 9730
 9731
 9732
 9733
 9734
 9735
 9736
 9737
 9738
 9739
 9740
 9741
 9742
 9743
 9744
 9745
 9746
 9747
 9748
 9749
 9750
 9751
 9752
 9753
 9754
 9755
 9756
 9757
 9758
 9759
 9760
 9761
 9762
 9763
 9764
 9765
 9766
 9767
 9768
 9769
 9770
 9771
 9772
 9773
 9774
 9775
 9776
 9777
 9778
 9779
 9780
 9781
 9782
 9783
 9784
 9785
 9786
 9787
 9788
 9789
 9790
 9791
 9792
 9793
 9794
 9795
 9796
 9797
 9798
 9799
 9800
 9801
 9802
 9803
 9804
 9805
 9806
 9807
 9808
 9809
 9810
 9811
 9812
 9813
 9814
 9815
 9816
 9817
 9818
 9819
 9820
 9821
 9822
 9823
 9824
 9825
 9826
 9827
 9828
 9829
 9830
 9831
 9832
 9833
 9834
 9835
 9836
 9837
 9838
 9839
 9840
 9841
 9842
 9843
 9844
 9845
 9846
 9847
 9848
 9849
 9850
 9851
 9852
 9853
 9854
 9855
 9856
 9857
 9858
 9859
 9860
 9861
 9862
 9863
 9864
 9865
 9866
 9867
 9868
 9869
 9870
 9871
 9872
 9873
 9874
 9875
 9876
 9877
 9878
 9879
 9880
 9881
 9882
 9883
 9884
 9885
 9886
 9887
 9888
 9889
 9890
 9891
 9892
 9893
 9894
 9895
 9896
 9897
 9898
 9899
 9900
 9901
 9902
 9903
 9904
 9905
 9906
 9907
 9908
 9909
 9910
 9911
 9912
 9913
 9914
 9915
 9916
 9917
 9918
 9919
 9920
 9921
 9922
 9923
 9924
 9925
 9926
 9927
 9928
 9929
 9930
 9931
 9932
 9933
 9934
 9935
 9936
 9937
 9938
 9939
 9940
 9941
 9942
 9943
 9944
 9945
 9946
 9947
 9948
 9949
 9950
 9951
 9952
 9953
 9954
 9955
 9956
 9957
 9958
 9959
 9960
 9961
 9962
 9963
 9964
 9965
 9966
 9967
 9968
 9969
 9970
 9971
 9972
 9973
 9974
 9975
 9976
 9977
 9978
 9979
 9980
 9981
 9982
 9983
 9984
 9985
 9986
 9987
 9988
 9989
 9990
 9991
 9992
 9993
 9994
 9995
 9996
 9997
 9998
 9999
10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
10011
10012
10013
10014
10015
10016
10017
10018
10019
10020
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042
10043
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
10113
10114
10115
10116
10117
10118
10119
10120
10121
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
10347
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
10427
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619
10620
10621
10622
10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639
10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
11068
11069
11070
11071
11072
11073
11074
11075
11076
11077
11078
11079
11080
11081
11082
11083
11084
11085
11086
11087
11088
11089
11090
11091
11092
11093
11094
11095
11096
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129
11130
11131
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
11142
11143
11144
11145
11146
11147
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174
11175
11176
11177
11178
11179
11180
11181
11182
11183
11184
11185
11186
11187
11188
11189
11190
11191
11192
11193
11194
11195
11196
11197
11198
11199
11200
11201
11202
11203
11204
11205
11206
11207
11208
11209
11210
11211
11212
11213
11214
11215
11216
11217
11218
11219
11220
11221
11222
11223
11224
11225
11226
11227
11228
11229
11230
11231
11232
11233
11234
11235
11236
11237
11238
11239
11240
11241
11242
11243
11244
11245
11246
11247
11248
11249
11250
11251
11252
11253
11254
11255
11256
11257
11258
11259
11260
11261
11262
11263
11264
11265
11266
11267
11268
11269
11270
11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
11302
11303
11304
11305
11306
11307
11308
11309
11310
11311
11312
11313
11314
11315
11316
11317
11318
11319
11320
11321
11322
11323
11324
11325
11326
11327
11328
11329
11330
11331
11332
11333
11334
11335
11336
11337
11338
11339
11340
11341
11342
11343
11344
11345
11346
11347
11348
11349
11350
11351
11352
11353
11354
11355
11356
11357
11358
11359
11360
11361
11362
11363
11364
11365
11366
11367
11368
11369
11370
11371
11372
11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388
11389
11390
11391
11392
11393
11394
11395
11396
11397
11398
11399
11400
11401
11402
11403
11404
11405
11406
11407
11408
11409
11410
11411
11412
11413
11414
11415
11416
11417
11418
11419
11420
11421
11422
11423
11424
11425
11426
11427
11428
11429
11430
11431
11432
11433
11434
11435
11436
11437
11438
11439
11440
11441
11442
11443
11444
11445
11446
11447
11448
11449
11450
11451
11452
11453
11454
11455
11456
11457
11458
11459
11460
11461
11462
11463
11464
11465
11466
11467
11468
11469
11470
11471
11472
11473
11474
11475
11476
11477
11478
11479
11480
11481
11482
11483
11484
11485
11486
11487
11488
11489
11490
11491
11492
11493
11494
11495
11496
11497
11498
11499
11500
11501
11502
11503
11504
11505
11506
11507
11508
11509
11510
11511
11512
11513
11514
11515
11516
11517
11518
11519
11520
11521
11522
11523
11524
11525
11526
11527
11528
11529
11530
11531
11532
11533
11534
11535
11536
11537
11538
11539
11540
11541
11542
11543
11544
11545
11546
11547
11548
11549
11550
11551
11552
11553
11554
11555
11556
11557
11558
11559
11560
11561
11562
11563
11564
11565
11566
11567
11568
11569
11570
11571
11572
11573
11574
11575
11576
11577
11578
11579
11580
11581
11582
11583
11584
11585
11586
11587
11588
11589
11590
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
11615
11616
11617
11618
11619
11620
11621
11622
11623
11624
11625
11626
11627
11628
11629
11630
11631
11632
11633
11634
11635
11636
11637
11638
11639
11640
11641
11642
11643
11644
11645
11646
11647
11648
11649
11650
11651
11652
11653
11654
11655
11656
11657
11658
11659
11660
11661
11662
11663
11664
11665
11666
11667
11668
11669
11670
11671
11672
11673
11674
11675
11676
11677
11678
11679
11680
11681
11682
11683
11684
11685
11686
11687
11688
11689
11690
11691
11692
11693
11694
11695
11696
11697
11698
11699
11700
11701
11702
11703
11704
11705
11706
11707
11708
11709
11710
11711
11712
11713
11714
11715
11716
11717
11718
11719
11720
11721
11722
11723
11724
11725
11726
11727
11728
11729
11730
11731
11732
11733
11734
11735
11736
11737
11738
11739
11740
11741
11742
11743
11744
11745
11746
11747
11748
11749
11750
11751
11752
11753
11754
11755
11756
11757
11758
11759
11760
11761
11762
11763
11764
11765
11766
11767
11768
11769
11770
11771
11772
11773
11774
11775
11776
11777
11778
11779
11780
11781
11782
11783
11784
11785
11786
11787
11788
11789
11790
11791
11792
11793
11794
11795
11796
11797
11798
11799
11800
11801
11802
11803
11804
11805
11806
11807
11808
11809
11810
11811
11812
11813
11814
11815
11816
11817
11818
11819
11820
11821
11822
11823
11824
11825
11826
11827
11828
11829
11830
11831
11832
11833
11834
11835
11836
11837
11838
11839
11840
11841
11842
11843
11844
11845
11846
11847
11848
11849
11850
11851
11852
11853
11854
11855
11856
11857
11858
11859
11860
11861
11862
11863
11864
11865
11866
11867
11868
11869
11870
11871
11872
11873
11874
11875
11876
11877
11878
11879
11880
11881
11882
11883
11884
11885
11886
11887
11888
11889
11890
11891
11892
11893
11894
11895
11896
11897
11898
11899
11900
11901
11902
11903
11904
11905
11906
11907
11908
11909
11910
11911
11912
11913
11914
11915
11916
11917
11918
11919
11920
11921
11922
11923
11924
11925
11926
11927
11928
11929
11930
11931
11932
11933
11934
11935
11936
11937
11938
11939
11940
11941
11942
11943
11944
11945
11946
11947
11948
11949
11950
11951
11952
11953
11954
11955
11956
11957
11958
11959
11960
11961
11962
11963
11964
11965
11966
11967
11968
11969
11970
11971
11972
11973
11974
11975
11976
11977
11978
11979
11980
11981
11982
11983
11984
11985
11986
11987
11988
11989
11990
11991
11992
11993
11994
11995
11996
11997
11998
11999
12000
12001
12002
12003
12004
12005
12006
12007
12008
12009
12010
12011
12012
12013
12014
12015
12016
12017
12018
12019
12020
12021
12022
12023
12024
12025
12026
12027
12028
12029
12030
12031
12032
12033
12034
12035
12036
12037
12038
12039
12040
12041
12042
12043
12044
12045
12046
12047
12048
12049
12050
12051
12052
12053
12054
12055
12056
12057
12058
12059
12060
12061
12062
12063
12064
12065
12066
12067
12068
12069
12070
12071
12072
12073
12074
12075
12076
12077
12078
12079
12080
12081
12082
12083
12084
12085
12086
12087
12088
12089
12090
12091
12092
12093
12094
12095
12096
12097
12098
12099
12100
12101
12102
12103
12104
12105
12106
12107
12108
12109
12110
12111
12112
12113
12114
12115
12116
12117
12118
12119
12120
12121
12122
12123
12124
12125
12126
12127
12128
12129
12130
12131
12132
12133
12134
12135
12136
12137
12138
12139
12140
12141
12142
12143
12144
12145
12146
12147
12148
12149
12150
12151
12152
12153
12154
12155
12156
12157
12158
12159
12160
12161
12162
12163
12164
12165
12166
12167
12168
12169
12170
12171
12172
12173
12174
12175
12176
12177
12178
12179
12180
12181
12182
12183
12184
12185
12186
12187
12188
12189
12190
12191
12192
12193
12194
12195
12196
12197
12198
12199
12200
12201
12202
12203
12204
12205
12206
12207
12208
12209
12210
12211
12212
12213
12214
12215
12216
12217
12218
12219
12220
12221
12222
12223
12224
12225
12226
12227
12228
12229
12230
12231
12232
12233
12234
12235
12236
12237
12238
12239
12240
12241
12242
12243
12244
12245
12246
12247
12248
12249
12250
12251
12252
12253
12254
12255
12256
12257
12258
12259
12260
12261
12262
12263
12264
12265
12266
12267
12268
12269
12270
12271
12272
12273
12274
12275
12276
12277
12278
12279
12280
12281
12282
12283
12284
12285
12286
12287
12288
12289
12290
12291
12292
12293
12294
12295
12296
12297
12298
12299
12300
12301
12302
12303
12304
12305
12306
12307
12308
12309
12310
12311
12312
12313
12314
12315
12316
12317
12318
12319
12320
12321
12322
12323
12324
12325
12326
12327
12328
12329
12330
12331
12332
12333
12334
12335
12336
12337
12338
12339
12340
12341
12342
12343
12344
12345
12346
12347
12348
12349
12350
12351
12352
12353
12354
12355
12356
12357
12358
12359
12360
12361
12362
12363
12364
12365
12366
12367
12368
12369
12370
12371
12372
12373
12374
12375
12376
12377
12378
12379
12380
12381
12382
12383
12384
12385
12386
12387
12388
12389
12390
12391
12392
12393
12394
12395
12396
12397
12398
12399
12400
12401
12402
12403
12404
12405
12406
12407
12408
12409
12410
12411
12412
12413
12414
12415
12416
12417
12418
12419
12420
12421
12422
12423
12424
12425
12426
12427
12428
12429
12430
12431
12432
12433
12434
12435
12436
12437
12438
12439
12440
12441
12442
12443
12444
12445
12446
12447
12448
12449
12450
12451
12452
12453
12454
12455
12456
12457
12458
12459
12460
12461
12462
12463
12464
12465
12466
12467
12468
12469
12470
12471
12472
12473
12474
12475
12476
12477
12478
12479
12480
12481
12482
12483
12484
12485
12486
12487
12488
12489
12490
12491
12492
12493
12494
12495
12496
12497
12498
12499
12500
12501
12502
12503
12504
12505
12506
12507
12508
12509
12510
12511
12512
12513
12514
12515
12516
12517
12518
12519
12520
12521
12522
12523
12524
12525
12526
12527
12528
12529
12530
12531
12532
12533
12534
12535
12536
12537
12538
12539
12540
12541
12542
12543
12544
12545
12546
12547
12548
12549
12550
12551
12552
12553
12554
12555
12556
12557
12558
12559
12560
12561
12562
12563
12564
12565
12566
12567
12568
12569
12570
12571
12572
12573
12574
12575
12576
12577
12578
12579
12580
12581
12582
12583
12584
12585
12586
12587
12588
12589
12590
12591
12592
12593
12594
12595
12596
12597
12598
12599
12600
12601
12602
12603
12604
12605
12606
12607
12608
12609
12610
12611
12612
12613
12614
12615
12616
12617
12618
12619
12620
12621
12622
12623
12624
12625
12626
12627
12628
12629
12630
12631
12632
12633
12634
12635
12636
12637
12638
12639
12640
12641
12642
12643
12644
12645
12646
12647
12648
12649
12650
12651
12652
12653
12654
12655
12656
12657
12658
12659
12660
12661
12662
12663
12664
12665
12666
12667
12668
12669
12670
12671
12672
12673
12674
12675
12676
12677
12678
12679
12680
12681
12682
12683
12684
12685
12686
12687
12688
12689
12690
12691
12692
12693
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704
12705
12706
12707
12708
12709
12710
12711
12712
12713
12714
12715
12716
12717
12718
12719
12720
12721
12722
12723
12724
12725
12726
12727
12728
12729
12730
12731
12732
12733
12734
12735
12736
12737
12738
12739
12740
12741
12742
12743
12744
12745
12746
12747
12748
12749
12750
12751
12752
12753
12754
12755
12756
12757
12758
12759
12760
12761
12762
12763
12764
12765
12766
12767
12768
12769
12770
12771
12772
12773
12774
12775
12776
12777
12778
12779
12780
12781
12782
12783
12784
12785
12786
12787
12788
12789
12790
12791
12792
12793
12794
12795
12796
12797
12798
12799
12800
12801
12802
12803
12804
12805
12806
12807
12808
12809
12810
12811
12812
12813
12814
12815
12816
12817
12818
12819
12820
12821
12822
12823
12824
12825
12826
12827
12828
12829
12830
12831
12832
12833
12834
12835
12836
12837
12838
12839
12840
12841
12842
12843
12844
12845
12846
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856
12857
12858
12859
12860
12861
12862
12863
12864
12865
12866
12867
12868
12869
12870
12871
12872
12873
12874
12875
12876
12877
12878
12879
12880
12881
12882
12883
12884
12885
12886
12887
12888
12889
12890
12891
12892
12893
12894
12895
12896
12897
12898
12899
12900
12901
12902
12903
12904
12905
12906
12907
12908
12909
12910
12911
12912
12913
12914
12915
12916
12917
12918
12919
12920
12921
12922
12923
12924
12925
12926
12927
12928
12929
12930
12931
12932
12933
12934
12935
12936
12937
12938
12939
12940
12941
12942
12943
12944
12945
12946
12947
12948
12949
12950
12951
12952
12953
12954
12955
12956
12957
12958
12959
12960
12961
12962
12963
12964
12965
12966
12967
12968
12969
12970
12971
12972
12973
12974
12975
12976
12977
12978
12979
12980
12981
12982
12983
12984
12985
12986
12987
12988
12989
12990
12991
12992
12993
12994
12995
12996
12997
12998
12999
13000
13001
13002
13003
13004
13005
13006
13007
13008
13009
13010
13011
13012
13013
13014
13015
13016
13017
13018
13019
13020
13021
13022
13023
13024
13025
13026
13027
13028
13029
13030
13031
13032
13033
13034
13035
13036
13037
13038
13039
13040
13041
13042
13043
13044
13045
13046
13047
13048
13049
13050
13051
13052
13053
13054
13055
13056
13057
13058
13059
13060
13061
13062
13063
13064
13065
13066
13067
13068
13069
13070
13071
13072
13073
13074
13075
13076
13077
13078
13079
13080
13081
13082
13083
13084
13085
13086
13087
13088
13089
13090
13091
13092
13093
13094
13095
13096
13097
13098
13099
13100
13101
13102
13103
13104
13105
13106
13107
13108
13109
13110
13111
13112
13113
13114
13115
13116
13117
13118
13119
13120
13121
13122
13123
13124
13125
13126
13127
13128
13129
13130
13131
13132
13133
13134
13135
13136
13137
13138
13139
13140
13141
13142
13143
13144
13145
13146
13147
13148
13149
13150
13151
13152
13153
13154
13155
13156
13157
13158
13159
13160
13161
13162
13163
13164
13165
13166
13167
13168
13169
13170
13171
13172
13173
13174
13175
13176
13177
13178
13179
13180
13181
13182
13183
13184
13185
13186
13187
13188
13189
13190
13191
13192
13193
13194
13195
13196
13197
13198
13199
13200
13201
13202
13203
13204
13205
13206
13207
13208
13209
13210
13211
13212
13213
13214
13215
13216
13217
13218
13219
13220
13221
13222
13223
13224
13225
13226
13227
13228
13229
13230
13231
13232
13233
13234
13235
13236
13237
13238
13239
13240
13241
13242
13243
13244
13245
13246
13247
13248
13249
13250
13251
13252
13253
13254
13255
13256
13257
13258
13259
13260
13261
13262
13263
13264
13265
13266
13267
13268
13269
13270
13271
13272
13273
13274
13275
13276
13277
13278
13279
13280
13281
13282
13283
13284
13285
13286
13287
13288
13289
13290
13291
13292
13293
13294
13295
13296
13297
13298
13299
13300
13301
13302
13303
13304
13305
13306
13307
13308
13309
13310
13311
13312
13313
13314
13315
13316
13317
13318
13319
13320
13321
13322
13323
13324
13325
13326
13327
13328
13329
13330
13331
13332
13333
13334
13335
13336
13337
13338
13339
13340
13341
13342
13343
13344
13345
13346
13347
13348
13349
13350
13351
13352
13353
13354
13355
13356
13357
13358
13359
13360
13361
13362
13363
13364
13365
13366
13367
13368
13369
13370
13371
13372
13373
13374
13375
13376
13377
13378
13379
13380
13381
13382
13383
13384
13385
13386
13387
13388
13389
13390
13391
13392
13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404
13405
13406
13407
13408
13409
13410
13411
13412
13413
13414
13415
13416
13417
13418
13419
13420
13421
13422
13423
13424
13425
13426
13427
13428
13429
13430
13431
13432
13433
13434
13435
13436
13437
13438
13439
13440
13441
13442
13443
13444
13445
13446
13447
13448
13449
13450
13451
13452
13453
13454
13455
13456
13457
13458
13459
13460
13461
13462
13463
13464
13465
13466
13467
13468
13469
13470
13471
13472
13473
13474
13475
13476
13477
13478
13479
13480
13481
13482
13483
13484
13485
13486
13487
13488
13489
13490
13491
13492
13493
13494
13495
13496
13497
13498
13499
13500
13501
13502
13503
13504
13505
13506
13507
13508
13509
13510
13511
13512
13513
13514
13515
13516
13517
13518
13519
13520
13521
13522
13523
13524
13525
13526
13527
13528
13529
13530
13531
13532
13533
13534
13535
13536
13537
13538
13539
13540
13541
13542
13543
13544
13545
13546
13547
13548
13549
13550
13551
13552
13553
13554
13555
13556
13557
13558
13559
13560
13561
13562
13563
13564
13565
13566
13567
13568
13569
13570
13571
13572
13573
13574
13575
13576
13577
13578
13579
13580
13581
13582
13583
13584
13585
13586
13587
13588
13589
13590
13591
13592
13593
13594
13595
13596
13597
13598
13599
13600
13601
13602
13603
13604
13605
13606
13607
13608
13609
13610
13611
13612
13613
13614
13615
13616
13617
13618
13619
13620
13621
13622
13623
13624
13625
13626
13627
13628
13629
13630
13631
13632
13633
13634
13635
13636
13637
13638
13639
13640
13641
13642
13643
13644
13645
13646
13647
13648
13649
13650
13651
13652
13653
13654
13655
13656
13657
13658
13659
13660
13661
13662
13663
13664
13665
13666
13667
13668
13669
13670
13671
13672
13673
13674
13675
13676
13677
13678
13679
13680
13681
13682
13683
13684
13685
13686
13687
13688
13689
13690
13691
13692
13693
13694
13695
13696
13697
13698
13699
13700
13701
13702
13703
13704
13705
13706
13707
13708
13709
13710
13711
13712
13713
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
13727
13728
13729
13730
13731
13732
13733
13734
13735
13736
13737
13738
13739
13740
13741
13742
13743
13744
13745
13746
13747
13748
13749
13750
13751
13752
13753
13754
13755
13756
13757
13758
13759
13760
13761
13762
13763
13764
13765
13766
13767
13768
13769
13770
13771
13772
13773
13774
13775
13776
13777
13778
13779
13780
13781
13782
13783
13784
13785
13786
13787
13788
13789
13790
13791
13792
13793
13794
13795
13796
13797
13798
13799
13800
13801
13802
13803
13804
13805
13806
13807
13808
13809
13810
13811
13812
13813
13814
13815
13816
13817
13818
13819
13820
13821
13822
13823
13824
13825
13826
13827
13828
13829
13830
13831
13832
13833
13834
13835
13836
13837
13838
13839
13840
13841
13842
13843
13844
13845
13846
13847
13848
13849
13850
13851
13852
13853
13854
13855
13856
13857
13858
13859
13860
13861
13862
13863
13864
13865
13866
13867
13868
13869
13870
13871
13872
13873
13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887
13888
13889
13890
13891
13892
13893
13894
13895
13896
13897
13898
13899
13900
13901
13902
13903
13904
13905
13906
13907
13908
13909
13910
13911
13912
13913
13914
13915
13916
13917
13918
13919
13920
13921
13922
13923
13924
13925
13926
13927
13928
13929
13930
13931
13932
13933
13934
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
13961
13962
13963
13964
13965
13966
13967
13968
13969
13970
13971
13972
13973
13974
13975
13976
13977
13978
13979
13980
13981
13982
13983
13984
13985
13986
13987
13988
13989
13990
13991
13992
13993
13994
13995
13996
13997
13998
13999
14000
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018
14019
14020
14021
14022
14023
14024
14025
14026
14027
14028
14029
14030
14031
14032
14033
14034
14035
14036
14037
14038
14039
14040
14041
14042
14043
14044
14045
14046
14047
14048
14049
14050
14051
14052
14053
14054
14055
14056
14057
14058
14059
14060
14061
14062
14063
14064
14065
14066
14067
14068
14069
14070
14071
14072
14073
14074
14075
14076
14077
14078
14079
14080
14081
14082
14083
14084
14085
14086
14087
14088
14089
14090
14091
14092
14093
14094
14095
14096
14097
14098
14099
14100
14101
14102
14103
14104
14105
14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174
14175
14176
14177
14178
14179
14180
14181
14182
14183
14184
14185
14186
14187
14188
14189
14190
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205
14206
14207
14208
14209
14210
14211
14212
14213
14214
14215
14216
14217
14218
14219
14220
14221
14222
14223
14224
14225
14226
14227
14228
14229
14230
14231
14232
14233
14234
14235
14236
14237
14238
14239
14240
14241
14242
14243
14244
14245
14246
14247
14248
14249
14250
14251
14252
14253
14254
14255
14256
14257
14258
14259
14260
14261
14262
14263
14264
14265
14266
14267
14268
14269
14270
14271
14272
14273
14274
14275
14276
14277
14278
14279
14280
14281
14282
14283
14284
14285
14286
14287
14288
14289
14290
14291
14292
14293
14294
14295
14296
14297
14298
14299
14300
14301
14302
14303
14304
14305
14306
14307
14308
14309
14310
14311
14312
14313
14314
14315
14316
14317
14318
14319
14320
14321
14322
14323
14324
14325
14326
14327
14328
14329
14330
14331
14332
14333
14334
14335
14336
14337
14338
14339
14340
14341
14342
14343
14344
14345
14346
14347
14348
14349
14350
14351
14352
14353
14354
14355
14356
14357
14358
14359
14360
14361
14362
14363
14364
14365
14366
14367
14368
14369
14370
14371
14372
14373
14374
14375
14376
14377
14378
14379
14380
14381
14382
14383
14384
14385
14386
14387
14388
14389
14390
14391
14392
14393
14394
14395
14396
14397
14398
14399
14400
14401
14402
14403
14404
14405
14406
14407
14408
14409
14410
14411
14412
14413
14414
14415
14416
14417
14418
14419
14420
14421
14422
14423
14424
14425
14426
14427
14428
14429
14430
14431
14432
14433
14434
14435
14436
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
14458
14459
14460
14461
14462
14463
14464
14465
14466
14467
14468
14469
14470
14471
14472
14473
14474
14475
14476
14477
14478
14479
14480
14481
14482
14483
14484
14485
14486
14487
14488
14489
14490
14491
14492
14493
14494
14495
14496
14497
14498
14499
14500
14501
14502
14503
14504
14505
14506
14507
14508
14509
14510
14511
14512
14513
14514
14515
14516
14517
14518
14519
14520
14521
14522
14523
14524
14525
14526
14527
14528
14529
14530
14531
14532
14533
14534
14535
14536
14537
14538
14539
14540
14541
14542
14543
14544
14545
14546
14547
14548
14549
14550
14551
14552
14553
14554
14555
14556
14557
14558
14559
14560
14561
14562
14563
14564
14565
14566
14567
14568
14569
14570
14571
14572
14573
14574
14575
14576
14577
14578
14579
14580
14581
14582
14583
14584
14585
14586
14587
14588
14589
14590
14591
14592
14593
14594
14595
14596
14597
14598
14599
14600
14601
14602
14603
14604
14605
14606
14607
14608
14609
14610
14611
14612
14613
14614
14615
14616
14617
14618
14619
14620
14621
14622
14623
14624
14625
14626
14627
14628
14629
14630
14631
14632
14633
14634
14635
14636
14637
14638
14639
14640
14641
14642
14643
14644
14645
14646
14647
14648
14649
14650
14651
14652
14653
14654
14655
14656
14657
14658
14659
14660
14661
14662
14663
14664
14665
14666
14667
14668
14669
14670
14671
14672
14673
14674
14675
14676
14677
14678
14679
14680
14681
14682
14683
14684
14685
14686
14687
14688
14689
14690
14691
14692
14693
14694
14695
14696
14697
14698
14699
14700
14701
14702
14703
14704
14705
14706
14707
14708
14709
14710
14711
14712
14713
14714
14715
14716
14717
14718
14719
14720
14721
14722
14723
14724
14725
14726
14727
14728
14729
14730
14731
14732
14733
14734
14735
14736
14737
14738
14739
14740
14741
14742
14743
14744
14745
14746
14747
14748
14749
14750
14751
14752
14753
14754
14755
14756
14757
14758
14759
14760
14761
14762
14763
14764
14765
14766
14767
14768
14769
14770
14771
14772
14773
14774
14775
14776
14777
14778
14779
14780
14781
14782
14783
14784
14785
14786
14787
14788
14789
14790
14791
14792
14793
14794
14795
14796
14797
14798
14799
14800
14801
14802
14803
14804
14805
14806
14807
14808
14809
14810
14811
14812
14813
14814
14815
14816
14817
14818
14819
14820
14821
14822
14823
14824
14825
14826
14827
14828
14829
14830
14831
14832
14833
14834
14835
14836
14837
14838
14839
14840
14841
14842
14843
14844
14845
14846
14847
14848
14849
14850
14851
14852
14853
14854
14855
14856
14857
14858
14859
14860
14861
14862
14863
14864
14865
14866
14867
14868
14869
14870
14871
14872
14873
14874
14875
14876
14877
14878
14879
14880
14881
14882
14883
14884
14885
14886
14887
14888
14889
14890
14891
14892
14893
14894
14895
14896
14897
14898
14899
14900
14901
14902
14903
14904
14905
14906
14907
14908
14909
14910
14911
14912
14913
14914
14915
14916
14917
14918
14919
14920
14921
14922
14923
14924
14925
14926
14927
14928
14929
14930
14931
14932
14933
14934
14935
14936
14937
14938
14939
14940
14941
14942
14943
14944
14945
14946
14947
14948
14949
14950
14951
14952
14953
14954
14955
14956
14957
14958
14959
14960
14961
14962
14963
14964
14965
14966
14967
14968
14969
14970
14971
14972
14973
14974
14975
14976
14977
14978
14979
14980
14981
14982
14983
14984
14985
14986
14987
14988
14989
14990
14991
14992
14993
14994
14995
14996
14997
14998
14999
15000
15001
15002
15003
15004
15005
15006
15007
15008
15009
15010
15011
15012
15013
15014
15015
15016
15017
15018
15019
15020
15021
15022
15023
15024
15025
15026
15027
15028
15029
15030
15031
15032
15033
15034
15035
15036
15037
15038
15039
15040
15041
15042
15043
15044
15045
15046
15047
15048
15049
15050
15051
15052
15053
15054
15055
15056
15057
15058
15059
15060
15061
15062
15063
15064
15065
15066
15067
15068
15069
15070
15071
15072
15073
15074
15075
15076
15077
15078
15079
15080
15081
15082
15083
15084
15085
15086
15087
15088
15089
15090
15091
15092
15093
15094
15095
15096
15097
15098
15099
15100
15101
15102
15103
15104
15105
15106
15107
15108
15109
15110
15111
15112
15113
15114
15115
15116
15117
15118
15119
15120
15121
15122
15123
15124
15125
15126
15127
15128
15129
15130
15131
15132
15133
15134
15135
15136
15137
15138
15139
15140
15141
15142
15143
15144
15145
15146
15147
15148
15149
15150
15151
15152
15153
15154
15155
15156
15157
15158
15159
15160
15161
15162
15163
15164
15165
15166
15167
15168
15169
15170
15171
15172
15173
15174
15175
15176
15177
15178
15179
15180
15181
15182
15183
15184
15185
15186
15187
15188
15189
15190
15191
15192
15193
15194
15195
15196
15197
15198
15199
15200
15201
15202
15203
15204
15205
15206
15207
15208
15209
15210
15211
15212
15213
15214
15215
15216
15217
15218
15219
15220
15221
15222
15223
15224
15225
15226
15227
15228
15229
15230
15231
15232
15233
15234
15235
15236
15237
15238
15239
15240
15241
15242
15243
15244
15245
15246
15247
15248
15249
15250
15251
15252
15253
15254
15255
15256
15257
15258
15259
15260
15261
15262
15263
15264
15265
15266
15267
15268
15269
15270
15271
15272
15273
15274
15275
15276
15277
15278
15279
15280
15281
15282
15283
15284
15285
15286
15287
15288
15289
15290
15291
15292
15293
15294
15295
15296
15297
15298
15299
15300
15301
15302
15303
15304
15305
15306
15307
15308
15309
15310
15311
15312
15313
15314
15315
15316
15317
15318
15319
15320
15321
15322
15323
15324
15325
15326
15327
15328
15329
15330
15331
15332
15333
15334
15335
15336
15337
15338
15339
15340
15341
15342
15343
15344
15345
15346
15347
15348
15349
15350
15351
15352
15353
15354
15355
15356
15357
15358
15359
15360
15361
15362
15363
15364
15365
15366
15367
15368
15369
15370
15371
15372
15373
15374
15375
15376
15377
15378
15379
15380
15381
15382
15383
15384
15385
15386
15387
15388
15389
15390
15391
15392
15393
15394
15395
15396
15397
15398
15399
15400
15401
15402
15403
15404
15405
15406
15407
15408
15409
15410
15411
15412
15413
15414
15415
15416
15417
15418
15419
15420
15421
15422
15423
15424
15425
15426
15427
15428
15429
15430
15431
15432
15433
15434
15435
15436
15437
15438
15439
15440
15441
15442
15443
15444
15445
15446
15447
15448
15449
15450
15451
15452
15453
15454
15455
15456
15457
15458
15459
15460
15461
15462
15463
15464
15465
15466
15467
15468
15469
15470
15471
15472
15473
15474
15475
15476
15477
15478
15479
15480
15481
15482
15483
15484
15485
15486
15487
15488
15489
15490
15491
15492
15493
15494
15495
15496
15497
15498
15499
15500
15501
15502
15503
15504
15505
15506
15507
15508
15509
15510
15511
15512
15513
15514
15515
15516
15517
15518
15519
15520
15521
15522
15523
15524
15525
15526
15527
15528
15529
15530
15531
15532
15533
15534
15535
15536
15537
15538
15539
15540
15541
15542
15543
15544
15545
15546
15547
15548
15549
15550
15551
15552
15553
15554
15555
15556
15557
15558
15559
15560
15561
15562
15563
15564
15565
15566
15567
15568
15569
15570
15571
15572
15573
15574
15575
15576
15577
15578
15579
15580
15581
15582
15583
15584
15585
15586
15587
15588
15589
15590
15591
15592
15593
15594
15595
15596
15597
15598
15599
15600
15601
15602
15603
15604
15605
15606
15607
15608
15609
15610
15611
15612
15613
15614
15615
15616
15617
15618
15619
15620
15621
15622
15623
15624
15625
15626
15627
15628
15629
15630
15631
15632
15633
15634
15635
15636
15637
15638
15639
15640
15641
15642
15643
15644
15645
15646
15647
15648
15649
15650
15651
15652
15653
15654
15655
15656
15657
15658
15659
15660
15661
15662
15663
15664
15665
15666
15667
15668
15669
15670
15671
15672
15673
15674
15675
15676
15677
15678
15679
15680
15681
15682
15683
15684
15685
15686
15687
15688
15689
15690
15691
15692
15693
15694
15695
15696
15697
15698
15699
15700
15701
15702
15703
15704
15705
15706
15707
15708
15709
15710
15711
15712
15713
15714
15715
15716
15717
15718
15719
15720
15721
15722
15723
15724
15725
15726
15727
15728
15729
15730
15731
15732
15733
15734
15735
15736
15737
15738
15739
15740
15741
15742
15743
15744
15745
15746
15747
15748
15749
15750
15751
15752
15753
15754
15755
15756
15757
15758
15759
15760
15761
15762
15763
15764
15765
15766
15767
15768
15769
15770
15771
15772
15773
15774
15775
15776
15777
15778
15779
15780
15781
15782
15783
15784
15785
15786
15787
15788
15789
15790
15791
15792
15793
15794
15795
15796
15797
15798
15799
15800
15801
15802
15803
15804
15805
15806
15807
15808
15809
15810
15811
15812
15813
15814
15815
15816
15817
15818
15819
15820
15821
15822
15823
15824
15825
15826
15827
15828
15829
15830
15831
15832
15833
15834
15835
15836
15837
15838
15839
15840
15841
15842
15843
15844
15845
15846
15847
15848
15849
15850
15851
15852
15853
15854
15855
15856
15857
15858
15859
15860
15861
15862
15863
15864
15865
15866
15867
15868
15869
15870
15871
15872
15873
15874
15875
15876
15877
15878
15879
15880
15881
15882
15883
15884
15885
15886
15887
15888
15889
15890
15891
15892
15893
15894
15895
15896
15897
15898
15899
15900
15901
15902
15903
15904
15905
15906
15907
15908
15909
15910
15911
15912
15913
15914
15915
15916
15917
15918
15919
15920
15921
15922
15923
15924
15925
15926
15927
15928
15929
15930
15931
15932
15933
15934
15935
15936
15937
15938
15939
15940
15941
15942
15943
15944
15945
15946
15947
15948
15949
15950
15951
15952
15953
15954
15955
15956
15957
15958
15959
15960
15961
15962
15963
15964
15965
15966
15967
15968
15969
15970
15971
15972
15973
15974
15975
15976
15977
15978
15979
15980
15981
15982
15983
15984
15985
15986
15987
15988
15989
15990
15991
15992
15993
15994
15995
15996
15997
15998
15999
16000
16001
16002
16003
16004
16005
16006
16007
16008
16009
16010
16011
16012
16013
16014
16015
16016
16017
16018
16019
16020
16021
16022
16023
16024
16025
16026
16027
16028
16029
16030
16031
16032
16033
16034
16035
16036
16037
16038
16039
16040
16041
16042
16043
16044
16045
16046
16047
16048
16049
16050
16051
16052
16053
16054
16055
16056
16057
16058
16059
16060
16061
16062
16063
16064
16065
16066
16067
16068
16069
16070
16071
16072
16073
16074
16075
16076
16077
16078
16079
16080
16081
16082
16083
16084
16085
16086
16087
16088
16089
16090
16091
16092
16093
16094
16095
16096
16097
16098
16099
16100
16101
16102
16103
16104
16105
16106
16107
16108
16109
16110
16111
16112
16113
16114
16115
16116
16117
16118
16119
16120
16121
16122
16123
16124
16125
16126
16127
16128
16129
16130
16131
16132
16133
16134
16135
16136
16137
16138
16139
16140
16141
16142
16143
16144
16145
16146
16147
16148
16149
16150
16151
16152
16153
16154
16155
16156
16157
16158
16159
16160
16161
16162
16163
16164
16165
16166
16167
16168
16169
16170
16171
16172
16173
16174
16175
16176
16177
16178
16179
16180
16181
16182
16183
16184
16185
16186
16187
16188
16189
16190
16191
16192
16193
16194
16195
16196
16197
16198
16199
16200
16201
16202
16203
16204
16205
16206
16207
16208
16209
16210
16211
16212
16213
16214
16215
16216
16217
16218
16219
16220
16221
16222
16223
16224
16225
16226
16227
16228
16229
16230
16231
16232
16233
16234
16235
16236
16237
16238
16239
16240
16241
16242
16243
16244
16245
16246
16247
16248
16249
16250
16251
16252
16253
16254
16255
16256
16257
16258
16259
16260
16261
16262
16263
16264
16265
16266
16267
16268
16269
16270
16271
16272
16273
16274
16275
16276
16277
16278
16279
16280
16281
16282
16283
16284
16285
16286
16287
16288
16289
16290
16291
16292
16293
16294
16295
16296
16297
16298
16299
16300
16301
16302
16303
16304
16305
16306
16307
16308
16309
16310
16311
16312
16313
16314
16315
16316
16317
16318
16319
16320
16321
16322
16323
16324
16325
16326
16327
16328
16329
16330
16331
16332
16333
16334
16335
16336
16337
16338
16339
16340
16341
16342
16343
16344
16345
16346
16347
16348
16349
16350
16351
16352
16353
16354
16355
16356
16357
16358
16359
16360
16361
16362
16363
16364
16365
16366
16367
16368
16369
16370
16371
16372
16373
16374
16375
16376
16377
16378
16379
16380
16381
16382
16383
16384
16385
16386
16387
16388
16389
16390
16391
16392
16393
16394
16395
16396
16397
16398
16399
16400
16401
16402
16403
16404
16405
16406
16407
16408
16409
16410
16411
16412
16413
16414
16415
16416
16417
16418
16419
16420
16421
16422
16423
16424
16425
16426
16427
16428
16429
16430
16431
16432
16433
16434
16435
16436
16437
16438
16439
16440
16441
16442
16443
16444
16445
16446
16447
16448
16449
16450
16451
16452
16453
16454
16455
16456
16457
16458
16459
16460
16461
16462
16463
16464
16465
16466
16467
16468
16469
16470
16471
16472
16473
16474
16475
16476
16477
16478
16479
16480
16481
16482
16483
16484
16485
16486
16487
16488
16489
16490
16491
16492
16493
16494
16495
16496
16497
16498
16499
16500
16501
16502
16503
16504
16505
16506
16507
16508
16509
16510
16511
16512
16513
16514
16515
16516
16517
16518
16519
16520
16521
16522
16523
16524
16525
16526
16527
16528
16529
16530
16531
16532
16533
16534
16535
16536
16537
16538
16539
16540
16541
16542
16543
16544
16545
16546
16547
16548
16549
16550
16551
16552
16553
16554
16555
16556
16557
16558
16559
16560
16561
16562
16563
16564
16565
16566
16567
16568
16569
16570
16571
16572
16573
16574
16575
16576
16577
16578
16579
16580
16581
16582
16583
16584
16585
16586
16587
16588
16589
16590
16591
16592
16593
16594
16595
16596
16597
16598
16599
16600
16601
16602
16603
16604
16605
16606
16607
16608
16609
16610
16611
16612
16613
16614
16615
16616
16617
16618
16619
16620
16621
16622
16623
16624
16625
16626
16627
16628
16629
16630
16631
16632
16633
16634
16635
16636
16637
16638
16639
16640
16641
16642
16643
16644
16645
16646
16647
16648
16649
16650
16651
16652
16653
16654
16655
16656
16657
16658
16659
16660
16661
16662
16663
16664
16665
16666
16667
16668
16669
16670
16671
16672
16673
16674
16675
16676
16677
16678
16679
16680
16681
16682
16683
16684
16685
16686
16687
16688
16689
16690
16691
16692
16693
16694
16695
16696
16697
16698
16699
16700
16701
16702
16703
16704
16705
16706
16707
16708
16709
16710
16711
16712
16713
16714
16715
16716
16717
16718
16719
16720
16721
16722
16723
16724
16725
16726
16727
16728
16729
16730
16731
16732
16733
16734
16735
16736
16737
16738
16739
16740
16741
16742
16743
16744
16745
16746
16747
16748
16749
16750
16751
16752
16753
16754
16755
16756
16757
16758
16759
16760
16761
16762
16763
16764
16765
16766
16767
16768
16769
16770
16771
16772
16773
16774
16775
16776
16777
16778
16779
16780
16781
16782
16783
16784
16785
16786
16787
16788
16789
16790
16791
16792
16793
16794
16795
16796
16797
16798
16799
16800
16801
16802
16803
16804
16805
16806
16807
16808
16809
16810
16811
16812
16813
16814
16815
16816
16817
16818
16819
16820
16821
16822
16823
16824
16825
16826
16827
16828
16829
16830
16831
16832
16833
16834
16835
16836
16837
16838
16839
16840
16841
16842
16843
16844
16845
16846
16847
16848
16849
16850
16851
16852
16853
16854
16855
16856
16857
16858
16859
16860
16861
16862
16863
16864
16865
16866
16867
16868
16869
16870
16871
16872
16873
16874
16875
16876
16877
16878
16879
16880
16881
16882
16883
16884
16885
16886
16887
16888
16889
16890
16891
16892
16893
16894
16895
16896
16897
16898
16899
16900
16901
16902
16903
16904
16905
16906
16907
16908
16909
16910
16911
16912
16913
16914
16915
16916
16917
16918
16919
16920
16921
16922
16923
16924
16925
16926
16927
16928
16929
16930
16931
16932
16933
16934
16935
16936
16937
16938
16939
16940
16941
16942
16943
16944
16945
16946
16947
16948
16949
16950
16951
16952
16953
16954
16955
16956
16957
16958
16959
16960
16961
16962
16963
16964
16965
16966
16967
16968
16969
16970
16971
16972
16973
16974
16975
16976
16977
16978
16979
16980
16981
16982
16983
16984
16985
16986
16987
16988
16989
16990
16991
16992
16993
16994
16995
16996
16997
16998
16999
17000
17001
17002
17003
17004
17005
17006
17007
17008
17009
17010
17011
17012
17013
17014
17015
17016
17017
17018
17019
17020
17021
17022
17023
17024
17025
17026
17027
17028
17029
17030
17031
17032
17033
17034
17035
17036
17037
17038
17039
17040
17041
17042
17043
17044
17045
17046
17047
17048
17049
17050
17051
17052
17053
17054
17055
17056
17057
17058
17059
17060
17061
17062
17063
17064
17065
17066
17067
17068
17069
17070
17071
17072
17073
17074
17075
17076
17077
17078
17079
17080
17081
17082
17083
17084
17085
17086
17087
17088
17089
17090
17091
17092
17093
17094
17095
17096
17097
17098
17099
17100
17101
17102
17103
17104
17105
17106
17107
17108
17109
17110
17111
17112
17113
17114
17115
17116
17117
17118
17119
17120
17121
17122
17123
17124
17125
17126
17127
17128
17129
17130
17131
17132
17133
17134
17135
17136
17137
17138
17139
17140
17141
17142
17143
17144
17145
17146
17147
17148
17149
17150
17151
17152
17153
17154
17155
17156
17157
17158
17159
17160
17161
17162
17163
17164
17165
17166
17167
17168
17169
17170
17171
17172
17173
17174
17175
17176
17177
17178
17179
17180
17181
17182
17183
17184
17185
17186
17187
17188
17189
17190
17191
17192
17193
17194
17195
17196
17197
17198
17199
17200
17201
17202
17203
17204
17205
17206
17207
17208
17209
17210
17211
17212
17213
17214
17215
17216
17217
17218
17219
17220
17221
17222
17223
17224
17225
17226
17227
17228
17229
17230
17231
17232
17233
17234
17235
17236
17237
17238
17239
17240
17241
17242
17243
17244
17245
17246
17247
17248
17249
17250
17251
17252
17253
17254
17255
17256
17257
17258
17259
17260
17261
17262
17263
17264
17265
17266
17267
17268
17269
17270
17271
17272
17273
17274
17275
17276
17277
17278
17279
17280
17281
17282
17283
17284
17285
17286
17287
17288
17289
17290
17291
17292
17293
17294
17295
17296
17297
17298
17299
17300
17301
17302
17303
17304
17305
17306
17307
17308
17309
17310
17311
17312
17313
17314
17315
17316
17317
17318
17319
17320
17321
17322
17323
17324
17325
17326
17327
17328
17329
17330
17331
17332
17333
17334
17335
17336
17337
17338
17339
17340
17341
17342
17343
17344
17345
17346
17347
17348
17349
17350
17351
17352
17353
17354
17355
17356
17357
17358
17359
17360
17361
17362
17363
17364
17365
17366
17367
17368
17369
17370
17371
17372
17373
17374
17375
17376
17377
17378
17379
17380
17381
17382
17383
17384
17385
17386
17387
17388
17389
17390
17391
17392
17393
17394
17395
17396
17397
17398
17399
17400
17401
17402
17403
17404
17405
17406
17407
17408
17409
17410
17411
17412
17413
17414
17415
17416
17417
17418
17419
17420
17421
17422
17423
17424
17425
17426
17427
17428
17429
17430
17431
17432
17433
17434
17435
17436
17437
17438
17439
17440
17441
17442
17443
17444
17445
17446
17447
17448
17449
17450
17451
17452
17453
17454
17455
17456
17457
17458
17459
17460
17461
17462
17463
17464
17465
17466
17467
17468
17469
17470
17471
17472
17473
17474
17475
17476
17477
17478
17479
17480
17481
17482
17483
17484
17485
17486
17487
17488
17489
17490
17491
17492
17493
17494
17495
17496
17497
17498
17499
17500
17501
17502
17503
17504
17505
17506
17507
17508
17509
17510
17511
17512
17513
17514
17515
17516
17517
17518
17519
17520
17521
17522
17523
17524
17525
17526
17527
17528
17529
17530
17531
17532
17533
17534
17535
17536
17537
17538
17539
17540
17541
17542
17543
17544
17545
17546
17547
17548
17549
17550
17551
17552
17553
17554
17555
17556
17557
17558
17559
17560
17561
17562
17563
17564
17565
17566
17567
17568
17569
17570
17571
17572
17573
17574
17575
17576
17577
17578
17579
17580
17581
17582
17583
17584
17585
17586
17587
17588
17589
17590
17591
17592
17593
17594
17595
17596
17597
17598
17599
17600
17601
17602
17603
17604
17605
17606
17607
17608
17609
17610
17611
17612
17613
17614
17615
17616
17617
17618
17619
17620
17621
17622
17623
17624
17625
17626
17627
17628
17629
17630
17631
17632
17633
17634
17635
17636
17637
17638
17639
17640
17641
17642
17643
17644
17645
17646
17647
17648
17649
17650
17651
17652
17653
17654
17655
17656
17657
17658
17659
17660
17661
17662
17663
17664
17665
17666
17667
17668
17669
17670
17671
17672
17673
17674
17675
17676
17677
17678
17679
17680
17681
17682
17683
17684
17685
17686
17687
17688
17689
17690
17691
17692
17693
17694
17695
17696
17697
17698
17699
17700
17701
17702
17703
17704
17705
17706
17707
17708
17709
17710
17711
17712
17713
17714
17715
17716
17717
17718
17719
17720
17721
17722
17723
17724
17725
17726
17727
17728
17729
17730
17731
17732
17733
17734
17735
17736
17737
17738
17739
17740
17741
17742
17743
17744
17745
17746
17747
17748
17749
17750
17751
17752
17753
17754
17755
17756
17757
17758
17759
17760
17761
17762
17763
17764
17765
17766
17767
17768
17769
17770
17771
17772
17773
17774
17775
17776
17777
17778
17779
17780
17781
17782
17783
17784
17785
17786
17787
17788
17789
17790
17791
17792
17793
17794
17795
17796
17797
17798
17799
17800
17801
17802
17803
17804
17805
17806
17807
17808
17809
17810
17811
17812
17813
17814
17815
17816
17817
17818
17819
17820
17821
17822
17823
17824
17825
17826
17827
17828
17829
17830
17831
17832
17833
17834
17835
17836
17837
17838
17839
17840
17841
17842
17843
17844
17845
17846
17847
17848
17849
17850
17851
17852
17853
17854
17855
17856
17857
17858
17859
17860
17861
17862
17863
17864
17865
17866
17867
17868
17869
17870
17871
17872
17873
17874
17875
17876
17877
17878
17879
17880
17881
17882
17883
17884
17885
17886
17887
17888
17889
17890
17891
17892
17893
17894
17895
17896
17897
17898
17899
17900
17901
17902
17903
17904
17905
17906
17907
17908
17909
17910
17911
17912
17913
17914
17915
17916
17917
17918
17919
17920
17921
17922
17923
17924
17925
17926
17927
17928
17929
17930
17931
17932
17933
17934
17935
17936
17937
17938
17939
17940
17941
17942
17943
17944
17945
17946
17947
17948
17949
17950
17951
17952
17953
17954
17955
17956
17957
17958
17959
17960
17961
17962
17963
17964
17965
17966
17967
17968
17969
17970
17971
17972
17973
17974
17975
17976
17977
17978
17979
17980
17981
17982
17983
17984
17985
17986
17987
17988
17989
17990
17991
17992
17993
17994
17995
17996
17997
17998
17999
18000
18001
18002
18003
18004
18005
18006
18007
18008
18009
18010
18011
18012
18013
18014
18015
18016
18017
18018
18019
18020
18021
18022
18023
18024
18025
18026
18027
18028
18029
18030
18031
18032
18033
18034
18035
18036
18037
18038
18039
18040
18041
18042
18043
18044
18045
18046
18047
18048
18049
18050
18051
18052
18053
18054
18055
18056
18057
18058
18059
18060
18061
18062
18063
18064
18065
18066
18067
18068
18069
18070
18071
18072
18073
18074
18075
18076
18077
18078
18079
18080
18081
18082
18083
18084
18085
18086
18087
18088
18089
18090
18091
18092
18093
18094
18095
18096
18097
18098
18099
18100
18101
18102
18103
18104
18105
18106
18107
18108
18109
18110
18111
18112
18113
18114
18115
18116
18117
18118
18119
18120
18121
18122
18123
18124
18125
18126
18127
18128
18129
18130
18131
18132
18133
18134
18135
18136
18137
18138
18139
18140
18141
18142
18143
18144
18145
18146
18147
18148
18149
18150
18151
18152
18153
18154
18155
18156
18157
18158
18159
18160
18161
18162
18163
18164
18165
18166
18167
18168
18169
18170
18171
18172
18173
18174
18175
18176
18177
18178
18179
18180
18181
18182
18183
18184
18185
18186
18187
18188
18189
18190
18191
18192
18193
18194
18195
18196
18197
18198
18199
18200
18201
18202
18203
18204
18205
18206
18207
18208
18209
18210
18211
18212
18213
18214
18215
18216
18217
18218
18219
18220
18221
18222
18223
18224
18225
18226
18227
18228
18229
18230
18231
18232
18233
18234
18235
18236
18237
18238
18239
18240
18241
18242
18243
18244
18245
18246
18247
18248
18249
18250
18251
18252
18253
18254
18255
18256
18257
18258
18259
18260
18261
18262
18263
18264
18265
18266
18267
18268
18269
18270
18271
18272
18273
18274
18275
18276
18277
18278
18279
18280
18281
18282
18283
18284
18285
18286
18287
18288
18289
18290
18291
18292
18293
18294
18295
18296
18297
18298
18299
18300
18301
18302
18303
18304
18305
18306
18307
18308
18309
18310
18311
18312
18313
18314
18315
18316
18317
18318
18319
18320
18321
18322
18323
18324
18325
18326
18327
18328
18329
18330
18331
18332
18333
18334
18335
18336
18337
18338
18339
18340
18341
18342
18343
18344
18345
18346
18347
18348
18349
18350
18351
18352
18353
18354
18355
18356
18357
18358
18359
18360
18361
18362
18363
18364
18365
18366
18367
18368
18369
18370
18371
18372
18373
18374
18375
18376
18377
18378
18379
18380
18381
18382
18383
18384
18385
18386
18387
18388
18389
18390
18391
18392
18393
18394
18395
18396
18397
18398
18399
18400
18401
18402
18403
18404
18405
18406
18407
18408
18409
18410
18411
18412
18413
18414
18415
18416
18417
18418
18419
18420
18421
18422
18423
18424
18425
18426
18427
18428
18429
18430
18431
18432
18433
18434
18435
18436
18437
18438
18439
18440
18441
18442
18443
18444
18445
18446
18447
18448
18449
18450
18451
18452
18453
18454
18455
18456
18457
18458
18459
18460
18461
18462
18463
18464
18465
18466
18467
18468
18469
18470
18471
18472
18473
18474
18475
18476
18477
18478
18479
18480
18481
18482
18483
18484
18485
18486
18487
18488
18489
18490
18491
18492
18493
18494
18495
18496
18497
18498
18499
18500
18501
18502
18503
18504
18505
18506
18507
18508
18509
18510
18511
18512
18513
18514
18515
18516
18517
18518
18519
18520
18521
18522
18523
18524
18525
18526
18527
18528
18529
18530
18531
18532
18533
18534
18535
18536
18537
18538
18539
18540
18541
18542
18543
18544
18545
18546
18547
18548
18549
18550
18551
18552
18553
18554
18555
18556
18557
18558
18559
18560
18561
18562
18563
18564
18565
18566
18567
18568
18569
18570
18571
18572
18573
18574
18575
18576
18577
18578
18579
18580
18581
18582
18583
18584
18585
18586
18587
18588
18589
18590
18591
18592
18593
18594
18595
18596
18597
18598
18599
18600
18601
18602
18603
18604
18605
18606
18607
18608
18609
18610
18611
18612
18613
18614
18615
18616
18617
18618
18619
18620
18621
18622
18623
18624
18625
18626
18627
18628
18629
18630
18631
18632
18633
18634
18635
18636
18637
18638
18639
18640
18641
18642
18643
18644
18645
18646
18647
18648
18649
18650
18651
18652
18653
18654
18655
18656
18657
18658
18659
18660
18661
18662
18663
18664
18665
18666
18667
18668
18669
18670
18671
18672
18673
18674
18675
18676
18677
18678
18679
18680
18681
18682
18683
18684
18685
18686
18687
18688
18689
18690
18691
18692
18693
18694
18695
18696
18697
18698
18699
18700
18701
18702
18703
18704
18705
18706
18707
18708
18709
18710
18711
18712
18713
18714
18715
18716
18717
18718
18719
18720
18721
18722
18723
18724
18725
18726
18727
18728
18729
18730
18731
18732
18733
18734
18735
18736
18737
18738
18739
18740
18741
18742
18743
18744
18745
18746
18747
18748
18749
18750
18751
18752
18753
18754
18755
18756
18757
18758
18759
18760
18761
18762
18763
18764
18765
18766
18767
18768
18769
18770
18771
18772
18773
18774
18775
18776
18777
18778
18779
18780
18781
18782
18783
18784
18785
18786
18787
18788
18789
18790
18791
18792
18793
18794
18795
18796
18797
18798
18799
18800
18801
18802
18803
18804
18805
18806
18807
18808
18809
18810
18811
18812
18813
18814
18815
18816
18817
18818
18819
18820
18821
18822
18823
18824
18825
18826
18827
18828
18829
18830
18831
18832
18833
18834
18835
18836
18837
18838
18839
18840
18841
18842
18843
18844
18845
18846
18847
18848
18849
18850
18851
18852
18853
18854
18855
18856
18857
18858
18859
18860
18861
18862
18863
18864
18865
18866
18867
18868
18869
18870
18871
18872
18873
18874
18875
18876
18877
18878
18879
18880
18881
18882
18883
18884
18885
18886
18887
18888
18889
18890
18891
18892
18893
18894
18895
18896
18897
18898
18899
18900
18901
18902
18903
18904
18905
18906
18907
18908
18909
18910
18911
18912
18913
18914
18915
18916
18917
18918
18919
18920
18921
18922
18923
18924
18925
18926
18927
18928
18929
18930
18931
18932
18933
18934
18935
18936
18937
18938
18939
18940
18941
18942
18943
18944
18945
18946
18947
18948
18949
18950
18951
18952
18953
18954
18955
18956
18957
18958
18959
18960
18961
18962
18963
18964
18965
18966
18967
18968
18969
18970
18971
18972
18973
18974
18975
18976
18977
18978
18979
18980
18981
18982
18983
18984
18985
18986
18987
18988
18989
18990
18991
18992
18993
18994
18995
18996
18997
18998
18999
19000
19001
19002
19003
19004
19005
19006
19007
19008
19009
19010
19011
19012
19013
19014
19015
19016
19017
19018
19019
19020
19021
19022
19023
19024
19025
19026
19027
19028
19029
19030
19031
19032
19033
19034
19035
19036
19037
19038
19039
19040
19041
19042
19043
19044
19045
19046
19047
19048
19049
19050
19051
19052
19053
19054
19055
19056
19057
19058
19059
19060
19061
19062
19063
19064
19065
19066
19067
19068
19069
19070
19071
19072
19073
19074
19075
19076
19077
19078
19079
19080
19081
19082
19083
19084
19085
19086
19087
19088
19089
19090
19091
19092
19093
19094
19095
19096
19097
19098
19099
19100
19101
19102
19103
19104
19105
19106
19107
19108
19109
19110
19111
19112
19113
19114
19115
19116
19117
19118
19119
19120
19121
19122
19123
19124
19125
19126
19127
19128
19129
19130
19131
19132
19133
19134
19135
19136
19137
19138
19139
19140
19141
19142
19143
19144
19145
19146
19147
19148
19149
19150
19151
19152
19153
19154
19155
19156
19157
19158
19159
19160
19161
19162
19163
19164
19165
19166
19167
19168
19169
19170
19171
19172
19173
19174
19175
19176
19177
19178
19179
19180
19181
19182
19183
19184
19185
19186
19187
19188
19189
19190
19191
19192
19193
19194
19195
19196
19197
19198
19199
19200
19201
19202
19203
19204
19205
19206
19207
19208
19209
19210
19211
19212
19213
19214
19215
19216
19217
19218
19219
19220
19221
19222
19223
19224
19225
19226
19227
19228
19229
19230
19231
19232
19233
19234
19235
19236
19237
19238
19239
19240
19241
19242
19243
19244
19245
19246
19247
19248
19249
19250
19251
19252
19253
19254
19255
19256
19257
19258
19259
19260
19261
19262
19263
19264
19265
19266
19267
19268
19269
19270
19271
19272
19273
19274
19275
19276
19277
19278
19279
19280
19281
19282
19283
19284
19285
19286
19287
19288
19289
19290
19291
19292
19293
19294
19295
19296
19297
19298
19299
19300
19301
19302
19303
19304
19305
19306
19307
19308
19309
19310
19311
19312
19313
19314
19315
19316
19317
19318
19319
19320
19321
19322
19323
19324
19325
19326
19327
19328
19329
19330
19331
19332
19333
19334
19335
19336
19337
19338
19339
19340
19341
19342
19343
19344
19345
19346
19347
19348
19349
19350
19351
19352
19353
19354
19355
19356
19357
19358
19359
19360
19361
19362
19363
19364
19365
19366
19367
19368
19369
19370
19371
19372
19373
19374
19375
19376
19377
19378
19379
19380
19381
19382
19383
19384
19385
19386
19387
19388
19389
19390
19391
19392
19393
19394
19395
19396
19397
19398
19399
19400
19401
19402
19403
19404
19405
19406
19407
19408
19409
19410
19411
19412
19413
19414
19415
19416
19417
19418
19419
19420
19421
19422
19423
19424
19425
19426
19427
19428
19429
19430
19431
19432
19433
19434
19435
19436
19437
19438
19439
19440
19441
19442
19443
19444
19445
19446
19447
19448
19449
19450
19451
19452
19453
19454
19455
19456
19457
19458
19459
19460
19461
19462
19463
19464
19465
19466
19467
19468
19469
19470
19471
19472
19473
19474
19475
19476
19477
19478
19479
19480
19481
19482
19483
19484
19485
19486
19487
19488
19489
19490
19491
19492
19493
19494
19495
19496
19497
19498
19499
19500
19501
19502
19503
19504
19505
19506
19507
19508
19509
19510
19511
19512
19513
19514
19515
19516
19517
19518
19519
19520
19521
19522
19523
19524
19525
19526
19527
19528
19529
19530
19531
19532
19533
19534
19535
19536
19537
19538
19539
19540
19541
19542
19543
19544
19545
19546
19547
19548
19549
19550
19551
19552
19553
19554
19555
19556
19557
19558
19559
19560
19561
19562
19563
19564
19565
19566
19567
19568
19569
19570
19571
19572
19573
19574
19575
19576
19577
19578
19579
19580
19581
19582
19583
19584
19585
19586
19587
19588
19589
19590
19591
19592
19593
19594
19595
19596
19597
19598
19599
19600
19601
19602
19603
19604
19605
19606
19607
19608
19609
19610
19611
19612
19613
19614
19615
19616
19617
19618
19619
19620
19621
19622
19623
19624
19625
19626
19627
19628
19629
19630
19631
19632
19633
19634
19635
19636
19637
19638
19639
19640
19641
19642
19643
19644
19645
19646
19647
19648
19649
19650
19651
19652
19653
19654
19655
19656
19657
19658
19659
19660
19661
19662
19663
19664
19665
19666
19667
19668
19669
19670
19671
19672
19673
19674
19675
19676
19677
19678
19679
19680
19681
19682
19683
19684
19685
19686
19687
19688
19689
19690
19691
19692
19693
19694
19695
19696
19697
19698
19699
19700
19701
19702
19703
19704
19705
19706
19707
19708
19709
19710
19711
19712
19713
19714
19715
19716
19717
19718
19719
19720
19721
19722
19723
19724
19725
19726
19727
19728
19729
19730
19731
19732
19733
19734
19735
19736
19737
19738
19739
19740
19741
19742
19743
19744
19745
19746
19747
19748
19749
19750
19751
19752
19753
19754
19755
19756
19757
19758
19759
19760
19761
19762
19763
19764
19765
19766
19767
19768
19769
19770
19771
19772
19773
19774
19775
19776
19777
19778
19779
19780
19781
19782
19783
19784
19785
19786
19787
19788
19789
19790
19791
19792
19793
19794
19795
19796
19797
19798
19799
19800
19801
19802
19803
19804
19805
19806
19807
19808
19809
19810
19811
19812
19813
19814
19815
19816
19817
19818
19819
19820
19821
19822
19823
19824
19825
19826
19827
19828
19829
19830
19831
19832
19833
19834
19835
19836
19837
19838
19839
19840
19841
19842
19843
19844
19845
19846
19847
19848
19849
19850
19851
19852
19853
19854
19855
19856
19857
19858
19859
19860
19861
19862
19863
19864
19865
19866
19867
19868
19869
19870
19871
19872
19873
19874
19875
19876
19877
19878
19879
19880
19881
19882
19883
19884
19885
19886
19887
19888
19889
19890
19891
19892
19893
19894
19895
19896
19897
19898
19899
19900
19901
19902
19903
19904
19905
19906
19907
19908
19909
19910
19911
19912
19913
19914
19915
19916
19917
19918
19919
19920
19921
19922
19923
19924
19925
19926
19927
19928
19929
19930
19931
19932
19933
19934
19935
19936
19937
19938
19939
19940
19941
19942
19943
19944
19945
19946
19947
19948
19949
19950
19951
19952
19953
19954
19955
19956
19957
19958
19959
19960
19961
19962
19963
19964
19965
19966
19967
19968
19969
19970
19971
19972
19973
19974
19975
19976
19977
19978
19979
19980
19981
19982
19983
19984
19985
19986
19987
19988
19989
19990
19991
19992
19993
19994
19995
19996
19997
19998
19999
20000
20001
20002
20003
20004
20005
20006
20007
20008
20009
20010
20011
20012
20013
20014
20015
20016
20017
20018
20019
20020
20021
20022
20023
20024
20025
20026
20027
20028
20029
20030
20031
20032
20033
20034
20035
20036
20037
20038
20039
20040
20041
20042
20043
20044
20045
20046
20047
20048
20049
20050
20051
20052
20053
20054
20055
20056
20057
20058
20059
20060
20061
20062
20063
20064
20065
20066
20067
20068
20069
20070
20071
20072
20073
20074
20075
20076
20077
20078
20079
20080
20081
20082
20083
20084
20085
20086
20087
20088
20089
20090
20091
20092
20093
20094
20095
20096
20097
20098
20099
20100
20101
20102
20103
20104
20105
20106
20107
20108
20109
20110
20111
20112
20113
20114
20115
20116
20117
20118
20119
20120
20121
20122
20123
20124
20125
20126
20127
20128
20129
20130
20131
20132
20133
20134
20135
20136
20137
20138
20139
20140
20141
20142
20143
20144
20145
20146
20147
20148
20149
20150
20151
20152
20153
20154
20155
20156
20157
20158
20159
20160
20161
20162
20163
20164
20165
20166
20167
20168
20169
20170
20171
20172
20173
20174
20175
20176
20177
20178
20179
20180
20181
20182
20183
20184
20185
20186
20187
20188
20189
20190
20191
20192
20193
20194
20195
20196
20197
20198
20199
20200
20201
20202
20203
20204
20205
20206
20207
20208
20209
20210
20211
20212
20213
20214
20215
20216
20217
20218
20219
20220
20221
20222
20223
20224
20225
20226
20227
20228
20229
20230
20231
20232
20233
20234
20235
20236
20237
20238
20239
20240
20241
20242
20243
20244
20245
20246
20247
20248
20249
20250
20251
20252
20253
20254
20255
20256
20257
20258
20259
20260
20261
20262
20263
20264
20265
20266
20267
20268
20269
20270
20271
20272
20273
20274
20275
20276
20277
20278
20279
20280
20281
20282
20283
20284
20285
20286
20287
20288
20289
20290
20291
20292
20293
20294
20295
20296
20297
20298
20299
20300
20301
20302
20303
20304
20305
20306
20307
20308
20309
20310
20311
20312
20313
20314
20315
20316
20317
20318
20319
20320
20321
20322
20323
20324
20325
20326
20327
20328
20329
20330
20331
20332
20333
20334
20335
20336
20337
20338
20339
20340
20341
20342
20343
20344
20345
20346
20347
20348
20349
20350
20351
20352
20353
20354
20355
20356
20357
20358
20359
20360
20361
20362
20363
20364
20365
20366
20367
20368
20369
20370
20371
20372
20373
20374
20375
20376
20377
20378
20379
20380
20381
20382
20383
20384
20385
20386
20387
20388
20389
20390
20391
20392
20393
20394
20395
20396
20397
20398
20399
20400
20401
20402
20403
20404
20405
20406
20407
20408
20409
20410
20411
20412
20413
20414
20415
20416
20417
20418
20419
20420
20421
20422
20423
20424
20425
20426
20427
20428
20429
20430
20431
20432
20433
20434
20435
20436
20437
20438
20439
20440
20441
20442
20443
20444
20445
20446
20447
20448
20449
20450
20451
20452
20453
20454
20455
20456
20457
20458
20459
20460
20461
20462
20463
20464
20465
20466
20467
20468
20469
20470
20471
20472
20473
20474
20475
20476
20477
20478
20479
20480
20481
20482
20483
20484
20485
20486
20487
20488
20489
20490
20491
20492
20493
20494
20495
20496
20497
20498
20499
20500
20501
20502
20503
20504
20505
20506
20507
20508
20509
20510
20511
20512
20513
20514
20515
20516
20517
20518
20519
20520
20521
20522
20523
20524
20525
20526
20527
20528
20529
20530
20531
20532
20533
20534
20535
20536
20537
20538
20539
20540
20541
20542
20543
20544
20545
20546
20547
20548
20549
20550
20551
20552
20553
20554
20555
20556
20557
20558
20559
20560
20561
20562
20563
20564
20565
20566
20567
20568
20569
20570
20571
20572
20573
20574
20575
20576
20577
20578
20579
20580
20581
20582
20583
20584
20585
20586
20587
20588
20589
20590
20591
20592
20593
20594
20595
20596
20597
20598
20599
20600
20601
20602
20603
20604
20605
20606
20607
20608
20609
20610
20611
20612
20613
20614
20615
20616
20617
20618
20619
20620
20621
20622
20623
20624
20625
20626
20627
20628
20629
20630
20631
20632
20633
20634
20635
20636
20637
20638
20639
20640
20641
20642
20643
20644
20645
20646
20647
20648
20649
20650
20651
20652
20653
20654
20655
20656
20657
20658
20659
20660
20661
20662
20663
20664
20665
20666
20667
20668
20669
20670
20671
20672
20673
20674
20675
20676
20677
20678
20679
20680
20681
20682
20683
20684
20685
20686
20687
20688
20689
20690
20691
20692
20693
20694
20695
20696
20697
20698
20699
20700
20701
20702
20703
20704
20705
20706
20707
20708
20709
20710
20711
20712
20713
20714
20715
20716
20717
20718
20719
20720
20721
20722
20723
20724
20725
20726
20727
20728
20729
20730
20731
20732
20733
20734
20735
20736
20737
20738
20739
20740
20741
20742
20743
20744
20745
20746
20747
20748
20749
20750
20751
20752
20753
20754
20755
20756
20757
20758
20759
20760
20761
20762
20763
20764
20765
20766
20767
20768
20769
20770
20771
20772
20773
20774
20775
20776
20777
20778
20779
20780
20781
20782
20783
20784
20785
20786
20787
20788
20789
20790
20791
20792
20793
20794
20795
20796
20797
20798
20799
20800
20801
20802
20803
20804
20805
20806
20807
20808
20809
20810
20811
20812
20813
20814
20815
20816
20817
20818
20819
20820
20821
20822
20823
20824
20825
20826
20827
20828
20829
20830
20831
20832
20833
20834
20835
20836
20837
20838
20839
20840
20841
20842
20843
20844
20845
20846
20847
20848
20849
20850
20851
20852
20853
20854
20855
20856
20857
20858
20859
20860
20861
20862
20863
20864
20865
20866
20867
20868
20869
20870
20871
20872
20873
20874
20875
20876
20877
20878
20879
20880
20881
20882
20883
20884
20885
20886
20887
20888
20889
20890
20891
20892
20893
20894
20895
20896
20897
20898
20899
20900
20901
20902
20903
20904
20905
20906
20907
20908
20909
20910
20911
20912
20913
20914
20915
20916
20917
20918
20919
20920
20921
20922
20923
20924
20925
20926
20927
20928
20929
20930
20931
20932
20933
20934
20935
20936
20937
20938
20939
20940
20941
20942
20943
20944
20945
20946
20947
20948
20949
20950
20951
20952
20953
20954
20955
20956
20957
20958
20959
20960
20961
20962
20963
20964
20965
20966
20967
20968
20969
20970
20971
20972
20973
20974
20975
20976
20977
20978
20979
20980
20981
20982
20983
20984
20985
20986
20987
20988
20989
20990
20991
20992
20993
20994
20995
20996
20997
20998
20999
21000
21001
21002
21003
21004
21005
21006
21007
21008
21009
21010
21011
21012
21013
21014
21015
21016
21017
21018
21019
21020
21021
21022
21023
21024
21025
21026
21027
21028
21029
21030
21031
21032
21033
21034
21035
21036
21037
21038
21039
21040
21041
21042
21043
21044
21045
21046
21047
21048
21049
21050
21051
21052
21053
21054
21055
21056
21057
21058
21059
21060
21061
21062
21063
21064
21065
21066
21067
21068
21069
21070
21071
21072
21073
21074
21075
21076
21077
21078
21079
21080
21081
21082
21083
21084
21085
21086
21087
21088
21089
21090
21091
21092
21093
21094
21095
21096
21097
21098
21099
21100
21101
21102
21103
21104
21105
21106
21107
21108
21109
21110
21111
21112
21113
21114
21115
21116
21117
21118
21119
21120
21121
21122
21123
21124
21125
21126
21127
21128
21129
21130
21131
21132
21133
21134
21135
21136
21137
21138
21139
21140
21141
21142
21143
21144
21145
21146
21147
21148
21149
21150
21151
21152
21153
21154
21155
21156
21157
21158
21159
21160
21161
21162
21163
21164
21165
21166
21167
21168
21169
21170
21171
21172
21173
21174
21175
21176
21177
21178
21179
21180
21181
21182
21183
21184
21185
21186
21187
21188
21189
21190
21191
21192
21193
21194
21195
21196
21197
21198
21199
21200
21201
21202
21203
21204
21205
21206
21207
21208
21209
21210
21211
21212
21213
21214
21215
21216
21217
21218
21219
21220
21221
21222
21223
21224
21225
21226
21227
21228
21229
21230
21231
21232
21233
21234
21235
21236
21237
21238
21239
21240
21241
21242
21243
21244
21245
21246
21247
21248
21249
21250
21251
21252
21253
21254
21255
21256
21257
21258
21259
21260
21261
21262
21263
21264
21265
21266
21267
21268
21269
21270
21271
21272
21273
21274
21275
21276
21277
21278
21279
21280
21281
21282
21283
21284
21285
21286
21287
21288
21289
21290
21291
21292
21293
21294
21295
21296
21297
21298
21299
21300
21301
21302
21303
21304
21305
21306
21307
21308
21309
21310
21311
21312
21313
21314
21315
21316
21317
21318
21319
21320
21321
21322
21323
21324
21325
21326
21327
21328
21329
21330
21331
21332
21333
21334
21335
21336
21337
21338
21339
21340
21341
21342
21343
21344
21345
21346
21347
21348
21349
21350
21351
21352
21353
21354
21355
21356
21357
21358
21359
21360
21361
21362
21363
21364
21365
21366
21367
21368
21369
21370
21371
21372
21373
21374
21375
21376
21377
21378
21379
21380
21381
21382
21383
21384
21385
21386
21387
21388
21389
21390
21391
21392
21393
21394
21395
21396
21397
21398
21399
21400
21401
21402
21403
21404
21405
21406
21407
21408
21409
21410
21411
21412
21413
21414
21415
21416
21417
21418
21419
21420
21421
21422
21423
21424
21425
21426
21427
21428
21429
21430
21431
21432
21433
21434
21435
21436
21437
21438
21439
21440
21441
21442
21443
21444
21445
21446
21447
21448
21449
21450
21451
21452
21453
21454
21455
21456
21457
21458
21459
21460
21461
21462
21463
21464
21465
21466
21467
21468
21469
21470
21471
21472
21473
21474
21475
21476
21477
21478
21479
21480
21481
21482
21483
21484
21485
21486
21487
21488
21489
21490
21491
21492
21493
21494
21495
21496
21497
21498
21499
21500
21501
21502
21503
21504
21505
21506
21507
21508
21509
21510
21511
21512
21513
21514
21515
21516
21517
21518
21519
21520
21521
21522
21523
21524
21525
21526
21527
21528
21529
21530
21531
21532
21533
21534
21535
21536
21537
21538
21539
21540
21541
21542
21543
21544
21545
21546
21547
21548
21549
21550
21551
21552
21553
21554
21555
21556
21557
21558
21559
21560
21561
21562
21563
21564
21565
21566
21567
21568
21569
21570
21571
21572
21573
21574
21575
21576
21577
21578
21579
21580
21581
21582
21583
21584
21585
21586
21587
21588
21589
21590
21591
21592
21593
21594
21595
21596
21597
21598
21599
21600
21601
21602
21603
21604
21605
21606
21607
21608
21609
21610
21611
21612
21613
21614
21615
21616
21617
21618
21619
21620
21621
21622
21623
21624
21625
21626
21627
21628
21629
21630
21631
21632
21633
21634
21635
21636
21637
21638
21639
21640
21641
21642
21643
21644
21645
21646
21647
21648
21649
21650
21651
21652
21653
21654
21655
21656
21657
21658
21659
21660
21661
21662
21663
21664
21665
21666
21667
21668
21669
21670
21671
21672
21673
21674
21675
21676
21677
21678
21679
21680
21681
21682
21683
21684
21685
21686
21687
21688
21689
21690
21691
21692
21693
21694
21695
21696
21697
21698
21699
21700
21701
21702
21703
21704
21705
21706
21707
21708
21709
21710
21711
21712
21713
21714
21715
21716
21717
21718
21719
21720
21721
21722
21723
21724
21725
21726
21727
21728
21729
21730
21731
21732
21733
21734
21735
21736
21737
21738
21739
21740
21741
21742
21743
21744
21745
21746
21747
21748
21749
21750
21751
21752
21753
21754
21755
21756
21757
21758
21759
21760
21761
21762
21763
21764
21765
21766
21767
21768
21769
21770
21771
21772
21773
21774
21775
21776
21777
21778
21779
21780
21781
21782
21783
21784
21785
21786
21787
21788
21789
21790
21791
21792
21793
21794
21795
21796
21797
21798
21799
21800
21801
21802
21803
21804
21805
21806
21807
21808
21809
21810
21811
21812
21813
21814
21815
21816
21817
21818
21819
21820
21821
21822
21823
21824
21825
21826
21827
21828
21829
21830
21831
21832
21833
21834
21835
21836
21837
21838
21839
21840
21841
21842
21843
21844
21845
21846
21847
21848
21849
21850
21851
21852
21853
21854
21855
21856
21857
21858
21859
21860
21861
21862
21863
21864
21865
21866
21867
21868
21869
21870
21871
21872
21873
21874
21875
21876
21877
21878
21879
21880
21881
21882
21883
21884
21885
21886
21887
21888
21889
21890
21891
21892
21893
21894
21895
21896
21897
21898
21899
21900
21901
21902
21903
21904
21905
21906
21907
21908
21909
21910
21911
21912
21913
21914
21915
21916
21917
21918
21919
21920
21921
21922
21923
21924
21925
21926
21927
21928
21929
21930
21931
21932
21933
21934
21935
21936
21937
21938
21939
21940
21941
21942
21943
21944
21945
21946
21947
21948
21949
21950
21951
21952
21953
21954
21955
21956
21957
21958
21959
21960
21961
21962
21963
21964
21965
21966
21967
21968
21969
21970
21971
21972
21973
21974
21975
21976
21977
21978
21979
21980
21981
21982
21983
21984
21985
21986
21987
21988
21989
21990
21991
21992
21993
21994
21995
21996
21997
21998
21999
22000
22001
22002
22003
22004
22005
22006
22007
22008
22009
22010
22011
22012
22013
22014
22015
22016
22017
22018
22019
22020
22021
22022
22023
22024
22025
22026
22027
22028
22029
22030
22031
22032
22033
22034
22035
22036
22037
22038
22039
22040
22041
22042
22043
22044
22045
22046
22047
22048
22049
22050
22051
22052
22053
22054
22055
22056
22057
22058
22059
22060
22061
22062
22063
22064
22065
22066
22067
22068
22069
22070
22071
22072
22073
22074
22075
22076
22077
22078
22079
22080
22081
22082
22083
22084
22085
22086
22087
22088
22089
22090
22091
22092
22093
22094
22095
22096
22097
22098
22099
22100
22101
22102
22103
22104
22105
22106
22107
22108
22109
22110
22111
22112
22113
22114
22115
22116
22117
22118
22119
22120
22121
22122
22123
22124
22125
22126
22127
22128
22129
22130
22131
22132
22133
22134
22135
22136
22137
22138
22139
22140
22141
22142
22143
22144
22145
22146
22147
22148
22149
22150
22151
22152
22153
22154
22155
22156
22157
22158
22159
22160
22161
22162
22163
22164
22165
22166
22167
22168
22169
22170
22171
22172
22173
22174
22175
22176
22177
22178
22179
22180
22181
22182
22183
22184
22185
22186
22187
22188
22189
22190
22191
22192
22193
22194
22195
22196
22197
22198
22199
22200
22201
22202
22203
22204
22205
22206
22207
22208
22209
22210
22211
22212
22213
22214
22215
22216
22217
22218
22219
22220
22221
22222
22223
22224
22225
22226
22227
22228
22229
22230
22231
22232
22233
22234
22235
22236
22237
22238
22239
22240
22241
22242
22243
22244
22245
22246
22247
22248
22249
22250
22251
22252
22253
22254
22255
22256
22257
22258
22259
22260
22261
22262
22263
22264
22265
22266
22267
22268
22269
22270
22271
22272
22273
22274
22275
22276
22277
22278
22279
22280
22281
22282
22283
22284
22285
22286
22287
22288
22289
22290
22291
22292
22293
22294
22295
22296
22297
22298
22299
22300
22301
22302
22303
22304
22305
22306
22307
22308
22309
22310
22311
22312
22313
22314
22315
22316
22317
22318
22319
In addition to the names listed below, the following people provided
useful inputs on many occasions: Paul D. Robertson, Simon J. Mudd.
Apologies for any names omitted.

19980105

	The compiled-in default value for resolve_smtp_sender was
	wrong (from the days that it was a boolean), causing smtpd
	to dump core when the variable was not set in main.cf.

	The INSTALL instructions now have separate sections for
	the three basic ways of running vmailer.

	The INSTALL instructions now have discusses how to deal
	with chrooted processes.

	Ported to RedHat 5.0. My, these people have re-organized
	their include files quite a bit, haven't they.

19980106

	On RedHat Linux 4.2/5.0, when a FIFO listener opens the
	FIFO with mode O_RDONLY, the FIFO remains forever readable
	after the writer has closed it.  Workaround: open the FIFO
	mode O_RDWR.

	Test program: util/fifo_rdonly_bug.c

	Unfortunately, the above fix triggers a bug on BSD/OS 3.1
	where opening the FIFO mode O_RDWR causes select() to claim
	that the FIFO is readable even before any data is written
	to it, causing read() to block or to fail.

	Test program:  util/fifo_rdwr_bug.c

	printfck (check arguments of printf-like function calls)
	found a missing argument in local/command.c

	Miscellaneous Makefile cleanups that I didn't finish before
	the first alpha release.

19980107

	Sometimes the DNS will claim that a domain does not exist,
	when in fact it does. Thus, it is a bad idea to reject mail
	from apparently non-existent domains. I have changed the
	smtpd so that it produces a soft error responses when a
	resolve_smtp_sender test fails with HOST_NOT_FOUND.  Note:
	by default, this test is still disabled.

	The DB and DBM read routines will now automagically figure
	out if (key, value) pairs were written including a terminating
	null byte or not. The DB and DBM write routines will use
	this result to determine how to write, and will fall back
	to per-system defaults otherwise.

	Renamed the README to MUSINGS, and wrote up a README that
	reflects the current status of the software.

	Added -d (don't disconnect) and -c (show running counter)
	option to te smtp-source test program. These tools are
	great torture tests for the mail software, and for the
	system that it runs on.

	Turned down the process_limit parameter (# of parallel smtp
	clients or servers) to avoid unpleasant surprises. You can
	crank up the process_limit parameter in main.cf.

19980111

	Feature: when run by the superuser, mailq now shows the
	mail queue even when the mail system is down. To this end,
	mailq (sendmail -bp) runs the showq program directly instead
	of connecting to the UNIX-domain service socket, and drops
	privileges etc.  as usual.

19980119

	Bugfix: Edwin Kremer spotted an oversight in the negated
	host matching code (for name or address patterns prefixed
	by !).

	Bugfix: upon receipt of a SIGHUP signal, the master now
	disconnects from its child processes, so that the current
	generation of child processes commits suicide, and so that
	the next generation of child processes will use the new
	configuration settings.

	Bugfix: the smtp server now skips the sender DNS domain
	lookup test for foo@[address]

	Bugfix: don't append the local domain to foo@[address]

19980120

	Bugfix: old low-priority bug in some list walk code that
	caused the master to drop core when a service was turned
	off in master.cf.

	Robustness: the mail system should be able to start up and
	to accept local postings even while the naming service is
	down.  For this reason, the mail system no longer uses
	gethostbyname() to look up its own machine name.  Sites
	that use short hostnames will have to specify their FQDN
	in main.cf (this will eventually be done by the system
	installation/configuration procedure). Should the config
	language support backticks so one can say `domainname`?
	What about $name stuff between the backtics?

	Security: the master now creates FIFOs and UNIX-domain
	sockets as the mail owner instead of as root, for better
	protection against subverted mail systems. chmod() is
	susceptible to race conditions. fchmod(), although safer,
	often does not work on sockets.

	Portability: anticipate that all major UNIXes will create
	UNIX-domain sockets with permissions modified by the process
	umask (required by POSIX). For this reason, we always
	chmod() UNIX-domain sockets, unless the system allows us
	to use the safer fchmod() instead.

	Portability: the semi-resident servers now properly handle
	EWOULDBLOCK returns from accept()  in addition to EGAIN
	(on some systems, EAGAIN and EWOULDBLOCK have different
	values).

	Bugfix: the semi-resident servers now properly handle EINTR
	returns From accept().

	Bugfix: Edwin Kremer found that mynetworks() would compute
	(32 - mask) instead of mask.

19980121

	Feature: /etc/vmailer/relocated is used by the local delivery
	program and specifies what mail should be bounced with a
	"user has moved to XXX" message. The main.cf configuration
	parameter is "relocated_maps".  Just like the "virtual_maps"
	config parameter, this feature is off by default, and the
	parameter can have values such as "files" or "files, nis"
	(on hosts equipped with NIS).

19980123

	Cleanup: virtual domain support moved from the queue manager
	to the resolve service, where it belongs.

	Feature: /etc/vmailer/canonical is used by the rewrite
	service for all addresses, and maps a canonical address
	(user@domain) to another address.  Typical use is to generate
	Firstname.Lastname@domain addresses, or to clean up dirty
	addresses from non-RFC 822 mail systems. The main.cf
	configuration parameter is "canonical_maps".  Just like
	the "virtual_maps" config parameter, this feature is off
	by default, and the parameter can have values such as
	"files" or "files, nis" (on hosts equipped with NIS).

19980124

	HPUX10 port and many little fixes from Pieter Schoenmakers.

	Bugfix: isolated an old mysterious bug that could make the
	master deaf for new connections while no child process was
	running.  A typical result was that no pickup daemon would
	be started after the previous one had terminated voluntarily.

	Bugfix: the NIS lookup code did not mystrdup() the NIS map
	name and would access free()d memory.

19980125

	Bugfix: the vstream routines would sometimes ignore flushing
	errors. The error would still be reported by vstream_fclose()
	and vstream_ferror().

	Feature: time limit on delivery to shell commands.  Config
	parameter: command_time_limit. Default value: 100 sec. The
	idea is to prevent one bad .forward file or alias file
	entry from slowly using up all local delivery process slots.

19980126

	Code cleanup: in preparation for SMTP extensions such as
	SIZE, allow an extended SMTP command to have a variable
	number of options.

19980127

	Bugfix: moved canonical map lookups away from the rewriting
	module to the cleanup service, so that canonical map lookups
	do not interfere with address rewriting on behalf of other
	programs. Back to an older trivial-rewrite program version.

	Bugfix: moved virtual map lookups away from the resolver
	back to the queue manager, so that virtual domain lookup
	does not interfere with address resolution on behalf of
	other programs. Back to an older qmgr program version.

19980131

	Feature: integrated and adapted Guido van Rooij's SIZE
	option (RFC 1870), carefully avoiding potential problems
	due to overflow (by multiplying large numbers) or unsigned
	underflow (by subtracting numbers).

	Code cleanup: cleaned up the code that parses the server
	response to the HELO/EHLO command, so that we can more
	reliably recognize what options a server supports.

19980201

	Portability: integrated the IRIX 6 port by Oved Ben-Aroya.

	Portability: the software now figures out by itself if a
	server should open its FIFO read-write or read-only, to
	avoid getting stuck with a FIFO that stays readable forever.

	Bugfix: the cleanup service would terminate with a fatal
	vstream_fseek() error when the queue file was too large.

	Bugfix: the cleanup service could be killed by a signal
	when the queue file became too large.

19980203

	Portability: some systems have statfs(), some have statvfs(),
	and the relevant include files are in a different place on
	almost every system.

	Portability: the makedefs script now nukes the -O compiler
	flag when building on AIX with IBM's own compiler...

19980204

	Portability: HP-UX 9.x support by Pieter Schoenmakers.

	Portability: added SYSV-style ulimit() file size limit
	support for HP-UX 9.x.

	Portability: added some #includes that appeared to be
	missing according to the Digital UNIX cc compiler.

	Bugfix: sys_defs.h now correctly specifies NIS support for
	LINUX2, HPUX9 and HPUX10.

	Security: fixed a file descriptor leak in the local delivery
	agent that could give shell commands access to the VMailer
	IPC streams. This should not cause a vulnerability, given
	the design and implementation of the mailer, but it would
	be like asking for trouble.

	Bugfix: the sendmail -B (body type) option did not take a
	value.

19980205

	Bugfix (SUNOS5): should not have deleted the SVID_GETTOD
	definition from util/sys_defs.h.

	Bugfix (HPUX9): forgot to specify whether to use statfs()
	or statvfs().

	Bugfix (HPUX9): don't try to raise the file size ulimit.

	Bugfix (HPUX9): must specify file size limit in 512-blocks.

19980207

	Robustness: the master process now raises the file size
	limit when it is started with a limit that is less than
	VMailer's file size limit.  File: util/file_limit.c.

	Security: the dns lookup routines now screen all result
	names with valid_hostname(). Bad names are treated as
	transient errors.

	Feature: qmail compatibility: when the home_mailbox parameter
	is set, mail is delivered to ~/$home_mailbox instead of to
	/var[/spool]/mail/username.  This hopefully makes it easier
	to lure people away from qmail :-)

	Robustness: several testers by accident configured relayhost
	the same as myhostname. The programs now explicitly check
	for this mistake.

	Bugfix: deliver_request_read() would free unallocated memory
	when it received an incomplete delivery request from the
	queue manager.

	Robustness: local_destination_concurrency=1 prevents parallel
	delivery to the same user (with possibly disastrous effects
	when that user has an expensive pipeline in the .forward
	or procmail config file).  Each transport can have its own
	XXX_destination_concurrency parameter, to limit the number
	of simultaneous deliveries to the same destination.

19980208

	Robustness: added "slow open" mode, to gradually increase
	the number of simultaneous connections to the same site as
	long as delivery succeeds, and to gradually decrease the
	number of connections while delivery fails. Brad Knowles
	provided the inspiration to do this.

	This also solves the "thundering herd" problem (making a
	bunch of connections to a dead host when it was time to
	retry that host). Let's see when other mailers fix this.

	Feature: Added $smtpd_banner and $mail_version, for those
	who want to show the world what software version they are
	running.

	Bugfix: vmailer-script now properly labels each syslog
	entry.

19980210

	Portability: merged in NEXTSTEP 3 port from Pieter Schoenmakers

	Bugfix: the local delivery program now checks that a
	destination is a regular file before locking it.

19980211

	Robustness: the local delivery agent sets HOME, LOGNAME,
	and SHELL when delivering to a user shell command. PATH is
	always set, and TZ is passed through if it is set.

19980212

	Feature: mailq (sendmail -bp) now also lists the maildrop
	queue (with mail that hasn't been picked up yet).

19980213

	Feature: the smtpd now says: 502 HELP not implemented. This
	should impress the heck out of the competition :-)

19980214

	Feature: local delivery to configurable system-wide command
	(e.g.  procmail) avoids the need for per-user ~/.forward
	shell commands. Config parameter: mailbox_command.

19980215

	Performance: avoid running a shell when a command contains
	no shell magic characters or built-in shell commands. This
	speeds up delivery to all commands. File: util/exec_command.c.

	Bugfix: the local delivery agent, after reading EOF from
	a child process, now sends SIGKILL only when the child does
	not terminate within a limited amount of time. This avoids
	some problems with procmail.  File:  util/timed_wait.c.

19980217

	Portability: folded in NetInfo support from Pieter
	Schoenmakers.

19980218

	Feature: new vmlock command to run a command while keeping
	an exclusive lock on a mailbox.

	Feature: with "recipient_delimiter = +", mail for local
	address "user+foo" is delivered to "foo", with a "Delivered-To:
	user+foo@domain" message header. Files: qmgr/qmgr_message.c,
	local/recipient.c. This must be the cheapest feature.

19980219

	Code cleanup: moved error handling into functions that
	should always succeed (non_blocking(), close_on_exec()).

19980223

	Bugfix: null pointer bug in the cleanup program after
	processing a From: header with no mail address (or with
	only a comment).

19980226

	Robustness: now detects when getpwnam() returns a name that
	differs from the requested name.

	Feature: Added %p support to the vbuf_print formatting
	module.

	Code cleanup: revamped the alias/include/.forward loop
	detection and duplicate suppression code in the local
	delivery agent. This must be the fourth iteration, and
	again the code has been simplified.

19980228

	Robustness: don't treat anything starting with whitespace
	as a header record. Instead, explicitly test for leading
	whitespace where we permit it. Files: global/is_header.c,
	bounce/bounce_flush_service.c, local/delivered.c.

19980301

	Compatibility: the sendmail program now accepts the -N
	command-line option (delivery status notification) but
	ignores it entirely, just like many other sendmail options.

	Bugfix: dns_lookup.c was too conservative with buffer sizes
	and would incorrectly report "malformed name server reply".

19980302

	Bugfix: the local delivery agent was not null-byte clean.

19980307

	Feature: integrated Pieter Schoenmaker's code for transport
	lookup tables that list (transport, nexthop) by destination.

19980309

	Bugfix: delivery agents no longer rename corrupt queue
	files, because programs might fall over each other doing
	so. Instead, when a delivery agent detects queue file
	corruption, it chmods the queue file, simulates a soft
	error, and lets the queue manager take care of the problem.

	Bugfix: the SMTP server implemented VRFY incorrectly.

	Feature: first shot at a pipe mailer, which can be used to
	extend VMailer with external mail transports such as UUCP
	(provided that the remote site understands domain addressing,
	because VMailer version 1 does not rewrite addresses).

	Cleanup: extended the master/child interface so that the
	service name (from master.cf) is passed on to the child.
	The pipe mailer needs the service name so it can look up
	service-specific configuration parameters (privilege level,
	recipient limit, time limit, and so on).

19980310-12

	Cleanup: factored out the pipe_command() code, so it can
	be shared between pipe mailer and local delivery agent.

19980314

	Compatibility: the sendmail program now parses each
	command-line recipient as if it were an RFC 822 message
	header; some MUAs specify comma-separated recipients in a
	command-line argument; and some MUAs even specify "word
	word <address>" forms as command-line arguments.

19980315

	Bugfix: VMailer's queue processing randomization wasn't
	adequate for unloaded systems with small backlogs.

	Bugfix: smtpd now uses double-buffered stream I/O to prevent
	loss of input sent ahead of responses.

19980316

	Bugfix: the smtpd anti-relay code didn't treat all hosts
	listed in $mydestinations as local, so it would accept mail
	only for hosts listed in $relay_domains (default: my own
	domain).

	Bugfix: smtpd now replies with 502 when given an unknown
	command.

19980318

	Cleanup: resolve/rewrite clients now automatically disconnect
	after a configurable amount of idle time (ipc_idle).

19980322

	Tolerance: VRFY now permits user@domain, even though the
	RFC requires that special characters such as @ be escaped.

19980325

	Bugfix: a recipient delimiter of "-" could interfere with
	special addresses such as owner-xxx or double-bounce.

	Tolerance: the SMTP client now permits blank lines in SMTP
	server responses.

	Tolerance: the SMTP client now falls back to SMTP when it
	apparently mistook an SMTP server as ESMTP capable.

	Bugfix: eliminated strtok() calls in favor of mystrtok().
	Symptom: master.cf parsing would break if $inet_interfaces
	was more than one word.

19980328

	Bugfix: user->addr patterns in canonical and virtual tables
	matched only $myorigin, not hosts listed in $mydestination
	or addresses listed in $inet_interfaces.  The man pages
	were wrong too. File: global/addr_match.c.

19980401

	Robustness: FIFO file permissions now default to 0622.  On
	some systems, opening a FIFO read-only could deafen the
	pickup daemon.  Only the listener end (which is opened as
	root) needs read access anyway, so there should not be a
	loss of functionality by making FIFOs non-readable for
	non-mail processes.

19980402

	Compatibility: sendmail -I and -c options added.

19980403

	Feature: virtual lookups are now recursive. File:
	qmgr/qmgr_message.c

19980405

	Implemented sendmail -bs (stand-alone) mode. This mode runs
	as the user and therefore deposits into the maildrop queue.

19980406

	The pickup service now removes malformed maildrop files.

19980407

	The pickup service now guards against maildrop files with
	time stamps dated into the future.

19980408

	Bugfix: in the canonical and virtual maps, foo->address
	would match foo@$myorigin only. This has been fixed to also
	match hosts listed in main.cf:$mydestination and the
	addresses listed in main.cf:$inet_interfaces.

	Bugfix: added double buffering support to the VMailer SMTP
	server. This makes the SMTP server robust against SMTP
	clients that talk ahead of time, and should have been in
	there from day one.

19980409

	Bugfix: the VMailer SMTP client now recognizes its own
	hostname in the SMTP greeting banner only when that name
	appears as the first word on the first line.

19980410

	Feature: smtpd now logs the local queue ID along with the
	client name/address, and pickup now logs the local queue
	ID along with the message owner.

	Bugfix: still didn't do virtual/canonical lookups right
	(code used the non-case-folded key instead of the case
	folded one).

19980418

	Bugfix: the SMTP server did not flush the "250 OK queued
	as XXXX" message from the SMTP conversation history.

19980419

	Bugfix: qmgr would not notice that a malformed message has
	multiple senders, and would leak memory (Tom Ptacek).

19980421

	Portability: in the mantools scripts, the expr pattern no
	longer has ^ at the beginning, and the scripts now use the
	expand program instead of my own detab utility.

19980425

	NetBSD 1.x patch by Soren S. Jorvang.

19980511

	Feature: the SMTP server now logs the protocol (SMTP or
	ESMTP) as part of the Received: header.

	Feature: smtpd now logs the last command when a session is
	aborted due to timeout, unexpected EOF, or too many client
	errors.

19980514

	Bugfix: the queue manager did not update the counter for
	in-core message structures, so the in-core message limit
	had no effect. This can be bad when you have a large backlog
	with many messages eligible for delivery.

	Robustness: the queue manager now also limits the total
	number of in-core recipient structures, so that it won't
	use excessive amounts of memory on sites that have large
	mailing lists.

19980518

	Bugfix: the SMTP client did not notice that the DNS client
	received a truncated response. As a result, a backup MX
	host could incorrectly claim that it was the best MX host
	and declare a mailer loop.

	Added start_msg/stop_msg entries to the vmailer startup
	script, for easy installation.

	Cleanup: VMailer databases are now explicitly specified as
	type:name, for example, hash:/etc/aliases or nis:mail.aliases,
	instead of implicitly as "files", "nis" and so on. Test
	program:  util/dict_open.  This change allowed me to
	eliminate a lot of redundant code from mkmap_xxx.c, and
	from everything that does map lookups.

19980525

	Bugfix: local/dotforward.c compared the result of opening
	a user's ~/.forward against the wrong error value.

19980526

	Bugfix: the smtpd VRFY command could look at free()d memory.

	Robustness: the smtpd program had a fixed limit on the
	number of token structures.  The code now dynamically
	allocates token structures.

	Bugfix: the queue manager still used the deprecated parameter
	name xxx_deliver_concurrency for concurrency control, but
	the documentation talks about the preferred parameter name
	xxx_destination_concurrency.  Fix: try xxx_destination_concurrency
	first, then fall back to xxx_deliver_concurrency.

19980621-19980702

	Cleanup: the string read routines now report the last
	character read or VSTREAM_EOF. This change is necessary
	for the implementation of the long SMTP line bugfix.

	Bugfix: the smtp server exited the DATA command prematurely
	when the client sent long lines. Reason: the smtp server
	did not remember that it broke long lines, so that '.'
	could appear to be the first character on a line when in
	fact it wasn't.

	Bugfix: the queue manager made lots of stupid errors while
	reading $qmgr_message_recipient_limit chunks of recipients
	from a queue file. This code has been restructured.

19980706

	Performance: the cleanup program now always adds return-receipt
	and errors-to records to a queue file, so that the queue
	manager does not have to plow through huge lists of
	recipients.

	Robustness: the initial destination concurrency now defaults
	to 2, so that one bad message or one bad connection does
	not stop all mail to a site. The configuration parameter
	is called initial_destination_concurrency.

	Performance: the per-message recipient limit is now enforced
	by the queue manager instead of by the transport. Thus, a
	large list of recipients for the same site is now mapped
	onto several delivery requests which can be handled in
	parallel, instead of being mapped onto one delivery request
	that is sent to limited numbers of recipients, one group
	after the other.

19980707

	Cleanup: the queue manager now does an additional recipient
	sort after the recipients have been resolved, so that the
	code can do better aggregation of recipients by next hop
	destination.

	Feature: lines in the master.cf file can now be continued
	in the same manner as lines in the main.cf file, i.e. by
	starting the next line with whitespace.

	Feature: the smtp client now warns that a message may be
	delivered multiple times when the response to "." is not
	received (the problem described in RFC 1047).

	Cleanup: when the queue manager changes its little mind
	after contacting a delivery agent (for example, it decides
	to skip the host because a transport or host goes bad),
	the delivery agent no longer complains about premature EOF.
	File: global/deliver_request.c

19980709

	Bugfix: when breaking long lines, the SMTP client did not
	escape leading dots in secondary etc. line fragments.  Fix:
	don't break lines. This change makes VMailer line-length
	transparent.  Files: global/smtp_stream.c, smtp/smtp_proto.c.

19980712

	Cleanup: the queue manager to deliver agent protocol now
	distinguishes between domain-specific soft errors and
	recipient-specific soft errors.  Result: many soft errors
	with SMTP delivery no longer affect other mail the same
	domain.

19980713

	Feature: the file modification time stamp of deferred queue
	files is set to the nearest wakeup time of their recipient
	hosts, or if delivery was deferred due to a non-host problem,
	the time stamp is set into the future by the configurable
	minimal backoff time.

	Bugfix: the SMTP client and the MAILQ command would report
	as message size the total queue file size. That would
	grossly overestimate the size of a message with many
	recipients.

	Bugfix: the 19980709 fix screwed up locally-posted mail
	that didn't end in newline.

19980714

	Robustness: the makedefs script now defaults to no optimization
	when compiling for purify.

19980715

	Robustness: the makedefs script now defaults to no optimization
	when compiling with gcc 2.8, until this compiler is known
	to be OK.

	Workaround: when sending multiple messages over the same
	SMTP connection, some SMTP servers need an RSET command
	before the second etc. MAIL FROM command. The VMailer SMTP
	client now sends a redundant RSET command just in case.

	The queue manager now logs explicitly when delivery is
	deferred because of a "dead" message transport.

19980716

	Feature: mailq and mail bounces now finally report why mail
	was deferred (the reason was logged to the syslog file
	only).  Changes were made to the bounce service (generalized
	to be usable for defer logs), showq service (to show reasons)
	and the queue manager.

	As a result the defer directory (with one log per deferred
	message) may contain many files; also, this directory is
	accessed each time a message is let into the active queue,
	in order to delete its old defer log. This means that hashed
	directories are now a must.

19980718-20

	Feature: configurable timeout for establishing smtp
	connections.  Parameter:  smtp_connect_timeout (default 0,
	which means use the timeout as wired into the kernel).
	Inspired by code from Lamont Jones. For a clean but far
	from trivial implementation, see util/timed_connect.c

	Cleaned up the interfaces that implement read/write deadlines.
	Instead of returning -2, the routines now set errno to
	ETIMEDOUT; the readable/writable tests are now separate.

19980722

	Feature: the default indexed file type (hash, btree, dbm)
	is now configurable with the "database_type" parameter.
	The default value for this parameter is system specific.

	Feature: selectively turn on verbose logging for hosts that
	match the patterns specified via the "debug_peer_list"
	config parameter.  Syntax is like the "bad_smtp_clients"
	parameter (see global/peer_list.c). The verbose logging
	level is specified with "debug_peer_level" (default 2).

	Security: the local delivery agent no longer delivers to
	files that have execute permission enabled.

19980723

	Workarounds for Solaris 2.x UNIX-domain sockets: they lose
	data when you close them immediately after writing to them.
	This could screw up the delivery agent to queue manager
	protocol.

19980724

	Cleanup: spent most of the day cleaning up queue manager
	code that defers mail when a site or transport dies, and
	fixed a few obscure problems in the process.

19980726

	Feature: the admin can now configure what classes of problems
	result in mail to the postmaster. Configuration parameter:
	"notify_classes".  Default is backwards compatible: bounce,
	policy, protocol, resource, and software.

19980726-28

	Feature: the admin can now configure what smtp server access
	control restrictions must be applied, and in what order.
	Configuration parameters:  smtpd_client_restrictions,
	smtpd_helo_restrictions, smtpd_mail_restrictions and
	smtpd_rcpt_restrictions. Defaults are intended to be
	backwards compatible. The bad_senders and bad_clients lists
	are gone and have become db (dbm, nis, etc) maps. Files:
	smtpd/smtpd_check.c, config/main.cf.

19980729-31

	Feature: hashed queues. Rewrote parts of the mail queue
	API.  Configuration parameters: "hash_queue_names" specifies
	what queue directories will be hashed (default: the defer
	log directory), "hash_queue_depth" specifies the number of
	subdirectories used for hashing (default 2).

19980802

	Bugfix: the pipe mailer should expand command-line arguments
	with $recipient once for every recipient (producing one
	command-line argument per recipient), instead of replacing
	$recipient by of all recipients (i.e.  producing only one
	command-line argument).  This is required for compatibility
	with programs that expect to be run from sendmail, such as
	uux. Thanks to Ollivier Robert for helping me to get this
	right.

	Code cleanup: for the above, cleaned up the macro expansion
	code in dict.c and factored out the parsing into a separate
	module, mac_parse.c.

19980803

	"|command" and /file/name destinations in alias databases
	are now executed with the privileges of the database owner
	(unless root or vmailer).  Thus, with: "alias_maps =
	hash:/etc/aliases, hash:/home/majordomo/aliases", and with
	/home/majordomo/aliases* owned by the majordomo account,
	you no longer need the majordomo set-uid wrapper program,
	and you no longer need root privileges in order to install
	a new mailing list.

19980804

	Added support for the real-time blackhole list.  Example:
	"client_restrictions = permit_mynetworks, reject_maps_rbl"

	All SMTP server "reject" status codes are now configurable:
	unknown_client_reject_code, mynetworks_reject_code,
	invalid_hostname_reject_code, unknown_hostname_reject_code,
	unknown_address_reject_code, relay_domains_reject_code,
	access_map_reject_code, maps_rbl_reject_code. Default values
	are documented in the smtpd/smtpd_check.c man page.

19980806-8

	Code cleanup: after eye balling line-by line diffs, started
	deleting code that duplicated functionality because it was
	at the wrong abstraction level (smtp_trouble.c), moved
	functionality that was in the wrong place (dictionary
	reference counts in maps.c instead of dict.c), simplified
	code that was too complex (password-file structure cache)
	and fixed some code that was just wrong.

19980808

	Robustness: the number of queue manager in-core structures
	for dead hosts is limited; the limit scales with the limit
	on the number of in-core recipient structures. The idea is
	to not run out of memory under conditions of stress.

19980809

	Feature: mail to files and commands can now be restricted
	by class:  alias, forward file or include file. The default
	restrictions are:  "allow_mail_to_files = alias, forward"
	and allow_mail_to_commands = alias, forward". The idea is
	to protect against buggy mailing list managers that allow
	intruders to subscribe /file/name or "|command".

19980810-12

	Cleanup: deleted a couple hundred lines of code from the
	local delivery agent. It will never be a great program;
	sendmail compatibility is asking a severe toll.

19980814

	Cleanup: made the program shut up about some benign error
	conditions that were reported by Daniel Eisenbud.

19980814-7

	Documentation: made a start of HTML docs that describe all
	configuration parameters.

	Feature: while documenting things, added smtpd_helo_required.

19980817

	Bugfix: at startup the queue manager now updates the time
	stamps of active queue files some time into the future.
	This eliminates duplicate deliveries after "vmailer reload".

	Bugfix: the local delivery agent now applies the recipient
	delimiter after looking in the alias database, instead of
	before.

	Documentation bugfixes by Matt Shibla, Tom Limoncelli,
	Eilon Gishri.

19980819

	GLIBC fixes from Myrdraal.

	Bugfix: applied showq buffer reallocation workaround in
	the wrong place.

	Bugfix: can't use shorts in varargs lists. SunOS 4 has
	short uid_t and gid_t. pipe_command() would complain.

	Bugfix: can't use signed char in ctype macros. All ctype
	arguments are now casted to unsigned char. Thanks, Casper
	Dik.

19980820

	Bugfix: save the alias lookup result before looking up the
	owner.  The previous alpha release did this right.

	Cleanup: mail_trigger() no longer complains when the trigger
	FIFO or socket is unavailable. This change is necessary to
	shut up the sendmail mail posting program, so that it can
	be used on mail clients that mount their maildrop via NFS.

	Experiment: pickup and pipe now run as vmailer most of the
	time, and switch to user privileges only temporarily.
	Files: util/set_eugid.c global/pipe_command.c pipe/pipe.c
	pickup/pickup.c. Is this more secure/ What about someone
	manipulating such a process while not root? It still has
	ruid == 0.

19980822

	Portability: with GNU make, commands such as "(false;true)"
	and "while :; do false; done" don't fail. Workaround: use
	"set -e" all over the place.  Problem found by Jeff Wolfe.

	Feature: "check_XXX_access maptype:mapname" (XXX = client,
	helo, sender, recipient). Now you can make recipient and
	other SPAM restrictions dependent on client or sender access
	tables lookup results.

19980823

	Bugfix: smtpd access table lookup keys were case sensitive.

	Added "permit" and "reject" operators. These are useful at
	the end of SPAM restriction lists (smtpd_XXX_restrictions).

	Added a first implementation of the permit_mx_backup SPAM
	restriction. This permits mail relaying to any domain that
	lists this mail system as an MX host (including mail for
	the local machine). Thanks to Ollivier Robert for useful
	discussions.

19980824

	Bugfix: transport table lookup keys were case sensitive.

19980825

	Portability: sa_len is some ugly #define on some SGI systems,
	so we must rename identifiers (file util/connect.c).

	Bugfix: uucp delivery errors are now sent to the sender.
	Thanks, Mark Delany.

	Bugfix: the pipe delivery agent now replaces empty sender
	by the mailer daemon address. Mark Delany, again.

	Portability: GNU getopt looks at all command-line arguments.
	Fix: insert -- into the pipe/uucp definition in master.cf.

	Bugfix: the smtp server command tokenizer silently discarded
	the [] around [text], so that HELO [x.x.x.x] was read as
	if the client had sent: HELO x.x.x.x. Thanks, Peter Bivesand.

	Bugfix: the HELO unknown hostname/bad hostname restrictions
	would have treated [text] as a domain name anyway.

	Bugfix: the $local_duplicate_filter_limit value was not
	picked up by the local delivery agent. This means the local
	delivery agent could run out of memory on large mailing
	list deliveries.

19980826

	Performance: mkmap/mkalias now run with the same speed as
	sendmail. VMailer now uses a 4096-entry cache with 1 Mbyte
	of memory for DB lookups.  File: util/dict_db.c.

19980902

	Robustness: the reject_unknown_hostname restriction for
	HELO/EHLO hostnames will now permit names that have an MX
	record instead of an A record.

19980903

	Feature: appending @$myorigin to an unqualified address is
	configurable with the boolean append_at_myorigin parameter
	(default: yes).

	Feature: appending .$mydomain to user@host is configurable
	with the boolean append_dot_mydomain parameter (default:
	yes).

	Feature: site!user is rewritten to user@site, under control
	of the boolean parameter swap_bangpath (default: yes).

	Feature: permit a naked IP address in HELO commands (i.e.
	an address without the enclosing [] as required by the
	RFC), by specifying "permit_naked_ip_address" as one of
	the restrictions in the "smtpd_helo_restrictions" config
	parameter.

19980904

	Code cleanup: when an SMTP client aborts a session after
	sending MAIL FROM, the cleanup service no longer warns that
	it is "skipping further client input". Files: cleanup/*.c.
	Thanks, Daniel Eisenbud, for prodding.

	Code cleanup: when an SMTP server disconnects in the middle
	of a session, don't try to send QUIT over the non-existing
	connection. Files: global/smtp_stream.c, smtp/smtp.c.
	Thanks, Daniel Eisenbud, for prodding, again.

	Code cleanup: the VMailer version number has moved from
	mail_params.h (which is included by lots of modules) to a
	separate file global/mail_version.h, so that a version
	change no longer results in massive recompilation.

	Bugfix: Errors-To was flagged as a sender address, so the
	address never was picked up.

	Code cleanup: support for Errors-To: headers completed.

19980905

	Feature: per-message exponential delivery backoff, by
	looking at the amount of time a message has been queued.
	Thanks, Mark Delany.

19980906

	Code cleanup: ripped out the per-host exponential backoff
	code. It was broken by 19980818. It was probably a bad idea
	anyway, because it required per-host, in-core, state kept
	by the queue manager.  All we do now is to keep state for
	$minimal_backoff_time seconds, but only for a limited number
	of hosts. Daniel Eisenbud spotted the problem.

	Lost feature: the SMTP session transcripts now show who
	said what. This feature was inadvertently dropped during
	development. Thanks, Daniel Eisenbud, for reminding.

	Documentation: the hard-coded rewriting process of the
	trivial-rewrite program is described in html/rewrite.html.

	Feature: the local delivery agent now does alias lookups
	before and after chopping off the recipient subaddress.
	This allows you to forward user-anything to another user,
	without losing the ability to redirect specific user-foo
	addresses.

19980909

	Feature: the smtp client now logs a warning that a server
	sends a greeting banner with the client's hostname, which
	could imply a mailer loop.

19980910

	Feature: separate canonical maps for sender and recipient
	address rewriting, so that you can rewrite an ugly sender
	address and still forward mail to that same ugly address
	without creating a mailer loop.  Files: cleanup_envelope.c,
	cleanup_message.c, cleanup_rewrite.c.

19980911

	Feature: virtual maps now support multiple addresses on
	the right-hand side. In the case of virtual domains this
	can eliminate the need for address expansion via local
	aliases, making virtual domains much easier to administer.
	This required that I moved the virtual table lookups from
	the queue manager to the cleanup service, so that every
	recipient has an on-disk status record.  Files: qmgr.c,
	qmgr_message.c, cleanup_envelope.c, cleanup_rewrite.c,
	cleanup_virtual.c.

	Feature: sendmail/mailq/newaliases pass on the -v flag to
	the program that they end up running, to make debugging a
	little easier.

19980914

	Bugfix: some anti-spam measures didn't recognize some
	addresses as local and would do too much work. File:
	smtpd_check.c.

	Bugfix: the smtp sender/recipient table lookup restriction
	destroyed global data, so that other restrictions could
	break. File: smtpd_check.c.

	Bugfix: after vmailer reload, single-threaded servers could
	exit before flushing unwritten data to the client. Example:
	cleanup would exit before acking success to pickup, so the
	message would be delivered twice. Bug reported by Brian
	Candler.

	Cleanup: removed spurious error output from vmailer-script.
	Reported by Brian Candler.

	Tolerance: ignore non-numeric SMTP server responses. There's
	lot of brain damage out there on the net.

19980915

	Feature: the smtp-sink benchmark tool now announces itself
	with a neutral name so that it can be run on the same
	machine as VMailer, without causing Postfix to complain
	about a mailer loop.

	Robustness: on LINUX, vmailer-script now does chattr +S to
	force synchronous directory updates. Fix developed with
	Chris Wedgwood.

19980916

	Bugfix: when transforming an RFC 822 address to external
	form, there is no need to quote " characters in comments.
	This didn't break anything, it just looked ugly.  File:
	global/tok822_parse.c

19980917

	Workaround: with deliveries to /file/name, use fsync() and
	ftruncate() only on regular files.  File: local/file.c

	Workaround: the plumbing code in master_spawn.c didn't
	check if it was dup2()/close()ing a descriptor to itself
	then closing it. Will have to redo the plumbing later.

19980918

	Workaround: on multiprocessor Solaris machines, one-second
	rollover appears to happen on different CPUs at slightly
	different times. Made the queue manager more tolerant for
	such things.  Problem reported by Daniel Eisenbud.

	Workaround: in preparation for deployment with a network-shared
	maildrop directory. make pickup more tolerant against clock
	drift between clients and servers.

19980921

	New vstream_popen() module that opens a two-way channel
	across a socketpair-based pipe. This module isn't being
	used yet; it is here only to complete the vstream code.

19980922

	Code cleanup: the xxx_server_main() interface for master
	child processes now uses a name-value argument list instead
	of an ugly and inflexible data structure.

	Bugfix: moved the test if a non-interactive process is run
	by hand, so that the "don't do this" error message can be
	printed to stderr before any significant processing.

	Bugfix: smtpd now can talk to unix-domain sockets without
	bailing out on a peer lookup problem. Files: smtpd/smtpd.c,
	util/peer_name.c.

	Safety: by default, the postmaster is no longer informed
	of protocol problems, policy violations or bounces.

	Safety: the SMTP server now sleeps before sending a [45]xx
	error response, in order to prevent clients from hammering
	the server with a connect/error/disconnect loop. Parameter:
	smtpd_error_sleep_time (default: 5).

	Feature: the logging facility is compile-time configurable
	(e.g., make makefiles "CCARGS=-DLOG_FACILITY=LOG_LOCAL1").

19980923

	Bugfix: changed virtual/canonical map search order from
	(user@domain, @domain, user) to (user@domain, user, @domain)
	so the search order is most specific to least specific.
	File: global/addr_map.c, lots of documentation.

	Bugfix: after the change of 19980910, cleanup_message
	extracted recipients from Reply-To: etc. headers.  Found
	by Lamont Jones.

19980925

	Bugfix: the change in virtual/canonical map search order
	broke @domain entries; they would never be looked up if
	the address matched $myorigin or $mydestinations. Found by
	Chip Christian who now regrets asking for the change.

	Bugfix: cleanup initialized an error mask incorrectly, so
	that it would keep writing to a file larger than the queue
	file size limit, and so it would treat the error as a
	recoverable one instead of sending a bounce. Thanks, Pieter
	Schoenmakers.

	Bugfix: the "queue file cleanup on fatal error" action was
	no longer enabled in the sendmail mail posting agent.

	Feature: the sendmail mail posting program now returns
	EX_UNAVAILABLE when the size of the input exceeds the queue
	file size limit. NB THIS CHANGE HAS BEEN WITHDRAWN.

19980926

	Code cleanup: the dotlock file locking routine is no longer
	derived from Eric Allman's 4.3BSD port of mail.local.

	Code cleanup: the retry strategy of the file locking routines
	dot_lockfile() and deliver_flock() is now configurable
	(deliver_flock_attempts, deliver_flock_delay, deliver_flock_stale).

	Code cleanup: the master.pid lock file is now created with
	symlink paranoia, and is properly locked so that PID rollover
	will not cause false matches.

	Bugfix: the vbuf_print() formatting engine did not know
	about the '+' format specifier.

	Cleanup: replaced unnecessary instances of stdio calls by
	vstream ones.

19980929-19981002

	Compatibility: added support for "sendmail -q". This required
	a change to the queue manager trigger protocol, and a code
	reorganization of the way queue scans were done. The queue
	manager socket now has become public.

19981002

	SMTPD now logs "lost connection after end-of-message"
	instead of "lost connection after DATA".

19981005

	More bullet proofing: timeouts on all triggers.

19981006

	Bugfix: make the number of cleanup processes unlimited, in
	order to avoid deadlock. The number of instances needed is
	one per smtp/pickup process, and an indeterminate number
	per local delivery agent. Thanks, Thanks, David Miller and
	Terry Lorrah for cleueing me in.

	Bugfix: "sendmail -t" extracted recipients weren't subjected
	to virtual mapping. Daniel Eisenbud strikes again.

19981007

	Compatibility: if the first input line ends in CRLF, the
	sendmail posting agent will treat all CRLF as LF. Otherwise,
	CRLF is left alone. This is a compromise between sendmail
	compatibility (all lines end in CRLF) and binary transparency
	(some, but not all, lines contain CRLF).

19981008

	Robustness: stop recursive virtual expansion when the
	left-hand side appears in its own expansion.

19981009

	Portability: trigger servers such as pickup and qmgr can
	now use either FIFOs or UNIX-domain sockets; hopefully at
	least one of them works properly. Trigger clients were
	already capable of using either form of local IPC.

19981011

	Feature: masquerading. Strip subdomains from domains listed
	in $masquerade_domains. Exception: envelope recipients are
	left alone, in order to not screw up routing.

19981015

	Code cleanup: moved the recipient duplicate filter from
	the user-level sendmail posting agent to the semi-resident
	cleanup service, so that the filter operates on the output
	from address canonicalization and of virtual expansion,
	instead of operating on their inputs.

19981016

	Bugfix: after kill()ing a bunch of child processes, wait()
	sometimes fails before all children have been reaped, and
	must be called again, or the master will SIGSEGV later.
	Problem reported by Scott Cotton.

	Workaround: don't log a complaint when an SMTP client goes
	away without sending QUIT.

19981018

	Workaround: Solaris 2.5 ioctl SIOCGIFCONF returns a hard
	error (EINVAL) when the result buffer is not large enough.
	This can happen on systems with many real or virtual
	interfaces. File: util/inet_addr_local.c. Problem reported
	by Scott Cotton.

	Workaround: the optional HELO/EHLO hostname syntax check
	now allows a single trailing dot.

	Workaround: with UNIX-domain sockets, LINUX connect() blocks
	until the server calls accept(). File: qmgr/qmgr_transport.c.
	Terry Lorrah and Scott Cotton provided the necessary
	evidence.

19981020

	Robustness: recursive canonical mapping terminates when
	the result stops changing.

	Code cleanup: reorganized the address rewriting and mapping
	code in the cleanup service, to make it easier to implement
	the previous enhancement.

19981022

	Code cleanup: more general queue scanning programming
	interface, in preparation for hashed queues. File:
	qmgr/qmgr_scan.c.

	Bugfix: a non-FIFO server with a process limit of 1 has a
	too short listen queue.  Until now this was not a problem
	because only FIFO servers had a process limit of 1, and
	FIFOs have no listen queue.  Fix: always configure a listen
	queue of proc_limit or more.  File: master/master_listen.c.

19981023

	Feature: by popular request, mail delay is logged when
	delivering, bouncing or deferring mail.

19981024

	Cleanup: double-bounce mail is now absorbed by the queue
	manager, instead of the local delivery agent, so that the
	mail system will not go mad when no local delivery agent
	is configured.

19981025

	Cleanup: moved the relocated table from the local delivery
	agent to the queue manager, so that the table can also be
	used for virtual addresses.

	Code reorg: in order for the queue manager to absorb
	recipients, the queue file has to stay open until all
	recipients have been assigned to a destination queue.

19981026

	vmlogger command, so that vmailer-script logging becomes
	consistent with the rest of the VMailer system.

	Code reorg: logger interface now can handle multiple output
	handlers (e.g. syslog and stderr stream).

	Bugfix: a first line starting with whitespace is no longer
	treated as an extension of our own Received: header. Files:
	smtpd/smtpd.c, pickup/pickup.c.

19981027

	Bugfix: the bang-path swapping code went into a loop on an
	address consisting of just a single !. Eilon Gishri had
	the privilege of finding this one.

	Workaround: the non-blocking UNIX-domain socket connect is
	now enabled only on systems that need it. It may cause
	kernel trouble on Solaris 2.x.

	Bugfix: the resolver didn't implement bangpath swapping,
	so that mail for site!user@mydomain would be delivered to
	a local user named "site!user".

19981028

	Cleanup: a VSTREAM can now use different file descriptors
	for reading and writing. This was necessary to prevent
	"sendmail -bs" and showq from writing to stdin. Eilon Gishri
	observed the problem.

19981029

	The RFC 822 address manipulation routines no longer give
	special attention to 8-bit data. Files: global/tok822_parse.c,
	global/quote_822_local.c.

	Bugfix: host:port and other non-domain stuff is no longer
	allowed in mail addresses.  File: qmgr/qmgr_message.c.

	Workaround: LINUX accept() wakes up before the three-way
	handshake is complete, so it can fail with ECONNRESET.
	Files: master/single_server.c, master/multi_server.c.

	Feature: when delivering to user+foo, try ~user/.forward+foo
	before trying ~user/.forward.

	Bugfix: smtpd in "sendmail -bs" (stand-alone) mode didn't
	clean up when terminated by a signal.

	Bugfix: smtpd in "sendmail -bs" (stand-alone) mode should
	not try to enforce spam controls because it cannot access
	the address rewriting machinery.

	Cleanup: the percent hack (user%domain -> user@domain) is
	now configurable (allow_percent_hack, default: yes).

	Bugfix: daemons in -S (stand-alone) mode didn't change
	directory to the queue. This was no problem with daemons
	run by the sendmail compatibility program.

19981030

	Feature: when virtual/canonical/relocated lookup fails for
	an address that contains the optional recipient delimiter
	(e.g., user+foo@domain), the search is done again with the
	unextended address (e.g., user@domain). File: global/addr_find.c.

	Code reorg: the address searching is now implemented by a
	separate module global/addr_find.c, so that the same code
	can be used for both (non-mapping) relocated table lookups
	and for canonical and virtual mapping. The actual mapping
	is still done in the global/addr_map.c module.

	Robustness: the SMTP client now skips hosts that don't send
	greeting banner text. File: smtp/smtp_connect.c

	Feature: preliminary support to disable delivered-to. This
	is desirable for mailing list managers that don't want to
	advertise internal aliases.

	Generic support: when the recipient_feature_delimiter
	configuration parameter is set, the local delivery agent
	uses it to split the recipient localpart into fields. Any
	field that has a known name such as "nodelivered" enables
	the corresponding delivery feature.

19981031

	Code reorg: address splitting on recipient delimiter is
	now centralized in global/split_addr.c, which knows about
	all reserved names that should never be split.

	Robustness: when a request for an internal service cannot
	be satisfied because the master has terminated, terminate
	instead of trying to reach the service every 30 seconds.

	Safety: the local delivery agent now runs as vmailer most
	of the time, just like pickup and pipe. Files: local/local.c,
	local/mailbox.c

19981101

	Compatibility: the tokenizer for alias/forward/etc.
	expansion now updates an optional counter with the number
	of destinations found; If no destinations is found in a
	.forward file, deliver to the mailbox instead. Thanks,
	Daniel Eisenbud, for showing the way to go.

	Robustness: the pickup daemon should always include a
	posting-time record, even when the sendmail posting agent
	didn't. However, just like before, user-provided posting
	times will be ignored. Ollivier Robert found this one.

	Robustness: duplicate entries in aliases or maps now cause
	a warning instead of a fatal error (and an incomplete file).

	Robustness: mkmap now prints a warning when an entry is in
	"key: value" format, which is the format expected for alias
	databases, not for maps.

	Portability: on LINUX, prepend "+" to the getopt() options
	string so that getopt() will stop at the first non-option
	argument. Suggestion by Marco d'Itri.

19981103

	Cleaned up the set_eugid() and open_as() implementations,
	and added stat_as() and fstat_as() so that the local delivery
	agent would look up include files and .forward files with
	the right privileges.

19981104

	Bugfix: the :include: routine now stat()s/open()s files
	included by root-owned aliases as root, not as nobody.

	Bugfix: the master crashed when a service with wakeup timer
	was disabled or renamed.  Fix: eliminate some pathological
	coupling between process management and wakeup management.

	Feature: partial implementation of ETRN (causes a full
	deferred queue scan). Thanks Lamont Jones for reminding me
	that things can be useful already before they are perfect.

	Cleanup: simplified the SMTPD tokenizer.

	Bugfix: sendmail -bs didn't properly notify the mail system
	of new mail.

	Compatibility: the MAIL FROM and RCPT TO commands now accept
	the most common address forms without enclosing <>. The <>
	is still needed for addresses that contain a "string", an
	[address], or a colon (:).

19981105

	Bugfix: "master -t" would claim that the master runs when
	in fact the pid directory does not exist, causing trouble
	with first time startup (reported by several).

	Portability: added a sane_accept() module that maps all
	beneficial accept() error results to EAGAIN. According to
	private communication with Alan Cox, Linux 2.0.x accept()
	can return a variety of error conditions, so we play safe
	and allow for any error that may happen because SYN+ACK
	could not be sent.

	Portability: NETBSD1 uses dotlock files (Perry Metzger).

	Bugfix: the local delivery agent did not canonicalize
	owner-foo sender addresses, so that local users would see
	owner-foo instead of owner-foo@$myorigin (Perry Metzger).

	OPENSTEP4 support, similar to NEXTSTEP3 (Gerben Wierda).

19981106

	Portability: the master startup would take a long time on
	AIX because AIX has a very large per-process open file
	limit.  Fix is to check the status of only the first couple
	hundred file descriptors instead. File: master/master.c.

	Bugfix: mail to user@[net.work.addr.ess] was broken because
	of a reversed test. File: qmgr/qmgr_message.c.

19981107

	Compatibility: don't clobber the envelope sender address
	when an alias has no owner-foo alias (problem diagnosed by
	Christophe Kalt).

	Bugfix: mail to local users in include files would be
	delivered directly if the alias didn't have an owner-foo
	alias, and if the alias database and include file were
	owned by root.

	Feature: with user+foo addresses, any +foo address extension
	that is not explicitly matched in canonical, virtual or
	alias databases is propagated to the table lookup result.

19981108

	Bugfix: minor memory leak in the user+foo table lookup
	code.

	Configurability: specify virtual.domain in the virtual map,
	and mail for unknown@virtual.domain will bounce automatically.
	The $relay_domains default value now includes $virtual_maps,
	so the SMTP server will accept mail for the domain. Marco
	d'Itri put me on the right track.

	Configurability: The mydestinations configuration parameter
	now accepts /file/name expressions and type:name lookup
	tables.

	Code cleanup: in order to make the previous two enhancements
	possible, revised the string/host/address matching engine
	so it can handle any mixture of strings, /file/name patterns
	and type:name lookup tables. Files: util/match_{list,ops}.c,
	global/{domain,namadr,string}_list.c.

19981110

	Code cleanup: replaced remaining isxxx() calls by ISXXX().

19981111

	Bugfix: the "bounce unknown virtual user" code was in the
	wrong place. Problem tackled with help of Chip Christian.

	Portability: reportedly, Solaris 2.5.1 can hang waiting
	for a UNIX-domain connection to be accepted, so it gets
	the same workaround that was designed for LINUX. Problem
	reported by Scott Cotton.

19981112

	Management: "vmailer stop" now allows delivery agents to
	finish what they are doing, like "vmailer reload".

	Management; "vmailer abort" causes immediate termination.

	Workaround: zombie processes pile up with HP-UX. Reason:
	select() does not return upon SIGCHLD when SA_RESTART is
	specified to sigaction(). Workaround: shorten the select()
	timer to 10 seconds, #ifdef BRAINDEAD_SELECT_RESTARTS.
	Thanks, Lamont Jones.

19981117

	Rename: VMailer is now Postfix. Sigh.

19981118

	Cleanup: generalized the safe_open() routine so that it is
	no longer limited to mailbox files, lock files, etc.

	Bugfix (found during code review): vstream*printf() could
	run off the end of a stream buffer after an I/O error,
	because vbuf_print() ignored the result from VBUF_SPACE().

	Bugfix (found during code review): resolve_local() could
	clobber its argument, but the docs didn't say so.

19981121

	Cleanup: the is_header() routine now allows 8-bit data in
	header labels.

19981123

	Bugfix (found during code review): the mail_queue_enter()
	path argument wasn't optional.  File: global/mail_queue.c

19981124

	Cleanup: eliminated redundant tests for a zero result from
	vstream_fdopen(). Unlike the stdio fdopen() routine, the
	vstream_fdopen() routine either succeeds or never returns.

	Bugfix: the queue manager now looks at the clock before
	examining a file time stamp, to avoid spurious complaints
	about time warps on busy machines. File:  qmgr/qmgr_active.c.

19981125

	Compatibility: allow trailing dot at the end of user@domain.
	Address canonicalization now strips it off. Issue brought
	forward by Eilon Gishri. File: trivial-rewrite/rewrite.c.

	Robustness: changed DNS lookup order of MAIL FROM etc.
	domains from MX then A to A then MX, just in case the MX
	lookup fails with a server error.

	Renamed vmcat, vmlock, vmlogger, vmtrigger to postcat,
	postlock, postlog, postkick. Also renamed mkmap and mkalias
	to postmap and postalias.

19981126

	Workaround: Lamont Jones found a way for HP-UX to terminate
	select() after SIGCHLD. The code is #ifdef USE_SIG_RETURN.
	Files:  util/sys_defs.h, master/master_sig.c.

	Bugfix: the Delivered-To: loop detection code had stopped
	working, when long ago the is_header() routine was changed.
	File: local/delivered.c.

19981128

	Bugfix: postcat opened queue files read-write, where only
	read access was needed. File: postcat/postcat.c.

19981129

	Safety: added a sleep(1) to all fatal and panic exits.
	File: util/msg.c.

19981201

	Robustness: postcat now insists that a file starts with a
	time record.

	Consistency: added "-c config_dir" command-line options
	where appropriate.

19981202

	Man pages, on-line version.

19981203

	Man pages, html version; overview documentation.

19981206

	Sendmail silently accepted the unsupported -qRsite and
	-qSsite options.  It now prints an error message and
	terminates.

	Separated the contributed tree from the IBM code; moved
	the LDAP and NEXTSTEP/OPENSTEP code to the contributed
	source tree because obviously I didn't write it.

19981206-9

	Had to write a postconf configuration utility in order to
	reliably find out about all configuration parameters and
	their defaults.

	Documentation bugfixes by Matt Shibla, Scott Drassinower,
	Greg A. Woods.

19981209

	On machines with short hostnames, postconf -d cored while
	reporting a fatal error. It should not report that error
	in the first place. Thanks, Eilon Gishri.

	Changed the FAQ entry about rejecting mail for *.my.domain
	on a firewall. Chip Christian was right, I was wrong.

19981214

	Portability: with GNU getopt, optind is not initially 1,
	breaking an assumption in sendmail/sendmail.c. Liviu Daia.

	Annoyance: on non-networked systems, don't warn that only
	one network interface was found. File:  global/inet_addr_local.c.
	Reported by several.

	Bugfix: on non-networked systems, the smtp client assumed
	that it was running in virtual host mode, and would bind
	to the loopback interface. File smtp/smtp_connect.c.  Liviu
	Daia, again.

19981220

	Robustness: when looking up an A or MX record, do not give
	up when the A query fails because of a server error.  File
	dns/dns_lookup.c. Reported by Scott Drassinower.

19981221

	Bugfix: "bounce mail for non-existent virtual user" didn't
	work when a non-default relay host was configured in main.cf
	or in the transport table. File: qmgr/qmgr_message.c.

	Bugfix: the maildrop directory should not be world-readable.
	Files: conf/postfix-script, showq/showq.c.

	Documentation: fixed several omissions and errors.

	Documentation: removed references to the broken recipient
	feature delimiter configuration parameter.

	Bugfix: write mailbox file as the recipient, so that file
	quota work as expected.

	Bugfix: pickup would die when it tried to remove a non-file
	in the maildrop directory (Jeff Wolfe).

19981222

	Sendmail no longer logs the queue ID when it is unable to
	notify the pickup daemon. This is a late addition to the
	"unreadable maildrop queue" patch.

	user.lock files are now created as root, so that postfix
	needs no group directory write permission.

19981224

	Security: allow queue file link counts > 1, to avoid
	non-delivery of maildrop files with links to a non-maildrop
	directory.  Files:  global/mail_open_ok.c, and anything
	that calls this code (qmgr, pickup, showq). If multiple
	hard links are a problem, see the set-gid "postdrop" utility
	below.

19981225

	Robustness: the queue manager no longer aborts when a queue
	file suddenly disappears (e.g. because the file was removed
	by hand).

	Feature: when a writable maildrop directory is a problem,
	sites can make the new "postdrop" utility set-gid. This
	command is never used when the maildrop directory is
	world-writable.

	Robustness: make the queue file creation routine more
	resistant against denial of service race attack. File:
	global/mail_queue.c

19981226

	New suid_priv module to enable/disable privileges in a
	set-uid/gid program. In the end I decided to not use it.

19981228

	Robustness: make the pickup daemon more resistant against
	non-file race attack.

	Cleanup: generic mail_stream.c interface for writing queue
	file streams to files, daemons or commands. This simplifies
	the code in smtpd and in sendmail that must be able to pipe
	mail through the postdrop command. The cleanup daemon has
	been modified to use the same interface. Result: less code.

	Feature: smtpd now logs the only recipient in Received:
	headers.

	Feature: separate command and daemon directories. Both
	default to $program_directory. Install conf/postfix-script
	if you want to use this feature.

19981230

	Patch to avoid conflict with non-writable top-level Makefile
	(Lamont Jones).

19981231

	Portability: port to UnixWare 7 by Ronald Joe Record, SCO.

19990104

	Bugfix: fencepost (Jon Ribbens, Oaktree Internet Solutions
	Ltd.) Files: quote_82[12]_local.c.

	Bugfix: wrong default for relay_domains (Juergen Kirschbaum,
	Bayerische Landesbank). File: mail_params.h.

	Bugfix: changed 5xx response for "too may recipients" to
	4xx. File: smtpd.c.

19990106

	Feature: defer_transports specifies the names of transports
	that should be used only when "sendmail -q" (or equivalent)
	is issued. For example, "defer_transports = smtp" is useful
	for sites that are disconnected most of the time. File:
	qmgr_message.c.

19990107

	Feature: local_command_shell specifies a non-default shell
	for delivery to command by the local delivery agent. For
	example, "local_command_shell = /some/where/smrsh -c"
	restricts what may appear in "|command" destinations.
	File: global/pipe_command.c.

19990112-16

	Feature: SMTP command pipelining support based on an initial
	version by Jon Ribbens, Oaktree Internet Solutions Ltd.
	This one took several days of massaging before I felt
	comfortable about it. Files: smtp.c, smtp_proto.c.

	Bugfix: the SMTP server would flush responses one-by-one,
	which caused suboptimal performance with pipelined clients.
	The vstream routines now flush the write buffer when the
	read() routine is called, instead of flushing when the
	application changes from writing to reading. Delayed flush
	prevents the SMTP server from flushing responses one-by-one
	and thus triggering Nagle's algorithm. File: util/vstream.c.

19990117

	Bugfixes and enhancements to the smtpstone tools by Drew
	Derbyshire, Kendra Electronic Wonderworks: send helo command,
	send message headers, format the message content to lines
	< 80, work around NT stacks, make "." recognition more
	robust. Files: smtp-source.c, smtp-sink.c.

	Strategy: look at the deferred queue only when the incoming
	queue is empty; limit the number of recipients read from
	a queue file depending on the number of recipients already
	in core. Files: qmgr.c, qmgr_message.c.

	Feature: postponed anti-UCE restrictions. The decision to
	reject junk mail on the basis of the client name/address,
	HELO hostname or sender address can now be postponed until
	the RCPT TO command (or HELO or MAIL FROM if you like).
	File: smtpd_check.c.

19990118

	Feature: incremental updates of alias databases and of
	other lookup tables. Both postalias and postmap now take
	a -i option for incremental updates from standard input.
	Files: global/mkmap_*.c, post{map,alias}/post{map,alias}.c.

	Compatibility: newaliases can now update multiple alias
	databases: list them in the "alias_database" parameter in
	main.cf. By the same token, postalias can now update multiple
	maps in one command. Files:  post{map,alias}/post{map,alias}.c

	Feature: mail to <> is now sent to the address specified
	with the "empty_address_recipient" configuration parameter
	which defaults to MAILER-DAEMON (idea by Lamont Jones,
	Hewlett-Packard). File: cleanup/cleanup_envelope.c.

	Compatibility: the transport table now uses .domain.name
	to match subdomains, just like sendmail mailer tables (patch
	by Lamont Jones, Hewlett-Packard).

	Feature: mailq now ends with a total queue size summary
	(Eilon Gishri, Israel Inter University Computation Center).

19990119

	Feature: address masquerade exceptions for user names listed
	in the "masquerade_exceptions" configuration parameter.
	File: cleanup/cleanup_masquerade.c.

	Feature: qmail-style maildir support, based on initial code
	by Kevin W. Brown, Quantum Internet Services Inc.

	Workaround: Solaris 2.something connect() fails with
	ECONNREFUSED when the system is busy (Chris Cappuccio,
	Empire Net). File: global/mail_connect.c.

	Feature: the cleanup service now adds a Return-Path: header
	when none is present. This header is needed for some mail
	delivery programs (see below). File: cleanup_message.c.

	Feature: the pipe mailer now supports $user, $extension
	and $mailbox macros in command-line expansions. This, plus
	the Return-Path: header (see above), should be sufficient
	to support cyrus IMAP out of the box. Based on  initial
	code by Joerg Henne, Cogito Informationssysteme GMBH.
	File: pipe/pipe.c.

	Bugfix: with address extensions enabled, canonical and
	virtual lookups now are done in the proper order:
	user+foo@domain, user@domain, user+foo, user, @domain.
	File: global/mail_addr_find.c.

19990119

	Feature: the local mailer now prepends a Received: message
	header with the queue ID to forwarded mail, in order to
	make message tracing easier.  File: local/forward.c.

	Cleanup: after "postfix reload", no more broken pipe
	complaints from resolve/rewrite clients.

19990121

	Feature: pickup (again) logs uid and sender address.  On
	repeated request by Scott Cotton, Internet Consultants
	Group, Inc.

	Portability: doze() function for systems without usleep().

	Cleanup: clients are now consistently logged as host[address].

19990122

	Maildir support changed: specify "home_mailbox = Maildir/".
	The magic is the trailing /. Suggested by Daniel Eisenbud,
	University of California at Berkeley.

	Maildir support from aliases, :include: and .forward files.
	Specify /file/name/ - the trailing / is required. Suggested
	by Daniel Eisenbud, University of California at Berkeley.

	Workaround: watchdog timer to prevent the queue manager
	from locking up on some systems.

	Bugfix: in Received: headers, the "for <recipient>"
	information was in the wrong place. Pointed out by Jon
	Ribbens, Oaktree Internet Solutions Ltd.

19990124

	Portability: more workarounds for GNU getopt() by Liviu
	Daia, Institute of Mathematics, Romanian Academy. File:
	sendmail/sendmail.c.

19990125

	Bugfix: Postfix should not masquerade recipient addresses
	extracted from message headers. Problem reported by David
	Blacka, Network Solutions. File: cleanup/cleanup_message.c.

19990126

	Feature: smtpd_etrn_restrictions parameter to restrict who
	may use ETRN and what domains may be specified.  Example:
	"smtpd_etrn_restrictions = permit_mynetworks, reject".
	Requested by Jon Ribbens, Oaktree Internet Solutions Ltd.
	File: smtpd/smtpd_check.c.

19990127

	Bugfix: in an attempt to shave some cycles, the anti junk
	mail routines would use the wrong resolved address. This
	"optimization" is now turned off. Problem reported by Sam
	Eaton, Pavilion Internet Plc. File: smtpd/smtpd_check.c.

	Feature: BIFF notifications.  For compatibility reasons
	this feature is on by default.  This "protocol" can be a
	real performance pig.  Specify "biff = no" in main.cf if
	your machine has lots of shell users. Feature requested by
	Dan Farmer - it's one of the things one does for friends.
	Files:  local/mailbox.c, local/biff_notify.c.

	Bugfix: another case sensitivity problem, this time with
	virtual lookups to recognize unknown@virtual.domain.
	Problem reported by Bo Kleve, Linkoping University. File:
	qmgr/qmgr_message.c.

19990128

	Feature: with "soft_bounce = yes", defer delivery instead
	of bouncing mail. This is a safety net for configuration
	errors with delivery agents. It has no effect on errors in
	virtual maps, canonical maps, or in junk mail restrictions.
	Feature requested by Bennett Todd. File: global/bounce.c.

19990129

	Compatibility: the qmail maildir.5 documentation prescribes
	maildir file names of the form time.pid.hostname, which is
	wrong because Postfix processes perform multiple deliveries.
	Elsewhere the qmail author has documented how maildir files
	should be named under such conditions. Postfix has been
	changed to be conformant. File: local/maildir.c.

19990131

	Feature: special treatment of owner-foo and foo-request
	can be turned off. Specify "owner_request_special = no".
	Requested by Matthew Green and others. Files: local/alias.c,
	global/split_addr.c. This affects canonical, virtual and
	alias lookups.

19990204

	Portability: signal handling for HP-UX 9 by Lamont Jones
	of Hewlett Packard. File: master/master_sig.c.

	Robustness: disable random walk inside a per-site queue to
	avoid message starvation under heavy load. File: qmgr_entry.c.

	Robustness: under some conditions the queue manager could
	declare a host dead after just one delivery failure.  File:
	qmgr_queue.c.

19990212

	Feature: skip SMTP servers that greet us with a 4XX status
	code. Example: "smtp_skip_4xx_greeting = yes". By default,
	the Postfix SMTP client defers delivery when a server
	declines talking to us. File:  smtp/smtp_connect.c.

	Robustness: upon startup the queue manager now moves active
	queue files to the incoming queue instead of the deferred
	queue, to avoid anomalous delivery delays on systems that
	have a huge incoming queue.  Files: qmgr/qmgr.c,
	qmgr/qmgr_active.c, global/mail_flush.c, conf/postfix-script*

19990213

	Robustness: added watchdog timers to avoid getting stuck
	on systems with broken select() socket implementations.
	File: qmgr_transport.c, qmgr_deliver.c.

19990218

	Feature: NFS-friendly delivery to mailbox by avoiding the
	use of root privileges as much as possible. With input by
	Mike Muus, Army Research Lab, USA.

	Feature: the smtp-sink test server now supports SMTP command
	pipelining. To this end we had to generalize the timer and
	vstream support. Poor performance is fixed 19990222.

	Cleanup: timer event routines now have the same interface
	as read/write event routines (event type + context). File:
	util/events.c.

	Feature: new vstream_peek() routine to tell how much unread
	data is left in a VSTREAM buffer. This is the vstream
	variant of the peekfd() routine for kernel read buffers.
	File: util/vstream.c.

	Feature: directory scanning support for hashed mail queue
	directories. So far the results are disappointing: with
	depth = 2 (16 directories with 16 subdirectories), mailq
	takes 5 seconds with an empty queue unless all directories
	happen to be cached in memory.  We need a bit map before
	hashed queue directories become practical. Depth=1 hashing
	doesn't slow down mailq much, but doesn't help much either.
	Files: util/scan_dir.c, global/mail_scan_dir.c.

19990221

	Workaround: with "ignore_mx_lookup_error = yes", the SMTP
	client always performs an A lookup when an MX lookup could
	not be completed, rather than treating MX lookup failure
	as a temporary error condition.  Unfortunately there are
	many broken DNS servers on the Internet. File: smtp/smtp_addr.c.

19990222

	Performance: rewrote the guts of the smtp-sink test server
	so it can do pipelining without losing performance.

19990223

	Workaround: hotmail.com sometimes drops the connection
	after "." (causing misleading diagnostics to be logged) or
	waits minutes after receiving QUIT. Solution: do not wait
	for the response to QUIT. File: smtp/smtp_proto.c.  This
	is turned off with: "smtp_skip_quit_response = no".

19990224

	Feature: the pipe mailer accepts user=username:groupname,
	based on code submitted by Philip A. Prindeville, Mirapoint,
	Inc., USA.  File: pipe/pipe.c.

	Workaround: use file locking to prevent multiple processes
	from select()ing on the same socket. This causes performance
	problems on large BSD systems. Files: master/*_server.c.

19990225

	Bugfix: with "inet_interfaces = 127.0.0.1", don't bind to
	the loopback interface. Problem reported by Steve Bellovin
	of AT&T. File: smtp/smtp_addr.c.

	Feature: "postsuper" command to remove stale queue files
	to update queues after changes to the queue structure
	parameters (hash_queue_names, hash_queue_depth). This
	command is to be run from the postfix-script maintenance
	shell script.

19990301

	Feature: new postconf -h (suppress `name = ' in output)
	option to make the program easier to use in, e.g., shell
	scripts.

	Feature: dict_unix module so you can add the UNIX passwd
	table to the SMTPD access control list.

19990302

	Feature: "luser_relay = destination" captures mail for
	non-existent local recipients. This works only when the
	local delivery agent does mailbox delivery (including
	delivery via mailbox_command), not when mailbox delivery
	is delegated to another message transport.

	Feature: new reject_non_fqdn_{hostname,sender,recipient}
	restrictions to require fully.qualified.domain forms in
	HELO, MAIL FROM and RCPT TO commands (while still allowing
	the <> sender address).

19990304

	Bugfix: backed out the 19990119 change to always insert
	Return-Path:  if that header is not present. The pipe and
	local agents now are responsible for prepending Return-Path:.
	Files:  cleanup/cleanup_message.c, global/mail_copy.[hc],
	pipe/pipe.c, global/header_opts.c.  This causes an incompatible
	change to the pipe flags parameter, because Return-Path:
	now must be requested explicitly.

19990305

	Bugfix: showq (the mailq server) incorrectly assumed that
	all recipients of a deferred message are listed in the
	corresponding defer logfile. It now lists all recipients.
	Files: showq/showq.c, cleanup/cleanup_envelope.c (ensure
	that sender records always precede recipient records).

	Cleanup: smtpd HELO restrictions validate [numerical] forms.
	Files: util/valid_hostname.c, smtpd/smtpd_check.c.  Initial
	code by Philip A. Prindeville, Mirapoint, Inc., USA.

19990306

	Cleanup: re-vamped the valid_hostname module, and added a
	maximal label length (63) requirement.

	Feature: fallback_relay parameter to specify extra backup
	hosts in case the regular relay hosts are not found or not
	available.  Files:  smtp/smtp_addr.c.

	Feature: "always_bcc = address" specifies where to send a
	copy of each message that enters he system. However, if
	that copy bounces, the sender will be informed of the
	bounce. Files: smtpd/smtpd.c, pickup/pickup.c

	Compatibility: the transport map will now route on top-level
	domains, so you can dump all of .bitnet to a bitnet relay.

19990307

	Feature: LDAP lookups, updated by Jon Hensley, Merit Network,
	USA.

	Feature: regular expression (PCRE) support by Andrew
	McNamara, connect.com.au Pty. Ltd., Australia. In order to
	use this code specify pcre:/file/name. You can use this
	anywhere you would use a DB or DBM file, NIS or LDAP.  See:
	PCRE_README for how to enable this code.

	Feature: "delay_warning_time = 4" causes Postfix to send
	a "your mail is delayed" notice after approx. 4 hours.
	Daniel Eisenbud, University of California at Berkeley.
	Files:  qmgr/qmgr_active.c, qmgr/qmgr_message. Postmaster
	notices for delayed mail are disabled by default. In order
	to receive postmaster notices, specify "notify_classes =
	...  delay ...".

	Cleanup: do not send undeliverable bounced mail to postmaster.
	This was causing lots of pain with junk mail from bogus
	sender addresses to non-existent recipients.  This change
	was reversed 19990311.

19990308

	Bugfix: the dotforward routine was too eager with throwing
	away extension information, so that the Delivered-To: info
	would differ for \mailbox and |command. Problem reported
	by Rafi Sadowski, Open University, Israel.

	Bugfix: seems I never got around to fix the btree access
	method. I finally did. Problem reported by: Matt Smith,
	AvTel Communications Inc., USA.

19990311

	Back by popular demand: with "notify_classes = 2bounce ..."
	Postfix will send undeliverable bounced mail to postmaster.
	The default is to not send double bounces.  This change
	reverses a change made on 19990307.

19990312

	Feature: configurable exit handler for server skeletons.
	Philip A.  Prindeville, Mirapoint, Inc., USA. Files:
	master/*server.c.

	Feature: mail_spool_directory configuration parameter to
	specify the UNIX mail spool directory.  The default setting
	is system dependent.

19990313

	Cleanup: share file descriptors for resolve and rewrite
	client connections. This puts less strain on the trivial-rewrite
	service.

	Portability: support for UnixWare 2.1 by Dmitry E. Kiselyov,
	Nizhny Novgorod City Health Emergency Station.

	Feature: configurable delays in the smtpstone test programs.
	With input by Philip A.  Prindeville, Mirapoint, Inc., USA.
	Files:  smtpstone/*.c.

	Bugfix: a "signal 11" problem in the trivial-rewrite program
	that would occasionally happen after "postfix reload".
	Reason: some rewrite clients would clobber their input,
	and when they had to retransmit the query, the input would
	be a zero-length string, which trivial-rewrite isn't supposed
	to receive.

19990314

	Feature: "mailbox_transport = cyrus" delegates all local
	mailbox delivery to a master.cf entry called "cyrus" (the
	same trick for procmail), including users not found in the
	UNIX passwd database.  This gives the flexibility of $name
	expansions by the pipe mailer, without losing local aliases
	and ~/.forward processing.  Result of discussions with Rupa
	Schomaker, RS Consulting.

19990315

	Feature: the mydestination parameter can now be an empty
	string, for hosts that don't receive any mail locally. Be
	sure to specify a default route for mail that comes to the
	machine or mail will loop.

19990316

	Bugfix: the SMTPD check scaffolding didn't apply the same
	sanity checks as the production code. Problem reported by
	Alain Thivillon, Herve Schauer Consultants, France. File:
	smtpd/smtpd_check.c.

	Portability: some systems can have more than 59 seconds in
	a minute. Based on a fix by Liviu Daia, Institute of
	Mathematics, Romanian Academy.  File:  global/mail_date.c.

	Enhancement: include the client network address in the
	rejected by RBL response. Lamont Jones, Hewlett-Packard.

	Workaround: use fstat() to figure out if the maildrop is
	world-writable. access() uses the real uid, which stinks.

	Robustness: don't do partial address lookups (user@, domain,
	user, @domain) with regexp-style tables.

	Security: don't allow regexp-style tables to be used for
	aliases. It would be too easy to slip in "|command" or
	:include: or /file/name.

19990317

	Feature: "fallback_transport = cyrus" delegates non-UNIX
	recipients to a master.cf entry called "cyrus", allowing
	you to have both UNIX and non-UNIX mailboxes side by side.

19990319

	Workaround: on 4.4 BSD derivatives, fstat() can return
	EBADF on an open file descriptor. Now, that was a surprise.
	This caused std{out,err} from cron commands to not be
	delivered.

	Bugfix: "local -v" stopped working.

	Workaround: more watchdog timers for postfix-unfriendly
	systems. By now every Postfix daemon has one. Call it life
	insurance.

	Robustness: increased the maximal time to receive or deliver
	mail from $ipc_timeout (default: 3600 seconds) to the more
	generous $daemon_timeout (default: 18000 seconds). We don't
	want false alarms.

	Portability: IRIX 5.2 does not have usleep().

19990320

	Bugfix: \username was broken. Frank Dziuba was the first
	to notice.

19990321

	Workaround: from now on, Postfix on Solaris uses stream
	pipes instead of UNIX-domain sockets. Despite workarounds,
	the latter were causing more trouble than anything else on
	all systems combined.

19990322

	Portability: the makedefs would mis-identify IRIX 6.5.x as
	IRIX 5.x. Fix by Brian Truelsen of Maersk Mc-Kinney Moller
	Institute for Production Technology, Denmark.

	Feature: reject_unknown_recipient_domain restriction for
	recipient addresses. For the sake of symmetry, we now also
	have reject_unknown_sender_domain. This means the old
	reject_unknown_address restriction is being phased out.
	Suggested by Rask Ingemann Lambertsen, Denmark Technical
	University.

	Feature: unknown sender/recipient domain restrictions now
	distinguish between soft errors (always: 450) and hard
	errors (configurable with the unknown_address_reject_code
	parameter, default: 450; use 550 at your own risk).

	Feature: no HELO junk mail restrictions means that no syntax
	check will be done on HELO/EHLO hostname arguments.

	Bugfix: the initial Solaris workaround for UNIX-domain
	sockets could cause the queue manager to block if Postfix
	ran into a delivery agent process limit. After another code
	rewrite that problem is eliminated.  Thanks to Chris
	Cappuccio, Empire Net, for assistance with testing.

19990323

	Bugfix: too much forwarding when users list their own name
	in their .forward file (e.g. mail to user@localhost would
	go through .forward, would be forwarded to user@$myorigin,
	and would go through .forward again). Problem reported by
	Roman Dolejsi, Prague University of Economics.

19990324

	Bugfix: missing map name in check_xxx_access restrictions
	could cause a segmentation error. Lamont Jones, Hewlett-
	Packard.

	Feature: forward_path configuration parameter (default:
	$home/.forward$recipient_delimiter$extension,$home/.forward).
	Based on initial code by Philip A.  Prindeville, Mirapoint,
	Inc., USA.  Files:  local/dotforward.c.

19990325

	Workaround: Solaris NIS alias maps need special entries
	(YP_MASTER_NAME, YP_LAST_MODIFIED). What's worse, normal
	keys/values include a null byte at the end, but the YP_XXX
	ones don't. Problem reported by Walcir Fontanini, state
	university of Campinas, Brazil.  File: postalias/postalias.c.

	Compatibility: Solaris NIS apparently does include a null
	byte at the end of keys and values. File: util/sys_defs.h.

	Feature: library support for config parameters that are
	not $name expanded at program start-up. This was needed
	for forward_path, and will also be needed to make message
	headers customizable.

	Bugfix: pcre didn't handle \\ right. Lamont Jones, Hewlett-
	Packard. File: util/dict_pcre.c.

19990326

	Compatibility: Postfix now puts two spaces after the sender
	in a "From sender date..." header. Found by John A. Martin,
	fixed by Lamont Jones, Hewlett-Packard.

	Bugfix: when a recipient appeared multiple times in a local
	alias or include expansion, the delivery status could be
	left uninitialized, causing the mail to be deferred and
	delivered again. File: local/recipient.c.

19990327

	Cleanup: the dictionary routines now take an extra flag
	argument to control such things as warning about duplicates,
	and appending null bytes to key/value. The latter was needed
	for a clean implementation of NIS master alias maps support.

	Feature: POSIX regular expressions by Lamont Jones. See
	config/sample-regexp.c. Right now, enabled on *BSD and
	LINUX only.

19990328

	Code cleanup: dictionaries now have flags that say whether
	lookup keys are fixed strings or whether keys are subjected
	to pattern matching. This is needed to avoid passing partial
	addresses to regexp-based lookup tables (user, @domain,
	user@, domain). Files: util/dict*.c.

	Bugfix: fixed memory leaks and core dumps in the regexp
	and pcre routines (neither handled an empty pattern file).

19990329

	Code cleanup: the dictionary I/O routines now do their own
	locking depending on dictionary flag settings. This means
	that the low-level dict_get() interface can now be used
	for safe dictionary lookups. This is needed for 19990328's
	partial lookup key support. Files: util/dict*.c. global/maps.c.

	Feature: regular expression matches are no longer limited
	to user@domain address forms in access/canonical/virtual
	maps, but can also be used for domains in transport maps.
	This needed the partial lookup key support to avoid passing
	partial addresses to regexp-based lookup tables (user,
	@domain, user@, domain). Files: global/maps.c
	global/mail_addr_find.c.

	Feature: new dictionary types can be registered with
	dict_open_register(). File: util/dict_open.c.

19990330

	Bug fix: match_list membership dictionary lookups were case
	sensitive when they should not. Patch by Lutz Jaenicke,
	BTU Cottbus, Germany.

19990402

	Feature: $domain macro support in forward_path.  Philip A.
	Prindeville, Mirapoint, Inc., USA.  File:  local/dotforward.c.

	Feature: if an address extension (+foo) is explicitly
	matched by the .forward+foo file name, do not propagate
	the extension to recipient addresses. This is more consistent
	with the way aliases are expanded. File:  local/dotforward.c.

19990404

	Bugfix: after receiving mail, the SMTP server didn't reset
	the cleanup error flag, so that multiple deliveries over
	the same SMTP session could fail due to errors with previous
	deliveries. Found by Lamont Jones, Hewlett-Packard.

19990405

	Feature: MIME-encapsulated bounces. Philip A.  Prindeville,
	Mirapoint, Inc., USA.  File:  bounce/bounce_notify_service.c

	Cleanup: vstreams now properly look at the EOF flag before
	attempting to read, eliminating the need for typing Ctrl-D
	twice to test programs; the EOF flag is reset after each
	unget or seek operation.  Files: util/vstream.c, util/vbuf.c.

	Feature: in preparation for configurable message headers
	the mac_parse() routine now balances the parentheses in
	${name} or $(name). We need this in order to support
	conditional expressions such as ${name?text} where `text'
	contains other ${name} expressions.

19990406

	Cleanup: changed MIME header information to make bounces
	more RFC 1892 compliant.

19990407

	Feature: "best_mx_transport = local" delivers mail locally
	if the local machine is the best mail exchanger (by default,
	mail is bounced with a "mail loops back to myself" error).

	Config: in order to make feature tracking easier the source
	code distribution now has a copy of the default settings
	in conf/main.cf.default.

	Feature: separate configurable postmaster addresses for
	single bounces (bounce_notice_recipient), double bounces
	(2bounce_notice_recipient), delayed mail (delay_notice_recipient),
	and for other mailer errors (error_notice_recipient).  The
	default for all is "postmaster".

19990408

	Workaround: on Solaris 2.x, the master appears to lose its
	exclusive lock on the master.pid file, so keep grabbing
	the lock each time the master wakes up from select().

	Robustness: don't flush VSTREAM buffers after I/O error.
	This prevents surprises when calling vstream_fclose() after
	truncating a mailbox to its original size.

	Portability: on LINUX systems, if <db_185.h> exists, don't
	look for <db/db.h>.

	Workaround: specify "sun_mailtool_compatibility = yes" to
	avoid clashes with the mailtool application. This disables
	kernel locks on mailbox files. Use only where needed.

	Portability: renamed readline to readlline, to avoid clashes
	with mysql.

19990409

	Bugfix: ignore temp queue files that aren't old enough.
	Problem reported by Vivek Khera, Khera Communications, Inc.

	Bugfix: fixed typo in dict_db.c that caused processes to
	not release DB shared locks.

	Feature: auto-detection of changes to DB or DBM lookup
	tables.  This avoids the need to run "postfix reload" after
	change to the smtp access table and other tables.

	Feature: regular expression checks for message headers.
	This requires support for POSIX or for PCRE regular
	expressions.  Specify "header_checks = regexp:/file/name"
	or "header_checks = pcre:/file/name", and specify
	"/^header-name:  badstuff/ REJECT" in the pattern file
	(patterns are case-insensitive by default).  Code by Lamont
	Jones, Hewlett-Packard.  It is to be expected that full
	content filtering will be delegated to an external command.

19990410

	Bugfix: auto-detection of changes to DB or DBM lookup tables
	wasn't done for TCP connections.

19990410

	Feature: $recipient expansion in forward_path.  Philip A.
	Prindeville, Mirapoint, Inc., USA.  File: local/dotforward.c

	Feature: the smtp client consistently treats a numerical
	hostname as an address. File: smtp/smtp_addr.c.

19990414

	Compatibility: support comment lines starting with # in
	$mydestination include files. This makes Postfix more
	compatible with sendmail.cw files. File: util/match_list.c.

	Feature: if your machines have short host names, specify
	"mydomain = domain.name", and you no longer have to specify
	"myhostname = host.domain.name". Files:  global/mail_params.c,
	postconf/postconf.c.

19990420

	Cleanup: bounce mail when a mailbox goes over file quota,
	instead of deferring delivery.  File:  local/mailbox.c.

19990421

	Feature: auto-detection of changes to DB or DBM lookup
	tables now includes the case where a file is unlinked.
	Philip A.  Prindeville, Mirapoint, Inc., USA.  File:
	util/dict.c.

19990422

	Robustness: Lotus mail sends MAIL FROM: <@> instead of <>.
	Problem reported by Erik Toubro Nielsen, IFAD, Denmark.
	Files:  trivial-rewrite/rewrite.c (@ becomes empty address)
	and global/rewrite_clnt.c (allow empty response).

	Bugfix: showq could segfault when writing to a broken pipe.
	Problem reported by Bryan Fullerton, Canadian Broadcasting
	Corporation. Files: util/vbuf_print.c.

	Cleanup: got rid of the "fatal: write error: Broken pipe"
	message when mailq output is piped into a program that
	terminates early.

	Cleanup: bounce messages are multipart/mixed with the error
	report as part of the first message segment, because users
	had trouble extracting the delivery error report from the
	attachment.

19990423

	Cleanup: the default junk mail reject code is now 554
	(service unavailable) rather than 550 (user unknown).

	Folded in the updated dict_ldap.c module by John Hensley,
	Merit Network, USA.

	Folded in the vstream_popen.c updates by Philip A.
	Prindeville, Mirapoint, Inc., USA.  This copies a lot of
	code from pipe_command(); the next step is to trim that
	module.

19990425

	Workaround: renamed config.h to mail_conf.h etc. in order
	to avoid name collisions with LINUX (yes, they have a system
	include file called config.h). For compatibility with people
	who have written software for Postfix, there's a config.h
	that aliases the old names to the new ones. That file will
	go away eventually.

19990426

	Feature: error mailer, in order to easily bounce mail for
	specific destinations. In the transport table, specify:
	"host.domain    error:host.domain is unavailable". Too bad
	that the transport table triggers on destination domain
	only; it would be nice to bounce specific users as well.

19990427

	Cleanup: "disable_dns_lookups = yes" now should disable
	all DNS lookups by the SMTP client.

19990428

	Bugfix: with DBM files, Postfix was watching the "dir" file
	modification time for changes. It should be watching the
	"pag" file instead.

19990429

	Cleanup: all callbacks in the master to server API now pass
	on the service name and the application-specific argument
	vector. Files: master/*server.c.

19990504

	Feature: conditional macro expansion. ${name?text} expands
	to text when name is defined, otherwise the result is empty.
	${name:text} expands to text when name is undefined,
	otherwise the result is empty. File: util/mac_expand.c.

	Feature: conditional macro expansion of the forward_path
	configuration parameters of $user, $home, $shell, $recipient,
	$extension, $domain, $mailbox and $recipient_delimiter.
	Files:  local/dotforward.c, local/local_expand.c.

19990506

	Cleanup: eliminated misleading warnings about unknown HELO
	etc. SMTPD restrictions when the HELO etc. information is
	not available. File: smtpd/smtpd_check.c.

19990507

	Feature: all smtpd reject messages now contain the MAIL
	FROM and RCPT TO addresses, if available.

19990508

	Feature: conditional macro expansion of the luser_relay
	configuration parameter. It is no longer possible to specify
	/file/name or "|command" destinations. File: local/unknown.c.

	Cleanup: changed the mac_parse interface so that the
	application callback routine can return status information.
	Updated the dict_regexp and dict_pcre modules accordingly.

	Cleanup: changed the mac_expand interface so that the caller
	provides an attribute lookup routine, instead of having to
	provide a copy of all attributes upfront. Files:
	util/mac_expand.c, local/local_expand.c.

	Feature: control over how address extensions are propagated
	to other addresses. By default, propagation of unmatched
	address extensions is now restricted to canonical and
	virtual mappings. Specify "propagate_unmatched_extensions
	= canonical, virtual, alias, forward, include" to restore
	previous behavior.

19990509

	Feature: USER, EXTENSION, DOMAIN, RECIPIENT (entire address)
	and MAILBOX (address localpart) environment variables are
	exported to shell commands (including mailbox_command).

	Feature: new command_expansion_filter parameter to control
	what characters may appear in message attributes that are
	exported via environment variables.

	Cleanup: SMTPD reject messages are more informative, and
	more complete sender/recipient information is logged for
	the local sysadmin.

19990510

	Bugfix: missing MIME header in postmaster bounce notices.
	Found by Samuel Tardieu, Ecole Nationale Superieure des
	Telecommunications, France.

	Feature: UCE restrictions are always delayed until RCPT
	TO, VRFY or ETRN. To change back to the default specify
	"smtpd_delay_reject = no" in /etc/postfix/main.cf.

	Bugfix: missing duplicate filter call. This caused too many
	deliveries when a user is listed multiple times in an alias.
	Reported by Hideyuki Suzuki, School of Engineering, University
	of Tokyo. Backed out on 19990512 because it caused problems.
	Fixed 19990513 but needs further study.

	Feature: it is now possible to move queue files back into
	the maildrop queue, so that they can benefit from changes
	in canonical and virtual mappings. In order to make this
	possible, some restrictions on queue file contents were
	relaxed. Files: pickup/pickup.c, cleanup/cleanup_extracted.c.

	Feature: made a start with integrating Joerg Henne's
	dictionary extensions to remove entries and to iterate over
	entries. That code is almost four months old by now.

19990511

	Feature: added a "undeliverable postmaster notification
	discarded" warning when mail is dropped on the floor.
	Requested by Michael Hasenstein, SuSE, Germany.

19990517

	Bugfix: reject_non_fqdn_sender/recipient would pass
	user@[ip_address] regardless of destination. Eric Cholet
	had the honor of suffering from this one.

19990527

	More SMTP client logging for easier debugging: the smtp
	client now logs hostname[ip.addr], and logs every failed
	attempt to reach an MX host, not just the last one.

19990601

	Bugfix: emit a blank line before a MIME boundary; the line
	is part of the boundary. File: bounce/bounce_notify_service.c.
	Wolfgang Segmuller, IBM Research.

19990610

	Bugfix: the "is this the loopback interface" test was
	broken.  Reported by Claus Fischer @microworld.com.  File:
	smtp/smtp_connect.c.

	Usability: added helpful warnings about restrictions that
	are being ignored after check_relay_domains, etc.

	Portability: Reliant Unix support by Gert-Jan Looy, Siemens,
	the Netherlands.

19990611

	Robustness: the postfix-script start-up procedure now
	detects a missing master program, avoiding misleading
	warnings that the mail system is already running.  Fix
	suggested by David E. Smith @technopagan.org.

	Portability: Mac OS X Server Port by Mark Miller @swoon.net.

	Feature: on systems that use dotlock files for mailbox
	locking, the local delivery agent now will attempt to use
	dotlock files when delivering to user-specified files.
	Dotlock files for user-specified destinations are created
	with the privileges of the user. For backwards compatibility,
	Postfix will attempt to create dotlocks for user-specified
	destinations only when the user has parent directory write
	permission.

	Feature: specify "expand_owner_alias = yes" in order to
	use the right-hand side of an owner- alias, instead of
	using the left-hand side address. Needed by Juergen Georgi.

19990622

	Bugfix: the local delivery agent did not set user attributes
	when delivering to root, so that forward_path did not expand
	properly. Found by Jozsef Kadlecsik, KFKI Research Institute
	for Particle and Nuclear Physics, Hungary.  File:
	local/dotforward.c.

	Bugfix: the unix:passwd.byname mechanism is not suitable
	for smtpd access control - the user name would have to end
	in @, or the access control software would have to be
	changed. Removed the example from the RELEASE_NOTES file.

19990623

	Bugfix: the smtp server did not reset the error flag after
	".". Found by James Ponder, Oaktree Internet Solutions Ltd.
	File: smtpd/smtpd.c.

	Bugfix: fencepost error in the doze() routine (an usleep()
	replacement for systems without one). Found by Simon J
	Mudd.  File: util/doze.c.

19990624

	Portability: support for AIX 3.2.5 (!) by Florian Lohoff
	@rfc822.org.

	Portability: Ultrix 4.3 support by Christian von Roques
	@pond.sub.org.

	Feature: mysql support by Scott Cotton and Joshua Marcus,
	Internet Consultants Group, Inc. Files: util/dict_myqsl.*.

19990627

	Bugfix: Postfix is now distributed under the new IBM Public
	License (version 1, dated June 14, 1999).

	Feature: the Delivered-To: header can be turned off for
	delivery to command or file/mailbox. The default setting
	is:  "prepend_delivered_header = command, file, forward".
	Turning off the Delivered-To: header when forwarding mail
	is not recommended.

19990628

	Feature: the postlock command now returns EX_TEMPFAIL when
	the destination file is locked by another process.

19990705

	Workaround: in the SMTP client, move the "mail loops back
	to myself test" from the 220 greeting to the HELO response.
	This change does not weaken the test, and makes Postfix
	more robust against broken software that greets with the
	client hostname.

19990706

	Workaround: in the INSTALL file, use `&&' instead of `;'
	in (cd path; tar ...) pipelines because some UNIX re-invented
	shells don't bail out when cd fails. Matthias Andree
	@stud.uni-dortmund.de.

19990709

	Bugfix: $user was not set when delivering to a non-user.
	Found by Vladimir Ulogov @ rohan.control.att.com when
	configuring a luser_relay that contained $user.

19990714

	Robustness: add PATH statement to Solaris2 chroot setup
	script to avoid running the ucb commands. Problem found by
	Panagiotis Astithas @ ece.ntua.gr.

19990721

	Bugfix: don't claim a "mail loops to myself" error when
	the best MX host was not found in the DNS. Found by Andrew
	McNamara, connect.com.au Pty Ltd. File: smtp/smtp_addr.c.

19990810

	Feature: added "-c config_dir" support to the postconf
	command. This probably means that "-f file" will never be
	implemented.

19990812

	Bugfix: showq didn't print properly when listing a maildrop
	file.  Fix by: Andrew McNamara, connect.com.au Pty Ltd.
	File: showq/showq.c.

	Feature: added SENDER to the list of parameters exported
	to external commands. File: local/command.c. Code by: Lars
	Hecking, National Microelectronics Research Centre, Ireland.

19990813

	Bugfix: sendmail -t (extract recipients from headers) did
	not work when the always_bcc feature was turned on. Reported
	by: Denis Shaposhnikov @ neva.vlink.ru.

19990813
	Bugfix: "sendmail -bd" returns a bogus exit status (the
	child process ID). Fix by Lamont Jones of Hewlett-Packard.
	File:  sendmail/sendmail.c.

19990824

	Bugfix: null pointer dereference while rejecting VRFY before
	MAIL FROM. Found by Laurent Wacrenier @ fr.clara.net.

19990826

	Portability: more MacOS X Server patches; some NEXTSTEP/OPENSTEP
	code that had been removed for the first public beta release;
	NEXTSTEP/OPENSTEP now defaults to netinfo for the aliases
	database.  Submitted by Gerben Wierda.

	Portability: workaround for a FreeBSD 3.x active network
	interface without IP address by Pierre Beyssac @ enst.fr.
	File:  inet_addr_local.c.

19990831

	Workaround: sendmail now prints a warning when installed
	set-uid or when run by a set-uid command. Reportedly, the
	linuxconf software turns on the set-uid bit, which could
	open up a security loophole. File: sendmail/sendmail.c.

	Bugfix: Postfix daemons now temporarily lock DB/DBM files
	while opening them, in order to avoid "invalid argument"
	errors because some other process is changing the file.
	Files: util/dict_db.c, util/dict_dbm.c.

	Robustness: Postfix locks queue files during delivery, to
	prevent duplicate delivery when "postfix reload" is
	immediately followed by "sendmail -q". This involves a
	change of the deliver_request interface:  delivery agents
	no longer need to open and close queue files explicitly.
	Files:  global/deliver_request.c, pipe/pipe.c, smtp/smtp.c,
	local/local.c, qmgr/qmgr_active.c, qmgr/qmgr_message.c.

	Feature: reject_unauth_destination SMTP recipient restriction
	that rejects destinations not in $relay_domains.  By Lamont
	Jones of Hewlett-Packard.  File: smtpd/smtpd_check.c.

	Security: do not allow weird characters in the expansion
	of $names that appear in $forward_path. Just like with
	shell commands, replace bad characters in expansions by
	underscores.  Configuration parameter:  forward_expansion_filter.

19990902

	Documentation: added a sample postfix alias to the examples
	in the INSTALL document and in the conf/aliases file.
	Reminded by Simon J.  Mudd @ alltrading.com.

19990903

	Bugfix: in case of some error conditions the pickup daemon
	could leak small amounts of memory.

19990905

	Bugfix: no more "skipping further client input" warnings
	when a message header is rejected.

	Feature: reject_unauth_pipelining SMTP restriction that
	rejects mail from clients that improperly use SMTP command
	pipelining.

	Robustness: the LDAP client by default no longer looks up
	names containing "*". See the lookup_wildcards feature in
	LDAP_README. Update by John Hensley.

	Documentation: address masquerading with exceptions FAQ by
	Jim Seymour @ jimsun.LinxNet.com.

	Bugfix: mysql reconnect after disconnect by Scott Cotton
	Internet Consultants Group, Inc. File: util/dict_myqsl.c.

	Portability: the Postfix to PCRE interface now expects
	version 2.08.  Postfix is no longer compatible with PCRE
	versions before 2.6.

19990906

	Feature: INSTALL.sh script that makes Postfix installation
	a bit less painful. This script can be used for installing
	and for upgrading Postfix. It replaces files instead of
	overwriting them, and leaves existing configuration and
	queue files intact.

19990907

	Bugfix: reject_non_fqdn_sender used the wrong test to see
	if a sender address was given and could dump core. This
	must have been broken ever since the UCE tests were moved
	to the RCPT TO stage in 19990510.

	Bugfix: check_sender_access was recognized as a valid
	restriction name only if a sender had been specified.

19990908

	Portability: Unixware has <sysexits.h> only after sendmail
	is installed. Changed postlock.c to use global/sys_exits.h.

19990909

	Performance: added one-entry cache to the address rewriting
	client and to the address resolving client. This is because
	UCE restrictions tend to produce the same query repeatedly.
	Files: global/rewrite_clnt.c, global/resolve_clnt.c.

	Feature: the UCE restrictions are now fully recursive so
	you can have per-client/helo/sender/recipient restrictions.
	Instead of OK, REJECT or [45]xx, you can specify a sequence
	of restrictions on the right-hand side of an SMTPD access
	table. This means you can no longer use canonical/virtual/alias
	maps as SMTPD access tables. But the loss is compensated
	for.  File: smtpd/smtpd_access.c.

	Feature: restriction classes, essentially a short-hand for
	restriction lists.  These short hands are useful mostly on
	the right-hand side of SMTPD access tables. You must use
	restriction classes in order to have lookup tables on the
	right-hand side of an SMTPD access table.  File:
	smtpd/smtpd_access.c.

	Feature: "permit_recipient_map maptype:mapname" permits a
	recipient address when it matches the specified table.
	Lookups are done just as with canonical/virtual maps.  With
	this, you can also use passwd/aliases as SMTPD access maps.
	File: smtpd/smtpd_access.c.

19990910

	Changed "permit_address_map" into "permit_recipient_map"
	and added a test for the case that they specify a lookup
	table on the right-hand side of an SMTPD access map.  File:
	smtpd/smtpd_access.c.

	Cleanup: removed spurious sender address checks for <>.
	File: smtpd/smtpd_check.c.

	Cleanup: the smtp client now consistently logs host[address]
	for all connection attempts.

19990919

	Feature: in an SMTPD access map, an all-numeric right-hand
	side now means OK, for better cooperation with out-of-band
	authentication mechanisms.

19990922

	Security: recipient addresses must not start with '-', in
	order to protect external commands. The old behavior is
	re-instated when main.cf specifies:  "allow_min_user =
	yes".  Credits to Mads Kiilerich @ Kiilerich.com.  File:
	qmgr/qmgr_message.c.

	Bugfix: after 19990831, the queue manager would throw away
	defer logs after deferring mail to known-to-be-dead hosts
	or message transports. This means that in some cases, mailq
	would not show why mail is delayed, and that delayed mail
	could be sent back with recipients missing from the error
	report. Reported by Giulio Orsero @ tiscalinet.it.

19990923

	Bugfix: the above bugfix broke bounces of mail with bad
	address syntax and relocated users. Problem diagnosed by
	Dick Porter @ acm.org.

	Documentation: added DO NOT EDIT THIS FILE. EDIT MAIN.CF
	INSTEAD notices to the sample-xxx.cf files.

19991007

	Compatibility: ignore the sendmail -U (initial user
	submission) option. Thomas Quinot @ cuivre.fr.eu.org.

19991103

	Code cleanup: don't send postmaster notifications when an
	SMTP client sends a DATA command while no recipients were
	accepted.  This can happen when a pipelined client runs
	into an UCE block. File:  smtpd/smtpd.c.

19991104

	Robustness: do not apply UCE header checks to mail that is
	generated by Postfix (bounces, forwarded mail etc.).  Files:
	smtpd/smtpd.c, pickup/pickup.c, cleanup/cleanup_message.c.

	Robustness: new generic watchdog module that can deal with
	clocks that jump occasionally. Files: util/watchdog.c,
	master/master.c, master/{single,multi,trigger}_server.c.
	This hopefully ends the false watchdog alarms that happen
	when clocks are set or when laptops are resumed.

	Code cleanup: BSMTP requires dot quoting as per RFC 821.
	Based on code by Florian Lohoff @ rfc822.org. Files:
	global/mail_copy.[hc], pipe/pipe.c.

19991105

	Bugfix: the crufty code in inet_addr_local() did not find
	IP aliases. File: util/inet_addr_local.c.

	Portability: the INSTALL.sh utility did not find users or
	groups in NIS or Netinfo tables. The script no longer
	searches the /etc/passwd and /etc/group files.  Instead it
	now queries the unix:passwd.byname and unix:group.byname
	maps.  For this, a -q (query) option was added to postmap
	(and to postalias, for symmetry).  Files: util/dict_unix.c,
	postalias/postalias.c, postmap/postmap.c, INSTALL.sh.

	Bugfix: LDAP lookup timeout settings were ignored. Patch
	by John Hensley. File: util/dict_ldap.c.

19991108

	Bugfix: when doing a fresh install, INSTALL.sh didn't set
	main.cf:mail_owner properly (Simon J. Mudd).

19991109

	Bugfix: when doing a fresh install, INSTALL.sh no longer
	worked (missing main.cf file).  Fix: add "-c" argument to
	the postmap commands (Lars Hecking @ nmrc.ucc.ie).

	Documentation: removed spurious "do not edit" comments from
	the sample pcre and regexp configuration files.

19991110-13

	Code cleanup: greatly simplified the SMTPD command parser
	and somewhat simplified the code that groks RFC 822-style
	address syntax in MAIL FROM and RCPT TO commands.

	New parameter: strict_rfc821_envelopes (default: no) to
	reject RFC 822 address forms (with comments etc.) in SMTP
	envelopes. By default, the Postfix SMTP server only logs
	a warning.

19991113

	Oops, also updated the SMTP VRFY code in the light of
	changes to the SMTPD command parser.

	Cleanup: the local delivery agent now explicitly rejects
	recipients with an empty username.

19991114

	Workaround: with some gawk versions, postconf/extract.awk
	reportedly returns a non-zero exit status upon success.
	Added an explicit exit(0) statement.

19991115

	Feature: DNS TXT record lookup support, based on initial
	code by Simon J Mudd.  File: dns/dns_lookup.c.

	Feature: RBL TXT record lookups, based on initial code by
	Simon J Mudd.  File: smtpd/smtpd_check.c.

	Feature: permit_auth_destination restriction based on code
	by Jesper Skriver @ skriver.dk.

	Code cleanup: the transport table now can override all
	deliveries, including local ones.

19991116

	Code cleanup: a new "local_transports" configuration
	parameter explicitly lists all transports that deliver mail
	locally. The first name listed there is the default local
	transport.  This is the end of the "empty next-hop hostname"
	hack to indicate that a destination is local.  Files:
	trivial-rewrite/resolve.c, global/local_transport.[hc]

	Feature: "postconf -m" shows what lookup table types are
	available.  Code by Scott Cotton, Internet Consultants
	Group, Inc.

	Feature: "postconf -e" edits any number of main.cf parameters.
	The edit is done on a copy, and the copy is renamed into
	the place of the original. File: postconf/postconf.c,
	util/readlline.[hc].

19991117

	Portability: SunOS 4 has no SA_RESTART. File: util/watchdog.c.

	Feature: on systems with h_errno, the "reject_unknown_client"
	restriction now distinguishes between soft errors (always
	reply with 450) and hard errors (use the user-specified
	reply code).  This should lessen the load by broken mailers
	that re-connect once a minute.

	Feature: forward/reverse name/address check for SMTP client
	hostnames. This fends off some hypothetical attacks by
	spammers who are in control of their own reverse mapping.

	Robustness: postconf no longer aborts when it can't figure
	out the local domain name; it prints a warning instead.
	This allows you to use "postconf -e" to fix the problem.

19991118

	Bugfix: the RFC822 address parser would misparse a leading
	\ as an atom all by itself. Problem reported by Keith
	Stevenson @ louisville.edu. File: global/tok822_parse.c.

19991119

	Bugfix: tiny memory leak in pipe_command() when fork()
	fails.  File: global/pipe_command.c.

19991120

	Bugfix: reversed test for all-numerical results in SMTPD
	access maps. File: smtpd/smtpd_check.c.

19991121

	Robustness: INSTALL.sh no longer uses postmap for sanity
	checks.

	Feature: INSTALL.sh now has an install_root option.

	Bugfix: INSTALL.sh now installs manual pages with proper
	permissions and ownership.

	Bugfix: the LDAP client did not properly escape special
	characters in lookup keys (patch by John Hensley).  File:
	util/dict_ldap.c.

19991122

	Bugfix: missing absolute path in INSTALL.sh broke fresh
	install.

19991124

	Bugfix: the local delivery agent's recipient duplicate
	filter did not work when configured to use unlimited memory
	(which is not a recommended setting). Patrik Rak @raxoft.cz.

19991125

	Bugfix: postconf didn't have an umask(022) call at the
	beginning (problem experienced by Matthias Andree).

19991126

	Bugfix: DNS TXT records now have string lengths before text
	(Mark Martinec @ nsc.ijs.si).

19991127

	Update: the LDAP client code now supports escapes as per
	RFC2254 (John Hensley).

19991207

	Performance: one message with many recipients no longer
	stops other mail from being delivered. The queue manager
	now frees in-memory recipients as soon as a message is
	delivered to one destination, rather than waiting until
	all in-memory destinations of that message have been tried.
	Patch by Patrik Rak @ raxoft.cz.  Files: qmgr/qmgr_entry.c,
	qmgr/qmgr_message.c.

	Performance: when delivering mail to a huge list of
	recipients, the queue manager now reads more recipients
	from the queue file before delivery concurrency drops too
	low.  Files:  qmgr/qmgr_entry.c, qmgr/qmgr_message.c.

19991208

	Updated LDAP client code by John Hensley with escape
	sequences as per RFC 2254. File: util/dict_ldap.c.

	Updated MYSQL client code by Scott Cotton. File: dict_mysql.c.

	Feature: added -N/-n options to include/exclude terminating
	nulls in keys and values in postmap/postalias DB or DBM
	files. Normally, Postfix uses whatever is appropriate for
	the host system.  A non-default setting can be necessary
	for inter-operability with third-party software.

	Bugfix: the local delivery agent would deliver to the user
	instead of the .forward file when the .forward file was
	already visited via some non-recursive path. Patch by Patrik
	Rak @ raxoft.cz. Files: global/been_here.c, local/dotforward.c.

	Robustness: attempt to deliver all addresses in the expansion
	of an alias or .forward file, even when some addresses must
	be deferred.  File: local/token.c.

19991211

	Performance: qmgr_fudge_factor controls what percentage of
	delivery resources Postfix will devote to one message.
	With 100%, delivery of one message does not begin before
	delivery of the previous message is completed. This is good
	for list performance, bad for one-to-one mail. With 10%,
	response time for one-to-one mail improves much, but list
	performance suffers. In the worst case, people near the
	start of a mailing list get a burst of postings today,
	while people near the end of the list get that same burst
	of postings a whole day later.  Files: qmgr/qmgr_message.c,
	qmgr/qmgr_entry.c.

	Bugfix: address rewriting would panic on a lone \ at the
	end of a line where an address was expected. Jason Hoos @
	thwack.net. File: global/rewrite_clnt.c.

19991215

	Bugfix: the strict RFC821 envelope address check should
	not be applied to VRFY commands. File: smtpd/smtpd.c.

	Cleanup: permit_recipient_maps is gone, because that could
	only be used inside UCE restrictions.

19991216

	Feature: allow an empty inet_interfaces parameter, just
	like an empty mydestination parameter. It's needed for true
	null clients and for firewalls that deliver no local mail.

	Feature: "disable_vrfy_command = yes" disables some forms
	of address harvesting used by spammers.

	Workaround: added the alias map parameter definition to
	the smtpd code.  This is a symptom of a general problem
	with parameters that have non-empty default values:  unless
	a program explicitly defines such a parameter, the parameter
	defaults to the empty string when used in other parameters.
	There's also a problem with evaluation order.

	Feature: the SMTP server rejects mail for unknown users in
	virtual domains that are defined by Postfix virtual domain
	files. File: smtpd/smtpd_check.c.

	Feature: reject mail for unknown local users at the SMTP
	port.  The local_recipient_maps configuration parameter
	specifies maps with all addresses that are local with
	respect to $mydestination or $inet_interfaces. Example:
	"local_recipient_maps = $alias_maps unix:passwd.byname".
	This feature is disabled by default. You may have to copy
	the passwd file into the chroot jail. File:  smtpd/smtpd_check.c.

	Feature: the sendmail -f option now understands '<user>'
	and even understands address forms with RFC 822-style
	comments.

19991217

	Cleanup: no more UCE checks for VRFY commands. It still
	reports unknown local/virtual users. File:  smtpd/smtpd_check.c.

	Robustness: upon Postfix startup, report discrepancies
	between system files inside and outside the chroot jail.
	Files: conf/postfix-script-nosgid, conf/postfix-script-sgid.

19991218

	Cleanup: INSTALL.sh produces relative symlinks, which is
	necessary when install_root is not /.

19991219

	Documentation: completely reorganized the FAQ and added
	many new entries. Rewrote the UCE html documentation.

	Cleanup: INSTALL.sh uses a configurable directory for
	scratch files, so that it can install from a file system
	that is not writable by the super-user.

	Cleanup: INSTALL.sh gives helpful hints when the "mv"
	command is unable to move symlinks across file system
	boundaries.

19991220

	Cleanup: it is no longer necessary to list $virtual_maps
	as part of the relay_domains definition. The SMTP server
	now by default accepts mail for destinations that match
	$inet_interfaces, $mydestination or $virtual_maps, whether
	or not these are specified in relay_domains.  We still need
	the ugly "virtual.domain whatever" hack in the virtual
	maps. Files:  smtpd/smtpd_check.c and lots of documentation
	and sample config files.

19991221

	Removed cyrus -q flag (ignore quotas) from the sample
	master.cf file.

19991223

	Bugfix: smtpd should not check for unknown users when
	running in stand-alone (sendmail -bs) mode. Problem
	experienced by Chuck Mead.  File: smtpd/smtpd.c.

	Retraction: the "local_transports" configuration parameter
	is gone. Adjusted code and documentation accordingly.
	Instead, use just one "local_transport" parameter with the
	name of the default local transport. Files:  smtpd/smtpd_check.c,
	qmgr/qmgr_message.c, trivial-rewrite/ resolve.c, local/resolve.c.

	Feature: Postfix SMTPD now insists that the smtpd recipient
	restrictions contain at least one restriction that by
	default rejects mail. This should make it much more difficult
	to change Postfix into an open relay.  File:  smtpd/smtpd_check.c.

	Retraction: null-length inet_interfaces is too confusing.

19991224

	Bugfix: the relative symlink code in INSTALL.sh computed
	the ../ prefix from the wrong pathname.

1999122[5-7]

	Feature: "allow_untrusted_routing = no" (default) prevents
	forwarding of source-routed mail from untrusted clients to
	destinations that are blessed by the relay_domains parameter
	(example:  user@domain2@domain1 etc.).  This plugs a mail
	relay loophole where a backup MX host forwards junk mail
	to a primary MX host which forwards the junk to the Internet.
	Files:  global/quote_822_local.c, smtp/quote_821_local.c,
	trivial-rewrite/rewrite.c, trivial-rewrite/resolve.c,
	smtp/smtpd_check.c.

	In order to make this possible, the Postfix resolver data
	structure and protocol has changed, so that all resolver
	clients need to be re-compiled.

	Side effect from the above change: from now on, an address
	with @ in the recipient localpart no longer bounces with
	"user unknown" but instead is rejected with "relay access
	denied" or "source-routed relay access denied".

19991227

	Workaround: the BSD/OS "mkdir -p" and "cmp -s" commands
	misbehave on boundary cases: directory exists or file does
	not exist. Those who re-invent...

19991229

	Added the no source routing info requirement to addresses
	accepted by the permit_mx_backup UCE restriction.

19991230

	Added a spawn daemon (not compiled and installed by default)
	to enable LMTP delivery over UNIX-domain sockets. The goal
	is to simplify the experimental LMTP delivery agent by
	ripping out the privileged code that forks the LMTP server.

20000102

	Clarified documentation after early feedback on the 19991231
	release by Drew Derbyshire, Ollivier Robert, Khetan Gajjar.

	Sanity check: a common error is to list Postfix virtual
	domains in the mydestination parameter. This causes the
	new optional local_recipient_maps feature to reject mail
	for virtual users.  The SMTP server now explicitly tests
	for this common error and logs a warning instead of refusing
	the mail.  File:  smtpd/smtpd_check.c.

20000104

	Bugfix: a case sensitivity bug had slipped through in the
	anti-relaying code, causing mail for USER@VIRTUAL.DOMAIN
	to be rejected with "relay access denied". This was found
	by Jim Maenpaa @ jmm.com.

	Questionable feature: set "smtp_skip_5xx_greeting = yes"
	to make Postfix more sendmail compatible, even though this
	is wrong, IMNSHO. File: smtp/smtp_connect.c.

	Portability: Ultrix patch from Simon Burge @ thistledown.com.au.

	Portability: Siemens Pyramid (dcosx) patch by Thomas D.
	Knox @ vushta.com.

	Performance: FreeBSD has bidirectional pipes that are faster
	than socketpairs. Anticipating on more platform-specific
	optimizations, all duplex pipe plumbing is now isolated in
	a duplex_pipe.c module that provides a system-independent
	interface.

20000105

	Cleanup: the INSTALL.sh script now updates the sample files
	in /etc/postfix even when main.cf exists.

20000106

	Bugfix: the SMTP server should consult the relocated map
	for virtual destinations (Denis Shaposhnikov). Files:
	smtpd/smtpd.c smtpd/smtpd_check.c.

20000108

	Workaround: rename() over NFS can fail with ENOENT even
	when the operation succeeds (Graham Orndorff @ WebTV). This
	is not news. Any non-idempotent operation can fail over
	NFS when the NFS server's acknowledgment is lost and the
	NFS client code retries the operation (other examples are:
	create, symlink, link, unlink, mkdir, rmdir).  Postfix has
	workarounds for the cases where this is most likely to
	cause trouble. Files:  util/sane_{rename,link}.[hc].  If
	you want reliable mail system, do not use NFS.

20000115

	Workaround: better detection of bad hardware. Added SIGBUS
	to the list of signals that the master will log before
	exiting.

20000122

	Portability: preliminary SCO5 port Christopher Wong @
	csports.com. This still needs to a workaround for "find"
	not supporting "-type s" (actually, UNIX-domain sockets
	have no unique representation in the file system and show
	up as FIFOs).

20000115-22

	Bugfix: in case of a too long message header, don't extract
	recipients from message headers.  With the previous behavior,
	Bcc information could be left in the message body, as one
	person found out the hard way.  Files:  cleanup/cleanup.c,
	cleanup/cleanup_extracted.c, global/cleanup_user.h.

20000124

	Whatever: RFC 1869 amends RFC 821 and specifies that code
	555 is to be used when a MAIL FROM or RCPT TO parameter is
	not implemented or not recognized. Russ Allbery @stanford.edu.
	This reply code is added to the list of reply codes that
	cause the Postfix SMTP client to mail a transcript to the
	postmaster.  File: smtp/smtp_trouble.c.

20000126

	Emergency feature: qmgr_site_hog_factor (default: 90 percent)
	limits the amount of resources that Postfix devotes to a
	single destination. With less than 100, Postfix defers the
	excess mail so that one site with a large backlog does not
	block other deliveries. Files: qmgr/qmgr.c, qmgr/qmgr_message.c.

20000128

	Cleanup: the queue manager no longer replaces the nexthop
	field by the recipient localpart when a destination matches
	$mydestination/$inet_interfaces. The price is the introduction
	of a new parameter local_destination_recipient_limit which
	defaults to 1 in order to maintain backwards compatibility.
	Files: qmgr/qmgr.c, qmgr/qmgr_message.c.

20000129

	Bugfix: extracted recipients were misfiled when a message
	was moved back to the maildrop queue. But they still worked
	due to a coincidence.

	Feature: bounce_recip() bounces a recipient immediately
	without accessing a bounce logfile.  This is necessary for
	VERP bounces, for bounces by delivery agents that change
	the sender address, and for bounces that for some reason
	must not use temporary logfiles.  Files: global/bounce.c,
	bounce/bounce_recip_service.c.

20000130

	Bugfix: the too long header fix of 20000115-22 lost mail
	with too long headers that didn't need to extract recipients
	from message headers.

	Bugfix: the too long header fix of 20000115-22 lost mail
	without (blank line + message body).

	Code rewrite: reorganized the cleanup daemon source code
	so that the cleanup service can be called one record at a
	time (see cleanup/cleanup_api.c); also got rid of the global
	state variables and fixed a couple bugs that were introduced
	with 20000115-22.

20000204

	Feature: in daemon mode, the MAIL FROM size check can be
	postponed until RCPT TO so that Postfix can log sender and
	recipient. Simon J Mudd.  Files: smtpd/smtpd.c

	Robustness: limit the number of recipient addresses that
	can be extracted from message headers. Parameter:
	extract_recipient_limit (default:  10240). Files:
	cleanup/cleanup_message.c, cleanup/cleanup_extracted.c.

	Cleanup: the message header reject logging now includes
	sender and recipient address (if possible), so that the
	logging looks more like the other reject logging.  File:
	cleanup/cleanup_message.c.

	Documentation: added sections on regular expression tables
	to the access, canonical, virtual, transport and relocated
	man pages, and write new man pages that are specific to
	regular expressions: pcre_table.5 and regexp_table.5.

20000214

	Bugfix: postconf reported some parameters more than once
	because the parameter extracting script didn't recognize
	lines that differ in whitespace only. File: postconf/extract.awk.
	Reported by Kenn Martin.

20000221

	Logging: the SMTP client now logs log host+port when it is
	unable to connect to a non-MX host, just like it logs
	host+port when unable to connect to an MX host.

20000226

	Bugfix: the SMTP server's "User unknown" test didn't notice
	LDAP etc. dictionary access errors. The code now reports
	a 450 status (try again instead of bounce) if the reply is
	not definitive.  File: smtp/smtpd_check.c.

	Robustness: the smtp-source program could stall when making
	hundreds of parallel connections to a Postfix system with
	only one SMTP server process. The fix is to use non-blocking
	connect() calls, very carefully. File: smtpstone/smtp-source.c.

20000303

	Feature: with smtp_always_send_ehlo the SMTP client will
	send EHLO regardless of the content of the SMTP server's
	greeting.  File: smtp/smtp_proto.c.

20000304

	Feature: DICT_FLAG_SYNC_UPDATE flag for synchronous dictionary
	updates, if supported by the underlying mechanism. Files:
	util/dict.h, util/dict_open.c, util/dict_db.c.

20000307

	Cleanup: the manual pages in Postfix configuration files
	no longer contain troff formatting codes.  The text is now
	generated from prototype files in a new "proto" subdirectory.
	Requested by Matthias Andree @ stud.uni-dortmund.de.

20000308

	Bugfix: the unused db and dbm "delete" routines would
	clobber the per-dictionary flags when called before reading
	or writing the table. Files: util/dict_dbm.c, util/dict_db.c.
	Lutz Jaenicke @ aet.TU-Cottbus.DE.

	Bugfix: the SMTP server would produce a cryptic message
	when a queue file write error happened before it had written
	any recipients.  Keith Stevenson. File: smtpd/smtpd.c.

	Robustness: the db and dbm "delete" routines didn't adjust
	to dictionaries with/without one trailing null in lookup
	keys and values. Did a complete rewrite of the routines.
	Files: util/dict_db.c, util/dict_dbm.c.

	Feature: specify "-d key" to postalias or postmap in order
	to remove one key. This still needs to be generalized to
	multi-key removal (read stdin?). Files: postmap/postmap.c,
	postalias/postalias.c.

	Test: added test targets for the dictionary delete operations.
	Files: util/Makefile.in, util/dict_test.{c,in,ref}.

	Feature: added data offset and recipient count fields to
	the first queue file record output from the cleanup daemon.
	The recipient counts provides an initial estimate for a
	more advanced queue manager scheduling algorithm. Files:
	cleanup/cleanup_envelope.c, cleanup/cleanup_extracted.c.

20000311

	Portability: HP-UX awk can't handle bare { in regexps
	(Lamont Jones. HP). File: postconf/extract.awk.

	Compatibility: sendmail now recognizes '.' as end of input.
	File: sendmail/sendmail.c.

20000313

	Compatibility: dtcm (CDE desktop calendar manager) leaks
	a file descriptor into its child process, and requires that
	sendmail closes the descriptor, otherwise mail notification
	will hang.  These GUI programmers never figured out that
	the child process must close the writing end of a pipe.
	File:  sendmail/sendmail.c.

20000314

	Feature: SASL authentication in the SMTP server and client.
	Based on code contributed by Till Franke, SuSE.  Specify:
	"smtpd_sasl_auth_enable = yes" and "smtp_sasl_auth_enable
	= yes". The "permit_sasl_authenticated" UCE restriction
	gives special treatment to authenticated clients.

20000315

	Workaround: added -blibpath option for AIX 4.x, to close
	hole in case postdrop needs to be set-gid.

20000320

	Portability: FreeBSD 5.x added to the list of supported
	systems (Mark Huizer).

20000323

	Portability: INSTALL.sh looks if sendmail is in /usr/lib
	rather than in /usr/sbin.

20000326

	Bugfix: settings in one mysql configuration file would act
	as the implicit defaults for the next one, which could be
	confusing.  Patch by Scott Cotton. File: util/dict_mysql.c.

	Robustness: limit the number of "junk" commands that can
	be issued in an SMTP session (ex.: NOOP, VRFY, ETRN, RSET).
	Problem report by Michael Ju. Tokarev @ tls.msk.ru.  Files:
	global/mail_params.h, smtpd/smtpd.c.

20000413

	Portability: more MacOS X patches by Gerben Wierda.

	Bugfix: RFC 822 requires the presence of at least one
	destination message header. The cleanup daemon now generates
	a generic "To: undisclosed-recipients:;" message header
	when no destination header is present.  The header content
	is specified with the undisclosed_recipients_header parameter.
	Problem pointed out by Geoff Gibbs, UK-Human Genome Mapping
	Project-Resource Centre.

20000416

	Workaround: allow <(comment)> as SMTP MAIL FROM address.

20000417

	The SASL authentication in the SMTP server and client works,
	but only on Linux and Solaris, neither of which I wish to
	run on my laptop.

20000418

	Added LMTP support to the smtp-source and smtp-sink utilities
	so that I don't have to install Cyrus IMAP just to test
	LMTP.

20000419

	Bugfix: removed the () from the tokenized representation
	of RFC 822 comments, so that comments with \( or \) can be
	unparsed correctly.  Problem reported by Bodo Moeller.

20000423

	Bugfix: mail_copy() could prepend > or . in the middle of
	long lines. Found by code inspection.

20000427

	New code: unescape module that translates C escape sequences
	into their equivalent character values.  File: util/unescape.c.

	Feature: the pipe mailer now has a way to specify the output
	record delimiter (for example, eol=\r\n). This is necessary
	for transports that require CRLF instead of UNIX-style LF.

20000502

	In order to support timeouts more conveniently, VSTREAMs
	now have built into them the concept of timeout.  Instead
	of calling read() and write(), the low-level VSTREAM
	interface now by default uses timed_read() and timed_write()
	which receive a timeout parameter; vstream_ctl(stream,
	VSTREAM_CTL_TIMEOUT...) sets the timeout deadline on a
	stream, and vstream_ftimeout(stream) queries a stream for
	timeout errors.  This change simplified timeout handling
	considerably.  Files: util/vbuf.h, util/vstream.[hc],
	global/smtp_stream.c, global/timed_ipc.c.

20000504

	Added application context to VSTREAMs, which is passed on
	transparently to application-provided read/write routines.
	vstream_ctl(stream, VSTREAM_CTL_CONTEXT...) sets the context.
	Files:  util/vstream.[hc].

	Added vstream_setjmp() and vstream_longjmp() support to
	make exception handling more convenient. Turn on exception
	handling with vstream_ctl(stream, VSTREAM_CTL_EXCEPT...).
	Files:  util/vstream.[hc].

	Cleaned up the smtp_stream module further and got rid of
	the global state that limited the use of this module to
	one stream per process. Files: global/smtp_stream.[hc].

20000505

	Bugfix: the SMTP server now flushes unwritten output before
	tarpit delays, to avoid protocol timeouts in pipelined
	sessions when a client causes lots of errors. Found by
	Lamont Jones, HP. File:  smtpd/smtpd_chat.c.

	Finished the LMTP client, which is based on a modified
	version of the SMTP client by Philippe Prindeville, Mirapoint,
	Inc., later modified by Amos Gouaux, UTDallas, and then
	Wietse ripped it all up again. Currently this talks LMTP
	over TCP only.

	Feature: override main.cf parameters in master.cf. Specify
	"-o parameter=value" after the program name. This allows
	you to selectively override myhostname etc. See also the
	new smtp_bind_address parameter below.

20000506

	Convenience: the LMTP and SMTP clients now append the local
	domain to unqualified nexthop destinations. This makes it
	more convenient to set up transport maps. Files:
	lmtp/lmtp_addr.c, smtp/smtp_addr.c.

	Sendmail compatibility: the Postfix SMTP client now skips
	servers that greet the client with a 4xx or 5xx status
	code.  To disable, set both smtp_skip_4xx_greeting and
	smtp_skip_5xx_greeting to "no".

20000507

	Portability: NetBSD has migrated to /etc/mail/aliases. We
	can expect to see this happen more often when systems start
	shipping Sendmail 8.10. File: util/sys_defs.h

	Updated LDAP code by John Hensley, with support for
	dereferencing of LDAP aliases, which have nothing to do
	with Postfix aliases.

	Feature: "smtp_bind_address=x.x.x.x" specifies the source
	IP address for SMTP client connections. Specify in master.cf
	as "smtp -o smtp_bind_address=x.x.x.x" in order to give
	different delivery agents different source addresses.

20000510

	Cleanup: mailbox_transport did not work with the lmtp
	delivery agent. This dates back to when Postfix used empty
	nexthop information to indicate that a destination was
	local. File: global/deliver_pass.c.

	Bugfix: configuration parameters for one mysql dictionary
	would become default settings for the next one. File:
	dict_mysql.c. This patch was merged into Postfix a while
	back but apparently that Postfix version was nuked when
	other parts were redesigned. Update by Scott Cotton.

	Bugfix: some Postfix delivery agents would abort on addresses
	of the form `stuff@.' which could be generated only locally.
	Found by Patrik Rak. File:  trivial-rewrite/resolve.c.

	Third-party Berkeley DB support for HP-UX by Lamont Jones.
	File: makedefs.

20000511

	Bugfix: Postfix would incorrectly reject domain names with
	adjacent - characters. File: util/valid_hostname.c.

	Bugfix: the 20000505 pipeline tarpit delay flush was wrong
	and caused the client and server to get out of phase. Yuck!

20000513

	Feature: VSTREAMs now have the concept of last fill/flush
	time, which is needed to prevent timeouts with pipelined
	SMTP sessions as detailed in the next item.

	Bugfix: delayed SMTP command/reply flushing to prevent
	sender delays from accumulating too much and causing timeouts
	with pipelined sessions.  For example, client-side delays
	happen when a client does DNS lookups to replace hostname
	aliases in MAIL FROM or RCPT TO commands; server-side delays
	happen when an UCE restriction involves a time-consuming
	DNS lookup, or when a server generates tarpit delays.
	Files:  lmtp/lmtp_proto.c, smtp/smtp_proto.c, smtpd/smtpd_chat.c.

	Portability: define ANAL_CAST for compilation environments
	that reject explicit casts between pointers and integral
	types. File: util/sys_defs.h, master/*server.c.  Upon closer
	investigation, this turned out to be the result of someone's
	compiler configuration preferences.  Therefore the change
	is likely to go away after a code cleanup.

20000514

	Feature: mysql client support for multi-valued queries
	(select email, email2 from aliastbl where username='$local')
	By Loic Le Loarer @ m4x.org. File: util/dict_mysql.c.

	Finalized the delayed SMTP command/reply flushing code in
	the SMTP and LMTP clients after lots of testing and review.

20000520

	Robustness: upon receipt of mail, map the mailer-daemon
	sender address back into the magic null string. File:
	cleanup/cleanup_envelope.c.

20000524

	Bugfix: the code for masquerade_exceptions was case sensitive.
	Reported by Eduard Vopicka.  File: cleanup/cleanup_masquerade.c.

20000526

	Feature: experimental queue manager by Patrik Rak with a
	fancy pre-emptive scheduling algorithm that improves delivery
	performance of mail with few recipients. This queue manager
	is made available as "nqmgr".

20000528

	Feature: the SMTP client SASL password file can contain
	entries for destination domain names (the address remote
	part) not just mail server hostnames. File: smtp_sasl_glue.c.

	Feature: smtpd_sasl_local_domain parameter (default:
	$myhostname) to specify the local SASL authentication realm.
	File: smtpd_sasl_glue.c.

	Feature: specify "body_checks=regexp:/file/name" for a very
	crude one line at a time message body content filter.  This
	feature uses the same filtering syntax as the header_checks
	feature.  File:  cleanup/cleanup_message.c. See also the
	conf/sample-filter.cf file.

20000530

	Feature: full content filtering through external software.
	This uses existing interfaces for sending mail to the
	external content filter and for injecting it back into
	Postfix.  Details in FILTER_README.  Files: pickup/pickup.c,
	smtpd/smtpd.c, qmgr/qmgr_message.c.

20000531

	More SASL feedback by Liviu Daia, regarding the use of
	authentication realms. File smtpd/smtpd_sasl_glue.c.

	Added a simple shell-script based content filtering example
	to the FILTER_README file.

	Content filtering support for nqmgr by Patrik Rak.  File:
	nqmgr/qmgr_message.c.

	Renamed "content inspection" etc. to "content filtering"
	in anticipation of a new hook for content inspection that
	only inspects mail without re-injecting it into Postfix.

20000601

	Feature: limit the size of pipe mailer deliveries with the
	size=nnn command-line attribute. Patch by Andrew McNamara.

20000603

	Bugfix: don't try to do SASL authentication when running
	in stand-alone (sendmail -bs) mode. Fix by Liviu Daia.

	Bug: the unauthorized pipelining test fails with single
	recipient mail when smtpd_delay_reject = yes.

20000617

	Bugfix: conf/sample-ldap.cf was no longer up to date with
	reality. Patch by Lamont Jones, HP.

	Bugfix: the maildir delivery routine left temporary files
	lying around after unsuccessful delivery (problem reported
	by Brian Laughton @ Corp.Axxent.Ca).

20000621

	AIX 4.x had POSIX regular expression support all the time
	I was working on Postfix. Better find out late than never.

20000623

	Bugfix: the SMTP server did not reset the so-called junk
	command counter after successful delivery (Mark Hoffman @
	wallst.com).  File: smtpd/smtpd.c.

20000625

	Cleanup: remove Content-Length from incoming mail. The
	sender has no authority over the format of mail as stored
	by the receiving system. File: global/header_opts.h.

	Feature: rewrite Mail-Followup-To: as sender. Files:
	global/header_opts.[hc].

	Cleanup: rewrite Reply-To, Errors-To, Return-Receipt-To as
	sender, so that address masquerading works as expected.
	Files: global/header_opts.c.

	Feature: specify "require_home_directory = yes" to prevent
	mail from being delivered to a user whose home directory
	is not mounted. File: local/dotforward.c.

	Cleanup: the pipe deliver agent no longer appends a blank
	line when the F flag (prepend From_ line) is specified.
	Specify the B flag if you need that blank line. The local
	delivery agent no longer appends a blank line to mail that
	is delivered to external command. Files:  pipe/pipe.c,
	global/mail_copy.[hc].

20000708

	Portability: support for NEXT/OPENSTEP requires extra
	include file in util/watchdog.c (Masaki Murase).

20000715

	Added macros to turn on vstream/vstring/etc. format string
	checking by gcc, in addition to the checking that was
	already implemented with printfck.  File: util/sys_defs.h,
	the macros for PRINTFLIKE and SCANFLIKE. Problem - unlike
	the printfck tool, gcc finds format argument type mismatches
	only in code that isn't #ifdef-ed out.

20000718

	Robustness: make_dirs() now continues when a missing
	directory is created by another process.

20000720

	Feature: the queue manager now logs the number of recipients
	when opening a queue file (a zero recipient count is logged
	with older queue files). File: global/opened.c.

20000726

	Robustness: added watchdog_pat() routine to keep the watchdog
	quiet if a client stays connected for a lot of time. Files:
	util/watchdog.[hc], smtpd/smtpd.c.

20000729

	Robustness: if relayhost is specified but the host does
	not exist, defer mail instead of bouncing it (which would
	lose the mail if the bounce would have to be delivered to
	that same non-existent relayhost). Problem reported by
	Chris Cooper @ maths.ox.ac.uk. File: smtp/smtp_connect.c.

20000821

	Feature: added -r (replace key+value) option to postalias
	and postmap.

	Cleanup: smtpd now replies with 555 when the client sends
	unrecognized RCPT TO parameters, as required by RFC 1869
	(problem report by Robert Norris @ its.monash.edu.au).
	File: smtpd/smtpd.c.

20000822

	Logging: the SMTP server's SASL code logs the authentication
	method along with an authentication failure. Suggested by
	Ronald F. Guilmette @ monkeys.com.

	Workaround: some systems have file size resource limits
	that cannot be represented with the off_t type that is used
	by standard functions such as lseek(2). Problem reported
	by Blaz Zupan @ amis.net.

20000823

	Feature: all this discussion about when to reject mail and
	when not made me decide to implement a TCP-based map type
	so that it becomes relatively simple to implement dynamic
	access controls, for example, hold off mail from an unknown
	client or sender until we have completed some investigation,
	after which we will either reject or accept.

	However, this code is turned off until it is finished.

20000905

	Robustness: the dns client now rejects malformed domain
	names rather than depending on the DNS to report that the
	name does not exist. Linux returns a rather misleading
	server failure code as found out by Patrik Rak. File:
	dns/dns_lookup.c.

20000911

	Feature: added IGNORE keyword to header_checks and body_checks
	to pretend that certain data does not exist. File:
	cleanup/cleanup_message.c.

20000911

	Bugfix: the SASL code did not allow MAIL FROM... AUTH=sender
	without prior authentication. The RFC allows this, although
	one wonders what the reasoning behind this is. File:
	smtpd/smtpd_sasl_proto.c.

20000913

	Bugfix: the rmail script did not handle remote UUCP systems
	that send a from_ line with unqualified envelope sender.
	Reported by Luciano Mannucci.

	Compatibility: don't insert Sender: header lines. Sendmail
	has not done so for at least 10 years, if it ever did.
	Problem reported by Brad Knowles. File: cleanup/cleanup_message.c.

20000916

	Bugfix: when propagating an address extension in a virtual
	or canonical mapping, cleanup accesses memory that is no
	longer allocated. This can happen when the result address
	length is more than 100 characters.  Problem reported by
	Adi Prasaja @ satunet.com. File: global/mail_addr_crunch.c.

	Bugfix: fixed a misleading error message when the cleanup
	server reaches the queue file size limit. Fix by Robby
	Griffin @ MIT.EDU.  File: cleanup/cleanup_extracted.c.

20000917

	Bugfix: postalias -i would complain about duplicate entries
	for the Sendmail-compatible @ entry and for the NIS-compatible
	YP_LAST_MODIFIED and YP_MASTER_NAME entries.

20000918

	Gross hack: prevent looping on a bad recipient by always
	forwarding recipients in :include: files to a new mail
	delivery request, even when owner-listname is not set.
	File: local/recipient.c.

20000919

	Convenience: INSTALL.sh now imports default settings from
	the process environment, in order to make scripting easier.

	Robustness: INSTALL.sh now systematically skips over CVS,
	RCS and SCCS cruft.

	Portability: another fix for NEXTSTEP (Masaki MURASE).
	File: util/spawn_command.h.

20000920

	Cleanup: in a transport table entry, do not ignore port
	numbers specified as [host]:port. In fact, this is now
	becoming the preferred form, in order to avoid parsing
	problems with IPV6 addresses. Postfix supports both forms,
	but future versions will print a warning for the old form.
	Problem reported by Claus Fischer @ werhats.at

	Bugfix: missing initialization for state->sasl_method can
	cause permit_sasl_authenticated to always succeed.  Report
	and fix by Lutz Jaenicke @ aet.TU-Cottbus.DE.

	FAQ: added notes about how to delete, copy or restore queue
	files in a safe manner.

20000921

	File reorganization. No code change except Makefiles. All
	sources are pushed down by one directory level to keep file
	listings usable. Released as 20000922, so that I have a
	reference to run "diff -cr against.

	Bugfix: the spawn service was installed without man pages.

	Portability: MacOSX hints and tips by Joe Block, University
	of Central Florida School of Optics/CREOL

	Portability: The MacOSX gcc compiler does not understand
	the new printf_like/scanf_like attributes. File: util/sys_defs.h.

20000922

	nqmgr update from Patrik Rak for the changed queue manager
	to delivery agent protocol.

	Lame feature: syslog_facility parameter to control where
	syslogd sends Postfix logging (default: syslog_facility =
	mail).  However, errors during command-line parsing are
	still logged with the default syslog facility, as are errors
	while processing the main.cf file (surprise).  Based on
	code by Andrew McNamara.

20000923

	Cleanup: new bounce logfile API so that Postfix can change
	to an extensible bounce logfile format with per-recipient
	sender addresses (needed for VERP and for reporting local
	list delivery problems to the list owner) and other
	attributes.  File:  global/bounce_log.[hc].

	Cleanup: replaced the ad-hoc logfile parsing code in showq
	by something that uses the generic bounce logfile API.

20000924

	Feature: Postfix bounced mail and delayed mail notifications
	now have the standard RFC 1894 form (DSN). The bounce
	service now uses the generic bounce logfile API.  File:
	bounce/bounce_notify_service.c, bounce/bounce_notify_util.c.

	Cleanup: deleted the per-recipient bounce protocol.  Future
	bounce logfiles will support per-recipient bounce addresses.
	Files:  global/bounce.c, bounce/bounce_recip_service.

20000925

	Workaround: sendmail allows MAIL FROM and RCPT TO envelope
	addresses like <the dude <dude@site>> so we will never get
	rid of them. To disallow, specify "strict_rfc821_envelopes
	= yes".  File: smtpd/smtpd.c.

20000926-20001003

	Feature: a "flush" server that keeps per-destination records
	of deferred mail. It is the basis of a faster ETRN and
	"sendmail -qRsite" implementation. This code was rewritten
	half a dozen times.

20000928

	Bugfix: the stricter dns_lookup() argument checks revealed
	that Postfix was doing DNS lookups for domain literals
	([ip.address]) when expanding aliases in MAIL FROM and RCPT
	TO address parameters.  Reported by Jim Littlefield. File:
	smtp/smtp_unalias.c.

	Documentation: added text on the biff=yes/no parameter to
	conf/sample-local.cf (text provided by Paul Wagland,
	relational-consultancy.com.

	Robustness? Log errors from SASL library code as warnings
	not as fatal errors. Files: smtp*/*glue.c.

20001001

	Feature: in master.cf, specify ? after wakeup time to avoid
	waking up services that aren't being used.

20001003

	Feature: the fast flush refresh and purge time interval
	parameters can now be specified in user-specified units by
	providing an appropriate suffix:  s (seconds), m (minutes),
	h (hours), d (days), w (weeks).  unit.  This was needed so
	that I could test the flush server code in a reasonable
	way (its timeouts are normally specified in days or hours,
	and I don't have that much time for testing).  Other Postfix
	time interval parameters will be migrated as time permits.
	Files:  conf/sample-flush.cf, global/mail_conf_time.c,
	postconf/postconf.c.

	Unfeature: qmgr_hog_factor is now disabled by default. It
	was just too confusing. If you don't know what this means,
	do not worry.

20001005

	Cleanup: after "postfix reload" do not penalize mail that
	was in the active queue, but make it ready for immediate
	delivery so that ETRN etc. works as intended. Files:
	*qmgr/qmgr.c, *qmgr/qmgr_active.c.

	Portability: Redhat 7 library interfaces have changed
	incompatibly, which breaks existing software. File makedefs.

	Consistency: the fallback_relay parameter did not understand
	the [] or host:port syntax, and there was no way to suppress
	MX record lookups. Files: smtp/smtp_addr.c, smtp/smtp_connect.c.

	Convenience: you can now specify multiple SMTP destinations
	in the relayhost or fallback_relay configuration parameters.
	The specified destinations will be tried in the specified
	order. File:  smtp/smtp_connect.c.

	Many typographical corrections by Matthias Andree.

20001024

	Documentation: the canonical, virtual etc. manual pages
	did not document the effect of leading whitespace.

20001025

	Bugfix: virtual map expansion stopped too early with
	self-referential aliases. Reported by Michael Douglass @
	datafoundry.net. File: cleanup/cleanup_map1n.c.

20001026

	Horror:  postmap and postalias (newaliases) silently lose
	the file lock while building a lookup table with Berkeley
	DB 2.x and later on Solaris, HP-UX, IRIX, and UNIXWARE.
	The result is that table lookups fail while the table is
	being built, so that mail is lost.  In order to avoid this
	misbehavior one has to use an undocumented feature that is
	NOT available with the DB1.85 compatibility interface.
	Therefore, Postfix now supports three Berkeley DB programming
	interfaces of increasing complexity. File: util/dict_db.c.

	Bugfix: some character manipulations were not portable for
	signed/unsigned characters. Files: global/quote_821_local.c,
	global/quote_822_local.c.

	Workaround: apparently, some software sends SMTP mail that
	begins with "From sender time-stamp". Sendmail silently
	ignores such RFC violating garbage, and therefore Postfix
	needs to jump another hoop.  File: smtpd/smtpd.c.

20001028

	Bugfix: the flush server tried to access config files after
	going to the chroot jail. Found by Lutz Jaenicke, TU-Cottbus.DE.
	File: flush/flush.c.

	Update: revised LDAP module from primary maintainer John
	Hensley, with contributions from many other people. Files:
	util/dict_ldap.c, LDAP_README.

	Update: LINUX2 chroot setup script by Matthias Andree,
	uni-dortmund.de.

	Feature: specify unix:/path/name for LMTP connections over
	UNIX-domain sockets, and specify inet:host or inet:host:port
	for IPV4. If no unix: or inet: is specified, IPV4 is assumed.
	File: lmtp/lmtp_connect.c.

	Feature: added UNIX-domain support to the smtpstone test
	programs in order to test the LMTP client UNIX-domain
	support.

20001030

	Bugfix: further testing in preparation for 19991231-pl10
	revealed that the DB map code was now broken for every
	platform.

20001031

	Performance: the slow start (gradually increase number of
	parallel connections to the same site) was too gentle and
	Postfix would back off too quickly. Files: qmgr/qmgr_queue.c
	and nqmgr/qmgr_queue.c.

20001101

	FAQ update by Ralph Hildebrandt.

20001104

	Portability: RedHat Linux has changed incompatibly, again.
	Fixed with the help of Matthias Andree.  File: makedefs.

20001109

	Cleanup: changed prototype of internal function that did
	not return a useful result. File: src/util/vstream_popen.c.

20001110

	Workaround: the Debian post install script passes an open
	file descriptor into the master server and waits forever.
	Reported by Lamont Jones. File: master/master.c.

20001114

	Compatibility: added sendmail -G (gateway submission) option
	for compatibility with the sendmail rmail command. Requested
	by David Gilbert, Velocet Communications.

20001116

	Documentation: added MAILER-DAEMON to the list of sample
	masquerade_exceptions settings in conf/sample-rewrite.cf.
	Suggested by Karl O. Pinc, pop.artic.edu.

	Performance: the slow start (gradually increase number of
	parallel connections to the same site) was too gentle and
	Postfix would back off too quickly. Files: qmgr/qmgr_queue.c
	and nqmgr/qmgr_queue.c. Yup, changed the same code, again.
	We now allow for a margin above the actual concurrency,
	with the size of the initial destination concurrency.
	Final solution by Patrik Rak.

	Bugfix: the recipient home directory test broke mailbox_transport
	support for non-UNIX recipients.  File:  local/recipient.c.

20001117

	Robustness: additional integrity tests for the nqmgr by
	Patrik Rak. File: nqmgr/qmgr_message.c.

20001118

	Bugfix: the new LDAP client code did not work properly if
	the new ldap_domain parameter was not specified. LaMont
	Jones, HP.  File: util/dict_ldap.c.

	Feature: the soft_bounce safety net is extended to the SMTP
	server. With "soft_bounce = yes", The SMTP server changes
	all 5xx (reject) replies into 4xx (try again) replies.

	Documentation: the virtual(5) man page now documents both
	Postfix-style virtual domains and Sendmail-style virtual
	domains, including their interaction with local usernames,
	aliases and mailing lists. Hopefully, this ends some of
	the confusion surrounding virtual domain support. Updated
	several FAQ entries concerning virtual domain support.

	Documentation: added FAQ entry for the biff service.

20001119

	Bugfix: per-destination queue names were case sensitive so
	that the same site could have multiple queues.  Reported
	by Patrik Rak. Files: *qmgr/qmgr_message.c.

20001120

	Bugfix: per-destination deferred mail logfiles were case
	sensitive so that the same site could have multiple deferred
	mail logfiles, so that not all mail would be flushed with
	ETRN. Reported by Ralph Hildebrandt. Files:  flush/flush.c.

	Portability: added (int) casts to printf-like arguments
	that specify the width of %*letter conversions.  On some
	systems, sizeof and pointer difference expressions are
	wider than an int.  Reported by Valentin Nechayev @ lucky.net.

20001121:

	Compatibility: Postfix now retries delivery when an external
	command is killed by a signal, because people expect such
	behavior from Sendmail. File: global/pipe_command.c.

20001123-30

	Feature: mailbox locking is now configurable. The configuration
	parameter name is "mailbox_delivery_lock". Depending on
	the operating system one can specify one or more of "flock",
	"fcntl" and "dotlock". Use "postconf -l" to find out what
	locking methods Postfix supports. The default setting is
	system dependent.  All mailbox file opens are now done by
	one central mbox_open() routine. This affects the operation
	of the postlock command, and of local delivery to mailbox
	or /file/name.  Files: util/safe_open.c, util/myflock.c,
	global/deliver_flock.c, global/mbox_conf.c, global/mbox_open.c.
	local/mailbox.c, local/file.c, postlock/postlock.c.

	Compatibility: the old sun_mailtool_compatibility parameter
	is being phased out. It still works (by turning off
	flock/fcntl locks), but logs a warning as a reminder that
	it will go away.

	Compatibility: when delivering to /file/name, the local
	delivery agent now logs a warning when it is unable to
	create a /file/name.lock file, and then delivers the mail
	(older Postfix versions would silently deliver).

20001202

	Feature: specify "smtp_never_send_ehlo = no" to disable
	ESMTP.  Someone asked for this long ago. Files:  smtp/smtp.c,
	smtp/smtp_proto.c.

	Feature? Bugfix? The smtp client now skips server replies
	that do not start with "CODE SPACE" or with "CODE HYPHEN",
	and flags them as protocol errors. Older versions silently
	treat "CODE TEXT" as "CODE SPACE TEXT".  File:  smtp/smtp_chat.c.

20001203

	Documentation: postmap(1) and postalias(1) did not document
	the process exit status for "-q key".

20001204

	Bugfix: the Postfix master daemon no longer imported
	MAIL_CONF and some other necessary environment parameters.
	Postfix now has explicit "import_environment" and
	"export_environment" configuration parameters that control
	what environment parameters are shared with non-Postfix
	processes. Files: util/clean_env.c, util/spawn_command.c,
	util/vstream_popen.c, global/pipe_command.c, and everything
	that invokes this code.

20001208

	Bugfix: while processing massive amounts of one-recipient
	mail, qmgr could deadlock for 10 seconds while sending a
	bounce message. All queue manager bounce send requests are
	now implemented asynchronously.  Files: global/abounce.[hc]
	(asynchronous bounce client), qmgr/qmgr_active.c.  Problem
	reported by El Bunzo (webpower.nl) and Tiger Technologies
	(tigertech.com).

20001209

	Feature: mailbox_transport and fallback_transport can now
	have the form transport:nexthop, with suitable defaults
	when either transport or nexthop are omitted, just like in
	the Postfix transport map. This allows you to specify for
	example, "mailbox_transport = lmtp:unix:/file/name". File:
	global/deliver_pass.c.

20001210

	Bugfix: the local_destination_concurrency_limit paramater
	no longer worked as per-user concurrency limit but instead
	worked as per-domain limit, so that the limit of "2" in
	the default main.cf files resulted in poor local delivery
	performance.  Files:  qmgr/qmgr_message.c, qmgr/qmgr_deliver.c.
	Problem reported by David Schweikert (ee.ethz.ch) and Dallas
	Wisehaupt (cynicism.com).

20001210

	Feature: support for MYSQL connections over UNIX-domain
	sockets by Piotr Klaban.  Files: util/dict_mysql.c,
	MYSQL_README.

20001211

	Small dirt: postconf -m produced too much output due to a
	missing "else", and the optional SASL code needed a fix
	for the changed name_mask API.

20001212

	Workaround: due to an error, record type L for "filter
	transport name" was the same as that for the already existing
	record type L for "record not ending in newline", causing
	the pickup daemon to discard all records not ending in
	newline. The code cannot be changed without breaking
	compatibility with queued mail, so the pickup server is
	changed to discard type L records only from the message
	envelope, not from the content. File: pickup/pickup.c.

20001213

	Bugfix: dict_ldap did not properly initialize a handle
	after connection timeout. Problem reported by Alain Thivillon.
	File: util/dict_ldap.c.

20001214

	Feature: local_transport and default_transport now also
	understand the transport[:destination] notation, so that
	all transport config parameters are similar again. File:
	trivial-rewrite/resolve.c, trivial-rewrite/transport.c.

	Code cleanup: mailbox_transport and fallback_transport no
	longer allow the user to omit the transport part of a
	transport:destination specification. That just did not make
	any sense at all. The :destination part is still optional.
	File: global/deliver_pass.c.

	Feature: most time-related configuration parameters take
	a one-letter suffix that specifies the time unit:  s
	(second), m (minutes), h (hours), d (days), w (weeks).
	"postconf -d" output includes the default time unit. Files:
	many.

	Code cleanup: in a CONFIG_TIME_TABLE, the default time unit
	is now always the last character of a default time value.
	It is no longer necessary to specify the default time unit
	separately. This change means that it will not be possible
	to specify default values in the form of function calls,
	but that was unused anyway.  Files: global/mail_conf_time.c,
	and user code.

20001217

	Bugfix: reorganized some code in the MYSQL client to end
	a number of memory allocation/deallocation problems.  This
	code needs more work. File: dict_mysql.c.

20001218

	Bugfix: the MYSQL client did not provide function pointers
	for unimplemented operations, causing "postmap -d" to dump
	core instead if issuing an error message. This is what I
	get for accepting code that I cannot test myself.

20001221

	Code cleanup: configuration parameters that are $name
	expanded at run-time now have their own data type hierarchy
	instead of being piggy-backed on top of strings that are
	$name expanded at program initialization time.  Files:
	global/mail_conf.h, global/mail_conf_raw.c, and code that
	calls it.

20001230

	Update: replaced the default rbl.maps.vix.com setting by
	the current blackholes.mail-abuse.org.

20010102

	Code cleanup: the queue manager is a bit greedier with
	allocating a delivery agent. Problem pointed out by Patrik
	Rak. All bugs in the solution are mine.  Files:
	*qmgr/qmgr_active.c.

20010105

	Bugfix: the FILTER_README shell script example did not
	correctly pass exit status to the parent.

	Bugfix: soft errors in client hostname lookups would be
	treated as hard errors. Fix by Michael Herrmann
	(informatik.tu-muenchen.de). File: smtpd/smtpd_peer.c.

20010110

	Bugfix: the mkdir() EEXIST race condition workaround was
	not complete.  Matthias Andree, Daniel Roesen.  Files:
	global/mail_queue.c, util/make_dirs.c.

20010111

	Portability: IRIX 6.5.10 defines sa_len as a macro, causing
	a name collision with a variable used by Postfix. Roberto
	Totaro, enigma.ethz.ch. File:  smtpstone/smtp-source.c.

20010116

	Bugfix: REJECT by header/body_checks was flagged in smtpd
	as a bounce, should be policy, in order to make postmaster
	notifications more consistent. File: smtpd/smtpd.c.

	Merged updated chroot setup procedure by Matthias Andree.
	Files: examples/chroot-setup/LINUX2.

20010117

	Formatting: changed the seconds and days formats in the
	"your mail is delayed" text so that it does not switch to
	scientific notation. File: bounce/bounce_notify_util.c.

20010119

	Feature: SASL support for the LMTP client. Recent CYRUS
	software requires this for Postfix over TCP sockets.

20010120

	Bugfix: the 20001005 revised fallback_relay support caused
	Postfix to send mail to the fallback even when the local
	machine was an MX host for the final destination. Result:
	mailer loop. Found by Laurent Wacrenier (teaser.fr).  Files:
	smtp/smtp_connect.c, smtp/smtp_addr.c.

20010121

	Workaround: specify "broken_sasl_auth_clients = yes" in
	order to support old Microsoft clients that implement a
	non-standard version of RFC 2554 (AUTH command).

	Workaround: Lotus Domino 5.0.4 violates RFC 2554 and replies
	to EHLO with AUTH=LOGIN. File: smtp/smtp_proto.c.

20010125

	Code cleanup: wrote creator/destructor for dictionary
	objects that provides default methods that trap all attempts
	to perform an unimplemented operation. Based on an ansatz
	by Laurent Wacrenier (teaser.fr).  Files: util/dict*.[hc].

	Code cleanup: INSTALL.sh does not ask questions when stdin
	is not connected to a tty (as in: make install</dev/null).
	To automate a customized install, the script imports
	environment variables for install_root etc.

20010127

	Workaround: randomize the delay between attempts to lock
	a file, so that multiple bounce or defer servers are less
	likely to retry all at the same time.  likely.  File:
	util/rand_sleep.c, global/deliver_flock.c, global/dot_lockfile.c.

20010128

	Code cleanup: complaints about invalid or numeric hostnames
	either provide specific context or are removed as redundant.
	Files:  util/valid_hostname.c dns/dns_lookup.c.

	Code cleanup: new mailbox_size_limit parameter (default:
	20MB).  Until now, the mailbox size limit was the same as
	the message size limit, due to artefact of implementation.
	Files: global/mail_params.h, local/local.c.

	Bugfix: fix for the ldap_domains parameter, both semantics
	and documentation by LaMont Jones. Files:  LDAP_README,
	conf/sample-ldap.cf, util/dict_ldap.c.

	Update: merged in the virtual delivery agent by Andrew
	McNamara.  See VIRTUAL_README for detailed examples.

	Update: merged a re-vamped nqmgr by Patrik Rak.

20010129

	Tweak: several little nqmgr tweaks by Patrik Rak. Files:
	global/mail_params.h, nqmgr/qmgr_job.c.

	Bugfix: the virtual delivery agent did not save maps_find()
	results timely. J?rgen Thomsen, postfix.jth.net. File:
	virtual/mailbox.c.

	Security: disallow regexp tables in the virtual delivery
	agent.  The $1 etc. substitution mechanism gives too much
	power to the sender. File: virtual/mailbox.c.

	Cleanup: clarified documentation and boundary cases in the
	random_sleep() routine.

	Bugfix: the MISSING_USLEEP feature was used backwards.
	Patrik Rak. File: util/random_sleep.c.

20010130

	Workaround: Linux usleep() is void, BSD/Solaris usleep()
	returns int, don't use it. File util/random_sleep.c.

	Made local maildir bounce/defer handling mode consistent
	with local mailbox delivery. File local/maildir.c.

	The smtp client now defers delivery when all MX hosts have
	no A record. File: smtp/smtp_addr.c

	Bundled the man2html and postlink quick hacks so people
	can do their own manual page processing. See scripts in
	the mantools directory.

	Documentation: updated the reference to sendmail in the
	html/index.html page.

	Documentation: added note about the Cisco PIX "fixup smtp"
	bug that causes mail delivery problems when "." and "CRLF"
	arrive in separate packets. File:  html/faq.html.

20010201

	Bugfix: another missing initialization in the mysql client.
	File: util/dict_mysql.c.

	Sanitized time routine by Patrik Rak, to make his nqmgr
	robust against people who set their clock back.  Files:
	util/sane_time.[hc].

	Bumped the default mailbox file size limits to 50MB.

20010202

	Bugfix: fixed the way the master resets the file size limit
	to avoid problems when a Postfix daemon updates a queue
	file.  The file size limit is now increased to INT_MAX if
	it is smaller than INT_MAX, so that it is less likely to
	interfere than the old setting of message_size_limit.

	Feature: disable mailbox size limits for the local and
	virtual delivery agents by setting mailbox_size_limit or
	virtual_mailbox_limit to zero.

20010203

	Update: null candidate patch from Patrik Rak. Files:
	nqmgr/qmgr_entry.c nqmgr/qmgr_job.c nqmgr/qmgr_message.c.

	Cleanup: added one gruesome command to the postlink script
	for hyperlinking nroff manual page output. Word abbreviation
	broke some <a href...> </a> instances across line boundaries.
	sed(1) is an amazing tool.  File: mantools/postlink.

20010204

	Laid the ground work for logging of table accesses. This
	will give more insight into how Postfix uses its lookup
	tables. User interface comes later.  File:  util/dict_debug.c.

20010216

	Bugfix: the pipe delivery agent expanded $size as if it
	were a recipient, instead of expanding it as $nexthop or
	as $sender. Reported by Michael Tokarev. File: pipe/pipe.c.

20010221

	Bugfix: poor LMTP performance for domains that are listed
	in $mydestination, because Postfix would send one recipient
	at a time, with multiple deliveries of recipients of the
	same message in parallel; a similar problem could exist
	with virus scanning and with firewall relay hosts that
	forward mail for $mydestination to an inside machine. This
	behavior is now changed to depend on the transport-specific
	xxx_destination_recipient_limit parameter.  This also means
	that you can now get qmail behavior for SMTP deliveries by
	setting smtp_destination_recipient_limit=1.  File:
	{qmgr,nqmgr}/qmgr_message.c.

	Workaround: Solaris socketpair() can fail with EINTR. Added
	a sane_socketpair.c module that joins the ranks of the
	other sane_whatever workarounds. Reported by Andrew McNamara.
	File: util/sane_socketpair.[hc]

20010222

	Documentation: the default main.cf file has a prominent
	warning that mynetworks should be properly configured in
	order to reject unauthorized mail relay requests from
	strangers.

	Documentation: the INSTALL document, section "mandatory
	configuration file edits" has a section that explains that
	mynetworks should be properly configured in order to reject
	unauthorized mail relay requests from strangers.

20010223

	Documentation: the basic.html document has a section that
	explains that mynetworks should be properly configured in
	order to reject unauthorized mail relay requests from
	strangers.

	Feature: new "mynetworks_style" parameter that controls
	how mynetworks (trusted networks) is derived from the
	inet_interfaces (machine interfaces) setting. Specify
	"class" for entire class A, B, C networks; "subnet" for
	the local subnets only; or "host" for maximal privacy.
	Files:  util/inet_addr_local.[hc], global/own_inet_addr.[hc],
	global/mynetworks.[hc], postconf/postconf.c.

	Portability: MACOSX patches by Gerben Wierda.

	Portability: Solaris /dev/null is a symlink, which tripped
	up the code to safely open a file before local delivery.
	We now grudgingly allow symlinks owned by root. File:
	util/safe_open.c.

20010224

	Bugfix: "postconf mynetworks" ignored the inet_interfaces
	setting. That was a very old one. File: postconf/postconf.c.

	INCOMPATIBLE CHANGE: POSTFIX NO LONGER RELAYS MAIL FOR
	CLIENTS IN THE ENTIRE CLASS A/B/C NETWORK. POSTFIX BY
	DEFAULT RELAYS MAIL FOR CLIENTS IN THE LOCAL SUBNETWORK.
	Specify "mynetworks_style = class" to get the old behavior.

20010225

	Portability: master sigchld handler based on writing to a
	pipe, so that the master wakes up from select(). Based on
	code by Erik Forsberg, Linkoping University, Sweden.  File:
	master/master_sig.c. Disabled until after the major release.

	Code cleanup: Postfix should now run with no alias database.

	Code cleanup: local_destination_recipient_limit and
	local_destination_concurrency_limit have become first-class
	configuration parameters. Files: global/mail_params.h,
	*qmgr/qmgr.c, postconf/postconf.c.

20010226

	Documentation suggestions by Lars Hecking and Richard
	Huxton, Matthias Andree and many others.

	Code cleanup: some queue/transport operations need to be
	moved, after the code cleanup of the recipient/concurrency
	limit handling. Patrik Rak.  Files: *qmgr/qmgr_message.c.

20010301

	Feature: configurable name in syslog output (default:
	"syslog_name = postfix") so that different Postfix instances
	can be recognized by their logging. File: global/mail_task.c.

20010313

	Workaround for logic mismatch in nqmgr that was exposed
	with the introduction of the asynchronous bounce client.
	Patrik Rak.

20010313

	Bugfix: the RFC 822 untokenizer quoted newlines inside
	comments. File: global/tok822_parse.c.

20010316

	Cleanup: removed an extraneous warning when a queue file
	write error happened.

20010321

	Workaround: LMTP connection caching never worked for
	destinations starting with unix: or inet:. File:
	lmtp/lmtp_connect.c.

20010322

	Portability: Solaris <2.6 does not have srandom() and
	random() in libc. File: util/rand_sleep.c. It does not have
	to be cryptographically strong.

	Bugfix: the fast ETRN flush server could not handle [ipaddr]
	or domain names with one-character hostname part.  This
	fix changes the destination to logfile name mapping, so
	that you need to populate the new files with "sendmail -q".
	The old files go away automatically. File:  flush/flush.c.

20010327

	Speed up mailq (sendmail -bp) display by flushing output
	after each file.  File: showq/showq.c.

	Portability: missing string.h includes, %p wants (void *),
	Lamont Jones, HP.

20010328

	Bugfix: swapped logic caused cleanup to stall when the
	queue file size exceeded the file size limit by less than
	one the VSTREAM buffer size, so that the "file too big"
	was detected after flushing the last queue file record.
	File: cleanup/cleanup.c.

20010329

	Portability: workaround for missing prototype problem in
	dict_ldap.c. This module should move to the global directory,
	because it depends on Postfix main.cf parameter information.

	Workaround: after sending a trigger message over a socket,
	do not immediately close the client side, but close it from
	a background thread that waits until the server closes the
	socket first. This avoids trouble with socket implementations
	that destroy a socket when the client closes a socket before
	the server has received the client's data.  Files:
	util/{inet,unix,stream}_trigger.c, util/events.c,
	master/master_trigger.c, postkick/postkick.c.

20010403

	Workaround: the mysql library can return null pointers
	rather than zero-length strings. File: util/dict_mysql.c.

20010404

	Ergonomics: log additional information about the reason
	why "mail for XXX loops back to myself" when the local
	machine is the best MX host. File: smtp/smtp_addr.c.

20010406

	Changed some noisy LDAP client warnings into optional
	logging. LaMont Jones, util/dict_ldap.c.

20010411

	Bugfix: the SMTP server now replies with 550 instead of
	503 when it receives the DATA command without having received
	a valid recipient address. This is needed for the Sendmail
	client-side pipelining implementation. Problem reported by
	Lutz Jaenicke. File: smtpd/smtpd.c.

	Cleanup: shut up if chattr fails on Reiserfs and other file
	systems that do not support the respective attributes.
	Files: conf/postfix-script-{no,}sgid.

20010413

	Ergonomics: Postfix applications now warn when a DB or DBM
	file is out of date, and recommend to rebuild the table.
	Files: util/dict_db.c, util/dict_dbm.c.

20010414

	Feature: specify a key of "-" to the postmap or postalias
	-q or -d option, and the keys will be read from standard
	input, one key per line. Files: postmap/postmap.c,
	postalias/postalias.c.

	Bugfix: with a non-default inet_interfaces setting, the
	master ignored host information in master.cf host:port
	settings.  Fix by Jun-ichiro itojun Hagino @ iijlab.net.
	Files: master/master.h, master/master_ent.c.

20010426

	Bugfix: the SMTP server did not parse invalid MAIL FROM or
	RCPT TO addresses such as <first last <user@domain>> the
	way it was supposed to do.  I thought this was taken care
	of years ago. File:  smtpd/smtpd.c.

20010427

	Bugfix: smtpd would reject mail instead of replying with
	a 4xx temporary error code when, for example, an LDAP or
	mysql server was unavailable. Remotely based on a fix by
	Robert Kiessling @ de.easynet.net. File: smtpd/smtpd_check.c.

20010429

	Feature: the Postfix SMTP client now by default randomly
	shuffles destination IP addresses of equal preference.
	Specify "smtp_randomize_addresses = no" to disable.
	Shuffling code by Elias Levy @ SecurityFocus.com Files:
	dns/dns_rr.c, smtp/smtp_addr.c.

20010501

	Bugfix: The SMTP server's 550 in reply to DATA should be
	a 554 response.  And it wasn't Sendmail. Claus Assman.

	Bugfix: the INSTALL.sh test for non-interactive upgrade
	broke rooted installations that specify settings via the
	environment.  Simon Mudd.

	Bugfix: mailq output is now really flushed one message at
	a time. File: sendmail/sendmail.c.

	Feature: "postsuper -d queueID" deletes one message queue
	file; "postsuper -d -" reads zero or more queue IDs from
	standard input, and deletes one instance of each file.
	File: postsuper/postsuper.c.

	Code cleanup: in order to make postsuper -d safe with a
	running Postfix mail system, some routines had to be made
	tolerant for sudden queue file disappearances.  Files:
	global/deliver_request.c, *qmgr/qmgr_move.c.

	Code cleanup: in order to make postsuper -d more usable,
	the showq command was extended to safely list the possibly
	world-writable maildrop directory.  File:  showq/showq.c.

20010504

	Feature: postsuper -d will also delete defer and bounce
	logfiles when the named queue file is found.

20010505

	RFC 2821 feature: an SMTP server must reset all buffers
	upon receipt of EHLO. File:  smtpd/smtpd_check.c.

	RFC 2821 feature: an SMTP server must accept a recipient
	address of "postmaster" without domain name. File:
	smtpd/smtpd_check.c.

	RFC 2821 recommendation: reply with 503 to commands sent
	after 554 greeting. File:  smtpd/smtpd.c.

	RFC 2821 recommendation: if VRFY is enabled, list it in
	the EHLO response. File:  smtpd/smtpd.c.

	RFC 2821 recommendation: SMTP clients should use EHLO.
	The default setting of smtp_always_send_ehlo has changed
	from 0 (send EHLO if server greets with ESMTP) to 1 (always
	send EHLO). In all cases, Postfix falls back to HELO if
	the server does not support EHLO. File: smtp/smtp_proto.c.

20010507

	Bugfix: with soft_bounce=yes, the SMTP server would log
	5xx replies even though it would send 4xx replies to the
	client (Phil Howard, ipal.net). File: smtpd/smtpd_check.c.

20010515

	Compatibility: Microsoft sends "AUTH=MBS_BASIC LOGIN".
	Updated the parsing code in smtp/smtp_proto.c.  Problem
	reported by Ralf Tessmann, Godot GmbH.

20010520

	Standard: deleted the non-standard "via" portion from
	Received: headers generated by Postfix bounce or other
	notification processes.  File: global/post_mail.c.

	Robustness: eliminated stack-based recursion from the RFC
	822 address parser. File: global/tok822_parse.c.

	Standard: annotated the source code with comments based on
	RFC 2821 and 2822. Not all the RFC changes make sense.

	RFC 2821 recommendation: treat a RCPT 552 reply as if the
	server sent 452. Files: smtp/smtp_proto.c, lmtp/lmtp_proto.c.

	Cleanup: moved ownership of the debug_peer parameters from
	the applications to the library, so that a Postfix shared
	library does not suffer from undefined references.  Files:
	smtp/smtp.c, lmtp/lmtp.c, smtpd/smtpd.c, global/mail_params.c.
	LaMont Jones, for Debian.

20010522

	Feature: "postsuper -r queueID" re-queues a message, and
	"postsuper -r ALL" re-queues all mail. The message is moved
	to the maildrop queue so that the pickup daemon will copy
	it to a new queue file, and so that address rewriting will
	be done again. This is useful after changes of address
	rewriting or virtual mappings.

	Feature: "postsuper -d ALL [queue-name]" deletes a bunch
	of mail.

20010523

	Feature: "postsuper -s" (which is done by default) renames
	queue files whose name (queue ID) does not match the message
	file inode number.

	Bugfix: memory leak in the LDAP client module. Alain
	Thivillon, France Teaser - Groupe Firstream.

20010525

	Portability: gcc 2.6.3 does not have __attribute__ (Clive
	Jones, dgw.co.uk). File: util/sys_defs.h.

	Bugfix: the SMTP and LMTP clients claimed that a queue file
	needed to be delivered again (even when all recipients were
	erased from the queue file) when no QUIT or RSET reply was
	received (by default, this does not happen with SMTP mail
	because the SMTP client does not wait for QUIT replies and
	does not send RSET to deliver mail).  As a result of the
	same bug the LMTP client followed a dangling pointer when
	sending QUIT after process idle timeout while the LMTP
	server had disconnected.  Files:  smtp/smtp_proto.c,
	lmtp/lmtp_proto.c.

20010526

	newaliases no longer complains when an empty list is
	specified with the alias_database configuration parameter.
	File:  sendmail/sendmail.c.

20010529

	Workaround: old PIX firewall code messes up when the final
	".<CR><LF>" at the end of DATA spans a packet boundary.
	When Postfix detects PIX SMTP fixup mode, Postfix flushes
	the output buffers before sending the final ".<CR><LF>".
	File:  smtp/smtp_proto.c.

20010530

	Portability: updated code for Mac OS X, accounting for the
	post-Beta changes. Code by Joe Block, UCF School of
	Optics/CREOL.

20010601

	Safety: postdrop turns off interrupts when cleaning up
	after interrupt. The additional safety does not hurt anyone.
	File: src/postdrop/postdrop.c.

20010607

	Safety: dropped the RFC 2821 compliant code that treats
	552 RCPT TO replies as 452. It created more problems than
	it solved. Files: smtp/smtp_proto.c, lmtp/lmtp_proto.c.

	Logging: the SMTP server now logs a warning if RBL lookups
	have problems other than "not found". file: smtpd/smtpd_check.c.

20010610

	Feature: address quoting and case folding flags for the
	pipe(8) mailer.

20010611

	Workaround: some MTAs fall on their face when they receive
	unexpectedly long lines. From now on, Postfix defaults to
	breaking long lines at 2048 (like Sendmail so it has got
	to be right). To get the old, content preserving, behavior
	specify "smtp_truncate_lines = no". File: smtp/smtp_proto.c.

20010614

	Bugfix: did not really undo 2821 552->452 mapping.

20010628

	Bugfix: postfix-script used a hard-coded maildrop group
	owner instead of using the install-time specified name
	stored in /etc/postfix/install.cf. Problem reported by
	David Terrell @ meat.net.

20010701

	Feature: mail_spool_directory ending in / causes maildir
	style delivery.

	Bugfix: the FreeBSD kernel parameters kern.ipc.nmbclusters
	and kern.ipc.maxsockets cannot be set with sysctl commands.
	File: html/faq.html. Len Conrad @ Go2France.com.

	Cleanup: the virtual delivery agent was poorly integrated
	so that the SMTP server and queue manager did not reject
	mail for unknown users. Files: smtpd/smtpd_check.c.

20010705

	Feature: QMQP server, compatible with qmail and the ezmlm
	list manager.  Files:  util/netstring.[hc], qmqpd/qmqpd*.c.

20010706

	Feature: QMQP stress test message generator program.  Files:
	smtpstone/qmqp-source.c, smtpstone/qmqp-sink.c.

20010708

	Bugfix: with disable_dns=yes, the SMTP client treated all
	host lookup errors as permanent. File: smtp/smtp_addr.c.

20010709

	Feature: VERP support, based on a patch by Peng Yong, and
	with the missing parts filled in so that the Postfix bounce
	daemon can send one VERP bounce per undeliverable recipient.
	Files: , sendmail/sendmail.c, smtpd/smtpd.c, qmgr/qmgr_deliver.c,
	bounce/bounce_notify_verp.c, qmqpd/qmqpd.c, plus a couple
	support routines in the global library.

	Cleanup: with recipient_delimiter=+ (or any character other
	than -) Postfix will now recognize address extensions even
	with owner-foo+extension addresses. This is necessary to
	make VERP work for mailing lists.

20010710

	Bugfix: potential memory leak in the queue managers with
	the new VERP delimiter record. Fix by Patrik Rak.

20010711

	Cleanup: you can now specify the VERP delimiter characters
	on the sendmail(1) command line, but they are still optional.

	Safety: with maildir style delivery and with hashed mailboxes
	the system mail spool directory must not be world writable.

20010713

	Safety: the verp_delimiter_filter parameter (default: -=+)
	limits what characters Postfix accepts as VERP delimiter
	characters.

20010714

	Logging: the queue manager now logs a "status=expired"
	record when it returns a message that is too old.  Files:
	*qmgr/qmgr_active.c.

20010719

	Feature: stiffer coupling between mail receiving rates and
	mail delivery rates, using a trivial token-based scheme,
	implemented by reading and writing an in-memory pipe.  The
	queue manager produces one token when it retrieves mail
	from the incoming queue. The cleanup daemon consumes one
	token when it adds mail to the incoming queue. If no token
	is available the cleanup server pauses for $in_flow_delay
	seconds and proceeds anyway. The delay allows mail sending
	process to catch up and access the disk while not blocking
	inbound mail. Valid delays are 0..10 seconds.

20010727

	Bugfix: updated LDAP client module from LaMont Jones, HP.
	This also introduces new LDAP query filter patterns: %u
	(address localpart) and %d (domain part). Files:
	conf/sample-ldap.cf, util/dict_ldap.c.

20010729

	Bugfix: recursive smtpd_whatever_restrictions clobbered
	intermediate results when switching between sender and
	recipient address restrictions. Problem found by Victor
	Duchovni, morganstanley.com. In order to fix, introduced
	address resolver result caching, which should also help to
	speed up sender/recipient address restriction processing.

	Bugfix: the not yet announced DUNNO access table lookup
	result did not prevent lookups with substrings of the same
	lookup key. Found by Victor Duchovni, morganstanley.com.

20010730

	Robustness: trim trailing whitespace from regexp and pcre
	right-hand sides, for consistency with DB/DBM tables.
	Files: util/dict_pcre.c, util/dict_regexp.c.

20010731

	Robustness: eliminate duplicate IP addresses after expansion
	of hostnames in $inet_interfaces, so that Postfix does not
	suddenly refuse to start up after someone changes the DNS.
	Files:  util/inet_addr_list.c global/own_inet_addr.c.

	Feature: specify "disable_verp_bounces = yes" to have
	Postfix send one RFC-standard, non-VERP, bounce report for
	multi-recipient mail, even when VERP style delivery was
	requested.

20010801

	Bugfix: postconf was using unexpanded values internally
	for myhostname, inet_interfaces, and mynetworks_style.
	This broke the "postconf -d" mynetworks computation.  File:
	postconf/postconf.c.

20010803

	Feature: masquerade_classes parameter for fine control of
	address masquerading. The default setting is backwards
	compatible: envelope_sender header_sender header_recipient.
	Files: cleanup/whatever.c.

20010822

	Code cleanup: the bounce daemon complained about data that
	it was not going to send back anyway. Fix: stop reading
	the original message when the bounce message reaches the
	bounce message size limit. File: bounce/bounce_notify_util.c.

20010826

	Logging: postsuper now logs the queue ID when it requeues
	a message, or when it deletes a message from the mail queue.
	File: postsuper/postsuper.c.

20010830

	Safety: the SMTP server now sends a 4xx (try again later)
	response when an UCE restriction is misconfigured, instead
	of ignoring the bad restriction and possibly accepting mail
	that it should not accept.   File: smtpd/smtpd_check.c.

20010907

	Workaround: the Postfix qmqp-source program produced mail
	not ending in newline. qmail-qmqpd accepts such mail, but
	qmail-remote is unable to deliver it.  Matthias Andree,
	uni-dortmund.de. File: smtpstone/qmqp-source.c.

20010910

	Bugfix: the smtp-sink stress test program broke when RCPT
	TO commands crossed network packet boundaries. Problem
	reported by Matthias Andree, uni-dortmund.de.  File:
	smtpstone/smtp-sink.c.

20010917

	Code cleanup: permit_mx_backup implements the old behavior
	(accept mail if the local MTA is MX relay), and allows an
	additional restriction via the permit_mx_backup_networks
	parameter (accept mail only if the primary MX hosts match
	the specified list of network blocks). This second restriction
	is now entirely optional, for backwards compatibility.

	Bugfix: an address extension could be appended multiple
	times to the result of a canonical or virtual map lookup.
	File: global/mail_addr_map.c.  Fix by Victor Duchovni,
	Morgan Stanley.

	Bugfix: split_addr() would split an address even when there
	was no data before the recipient delimiter. In combination
	with the above bug, this could cause an address to grow
	exponentially in size.  Problem reported by Victor Duchovni,
	Morgan Stanley.  File:  global/split_addr.c.

20010918

	Bugfix: the mail_addr_map() fix was almost but not quite
	right. It took two clever people and several iterations of
	email to really fix the mail_addr_map() problem.  Thanks
	to Victor Duchovni and Liviu Daia.

20011006

	Cleanup: Postfix no longer flushes the whole deferred queue
	after an ETRN request for a random domain name (i.e. a
	domain name not matched by $fast_flush_domains); the SMTP
	server instead replies with "459 service unavailable".
	Files:  smtpd/smtpd.c, global/flush_clnt.c, flush/flush.c.

20011008

	Bugfix: there was a minute memory leak when an smtpd access
	restriction was misconfigured. File: smtpd/smtpd_check.c.

20011010

	Code cleanup: Postfix daemons now print the name of the
	UNIX-domain socket (instead of "unknown stream") in case
	of a malformed client request. Files:  master/*server.c.

20011010-14

	Code cleanup: replaced the ugly mail_print() and mail-scan()
	protocols by (name,value) attribute lists. This gives better
	error detection when we make changes to internal protocols,
	and allows new attributes to be introduced without breaking
	everything immediately. Files: util/attr_print.c util/attr_scan.c
	global/mail_command_server.c global/mail_command_client.c
	as wel as most Postfix applications and daemons.

20011015

	Put base 64 encoding into place on the replaced internal
	protocols.  Files: util/base64_code.[hc].

	Feature: header/body REJECT rules can now provide text that
	is sent to the originator. Files: cleanup/cleanup.c,
	cleanup/cleanup_message.c, conf/sample-filter.cf.

20011016

	Bugfix: As of 20000625, Errors-To: was broken, because the
	code to extract the address was not moved from recipient
	address rewriting to sender address rewriting. Problem
	reported by Roelof Osinga @ nisser.com. File:
	cleanup/cleanup_message.c.

20011029

	Bugfix: virtual map expansion terminated early because the
	detection of self-referential entries was flawed.  File:
	cleanup/cleanup_map1n.c.

20011031

	Bugfix: mail_date() mis-formatted negative time zone offsets
	with fractional hours (-03-30 instead of -0330). Fix by
	Chad House, greyfirst.ca. File: global/mail_date.c.

20011102

	Feature: new -f option to postmap and postalias (do not
	lowercase the lookup key while creating a table). Files:
	util/dict.h postmap/postmap.c postalias/postalias.c.

	Code cleanup: simplified the attribute print/scan routines,
	and removed the never-used support for sending and receiving
	integer arrays and string arrays. Files: util/attr_print.c,
	util/attr_scan.c.

	Bugfix: qmqpd could read past the end of a string while
	looking for qmail's VERP magic token in the envelope sender
	address.  File: qmqpd/qmqpd.c.

	Code cleanup: finished testing the new internal protocols.
	The only bug was with the flush server, which still needs
	to support the old (string + null byte) protocol for triggers
	from the Postfix master daemon.

20011103

	Bugfix: Postfix would log the wrong error text when locally
	submitted mail was deferred due to "soft_bounce = yes".

	Bugfix: The LDAP client dropped any entries that don't have
	the result_attribute, but errored out when a DN didn't
	exist.  The behavior is now consistent: treat non-existant
	DN's in a special result attribute expansion the same as
	DN's with no attribute.  LaMont Jones, HP.

20011104

	Bugfix: the new smtp-sink -n option (terminate after the
	specified number of deliveries) wasn't optional.

	Portability: updated Mac OS X documentation and install
	scripts by Gerben Wierda.

20011105

	Bugfix: missing terminator in new attribute-based function
	call caused signal 11. File: src/cleanup/cleanup.c.

	Lame workaround for ESTALE errors with mail delivery over
	NFS. Additional bandages were added to the local delivery
	agent. However, Wietse maintains that Postfix offers no
	guarantee for reliable delivery over NFS.

	Feature: put "warn_if_reject" before an smtpd restriction,
	and that restriction logs warnings without rejecting mail.
	This makes it easier to test configurations "live" without
	having to lose mail. File: smtpd/smtpd_check.c.

20011107

	Workaround: in order to get mail past PIX firewall bugs,
	the Postfix SMTP client now blocks until the socket send
	buffer is empty before sending the final ".<CR><LF>". Files:
	util/sock_empty_wait.c, smtp/smtp_proto.c. Changed into
	sleep(10) on 20011119. Sleep suggested by Hobbit.

20011108

	Feature: added string-null encoding for internal protocols.
	Files: util/attr_print0.c, util/attr_scan0.c.

	Feature: configurable parent domain matching for domain
	and hostname/address match lists: either .domain or the
	domain name itself. Files: util/match_ops.c util/match_list.c

	Feature: added pretend-to-be-behind-PIX mode to the smtp-sink
	test program, in order to stress test some PIX bug workaround
	code.

20011109

	Workaround: Linux and Solaris systems have no reasonable
	way to block until a socket drains. On these systems Postfix
	simply waits for 10 seconds, in order to work around PIX
	".<CR><LF>" bugs.  File: util/sock_empty_wait.c.

20011114

	Bugfix: reset the smtpd command transaction log between
	deliveries. File: smtpd/smtpd.c.

20011115

	Feature: mailbox_command_maps no longer requires that every
	user has an entry. If the user does not have a command
	entry, the local delivery agent tries the other delivery
	methods (mailbox_command, home_mailbox).  File: local/mailbox.c.

	Bugfix: reset the smtpd command transaction log between
	non-deliveries. File: smtpd/smtpd.c.

20011116

	Bugfix: consolidated all the command transaction log resets
	and eliminated one missing reset (Victor Duchovni, Morgan
	Stanley). File: smtpd/smtpd.c.

20011118

	Cleanup: replaced unnecessary match_list wrapper code by
	macros. Files:  global/{string,domain,namadr}_list.[hc].

20011119

	Feature: configurable parent domain matching strategy for
	transport map lookups. File:  trivial-rewrite/transport.c.

	New parent_domain_matches_subdomains parameter. This lists
	all the Postfix features where a domain name matches itself
	and all its subdomains (instead of requiring ".domain.name"
	for subdomain matches).  Planning for future backwards
	compatibility :-)  File:  global/match_parent_style.c.

	Workaround: simplified the PIX ".<CR><LF>" bug to always
	sleep for 10 seconds.  File: smtp/smtp_proto.c.

20011120

	Workaround: disable attribute string length restriction so
	that trivial-rewrite does not refuse to rewrite broken mail
	headers.  Files:  util/attr_scan*.c.

20011121

	Bugfix: missing long integer support in the new IPC protocols.
	Files: util/attr_scan*.c, util/attr_print*.c.

	Portability: AIX5 (Adrian P. van Bloois), MAC OS X 10.1.1
	(Gerben Wierda).

20011125

	Bugfix: spurious postmaster notifications because some flag
	was not reset.

	Feature: new parameter smtpd_sender_login_maps that specifies
	the (SASL) login name that owns a MAIL FROM address.
	Specify a regexp table in order to require a simple one-to-one
	mapping. This is used in the reject_sender_login_mismatch
	sender anti-spoofing feature.

	Feature: restriction reject_sender_login_mismatch refuses
	a MAIL FROM address when $smtpd_sender_login_maps specifies
	an owner but the client is not (SASL) logged in as the MAIL
	FROM address owner, or when a client is (SASL) logged in
	but the client login name does not own the MAIL FROM address
	according to $smtpd_sender_login_maps.  File: smtpd/smpd_check.c.

	Documentation: added some redundancy to the LMTP_README
	file so people can keep track of the difference between
	the Postfix LMTP client and the non-Postfix LMTP server.

20011126

	Feature: smtpd_noop_commands specifies a list of commands
	that are treated as NOOP (no operation) commands, without
	syntax check or state change.  File: smtpd/smtpd.c.

	Bugfix: the "mark queue file as corrupt" code did not work
	because it was never used.  Files: global/mark_corrupt.c,
	global/mail_copy.c, global/pipe_command.c, *qmgr/qmgr_active.c,
	local/maildir.c, local/mailbox.c, local/command.c, pipe/pipe.c,
	virtual/mailbox.c, virtual/maildir.c.

	Bugfix: the bounce daemon broke in the unlikely case of a
	non-existing queue file. File: bounce/bounce_notify_util.c.

20011127

	Feature: added WARN command to header/body_checks files as
	proposed by Michael Tokarev. File: cleanup/cleanup_message.c.

	Bugfix: the postdrop program was broken after the change
	of Postfix internal protocols. This broke "sendmail -bs"
	mail submissions with "secure" maildrop directory.  Reported
	by Craig Loomis, apo.nmsu.edu. File: postdrop/postdrop.c.

	Feature: a first start at fault injection for testing
	unlikely error scenarios (such as corrupt queue files).
	Parameter: fault_injection_code, must be left at zero for
	production use.

20011128

	Robustness: add a file size limit to the sendmail and
	postdrop submission programs to stop run-away process
	accidents. This is not a defense against DOS attack.  Files:
	sendmail/sendmail.c, postdrop/postdrop.c.

	That resulted in a considerable amount of work to properly
	propagate "file too large" conditions back to the sendmail
	mail posting user interface. Took the opportunity to express
	other mail submission fatal exits with the <sysexits.h>
	exit status codes.  Files: sendmail/sendmail.c,
	postdrop/postdrop.c.

20011129

	Maintenance: dict_ldap.c wasn't updated after the revision
	of the string matching routines. File: util/dict_ldap.c.

20011208

	Maintenance: LDAP module and documentation from LaMont
	Jones.  This version adds verbose logging for LDAP library
	routines. Files: src/util/dict_ldap.[hc], LDAP_README,
	conf/sample-ldap.cf

	Portability: made memory alignment restrictions configurable.
	File: util/mymalloc.c.

	Bugfix? Avoid surprises with source routed destinations
	and OK entries in SMTPD access maps. File: smtpd/smtpd_access.c.

	Security: "postfix check" looks for damage by well-intended
	but misguided use of "chown -R postfix /var/spool/postfix".
	That would make chrooted Postfix less secure than non-chrooted
	Postfix.  These extra tests may cause complaints with
	third-party patches such as TLS that introduce their own
	files into the jail.

	Feature: static map type that always returns the map name
	as lookup value, regardless of lookup key value. Contributed
	Jeff Miller (jeffm at ghostgun.com)

	Feature: turn off the PIX <CR><LF>.<CR><LF> workaround for
	the first mail delivery attempt, i.e. when mail is queued
	for less than $smtp_pix_workaround_threshold_time (default:
	500) seconds. New parameter $smtp_pix_workaround_delay_time
	to control the delay before sending .<CR><LF> (default: 10
	seconds) when doing the PIX <CR><LF>.<CR><LF> workaround.

20011210

	Bugfix: the 20011128 change in sendmail and postdrop did
	not handle the case of message_size_limit=0. Fix by Will
	Day, Georgia Tech.

20011212

	Compatibility: The SMTP server now accepts <CR><CR><LF> as
	if the client sent <CR><LF>. Reportedly, some badly written
	windows software produces such garbage, and some badly
	written windows anti-VIRUS software cannot handle such
	garbage. File:  global/smtp_stream.c.

20011214

	Bugfix: postmap/postalias queries ignored the -f flag.
	Reported by Hamish Marson.

20011217

	Compatibility: Sendmail now has a -L option to set the
	syslogging label. Postfix sendmail uses syslog_name instead,
	and ignores the -L option.

	Security: subtle hardening of the Postfix chroot jail,
	Postfix queue file permissions and access methods, in case
	someone compromises the postfix account.  Michael Tokarev,
	who received the insights from Solar Designer, who tested
	Postfix with a kernel module that is paranoid about open()
	calls.  Files:  master/master_wakeup.c, util/fifo_trigger.c,
	postfix-script.

	Convenience: issue a warning instead of aborting when the
	local machine name is not in fully-qualified domain form.
	This would otherwise break initial postfix installation
	which needs the postconf command. File: global/mail_params.c.

20011220

	Added more garbage detection to postconf -e input processing.

20011221

	Feature: SMTPD access map lookups of null sender addresses.
	If your access maps cannot store or look up null string
	key values, specify "smtpd_null_access_lookup_key = <>"
	and the null sender address will be looked up as <> instead.
	File:  smtpd/smtpd_access.c.

20011223

	Safety: configuration file comments no longer span multiple
	lines when the next line begins with whitespace; multi-line
	input is no longer terminated by a comment line, by an all
	white space line, or by an empty line. Michael Tokarev made
	the crucial suggestion to simplify the readline routine.
	Files:  util/readlline.c, postconf/postconf.c.

	Cleanup: proper detection of big number overflow in EHLO
	and MAIL FROM size announcements, with input from Victor
	Duchovni, Morgan Stanley. Files: global/off_cvt.c,
	smtpd/smtpd.c, smtp/smtp_proto.c, util/alldig.c.

	Forward compatibility: added queue file record types for
	original recipient and for generic named attributes.

	Cleanup: safe_open() now returns sensible errno values so
	that the fifo_trigger() external interface is restored.

20011225

	Upgrade: PCRE_README now describes PCRE version 3.x.

	Cleanup: flush SMTPD command history upon receipt of EHLO,
	RSET, and upon DATA completion, only if it exceeds
	$smtpd_history_flush_threshold lines (default: 100).
	Distant derivative of code by Michael Tokarev.  File:
	smtpd/smtpd.c.

20011228

	Bugfix: a readlline() error message showed less text than
	intended. Christian von Roques.

	Cleanup: postfix now installs with group-writable maildrop
	directory and with a set-gid postdrop mail submission
	command.  The pickup service is now unprivileged.  The
	world-writable maildrop directory no longer exists.

	The cleanup service is now public, in preparation for local
	sendmail/postdrop mail submission that avoids the maildrop
	queue directory while Postfix is up.

	Cleanup: moved the main.cf/master.cf file editing from the
	postfix-script file to the INSTALL.sh file.

	Cleanup: INSTALL.sh no longer accepts "no" as the destination
	of Postfix manual pages.

20011230

	Cleanup: the code for "mailq", "sendmail -q", and for
	"sendmail -qRsite" was moved from the sendmail command to
	a new set-gid postqueue command. The pickup and qmgr FIFOs
	are no longer world writable. Files: sendmail/sendmail.c,
	postqueue/postqueue.c.

20020101

	Security: new alternate_config_directories parameter that
	specifies what directories a set-gid command will accept
	as its configuration directory. The list must be specified
	in the default main.cf file. File: global/mail_conf.c.

	Cleanup: "sendmail -qRsite" is no longer implemented by
	connecting to the SMTP port. It is now implemented by
	talking to the fast flush service. File: postqueue/postqueue.c.

20020203

	Cleanup: INSTALL.sh now records all installation information
	in the main.cf file. The now obsolete install.cf file is
	used only when upgrading from an older Postfix release.

	Cleanup: INSTALL.sh now takes name=value settings on the
	command line, and has a new "-upgrade" command line option
	to turn on non-interactive installation.

	Security: additional run-time checks to discourage sharing
	of Postfix user/group ID values with other accounts.

20020105

	Cleanup: SMTPD access maps now return DUNNO (undetermined)
	instead of OK when a recipient address contains multiple
	domains (user@dom1@dom2, etcetera).  Victor Duchovni, Morgan
	Stanley.  File:  smtpd/smtpd_check.c.

20020106

	Bugfix: SMTPD access maps did not handle address extensions.
	File: smtpd/smtpd_check.c.

20020107

	Bugfix: postfix-script, when creating a missing maildrop
	queue directory, still referenced install.cf when setting
	maildrop directory group ownership; and the postfix command
	did not export the setgid_group parameter to the postfix-script
	shell script.  Victor Duchovni.

	Bugfix: postfix-script, when creating a missing public
	queue directory, did not set group ownership of the public
	directory.

20020109

	Cleanup: rewrote the Postfix installation procedure again.
	It is now separated into 1) a primary installation script
	(postfix-install) that installs files locally or that builds
	a package for distribution and that stores file owner and
	permission information in /etc/postfix/post-files, and 2)
	a post-installation script (/etc/postfix/post-install) that
	creates missing directories, that sets file/directory
	ownership and permissions, and that upgrades existing
	configuration files if necessary.

20020110

	Workaround: AIX null read() return on an empty but open
	non-blocking pipe. File:  master/master_flow.c.  Report:
	Hamish Marson.

20020111

	Feedback: feedback, bugfixes, and brain-dead shell workarounds
	for the install scripts by Victor Duchovni and Simon Mudd.

20020113

	Rewrote postfix-install. The postfix-files file now controls
	what is installed.  Refined the semantics of many post-install
	operations. post-install now auto-saves settings that
	override main.cf.

20020114

	Bugfix: alternate_config_directories did not take comma or
	whitespace as separators. File: global/mail_conf.c.  Victor
	Duchovni, Morgan Stanley.

	Bugfix: the rewritten postfix-install script did not chattr
	+S the Postfix queue.

20020115

	Cleanup: added sample_directory and readme_directory
	installation parameters for sample configuration files and
	for README files. Files: postconf.c, postfix-install,
	conf/postfix-files, conf/post-install.

	Robustness: the postfix command now exports all installation
	parameter settings, and input filters the environment, so
	that the startup shell scripts produce a consistent result.
	Files: postconf.c.

20020117

	Portability: patch from LaMont Jones for compiling dict_ldap.c
	with the Netscape SDK.

	Feature: added "r" (recursive chown/chgrp) flag to the
	postfix-files database, for more convenient change of
	Postfix queue ownership. Files: conf/postfix-files,
	conf/post-install.

20020122

	Documentation: lots of little fixes.

	Documentation: updates for the VIRTUAL_README file by Victor
	Duchovni, Morgan Stanley.

	Bugfix: postqueue -s dereferenced a null pointer when given
	a numerical domain argument. LaMont Jones, HP.

	Cleanup: smtpd now logs a warning when permit_sasl_authenticated
	is used while SASL authentication is disabled, instead of
	simply ignoring the restriction. LaMont Jones, HP. File:
	smtpd/smtpd.c.

	Safety: when postmap creates a non-existent file, the new
	file inherits group/other read permissions from the source
	file.  Based on code by LaMont Jones, HP.  File:
	postmap/postmap.c.

20020123

	Portability: some Linux systems install libnsl.so without
	libnsl.a file, causing an yp_match undefined reference
	problem.  File: makedefs.

20020124

	Portability: post-install now requests that command_directory
	is given on the command line when the postconf command is
	in an unusual place.

	Safety: extra code to detect and report Berkeley DB version
	mismatches between compile time and run time.  This test
	is limited to mismatches in the major version number only.
	File:  util/dict_db.c. Based on code by Lawrence Greenfield,
	Carnegie-Mellon university.

	Safety: the postfix command and the master daemon abort if
	they are running set-uid.

	Documentation: the postmap manual page described an out of
	date input file format.

20020129

	Workaround: SCO version 3.2 can't ioctl(FIONREAD) a pipe.
	Therefore, input mail flow control is disabled by default.
	Files:  makedefs, global/mail_params.h, conf/main.cf.
	Problem reported by Kurt Andersen, Agilent.

20020201

	Workaround: changed the default smtpd_null_access_lookup_key
	setting to <>, because some Bezerkeloid DB implementations
	can't handle null-length lookup keys.  File: global/mail_params.h.

	Bugfix: backed out a null-length address panic call by
	ignoring the problem, like Postfix did in the past.  File:
	global/resolve_local.c.

	Safety: "postfix check" will now warn if /usr/lib/sendmail
	and /usr/sbin/sendmail differ, and will propose to replace
	one by a symlink to the other. File: conf/postfix-script.

20020204

	Sanity: additional permission checks for "postfix check"
	that warn for setgid_group group ownership mismatches.  by
	Matthias Andree, uni-dortmund.de. File: conf/postfix-script.

	Bugfix: "postfix check" used a too simplistic way to
	recognize file ownership (grepping ls output). It now uses
	the recently discovered "find -prune".  Peter Bieringer,
	Matthias Andree. File: conf/postfix-script.

20020218

	Workaround: log a warning and disconnect when an SMTP client
	ignores our negative replies and starts sending message
	content without permission. File: smtpd/smtpd.c.

20020220

	Bugfix: mismatch in the file being locked by dict_dbm and
	the file being locked by postmap, so that locks did not
	work correctly.  Victor Duchovni, Morgan Stanley.

20020222

	Workaround: Solaris bug 4380626: strcasecmp() and strncasecmp()
	produce incorrect results with 8-bit characters. For example,
	non-ASCII characters could compare equal to ASCII characters,
	and that could result in any number of security problems.
	Files:  util/strcasecmp.c, COPYRIGHT (the BSD license).

	Bugfix: off-by-one error, causing a null byte to be written
	outside dynamically allocated memory in the queue manager
	with addresses of exactly 100 bytes long, resulting in
	SIGSEGV on systems with an "exact fit" malloc routine.
	Experienced by Ralf Hildebrandt; diagnosed by Victor
	Duchovni. Files:  *qmgr/qmgr_message.c.  This is not a
	security problem.

	Bugfix: make all recipient comparisons transitive, because
	Solaris qsort() causes SIGSEGV errors otherwise. Victor
	Duchovni, Morgan Stanley. File: *qmgr/qmgr_message.c.

20020302

	Bugfix: don't strip source route (@domain...:) when the
	result would be an empty address. This avoids problems when
	append_at_myorigin is set to "no" (which is not supported).
	Problem reported by Charles McColgan, Big Fish Communications.
	File:  trivial-rewrite/rewrite.c.

20020304

	Cleanup: postqueue should not not complain when output
	fails with "broken pipe".

20020308

	Bugfix? reply with 550 not 552 when content is rejected.
	552 is reserved for "too much mail".

	Documentation: add note to sendmail manual page that running
	"sendmail -bs" as $mail_owner enables SMTP server UCE and
	access control checks. This is meant for use from inetd
	etc.  Matthias Andree.

20020311

	Bugfix: DBM maps should use different files for locking
	and for change detection.  Problem reported by Victor
	Duchovni, Morgan Stanley.  Files: util/dict.h util/dict.c
	util/dict_db.c util/dict_dbm.c global/mkmap.c local/alias.c.

20020313

	Bugfix: mailq could show addresses with unusual characters
	twice.  Problem reported by Victor Duchovni, Morgan Stanley.
	File: showq/showq.c.

	Bugfix: null recipients weren't properly recorded in
	bounce/defer logfiles. Such recipient addresses are not
	accepted in SMTP mail, but they could appear within locally
	submitted mail.  File: bounce/bounce_append_service.c.

20020318

	Workaround: Berkeley DB can't handle null key lookups,
	which happen with HELO names ending in ".".  Victor Duchovni,
	Morgan Stanley. File: smtpd/smtpd_check.c.

	Logging: log a hint when mail is deferred because the
	soft_bounce parameter is set. People sometimes forget to
	turn it off. File: global/bounce.c.

20020319

	Cleanup: add a msg_warn() call when fork() fails in
	pipe_command(), to make problems easier to investigate.
	Chris Wedgwood. File:  global/pipe_command.c.

20020320

	Feature: smtp_helo_name parameter to specify the hostname
	or [ip.address] in HELO or EHLO commands. Files: smtp/smtp.c
	smtp/smtp_proto.c.

20020324

	Cleanup: more graceful handling of long physical message
	header lines upon input. Physical header lines can now
	extend up to $header_size_limit characters. When a logical
	message header is too long, the excess text is discarded
	and Postfix no longer switches to body mode, to avoid
	breaking MIME encapsulation.  Based on code by Victor
	Duchovni, Morgan Stanley.  Files:  cleanup/cleanup_out.c,
	cleanup/cleanup_message.c.

	Cleanup: more graceful handling of long physical message
	header or body lines upon output by the SMTP client. The
	SMTP client output line length is controlled by a new
	parameter smtp_line_length_limit (default: 990; specify 0
	to disable the limit). Long lines are folded by inserting
	<CR> <LF> <SPACE>, to avoid breaking MIME encapsulation.
	Based on code by Victor Duchovni, Morgan Stanley.  File:
	smtp/smtp_proto.c.

20020325

	Cleanup: allow additional text after a WARN command in a
	header/body_checks pattern file, so that one can change
	REJECT+text into WARN+text and vice versa. Based on code
	by Fredrik Thulin, Stockholm University.

	Cleanup: log a warning when an unknown command is found in
	a header/body_checks pattern file, or when additional text
	is found after a command that does not expect additional
	text. Based on code by Fredrik Thulin, Stockholm University.

	Bugfix: sendmail should not recognize "." as the end of
	input when the current read operation started in the middle
	of a line.  Victor Duchovni, Morgan Stanley. File:
	sendmail/sendmail.c.

20020328

	Portability fix for OPENSTEP and NEXTSTEP by Gerben Wierda.
	File: util/sys_defs.h.

20020329

	Bugfix: defer_transports broke because the flush server
	triggered mail delivery (as if ETRN was sent) while doing
	some internal housekeeping of per-destination logfiles.
	Problem experienced by LaMont Jones, HP. File: flush/flush.c.

	Bugfix: virtual mapping broke for addresses with embedded
	whitespace. Fix by Victor Duchovni, Morgan Stanley. File:
	cleanup/cleanup_map1n.c.

	Feature: configurable service name for the internal services:
	bounce, cleanup, defer, error, flush, pickup, queue, rewrite,
	showq. This allows you to specify, for example, a non-default
	cleanup service (smtpd -o cleanup_service_name=alt_cleanup).
	Files: global/mail_params.[hc].

	Feature: SASL version 2 support by Jason Hoos. Files:
	*/*_sasl_glue.c, SASL_README, conf/sample-auth.cf.

20020330

	Bugfix: postqueue did not pass on non-default configuration
	directory settings when running showq while the mail system
	is down.  The super-user is now exempted from environment
	stripping in postqueue/postqueue.c. Problem reported by
	Victor Duchovni, Morgan Stanley.

20020402

	Workaround: recognize more headers that are sent instead
	of SMTP commands. File: smtpd/smtpd.c.

20020413

	Feature: new pipe delivery agent "D" flag to prepend a
	Delivered-To:  message header. This requires single recipient
	deliveries. Based on code by Matthias Andree. File:
	pipe/pipe.c.

20020414

	Portability: Postfix will no longer attempt to build with
	gdbm support, because gdbm is broken. File:  makedefs.

20020415

	Cleanup: the attribute list IPC code did not distinguish
	between "disconnect" and "timeout" while reading an attribute
	list, making trouble shooting more difficult than necessary.
	Files:  util/attr_scan0.c, util/attr_scan64.c.

	Cleanup: install parameter defaults can now be overruled
	from makedefs: sendmail_path, mailq_path, newaliases_path,
	command_directory, daemon_directory. Based on code by Victor
	Duchovni, Morgan Stanley. File: util/sys_defs.h.

20020411

	Cleanup: Use more robust quoting passing makedefs/Makefile
	settings. This also simplifies the seven backslashes example
	in the INSTALL file.  Victor Duchovni, Morgan Stanley.
	Files: makedefs, INSTALL.

20020417

	Bugfix: the post-install script failed to upgrade master.cf
	settings from private to public if the service was explicitly
	configured as private.

20020418

	Documentation: added CPU saving patterns for quickly skipping
	base 64 encoded text in message bodies.  Liviu Daia.  Files:
	{proto,conf}/pcre_table, {proto,conf}/regexp_table,
	conf/sample_{regexp,pcre}_body.cf.

20020426

	Bugfix: the SMTP client forgot to quote whitespace etc.
	in a sender/recipient address when DNS lookup was turned
	off (disable_dns_lookups = yes). Problem experienced by
	Chip Paswater. Files: smtp/smtp_proto.c.

20020501

	Feature: wildcard lookup in transport maps (lookup key
	"*").  Code developed with Lamont Jones, HP.

	Feature: a null transport:destination transport map entry
	means proceed as if the transport map lookup failed.  Code
	developed with Lamont Jones, HP.

	Feature: more efficient use of cache memory when a process
	opens multiple Berkeley DB tables; and faster performance
	creating large tables by using more buffer memory. Files:
	util/dict_db.[hc], global/mkmap_db.c. Victor Duchovni,
	Morgan Stanley.

20020503

	Cleanup: postqueue silently ignored command-line arguments
	following -p or -f options, instead of complaining; postqueue
	produced an incorrect error message (mail system down) when
	the command was installed with incorrect privileges.  File:
	postqueue/postqueue.c.

	Bugfix: while reporting a domain name or IP address syntax
	error, postqueue could dereference a dangling pointer with
	some getopt() implementations. LaMont Jones, HP.  File:
	postqueue/postqueue.c.

	Safety: postalias and postmap now drop root privileges
	while processing a non-root input file. Thus, the result
	should be writable to the source file owner. Specify the
	-o option if this is a problem. Files: postmap/postmap.c,
	postalias/postalias.c.

	Consistency: just like postmap, postalias now copies file
	permissions from the source file when it creates a new
	table for the first time. File: postalias/postalias.c.

20020504

	Portability: run-time test to avoid GDBM trouble.  File:
	util/dict_dbm.c.

20020505

	Cleanup: revised and simplified the transport map semantics.
	Null transport or nexhop fields now mean: "do not change":
	use what would be used if the transport map did not exist.
	This change eliminated a lot of code. The incompatibility
	is that a null transport field no longer defaults to
	$default_transport, but to $local_transport or $default_transport
	depending on the destination, and that a transport map only
	overrides relayhost when the table specifies explicit
	nexthop information.  Files:  trivial-rewrite/transport.c,
	trivial-rewrite/resolve.c.

	Cleanup: revised the user interface for controlling the
	Berkeley DB create and read buffer size controls. Files:
	util/dict_db.[hc], global/mail_params.[hc], global/mkmap_db.c.

20020507

	Cleanup: simplified the hash/btree cache management code.
	The caches are now per table instead of shared, and the
	default read cache size is reduced to 128 kBytes. File:
	util/dict_db.c.

20020508

	Bugfix: close user@domain@postfix-style.virtual.domain
	source routing relaying loophole involving postfix-style
	virtual domains with @virtual.domain catch-all patterns.
	Problem reported by Victor Duchovni. File:  smtpd/smtpd_check.c.

	Bugfix: mail_addr_map() used the "wrong" @ character in
	addresses with multiple @. Victor Duchovni. File:
	global/mail_addr_map.c.

	Bugfix: for address localpart quoting, now quote @ as a
	special character everywhere, except when resolving addresses.
	Previously, the @ was nowhere quoted as a special character,
	not even in SMTP commands.  Files:  global/quote_82[12]_local.c
	and clients.

20020509

	Safety: don't allow an OK access rule lookup result for
	user@domain@postfix-style.virtual.domain. Suggested by
	Victor Duchovni, Morgan Stanley. File: smtpd/smtpd_check.c.

	Bugfix: quote unquoted address localparts that need quoting.
	Files: global/tok822_parse.c, global/quote_82[12]_local.c.

	Documentation: simplified the advanced content filtering
	example, and included a more advanced example for those
	who want to squeeze out more performance without running
	multiple Postfix instances.  Text by Victor Duchovni, Morgan
	Stanley. File:  README_FILES/FILTER_README.

20020510

	Feature: header/body filters now log the origin of the
	message that is being rejected. Files: smtpd/smtpd.c,
	qmqpd/qmqpd.c, pickup/pickup.c, cleanup/cleanup_envelope.c,
	cleanup/cleanup_message.c.  Requested by Craig Sanders, if
	I remember correctly.

	Feature: the Postfix SMTP client now passes on MIME body
	type information (8bit, 7bit) received via SMTP, via MIME
	headers, or via the sendmail command line. Files:
	global/deliver_request.c, smtpd/smtpd.c, sendmail/sendmail.c,
	cleanup/cleanup_envelope.c, cleanup/cleanup_message.c,
	cleanup/cleanup_extracted.c, *qmgr/qmgr_message.c,
	*qmgr/qmgr_deliver.c, smtp/smtp_proto.c, lmtp/lmtp_proto.c.

20020511

	Feature: bounces now specify the proper MIME encoding (8bit,
	7bit), depending on the MIME body type information received
	via SMTP, via MIME headers, or via the sendmail command
	line. Files: global/bounce.c, global/defer.c, global/abounce.c,
	bounce/bounce_service.c, bounce/bounce_notify_util.c.

20020512

	Cleanup: the SMTP client logged and bounced the CNAME
	expanded recipient address, and thereby complicated trouble
	shooting.  File:  smtp/smtp_proto.c.

	Bugfix: the SMTP and LMTP clients bounced the quoted
	recipient address, resulting in too much quoting in bounce
	reports.  Files:  smtp/smtp_proto.c, lmtp/lmtp_proto.c.

20020513

	Bugfix: the LDAP client used the "wrong" @ character in
	addresses with multiple @. LaMont Jones, HP. File:
	util/dict_ldap.c.

	Feature: lots of new LDAP stuff: result_filter (filter to
	expand results from queries), chase_referrals, LaMont Jones,
	HP. The LDAP bind timeout now works thanks to Victor
	Duchovni, Morgan Stanley. File:  util/dict_ldap.c.

	Cleanup: specify "resolve_dequoted_address = no" to prevent
	Postfix from looking inside quotes for extra @ etc. characters
	when resolving an address. This behavior is technically
	more correct, but it opens a mail relay loophole with "user
	@domain"@domain when relaying mail to a Sendmail system.

20020514

	Bugfix: the new code for header address quoting sometimes
	did not null terminate strings so that arbitrary garbage
	could appear at the end of message headers.  Reported by
	Ralf Hildebrandt.  File:  global/tok822_parse.c.

	Safety: user@domain@domain is no longer accepted by the
	permit_mx_backup uce restriction (unless Postfix is configured
	with "resolve_dequoted_address = no"). Victor Duchovni,
	Morgan Stanley. File: smtpd/smtpd_check.c.

20020515

	Workaround: flush the SMTP client output buffer when no
	output has happened for 10+ seconds. This prevents the
	socket from timing out, in case DNS CNAME expansion is
	slow.  Problem experienced by Alex Erdelyi, peregrine.com.
	File:  smtp/smtp_chat.c. We did the same thing for the SMTP
	server years ago, and one wonders why the coin didn't drop
	at the time that the SMTP client could suffer from a similar
	problem.

20020516

	Updated the FILTER_README file to turn off DNS lookups in
	the SMTP client that feeds mail into a content filter.

20020517

	Cleanup: Mailbox-Line: message header labels should be
	X-Mailbox-Line:  labels. Files: smtpd/smtpd.c, qmqpd/qmqpd.c.

20020515-21

	Feature: new MIME parser, written from scratch, that
	recognizes the structure of MIME encapsulated mail. Influenced
	by comments from Victor Duchovni. This code can detect but
	will not decode obscure MIME formats or obscure character
	string encoding that Liviu Daia expresses concern about.

	MIME header scanning now happens in header_checks, and is
	faster than body_checks could ever be. This also eliminates
	the problem with multi-line MIME headers being matched one
	line at a time.  Files:  global/mime_state.[hc],
	cleanup/cleanup_message.c.

20020521-22

	Feature: 8-bit to quoted-printable conversion. First use
	in the Postfix SMTP client. File: smtp/smtp_proto.c.

	Logging: the Postfix SMTP and LMTP clients now report the
	the protocol stage when they report a server reply.  File:
	smtp/smtp_proto.c, lmtp/lmtp_proto.c.

	Bugfix: the SMTP server warned about ignored client attributes
	(these were introduced 20020510) in mail that was submitted
	with "sendmail -bs".  File: smtpd/smtpd.c.

20020525

	Feature: separation of header checks into header_checks
	(all primary headers except MIME related headers),
	mime_header_checks (all MIME headers including MIME headers
	at the start of messages) and nested_header_checks (headers
	of attached messages, except MIME related headers).

	Cleanup: broke out the header value parser from the MIME
	processor so that the code can be reused elsewhere. File:
	global/header_token.c.

	Compatibility: Postfix now recognizes "name :" as a valid
	message header, but normalizes it to "name:" form or else
	lots of things would break all over the place.  Files:
	global/is_header.c, global/mime_state.c.

20020526

	Bugfix: the SMTP server now disallows RCPT TO:<"">, just
	like it disallows RCPT TO:<>.  File: smtpd/smtpd.c.

	Feature: disable_mime_input_processing=yes/no controls
	whether Postfix recognizes (and optionally enforces) MIME
	formats while receiving mail. Default is NO.

	Feature: disable_mime_output_conversion=yes/no controls
	whether Postfix will convert 8BITMIME to 7BIT mail when
	delivering mail to an SMTP server that does not announce
	8BITMIME support.  Default is NO.

	Feature: strict_8bitmime=yes/no controls whether Postfix
	rejects 8-bit characters in headers and 7-bit body parts.
	This blocks mail from poorly written software, including
	majordomo approval requests that contain a valid 8BITMIME
	email message, as well as mail that is piped into ancient
	/bin/mail implementations that do not MIME format 8-bit
	content. Default is NO.

	Feature: strict_mime_encoding_domain=yes/no controls whether
	Postfix rejects illegal content transfer encodings for
	multipart/* and message/*. This blocks mail from poorly
	written software. Default is NO.

20020527

	Feature: "FILTER transport:nexthop" in header/body checks.
	After the message is queued, the message is sent through
	a content filter. This requires different cleanup servers
	before and after the filter, with header/body checks turned
	off in the second cleanup server.

20020528

	Feature: strict_7bit_headers and strict_8bitmime_body are
	now separately available. To to turn on both, use
	strict_8bitmime.

	Cleanup: abandon the use of isspace(3) in the parsing of
	RFC822 message headers. Files: global/lex_822.h and lots
	of little places.

	Documentation: replace domain.name by domain.tld in the
	example config files. The domain exists. They were getting
	mail from poorly configured Postfix boxes.

	Bugfix: The Postfix sendmail command did not export the
	MAIL_CONFIG environment setting to the postdrop command.
	File: global/mail_config.h.

	Incompatibility: by default, turn on the PCRE_DOTALL flag,
	so that PCRE patterns will match multi-line message headers
	without causing pain. Suggested by Michael Tokarev. Also
	documented all those darned undocumented PCRE flags in the
	pcre_table(5) manual page. Files:  util/dict_pcre.c,
	proto/pcre_table.

20020529

	Bugfix: mail rejected due to MIME errors was rejected
	without proper logging. Files: global/mime_state.c,
	cleanup/cleanup_message.c.

20020531

	Bugfix: the SMTP client code that prepends '.' to lines
	starting with '.' had to be moved from its old place to
	after the MIME output conversion. Problem found by Mark
	Martinec.  File: smtp/smtp_proto.c.

20020601

	Bugfix: the deliver_pass() routine needed updating for the
	extra MIME encoding attribute that was introduced 20020510.
	Patch by Sebastian Schaffert @ wastl.net.  File:
	global/deliver_pass.c.

20020604

	Workaround: Solaris non-blocking read() can fail on a socket
	with unread data according to ioctl FIONREAD.  Incredible.
	Diagnosis by Max Pashkov.  File:  smtp/smtp-sink.c.

	Weird feature: sender-based routing. This will become more
	useful once per-address transport map entries are done.
	File:  src/*qmgr/qmgr_message.c.

20020605

	Safety: header_address_token_limit limits the amount of
	memory and CPU that we're willing to spend while parsing
	addresses in message headers. The limit is expressed as a
	number of tokens. File: global/tok822_parse.c

20020608

	Feature: user@domain transport map lookup, based on code
	by Scott Cotton, from several years ago. Adding this code
	now was much less painful than it was in the past. Files:
	global/strip_addr.c, trivial-rewrite/transport.c.

20020610

	Cleanup: making user@domain transport map lookups work with
	sender-based routing was a bit tricky, because the null
	address must be handled sensibly. Files: global/resolve_clnt.c,
	trivial-rewrite/resolve.c. It ain't perfect yet, but close.

20020613

	Bugfix: postsuper -r was broken as of 20020510. The cleanup
	daemon would discard mail with MIME type information. Moved
	a bunch of sanity checks from the cleanup daemon to the
	pickup daemon, so the checks are in one place.  Problem
	experienced by Pavol Luptak. Files: pickup/pickup.c,
	cleanup/cleanup_extracted.c.

20020705

	Safety: log a warning when a domain is listed in mydestination
	and (virtual_maps or virtual_mailbox_maps).  This configuration
	error causes the Postfix SMTP server to reject recipients
	when the local_recipient_maps feature is enabled.  File:
	smtpd/smtpd_check.c.

200207011

	Portability: in the master daemon, the default now is to
	enable the signal handler code that writes a byte into a
	pipe, instead of the signal handler code that sets a global
	flag and hopes that select() will somehow wake up. File:
	master/master_sig.c. This is needed for some IRIX and
	UnixWare versions, but it should also produce a robust
	result on all other supported systems.

	Performance: the default SMTP connection establishment
	timeout is now 30 seconds, instead of the system default
	which can be atrociously large.

20020712

	When DNS lookup fails while delivering mail, report not
	only the domain name but also the DNS record type.  This
	should clue in people who ask why Postfix can't find a
	domain while nslookup can.  File:  dns/dns_lookup.c.

20020713

	Bugfix: undo change made at 20020610 that causes the trivial
	resolver client to loop when an address consists entirely
	of @ and . characters.  File: trivial-rewrite/resolve.c.

	Cleanup: Postfix no longer strips multiple '.' at the end
	of a domain name. One '.' is silently tolerated. Files:
	trivial-rewrite/rewrite.c, trivial-rewrite/resolve.c,
	global/resolve_local.c. This policy is too distributed.

20020715

	Feature: @domain.tld catch-all map entries for the virtual
	mail delivery agent. Files: global/virtual8_maps_find.c,
	virtual/mailbox.c, smtpd/smtpd_check.c.

	Feature: the virtual mail delivery agent now accepts address
	extensions (user+foo@domain.tld), ignores them when looking
	up users in its tables, but displays them in Delivered-To:
	message headers.  File: global/virtual8_maps_find.c.

20020716

	Feature: domain names in a masquerade_domains list can now
	be prefixed with !, in order to disable masquerading for
	that domain name and for its subdomains. File:
	cleanup/cleanup_masquerade.c.

20020717

	Bugfix: Mac OS X niscript (Netinfo) update by Gerben Wierda.
	File: auxiliary/MacOSX/niscript.

	Feature: The SMTP server reject_unknown_whatever restrictions
	now also attempt to look up AAAA (IPV6 address) records.
	Jun-ichiro itojun Hagino, IIJ labs. Files: smtpd/smtpd_check.c,
	dns/dns_lookup.c.

20020718

	Bugfix: unnecessary lookups for extended addresses by the
	virtual8_maps_find() routine. Victor Duchovni. His patch
	did not work, nor did my own, but the present version should
	be OK. File: global/virtual8_maps_find.c.

20020719

	Workaround: log a warning when an SMTP client name->address
	lookup results in a numeric IP address, and set the client
	hostname to "unknown". Some gethostbyname() implementations
	will actually accept such garbage and thereby allow sites
	to defeat the "reject_unknown_client" restriction. Problem
	reported by Wolfgang Rupprecht, fix based on analysis (but
	not code) by Victor Duchovni.

	Bugfix: memory leaks in the LDAP client by Victor Duchovni.
	File: util/dict_ldap.c.

	Bugfix: garbage in verbose "flush" server logging. Victor
	Duchovni.  File: flush/flush.c.

20020723

	Incompatibility: smtpd_sasl_local_domain now defaults to
	the null string. File: smtpd/smtpd.c, smtpd/smtpd_sasl_glue.c.

20020726

	Documentation: added GDB debugging instructions for sites
	that do not have X installed on the Postfix machine. Henrik
	Larsson, spambox.dk.

20020729

	Weird: installed RedHat 3.03 inside VMware, and no change
	was needed to build Postfix, except to recognize the Linux
	version.

	Bugfix: some mailers will announce ESMTP features in their
	HELO (not EHLO) response. Postfix did not ignore them.
	File: smtp/smtp_proto.c.

20020731

	Cleanup: permit_naked_ip_address is unsafe (especially when
	used with smtpd_recipient_restrictions) and will go away.
	Postfix now logs a warning. File: smtpd/smtpd_check.c.

20020801

	Cleanup: the warning message for matched header/body content
	was misleading. File: cleanup/cleanup_message.c.

	Safety: moved the "postsuper -r ALL" operation after the
	"postsuper -s" check that makes queue file names match
	inode numbers. This avoids loss of mail in the unlikely
	case that someone runs "postsuper -sr ALL" on a queue that
	was copied from another place.

	Feature: "postsuper -h" to put mail "on hold" and "postsuper
	-H" to release mail that was placed "on hold". This involves
	a new queue, which is appropriately named "hold".  Files:
	postsuper/postsuper.c, showq/showq.c.

20020803

	Feature: when a Delivered-To: mail delivery loop is detected,
	send the bounce to the mailing list owner. This required
	changes to the local delivery agent, a new bounce client
	stub, and a new bounce server stub and support routines
	for one recipient bouncing. Files: local/recipient.c,
	global/bounce_log.c, global/bounce.c, bounce/bounce.c,
	bounce/bounce_notify_util.c, bounce/bounce_one_service.c.

20020809

	Bugfix: the 20020531 bugfix could prepend '.' to lines when
	it shouldn't (but only when converting 8-bit mail to 7-bit).
	Problem experienced by Ralf Hildebrandt.  File:
	smtp/smtp_proto.c.

	Bugfix: smtpd_sender_login_maps did not do the @domain etc.
	wild-card lookups that were promised. Problem experienced
	by Sven Michels. File: smtpd/smtpd_check.c.

20020810

	Feature: new smtp-sink command-line options to specify the
	SMTP hostname, to disable ESMTP protocol support, to disable
	8BITMIME support, and to syslog selected commands.  File:
	smtpstone/smtp-sink.c.

20020814

	Feature: the queue manager now warns when mail for some
	destination is piling up in the active queue, and suggests
	a variety of remedies.  The qmgr_clog_warn_time parameter
	controls the time between warnings, mainly so that I could
	test the code. To disable these warnings, specify
	"qmgr_clog_warn_time = 0". Files:  *qmgr/qmgr_entry.c.

20020815

	Paranoia: truncate the DNS response length result value in
	case it is larger than the result buffer length (the resolver
	documentation is vague about this). File:  dns/dns_lookup.c.

20020816

	Cleanup: "postqueue -f" now also triggers delivery of mail
	in the maildrop directory. This is needed when the master
	does not frequently wake up the pickup service.  Files:
	global/mail_flush.c, postqueue/postqueue.c.

20020818

	Cleanup: the qmgr_site_hog_factor feature is gone (defer
	mail if a site uses up too much space in the active queue).
	Instead, the qmgr_clog_warn_time feature provides better
	solutions. File: qmgr/qmgr_message.c.

20020819

	Feature: new header/body_checks HOLD pattern that causes
	mail to be placed on the "hold" queue for manual inspection.
	Files: global/hold_message.[hc], cleanup/cleanup_message.c.

20020820

	Bugfix: yesterday's HOLD pattern code did not update the
	cleanup server's idea of the queue file name for error
	recovery and for error reporting purposes, so that incomplete
	or content rejected mail would not be deleted from the
	queue, and so that the bouncer would not find the queue
	file.

	Bugfix: the #ifdef that detects too old LDAP libraries was
	in the wrong place.  Victor Duchovni.  File: util/dict_ldap.c.

	Feature: new header/body_checks DISCARD pattern that causes
	mail to be silently discarded. Files: global/cleanup_user.h,
	cleanup/cleanup_message.c, cleanup/cleanup_api.c.

	Bugfix: the local delivery agent's mailbox duplicate delivery
	eliminator was not updated in the days that address extensions
	were added to Postfix. The other local duplicate eliminators
	probably need revision as well. File: local/mailbox.c.

20020821

	Feature: HOLD and DISCARD actions in SMTPD access tables.
	These requests are propagated to the cleanup daemon.  Files:
	cleanup/cleanup_envelope.c smtpd/smtpd_check.c.

	Cleanup: eliminate unnecessary references to the obsolete
	program_directory configuration parameter (but keep the
	parameter so as to not break existing installations).
	Matthias Andree, many little changes in documentation.

20020822

	Bit Rot: OpenLDAP incompatible change with URL parsing.
	Patches by Will Day, Georgia Tech, and Carsten Hoeger,
	SUSE.  File: util/dict_ldap.c.

20020823

	Bugfix: added a missing memset() call to wipe the lookup
	key in dict_db_delete(). This is needed by some Berkeley
	DB implementations. Patch by Katsu Yamamoto, Fujitsu.

	Bugfix: when permit_mx_backup is unable to make a decision
	due to DNS problems, set the "defer if reject" flag so that
	other restrictions will not cause mail to be rejected.
	File: smtpd/smtpd_check.c.

	Feature: instead of giving up immediately after DNS failure,
	turn on the "defer_if_permit" flag when reject_unknown_hostname,
	reject_unknown_sender_domain or reject_unknown_recipient_domain
	are unable to make a decision, and see if any subsequent
	restrictions would still cause the mail to be rejected.
	File:  smtpd/smtpd_check.c.

	Feature: "FILTER transport:nexthop" is now also available
	in SMTPD access tables.

20020826

	Workaround: HP-UX 11 accept() fails with ENOBUFS when the
	client disconnects early. File: sane_accept.c.

20020901

	Cleanup: postfix-install no longer installs all the manual
	pages under $POSTFIXSOURCE/man, so we can generate manual
	pages for smtp-sink etc.  File: man/Makefile.in.

20020903

	Bugfix: the rmail script should have been updated when
	Postfix sendmail was changed to recognize `.' as the end
	of input.  Problem fix by Christian Kratzer, cksoft.de.
	File:  auxiliary/rmail/rmail.

	Feature: specify "maximal_queue_lifetime = 0" for mail that
	should be returned immediately after the first unsuccessful
	delivery attempt. Files: qmgr/qmgr.c, nqmgr/nqmgr.c.

20020904

	Bugfix: qmail compatibility: qmqpd should support any
	character at the end of the VERP prefix in prefix@host-@[].
	Based on a patch by LaMont Jones, HP.

20020905

	Feature: "smtpd_data_restrictions = reject_unauth_pipelining"
	blocks mail from SMTP clients that send message content
	before Postfix has replied to the DATA command.  File:
	smtpd/smtpd.c, smtpd/smtpd_check.c.

	Bugfix: the LDAP client dumped core in verbose mode.
	Reported by Will Day and others.  File: util/dict_ldap.c.

20020906

	Cleanup: dict_regexp module speedups by avoiding unnecessary
	substring overhead while matching strings. Based on a
	suggestion by Liviu Daia. This involved major rewriting of
	the regexp map code.  File: util/dict_regexp.c.

20020907

	Feature: IF..ENDIF support based on code by Bert Driehuis.
	This involved a further rewrite of the regexp map code.
	File: util/dict_regexp.c.

200209010

	Bugfix: the SMTP client produced suprious warnings about
	trouble with fallback_relay hosts. File:  smtp/smtp_connect.c.

	Robustness: don't wait with detecting broken SMTP connections
	until reading input. Leandro Santi. File: smtpd/smtpd_chat.c.

200209011

	Workaround: IRIX 6 can't do ioctl FIONREAD on pipes. This
	breaks the in_flow_delay feature.  File:  util/sys_defs.h.

20020912

	Bugfix: canonical/virtual mapping core dump with a null
	right-hand side address. Report by Jussi Silvennoinen.
	File: global/mail-addr_crunch.c.

	Feature: IF..ENDIF support based on code by Bert Driehuis.
	This involved a rewrite of the pcre map code similar to
	the regexp map code.  File:  util/dict_pcre.c.

20020917

	Feature: on Linux, support for PCRE lookup tables is now
	compiled in if the PCRE library code is found under
	/usr/include and /usr/lib.  File: makedefs.

20020918

	Documentation: postsuper(1) did not document the -c option.

	Bugfix: possible longjump() before setjmp(). File:
	smtpd/smtpd.c.

	Bugfix: pickup should not preserve INSPECT or FILTER records
	from "postsuper -r". File: pickup/pickup.c.

20020919

	Feature: "reject_rbl <domain>" for client address blacklisting
	by LaMont Jones, including $name expansion for per-domain
	customized response messages. The obsolete reject_maps_rbl
	is now a wrapper that uses the new code.

20020921

	Internal: added caching and factored out common code that
	will be used for both reject_rbl and for the upcoming
	reject_rhsbl restriction.

20020922

	Feature: "reject_rhsbl <domain>" for sender domain
	blacklisting.  Provides the same per-domain customized
	response message mechanisms with $name expansion as
	reject_rbl.

	Safety: the smtpd_expansion_filter parameter controls what
	characters are allowed in the expansion of $name macros in
	template RBL responses.

	Cleanup. In order to make sensible warnings possible when
	expanding a non-existent $name in RBL reply templates,
	mac_expand() had to be changed so that an empty string
	result (i.e. the name does exist) will no longer cause
	${name?text} to succeed.  File:  util/mac_expand.c.

20020923

	Cleanup. Renamed the RBL features according to a scheme
	that was suggested by Liviu Daia in October 2001. The names
	are reject_rbl_client and reject_rhsbl_sender, respectively.
	Added domain name based reject_rhsbl_client and
	reject_rhsbl_recipient restrictions for completeness.  The
	reject_rbl restriction name is still recognized for
	compatibility with systems maintained by LaMont Jones.

20020924

	Bugfix: reject_rhsbl_<mumble> was broken when <mumble> was
	unavailable, causing the restrictions parser to get out if
	sync. Spotted by Ralf Hildebrandt.  File:  smtpd/smtpd_check.c.

20020928

	Bugfix: missing %s in the 20020923 RBL code. This was not
	exploitable because Postfix implements only a safe subset
	of all printf format operators and because memory for the
	result is dynamically allocated.  Victor Duchovni. File:
	smtpd/smtpd_check.c.

20020929

	Updated MacOSX support scripts from Gerben Wierda.  Files:
	auxiliary/MacOSX/*.

20021009

	Bugfix: SIZE errors should be reported at MAIL FROM time,
	and should not be postponed (with smtpd_delay_reject = yes)
	until RCPT TO time. Reported by Jeroen Scheerder, Utrecht
	University. Files: smtpd/smtpd.c smtpd/smtpd_check.c.

20021013

	When Postfix development started, Linux mail delivery
	software such as procmail did not use kernel locks, and
	Postfix picked one that seemed plausible, namely, flock().
	In the mean time, Linux mail delivery software seems to
	have standardized on fcntl() locks. File: util/sys_defs.h.

	Feature: body_checks_size_limit parameter to specify how
	much of a message body segment (or attachment, if you prefer
	to use that term) is subjected to body_checks inspection.
	Default limit:  50 kbytes. Files:  global/mime_state.c,
	cleanup/cleanup_message.c.

20021015

	Bugfix: the code for missing postmaster/mailer-daemon
	aliases had to be moved after the code that implements the
	luser_relay feature. Files: local/alias.c, local/unknown.c.

	Weird? The LMTP client lowercased the MAIL FROM and RCPT
	TO addresses. Some remnant of code that someone put in
	there long ago. File: lmtp/lmtp_proto.c.

20021024

	Feature: proxy_interfaces parameter. Specify your NAT or
	other proxy addresses here to avoid mail delivery loops.
	Files: global/mail_params.[hc] global/own_inet_addr.[hc]
	global/resolve_local.c smtp/smtp_addr.c smtpd/smtpd_check.c.

	Paranoia: defend against a very unlikely false alarm in
	safe_open().

20021025

	Feature: X-Original-To: message headers with the raw original
	envelope recipient.

	Logging: status=sent/deferred/bounced/ logging now includes
	the original recipient address if it differs from the final
	address.

20021026

	Logging: SMTP UCE reject/warn/hold/discard logging now
	includes queue ID. This will break some logfile analyzers.

	Logging: SMTP UCE reject/warn/hold/discard logging now
	includes the protocol name and, if available, the hostname
	given in the SMTP HELO or EHLO command.

	Logging: header/body_checks reject/warn/hold/discard logging
	now includes the protocol name and, if available, the
	hostname given in the SMTP HELO or EHLO command.

20021028

	Bugfix: don't reset state after rejected EHLO. Reset state
	after HELO. Reported by Karthikeyan Bhargavan, upenn.edu.
	Files: smtpd/smtpd.c.

20021029

	Bugfix: local(8) did not prepend an X-Original-To:  message
	header while delivering to command, and local(8) did not
	document the X-Original-To:  message header.

	Workaround: DJBDNS produces a bogus A record when given a
	numerical hostname. File: dns/dns_lookup.c.

20021030

	Portability: support for Berkeley DB version 4.0 but not
	for Berkeley DB version 4.1 (yes, the API is different).
	Postfix is now going to be paranoid about the minor version
	number, too. File:  util/dict_db.c.

	Documentation: updated LMTP_README file by Amos Gouaux.

20021031

	Bugfix: (bug introduced 20021026) log NOQUEUE when rejecting
	ETRN, instead of trying to log a non-existent queue ID.
	Victor Duchovni, Morgan Stanley. File: smtpd/smtpd_check.c.

	Cleanup: allow optional text after commands in SMTPD access
	maps. Based on initial effort by Victor Duchovni, Morgan
	Stanley. File: smtpd/smtpd_check.c.

	Portability: support for Berkeley DB version 4.1.  This
	version refuses to open zero-length files. This complicates
	lock management and requires extra code to remove broken
	files. Files:  util/dict_db.c, global/mkmap*.[hc].

20021101

	Bugfix: don't complain about out-of-order original recipient
	records for finished recipients. Files:  *qmgr/qmgr_message.c,
	cleanup/cleanup_envelope.c, cleanup/cleanup_extracted.c.

	Cleanup: further simplified the mkmap wrapper (used by
	postmap and postalias only) to remove some hurdles for
	Michael Tokarev's CDB support. Files: global/mkmap*.[hc].

20021105

	Postalias now produces YP_LAST_MODIFIED and YP_MASTER_NAME
	records only when NIS support is compiled in. File:
	postalias.c.

20021106

	Postalias now puts $myhostname in the YP_MASTER_NAME record,
	instead of the possibly bogus gethostname() result.  File:
	postalias.c.

	The PCRE map code did not reject non-numeric replacement
	indices in replacement text, and silently treated $text as
	$0. Found by Michael Tokarev. File: dict_pcre.c.

20021108

	Cleanup: the behavior of the SMTP server's defer_if_permit
	flag was changed, in order to maximize the opportunity to
	permanently reject mail without opening opportunities for
	losing legitimate mail. This was done in cooperation with
	Victor Duchovni, Morgan Stanley. File: smtpd/smtpd_check.c.

	The defer_if_permit flag is still set when an UCE reject
	restriction fails due to a temporary (e.g., DNS) problem,
	to prevent unwanted mail from slipping through. However,
	the flag is no longer tested at the end of client, helo or
	sender restrictions.  Instead, the flag is now tested at
	the end of the ETRN and recipient restrictions only.

	The behavior of the warn_if_reject restriction has changed.
	It no longer activates any already made defer_if_permit or
	defer_if_reject decisions (the defer_if_reject flag is set
	when some UCE permit restriction fails due to a temporary
	(DNS) problem, to avoid loss of legitimate mail).

	Bugfix: instead of setting the defer_if_permit flag, a
	failing reject restriction after warn_if_reject now merely
	logs that it would have caused mail to be deferred.

	A failing permit restriction after warn_if_reject still
	raises the defer_if_reject flag, to avoid loss of legitimate
	mail.

20021109

	Bugfix: a misguided change to the .forward macro expansion
	filter broke .forward file lookup.

	Bugfix: missing defer_if_permit test in smtpd_data_restrictions.
	Victor Duchovni. File:  smtpd/smtpd_check.c.

20021112

	Robustness: increase the mime_nesting_limit from 20 to 100,
	so that bounces can't loop. Each bounces increases the MIME
	nesting level by one.  Ralf Hildebrandt and Victor Duchovni.

20021113

	Robustness: reinstated SMTP client command flushing to
	avoid pipeline stalls.  File: smtp/smtp_chat.c.

20021114

	Robustness: distinguish between timeout and "lost connection"
	when the SMTP server is unable to send a reply to the remote
	client. File: smtpd/smtpd_chat.c.

20021115

	Bugfix: initialization error with "*" transport table
	lookup, reported by LaMont Jones. The transport map lookup
	code had grown into a monster and needed to be replaced.
	trivial-rewrite/transport.c.

20021115

	Start implementing recipient verification. For now this is
	done by adding trace flags to queue files. In case of a
	verification request, a delivery agent does not deliver,
	deliver, it just records what would happen.

	This required instrumenting the bounce/defer/sent logging
	routines to send their data to the right place depending
	on the type of delivery request.

20021116

	New trace service. This is used for reporting if a recipient
	is deliverable (sendmail -bv) and for producing a record
	of delivery attempts (sendmail -v). The report is sent via
	email, using the bounce daemon. Files: global/trace.[hc].

	This required replacing the bounce/defer logfile format by
	an extensible name=value format. Files: global/bounce_log.c,
	bounce/bounce_append_service.c.

20021117

	New address verification service with simple expiration
	and refresh policy. Storage can be in-core or in permanent
	table. The daemon is appropriately called "verify". Files:
	global/verify_clnt.[hc], verify/verify.c.

20021118

	Cleaning up the code for tracing and verification. Files:
	global/{log_adhoc,bounce,defer,trace,verify}.[hc].

20021119

	New address_verification_negative_cache = yes/no parameter
	controls whether Postfix stores the result of negatieve
	address verification probes. This reduces cache pollution
	but causes Postfix to send a probe for each address
	verification service query. File: verify/verify.c.

	Added optimistic caching to the verify daemon, so that one
	failed probe will not clobber a known to be good address.
	As long as some probes succeeed, a good address will stay
	cached as OK.

	Cleaning up of the bounce daemon's code for bounce, delayed
	mail warning and trace notification.  Files: bounce/*.[hc],
	global/bounce_log.c.

20021120

	Changed the probe's sender address to "postmaster" so that
	we get better information about the address we're testing.
	File: verify/verify.c.

	Added some paranoia to the routine that reads data from
	the address verification cache. Ignore data that is obviously
	bogus. File: verify/verify.c.

20021121

	Bugfix: garbage in "user@garbage"@domain address forms may
	cause the SMTP or LMTP client to terminate with a fatal
	error exit because garbage/tcp is not an existing service.
	This cannot be abused to cause the SMTP or LMTP client to
	send data into unauthorized ports.  Files: *qmgr/qmgr_message.c,
	trivial-rewrite/resolve.c.

20021124

	Bugfix: don't use same VSTRING buffer for reading and
	writing.  File: verify/verify.c.

20021128

	Feature: hashed hold queue support, with hashing turned on
	by default. Omission spotted by Victor Duchovni, Morgan
	Stanley. Files: global/hold_message.c, global/mail_params.h.

	Bugfix: the LMTP client lost the port(service) information
	when parsing host:port information. Victor Duchovni, Morgan
	Stanley. Fix is to have a new host_port(3) module that does
	the parsing for the SMTP and LMTP clients.

	Cleanup: host_port() routine that parses host/port information
	more consistently than the existing code in the LMTP and
	SMTP clients. Files: smtp/smtp_connect.c, lmtp/lmtp_connect.c,
	util/host_port.[hc].

20021130

	Cleanup: defer mail when recipient verification takes too
	long. File: smtpd/smtpd_proto.c.

	Feature: new reject_multi_recipient_bounce restriction, to
	reject "MAIL FROM: <>" with multiple recipients.  File:
	smtpd/smtpd_check.c.

20021201

	Compatibility: ignore the new Sendmail -A option. File:
	sendmail/sendmail.c.

	Workaround: sendmail -v now produces no output. You need
	to specify -v -v instead. This is to avoid problems when
	people request verbose mail delivery in their mail.rc file.
	File:  sendmail/sendmail.c.

20021202

	Cleanup: hash_queue_depth now defaults to 1 level of
	subdirectories. This makes "mailq" faster on most systems,
	but will result in poorer worst-case performance when lots
	of mail is queued.

	The check_relay_domains restriction is going away. The SMTP
	server logs a warning and suggests using reject_unauth_destination
	instead.

	Cleanup: the local(8) and virtual(8) delivery agents did
	not prepend X-Original-To: addresses to maildir files.
	Omission spotted by Matthias Andree.

	Specify "address_verify_sender=" or "address_verify_sender=<>"
	to use a null sender address while doing address verification
	probes.  Beware, doing so may trigger false negatives
	because some sites reject mail from the null sender, even
	though this is required by RFC standards.

	Bugfix: too many levels of dereferencing while testing for
	missing reject_rbl_mumble domain names. Patrik Rak.  File:
	smtpd/smtpd_check.c.

20021203

	Bugfix: the FILTER access table action included the FILTER
	command in the filter request, where only the transport+destination
	were expected. Noel Jones. File smtpd/smtpd_check.c.

	Cleanup: virtual_maps is now called virtual_alias_maps, in
	order to better distinguish it from virtual_mailbox_maps.
	The default value is $virtual_maps for backwards compatibility.

	New parameters virtual_alias_domains and virtual_mailbox_domains
	for the "domain.tld whatever" lookups.  These use the same
	syntax as the mydestination parameter.  Default settings
	are backwards compatible with Postfix 1.1.

	Concept: just like $mydestination+$inet_interfaces control
	what routes to $local_transport, $virtual_mailbox_domains
	now controls what routes to $virtual_transport (default
	transport:  virtual), and $relay_domains now controls what
	routes to $relay_transport (default transport: relay, a
	clone of the smtp transport).  Everything else routes to
	$default_transport as before.  This eliminates the need
	for transport map entries for every virtual(8) domain, and
	avoids performance problems with inbound relay mail. This
	was improvement was suggested by Victor Duchovni. File:
	trivial-rewrite/resolve.c.

20021206

	Cleanup: do allow regexps in aliases, virtual mailbox maps
	but do not allow regular expression substitutions. Files:
	util/dict.h, util/dict_regexp.c, util/dict_pcre.c.

20021207

	Cleanup: deleted the description of sendmail-style virtual
	domains from the virtual(5) manual page. This part of
	Postfix was too confusing.

	Performance: RFC 2821 blesses the use of CNAME domain names
	in MAIL FROM and RCPT TO. Not having to expand CNAME domain
	names speeds things up a bit.  File:  smtp/smtp_proto.c.

	Workaround: exclude error mailer destinations from transport
	mapping lookups :-(. File: trivial-rewrite/resolve.c.

	Cleanup: relocated_maps lookups are now moved to the
	trivial-rewrite server. As of now, the queue manager no
	longer does any map lookups, so it won't restart when maps
	change. Files:  *qmgr/qmgr_message.c, trivial-rewrite/resolve.c.

	Robustness: because the trivial-rewrite server now does
	many more table lookups, some of which are often LDAP or
	SQL based, trivial-rewrite clients must be be prepared for
	the case that the resolver reports a failure while processing
	a request (when it was unable to access a lookup table).
	Files:  trivial-rewrite/resolve.c, local/resolve.c,
	smtpd/smtpd_check.c.

	Robustness: moving possible LDAP or SQL table lookups into
	the trivial-rewrite server also required that trivial-rewrite
	be running as multiple processes to reduce lookup latencies.
	Files:  master/multi-server.c.

	Workaround: don't discard all the DNS lookup results when
	only one of the results has a malformed name or address.
	File:  dns/dns_lookup.c.

20021208

	Cleanup: with the preliminary address domain classification
	concept as implemented by the trivial-rewrite address
	resolver, a lot of table lookups could be eliminated from
	the SMTP server.  Files: smtpd/smtpd_check.c.

	Feature: new relay_recipient_maps parameter, for optional
	maps with all the recipients in the domains that match
	$relay_domains (so you can reject mail for unknown relay
	recipients). This is for consistency with virtual_xx_maps
	and virtual_xx_domains, and with local_recipient_maps and
	the local delivery agent.  File:  smtpd/smtpd_check.c.

	Cleanup: removed support for obsolete #number domain forms.
	File: smtpd/smtpd_check.c.

20021209

	The Postfix installation procedure no longer sets the
	"chattr +S" bit on Linux queue directories. Wietse has
	gotten too annoyed with naive reviewers who complain about
	performance without having a clue of what they are comparing.

	"Security": local_recipient_maps is now turned on by default,
	to reject mail for non-existent users at the SMTP port.
	See conf/main.cf for instructions, section REJECTING UNKNOWN
	LOCAL USERS.

	Safety: detection of missing or inaccessible passwd file
	database, to prevent massive complaints from people who
	suddenly lose all their mail because local_recipient_maps
	is now turned on by default.

20021210

	Feature: recipient address verification, using the code
	that already implements sender address verification.  Based
	on suggestion by Matthias Andree.  Files: src/smtpd/smtpd.c,
	src/smtpd/smtpd_check.c.

20021211

	Performance: doubled the default process limit (50->100)
	and default queue manager active queue message/recipient
	limits  (10k->20k).  File:  global/mail_params.h.

	Bugfix: the change that begot us multiple trivial-rewrite
	processes (good) also gave us multiple verify daemons (bad).
	File: conf/post-install.

20021212

	Cleanup: allow transport map lookups to override error
	mailer results (to avoid breaking existing installations),
	and do transport map lookups before relocated map lookups.
	Files:  trivial-rewrite/resolve.c, trivial-rewrite/transport.c.

	Shortened the verify server's negative cache refresh time
	from 12 hours to 2 hours. File:  global/mail_params.h.

	Admin friendliness: the SMTP server now reports "User
	unknown in {local recipient | virtual alias | virtual
	mailbox | relay recipient} table". This will make trouble
	shooting a little easier. Files: smtpd/smtpd_check.c,
	trivial-rewrite/resolve.c.

20021213

	Cleanup: transport map entries with null nexthop ignored
	relayhost settings. Making the code simpler also made it
	more correct. Files: trivial-rewrite/resolve.c,
	trivial-rewrite/transport.c.

	Feature: "helpful_warnings" (default: yes) that can be
	turned off if you really know what you're doing and want
	to eliminate some unnecessary work.

	Feature: enforcement of master.cf process limits for
	processes such as qmgr and pickup that must run alone, and
	processes such as cleanup and bounce that must run without
	explicit process count limit. If an incorrect process limit
	is specified in master.cf the service aborts.

20021214

	Cleanup: it looks like we finally get it right with transport
	lookup table entries that either override or specify an
	error transport without updating the nexthop information.
	File:  trivial-rewrite/resolve.c.

	Robustness: don't probe the sender address when probed for
	our own address verification probe sender address. File:
	smtpd/smtpd_check.c.

	Performance: don't do UCE checks (which may result in 4xx
	SMTP reply codes, and thus, repeated delivery attempts)
	when we already know that the recipient does not exist.
	Files:  smtpd/smtpd.c, smtpd/smtpd_check.c.

20021215

	Cleanup: further simplification of transport map handling
	after some really fine hair splitting with Victor Duchovni.
	Files: trivial-rewrite/resolve.c, trivial-rewrite/transport.c.

20021216

	Workaround:  transform the address local-part into unquoted
	form only when the address domain is local and the local-part
	contains routing operators.  Otherwise, we may damage the
	address local-part by inserting space between non-operator
	tokens. Some people use weird addresses and expect them to
	be handled without damage.  File: trivial-rewrite/resolve.c.

	Robustness: scan the resolved recipient address for routing
	operators in the address local-part, even when the local
	MTA does not recognize ! and % as valid operators.  File:
	trivial-rewrite/resolve.c.

	Cleanup: the address rewriting code no longer tries to
	rewrite broken user@ or user@. address forms into even more
	broken forms. bother. File: trivial-rewrite/rewrite.c.

	Cleanup: the address resolver code now treates forms ending
	in @ in a more rational manner (because the address rewriting
	code no longer messes up by appending .my.domain).

	Bugfix: a null address local-part before @domain now is
	properly quoted just like the null address. File:
	global/quote_82[12]_local.c.

20021217

	Cleanup: more work on the trivial-rewrite address rewriting
	and address resolving code. New regression tests for address
	rewriting and resolving that make some assumptions about
	main.cf settings. Files: global/Makefile.in (assumptions),
	global/rewrite_clnt.in, global/rewrite_clnt.ref,
	global/resolve_clnt.in, global/resolve_clnt.ref.

	Safety: configurable SMTPD reject codes for recipients not
	in {local,relay}_recipient,virtual_{alias,mailbox}}_maps,
	aptly named unknown_mumble_reject_code.  Postfix installs
	with unknown_local_recipient_reject_code=450, unless the
	site already ran Postfix with local_recipient_maps enabled.
	Files:  smtpd/smtpd.c, smtpd/smtpd_check.c, conf/post-install.

20021218

	Feature: specify unverified_recipient_reject_code=250 or
	unverified_sender_reject_code=250 to accept mail for an
	address that is known to bounce. File: smtpd/smtpd_check.c.

20021219

	Bugfix: longjmp() while sending "go away" without setjmp()
	in the QMQP server. Patrik Rak. File: qmqpd/qmqpd.c.

	Safety: the XVERP extension is restricted to clients listed
	in the authorized_verp_clients list (default: $mynetworks).
	File: smtpd/smtpd.c.

	Workaround: preliminary IPV6 support in valid_hostliteral().
	File: util/valid_hostname.c.

20021220

	Bugfix: the reject_multi_recipient_bounce restriction had
	an off-by-one error when used in smtpd_data_restrictions.
	File: smtpd/smtpd_check.c.

	Feature: new check_recipient_maps restriction that gives
	finer control over when unknown recipients are rejected.
	As with Postfix 1.1, the default is to do this at the end
	of the recipient restrictions. Sites that want to improve
	performance can put check_recipient_maps at the start of
	the smtpd_client_restrictions list and avoid doing unnecessary
	RBL lookups etc.  File:  smtpd/smtpd_check.c.

	Feature: new show_user_unknown_recipient_table parameter
	controls whether or not to reveal the lookup table name in
	"User unknown" responses. The extra detail makes trouble
	shooting easier but also reveals information that is nobody
	elses business.

20021221

	Workaround: don't allow the transport map to override the
	virtual alias class (error:User unknown) result.  File:
	trivial-rewrite/transport.c.

20030101

	Documentation update: new-style virtual domains broke the
	advanced content filtering example. Files: FILTER_README,
	RELEASE_NOTES-2.0.

20030102

	Cleanup: use different client instances when the same map
	is opened with different flags. File: global/maps.c.

	Feature: proxymap server for Postfix table lookups. This
	helps to consolidate the number of open lookup tables (such
	as MYSQL or LDAP), or to overcome chroot restrictions
	(example: specify proxy:unix:passwd.byname to avoid the
	need for a copy of the UNIX passwd file in chroot jails).
	Files:  global/dict_proxy.[hc], proxymap/proxymap.c

	Cleanup: multiservers such as trivial-rewrite and the new
	proxymap server now enforce the max_use total client number
	limit more agressively, by not accepting new connections
	after the limit is reached.  Based on a patch by Victor
	Duchovni, Morgan Stanley. File:  master/multi_server.c.

20030103

	Cleanup: client stream endpoints not only have an idle time
	limit ($ipc_idle) before a connection is closed, they now
	also have a time to live ($ipc_ttl) to prevent connections
	from becoming too persistent. This allows multi-servers
	such as trivial-rewrite or the proxymap server to refresh
	more frequently on busy systems. File:  global/clnt_stream.c.

20030104

	Cleanup: avoid warnings about flag mismatches when the same
	lookup table is listed under both virtual_alias_maps and
	virtual_mailbox_maps. Files: global/virtual8.h, virtual/virtual.c.

	Bugfix: an obscure memory leak that puzzled me for more
	than a year until I found out how to reproduce it. File:
	util/vstream.c.

20030105

	Cleanup: removed the address syntax check from the queue
	manager, since a better test was implemented recently in
	the trivial-rewrite server. Files: *qmgr/qmgr_message.c.

	Bugfix: redirect bounce/defer to the address verification
	service where appropriate. Files: *qmgr/qmgr_bounce.c,
	*qmgr/qmgr_defer.c.

	Bugfix: "no such file or directory" warnings after "postfix
	reload" when a chrooted smtpd reconnects to the proxy
	service.  Fix: use "private/proxymap" if possible, otherwise
	use "$queue_dir/private/proxymap".  File:  global/dict_proxy.c.

	Robustness: daemons now chdir() to the queue directory
	before running the pre-jail initialization code, so that
	daemons running in stand-alone mode produce more consistent
	results.  Files:  master/single_server.c, master/multi_server.c.
	master/trigger_server.c.

	Bugfix: "sendmail -bs" tried to access the proxymap service.
	It should not try to open any user/domain/uce related tables
	at all. File:  smtpd/smtpd.c.

20030106

	Bugfix: bouncing to owner-alias was broken, i.e. the mail
	kept being deferred, and when that was fixed, another buglet
	came to light. File: bounce/bounce.c.

	Robustness: the master no longer aborts with "address
	already in use" when inet_interfaces specifies the same IP
	address multiple times, or when a TCP service in master.cf
	specifies a hostname for which the same IP address is listed
	multiple times. File: master/master_ent.c.

20030107

	Robustness: check that FILTER actions in SMTPD access maps
	or cleanup header/body_checks have plausible syntax. Files:
	smtpd/smtpd_check.c, cleanup/cleanup_message.c.

20030109

	Cleanup: unnecessary "premature end of file on xxx while
	reading yyy" warnings became exposed after some code
	simplification. Files" global/*_clnt.c, global/dict_proxy.c

	Robustness: undo the change that causes a multi-server
	process to stop accepting new connections while it still
	services existing clients for an extended amount of time.
	We need a better process retirement strategy. File:
	master/multi_server.c.

20030110

	Cleanup: the virtual_mailbox_maps parameter is now optional
	even when virtual_mailbox_domains is. This makes virtual
	mailbox domains more like relay domains and the local
	domain.

	Portability: the makedefs script now uses the pcre-config
	utility to find out where things are installed.

	Bugfix: the SMTP server did not recognize the local built-in
	double bounce address as local. Reported by Matthias Andree.
	For safety sake, threw in the local postmaster address as
	well.  File:  smtpd/smtpd_check.c.

20030113

	Added MAILER-DAEMON to the list of always recognized local
	addresses, since it is generated by Postfix bounces. File:
	smtpd/smtpd_check.c.

20030114

	Bugfix: transport_errno was not reset upon successful
	transport map wildcard lookup after an earlier failure.
	Reported by Victor Duchovni. File:  trivial-rewrite/transport.c.

	Cleanup: unnecessary warnings from the proxymap client
	after proxymap server disconnect. File:  global/dict_proxy.c.

	Cleanup: Patrik Rak found a few more chattr invocations
	that were missed 20021209. Files: postfix-install,
	conf/post-install.

	Cleanup: the pcre-config command can produce null outputs.
	Matthias Andree.  File: makedefs.

	Bugfix: the virtual(8) Makefile included $(AUXLIBS) in the
	dependencies.

20030118

	Typos: some hyperlinks referred to flushd, which is the
	name that was used before the flush service was released.
	Reported by Victor Duchovni.

	Cleanup: smtpd no longer needed to open relocated_maps.

20030119

	Cleanup: bounce messages used "X-Postfix" even when mail_name
	was set to something other than the default "Postfix" name.
	File: bounce/bounce-notify_util.c.

20030120

	Bugfix: wrong FILTER_README instructions for disabling
	virtual alias mapping in the cleanup server before the
	content filter.

	Bugfix: wrong FILTER_README instructions for destination-dependent
	filtering, because relay_domains was specified incorrectly.

20030122

	Bugfix: 20021207 (move relocated table lookup from queue
	manager to trivial-rewrite server) broke relocated table
	lookup results with mail not rejected at the SMTP port.
	Files:  *qmgr/qmgr_deliver.c, *qmgr/qmgr_message.c.

20030123

	Bugfix: a widely used maildir filename algorithm was broken.
	Postfix now uses TIME.DEVICE_INODE.HOST. Files: local/maildir.c,
	virtual/maildir.c.

20030124

	Cleanup: queue structures no longer overload queue name
	and nexthop destination. Files: *qmgr/qmgr_message.c,
	*qmgr/qmgr_queue.c, *qmgr/qmgr_deliver.c.

20030125

	Feature: "REDIRECT user@domain" action in access maps or
	in header/body_checks causes mail to be sent to the specified
	address instead of the intended recipient(s). I would never
	recommend that people use this to redirect (bounced) SPAM
	to the beneficiaries of an advertisement campaign.  Files:
	smtpd/smtpd_check.c, cleanup/cleanup_message.c,
	*qmgr/qmgr_message.c.

20030126

	Update: maildir filename algorithm updated according to
	today's version of http://cr.yp.to/proto/maildir.html.

20030127

	Cleanup: use separate error messages for separate problems
	with computing the list of SASL authentication mechanisms.
	File: smtpd/smtpd_sasl_glue.c.

20030130

	Bugfix: allow $name in default time values. File:
	global/mail_conf_time.c.

20030205

	Feature: allow !, /file/name and map:name in masquerade_exceptions.
	By Liviu Daia.  Files:cleanup_init.c, cleanup.h,
	cleanup_masquerade.c.

20030219

	Bugfix: the local pickup daemon skipped unterminated records,
	since they happened to have the same record type code as
	content filtering instructions. Victor Duchovni.  Files:
	global/rec_type.h, pickup/pickup.c.

	Portability: Postfix could block, and thus not enforce
	command execution time limits, while delivering mail to
	command.  File: global/pipe_command.c.

	Bugfix: command execution time limits were not enforced
	because the child process killing code in pipe_command()
	was running with the wrong privileges. Problem reported by
	Ben Rosengart, Panix. File: global/pipe_command.c.

	Bugfix: duplicate recipient filtering in the cleanup server
	did not eliminate virtual expansion duplicates with the
	same original recipient. File: cleanup/cleanup_out_recipient.c.

20030223

	Cleanup: added postmap/postalias -p option (do not inherit
	the source file permissions when creating a new file), for
	completeness.  A feature that can't be turned off is a bug.
	Files:  postmap/postmap.c, postalias/postalias.c.

	Bugfix: smtpd_hard/soft_error_limit off-by-one error, so
	that the real limit was one larger than the configured
	value.  File: smtpd/smtpd.c, smtpd/smtpd_chat.c.

20030226

	Safety: proxymap server defense against potential deadlock
	when some library routine wants to open a proxied table.
	Instead, proxymap opens the requested table directly. File:
	proxymap/proxymap.c.

	Portability: updated AIX 5.x system dependent definitions.
	File: util/sys_defs.h.

20030227

	Bugfix: added mynetworks to the list of proxy_read_maps
	parameter settings that are pre-authorized to use proxied
	table lookups.  File: global/mail_params.h.

	Cleanup: daemons now log what table has changed before
	restarting. Files: dict.c, and anything that invoked
	dict_changed().

	Cleanup: more consistency in the naming of lookup table
	handles as generated by maps(3) and by match_list(3).

20030305

	Workaround: Postfix removes too long non-address text from
	message headers in order to protect vulnerable Sendmail
	systems against exploitation of the remote buffer overflow
	vulnerability described in CERT advisory CA-2003-07.

20030311-19

	Bugfix: the access map actions HOLD, DISCARD, FILTER and
	REDIRECT were broken with smtpd_delay_reject=no and with
	ETRN.  This required re-architecting of the actions code.
	Files:  smtpd/smtpd.[hc], smtpd/smtpd_check.c, smtpd/smtpd_state.c.

20030315

	Bugfix: the postsuper manual page documented support for
	the -c command line option, but it was not implemented.
	File: postsuper/postsuper.c.

	Bugfix: the Postfix 2.0 recipient map checking code broke
	the VRFY command, causing it to reply with status code 252
	for non-existent addresses. This required re-architecting
	the recipient table lookup code. File:  smtpd/smtpd_check.c.

20030319

	Feature: configurable limit on virtual alias expansion size
	and nesting depth, via the virtual_alias_expansion_limit
	and virtual_alias_recursion_limit parameters. The default
	limits are compatible with past Postfix versions.  Victor
	Duchovni, Morgan Stanley. Files: /sample-resource.cf,
	html/resource.html, cleanup/cleanup.c, cleanup/cleanup_init.c,
	cleanup/cleanup_map1n.c.

	Feature: the installation procedure records build information
	(by default:  in /etc/postfix/makedefs.out).

20030324

	Bugfix: smtp-source flushed too often, causing suboptimal
	performance with smtp-source sending directly into smtp-sink.
	Files: smtpstone/smtp-source.c.

20030410

	Safety: log a fatal error when a net/mask pattern has a
	non-zero host part, so that mail delivery is deferred.
	File: util/match_ops.c.

20030411

	Bugfix: extraneous warning about out-of-order original
	recipient records by Patrik Rak. Files: *qmgr/qmgr_message.c.

20030412

	Workaround: log a warning and reset the queue file time
	stamps when the file system clock is ahead of the local
	clock.  File: global/mail_stream.c.

20030414

	Feature: PostgreSQL client module, adopted by LaMont Jones.
	Files: README_FILES/PGSQL_README, util/dict_pgsql.c,
	util/dict_pgsql.h, conf/sample-pgsql-aliases.cf.

	Cleanup: the generic smtp client/server code in smtp_stream.c
	now has an explicit flush operation, and the smtp-source/sink
	programs are updated to take advantage of this.

	Cleanup: the file system clock drift detection code now
	runs only once per process instance, to minimize the
	performance impact. File: global/mail_stream.c.

	Robustness: avoid TIME_WAIT state with smtp/qmqp-source
	client sockets.  This puts less strain on local system
	resources.

20030415

	Cleanup: the file system clock drift detection code now
	runs only for incoming mail. File: global/mail_stream.c.

20030416

	Bugfix: missing partial last line when 1) someone submits
	8-bit mail not ending in newline via /usr/sbin/sendmail
	and 2) MIME input processing is turned off, and 3) MIME
	8bit->7bit conversion is requested upon delivery via SMTP.

	Cleanup: auto-bcc recipients are now added in one place
	(the cleanup server) instead of by individual front-end
	servers (pickup, smtpd, qmqpd). This makes it easier to
	add auto-bcc features that trigger on sender or recipient
	addresses.

	Cleanup: "sendmail -t" (recipients from headers) is now
	implemented by the sendmail command instead of by the
	cleanup server. This means that the extract_recipient_limit
	configuration parameter is no longer needed.  Files:
	sendmail/sendmail.c, cleanup/cleanup_message.c,
	cleanup/cleanup_extracted.c.

	Compatibility: "sendmail -t" (recipients from headers) now
	accepts command-line recipients instead of complaining.
	The extracted header recipients are added to the command-line
	recipients.

	Feature: sender/recipient_bcc_maps. These are indexed by
	sender/recipient address and are examined when mail enters
	from outside of Postfix. Files: cleanup/cleanup_addr.c.
	cleanup/cleanup_envelope.c cleanup/cleanup_extracted.c.

20030417

	Feature: the SMTP client now falls back to native name
	service lookups (including /etc/hosts) when a host cannot
	be found in the DNS. This is controlled by a new parameter
	smtp_host_lookup (default: dns, native). Files: smtp/smtp.c,
	smtp/smtp_addr.c.

20030418

	Bugfix: "sendmail -t" broke with unrecognized message
	headers.

20030419

	Feature: "postcat -q" searches the queue for the named
	file.

	Cleanup: made postcat "record names" output more consistent.

20030421

	Debugging: added some extra detailed error logging to the
	pipe-to-command delivery, to help folks with bizarre file
	truncation problems. File: global/pipe_command.c.

20030424

	Cleanup: readlline() did not terminate the result before
	complaining about lines starting with whitespace.

	Cleanup: eliminated valid_hostname warning for invalid
	queue file names. File: global/mail_queue.c.

	Bugfix: lost three lines of code when readying the postcat
	command for release, which broke postcat -q. File:
	postcat/postcat.c.

	Bugfix: the Postfix sendmail command applied the message
	size limit when running as newaliases. The limiting code
	is now moved to the message enqueuing branch of the code.
	File: sendmail/sendmail.c.

	Documentation: start of documentation for the algorithm of
	Patrik Rak's clever queue manager scheduler (nqmgr). Files:
	conf/sample-scheduler.cf, README_FILES/SCHEDULER_README.

20030429

	Bugfix: while verifying an address, the LMTP client entered
	a forbidden "next" sender state after the last recipient.
	Fix by Vladimir Davydoff. File: lmtp/lmtp_proto.c.

	Bugfix: "," was not recognized in proxy_read_maps settings.
	Fix by Leandro Santi. File: proxymap/proxymap.c.

20030502

	Bugfix: defer delivery after .forward etc. file read error.
	File: local/token.c. Problem reported by Ben Rosengart,
	Panix.

20030503

	Bugfix: the Postfix LMTP client used the wrong service
	name, causing trouble with SASL 2.1.13.  Daniel Schales,
	Louisiana Tech. File: lmtp/lmtp_sasl_glue.c.

20030518

	Workaround: IRIX select() reports that a non-blocking file
	descriptor is writable while write() transfers zero bytes.
	File:  util/vstream.c. Superseded by change 20030523.

20030520

	Cleanup: future time stamps in Received: headers and negative
	delays in delivery agent logging after "postdrop -r",
	because deferred queue files had future file modification
	times.  File:  src/postsuper/postsuper.c.

20030521

	Cleanup: nqmgr warnings about "recipient count mismatch"
	after "postdrop -r", because the cleanup server did not
	count the "already done" recipients. Problem reported by
	Richard Stockton, Gramma Software. Files:
	cleanup/cleanup_envelope.c, cleanup/cleanup_extracted.c.

20030523

	Workaround: IRIX select() reports that a non-blocking file
	descriptor is writable while write() transfers zero bytes.
	File:  global/pipe_command.c.

20030523-20030605

	Cleanup: rewrote the queue file record processing loops in
	pickup, cleanup and in [n]qmgr. This code had deteriorated
	a lot as the result of small changes over the years. This
	change brings the code closer to "obviously correct". Files:
	cleanup/cleanup_envelope.c, cleanup/cleanup_extracted.c,
	*qmgr/qmgr_message.c.

	Cleanup: Postfix no longer produces queue files with
	backwards compatibility data for Postfix versions < 1.0
	(a.k.a.  20010228). Files: cleanup/cleanup_extracted.c,
	showq/showq.c.

	Performance: the queue manager no longer has to examine
	every queue file record before it can start deliveries.
	This helps to avoid thrashing with very large mailing lists.
	Postfix queue files have an extra field in the size record
	with queue manager processing hints.  This change is backward
	and forward compatible.  Files:  cleanup/cleanup_envelope.c,
	cleanup/cleanup_extracted.c, *qmgr/qmgr_message.c.

20030528

	Compatibility: "sendmail -q<time>" without -bd option now
	exits immediately, instead of waiting for input on the
	standard input stream and screwing up system boot sequences.
	File: sendmail/sendmail.c.

20030530

	Bugfix: client access denied with smtpd_delay_reject=no
	broke "sendmail -bs". Fix by Victor Duchovni, Morgan Stanley.
	File: smtpd/smtpd.c.

20030531

	Compatibility: allow <@site,@site:address> route addresses
	in SMTP commands.  File: smtpd/smtpd.c.

20030605

	Cleanup: input checks moved from the pickup daemon to the
	postdrop mail submission command; this is to prepare for
	direct mail submission from postdrop->cleanup without going
	through the maildrop directory and the pickup service.
	Files: pickup/pickup.c, postdrop/postdrop.c.

	Bugfix: the "dead host" backoff timer in the MySQL client
	didn't work.  Fix by Leandro Santi. File: util/dict_mysql.c.

	Bugfix: same problem in the PostgreSQL client. File:
	util/dict_pgsql.c.

	Workaround: turned off non-blocking write to pipe because
	too many systems give a weird write() result. File:
	global/pipe_command.c.

	Cleanup: added support for vstream_fseek(.., .., SEEK_END).
	File: util/vstream.c.

20030608

	Feature: separate address resolver controls for address
	verification probe messages:  address_verify_{local,virtual,
	relay,default}_transport, address_verify_relayhost, and
	address_verify_transport_maps. The default values are the
	regular versions of the same controls. Files: trivial-rewrite/*,
	global/resolve_clnt.[hc], *qmgr/qmgr_message.c.

20030609

	Workaround: Solaris blocking socket read() may hang.  Hernan
	Perez Masci and Leandro Santi. File: smtpd/smtpd.c.

	Bugfix: the "unread recipient" counter needs to be restored
	after the queue manager has a problem reading a queue file.
	Fix by Patrik Rak. File: nqmgr/qmgr_message.c.

20030610

	Cleanup: the verify server now uses asynchronous submission
	of mail probes, so it will no longer block for in_flow_delay
	seconds when mail arrives faster than it is delivered.
	Still need to make mail_stream_finish() asynchronous in
	order to avoid blocking for trigger_timeout seconds when
	the queue manager is overwhelmed.  Files:  global/post_mail.c,
	verify/verify.c.

	Bugfix: removed extraneous sleep() after the last attempt
	to retrieve address verification status.  File: smtpd/smtpd.c.

20030611

	Bugfix: the stricter postdrop input filter broke "sendmail
	-bs". Found by Lutz Jaenicke. File: smtpd/smtpd.c.

20030614

	Portability: Dropped support for client side LDAP caching.
	As of release 2.1.13 OpenLDAP no longer supports client
	side caching, it has been deprecated for some time, and
	never worked well.  Implemented by Victor Duchovni, Morgan
	Stanley, and further enhanced by Lamont Jones, HP. Files:
	src/util/dict_ldap.c, conf/sample-ldap.cf,
	README_FILES/LDAP_README.

	Safety: Given suitable invalid database contents, LDAP
	lookups can produce too many results, enter an infinite
	loop in the expansion of "special result attributes" (LDAP
	DNs and LDAP URLs) or just consume excessive server resources
	returning large result sets.  Three new (per LDAP map)
	configuration parameters enable one to set limits on
	recursive nesting, result expansion and the server response
	"entry" count. Implemented by Victor Duchovni, Morgan
	Stanley, further enanced by Lamont Jones, HP. Files:
	src/util/dict_ldap.c, conf/sample-ldap.cf,
	README_FILES/LDAP_README.

20030616

	Feature: in mail delivery status reports, report the sender
	address as X-Postfix-Sender. Matthias Andree. File:
	bounce/bounce_notify_util.c.

	Cleanup: in mail delivery status reports, transform the
	original recipient into xtext format as required by RFC
	1891. Files: bounce/bounce_notify_util.c, util/xtext.[hc].

	Cleanup: more accurate "postfix check" warning for files
	that miss one or more of the required mode 02111 execute
	permission bits. Matthias Andree. File: conf/postfix-script.

20030618

	After "postfix reload", the master daemon now warns when
	inet_interfaces has changed, and ignores the change, instead
	of passing incorrect information to the smtp server. File:
	master/master_ent.c.

20030619

	Feature: the Postfix SMTP server can send all mail into a
	proxy server, for example a real-time SPAM filter. This
	proxy is supposed to send the mail into another Postfix
	SMTP server process for normal delivery. Files: smtpd/smtpd.c
	smtpd/smtpd_proxy.[hc].

20030620

	Bugfix: a cut-and-paste error caused the proxy server's
	354 status code to be reported when a proxy connection
	broke during the DATA phase. File: smtpd.c.

20030620

	Bugfix: after the last change to postdrop, postcat no longer
	recognized maildrop files as valid. File: postcat/postcat.c.

	Bugfix: after moving "sendmail -t" address extraction to
	sendmail, "-t" broke multi-line recipient headers.  Victor
	Duchovni, Morgan Stanley. File: sendmail/sendmail.c.

20030621

	Workaround: the safe_open(O_CREAT) race condition exploit
	avoiding code tries a little harder when it encounters a
	race condition. File: util/safe_open.c.

20030624

	Bugfix: reject_unverified_address() set the defer_if_reject
	flag when the verify service was unavailable (which never
	happens). Victor Duchovni, Morgan Stanley. File:
	smtpd/smtpd_check.c.

	New parameters address_verify_poll_{count,delay} that
	control how often to poll the address verification service
	for the completion of an address verification request.
	Specify address_verify_poll_count=1 to implement a crude
	form of greylisting, that is, always defer the first delivery
	attempt for an unknown address.  File: smtpd/smtpd_check.c.

	Bugfix: after the last change to postdrop, postcat no longer
	recognized non-maildrop queue files as valid. File:
	postcat/postcat.c.

20030629

	Cleanup: replaced references to "simulated virtual domains"
	by "virtual alias domains". Victor Duchovni, Morgan Stanley.

20030630

	Feature: smtp_quote_rfc821_envelope=(yes|no) to control
	RFC 821 style quoting of MAIL FROM and RCPT TO addresses.
	Files: global/mail_params.h, smtp/smtp.c, smtp/smtp_proto.c.

20030701

	Bugfix: multi-recipient probes triggered a bug in the SMTP
	client.  File: smtp/smtp_proto.c.

	Feature: enable_original_recipient (default: yes) to control
	whether Postfix keeps track of original recipient address
	information. Victor Duchovni, Morgan Stanley.  Files:
	cleanup/cleanup.c, cleanup/cleanup_init.c,
	cleanup/cleanup_out_recipient.c, global/log_adhoc.c,
	global/mail_copy.c, *qmgr/qmgr_message.c.

	Feature: !/pattern/ support for PCRE lookup tables.  Victor
	Duchovni, Morgan Stanley.  Files: util/dict_pcre.c.

	Cleanup: allow whitespace after patterns in repexp and pcre
	tables. Victor Duchovni, Morgan Stanley.  Files:
	util/dict_pcre.c, util/dict_regexp.c.

20030702

	Feature: CIDR lookup table support, very remotely based on
	code by Jozsef Kadlecsik. Files: proto/cidr_table,
	util/dict_cidr.[hc].

	Feature: TCP lookup table support, finally finished.  Files:
	proto/tcp_table, proto/dict_tcp.[hc].

20030705

	Feature: new receive_override_options parameter controls
	what happens before or after an external content filter:
	rejecting unknown recipients, canonical and virtual address
	mapping, address masquerading, automatic BCC recipients
	and header/body checks. This eliminates the need to configure
	multiple cleanup services in the master.cf file.

20030707

	Feature: context dependent SASL security options (i.e.
	different options when TLS is enabled/disabled). Lutz
	Jaenicke.  Files:  */*sasl_glue.[hc].

20030708

	Hardened the attr_scan routines for exposure to an untrusted
	environment, in preparation for possible use with SMTP
	policy delegation to an external server.

	Feature: address filter for RBL lookups, for use with
	multi-valued RBL services. File: smtpd/smtpd_check.c.

20030709

	Cleanup: use off_t instead of int for VSTREAM file offsets.
	This was needed for mailboxes > 2GB on 32-bit systems.
	Files: util/vstream.c, global/mail_copy.c.

20030710

	Support for multiple A and TXT results in RBL lookups.
	Victor Duchovni, Morgan Stanley.  File: smtpd/smtpd_check.c.

	Support for attribute-based query-reply protocols.  Files:
	util/attr_clnt.[hc], util/auto_clnt.[hc].

20030711

	Support for plain "name=value\n" attribute protocol.  Files:
	util/attr_{scan,print}_plain.c.

	Bugfix: the LMTP session caching code did not reset the
	EHLO server feature list when it needed to reconnect.
	Problem found by Tobias Erbsland.

20030712

	Feature: delegated SMTP policy server. As an example, see
	the greylisting server in examples/smtpd-policy.  Specify
	"check_smtpd_policy_service" in smtpd_mumble_restrictions.
	See SMTPD_POLICY_SERVICE_README for details.

20030716

	Bugfix: in the sample policy server, changed "ok" into
	"dunno" so the server can be used in the middle of a
	restriction list.

	Cleanup: when an RBL reply has multiple TXT records,
	concatenate them up to some reasonable limit, instead of
	selecting one randomly.  File:  smtpd/smtpd_check.c.

	Safety: always truncate SMTP server error replies to 512
	bytes.  File: smtpd/smtpd_check.c.

20030717

	Documentation: added description of policy_time_limit to
	the SMTPD_POLICY_README document.

	Documentation: corrected the command time limit parameter
	syntax in the spawn(8) manual page.

	Feature: defer_if_permit and defer_if_reject actions in
	access tables, mainly for use by the delegated policy
	server. Files: smtpd/smtpd_check.c, proto/access.

20030725

	The dict_pgsql module did not use dict_alloc() and dict_free(),
	causing improper initialization and a memory leak. Leandro
	Santi. File: util/dict_pgsql.c.

	Cleanup: added open_flags sanity checks to the dict_pgsql
	and dict_mysql modules. These maps must be opened in
	read-only mode.

20030731

	Bugfix: virtual(8) was changed to use mail_addr_find()
	instead of virtual8_maps_find(), but the SMTP server's
	virtual mailbox recipient validation was not updated.

20030804

	Bugfix: the 20030712 safety against invalid DNS results
	was broken. Reported by Ralf Hildebrandt. File:
	dns/dns_lookup.c.

20030805-12

	Safety: the pipe daemon now defers delivery with a warning
	when it is given a non-existent command-line macro name.
	File:  pipe/pipe.c.

20030810

	Bugfix: dict_ldap had a few harmless memory leaks.  By
	Liviu Daia.  File: util/dict_ldap.c.

	Feature: support for LDAP URLs in the LDAP parameter
	"server_host", if Postfix is linked against OpenLDAP.  This
	allows Postfix to connect to LDAP SSL sources.  By Liviu
	Daia.  File: util/dict_ldap.c.

20030811

	Cleanup: produce a warning when host:port specifies a badly
	formatted numerical port.  Files:  util/find_inet.c,
	smtp/smtp_connect.c, lmtp/lmtp_connect.c.

20030822

	Feature: the export_environment and import_environment
	parameters now accept name=value information that will be
	entered into the new environment. File: util/clean_env.c.

20030823

	Feature: smtpd_sasl_exceptions_networks parameter to prevent
	Postfix from offering AUTH  to clients that match the listed
	networks. Based on code by Ben Rosengart, Panix. Files:
	conf/sample-auth.cf, smtpd/smtpd.c.

20030902

	Portability: the Postfix master resets the file size to
	the largest possible off_t value when the actual limit
	appears to overflow the off_t range. Files: util/sys_defs.h,
	util/file_limit.c. A fine sample of bit banging.

20030905

	Workaround: Solaris 8 select() claims that a non-blocking
	socket is readable and then read() fails with EAGAIN. Files:
	util/timed_read.c and as precautionary measure,
	util/timed_write.c.

	Bugfix: dict_register() should not be called from dict_open()
	in dict_mysql and dict_pgsql.  Liviu Daia.  Files:
	util/dict_mysql.c, util/dict_pgsql.c.

	Feature: LDAP parameters can now be specified in external
	files.  This makes it possible to securely store bind
	passwords for plain auth outside of main.cf (which is world
	readable).  By Liviu Daia, based on a suggestion by Victor
	Duchovni and Lamont Jones.  File: util/dict_ldap.c.

	Feature: STARTTLS option for LDAP, if Postfix is linked
	against OpenLDAP.  By Liviu Daia, amended by Victor Duchovni.
	File:  util/dict_ldap.c.

	Cleanup: connections to LDAP sources are now postponed
	until they are actually needed.  By Liviu Daia.  File:
	util/dict_ldap.c.

20030908

	The 20030905 Solaris workaround triggers too many warnings.
	TCP sockets are back to blocking, and keepalives are turned
	on to kill off dead sockets, as suggested by Leandro Santi.
	Files: master/{single,multi}_server.c, smtpd/smtpd.c,
	util/sys_defs.h.

20030909

	Bugfix: the LMTP session caching code had problems with
	SASL authentication after the first connection, and pipelining
	was working poorly.  Fix by Victor Duchovni, Morgan Stanley.
	Files: lmtp/lmtp.c, lmtp/lmtp_proto.c.

20030912

	Workaround: besides SMTP server sockets, SMTP client sockets
	can also hang on Solaris, as reported by Leandro Santi. In
	order to deal with this at the root, all connection management
	is now done by sane_accept() and sane_connect().  Both turn
	on keepalives on Solaris.

20030913

	Safety: set-gid commands don't trust TZ.  File: msg_syslog.c.

20030914

	Address extension propagation wasn't documented enough when
	it was added to Postfix. Based on patches by Roman Neuhauser.

	Added clarifying notes to main.cf, master.cf and access by
	Dean Gibson.

	In header/body_checks, DUNNO is now the preferred action
	instead of the now deprecated OK. This may confuse fewer
	people.

	In header/body_checks, allow text after IGNORE and DUNNO,
	suggested by Victor Duchovni, Morgan Stanley.  File:
	src/cleanup/cleanup_message.c.

	Feature: reject_rhsbl_helo. File: smtpd/smtpd_check.c.

	Bugfix? The LMTP and SMTP clients now send "MAIL FROM:<sender>
	AUTH=<>" when SASL authenticated. Suggested by by Victor
	Duchovni, Morgan Stanley. Files: smtp/smtp_proto.c,
	lmtp/lmtp_proto.c.

20030915

	Bugfix: mail rejected by the before-queue content filter
	was mis-labeled as a software error; it should be labeled
	as a policy error instead. File: smtpd/smtpd.c.

	Cleanup: postcat is now null-byte transparent. File:
	postcat/postcat.c.

20030916

	Feature: ``check_{sender,recipient}_mx_access maptype:mapname''
	applies the named Postfix access table to the MX host name
	and IP addresses for the sender or recipient address. If
	no MX record is found, the A record is used instead. File:
	smtpd/smtpd_check.c.

	Feature: ``check_{sender,recipient}_ns_access maptype:mapname''
	applies the named Postfix access table to the DNS server
	hostname and IP addresses for the sender or recipient
	address. If no NS record is found, the parent domain is
	used instead. File: smtpd/smtpd_check.c.

20030917

	Feature: ``check_helo_{ns,mx}_access maptype:mapname'',
	same semantics as sender and recipient.

	Multiple LDAP lookup tables in the one Postfix process now
	share one LDAP connection. Code by Victor Duchovni, Morgan
	Stanley.  File: util/dict_ldap.c.

	Performance: with prefix_domain specified for an LDAP lookup
	table, lookups of @domain are skipped. Code by Victor
	Duchovni, Morgan Stanley.  File: util/dict_ldap.c.

	Safety: check_mumble_{mx,ns}_access refuses to be used for
	whitelisting. The Postfix SMTP server will reject the
	request with "451 server configuration error" and will log
	a warning explaining why. File: smtpd/smtpd_check.c.

20030918

	Bugfix: check_mumble_ns_access did not correctly look up
	NS records of parent domains, causing mail to be deferred
	with a 450 status code. File: smtpd/smtpd_check.c.

20030919

	Robustness: check_mumble_{mx,ns}_access skip over DNS lookup
	failures instead of deferring mail. This is not as bad as
	it appears to be because the restrictions can't be used
	for whitelisting.  File: smtpd/smtpd_check.c.

20030920

	Bugfix: the 20030917 LDAP connection sharing code introduced
	a compilation problem with non-OpenLDAP implementations.
	Fix by Liviu Daia. File: util/dict_ldap.c

	Compatibility: the LDAP server_host parameter now supports
	all the usual Postfix list element delimiters. Some LDAP
	libraries support just SPACE, others SPACE and ",". Postfix
	now normalizes the host list into a space separated format.
	This is less surprising to Postfix users used to the full
	range of delimeters in other contexts. Implemented by Liviu
	Daia. File: util/dict_ldap.c

	Bugfix: after returning too old mail, the bounce daemon
	now locks the original queue file and deletes deferred
	recipients, to avoid repeated bounce notifications when
	the queue manager is restarted. Files:  bounce/*.[hc],
	global/bounce_log.[hc], global/{bounce,defer}.[hc] and
	everything that invokes these routines including queue
	manager and delivery agents.

20030922

	Feature: "XADDR address hostname" SMTP command, for SMTPD
	restriction debugging, and for sites with fetchmail-like
	software that extracts client information from the first
	Received:  header. The smtpd_authorized_xaddr_clients
	parameter specifies what clients are allowed to use XADDR
	(default: none).  Files:  smtpd/smtpd.c.

20031015

	Workaround: smtpd access maps should not apply subdomain
	name magic to numerical hostnames. File: smtpd/smtpd_check.c.

	Safety: the local delivery agent now defers delivery when
	alias lookup produces an empty result. File: local/alias.c.

20031019

	Workaround: disable request/reply size limit in attr_scan*.c
	to prevent mail from getting stuck when rewriting a malformed
	message header.  This limit was turned on with snapshot
	20030715 to harden the protocol that is used by SMTPD policy
	delegation. A "no code change" workaround is to specify
	"header_size_limit = $line_length_limit".  The proper fix
	is to enforce request/reply size limits only for data from
	outside of Postfix. Problem reported by Brandon Mullenberg,
	Dialup USA. Files:  util/attr_scan*.c.

	Feature: "XLOGINFO address hostname" SMTP command, so that
	Postfix daemons behind SMTPD pass-through proxies log useful
	client name/address information instead of localhost[127.0.0.1].
	The smtpd_authorized_xloginfo_clients parameter specifies
	what clients are allowed to use XLOGINFO (default: none).
	Files:  smtpd/smtpd.c.

	Cleanup: renamed the authorized_verp_clients parameter to
	smtpd_authorized_verp_clients for consistency.

20031021

	Workaround: the demo greylist script now uses BTREE instead
	of HASH files for hopefully better stability. The real fix
	is to use a single updater process that serves multiple
	clients. That approach seems to work well with the verify
	daemon. File: examples/smtpd-policy/smtpd-policy.pl.

20031022

	Safety: the SMTP server now warns when the queue_minfree
	value is less than twice the message size limit. File:
	smtpd/smtpd.c.

	Safety:  the SMTP server no longer accepts mail when the
	amount of free space is less than twice the message size
	limit.  File: smtpd/smtpd_check.c.

	Safety: log a warning and defer mail when canonical or
	virtual lookups return a non-address result (like a string
	that contains no address). File: global/mail_addr_map.c.

	Safety: log a warning and defer mail when any map lookup
	returns an empty string result, and explain that "no result"
	is expected in case of a "not found" condition. This happens
	with incorrectly implemented SQL or LDAP tables. File:
	global/maps_find.c.

20031023

	Bugfix: the MYSQL and PGSQL modules invoked dict_register().
	This was fixed a while ago but never made it into the
	distribution. Files: util/dict*sql.c.

	Robustness: added three ISSPACE() calls in the smtpd proxy
	parser. File: smtpd/smtpd_proxy.c.

20031024

	Portability: added localhost to mydestination for sites
	that turn off append_dot_mydomain. File: global/mail_params.h.

20031027

	Portability: MacOS X Bind8 compatibility. File: makedefs.

20031103

	Robustness: flush pipelined "." and "quit" replies to avoid
	repeated deliveries in case of a program crash (you know,
	the kind of thing that happens before Postfix release :-).
	File:  smtpd/smtpd.c.

20031105

	Portability: turn off NETINFO support for MacOS X Panther
	by default. Files: makedefs, util/sys_defs.h.

20031106

	Feature: the sample greylist policy server is now case
	insensitive.  File: examples/smtpd-policy/smtpd-policy.pl.

20031103-20031110

	Feature: preliminary defense against SMTP clients that
	hammer the SMTP server with too many simultaneous or
	successive connection attempts, with a whitelist capability
	to disable the restriction for authorized clients.  Most
	work is implemented by a new "anvil" server.  Parameters:
	smtpd_client_connection_count_limit, smtpd_client_connection-
	_rate_limit, smtpd_client_connection_limit_exceptions, and
	client_connection_rate_time_unit.  Documentation:  smtpd(8),
	anvil(8), sample-smtpd.cf. Files:  smtpd/smtpd.c,
	global/anvil_clnt.[hc], anvil/anvil.c.  The anvil server
	logs peak count and rate information per client when it
	terminates after running out of work or after "postfix
	reload".

20031110

	Cleanup: Postfix now supports the /0 netmask (match every
	address).  This is useful as a catch-all pattern at the
	end of a table.  Files:  util/dict_cidr.c, util/match_ops.c.

	Cleanup: don't report that $queue_directory/etc/filename
	differs from /etc/filename when /etc/filename does not
	exist.  File: conf/postfix-script.

20031112

	Feature: client_connection_status_update_time parameter
	controls periodic logging of maximal connection counts or
	rates.  The default logging interval is 10 minutes.

	Feature: "make makefiles WARN=stuff..." overrides the
	built-in GCC warning options that are used when "make" is
	invoked from within a source subdirectory. Files:  makedefs,
	*/Makefile.in.

20031125

	Feature: qmgr logs "queueid: deleted", just like postsuper,
	when it removes a message from the mail queue.

	Performance: smtpd connects to the cleanup or proxy server
	AFTER the first valid RCPT TO command, instead of after
	the first valid MAIL FROM command. This avoid wasting
	real-time proxy filter resources when mail is stopped by
	the SMTP server's access blocks.  File: smtpd/smtpd.c.

20031126

	Bugfix: "panic: mymalloc: requested length 0" when master.cf
	specified an invalid host name or address.  Postfix now
	logs more specific information. File:  master/master_ent.c.
	Reported by several people.

20031125-20031201

	Feature: XCLIENT support to override the SMTP server's
	client information for logging and/or access control. This
	replaces the short-lived XADDR and XLOGINFO extensions.
	Remotely based on code by Victor Duchovni.  See FILTER_README
	and SMTPD_PROXY_README for usage details. Files:
	smtpd/{smtpd,smtpd_check,smtpd_proxy,smtpd_xclient}.c
	smtp/smtp_smtp_proto.c, *qmgr/qmgr_message.c,
	global/deliver_request.c.

20031202

	Cleanup: postfix-files now has support for files that are
	no longer part of Postfix. When upgrading Postfix, the
	post-install script gives the user a reminder. Files:
	conf/postfix-files, conf/post-install.

20031203

	Support for SMTPD access map actions (FILTER, REDIRECT,
	HOLD or DISCARD) that are delegated to the cleanup server,
	but can trigger before the first valid recipient address
	is accepted (and thus, before a cleanup server connection
	is available).  Files:  smtpd/{smtpd,smtpd_state,smtpd_check}.c.

20031204

	Bugfix: conf/post-install didn't skip non-existent obsolete
	files.  Victor Duchovni.

	Minor cleanups of the xclient error messages; xclient
	command lookup tables. File: smtpd/smtpd.c.

20031206

	Feature: reject_sender_login_mismatch allows multiple owners
	of a sender address.  Code by Liviu Daia.  Files:
	smtpd/smtpd_check.c and documentation.

	reject_sender_login_mismatch is now implemented by elementary
	features reject_unauthenticated_sender_login_mismatch
	(reject if the client is not SASL logged in but the sender
	address has an owner in smtpd_sender_login_maps) and
	reject_authenticated_sender_login_mismatch (reject if the
	client is SASL logged in but does not own the sender
	address).  Code by Liviu Daia.  Files: smtpd/smtpd_check.c
	and documentation.

20031207

	Bugfix: fallback_transport and mailbox_transport were broken
	because the deliver_pass.c module was not updated for the
	changed message delivery protocol.

20031211

	Safety: in dynamically growing data structures, update the
	length info after (instead of before) updating the data
	size. Files:  util/argv.c, util/inet_addrlist.c, util/intv.c,
	util/mvect.c, util/vstring.c, global/recipient_list.c,
	*qmgr/qmgr_rcpt_list.c.

20031212

	Cleanup: separate extensions XCLIENT (impersonate SMTP
	client) and XFORWARD (down-stream logging of up-stream MTA
	and/or message information, not necessarily SMTP related).
	The protocol is extensible: the server advertises what
	attributes XCLIENT or XFORWARD will accept, and it is an
	error to send an unsupported attribute.  No xtext encoding
	is used, since no attribute currently needs it.  See also:
	XCLIENT_README and XFORWARD_README.

20031214

	Feature: XFORWARD support in the LMTP client.

20031215

	Safety: updated mail_queue_id_ok() for long fast flush
	logfile names. File: global/mail_queue.c.

	Robustness: save and restore the resolver _res.options
	settings before and after DNS lookup, to avoid surprises
	in third-party code. This may eliminate some "localhost
	not found" problems. File: dns/dns_lookup.c.

20031216

	Cleanup:  easier to parse mailq output (no more space
	between short queue ID and message status).  File:
	showq/showq.c.

20031216-21

	Cleanup: the SMTP client now moves on to the next MX host
	or fallback relay when delivery fails in the middle of an
	SMTP session. This includes both broken connections and
	4xx SMTP server replies.  Files:  smtp/smtp.c, smtp_rcpt.c,
	smtp/smtp_connect.c, smtp_trouble.c.

	Configuration parameters: smtp_mx_address_limit (limit the
	list of IP addresses from MX lookup), and smtp_mx_session_limit
	(limit the number of actual SMTP sessions per delivery
	attempt, ignoring unusable MX IP addresses).

	The new code centers around a mark-and-sweep algorithm
	(replacing code that twiddled the rcpt->offset structure
	member), with paranoid sanity checks to ensure that every
	recipient is explicitly accounted for.

20031217

	Update: LDAP client logging (Liviu Daia) and LDAP client
	documentation (Victor Duchovni). Files: util/dict_ldap.c,
	conf/sample-ldap.cf, README_FILES/LDAP_README.

20031222

	Cleanup: shaved half the worst-case bits off the cleanup
	duplicate address filter footprint. After discussion with
	Victor Duchovni. File: cleanup/cleanup_out_recipient.c.

	Safety: added "mail loops to myself" logic for destinations
	that don't have an MX host.  File: smtp/smtp_addr.c.

20031223

	Workaround: turn off "mail loops to myself" for non-MX
	destinations because it breaks SMTP-based content filters.
	Fix is to turn off loop detection when a non-default TCP
	port is specified.  File: smtp/smtp_addr.c.

	Bugfix: restore errno after write failure in SIGCHLD handler.
	Leandro Santi (who got the idea from Hernan Perez Masci).
	File: master/master_sig.c.

	Bugfix: the auto_clnt module disconnected too early, causing
	unnecessary work by the anvil server.

	Cleanup: eliminated binary hashes from anvil server. Anvil
	client information is now stored on top of its VSTREAM.

20031226

	Feature: bounce_queue_lifetime parameter (default:
	$maximal_queue_life_time) that bounds the time that
	MAILER-DAEMON messages spend in the queue before they are
	considered undeliverable.

	Feature: disable "mail loops back to myself" protection
	when SMTP mail is sent to a non-standard port. This makes
	setting up content filters less painful.

	Cleanup: disallow bare x.x.x.x numeric IP addresses in
	email addresses. The form user@[x.x.x.x] is still allowed.

	Cleanup: cleaned up the naming of internal symbols in the
	SMTP client.

20031231

	Bugfix: stricter address syntax test broke "sendmail -bs".
	File: smtpd/smtpd.c.

20040101

	Cleanup: the Postfix SMTP server rejects a MAIL FROM address
	that matches a local, virtual or relay domain, while the
	address is not listed in the corresponding local, virtual
	or relay recipient table.

	Feature: the reject_unlisted_sender(recipient) SMTPD access
	restriction rejects an address that matches a local, virtual
	or relay domain, while the address is not listed in the
	corresponding local, virtual or relay recipient table.

	Compatibility: the check_recipient_maps restriction works
	like reject_unlisted_recipient, but will eventually be
	removed from Postfix.

20040102

	Misc documentation cleanup by Loic Minier.

20040104

	Workaround: MacOSX dumps core on the 20030913 TZ censoring
	code. We explictly set TZ=UTC, which will produce incorrect
	results when "mailq" formatting is moved from the showq
	daemon to the postqueue command.   File: msg_syslog.c.

	Feature: after mail is requeued with "postsuper -r", the
	pickup server logs the old queue ID together with the new
	queue ID.  Victor Duchovni. File: pickup/pickup.c.

	Feature: smtpd_sasl_application_name parameter (default:
	smtpd) to control the name of the SASL configuration file
	used by the Postfix SMTP server. Liviu Daia. Files:
	mail_params.h, smtpd.c, smtpd_sasl_glue.c.

	Cleanup: the LDAP client configuration parser is now shared
	between the LDAP, MySQL, and PGSQL clients.  Liviu Daia.
	Files: global/cfgparser.[hc], global/dict_ldap.c,
	global/dict_mysql.c, global/dict_pgsql.c and documentation.

	Cleanup: moved "util" modules with dependencies on higher-level
	"global" code from the util directory to the global directory:
	util/dict_open.c, global/cfgparser.[hc], global/dict_ldap.c,
	global/dict_mysql.c, global/dict_pgsql.c, global/mail_dict.c.

	Cleanup: the new queue manager nqmgr replaces the default
	queue manager qmgr, leaving behind a hard link for backwards
	compatibility. The old queue manager remains available as
	as oqmgr but will eventually be removed.

	Bugfix: vstring_get() etc. now return VSTREAM_EOF when they
	terminate prematurely, instead of returning the last
	character stored.  This avoids mis-leading warnings. File:
	global/vstring_vstream.c.

20040105

	Cleanup: don't bother the flush daemon while deferring mail
	if the destination is not "fast flush" eligible. File:
	global/flush_clnt.c.

	Safety: the SMTP server flushes recipients to the cleanup
	server in order to avoid SMTP timeouts when virtual or
	canonical expansions take a lot of time. File smtpd/smtpd.c.

	Safety: add warnings to postmap and postalias when table
	lookup results in an empty string.

20040110

	Example: script to run qmail-local from Postfix by Ron
	Bickers.

	Change: queue minfree limit is now 1.5 * message size limit.
	File: smtpd/smtpd_check.c.

	Bugfix: apply hostname restriction even when host address
	lookup fails in check_{sender,recipient}_{ns,mx}_access.
	File: smtpd/smtpd_check.c.

20040115

	Performance: allow delivery concurrency to increase even
	while mail is deferred, as long as the delivery agent does
	not report really serious trouble with the destination.
	Files:  *qmgr/qmgr_deliver.c.

	Cleanup: in postfix-files, symbolic links and hard links
	are now first-class citizens with explicit mention of source
	and destination pathnames. Files: postfix-install,
	conf/postfix-files, conf/post-install.

20040116

	Cleanup: sendmail -v caused one mail delivery report upon
	every delivery attempt, not just the first one. The fix is
	to "kill" a queue file record after the first delivery
	attempt. This means a new record type. Files:  *qmgr/qmgr_active.c,
	*qmgr/qmgr_message.c, global/rec_type.c.

	Cleanup: in anticipation of other built-in rate limiters,
	the client_connection_rate_time_unit parameter is renamed
	to client_rate_time_unit.

	Documentation: finished the HOSTING_README file with an
	overview of methods to host domains with Postfix.

20040119

	Bugfix: anvil (count and rate limiting) server race condition
	could result in dangling pointer.  Postfix erases memory
	after allocating and before freeing, so it is extremely
	unlikely that this could be used to bring harmful data into
	the anvil server. File anvil/anvil.c.

20040120

	Cleanup: new header_checks(5) and body_checks(5) manual
	pages.  The sample-regexp* and sample-pcre* files are no
	longer needed and have been removed, as are the default
	*_table configuration files.

	Cleanup: support for the non-standard Errors-To: header is
	removed. File: cleanup/cleanup_message.c.

20040121

	Feature: "PREPEND headername: headervalue" action in Postfix
	access maps, to facilitate external policy servers that
	label mail instead of rejecting it. Files: smtpd/smtpd.c,
	smtpd/smtpd_check.c.

20040122

	UNDO the 20040104 change (vstring_get() etc. return
	VSTREAM_EOF when they terminate prematurely, instead of
	returning the last character stored, to avoid mis-leading
	warnings). File:  global/vstring_vstream.c.

	Portability: test -e is not portable. File: conf/postfix-script.

	Misc. documentation fixes by Victor Duchovni.

	Documentation: the README files are now hyperlinked, and
	are referenced in the on-line manual pages.

	Bugfix: the pickup daemon now strokes the watchdog frequently
	to prevent the watchdog from barking when mail arrives
	faster than it can be picked up. File: pickup/pickup.c.

20040123

	Feature: set smtpd_reject_unlisted_{sender,recipient}=no
	to turn off automatic rejection of non-existent local,
	virtual or relay addresses. This way it can be made
	conditional for local clients, always on for remote clients.
	Files:  global/mail_params.h, smtpd/smtpd.c, smtpd/smtpd_check.c.

20040124

	Feature: PREPEND in header/body_checks, for message tagging.
	File: cleanup/cleanup_message.c.

20040126

	Safety: handle the case that main.cf is updated while it
	is being read. File: util/dict.c.

	Feature: "instance" attribute that links policy etc. queries
	to the same message instance.

	Cleanup: the mynetworks setting may now be empty. File:
	global/mail_params.c.

20040127

	Bugfix: missing flush_init() call. Introduced 20040105.
	File: postqueue/postqueue.c.

20040128

	Cleanup: clnt_stream derived classes now try to detect that
	the server has disconnected before sending data and warning
	about an error. File: global/clnt_stream.c.

20040202

	Bugfix: changed mis-leading warning about text>4096 characters
	into "unexpected end-of-input". File: util/attr_scan0.c.

20040201

	Feature: sasl_method, sasl_username and sasl_sender attributes
	in smtpd policy queries. Files: src/smtpd/smtpd_check.c.

20040204

	Safety: smtpd_soft_error_limit now determines when
	$smtpd_error_sleep_time starts to take effect.

	Cleanup: local(8) and virtual(8) will now create maildirs
	in a world-writable directory. Files: util/make_dirs.c.

	Bugfix: don't panic on a corrupt queue file.  File:
	*qmgr/qmgr_message.c.

20040205

	Cleanup: sample-filter.cf is gone. Better documentation is
	available with "man header_checks".

20040209

	Bugfix: when delivery to smtpd_proxy_filter fails, report
	"451 Queue file write error" instead of repeating the
	previous "354 End data with <CR><LF>.<CR><LF>" response.
	File:  smtpd/smtpd.c.

20040220

	Compatibility: accept and ignore the sendmail -bh and -bH
	mode of operation requests.

20040302

	Bugfix: SMTPD proxy didn't send QUIT as the result of code
	duplication. Evidence reported by Mark Martinec. File:
	smtpd/smtpd.c.

20040311

	Bugfix: bad address syntax was passed to transport map
	lookups.  Problem reported by Andrei Koulik. File:
	util/match_ops.c, trivial-rewrite/resolve.c.

20040324

	Portability: ekkoBSD support by Philip Reynolds.  Files:
	makedefs, util/sys_defs.h.

20040325

	Cleanup: smtp_skip_4xx_greeting and smtp_skip_5xx_greeting
	functionality is moved from connection management to SMTP
	protocol processing, so that Postfix now logs the server
	response when a server refuses to provide service.  Files:
	smtp/smtp_connect.c, smtp/smtp_proto.c.

	Cleanup: smtp_skip_4xx_greeting is no longer configurable;
	it is now permanently turned on.

20040326

	Workaround: in the trivial-rewrite server, turn on the code
	to strip trailing "." while rewriting addresses, and change
	the address resolver to strip trailing "." in a compatible
	manner.  This does not eliminate the problem that the SMTP
	server may use a different address for recipient validation
	than what the cleanup server uses for virtual alias mapping.

20040329

	Bugfix: the SMTP server did not log client (and SASL)
	information with the real-time content filter was enabled.
	Files: smtpd/smtpd.c, smtpd/smtpd_sasl_proto.c.

	Compatibility: smtpd_reject_unlisted_sender is turned off
	by default, to avoid trouble with with in-house software
	that sends out mail software with an unreplyable address.

20040331

	Bugfix: postdrop should not abandon mail submission after
	receiving a SIGHUP signal when SIGHUP was ignored by the
	parent process.  Victor Duchovni, Morgan Stanley.  File:
	postdrop/postdrop.c.

	Bugfix: parsing bug in PgSQL dictionaries causing UNIX
	sockets to be ignored. Liviu Daia. Files: global/dict*sql.c.

	Performance: allow MySQL and PgSQL database connections to
	be closed when idle for more than 1 minute; Liviu Daia.
	Files: global/dict*sql.c.

20040401

	Sanity: the SMTP server no longer accepts sender or recipient
	addresses that end in the "@" null domain, as well as
	addresses that rewrite into such a form.  Specify
	"resolve_null_domain=yes" to get the old behavior back.
	File:  trivial-rewrite/resolve.c.

20040402

	Cleanup: added WARN action support for access maps, for
	consistency with the WARN action in header and body checks.
	File:  smtpd/smtpd_check.c.

20040407

	Bugfix: missing return statement at the end of the
	FREE_MEMORY_AND_RETURN error handling macro. Adi Prasaja.
	File: trivial-rewrite/resolve.c.

20040411

	Future proofing: client_rate_time_unit is renamed to
	anvil_rate_time_unit, so that it is no longer limited to
	clients only. File: src/global/mail_params.h.

	Cleanup: postalias and postmap now log problems to syslogd.
	Files: postalias/postalias.c, postmap/postmap.c.

20040413

	Feature: "postfix set-permissions" (re)sets ownership and
	access permissions of Postfix files and directories.

	Feature: "postfix upgrade-configuration" updates main.cf
	and master.cf. This is for people who people copy over
	their old files after installing a newer Postfix version.

	Feature: HTML files are now optionally installed under
	control of the html_directory configuration parameter.
	Files: postfix-install, conf/postfix-files, conf/post-install.

	Cleanup: README file installation is now optional.  Files:
	postfix-install, conf/postfix-files, conf/post-install.

20040414

	Cleanup: references to sample-mumble.cf files removed,
	conf/mumble_table files removed, new commands added to
	conf/postfix-script.

	Cleanups: function declared int but used as void, missing
	include file, missing const qualifier, unused variable.
	Matthias Andree. Files:  bounce/bounce_notify_util.c,
	bounce/bounce_service.h, postlog/postlog.c, smtpd/smtpd_check.c,
	util/attr_scan64.c.

	Bugfix: more robust version of SIGHUP test of 20040331.
	Victor Duchovni, Morgan Stanley. File: postdrop/postdrop.c.

	Safety: added NOCLOBBER qualifiers to local variables that
	might be clobbered by longjmp(). Files: util/sys_defs.h,
	smtp/smtp_proto.c, lmtp/lmtp_proto.c, smtpd/smtpd_check.c,
	smtpstone/smtp-source.c.

	Bugfix: sub-level Makefiles no longer turned on the extra
	compiler warnings. Files: Makefile.in.*, makedefs.*.

20040415

	Bugfix: the LMTP client attempted to reuse a connection
	after timeout, causing protocol synchronization errors.
	Reported by Rob Mueller. File: lmtp/lmtp.c.

20040416

	Cleanup: non-delivery reports now include the original
	recipient information. File: bounce/bounce_notify_util.c.

20040415-18

	Typos: many documentation fixes by Rob Foehl.

20040418

	Cleanup: "int" versus "const int" prototype mismatch between
	the DICT sequence method prototype and possible implementations.
	Files: util/dict_db.c, util/dict_dbm.c.

20040419

	Bugfix: the code that rejects client/helo RESTRICTIONS with
	smtpd_delay_reject=no looked at the wrong evidence and
	rejected client/helo ACCESS MAP lookups instead. Michael
	Tokarev. Files:  smtpd/smtpd.c, smtpd/smtpd_check.c.

	Bugfix: missing # in master.cf in optional submission
	service.

20040420

	Bugfix: smtpd logged the client too often. Michael Tokarev.
	File: smtpd/smtpd.c.

	Cleanup: client_event_status_update_time renamed to
	anvil_status_update_time. Files: mantools/postlink,
	proto/postconf.proto, anvil/anvil.c.

20040421

	Workaround: allow pipelined SMTP clients to overshoot the
	SMTP server recipient limit without triggering the server
	hard error limit.  The SMTP server does not count "too many
	recipients" towards the hard error limit, as long as the
	number of excess recipients stays within a configurable
	overshoot limit (default: smtpd_recipient_overshoot_limit
	= 1000).  Solution in cooperation with Victor Duchovni.
	Files:  smtpd/smtpd.c, smtpd/smtpd_state.c, smtpd/smtpd.h.

20040502

	Missing test for a never used flag (the problematic and
	thus never completed INSPECT feature that doesn't re-inject
	mail into Postfix).  Victor Duchovni, Morgan Stanley. File:
	virtual/virtual.c.

20040503

	Bugfix: missing "sasl enabled" guard in the SMTPD policy
	client.  File: smtpd/smtpd_check.c.

20040606

	Portability. UnixWare has strcasecmp() in strings.h.  Patch
	by Andreas Winkelmann. File: util/sys_defs.h.

	Portability. The postlink script is transformed from sed(1)
	to perl(1).

20040608

	Portability. Introduced SET_H_ERRNO() macro for compilation
	environments where h_errno can't be used as an lvalue.
	Files:  util/sys_defs.h, dns/dns_lookup.c.

	Portability. Eliminate assumption on bits per byte from
	vbuf_print.c.

20040614

	Bugfix: the SMTP client did not reset per-session EHLO,
	SASL, and history information when opening a connection to
	an alternate SMTP server.  This is the result of abstraction
	no longer matching function. Reported and diagnosed by
	Victor Duchovni, Morgan Stanley.

	Bugfix: non-portable reuse of variadic argument lists.
	Fix by Victor Duchovni, Morgan Stanley. Files:  global/bounce.c,
	global/defer.c, global/sent.c, global/trace.c, global/verify.c.

	Portability: NetBSD 2.0 has changed from statfs to statvfs.
	John Heasley. File: util/sys_defs.h.

	Documentation: typo fixes by IKEDA Nozomu.

20040616

	Bugfix: one missed variadic argument list fix. Victor
	Duchovni, Morgan Stanley. File: global/verify.c.

	Bugfix: the resolver client cache should be context dependent
	because address verification probes may use a different
	route than normal mail deliveries. File: global/resolve_clnt.c.

	Safety: added similar context dependence to the address
	rewriting client in order to avoid trouble when Postfix is
	changed. File: global/rewrite_clnt.c.

	Bugfix: space in HELO commands could end up in XFORWARD
	commands.  File: smtpd/smtpd.c.

20040619

	Code reorganization: in preparation for SMTP session caching,
	the SMTP client data structures were changed from the
	original "one session per delivery request" model to an
	explicit "multiple sessions per delivery request" model.
	This uncovered ESMTP and SASL missing re-initialization
	problems that were fixed in past week.  Design by Victor
	and Wietse, initial implementation by Victor Duchovni.

20040620

	Future proofing: after the reorganization of SMTP request
	state and session state, added code to the smtp client
	error handling routines to more consistently deal with the
	possibility that session information is not available.

20040621

	Feature: directory=pathname option for the pipe(8) delivery
	agent. This allows a command to run from a fixed directory.
	Failure to change directory causes delivery to be deferred.
	Files: pipe/pipe.c.

	Feature: command_execution_directory for local(8) delivery
	to external command. This supports the usual $home etc.
	expansions, subject to filtering with the character set
	specified with $execution_directory_expansion_filter.
	Failure to change directory causes delivery to be deferred.
	Files:  global/mail_params.h, local/command.c.

	Support for external command execution directory. Files:
	global/pipe_command.[hc].

20040622

	Safety: when mail is delivered to a transport with per-delivery
	recipient limit of 1, split the recipient address on the
	recipient delimiter if one is defined, so that extended
	addresses don't get extra delivery concurrency slots.
	Files: *qmgr/qmgr_message.c.

20040623

	Workaround for fragile clients: add microsecond time to
	maildir filename.  Files: virtual/maildir.c, local/maildir.c.

20040628-20040701

	SMTP connection caching work with Victor Duchovni.

	New module (later renamed to global/scache_single.c) for
	protocol-independent session caching.  The initial
	implementation supports in-process, single-session caching
	only.  A later version will support a central session cache
	daemon.  Some more work is needed for passivation/activation
	of session attributes.

	New function vstream_fdclose() to destroy a VSTREAM while
	leaving the underlying file(s) open. Files: util/vstream.[hc].

	New function dns_rr_remove() to remove one record from a
	resource record list. Some more work is needed to turn the
	list into a doubly-linked one. Files: dns/dns.h, dns/dns_rr.c.

	Restructuring of the SMTP protocol engine for session
	caching. File: smtp/smtp_proto.c.

	Restructuring of the connection management module, and
	first implementation of SMTP connection caching.  To enable,
	specify an smtp_connection_cache_time value greater than
	zero. The time unit is seconds. File: smtp/smtp_connect.c.

	New code to passivate and re-activate SMTP_SESSION objects,
	and isolation of session save/lookup in its own module.
	Files: smtp/smtp_session.c, smtp/smtp_reuse.c.

	Refinement: smtp_cache_reuse_limit parameter to bound the
	number of times a session may be reused.  

	Refinements: when a session comes from the cache, give it
	back to the cache anyway (even when it will not be listed
	under the next-hop destination name).

	Future refinements should also include a bound on the number
	of consecutive and total non-delivering uses and other
	statistics.

20040714

	Bugfix: the code to eliminate the local MTA from the MX
	address list did not handle the case that inet_interfaces
	produced a less preferred match than proxy_interfaces.
	Victor Duchovni, Morgan Stanley. File: smtp/smtp_addr.c.

20040715

	Resume work on SMTP session caching.  All good sessions
	are now cached under their IP address. As before, only the
	first good session per delivery request is cached under
	the original next-hop destination.

	At this point, SMTP session caching works, with a session
	cache client module that uses in-process session caching.
	This is sufficient to demonstrate that the SMTP client is
	ready for session caching.

20040716

	New modules to send file descriptors from one process into
	another one. This will be needed for implementing a central
	connection cache manager daemon. Most systems use UNIX-domain
	sockets as the transport for this. On Solaris we use streams
	instead.  Applications are supposed to invoke LOCAL_SEND_FD()
	and LOCAL_RECV_FD().  Files: {unix,streams}_{send,recv}_fd.c.

20040717

	First implementation of a session caching client API that
	actually sends to/receives from a caching server process.
	The old in-process, single-session caching functionality
	is preserved as global/scache_single.c, so that we can use
	it for bootstrapping the session cache server. File:
	global/scache_clnt.c.

	First implementation of the scache session cache server,
	using the same in-process session caching code that was
	used to bootstrap the SMTP client.  File: scache/scache.c.

20040718

	Performance: the default RSET timeouts are reduced from
	120s to 20s.  Perhaps there should be different RSET timeout
	for address probes and for session cache checks. File:
	global/mail_params.h.

20040719

	Multi-session connection cache module. Implementing this
	was actually the easiest part of the entire connection
	caching project. File: global/scache_multi.c.

20040720

	Bugfix: event_drain() falsely reported a single-entry timer
	queue as empty.  File: util/events.c.

	Completed the multi-session cache support for SMTP. The
	code can be stress tested with a driver program that reads
	commands from a script. It is not practical to manually
	test the effects of collisions in the time or in name space
	domains. File:  global/scache.c.

20040721

	Feature: the session cache server now logs cache hit and
	miss statistics every $session_cache_status_update_time
	seconds (default: 600s), as well as upon process exit.
	File:  scache/scache.c.

20040722

	Workaround: LINUX 2.4 has trouble with mixed data and file
	descriptor traffic on UNIX-domain stream sockets.
	Specifically, it cannot handle data write (read) followed
	by file descriptor send (receive): the receiver hangs in
	recvmsg(). Workaround is to insert an intervening read
	(write) operation.  Presumably, LINUX 2.4 is confusing the
	data and file descriptor.  Lucky Ralf Hildebrandt.  Files:
	util/sys_defs.h, global/scache_clnt.c, scache/scache.c.

20040723

	Safety: spawn(8) now rejects a user with the -1 UID or GID
	value, so that commands will not end up running as root.
	Files:  util/spawn_command.c, spawn/spawn.c.

	User interface: parameter smtp_connection_cache_domains
	renamed to smtp_connection_cache_destinations. Destinations
	listed here must be specified without [] or :port.  File:
	smtp/smtp_connect.c.

	Bugfix: "421 Timeout exceeded" wasn't guarded by setjmp().
	Victor Duchovni, Morgan Stanley. File: smtpd/smtpd.c.

20040729

	Feature:  enable SMTP session caching temporarily while a
	postfix is able to schedule back-to-back deliveries.
	Parameter:  smtp_connection_cache_on_demand (default:
	yes).  Files:  smtp/smtp_connect.c, *qmgr/qmgr_entry.c,
	*qmgr/qmgr_queue.c, *qmgr/qmgr_deliver.c.

	Feature: smtp-source -N option to generate unique recipient
	addresses for (trivial-rewrite) stress testing. Victor
	Duchovni, Morgan Stanley. File: smtpstone/smtp-source.c.

20040730

	Safety: disallow "opportunistic session caching" when the
	queue manager is unable to schedule back-to-back deliveries.
	File: *qmgr/qmgr_entry.c.

20040731

	Hysteresis: turn on "opportunistic session caching" when
	back-to-back deliveries happen, but don't turn if off
	until both concurrent and back-to-back delivery ends.

20040801

	Workaround: disable session caching for Linux < 2.2 (does
	not work) or Glibc < 2 (does not compile).  Files:
	util/sys_defs.h, util/unix_{recv,send}_fd.c.

	Portability: h_errno is not an lvalue in the UnixWare 7.1
	multi-threaded environment. Olivier PRENANT.

20040812

	Bugfix: update SMTP server error counter when a client is
	denied access with smtpd_delay_reject=no.

20040816

	Bugfix: The smtp_chat_cmd() forced output flushing code in
	the SMTP client could run before an I/O error handler was
	set up.  Problem diagnosed by Victor Duchovni, Morgan
	Stanley. The fix is to disable the smtp_chat_cmd() forced
	output flushing code as it duplicates better code in
	smtp_loop(). File: smtp/smtp_chat.c.

	Safety: set up an I/O error handler before the smtp_loop()
	protocol engine starts; this handler logs a warning in case
	it ever runs, because that means someone broke ESMTP command
	pipelining.  File: smtp/smtp_proto.c.

	Feature: canonical_classes parameter by Kimmo Suominen, to
	control what addresses are rewritten by canonical_maps.
	Files: cleanup/cleanup_addr.c, cleanup/cleanup_message.c.

20040817

	Bugfix: update the vstream I/O time AFTER the completion
	of an I/O request, so that time-sensitive applications
	don't force flush output too soon and possibly trigger
	NAGLE delays.  Problem diagnosed by Victor Duchovni, Morgan
	Stanley. File: util/vstream.c.

	Portability: avoid postmap/postalias test file name clashes
	on Windows.  Ian Lance Taylor (of Taylor UUCP fame).

20040823

	Bugfix: vstream_popen() did not close the child pipe
	after failure to fork(). File: util/vstream_popen.c.

20040826

	Feature: support for systems with closefrom(), and emulation
	for those without. Andrew Brown. Files:  util/sys_defs.h,
	util/sys_compat.c.

20040827

	Feature: {sender,recipient}_canonical_classes parameters,
	which give better control than sender_canonical_classes.
	Files: cleanup/cleanup_addr.c, cleanup/cleanup_message.c.

	Feature: the proxymap client now recognizes when a map
	can't be proxied, and will open it directly instead.  This
	makes proxy maps easier to use for virtual mailbox domains.
	File: global/dict_proxy.c.

	Feature: smtp_sasl_mechanism_filter restricts what remote
	SMTP server mechanism names the Postfix SMTP client passes
	on to the SASL library.  Victor Duchovni, Morgan Stanley.
	Files: smtp/smtp.c.  smtp/smtp_sasl_glue.c, smtp/smtp_sasl_proto.c.

20040828

	User interface: when no recipients are specified, the
	Postfix sendmail command now terminates with status EX_USAGE
	instead of accepting the mail first and bouncing it later.
	This gives more direct feedback in case of a common client
	configuration error. File:  sendmail/sendmail.c.

20040829

	Portability: Solaris closefrom() support didn't work for
	non-SUN compilers. Victor Duchovni, Morgan Stanley.

20040830

	Feature: the scache(8) session cache manager now logs the
	peak counts of destinations, endpoints and sessions. Files:
	scache/scache.c, global/scache*c.

20040831

	Portability: disable session caching support on SCO 5
	because of incompatible sockets API. File: util/sys_defs.h.

20040913

	Bugfix (introduced 20020803): sent the wrong bounce message
	type when a Delivered-To: loop was detected for a mailing
	list alias.  Nicolas Riendeau. File: bounce_notify_util.c.

20040918

	Feature: authorized_flush_users, authorized_mailq_users,
	authorized_submit_users to restrict what users can flush
	the queue, list the queue, or submit mail locally.  Based
	on code by Victor Duchovni, Morgan Stanley. Files:
	sendmail/sendmail.c, postdrop/postdrop.c, postqueue/postqueue.c,
	global/user_acl.[hc].

	Feature: discard(8) mail delivery agent.  Victor Duchovni,
	Morgan Stanley. File: discard/discard.c.

20041002

	Long overdue, a master(5) manual page based on an initial
	version by Magnus Baeck.

	By popular demand, a postfix-manuals.html web page with
	totally useless links to UNIX-style manual pages (the same
	information should already be available simply by typing
	"apropos postfix"). To keep newbies from getting completely
	lost due to information overload, the document starts with
	a list of actually useful pointers to Postfix introductions,
	duplicated from the already existing documents.html.

20041006

	Bugfix: "sendmail -bv" did not reject the -t option.  File:
	sendmail/sendmail.c.

20041007

	Feature: SASL authentication attributes are now stored in
	queue files and passed on to delivery agents, by Leandro
	Santi. Files:  deliver_pass.c, deliver_request.c,
	qmgr_deliver.c, qmgr_message.c, pipe.c, smtpd.c.

20041009

	Feature: per SMTP client message rate limit and recipient
	rate limit, by Ragnar Lonn, GHN network technologies.
	Files: smtpd/smtpd.c, anvil/anvil.c, global/anvil_clnt.[hc].

	Incompatibility: smtpd_client_connection_limit_exceptions
	renamed to smtpd_client_event_limit_exceptions, because it
	now also controls message and recipient rate limit control.

20041013

	Portability: AIX 5.1/GCC.

20041014-23

	Postfix no longer appends the local domain to header
	addresses from remote clients.  Instead, Postfix either
	does not rewrite those headers at all, or it appends the
	domain specified with the new remote_header_rewrite_domain
	parameter.

	Postfix still appends $@myorigin or .$mydomain to headers
	from the Postfix sendmail command, or from clients listed
	with the new local_header_rewrite_clients parameter (default:
	permit_mynetworks, permit_sasl_authenticated).

	These changes affect the SMTP server (including XFORWARD
	support), the cleanup server (do or don't rewrite headers),
	the trivial-rewrite server (append local domain or surrogate
	remote domain to incomplete addresses), the queue manager
	(send additional attributes to delivery agents), the LMTP
	and SMTP clients (XFORWARD support), and the local delivery
	agent (preserve XFORWARD attributes when forwarding mail).

20041016

	Bugfix: attr_clnt_request() did not properly skip hash
	table arguments. Luc Pardon, Skopos Consulting. File:
	util/attr_clnt.c.

20041018

	The NIS+ module by Geoff Gibbs is now part of Postfix.
	Files: util/dict_nisplus.c, proto/nisplus_table.

20041019

	Support for Errors-To: is permanently removed.

20041022

	Bugfix: "smtp_connection_cache_on_demand=no" could crash
	the SMTP client. File: smtp/smtp_connect.c.

	Robustness: extra sanity checks. Files: util/dict_db.c,
	util/dict_dbm.c, dict_nis.c.

20041025

	Initial merge of Lutz Jaenicke's TLS patch. Initial rewrite
	of tlsmgr to eliminate some code duplication and to postpone
	calls into OpenSSL until after dropping privileges.

20041030

	Compatibility: "session cache" renamed to "connection cache"
	to avoid confusion with the TLS session cache.

20041102

	Feature: smtpd_end_of_data_restrictions allow you to specify
	restrictions at the end of the SMTP DATA command. The syntax
	is identical to that of the smtpd_data_restrictions feature.
	This introduces a new END-OF-DATA protocol state for the
	external policy server. Files:  proto/SMTPD_POLICY_README.html,
	proto/SMTPD_ACCESS_README.html, smtpd/smtpd_check.c.

20041111

	Cleanup: terminate the dict_eval() result buffer for verbose
	logging.  Victor Duchovni, Morgan Stanley. File: util/dict.c.

20041112

	Cleanup: be more careful when saving and restoring resolver(3)
	options to avoid problems with an HP-UX security patch
	(change introduced 20031215). File:  dns/dns_lookup.c.

20041115

	Bugfix: the test for "no debugger_command" was wrong.
	Leandro Santi. File: global/debugger_command.c.

20041117

	Robustness: the master-child protocol now includes a process
	generation number besides the child process ID.  The process
	generation number is incremented by one each time the master
	creates a child process. Child-to-master status updates
	with the wrong generation number are ignored, instead of
	triggering a consistency error in the master server.  Files:
	master/*server.c, master/master_status.c, master/master_spawn.c.

20041118

	Bugfix: the "local_header_rewrite_clients" feature (20041023)
	did not recognize "bare" lookup tables as documented.  Victor
	Duchovni, Morgan Stanley. File: smtpd/smtpd_check.c.

	Bugfix: the "local_header_rewrite_clients" feature (20041023)
	was broken because the local delivery agent passed on a
	bogus attribute value when forwarding internally generated
	mail, causing the mail to be rejected by the cleanup server.
	File: local/dotforward.c.

	Bugfix: the "local_header_rewrite_clients" feature (20041023)
	was broken because the pickup server always overwrote origin
	information. Files: pickup/pickup.c, cleanup/cleanup_state.c,
	*qmgr/qmgr_message.c.

	Workaround: enable the "can't write before sending a file
	descriptor" workaround for Solaris. Problem reported by
	Victor Duchovni for Solaris 2.5.1, but we play safe and
	enable it unconditionally.

20041120

	The TLS support routines are moved to a "tls" directory,
	and are published via the "libtls.a" object library.

20041122

	Infrastructure: support for binary attribute values
	(ATTR_TYPE_DATA) in Postfix IPC messages. Files:
	util/attr_scan*c, util/attr_print*c.

20041123-20041205

	TLS support: via a process of gradual transformation,
	decomposed Lutz Jaenicke's pfixtls.c into separate modules
	for clients, servers, certificate verification, session
	caching, and PRNG management. Global variables were eliminated
	so that the code now supports multiple client and/or server
	contexts in the same process.  Files:  tls/*.[hc].

20041205

	TLS support: eliminated shared access (and locking) of the
	TLS PRNG exchange file and TLS session caches. Instead,
	Postfix uses a client-server protocol, and the tlsmgr
	becomes the sole mediator. This eliminated the need for
	1000+ lines of SDBM support, and eliminated the need for
	running a persistent tlsmgr process on systems don't enable
	TLS in main.cf.

20041124

	Feature: configurable list of forbidden SMTP commands
	(default: smtpd_forbidden_commands = CONNECT, GET, POST)
	after which the Postfix SMTP server disconnects immediately.
	The SMTP server always disconnects immediately when the
	client sends a message header instead of an SMTP command.
	Magnus Baeck.  File: smtpd/smtpd.c.

20041207

	CDB support by Michael Tokarev, documentation by Victor
	Duchovni. Files: util/dict_cdb.[hc], global/mkmap_cdb.c.

20041209

	Completed support for the Berkeley DB sequence operator.
	This is needed for finding and deleting old entries in TLS
	session databases. File:  util/dict_db.c.

	Bugfix: the DBM client's sequence operator used exclusive
	locking instead of shared locking. File: util/dict_dbm.c.

	Feature: dump an entire database with the new postmap/postalias
	"-s" option. This works only for database types with Postfix
	sequence operator support: hash, btree, dbm, and sdbm.
	Files:  postmap/postmap.c, postalias/postalias.c.

20041212

	Solaris 10/ix86 chroot setup script update by J.D. Bronson.

	TLS support: cosmetic changes to comments and messages;
	completed the code for the master -> tlsmgr trigger handshake,
	so that the master no longer complains about trigger
	responses timing out.

20041213

	Updated the SDBM dictionary interface. It had fallen behind
	with the Postfix dictionary interfaces that were already
	bundled with Postfix. Files: util/dict_sdbm.[hc].

	Cleanup: "postconf -m" (show all available map types) now
	produces sorted output.  File: util/dict_open.c.

20041215

	No bugfix: tests with the new "postmap -s" feature show
	that SDBM first/next operations never worked with Postfix/TLS
	patch 20040829 (verified with the 20040829 dict_sdbm.c
	module on Linux and FreeBSD).  The code stops after finding
	one database element.  Other SDBM versions found on the
	Internet will find all database entries, but report an I/O
	error after the last database element is found. All this
	would be easy enough to fix, but the SDBM library is not
	part of Postfix, and never will be.

	Bugfix: the sequence operator in the DBM and SDBM clients
	released the shared lock after reading the next key but
	before reading the corresponding value. This was never a
	problem, because the sequence operator was used only in
	the Postfix/TLS patch. This used the SDBM sequence operator
	which didn't work as discussed above. Files:  util/dict_dbm.c,
	util/dict_sdbm.c.

	Feature: the local(8) and pipe(8) delivery agents now make
	the following attributes available upon delivery (with
	local(8) names must be spelled in upper case): client_hostname,
	client_address, client_protocol, client_helo, sasl_method,
	sasl_sender, sasl_username. Files: local/command.c,
	pipe/pipe.c, and lots of documentation.

20041216

	"postcat -o" now prints queue file record offsets; this is
	useful for debugging. File: postcat/postcat.c.

	NON-PRODUCTION Bugfix: (bug introduced while adopting the
	Postfix/TLS patch):  the new TLS certification call-back
	routine expects that the peer hostname is in
	tlscontext->peername_save, but the TLS server code never
	updated this field.  File:  tls/tls_server.c.

20041218

	Feature: selective suppression of SMTP extensions (pipelining,
	starttls, auth, etc.); this is useful to work around broken
	clients or servers.  Specify a list of EHLO keywords with
	the smtp(d)_discard_ehlo_keywords parameters, or specify
	one or more lookup tables, indexed by remote network address,
	with the smtp(d)_discard_ehlo_keyword_address_maps parameters.
	EHLO keyword lists are case insensitive.  Files:
	util/name_mask.[hc], global/ehlo_mask.[hc], smtpd/smtpd.c,
	smtp/smtp.c, smtp/smtp_proto.c.

20041219

	Bugfix: postcat without -o was broken. File: postcat/postcat.c.

20041220

	NON-PRODUCTION Bugfix: (bug introduced while adopting
	Postfix/TLS patch):  don't call smtp_flush() after return
	from vstream_setjmp(), we'll call you.  File: smtpd/smtpd.c.

	Dummy VSTREAM read-write routines. Files: util/dummy_read.c,
	util/dummy_write.c.

20041221

	Fixes for TLS_README by Victor Duchovni. File:
	proto/TLS_README.html.

	NON-PRODUCTION Bugfix: (bug introduced while adopting
	Postfix/TLS patch).  The client code had become too similar
	to the server implementation, and also required a host
	certificate and key. Fix by Victor Duchovni. File:
	tls/tls_client.c.

20041221

	Bugfix: further postcat corner cases.

20041223

	Cosmetic: don't log disconnect events as I/O errors.
	File: tls/tls_bio_ops.c.

20041221-9

	Infrastructure: unified IPv4/IPv6 name/address API so that
	Postfix can support IPv6 without #ifdef INET6 everywhere.
	In particular, we allow #ifdef in libraries but avoid it
	in applications.  Files:  util/myaddrinfo.[hc],
	util/sock_addr.[hc], dns/dns_rr_to_pa.c, dns/dns_sa_to_rr.c,
	dns/dns_rr_eq_sa.c, dns/dns_rr_to_sa.c, inet_proto.[hc].

	Postfix no longer attempts to deliver mail via IPv6 when
	the system has no IPv6 connectivity.  Network protocol
	support is now selected with the "inet_protocols" configuration
	parameter, instead of "inet_interfaces". The "inet_protocols"
	parameter also controls what DNS lookups Postfix will do.

	Infrastructure: eliminated two host/port parsing routines.
	Only one survives: host_port(), in an extended form that
	allows for missing host or missing service information but
	not both. File: util/host_port.c.

20041229

	Milestone: Postfix with the unified IPv4/IPv6 socket/name
	API builds without compiler error on IPv4-only system and
	actually works.

20041228

	Bugfix: SMTPD_PROXY_README incorrectly claimed that ":port"
	in master.cf causes a server to listen only on "localhost"
	without exposing the service to the network.  Instead,
	":port" causes a client to connect to "localhost".

20041231

	Linux workaround:  when mynetworks isn't set, a chrooted
	process could not read the IPv6 address information from
	/proc.  We now invoke own_inet_addr() before chrooting,
	while processing main.cf. File: global/mail_params.c.

20050101

	Workaround for (Linux) systems without IPV6_V6ONLY support
	(RFC 3493).  When Postfix listened on an IPv4 wild-card
	smtp socket, the IPv6 wild-card smtp listener would fail
	with EADDRINUSE (and vice versa).  File: util/myaddrinfo.c.

20050103

	Safety: when the IPV6 netmask can't be determined, assume
	/128 (host only). File: util/inet_addr_local.c.

20050104

	Re-implemented IPv6 support for net/mask pattern matching.
	Files:  util/cidr_match.[hc], util/dict_cidr.c,
	util/match_ops.[hc], proto/cidr_table.

20050105

	Moved mask_addr() to its own module so that it could also
	be called by mynetworks() and inet_addr_local() to remove
	non-zero host bits from IPv6 network/mask patterns. File:
	util/mask_addr.c.

20050108

	Re-implemented IPv6 support for network interface lookup
	via the Linux /proc file system. File:  util/inet_addr_local.c.

20050111

	Feature: specify "inet_interfaces = loopback-only" for
	servers that must listen on local interfaces only, without
	having to specify IPv4 and/or IPv6 addresses in main.cf or
	master.cf.  File:  global/own_inet_addr.c.

	Workaround: AIX 5.1 getaddrinfo() can't handle a null host
	argument with AI_PASSIVE. Instead we specify an explicit
	protocol family, a host of "::" or "0.0.0.0", and turn off
	IPV6_V6ONLY. Files: util_myaddrinfo.c, util/inet_listen.c.

	Workaround: AIX 5.1 getaddrinfo() can't handle a "0" service
	argument. Instead we specify "1".  Files: util/inet_addr_host.c.

20050113

	Cleanup: now that the over-all structure is proving itself,
	clean up some internal APIs to increase robustness and get
	rid of some clumsiness. Mainly, the getaddrinfo(3) interface.

	Start-up performance: the hash_queue_names default setting
	is reduced from eight directories to just defer and deferred.
	This reduces time for checking the Postfix queue. Files:
	conf/post-install, global/mail_params.h.

20050114

	Further cleanup: eliminate duplicate IPv6 results when the
	mynetworks value is generated by Postfix. More documentation
	of the new internal APIs.

	Performance: reduced start-up delay by moving warning-only
	startup checks into the background. File: conf/postfix-script.

20050115

	Further hardening of the IPv6 support: don't trust system
	libraries to protect Postfix against malformed IPv6 address
	literals. Their syntax is complex enough that errors are
	likely. Files: global/resolve_local.c, util/valid_hostname.c.

	Further cleanup: RFC 2821 requires the IPv6: prefix with
	IPv6 address strings.  The smtp and qmqp servers maintain
	separate address instances, the bare address and the RFC
	2821 compatible form, and use each where appropriate.  This
	strict separation simplifies address syntax checks as well
	as the implementation of XCLIENT and XFORWARD.

20050116

	Infrastructure: new valid_mailhost_addr() routine to verify
	that an address literal satisfies RFC 2821. An IPv4 address
	is in dotted-quad decimal form, and an IPv6 address is in
	hexadecimal form, with the "IPv6:" prefix. Files:
	global/valid_mailhost_addr.[hc].

	Further cleanup: valid_hostname() no longer allows network
	addresses or numerical domain names. While it made some
	sense with IPv4 dotted quad decimal forms, with IPv6 it
	just made no sense anymore.  Again, being stricter actually
	simplifies code. Files:  util/valid_hostname.c and a
	surprisingly small number of valid_hostname() callers that
	did not reject numerical forms.

	Bugfix: in the Postfix 2.2 SMTP client, the debug_peer_init()
	call was moved to the after-chroot initialization.

20050117

	Performance: reduced start-up delay by moving warning-only
	startup checks into the background; they now start after
	one minute to allow the system to finish booting. File:
	conf/postfix-script.

	Milestone: first non-non-production snapshot with IPv6.

20050119

	Milestone: first non-non-production snapshot with TLS.

20050124

	Workaround: don't send mail to $fallback_relay if Postfix
	is MX host for the next-hop destination. This is, however,
	a partial solution. The documentation has been updated to
	cover all the cases where a fallback_relay could interfere
	with the operation of a backup or primary MX host. Files:
	smtp/smtp_addr.c, smtp/smtp_connect.c.

20050127

	Configuration: Postfix daemons that need privileged operation
	(such as local, pipe, or spawn) now log a fatal error when
	they are configured in master.cf as unprivileged.

20050130

	Cleanup: simplified the handling of receive_override_options
	settings. Files: pickup/pickup.c, smtpd/smtpd.c, qmqpd/qmqpd.c,
	global/input_transp.c.

	Feature: permit_inet_interfaces allows a request when the
	client matches $inet_interfaces. This is used for generic
	access restrictions and for header address rewriting control.
	Files: global/mail_params.h, smtpd/smtpd_check.c.

	Cleanup: by default, message header address rewriting is
	now enabled only for mail that originates from the machine
	itself. Files: global/mail_params.h, smtpd/smtpd_check.c.

20050131

	Bugfix: when extracting recipients from message headers,
	the Postfix sendmail command produced output records longer
	than $line_length_limit, causing postdrop to reject the
	mail. Diagnosis by Victor Duchovni. File:  sendmail/sendmail.c.

20050202

	Cleanup: explicit Makefile targets for "make package" and
	"make non-interactive-package" to create ready-to-install
	packages for distribution to other systems. Added extra
	sanity checks to prevent attempts to overwrite your running
	Postfix instance. Files:  Makefile.in, proto/PACKAGE_README.

	Cleanup: when bounce_queue_lifetime > maximal_queue_lifetime,
	it is adjusted to maximal_queue_lifetime, and a warning is
	logged. Files:  *qmgr/qmgr.c.

20050203

	Cleanup: trivial-rewrite now restarts more timely after
	changes in lookup tables.  Of the all the alternatives
	tested, the simplest one produces the most bang for the
	buck. The other code is left in place for illustrative
	purposes. File:  trivial-rewrite/trivial-rewrite.c.

	Cleanup: sendmail no longer ignores null command-line
	recipients.  File: sendmail/sendmail.c.

	Cleanup: "postfix start" background checks moved back to
	the foreground so they can be stopped more easily.  File:
	conf/postfix-script.

20050204

	Feature: REPLACE command in header/body_checks (implemented
	as a combination of PREPEND and IGNORE) by Bastiaan Bakker.
	File: cleanup/cleanup_message.c.

	Cleanup: linted the manual pages for consistency in the
	way manuals are referenced, and in the presentation of
	command examples. Files: mantools/manlint, mantools/fixman,
	mantools/postconf2man.

20050205

	Cleanup: updated the mass-deletion example in the postsuper
	manual.

20050206

	Cleanup: don't count a [45]XX SMTP server greeting towards
	the mx_session_limit setting. File: smtp/smtp_connect.c.

	Feature: output address rewriting in the SMTP client. The
	smtp_generic_maps parameter specifies an address mapping
	that happens only when mail is delivered via SMTP. This is
	typically used for hosts without a valid domain name, that
	use something like localdomain.local instead.  This feature
	can replace local mail addresses by valid Internet mail
	addresses when mail needs to go across the Internet, but
	not when mail is sent between accounts on the local machine.
	Files:  smtp/smtp_proto.c, smtp/smtp_map11.c.

	Cleanup: don't panic in mymalloc() when master can't find
	any IP addresses. LaMont Jones. File: master/master_ent.c.

20050207

	Documentation: added a generic(5) manual page for consistency
	with the already existing table driven mechanisms, added
	references to or examples of the new generic mapping.

	Bugfix: the header_checks REPLACE action mis-handled
	multi-line replacement text in message headers, for example:
	/(.*)/ REPLACE X-$1. File:  cleanup/cleanup_message.c.

	Bugfix: the header_checks REPLACE action should not drop
	the input when the action is NOT executed. File:
	cleanup/cleanup_message.c.

	Bugfix? Cleanup? Documentation? main.cf now implements
	${name[?:]value} as promised in the postconf(5) manual.
	Implemented by deleting the macro processor in dict_eval(),
	and using the one in mac_expand() instead.  File: util/dict.c.

20050208

	Feature: check_ccert_access maptype:mapname for access(5)
	control, based on code by Victor Duchovni. File:
	smtpd/smtpd_check.c and documentation.

	Safety: don't allow unlimited message size with limited
	mailbox size. File: local/local.c, virtual/virtual.c.

	Feature: new smtpd policy attributes ccert_subject,
	ccert_issuer and ccert_fingerprint, with TLS client
	certificate information, but only when verification was
	successful.  Files:  src/smtpd/smtpd_check.c.

	Cleanup: corrected the address verification data flow in
	the ADDRESS_VERIFICATION_README illustration.

20050209

	Cleanup: the smtp generic mapping did syntax check on the
	input address instead of the result. These tests were not
	going to be useful in any case, because mail_addr_map()
	canonicalizes the lookup result, including @dom1->@dom2
	mapping. File:  smtp_map11.c.

	Cleanup: made the generic mapping documentation consistent
	with the implementation.

	Cleanup: documented the myorigin/mydomain address rewriting
	in canonical, generic and virtual alias maps.

	Feature: updated LDAP and *SQL query interfaces using a
	common infrastructure so that all have the same feature set
	where possible. Victor Duchovni and many others. This code
	was tested separately and was merged into the main stream
	20050308. Files: global/db_common.[hc], global/dict_ldap.c,
	global/dict_mysql.c, global/dict_pgsql.c, plus documentation.

20050210

	Bugfix: spurious fallback_relay warnings after 20050202.
	Victor Duchovni.  File: smtp/smtp_connect.c.

	Bugfix: (introduced while adopting Postfix/TLS patch) the
	TLS cache scan stopped after expiring one entry.  Victor
	Duchovni.  File: tls/tls_scache.c.

	Safety: delete-behind when removing expired entries from
	TLS session caches. With some maps the enumeration method
	mis-behaves when the current entry is deleted. File:
	tls/tls_scache.c.

20050211

	Cleanup: the "generics" feature (output address rewriting)
	is renamed to "generic", for consistency with "canonical"
	and "virtual".

20050212

	Cleanup: remove old trace(8) logfile before attempting
	delivery (and after locking the message file exclusively).
	Files: *qmgr/qmgr_message.c.

	Cleanup: don't parse-then-regenerate message headers when
	no address is changed by address rewriting operations. This
	behavior was copied from the SMTP client's generic mapping
	code.  Files: cleanup/cleanup_rewrite.c, cleanup/cleanup_map11.c,
	cleanup/cleanup_masquerade.c, cleanup/cleanup_message.c..

20050215

	Bugfix: don't chmod queue files while running "postfix
	set-permissions". This prevents mail from being labeled as
	"corrupt" when a live Postfix system is upgraded.  Found
	by Victor Duchovni.  File: conf/post-install.

20050216

	Feature: in smtpd?_discard_ehlo_keyword(s|_address_maps)
	specify the pseudo keyword "silent-discard" in order to
	avoid logging that some EHLO keyword is being suppressed.
	File: global/ehlo_mask.[hc].

20050217

	Bugfix: typo in tls_server.c, breaking CApath.  Fix by
	Philipp Morger. File: tls/tls_server.c.

20050227

	Bugfix (bug introduced 20040331): with SIGHUP ignored, the
	postdrop signal handler would effectively ignore SIGINT,
	SIGQUIT and SIGTERM.  Simplified the overly-conservative
	protection against nested signals in postdrop, and added
	some future proofing comments.  File:  postdrop/postdrop.c

	Cleanup: when address rewriting is enabled, don't change
	the capitalization of header labels, i.e. don't replace
	FROM: or CC: by From: or Cc:. Files: cleanup/cleanup_message.c,
	smtp/smtp_proto.c.

20050228

	Cleanup/portability: missing #includes and bad prototypes.
	Matthias Andree, Carsten Hoeger, and others.

20050302

	Workaround: make TLS session caching work with perverse
	sites that have multiple servers per hostname or even
	multiple servers per IP address, but no shared TLS session
	cache. The SMTP client TLS session cache is now indexed by
	(server hostname, server address, server port, server helo
	hostname). After an idea by Victor Duchovni. Files:
	smtp/smtp_proto.c, tls/tls_client.c.

20050303

	Bugfix (bug inherited from Postfix/TLS patch): a rare 9kbyte
	memory leak when in-memory TLS session information expires;
	found by setting the expiry time shorter than the time to
	deliver one or two messages with a very slow machine.  This
	was due to a missing SSL_SESSION_free() call in the "new
	session" call-back routines. Found by Victor Duchovni.
	Files: tls/tls_client.c, tls/tls_server.c.

	Workaround: OpenSSL is overly agressive when purging a
	not-yet expired entry from a full in-memory cache: it also
	purges the entry from the on-disk server session cache.
	Workaround is to let only the tlsmgr purge entries from the
	on-disk server session cache.  Found by Victor Duchovni.
	File: tls/tls_server.c.

20050304

	Postfix releases are now signed with Wietse's new PGP key.
	The old key was getting a bit short for today's standards.
	The new public key can be found on the Postfix download
	webpage. As proof of authenticity the new PGP key is signed
	with Wietse's old PGP key.

	Cleanup: check_mumble_{ns,mx}_access no longer attempt to
	do MX or NS lookups for address literals. An address literal
	is treated as its own MX host; there is no meaningful
	equivalent for NS access control. File: smtpd/smtpd_check.c.

20050310

	Bugfix: the AIX and SUN compilers rightfully complained
	about non-portable code in the "new" LDAP/SQL client. File:
	global/db_common.c.

	Workaround: some systems no longer recognize "tail +2" as
	valid command syntax. Instead they require "improved" syntax
	that is not valid on several other systems that Postfix
	builds on.  So we have to stop using the tail command.
	Files: Makefile.in, src/*/Makefile.in.

20050312

	Bugfix: the TLS session cache cleaning code didn't always
	delete the right entry. Problem found by Victor Duchovni,
	more problems found by Wietse. File: tls/tls_scache.c.

20050314

	Portability: Berkeley DB changed API from version 2.5 to
	2.6. Rob Foehl. File: util/dict_db.c.

20050315

	Bugfix: when <unistd.h> is included, read is a reserved
	identifier. File: smtpstone/smtp-source.c.

20050321-27

	Support for RFC 3463 enhanced status codes.  See also the
	ENHANCED_STATUS_README (a hacker's guide) for background.

	New module to pass around (status code + text) instead of
	just text.  File: Files: global/dsn_util.c.

	Status-related lookup tables now have an extra column for
	enhanced status codes.  Files: global/sys_exits.c,
	global/cleanup_strerror.c.

	Cleanup: centralized mapping of errno values to delivery
	status codes after failed delivery to mailbox, maildir, or
	file. Error codes EAGAIN, and ESTALE are 4.2.0 temporary
	errors; ENOSPC is a 4.3.0 temporary error; and EDQUOT and
	EFBIG are 5.2.2 hard errors. For backwards compatibility,
	the result of other errors depends on the delivery agent:
	with local(8) everything else is a 5.2.0 hard error, and
	with virtual(8) everything else is soft 4.2.0 error.  File:
	global/mbox_open.c.

20050324

	Workaround: gcc -W (version 3.4.2 [FreeBSD] 20040728) no
	longer warns about missing return statements. What a time
	waste.

	Workaround: gcc -E (version 3.4.2 [FreeBSD] 20040728) output
	has changed, causing too much "make depend" output.

20050325

	Bugfix: when bouncing mail that was submitted with Postfix
	sendmail, the cleanup daemon ignored the reason specified
	in header/body_checks, and always produced a generic reason.
	File: cleanup/cleanup_api.c.

	Workaround: don't announce pipelining support when the
	smtp-sink test program is configured to fail specific
	commands with -r or -f (the fix is to build a proper SMTP
	state engine into the smtp-sink test program).  File:
	smtpstone/smtp-sink.c.

20050326

	Update: more PCRE error codes. File: util/dict_pcre.c.

20050327

	Bugfix: the SMTP and LMTP clients did not ask the queue
	manager to reduce destination concurrency when "lost
	connection" or "connection timed out" happened AFTER Postfix
	received the server greeting. Files: smtp/smtp_trouble.c,
	lmtp/lmtp-trouble.c.

	Workaround: FreeBSD has incompatibly changed the output
	format from "od", breaking regression test portability.

	The TLS client session cache ID is now derived from the
	server IP address, TCP Port, and server HELO hostname
	if available. File: smtp/smtp_proto.c.

20050328

	Cleanup: the REPLACE action is no longer implemented as
	PREPEND+IGNORE. The result remains in the input stream,
	and is subject to address rewriting and other processing
	where applicable.  File: cleanup/cleanup_message.c.

	Feature: the TLS server name verification status is moved
	out of the TLS session cache. This not only simplifies the
	client-side TLS cache implementation, but also provides
	better cache support for clients that connect to multiple
	independent MTAs under the same DNS hostname or IP address,
	provided that each MTA replies with a unique name in the
	EHLO response. Patch by Victor Duchovni. Files: tlsmgr/tlsmgr.c,
	tls/tls_verify.c, tls/tls_session.c, tls/tls_server.c,
	tls/tls_scache.h, tls/tls_scache.c, tls/tls_misc.c,
	tls/tls_mgr.h, tls/tls_mgr.c, tls/tls_client.c, tls/tls.h,
	smtp/smtp_proto.c.

20050330

	Bugfix: in some compilation environments the SMTP and LMTP
	clients could ignore enhanced status codes in server replies.
	Bug introduced 20050329 while polishing working code.  Files:
	smtp/smtp_chat.c, lmtp/lmtp_chat.c.

	Feature: add enhanced status code support to the smtp-sink
	test program. File: smtpstone/smtp-sink.c.

20050331

	Workarounds for ancient gcc compilers that can't handle
	valid C. Bugs reported by Victor Duchovni. Files:
	util/sys_defs.h, global/dsn_util.h, tls/tls_client.c.

	Bugfix: when delivery to command failed, command output was
	not reported. Fix was to enable format checks for the new
	dsn_vstring_update() module. File: global/dsn_util.h,
	global/pipe_command.c.

20050401

	Cleanup: ignore incorrect enhanced status codes (such as
	5xx reply followed by a 4.x.x status), and don't look for
	enhanced status codes unless the server replies with a
	[245]XX reply.  Files: smtp/smtp_chat.c, lmtp/lmtp_chat.c.

20050402

	Feature: enhanced status code support for errors found by
	the MIME processor. Files: global/mime_state.c,
	cleanup/cleanup_message.c, smtp/smtp_proto.c.

	Cleanup: updated error messages about MIME processing errors
	in the SMTP client. These errors are no longer specific to
	8bit->7bit conversion; they can also happen with generic
	address mapping. File: smtp/smtp_proto.c.

	Safety: SASL 2.1.19 has a version lookup routine that we
	can use to detect compile time / run time version mis-matches
	(also known as DLL hell).  Files: src/smtpd/smtpd_sasl_glue.c,
	src/smtp/smtp_sasl_glue.c, src/lmtp/lmtp_sasl_glue.c.

20050404

	Typo: missing comma after dsn=x.yy.zz logging. File:
	global/log_adhoc.c.

	Feature: specify "smtpd_sasl_authenticated_header = yes"
	to report the SASL login name in the Received: message
	header, so that the login name is shared with the whole
	world. Based on code by Branko F. Gracnar. Files:
	smtpd/smtpd.c, and documentation.

20050407

	@%^!#& Thanks to inadequate SASL documentation the client
	could negotiate a security layer where none was desired.
	Better documentation has become available since Postfix
	SASL support was implemented, and now Postfix needs to be
	fixed. Files: */*_sasl_glue.c.

20050409

	Safety: the CDB map now logs a warning when the source file
	is newer than the indexed file, just like the Berkeley DB
	and DBM maps. Michael Tokarev. File: util/dict_cdb.c.

20040411

	Portability: put the SASL DLL Hell guard after the declarations
	instead of before.  Reported by Marcus Grando. Files:
	smtp/smtp_sasl_glue.c, lmtp/lmtp_sasl_glue.c.

20050412

	Infrastructure: change the disposition or other properties
	of an embryonic queue file. This is currently used only to
	place mail on hold.  After code by Victor Duchovni.  Files:
	global/mail_stream.[hc], cleanup/cleanup_api.c.

	Bugfix: while updating the cleanup_flush() infrastructure
	eliminated a portability problem that was introduced when
	"REJECT text" support was added. File: cleanup/cleanup.c.
	
20050413

	Portability: don't mix socket message send/receive calls
	with socket stream read/write calls. The fact that you can
	get away with it only on some stacks implies that there is
	no long-term guarantee. Specify -DCAN_WRITE_BEFORE_SENDING_FD
	if you feel brave. File: util/sys_defs.h.

	Robustness: re-compile all object files after the "make
	makefiles" options have changed. Files: src/*/Makefile.in.

	Tweaking: reply with 5.3.4 when the message size exceeds
	the mail system message_size_limit, instead of 5.2.3 which
	is a mailbox specific status. File: smtpd/smtpd_check.c.

20050417

	Safety: don't call syslog from a user-triggered signal
	handler.  File: postdrop/postdrop.c.

20050421

	Bugfix: don't panic when the fall-back relay can't be used
	because the local MTA is MX for the destination.  File:
	smtp/smtp_connect.c.

20050422

	Bugfix: don't panic when the fall-back relay can't be used
	because it was already tried via a cached session. Produce
	a default excuse instead. File: smtp/smtp_connect.c.

	Bugfix: postsuper could lose an error message after reporting
	a fatal error.  File: postsuper/postsuper.c.

20050426

	Bugfix: simplified and improved the 20050422 fall-back relay
	fix. File: smtp/smtp_connect.c.

20050427

	Final solution for the 20050422 fall-back relay problem:
	truncate the fall-back host list when the local MTA is MX
	for some destination. Files: util/argv.c, smtp/smtp_connect.c.

	Cleanup: extra dsn_vstring_update_dsn() routine to shut up
	GCC complaints about valid code. Files: src/global/dsn_util.c,
	src/global/mbox_open.c, src/lmtp/lmtp_addr.c, src/smtp/smtp_addr.c,
	src/smtp/smtp_connect.c.

20050429

	The Postfix SMTP server now announces ENHANCEDSTATUSCODES
	support in the EHLO response, as described in RFC 2034.
	File: smtpd/smtpd.c.

20050503

	Propagate enhanced status code from error(8) mailer to SMTP
	server replies. File: smtpd/smtpd_check.c.

	Cleanup: more consistent format of smtpd warning logging,
	so that it is easier to sort.  Files: smtpd/smtpd.c,
	smtpd/smtpd_check.c.

20050504

	Yikes. People are exposing the smtp-sink test program to
	hostile environments, while it was designed for controlled
	environments. Completed the support for write timeouts,
	added support for read timeouts, and added a missing exception
	handler for the 220 server greeting.  File: smtpstone/smtp-sink.c.

20050506

	Cleanup: with "REJECT 4.X.Y ..." actions in header/body_checks,
	change the SMTP server reply code from 550 into 450, instead
	of having the SMTP server change the DSN into 5.X.Y.  File:
	smtpd/smtpd.c.

20050510

	Usability: when reporting a sender address problem, transform
	a recipient DSN status (e.g., 4.1.1-4.1.6) into the
	corresponding sender DSN status, and vice versa; and when
	reporting a non-address problem, transform a sender or
	recipient DSN status into a generic non-address DSN status
	(e.g., 4.0.0).  This transformation may be needed when the
	same access table or RBL reply template are used for client,
	helo, sender, or recipient restrictions; or when the same
	error mailer information is used for senders or recipients.
	Files: smtpd/smtpd_check.c, smtpd/smtpd_dsn_fix.[hc].

20050512

	Feature: support for more SASL logging call-backs, if these
	are defined in the compile-time environment. Files:
	smtpd/smtpd_sasl_glue.c, smtp/smtp_sasl_glue.c.

20050513

	Workaround: Postfix now uses "localdomain" as the default
	domain name when $myhostname is not in "host.domain" form.
	Files: global/mail_params.[hc].

---------

20050415-20050615

	As of 20050525, DSN support does not involve new queue file
	record types, so you can switch back to older Postfix
	versions. Older non-production releases did introduce queue
	file incompatibility.

	DSN support is selected via the SMTP port by extra parameters
	to the MAIL FROM and RCPT TO commands, and with the Postfix
	sendmail command with new command-line options: -N (specify
	notification options such as "never", "success", "delay"
	or "failure") and -V (specify an envelope ID that identifies
	the mail submission transaction).  VERP support now uses
	-XV instead of -V.

	The implementation piggy-backs on the trace(8) service that
	was already used for "sendmail -v" (verbose delivery) and
	for "sendmail -bv" (what-if) reports. You can no longer
	requests these functions together with DSN support.

	All this means revision of bounce/defer/trace client
	interfaces, of the bounce service, the record reading loops
	in postdrop, cleanup(8) and qmgr(8), the queue manager to
	delivery agent protocol, and some extra SMTP protocol
	parameters in smtpd(8), lmtp(8) and smtp(8).

	New code module: global/dsn_smtp.[hc] for RFC 3461 related
	information (but this may still change).

	Feature: "sendmail -G" is no longer a no-op.  Message headers
	are treated as if the message has a remote origin. Files:
	sendmail/sendmail.c, postdrop/postdrop.c.

	Feature: automatic BCC senders are now created as if they
	were received with NOTIFY=NEVER, in case it helps. File:
	cleanup/cleanup_addr.c

	Compatibility: with large bounces, send message headers
	only, instead of truncating MIME messages in the middle.

20050517

	Bugfix: in a DSN report, the original recipient should not
	be xtext encoded. File: bounce/bounce_notify_util.c.

20050523

	Bugfix: mymalloc() panic with mistyped server host list.
	File: global/dict_pgsql.c.

20050525

	Feature: specify delay_warning_time=1 to get immediate
	notification of delay. File: qmgr/qmgr_active.c.

20050526

	Reset the Postfix original recipient when delivering to
	mailing list.

20050601

	Modified the master backgrounding procedure to not abort
	when the master is already a process group leader. This
	happens when people bypass or modify the official Postfix
	start-up procedure.  Jacek Konieczny. File: master/master.c.

20050602

	Sanity check: don't report "address in use" when some Postfix
	socket is a directory. File: util/unix_listen.c.

20050613

	Now that the over-all structure of the code is proving
	itself, interfaces can be cleaned up. This means nicer names
	for variables, functions and data structures, and dedicated
	read/write routines for recipient and DSN information.
	These remove a lot of clutter from the bounce client and
	server code.  Files: dsn_print.c dsb_scan.c, rcpt_print.c,
	rcpt_buf.c.

	For Sendmail compatibility, the Postfix sendmail -V option
	no longer controls VERP usage, but is used to specify the
	DSN envelope ID.  In order to provide a smooth transition,
	backwards compatibility code recognizes when -V is being
	used for VERP control.  It will do the right thing, and
	warns the user to use -XV instead. File: sendmail/sendmail.c.

20050614

	The cleanup server writes bounce (delivery failure) and
	trace (success) records, but it no longer requests sender
	notification.  That is now handled by the queue manager.
	The reason is that the cleanup server must be able to abort
	a request including its bounce and trace logfiles, so it
	must not take actions that can't be undone.

20050615

	Cleanup: the SMTP client now sends QUIT when the initial
	HELO handshake fails. it still doesn't send QUIT when the
	server greets with a [45]XX code, as that is handled in the
	connection management code before a session context exists.
	File: smtp/smtp_connect.c.

	Cleanup: made the quote_821_local() routine "const" clean.
	File: global/quote_821_local.[hc].

20050616

	Bugfix: missing or mis-placed va_end() macros, found in
	Postfix 2.3 code review. Files: util/netstring.c,
	util/myaddrinfo.c, util/attr_clnt.c, util/vstream.c.

	Bugfix: the SMTP server now separates the message size check
	from the queue space check, so that the size check can be
	done before an SMTPD proxy filter. Files: smtpd/smtpd.c,
	smtpd/smtpd_check.c.

20050617

	Postdrop didn't recognize the new recipient attributes.
	File: postdrop/postdrop.c.

	Feature: configurable MAILER-DAEMON replacement for the
	null sender address that is used by the pipe(8) delivery
	agent on the command line and in message headers. Command-line
	address quoting is disabled when the replacement is empty.
	File: pipe/pipe.c.

20050618

	With virtual aliasing enabled, Postfix would always report
	successful alias expansion, even when no alias was expanded.
	File: cleanup/cleanup_out_recipient.c.

20050621

	Portability: file descriptor passing is available for Tru64
	UNIX, but not for AIX4 and IRIX6.  Albert Chin. File:
	util/sys_defs.h.

20050622

	Cleanup: the DNS lookup code now accommodates name server
	replies longer than 4 kbytes, with a hard upper limit of
	32kbytes. For safety reasons, the number of MX host addresses
	that the SMTP client will try was reduced from unlimited
	to just 5, so that Postfix won't spend forever trying to
	connect to dozens and dozens of bogus MX hosts. Files:
	dns/dns_lookup.c, global/mail_params.h.

	Cleanup: the code that handles a 4xx or 5xx SMTP server
	greeting was moved from the connection management module
	to the protocol engine, for cleaner error handling.  This
	means that the failed session now counts towards the limit
	on the total number of SMTP sessions per domain name (default:
	smtp_mx_session_limit = 2).  Files: smtp/smtp_connect.c,
	smtp/smtp_proto.c.

20050623

	Cleanup: generalized the delegated attribute scan/print
	interfaces, and updated the deliver_pass module with delegated
	attribute scan/print support. Files: util/attr_scan0.c,
	util/attr_print0.c, global/dsb_scan.c, global/dsn_print.c,
	global/rcpt_buf,c global/rcpt_print.c, global/deliver_pass.c.

	Added delegated attribute scan/print function support to
	the base64 and plain attribute I/O encodings. Files:
	util/attr_scan_plain.c util/attr_print_plain.c.

20050624

	Added "." to the list commands that smtp-sink can "break"
	(by disconnecting, or by responding with a 4XX or 5XX reply
	code). File: smtpstone/smtp-sink.c.

20050625

	Safety: allow only 4.x.x and 5.x.x enhanced status codes
	in header/body_checks REJECT actions. File:
	cleanup/cleanup_message.c.

20050627

	Code cleanup: generalized the smtp-sink code that simulates
	server errors. File: smtpstone/smtp-sink.c.

20050629

	Code cleanup: the smtp_mx_session_limit setting (per delivery
	request session count limit) now ignores sessions that fail
	to complete the TCP, SMTP, EHLO or TLS handshake (was: TCP
	and SMTP).  File: smtp/smtp_proto.c.

20050630

	Updated the example spf.pl script to version 1.06.

	Portability: the file descriptor passing code broke on LP64
	systems (inherited from Stevens Network Programming).  Files:
	util/unix_send_fd.c, util/unix_recv_fd.c.

20050706

	Robustness: the SMTP client now disables connection caching
	when it is unable to communicate with the scache(8) server,
	instead of looping forever. File: global/scache_clnt.c.

	Portability: after sending a socket, the scache(8) server
	now waits for an ACK from the connection cache client before
	closing the socket that it just sent. Files: scache/scache.c,
	global/scache_clnt.c.
	 
20050708

	Bugfix: missing returns in 20050706 caching disabling code
	(in error handling code that never executes).  File:
	global/scache_clnt.c.

	Portability: use explicitly unsigned operands when doing
	bit-wise shift operations on data larger than a character.

20050709-15

	Migration of data object sizes and offsets from int->ssize_t
	and unsigned->size_t for better portability to LP64 and
	LLP64 systems where *size_t is 64 bits wide.   This change
	has no effect on 32-bit systems.

	This change not only eliminated some obscure portability
	bugs (see two paragraphs down), it also eliminated many
	unnecessary conversions back and forth between 32-bit and
	64-bit integers, because all relevant system library functions
	take *size_t arguments or return *size_t results.

	Simply changing every data object size or offset to size_t
	(which is unsigned!) would be dangerous.  A lot of code was
	written assuming signed arithmetic and rejects negative
	lengths, which can happen as the result of integer overflow.

	Portability: on LP64 systems, integer expressions are int,
	but sizeof() and pointer difference expressions are larger.
	The above changes fixed a few discrepancies with function
	calls where *size_t was passed while the old code expected
	an int: clean_env() versus argv_addn(), and code that sent
	binary blobs via the TLS session cache manager protocol.

20050711

	Bugfix: don't include <> when auto-generating an ORCPT
	address from a client RCPT TO command. File: smtpd.c.

20050712

	Cleanup: cleanup_out_recipient() still generated DSN records
	that were incompatible with pre-DSN Postfix versions.  File:
	cleanup/cleanup_out_recipient.c.

20050716

	Bugfix: the smtpd_sasl_authenticated_header code did not
	check if SASL was actually enabled. File: smtpd/smtpd.c.

20050720

	Feature: reverse client hostname. This is set at connection
	time with information from the SMTP client address->name
	mapping, and can be overruled with the REVERSE_NAME attribute
	in the XCLIENT command. File: smtpd/smtpd_peer.c.

	Cleanup: renaming of several confusing restriction names:
	reject_unknown_client -> reject_unknown_client_hostname,
	reject_unknown_hostname -> reject_unknown_helo_hostname,
	reject_invalid_hostname -> reject_invalid_helo_hostname,
	and reject_non_fqdn_hostname -> reject_non_fqdn_helo_hostname.
	The old names are still recognized and documented.  Files:
	global/mail_params.h, smtpd/smtpd.c, smtpd/smtpd_check.c.

	Feature: reject_unknown_reverse_client_hostname. This rejects
	clients that have no address to name mapping (unlike the
	reject_unknown_client_hostname feature which requires that
	the address->name and name->address mappings resolve to the
	client IP address).  Files: global/mail_params.h,
	smtpd/smtpd_peer.c, smtpd/smtpd.c, smtpd/smtpd_check.c.

20050726

	Horror: total rewrite of DNS client error handling because
	some misguided proposal attempts to give special meaning
	to some syntactically invalid MX hostname lookup result.
	Not only that, people expect sensible results with
	reject_unknown_sender_domain etc.  Files: dns/dns_lookup.c,
	smtp/smtp_addr.c smtpd/smtpd_check.c, lmtp/lmtp_addr.c.

	Cleanup: HOLD action executes only once, to reduce noise
	in the logfile. Files: cleanup/cleanup_message.c, smtpd/smtpd.c.

20050806

	Workaround: accept(2) fails with EPROTO when the client
	already disconnected (SunOS 5.5.1). File: sane_accept.c.

20050815

	Workaround: old Solaris compilers can't link an archive
	without globally visible symbols. File: tls/tls_misc.c.

20050825

	Feature: message_reject_characters and message_strip_characters
	specify what characters in message content Postfix will
	reject or remove. Based on patch by John Fawcett. Files:
	cleanup/cleanup_message.c, cleanup/cleanup_init.c.

	Safety: when the cleanup server rejects the content of mail
	that is submitted with the Postfix sendmail command, or
	re-queued with "postsuper -r", strip the message body from
	the bounce message to reduce the risks from harmful content.
	Files: cleanup/cleanup_envelope.c, cleanup/cleanup_bounce.c.

	Feature: the smtpd_proxy_filter parameter value can now be
	prefixed with "unix:" (for UNIX-domain socket) and "inet:"
	(for TCP socket). TCP sockets are the default.  Patch by
	Edwin Kremer. File: smtpd/smtpd_proxy.c.

20050828

	Bugfix: after adding DSN support, error notification was
	broken for too large mail that was submitted with the Postfix
	sendmail command, forwarded by the local(8) delivery agent,
	or re-queued with "postsuper -r". The message would be saved
	to the "corrupt" queue.

	The mistake was to leave the truncated message in the
	incoming queue and to ask the queue manager to notify the
	sender; this was not possible because the queue manager
	cannot (and should not) handle truncated queue files.

	The fix is to have the cleanup server send the bounce
	message, just like it did before DSN support was added.  As
	a side effect, Postfix will no longer send DSN_SUCCESS
	notices after virtual aliasing, when the cleanup server
	bounces all the recipients of the message anyway.  This
	could be called a feature.  File: cleanup/cleanup_bounce.c.

	Also needed for this fix: a new vstream_fpurge() routine
	that discards unread/written data from a VSTREAM.  It's
	needed before cleanup_bounce() can seek to the start of the
	queue file after a file size error. File: util/vstream.c.

20050920

	Cleanup: removed the legacy "tls_info" structure, factored
	out common code for peer_CN and issuer_CN lookup, and added
	sanity check to not verify subject common names that contain
	nulls or that are execessively long. Patch by Victor Duchovni.
	Files: tls_client.c, tls_server.c, tls_session.c, tls_misc.c,
	tls_verify.c.
	
20050922

	Bugfix: the *SQL clients did not uniformly choose the
	database host from the available pool of servers due to an
	off-by-one error, so that the "last" available server was
	not selected. Leandro Santi. Files: dict_mysql.c, dict_pgsql.c.

	Update: common code factored out into db_common.c, and
	adoption of Liviu Daia's connection aware MySQL quoting.
	Patch by Victor Duchovni.  Files: dict_ldap.c, dict_mysql.c,
	dict_pgsql.c, db_common.c.

20050923

	Safety: don't update the local(8) delivery agent's idea of
	the Delivered-To: address while expanding aliases or .forward
	files. When an alias or .forward file changes the Delivered-To:
	address, it ties up one queue file and one cleanup process
	instance while mail is being forwarded.  To get the old
	behavior, specify "frozen_delivered_to = no".  Problem
	reported by Michael Tokarev, but found independently by
	others.  Files: local/local.c, local/aliases.c, local/dotforward.c,
	local/mailbox.c, local/maildir.c.

	Logging: additional SASL debug logging by Andreas Winkelmann.
	Files: */*sasl_glue.c.

20050929

	Paranoia: don't ignore garbage in SMTP or LMTP server replies
	when ESMTP command pipelining is turned on. For example,
	after sending ".<CR><LF>QUIT<CR><LF>", Postfix could recognize
	the server's 2XX QUIT reply as a 2XX END-OF-DATA reply after
	garbage, causing mail to be lost. The SMTP and LMTP clients
	now report a remote protocol error and defer delivery.
	Files: smtp/smtp_chat.c, smtp/smtp_trouble.c, lmtp/lmtp_chat.c,
	lmtp/lmtp_trouble.c.

	Performance: specify "smtpd_peername_lookup = no" to disable
	client hostname lookups in the SMTP server. All clients are
	treated as "unknown". This should be used only under extreme
	conditions where DNS lookup latencies are critical. File:
	smtpd/smtpd_peer.c.

20051010

	Feature: smtpd_client_new_tls_session_rate_limit parameter
	to limit the number of new (i.e. uncached) TLS sessions
	that a remote SMTP client may negotiate per unit time. This
	feature, which is off by default, can limit the CPU load
	due to expensive crypto operations.  Files: global/anvil_clnt.c,
	anvil/anvil.c, smtpd/smtpd.c.

	Cleanup: eliminated massive code duplication in the anvil
	server that resulted from adding similar features one at a
	time.  File: anvil/anvil.c.

20051011

	Bugfix: raise the "policy violation" flag when a client
	request exceeds a concurrency or rate limit.  File:
	smtpd/smtpd.c.

	Bugfix (cut-and-paste error): don't reply with 421 (too
	many MAIL FROM or RCPT TO commands) when we aren't closing
	the connection.  File: smtpd/smtpd.c.

20051012

	Polishing: content of comments and sequence of code blocks
	in the anvil server, TLS request rate error message in the
	smtp server, and documentation, but no changes in code.
	Files: anvil/anvil.c, smtpd/smtpd.c.

20051013

	Horror: some systems have basename() and dirname() and some
	don't; some implementations modify their input and some
	don't; and some implementations use a private buffer that
	is overwritten upon the next call. Postfix will use its own
	safer versions called sane_basename() and sane_dirname().
	These never modify the input, and allow the caller to control
	how memory is allocated for the result.  File:
	util/sane_basename.c.

	Feature: "sendmail -C path-to-main.cf" and "sendmail -C
	config_directory" now do what one would expect. File:
	sendmail/sendmail.c.

	Bugfix: don't do smtpd_end_of_data_restrictions after the
	transaction failed due to, e.g., a write error.  File:
	smtpd/smtpd.c.

	Cleanup: the SMTP server now enforces the message_size_limit
	even when the client did not send SIZE information with the
	MAIL FROM command.  This protects before-queue content
	filters against over-size messages.  File: smtpd/smtpd.c.

20051017

	Bugfix: after DSN support was added, smtp_skip_5xx_greeting
	no longer recognized a 5xx SMTP status as a 4xx one. Found
	by Ralf Hildebrandt. Fix: use the enhanced status code
	instead of the SMTP reply code to choose between permanent
	or transient errors. File: smtp/smtp_trouble.c.

	Feature: smtp-sink can hard-reject, soft-reject or simply
	drop connection requests.  File: smtpstone/smtp-sink.c.

	Documentation: clarified the processing of server replies,
	specifically the reply code and the enhanced status code,
	in smtp_chat.c.

20051024

	Performance: new smtp_connection_reuse_time_limit parameter to
	limit connection reuse by elapsed time, instead of limiting
	the number of deliveries per connection.  Bounding by time
	favors delivery over connections that perform well, while
	bounding by number of deliveries allows slow connections
	to drag down the performance.  Insight and initial
	implementation by Victor Duchovni, Morgan Stanley. Files:
	smtp_connect.c, smtp_session.c,

	Bugfix: the next-hop logical destination information for
	connection caching was reset only after a good non-TLS
	connection, so that cached connections to non-TLS backup
	servers could suck away traffic from TLS primary servers
	(the Postfix SMTP client cannot cache an open TLS connection).
	Found during code review. This is fixed with multi-valued
	connection caching state: expired, cachable, non-cachable,
	and bad.  Files: smtp_connect.c, smtp_trouble.c.

	Bugfix: adding support for "sendmail -C" broke "sendmail
	-q".  File: sendmail/sendmail.c.

20051101

	Migration from a single "arrival time" stamp to a structure
	with time stamps from different stages of message delivery.
	The first iteration merely replaces "arrival time" stamps
	by a structure or pointer to structure, and uses only the
	arrival time field of that structure.  This is an extensive
	but straightforward transformation, based on example by
	Victor Duchovni, Morgan Stanley.  Files: anything that
	invokes bounce_append etc., the log_adhoc module, and
	anything that sends or receives a delivery request.

20051102

	Completion of support for time stamps from different stages
	of message delivery. The information is now logged as
	"delays=a/b/c/d" where a=time before queue manager, including
	message transmission; b=time in queue manager; c=connection
	setup including DNS, HELO and TLS; d=message transmission
	time. Unlike Victor's example which used time differences,
	this implementation uses absolute times. The decision of
	what numbers to subtract actually depends on program history,
	so we want to do it in one place.  Files: global/log_adhoc.c,
	smtp/smtp_connect.c, smtp/smtp_proto.c, smtp/smtp_trouble.c,
	lmtp/lmtp_proto.c, lmtp/lmtp_trouble.c.

20051103

	Refinement of time stamping and delays formatting.  The
	hand-off time is now stamped in the delivery agent, so that
	time is properly attributed when a transport is saturated
	or throttled.  Delays are now logged if larger than 0.01
	second. Files: *qmgr/qmgr_deliver.c, global/deliver_request.c,
	global/log_adhoc.c.

20051104

	New parameter delay_logging_time_resolution (default: 10000
	microseconds, or 0.01 second) that controls the detail in
	the new "delays=a/b/c/d" logging. Specify a power of 10
	in the range from 1 to 100000. File: global/log_adhoc.c.
	Parameter renamed 20051108.

20051105

	All delay logging now has sub-second resolution. This means
	updating all code that reads or updates the records that
	specify when mail arrived, and ensuring that mail submitted
	with older Postfix versions produces sensible results.
	Files: global/post_mail.c, global/mail_timeofday.[hc],
	global/log_adhoc.c, postdrop/postdrop.c, pickup/pickup.c,
	cleanup/cleanup_envelope.c, cleanup/cleanup_message.c,
	smtpd/smtpd.c, qmqpd/qmqpd.c, *qmgr/qmgr_message.c,
	*qmgr/qmgr_active.c, local/forward.c.

20051106

	The SMTP client logs the remote server port in the form of
	relay=hostname[hostaddr]:port to the local maillog file.
	The port number is NOT included in DSN status reports,
	because remote users have no need to know such internal
	information.  Files: smtp/smtp_session.c, smtp/smtp_proto.c,
	smtp/smtp_trouble.c.

	Cleanup: encapsulated queue file time read/write operations
	with a few simple macros, to make future changes in time
	representation less painful.

20051108

	Cleanup: eliminated floating point operations from the
	ad-hoc delay logging code. Files: util/format_tv.[hc],
	global/log_adhoc.c.

	The delay logging resolution is now controlled with the
	delay_logging_resolution_limit parameter, which specifies
	the maximal number of digits after the decimal point.

	Bugfix: two messages could get the same message ID due to
	a race condition. This time window was increased when queue
	file creation was postponed from MAIL FROM until the first
	accepted RCPT TO.  The window is closed again. Found by
	Victor. Files: global/mail_stream.c, global/mail_queue.c,
	cleanup/cleanup_message.c.

20051109

	qshape.pl updated for extra microsecond time field in Postfix
	queue files.

	Cleanup: removed obsolete code that handles rejected/dropped
	connections before the HELO handshake. File: smtp/smtp_connect.c.

	Bugfix: XCLIENT broke when reverse hostname support was added.
	Fix by Tomoyuki Sakurai. File: smtpd/smtpd.c.

20051110

	Workaround: don't set the delay warning timer for messages
	from inside or from outside that have the null sender as
	recipient. This was a waste of time, because the warning
	would always be discarded.  File: cleanup/cleanup_envelope.c.

	Feature: the built-in mail delivery status notification
	text is now implemented by built-in templates. Files:
	bounce/bounce_template.c, bounce/bounce_notify_util.c.

20051112

	Feature: configurable bounce message templates based on
	contribution by Nicolas Riendeau. I kept the general format
	of his templates, but placed them together in one file to
	reduce process initialization overhead (most requests to
	the bounce daemon are not for sending bounce messages).
	Files: bounce/bounce_template.c, bounce/dict_ml.c (to be
	moved to library if useful enough). A sample bounce message
	template file is installed as $config_directory/bounce.cf.default.

20051113

	Feature: "postconf -b filename" to preview the non-default
	bounce message templates with $name expansions in the text.
	The actual work is of course done by the bounce daemon.

20051114

	Feature: -V option to make Postfix daemons to log to stderr.
	This is used when a daemon is invoked in stand-alone mode
	by a (non-daemon) command.

	Feature: "postconf -t" displays DSN templates, headers and
	all; use postconf -t ''" to view built-ins.

	Cleanup: renamed fail_template into failure_template.

20051117

	Cleanup: bounce template code reorg, no functionality change.
	Files: bounce/bounce_template.[hc], bounce/bounce_templates.c,
	bounce/bounce_notify_util.c.

20051118

	Bugfix: new bounce template code did not return after
	template syntax error. File: bounce/bounce_template.c

	Safety: permit_mx_backup now requires that the local MTA
	is not listed as primary MX for the recipient domain. This
	prevents mail loops when someone points the primary MX
	record to Postfix.

20051119

	Workaround: some SMTP servers announce multiple but different
	lists of SASL methods. Postfix now concatenates the lists
	instead of logging a warning and remembering only one. File:
	smtp/smtp_sasl_proto.c.

	Bugfix: the queue manager did not write a per-recipient
	defer logfile record when the delivery agent crashed between
	receiving a delivery request, and reporting the delivery
	status to the queue manager.  Found while redesigning the
	code that handles unavailable transports or destinations.
	Files: *qmgr/qmgr_deliver.c.

20051121

	Workaround: do not build the bounce.cf.default template
	while compiling Postfix  - it breaks when the default
	mail_owner etc. accounts don't exist.  Reported by Liviu
	Daia.

	Compatibility: added permit_auth_destination emulation to
	the permit_mx_backup feature. This avoids surprises with
	sites that used permit_mx_backup to authorize all their
	incoming mail.

20051122-24

	Feature: sender_dependent_relayhost_maps, lookup tables that specify
	a sender-dependent override for the relayhost parameter
	setting.  The lookup is done in the trivial-rewrite server,
	instead of the queue manager where it does not belong.
	Files: global/resolve_clnt.c, global/tok822_resolve.c,
	trivial-rewrite/resolve.c, trivial-rewrite/transport.c,
	*qmgr/qmgr_message.c.

	Also: address_verify_sender_dependent_relayhost_maps for
	completeness.

20051124

	Feature: specify "smtp_sender_dependent_authentication =
	yes" to enable sender-dependent SASL passwords. This disables
	SMTP connection caching to ensure that mail from different
	senders is delivered with the appropriate credentials. This
	is an extended version of a patch by Mathias Hasselmann.
	Files: smtp/smtp_connect.c, smtp/smtp_sasl_glue.c.

20051126

	Workaround: log warning when REDIRECT or FILTER are used
	in smtpd_end_of_data_restrictions. File: smtpd/smtpd_check.c.

	Log warning when REDIRECT, FILTER, HOLD and DISCARD are
	used in smtpd_etrn_restrictions. File: smtpd/smtpd_check.c.

20051128

	Bugfix: moved code around from one place to another to make
	REDIRECT, FILTER, HOLD and DISCARD access(5) table actions
	work in smtpd_end_of_data_restrictions.  PREPEND will not
	be fixed; it must be specified before the message content
	is received.  Files: smtpd/smtpd.c, smtpd/smtpd_check.c,
	cleanup/cleanup_extracted.c, pickup/pickup.c.

	Safety: abort if the SMTP or QMQP server runs with non-postfix
	privileges while it's connected to the network.  Files:
	smtpd/smtpd_peer.c, qmqpd/qmqpd_peer.c.

20051201

	Bugfix: the LMTP client would reuse a session after negative
	reply to the RSET command (which may happen when client and
	server somehow get out of sync). Problem found by Christian
	Theune.  Files: lmtp/lmtp.c, lmtp/lmtp_proto.c.

20051202

	Bugfix: the 20051128 code move for "smtpd_end_of_data_restrictions"
	broke "postsuper -r".

20051202-3

	Cleanup: the SMTP client now also implements the LMTP
	protocol.  Files: smtp/smtp.c, smtp/smtp_connect.c,
	smtp/smtp_proto.c, smtp/smtp_dsn.c, smtp_state.c,
	smtp_sasl_glue.c.

	As before, the LMTP behavior is controlled with parameters
	named lmtp_xxx instead of smtp_xxx.  However there are now
	a lot more lmtp_xxx parameters :-) With few exceptions, all
	SMTP features are now also available with LMTP. The exceptions
	are related to the HELO and EHLO commands, which exist in
	SMTP only. There are equivalent LHLO command parameters
	where it makes sense.

20051206

	SMTP+LMTP client connection management code rewritten to
	support UNIX-domain socket connections.

20051207

	Bugfix: race condition in the connection caching protocol,
	found while adding connection caching for UNIX-domain sockets
	(used for LMTP delivery).  This was introduced with the
	20050706 workaround, and may the same problem that Jussi
	Silvennoinen experienced (in Postfix 2.2.6) with SMTP after
	an upgrade.  Files: scache/scache.c.

	Bugfix: smtp-sink and qmqp-sink didn't ignore SIGPIPE.

20051208

	Robustness: reduced timeouts in the connection caching
	client, so that a malfunctioning service does not prevent
	mail delivery. This uses similar code that already exists
	for the anvil(8) client and the tlsmgr(8) client. Files:
	global/scache_clnt.c, smtp/smtp.c.

	To make reduced connection caching client timeouts possible,
	connection management was moved from the attr_clnt(3) module
	to the auto_clnt(3) module where it belongs. The auto_clnt(3)
	module is now a full alternative for the clnt_stream(3)
	module. Files: util/auto_clnt.c, util/attr_clnt.c.

	Bugfix: the best_mx_transport, mailbox_transport and
	fallback_transport features did not write a per-recipient
	defer logfile record when the target delivery agent was
	broken.  This the analog of queue manager bugfix 20051119.
	Files: global/deliver_pass.c.
	
20051210

	Cleanup: simplified the SMTP/LMTP connection management
	logic for address list and fallback relay processing.
	Still need to simplify deferred recipient handling.

20051212

	Bugfix: after a failed TLS session, the 20051210 SMTP client
	code cleanup broke sessions with backup servers, causing the
	client to get out of step with the backup server.  This in
	turn exposed a one-year old missing exception handling
	context in the EHLO handstake after sending STARTTLS. Victim
	was Ralf Hildebrandt, detectives Victor Duchovni and Wietse.
	File: smtp/smtp_proto.c.

20051213 

	Bugfix: *SQL, proxy and LDAP map types were not defined in
	user-land commands such as postqueue. Leandro Santi. File:
	postqueue/postqueue.c.

20051212-14

	Server-side plug-in interface for SASL authentication. This
	uses Cyrus SASL by default, so nothing has changed except
	error messages may be more informative.  Files:
	smtpd/smtpd_sasl_proto.c smtpd/smtpd_sasl_glue.c,
	xsasl/xsasl_server.[hc], xsasl/cyrus_server.[hc]
	xsasl/cyrus_strerror.c, xsasl/cyrus_log.c, xsasl/cyrus_security.c.

20051215

	Portability: IRIX 6.5.28 defines sa_len as a macro, so it
	can't be used as a variable identifier. Zach McDanel. Files:
	dns/dns_rr_to_sa.c, smtpd/smtpd_peer.c, qmqpd/qmqpd_peer.c.

20051216

	Cleanup: removed some scar tissue that was introduced with
	server-side SASL plug-in support. Files: smtpd_sasl_proto.c,
	smtpd_sasl_glue.c.

	Client-side plug-in interface for SASL authentication. This
	uses Cyrus SASL by default, so nothing has changed except
	error messages may be more informative.  Files: smtp_sasl_glue.c,
	xsasl/xsasl_client.[hc], xsasl/cyrus_client.[hc].

20051217

	Bugfix: when a SASL client password is required by a specific
	server, defer delivery when no server-announced mechanism
	survives the smtp_sasl_mechanism_filter, instead of ignoring
	the SASL announcement and trying to deliver the mail over
	an unauthenticated connection and risking that mail will
	be rejected.  File: smtp/smtp_sasl_proto.c, smtp/smtp_proto.c.

	Portability: zero the "struct msg" just in case. Both purify
	(Linux) and valgrind (FreeBSD) complain about uninitialized
	bits.  Files: util/unix_{send,recv}_fd.c.

20051219

	Cleanup: generic smtpd_sasl_path, smtp_sasl_path and
	lmtp_sasl_path configuration parameters; simplified the
	SASL plug-in API, and made initial provisions for SASL
	session encryption. Files: xsasl/*.[hc].

	Feature: "postconf -a" lists the available SASL server
	plug-in types, and "postconf -A" does the same for the
	client.  Files: postconf.c, xsasl_{client,server}.c.

	Feature: new SMTPD policy attributes "encryption_protocol",
	"encryption_cipher" and "encryption_keysize", to distinguish
	plaintext from encrypted connections.

20051221

	Privacy: the new Cyrus SASL server plug-in replaces "no
	user" errors by "authentication failed" errors.  File:
	xsasl/xsasl_cyrus_server.c.

	Safety: the Postfix SMTP client no longer uses CNAME expanded
	hostnames for logging, SASL password lookup, TLS policy
	decisions, or TLS certificate verification.  Instead it
	uses the name of the recipient domain, or the host or domain
	name specified in Postfix configuration files. Of course
	this won't prevent cheating with hostnames that appear in
	MX lookup results. To avoid that you will have to suppress
	MX lookups with explicit [hostname] entries in transport
	maps. Files: dns/dns_lookup.c, dns/dns_rr.c.

20051222

	Feature: Dovecot SASL authentication (server side) plug-in
	by Timo Sirainen. This builds without external library
	dependencies and is therefore compiled in by default.
	Files: xsasl/xsasl_dovecot_server.[hc].

	Safety: set the default LANG=C, instead of deleting LANG
	from the environment and assuming the right thing will
	happen. File: global/mail_params.h.

	Safety: always add the ISASCII() requirement to the ISXXX()
	macros, because they are used for protocol and policy
	enforcement.  File: util/sys_defs.h.

	Bugfix: null pointer in the 20051219 policy delegation
	crypto attributes.  File: smtpd/smtpd_check.c.

	Compatibility: "resolve_numeric_domain = yes" will accept
	addresses with numeric domains instead of rejecting them as
	invalid. Files: trivial-rewrite/resolve.c, util/vstring.c.

	Bugfix: 20051219 "postconf -A" produced "postconf -a" output.
	Andreas Winkelmann.

20051225

	Bugfix: the regexp map cleverly avoided scanning constant
	lookup results for non-existent $number expressions, but
	failed to subject those results to the necessary $$ -> $
	replacement. Files: util/dict_regexp.c.

	Performance: the pcre map did not optimize constant lookup
	results; they were always scanned for non-existent $number
	expressions.  File: util/dict_pcre.c.

	This round of edits eliminates architectural differences
	between the pcre and regexp table implementations.  The
	remaining difference is that regexp tables still support
	the obsolete "/pattern1/!/pattern2/ action" syntax, for
	backwards compatibility with Postfix 2.0 and earlier.

20051227

	Bugfix: the 20051222 ISASCII paranoia broke the strcasecmp()
	workaround for Solaris. File: util/strcasecmp.c.

	Bitrot: SunOS4 pre-dates size_t, ssize_t, getsid().  File:
	src/util/sys_defs.h. The SunOS4 tests had been suspended
	due to what turned out to be a broken AUI-to-UTP transceiver.

	Bugfix: the 20061226 cosmetic change broke non-IPV6 support
	(example: sockaddr_to_hostaddr: Unknown error: success).
	File: util/myaddrinfo.c.

20051229

	The following workaround was removed 20060103.

	Workaround: when mail is still queued after 3000 seconds,
	the SMTP client no longer pipelines the DOT+QUIT commands.
	The 20050929 paranoia about malformed server replies
	eliminated a rare occurrence of "lost mail" with sites that
	mis-implement DOT+QUIT pipelining, but resulted in a larger
	occurrence of repeated deliveries to sites with a different
	DOT+QUIT pipelining bug. The time threshold is set with the
	smtp_dot_quit_workaround_threshold_time parameter.  Files:
	smtp/smtp_proto.c, smtp/smtp.c.

	Feature: mailbox_transport_maps and fallback_transport_maps
	to search delivery transports by recipient name. Files:
	local/mailbox.c, local/unknown.c.

	Feature: the master daemon now logs a warning when all
	servers are busy that may accept remote connections, and
	suggests to either increase the process count or to reduce
	the service time per client.  Files: master/master_ent.c,
	master/master_avail.c.

20051231

	Bugfix: the anvil server would terminate after "max_idle"
	seconds, even when this was less than the anvil_rate_time_unit
	interval. File: anvil/anvil.c.

20060102

	Deleted the 20051229 dot-quit bug workaround.  Automatically
	deferring delivery created "no delivery" and "repeated
	delivery" problems; and automatically turning off pipelining
	for delayed mail was a bad workaround for a bad workaround.
	The administrator still has the option to turn off pipelining
	by hand if loss of mail is a concern.

20060103

	Bugfix: the 20051217 fix (when a SASL client password is
	found, defer delivery when no server-announced mechanism
	survives the smtp_sasl_mechanism_filter) did the mechanism
	test too early, so that it could trip up with deliveries
	to servers that we don't have a SASL password for.  Files:
	smtp/smtp_sasl_proto.c, smtp/smtp_proto.c.

20060104

	Safety: new "smtp_cname_overrides_servername" parameter.
	The default value ("no") is NOT backwards compatible. This
	avoids surprises with the hostname that is used for logging,
	SASL password lookup, TLS policy decisions, or TLS certificate
	verification.  The change makes the 20051221 behavior more
	configurable.  Files: smtp/smtp_addr.c, smtp/smtp_connect.c,
	proto/postconf.proto.

20060105

	Cleanup: removed the unused DSN "code" attribute; removed
	surrogate SMTP replies for errors that were not reported
	by a remote SMTP server, making several DSN-related functions
	and macros redundant; cleaned up some bizarre code for DSN
	attribute memory management in the SMTP client.

20060106

	Cleanup: eliminated the global smtp_errno variable, which
	had become redundant after introducing DSN support. Files:
	smtp/smtp_addr.c, smtp/smtp_connect.c.

20060107

	Cleanup: removed more bizarre code for DSN attribute memory
	management in the queue manager, bounce server, and in
	delivery agents.

20060109

	Bugfix: smtp_sasl_tls_opts was unimplemented. File:
	smtp/smtp_sasl_proto.c.

	Cleanup: more bounce logfile code cleanup.  Files:
	global/bounce_log.c, bounce/bounce_notify_util.c,
	bounce/bounce.c, bounce/bounce_notify_verp.c,
	bounce/bounce_one_service.c, showq/showq.c

20060110

	Cleanup: more bounce logfile code cleanup.  Files:
	global/bounce_log.c, bounce/bounce_notify_util.c.

	Bugfix: the VERP bouncer never handled the case of a missing
	bounce logfile. Found while doing more logfile code cleanup.
	File: bounce/bounce_notify_verp.c.

	Feature: smtp_sasl_tls_verified_security_options for
	connections where the server certificate passed verification.
	The default value is $smtp_sasl_tls_security_options, which
	in turn defaults to $smtp_sasl_security_options.

20060111

	Optimization: mystrdup() and mystrndup() now return a pointer
	to a fixed read-only memory location instead of allocating
	memory for zero-length null-terminated strings.  This saves
	lots of memory for unused recipient attributes. If this
	change causes problems (for example, you have an ancient
	sscanf() implementation that writes to its input) then
	compile Postfix with -DNO_SHARED_EMPTY_STRINGS.

	Cleanup: eliminated null pointer members in DSN structures.
	Instead we now use the optimized mystrdup() for empty
	strings. For safety sake we keep the tests for null pointers
	in input, but we always produce empty strings on output.
	Files: global/dsn.c, global/dsn.h, global/dsn_buf.h,
	global/dsn_print.c.

	Cleanup: eliminated ad-hoc code for passing recipients in
	the queue manager delivery request protocol. Postfix now
	uses proper object activation/passivation instead. Files:
	*qmgr/qmgr_deliver.c, global/deliver_request.c,
	global/deliver_pass.c.

20060112

	Feature: to simplify debugging the bounce server logs the
	old and new queue ID when notifying the sender or postmaster.
	Files: global/post_mail.c, bounce/bounce_notify_service.c,
	bounce/bounce_one_service.c, bounce/bounce_notify_verp.c,
	bounce/bounce_warn_service.c, bounce/bounce_trace_service.c.

	Fudge: when translating recipient DSN codes into sender DSN
	codes, map sender address problems that have no DSN code
	to *.1.7 (Bad sender's mailbox address syntax) instead of
	*.1.0 (Other address status) because that loses the distinction
	between sender and recipient. File: smtpd/smtpd_dsn_fix.c.

20060113

	Cleanup: preserve upper case information of address localpart
	or extension when mapping one address to another with
	non-regexp/pcre tables.  Files: global/mail_addr_find.c,
	global/maps_find.c.

20060115

	Bugfix: don't ignore the per-site policy when SSL library
	initialization fails. Introduced after adopting the TLS
	patch. File: smtp/smtp_session.c.

20060117

	[withdrawn 20060126] Safety: daemon processes that need no
	privileges now insist that they are configured to run without
	privileges.  Files: master/single_server.c, master/multi_server.c,
	master/trigger_server.c.

	Cleanup: preserve upper case information of address localpart
	or extension when mapping addresses via regexp/pcre tables.
	This requires that Postfix does not case fold the search
	string when searching regexp or pcre tables, so that $number
	substitutions produce the expected result.

	In order to get a consistent handling of table operations,
	the search string case folding logic was moved from the
	application to the individual lookup table modules; the
	application specifies its case folding preference when it
	opens a table, and the table folds the search or update
	string as needed.

	Files: everything that opens a map or multiple maps (to
	specify the case folding preference), and everything that
	contained ad-hoc code to lowercase search strings (which
	is no longer needed).

	Bugfix: as a side effect of this revision of all code that
	opens tables, the postmap/postalias -n/-N options are no
	longer silently ignored when the -q (query) and -d (delete)
	options are specified.  Files: postmap/postmap.c,
	postalias/postalias.c.

	Safety: don't allow $number substitution in transport maps
	or sender-dependent relayhost maps.

	Cleanup: smtp_sasl_passwd_maps lookup keys are folded to
	lowercase before searching tables such as btree:, dbm: or
	hash: that have fixed-case fields. File: smtp/smtp_sasl_glue.c.

	Bugfix: per-sender relayhost maps were not locked for shared
	access.

20060119

	Cleanup: don't look up parent domain substrings in regexp/pcre
	like tables while searching a hostname in a domain/namaddr_list.
	File: util/match_ops.c.

20060120

	Cleanup: multiple boolean variables were replaced by a
	single TLS enforcement level (none, may, encrypt, verify).
	With Victor Duchovni. Files: smtp_session.c, smtp_proto.c,
	smtp.h.

	Cleanup: the SMTP per-site policy table was re-implemented
	in terms of enforcement levels instead of multiple boolean
	variables. This greatly simplified the code and led to the
	elimination of non-intuitive behavior as documented next.
	With Victor Duchovni. Files: smtp_session.c, smtp.h.

	Bugfix: a TLS per-site MUST_NOPEERMATCH policy could not
	override a main.cf MUST (with peer match) policy, while a
	per-site NONE policy could.

	Bugfix: a combined TLS per-site (host, next-hop) policy of
	(NONE, MAY) would change the strongest main.cf MUST policy
	into NONE, while it changed all weaker main.cf policies
	into MAY.  The result is now NONE for all main.cf policy
	settings.

20060123

	Feature: recipient_count attribute in SMTPD policy protocol.
	This is available only in the DATA and END-OF-MESSAGE stage.
	Based on code by Guo Black. Files: smtpd_check.c.

	Cleanup: renamed MUMBLE_NUM to MUMBLE_INT to make type
	discrepancies more explicit.

	Bugfix: change 20051208 broke when a connection could not
	be established. File: util/auto_clnt.c.

20060124

	Bugfix: the virtual(8) delivery agent did not insist on
	privileged operation as it should; this broke change 20060117.
	Ralf Hildebrandt.  File: virtual/virtual.c.

	Bugfix: the TLS sasl security options (change 20060110)
	should also be #ifdef USE_TLS, and not only #ifdef
	USE_SASL_AUTH.  Such feature interference is difficult to
	find in testing.  Liviu Daia. File: smtp/smtp_sasl_proto.c.

20060126

	Undo: change 20060117 (unprivileged operation test) broke
	"sendmail -bs", "postconf -b", "postconf -t", and probably
	more. Files: master/{single,multi,trigger}_server.c.

20060130

	Bugfix: an empty remote_header_rewrite_domain value caused
	trivial-rewrite to dereference a null pointer, but only in
	regression tests, not in production. Envelope addresses are
	by definition rewritten in the local domain context, because
	an address without domain is equivalent to an address in
	the local domain; and header addresses are rewritten in the
	remote context only when remote_header_rewrite_domain is
	non-empty.  File: trivial-rewrite/rewrite.c.

20060131

	Cleanup: regression tests are now separated into "make
	tests" for unprivileged tests, and "make root_tests" for
	tests that require privileges to connect to the Postfix
	internal sockets. Files Makefile.in, src/*/Makefile.in.

20060201

	Bugfix: despite efforts to treat malformed domain names as
	hard errors (change 20050726) they were still processed as
	soft errors. File: dns/dns_lookup.c.

20060203

	Bugfix: smtpd core dump when SASL was compiled in, turned
	off (smtpd_sasl_auth_enable = no) and permit_sasl_authenticated
	was specified in local_header_rewrite_clients. Victor
	Duchovni.  File: smtpd/smtpd_check.c.

	Cleanup: don't complain about useless SASL or TLS "permit"
	restrictions when SASL or TLS aren't compiled in, but do
	reject mail when reject_plaintext_session is specified while
	TLS isn't compiled in. File: smtpd/smtpd_check.c.

20060204

	Bugfix: disable the content_filter feature for user-requested
	"sendmail -bv" probes, just like it is disabled for probes
	generated by Postfix itself.  File: *qmgr/qmgr_message.c.

20060207

	Robustness: place the "do we have TLS" guards within method
	implementations, instead of putting them around method
	invocations.  File: smtpd/smtpd_check.c.

	Bugfix: duplicate the cleanup(8) DSN envelope ID syntax
	check in smtpd(8), so that clients get better error replies.
	File: smtpd/smtpd_check.c.

	Bugfix: change 20060203 broke the reject_plaintext_session
	feature.

	The trivial-rewrite and proxymap multi-server processes now
	terminate soon after all their clients disconnect, instead
	of waiting for another 100 seconds. This allows the processes
	to refresh more frequently on low-traffic systems.

	Cleanup: smtpd_delay_open_until_valid_rcpt (default: yes)
	controls whether Postfix delays the start of a mail transaction
	until after the first valid recipient, or if it starts a
	transaction immediately after MAIL FROM. File: smtpd/smtpd.c.

20060217

	Bugfix: don't terminate with a non-standard exit status
	when the pipe-to-command feature has a problem before it
	executes the command. File: global/pipe_command.c.

20060223

	Bugfix: detect integer overflow when multiplying time values
	with non-trivial time units. File: global/conv_time.c.

20060307

	Bugfix: reset the msg_cleanup() fatal error handler in child
	processes. See also change 20060217. Files: postlock/postlock.c,
	master/multi_server.c, global/mail_run.c, util/vstream_popen.c.

20060310

	Bugfix: the MIME processor assumed that input was null
	terminated. This broke with CRLF input to the "sendmail -t"
	command  in Postfix 2.1 and later (see change 20030416).
	Found by Leandro Santi.  Based on patch by Victor Duchovni.
	Files: global/mime_state.c, global/is_header.c.

20060313

	Cleanup: the message arrival time (start of the receive
	transaction) no longer controls message expiration or
	delivery attempts.  Instead, expiration and delivery are
	now controlled by the time when the cleanup server creates
	a queue file.  This closes a problem that was introduced
	with the 20051104 change that introduced higher-resolution
	delay time keeping: as a result, "postsuper -r" could no
	longer manipulate the mail expiration schedule, so that
	mail "on hold" could expire too soon.

20060315

	Workaround. the PCRE library reports an inappropriate error
	code (invalid substring) when $number refers to a valid ()
	expression that matches the null string. This caused fatal
	run-time errors.  File: dict_pcre.c.

20060324

	Cleanup: eliminated name collisions between global and local
	variables, and other forms of shadowing. Documented switch
	fall-throughs with /* FALLTHROUGH */ where this wasn't
	already done.  Replaced (var = expr) by (var = expr) != 0
	where this wasn't already done.

20060324

	Bugfix: mis-placed parenthesis in a before-filter error
	test. A filter timeout was mis-reported as lost connection.
	Found in code review.  File: smtpd/smtpd_proxy.c.

20060327

	Cleanup: the SQL and LDAP clients now log a warning when
	they skip an empty lookup result, so that humans don't have
	to wonder why Postfix doesn't find all the database entries.
	File: global/db_common.c.

	Moved SMTP/LMTP parameter initialization from global/mail_params.c
	to the combined smtp/lmtp delivery agent. Added missing
	lmtp parameters.

20060328

	Feature: configurable chroot directive for the pipe(8)
	delivery agent, by Przemyslaw Wegrzyn. Files:
	global/pipe_command.c, pipe/pipe.c.

	Bugfix: cut-and-paste error: lmtp_connection_cache_limit
	was left with the name of smtp_connection_cache_limit.
	Reported by Victor? File: src/global/mail_params.h.

20060329

	More extensible interface for TLS client/server library,
	now passes property structures that combine all the relevant
	parameters in one type-safe structure.

	TLS session cache activity logging now takes place at TLS
	log level 2 or greater.

20060403

	Cleanup: made fcntl/flock handling consistent with respect
	to EINTR (reported by Carlo Contavalli). However, Postfix
	is not meant to be signal safe.  Only the master daemon
	handles signals without terminating, and it uses only a
	small subset of Postfix library routines. File: util/myflock.c.

	Bugfix: the pipe-to-command error message was lost when the
	command could not be executed. File: global/pipe_command.c.

20060404

	Bugfix in sanity check: after reading a record from the
	address verification database, a sanity check did not reject
	a record with all-zero time stamp fields.  Such records are
	never written; the test is there just in case something is
	broken, so that Postfix will not blindly march on and create
	chaos. The sanity check tested pointer values, instead of
	dereferencing the pointers.  Found by Coverity.  File:
	verify/verify.c.

	Bugfix in sanity check: when the maildir delivery routine
	opens an output file it looks up the file attributes via
	the file handle it just got.  There is a sanity check that
	detects if the attribute lookup fails, an error that never
	happens. The code that handles the impossible error did not
	close the output file. This would cause a virtual or local
	delivery agent to waste up to 100 file descriptors.  But
	for that error to happen the system would have to be so
	sick that you would have more serious problems than a file
	descriptor leak.  Found by Coverity.  Files: local/maildir.c,
	virtual/maildir.c.

20060405

	Bugfix: the MIME parser assumed input is null terminated
	when reporting errors. Fix by Leandro Santi. Files:
	global/mime_state.c, cleanup/cleanup_message.c.

20060411

	Bugfix: the SMTP server logged no warning when for some
	reason the TLS engine was unavailable in wrappermode. Victor
	Duchovni.  File: smtpd/smtpd.c.

20060417

	Cleanup: when SMTP access table lookup fails, reply with
	4xx instead of aborting with a fatal run-time error. The
	old behavior assumes local file access, and is inappropriate
	with deployment of LDAP and SQL tables. File: smtpd/smtpd_check.c.

20060423

	Bugfix: postcat did not print the attribute value of records
	containing a named attribute. File: postcat/postcat.c.

20060430

	Bugfix: dangling pointer in a function that has no caller.
	Found by Coverity. File: tls/tls_prng_exch.c.

	Bugfix: the workaround for CA-2003-07 (Sendmail) did not
	null terminate the address before logging a warning. Reported
	by Kris Kennaway. File: global/tok822_parse.c.

20060301-20060515

	Sendmail 8 Milter support, distributed across the smtpd(8)
	server for SMTP commands, and the cleanup(8) server for
	content inspection and manipulation. The code supports all
	requests to add/delete recipients, and to add/delete/replace
	message headers, but does not yet support requests to replace
	the message body.  See MILTER_README for more. Files:
	smtpd/smtpd.c, smtpd/smtpd_milter.c, cleanup/cleanup_api.c,
	cleanup/cleanup_envelope.c, cleanup/cleanup_extracted.c,
	cleanup/cleanup_milter.c, milter/milter.c, milter/milter8.c.

	That's 89 lines in smtpd, 1010 lines in cleanup, and 2449
	lines of library support, comments not included.  

	A simple test Milter application for use in regression tests
	is in src/milter/test-milter.c. Queue file modifications are
	tested with a driver at the end src/cleanup/cleanup_milter.c
	that reads commands from a script.

	To make debugging easier, uncomment the "#define msg_verbose
	2" lines at the top of cleanup_milter.c or milter8.c. This
	produces logging without making everything else verbose.

20060510

	Preliminary TLS_README and postconf(5) changes completed.
	Victor Duchovni.

	Added smtp_tls_policy_maps and smtp_tls_protocols features
	to the smtp/lmtp client, changed smtp_tls_cipherlist to
	only apply when TLS is mandatory. Victor Duchovni.

20060512

	Destinations that share a common server may have distinct
	TLS protocol and cipherlist requirements, with mandatory
	TLS add the protocol and cipherlist values to the TLS session
	lookup key. Victor Duchovni.

20060516

	Portability: __float80 alignment, by Albert Chin.  File:
	util/sys_defs.h.

	Further testing of Milter support uncovered typos; a missing
	null pointer test while cleaning up after content miltering;
	the need for a workaround to not bounce+delete local
	submission after it triggers a temporary reject Milter
	action.

	Workaround: don't bounce+delete a local submission after
	it triggers a "reject 4.x.x" action in header/body_checks.
	This means an SMTP client now sees "queue file write error"
	instead of the text from the "reject 4.x.x text" action.
	File: cleanup/cleanup_message.c.

	Workaround: OpenSSL 0.9.8[ab] with zlib support interoperability
	problem. Victor Duchovni. Files: tls/tls_client.c,
	tls/tls_misc.c, tls/tls_server.c.

	Added smtpd_tls_protocols parameter to complement
	smtp_tls_protocols. Victor Duchovni.

20060517

	The smtp_tls_policy_maps table now implements parent domain
	matching for destinations that are bare domains (without
	enclosing [] or optional :port suffix). This allows one to
	set TLS policy for a domain and all sub-domains. Victor
	Duchovni.

20060519

	The same parameter can bind to different variables in
	different daemons. Ignore the variable name when eliminating
	duplicates in extract.awk. Victor Duchovni.

20060523

	Improved handling of smtp_tls_protocols and smtpd_tls_protocols,
	names now processed via name_mask(3) and canonicalized prior
	to use in the SMTP/LMTP client TLS session lookup key. Also
	simplifies the corresponding code in the TLS driver. Victor
	Duchovni.

20060524

	Cleanup: send ETRN command parameter when using check_policy
	in the context of an ETRN command. Joshua Goodall. File:
	smtpd/smtpd_check.c.

20060601

	Bugfix (bug introduced 20051118): permit_mx_backup authorized
	domains without secondary MX records.  Joshua Goodall. File:
	smtpd/smtpd_check.c.

20060601

	Fixed default value of LMTP TLS client certificate parameters,
	using the SMTP values as a default was wrong. Victor Duchovni.

20060603

	Different transports may have different CAfile or CApath
	settings. We need to add the transport name to the TLS
	session lookup key so that sessions verified with one set
	of trusted roots are not inadvertantly considered verified
	for another. Victor Duchovni.

20060604

	Cleanup: minor fluff found with the BEAM source code analyzer.
	Files: global/quote_821_local.c, global/quote_822_local.c,
	master/master_spawn.c, pickup/pickup.c, util/match_ops.c,
	util/safe_open.c, xsasl/xsasl_cyrus_client.c.

20060606

	Safety: mail receiving daemons (smtpd, qmqpd) now pass
	actual client name/addres/helo attributes in addition to
	the attributes used for logging (xforward). This prevents
	Milter applications from treating qmqpd mail as if it
	originated locally, and prevents incorrect Milter decisions
	after "postsuper -r". Files: smtpd/smtpd.c, qmqpd/qmqpd.c,
	cleanup/cleanup_envelope.c, cleanup/cleanup_milter.c,
	cleanup/cleanup_state.c, global/post_mail.c, *qmgr/qmgr_message.c,
	*qmgr/qmgr_deliver.c, global/deliver_request.c,
	global/deliver_pass.c, local/forward.c.

	Bugfix: qmgr panic after queue file corruption by Mailscanner.
	Files: *qmgr/qmgr_message.c.

	Bugfix: XCLIENT didn't work with smtpd_delay_reject=no
	(problem reported by Joshua Goodall).  To make XCLIENT work
	correctly with built-in restrictions and with Milter
	applications, the SMTP server now jumps back to the very
	start (the 220 phase) of an SMTP session.  File: smtpd/smtpd.c.

20060606

	Portability: Some systems no longer support the traditional
	"sort +0 -2 +3". Victor Duchovni.

20060607

	Portability: Found by BEAM static code analyzer. SSL options
	(long) were stored as int.

20060610

	Cleanup: XCLIENT and XFORWARD attribute values are now sent
	as xtext encoded strings. For backwards compatibility,
	Postfix will still accept unencoded attribute values.  Files:
	smtpd/smtpd.c, smtpd/smtpd_proxy.c, smtp/smtp_proto.c.

20060611

	Robustness: additional sanity checks for common database
	routines. Viktor Dukhovni. File: global/db_common.c.

	Portability: LDAP 2.3 API support. Viktor Dukhovni. File:
	global/dict_ldap.c.

	Security: the PostgreSQL client was updated after the
	PostgreSQL developers made major database API changes in
	response to PostgreSQL security issues. This breaks support
	for PGSQL versions prior to 8.1.4, 8.0.8, 7.4.13, and 7.3.15.
	Support for these requires major code changes which are not
	possible in the time that is left for the Postfix 2.3 stable
	release.

	Specific PostgreSQL client changes: use connection-aware
	quoting, and more robust PQexec() result handling.  Previous
	versions of the dict_pgsql driver didn't check the status
	of the result pointer, and certain exceptional events can
	be mis-interpreted as an empty result set.  Fixes by Leandro
	Santi. File: global/dict_pgsql.c.

20060612

	Changed smtp security level parsing and level->name conversion
	to use name_code(3). Victor Duchovni.

	Implemented new smtp_tls_security_level parameter, to replace
	the unnecessarily complex smtp_use_tls, smtp_enforce_tls
	and smtp_tls_enforce_peername parameters. The main.cf
	security level settings are now consistent with the new
	policy table. Victor Duchovni.

	The smtp_sasl_tls_verified_security_options feature is not
	yet complete, added #ifdef SNAPSHOT and changed documentation
	to delay introduction until Postfix 2.4. Victor Duchovni.

20060614

	Merged in Victor's work including the new TLS policy table
	and a complete set of configuration parameters for the LMTP
	personality of the unified SMTP/LMTP client.

	Allow mandatory TLS encryption with LMTP over UNIX-domain
	sockets. Victor Duchovni.

	Safety: improved code to avoid I/O on connections after the
	TLS handshake fails. Victor Duchovni.

20060615

	Cosmetic patch for const strings. Stefan Huehner.

	Other cosmetic changes, mainly whitespace.

20060616

	The qshape.pl script was updated for the pointer records
	that were introduced to support message content modification
	by Milter applications. Victor Duchovni.

20060620

	Feature: Substantially better cipherlist specification
	interface and support for anonymous ciphers when certificates
	are not needed. The primary interface in main.cf and the
	policy table selects one of 5 grades for mandatory TLS with
	smtp(8) or lmtp(8) or for all TLS sessions with smtpd(8).
	The levels are "high", "medium" (or better), "low" (or
	better), "export" (or better) and "null".  The underlying
	definitions of these levels are configurable, but users are
	strongly encouraged to not change those definitions. Victor
	Duchovni.

20060626

	Bugfix: the Milter reply syntax checker was off by one.
	File: milter/milter8.c.

	Workaround: disable SMTP connection cache lookup by server
	IP address when the tls_per_site policy table is enabled.
	This is a workaround for a shortcoming in the SMTP connection
	cache implementation, which retrieves the server hostname
	from the cached connection. Since this server name is not
	obtained in a secure manner, it must not be allowed to
	control the tls_per_site policy. File: smtp/smtp_reuse.c.

20060627

	Cleanup: mumble_mandatory_tls_mumble parameters renamed to
	mumble_tls_mandatory_mumble; added _mandatory_ qualifier
	to names of parameters that affect only mandatory TLS.

20060630

	Features promoted from SNAPSHOT to STABLE: the "sleep"
	pseudo restriction; Postfix daemons now read the local
	timezone file before chrooting; trivial-rewrite now detects
	table changes every 10 seconds, so it restarts more timely.

	Features that stay #ifdef SNAPSHOT: tcp_table,
	lmtp_sasl_tls_verified_security_options, and
	smtp_sasl_tls_verified_security_options.

	Compatibility: Sendmail does not send its own Received:
	header to Milter applications. Offsets in header replace
	requests are relative to the message content as received
	(i.e. without our own Received: header), while offsets in
	header insert requests are relative to the message as
	delivered (i.e. they include our own Received: header).
	This explains why dk-filter would sign our own Received:
	header but place the signature between our own Received:
	header and the rest of the message, violating the draft
	domainkeys spec.

20060702

	Cleanup: more graceful handling of queue file read/write
	errors while processing milter message modification requests.
	Files: cleanup/cleanup_milter.c, milter/milter8.c.

20060703

	Debugging: the Postfix milter client gives more context
	when it experiences trouble while talking to an uncooperative
	Milter application. File: milter/milter8.c.

	Compatibility: with OpenBSD 2.7 and later, the alias file
	is now in /etc/mail/aliases.

20060704

	Bugfix: the Milter client skipped zero-length body lines.
	File: milter/milter8.c.

	Feature (just this one): RFC 3834 "Auto-Submitted:" message
	header in DSNs.  File: bounce/bounce_notify_util.c.

20060705

	Portability: LP64 systems required a few ssize_t->int casts
	in debug logging statements.  Files: milter/test_milter.c,
	cleanup/cleanup_milter.c.

	Cleanup: comments, error messages, and crumbling interfaces.

20060707

	Workaround: apparently, Solaris gettimeofday() can return
	out-of range microsecond values.  File: src/global/log_adhoc.c.

	Robustness: the SMTPD policy client now encodes the
	ccert_subject and ccert-issuer attributes as xtext.  Some
	characters are replaced by +XX, where XX is the two-digit
	hexadecimal code for the character value.  File:
	smtpd/smtpd_check.c.

	Safety: the SMTP/LMTP client now defers delivery when a
	SASL password exists, but the server does not offer SASL
	authentication. Mail could be rejected otherwise. This may
	become an issue now that Postfix retries delivery in plaintext
	after an opportunistic TLS handshake fails. Specify
	"smtp_sasl_auth_enforce = no" to deliver mail anyway.  File:
	smtp/smtp_proto.c. See workaround 20060711 for sender-dependent
	SASL passwords. This was undone with the 20060719 workaround.

20060709

	Cleanup: the new single smtpd_tls_security_level parameter
	obsoletes the multiple smtpd_use_tls and smtpd_enforce_tls
	parameters. This is done for consistency with the Postfix
	SMTP client. In the Postfix SMTP server, the levels "verify"
	and "secure" are currently not applicable, and are treated
	as "encrypt", after logging a warning. Files: smtpd/smtpd.c,
	tls/tls_level.c, smtp/smtp_session.c.

	Compatibility: don't send the first (blank) body line to
	Milter applications.  This broke domain key etc. signatures
	when verified by non-Postfix MTAs.  File: milter/milter8.c.

20060710

	Cleanup: more consistency between smtpd(8) and smtp(8) TLS
	configuration interfaces: smtpd_tls_mandatory_exclude_ciphers,
	smtpd_tls_mandatory_ciphers, smtpd_tls_mandatory_protocols.
	By Victor. Files:smtpd/smtpd.c.

	Cleanup: to support domainkey signing of bounces and
	Postmaster notices, enable content inspection of Postfix-
	generated mail with the new internal_mail_filter_classes
	feature.  This is disabled by default, because it is not
	yet safe enough. Files: global/int_filt.[hc] and everything
	that calls post_mail_fopen*().

20060711

	Cleanup: smtpd_tls_mumble -> smtpd_tls_mandatory_mumble,
	and finer control over the Postfix SMTP server TLS ciphers,
	all this for consistency with the same functionality in the
	Postfix SMTP client. Victor Duchovni.

	Compatibility: Sendmail's milter client handles whitespace
	after the header label and ":" in an interesting manner.
	It eats one space (not tab). File: milter/milter8.c.

	Workaround: if sender-dependent SASL passwords are enabled,
	don't defer delivery when a SASL password exists but the
	server doesn't announce SASL support. File: smtp/smtp_proto.c.
	This was undone with the 20060719 workaround.

	Cleanup: format of cleanup milter reject messages.  File:
	cleanup_milter.c.

	Bugfix: file/memory leak if a transfer of multiple milters
	from smtpd to cleanup broke in the middle.  Found by Coverity.
	File: milter/milter.c.

20060716

	Bugfix: "sendmail -bs" panic caused by a missing
	SMTPD_STATE_ALONE() guard before a milter_abort() call.
	File: smtpd/smtpd.c.

	Bugfix (bug introduced with Postfix 2.2): the Postfix SMTP
	client enforced Mandatory TLS only when talking to an ESMTP
	server; enforcement did not happen if Postfix could somehow
	be forced to send HELO instead of EHLO.  Victor Duchovni.
	File: src/smtp/smtp_proto.c.

20060718

	Bugfix (bug introduced 20060711): null pointer bug when
	rejecting SMTP mail with Milter application.  File:
	cleanup/cleanup_milter.c.

	Workaround (problem introduced in 200605/200606 TLS update):
	the Postfix SMTP server now issues TLS session IDs even
	when TLS session caching is turned off, otherwise MS Outlook
	fails to deliver mail. There may also be interoperability
	issues with other MTAs that we haven't discovered yet.
	Specify "smtpd_tls_always_issue_session_ids = no" to disable
	the workaround. Victor Duchovni. Files: smtpd/smtpd.c,
	tls/tls_server.c.

20060719

	Cleanup: the smtp_sasl_auth_enforce feature is gone. It was
	meant to work around a problem that was introduced with
	plaintext fallback after a failed TLS handshake.  Unfortunately,
	it created more problems than it solved. We now address the
	underlying problem more directly as described next. File:
	smtp/smtp_proto.c.

	Safety: don't fall back to plaintext delivery after failed
	TLS handshake, when the Postfix SMTP client would have
	attempted to log in with SASL after successful TLS handshake.
	This avoids undesirable behavior regardless of whether the
	server does support SASL over plaintext (unexpected password
	disclosure) and whether the server doesn't support SASL
	over plaintext (insufficient mail relay permission).  Files:
	smtp/smtp_connect.c, smtp/smtp_session.c, smtp/smtp_proto.c.

20060720

	Compatibility: replace %% in milter replies by %, and strip
	single (i.e. invalid) % characters. File: milter/milter8.c.

	Compatibility: $_ macro support for Milter applications.
	Files: smtpd/smtpd.c, smtpd/smtpd_milter.c,
	cleanup/cleanup_state.c, cleanup/cleanup_milter.c.

20060721

	Safety: disable Milter processing after "postsuper -r".  If
	the mail has been filtered there is no need to do it again.
	Moreover, when mail has passed through an external content
	filter, we don't have sufficient information to reproduce
	the exact same SMTP events and Sendmail macros that Milters
	received when the mail originally arrived in Postfix.  This
	change does not affect Milter applications that run behind
	an after-queue content filter. File: pickup/pickup.c.

	Bugfix: Milters received a truncated ORCPT=xxx parameter
	due to destructive parsing of something that didn't have
	to be preserved before Milter support was added to Postfix.
	File: smtpd/smtpd.c.

20060724

	Bugfix: when updating the same header multiple times, the
	Postfix Milter client created a queue file that caused
	delivery agents to loop.  File: cleanup/cleanup_milter.c.

20060725

	Bugfix: damaged queue file record after a Milter request
	to modify a message header when 1) it was the last header
	in the unmodified message, and 2) the old header was less
	than 15 characters long.  File: cleanup/cleanup_milter.c.

	Bugfix: don't panic in smtp_rcpt_cleanup() after detecting
	a damaged queue file record. File: smtp/smtp_proto.c.

20060726

	Bugfix: the 20051013 change to enforce the message size
	limit in the SMTP server didn't work for size limits close
	enough to INT_MAX. File: smtpd/smtpd.c.

	Bugfix (introduced Postfix 2.3): after an SMTP client was
	rejected with "smtpd_delay_reject = no", the SMTP server
	would panic as it generated spurious Milter requests for
	unrecognized commands.  File: smtpd/smtpd.c.

20060727

	Cleanup: change redundant milter_abort() and milter_disc_event()
	calls into NO-OPs.  This avoids unnecessary panic() events
	for completely harmless conditions.  File: milter/milter8.c.

20060805

	Bugfix (introduced Postfix 2.3): #ifdef damage caused
	smtp_sasl_start() to be invoked twice. Reported by C-J
	Lofstedt. File: smtp/smtp_sasl_proto.c.

20060806

	Postfix no longer announces its name in delivery status
	notifications.  Users believe that Wietse provides a free
	helpdesk service that solves all their email problems.
	Credits to Jonathan Balester.  File: bounce/bounce_templates.c.

20060807

	Bugfix (introduced Postfix 2.2): when upgrading from Postfix
	< 2.2 with the third-party TLS patch, the post-install
	upgrade procedure didn't put a "?" in the existing tlsmgr
	entry, causing tlsmgr to repeatedly start and exit when TLS
	support was not compiled in.  File: conf/post-install.

20060812

	Bugfix (introduced < Postfix alpha): safety mechanism in
	mail_date() didn't work.  Found in code review.  File:
	global/mail_date.c.

20060817

	Test programs for host address->name and name->address
	lookups to debug name service inconsistencies, typically
	when the Postfix SMTP server claims that a hostname is
	"unknown".  Files: auxiliary/name-addr-test/*.

20060822

	Added missing logging for "message to large" etc.  Files:
	smtpd/smtpd.c, cleanup/cleanup_milter.c.

20060823

	Bugfix (introduced Postfix 2.2): segfault when vstream_fclose()
	attempted to flush unwritten output, after vstream_fdclose()
	had already disconnected the stream from its file descriptor.
	File: util/vstream.c.

	Bugfix (introduced Postfix 2.2): vstream_fdclose() did not
	flush unwritten output before disconnecting a stream from
	its file descriptor(s).  File: util/vstream.c.

	Feature: smtp-sink can capture mail to file, either as one
	individual message per file, or as multiple messages per
	file.  After an initial implementation by Weidong Cui. File:
	smtpstone/smtp-sink.c.

	Bugfix (introduced < Postfix alpha): smtp-sink did not
	correctly recognize DOT-CR-LF immediately after DATA. File:
	smtpstone/smtp-sink.c.

	Cleanup: smtp-sink now requires that MAIL FROM, RCPT TO and
	DATA be send in the correct order. This simplified the
	implementation of the capture to file feature. File:
	smtpstone/smtp-sink.c.

20050824

	Portability: inside functions, GCC 4 refuses forward
	declarations of static functions.  File: smtpstone/smtp-sink.c.

20060825

	Bugfix (introduced Postfix 2.3): with headers-only mail, a
	Milter "header insert" action corrupted the queue file. The
	cleanup server executed some end-of-body action before the
	end-of-header actions. File: cleanup/cleanup_message.c.

	Robustness: mail delivery agents now detect loops in queue
	files. Files with too many backward jumps are saved to the
	"corrupt" directory.  File: global/record.c.

20060831

	Bugfix (introduced with initial implementation): missing
	"dict_errno = 0" caused mis-leading error messages after
	non-error lookup failure.  Victor Duchovni.  File:
	util/dict_cidr.c.

	Robustness: the default TLS cipher lists were changed from
	!foo:ALL into ALL:!foo. Victor Duchovni.  Files:
	global/mail_params.h and documentation.

20060902

	Bugfix (introduced Postfix 2.3): the LMTP client stripped
	"inet": from the next-hop destination, but still used the
	complete next-hop from the delivery request. File:
	smtp/smtp_connect.c.

20060903

	Cleanup: record loop detection.  File: global/record.c.

20060929

	Workaround: AIX 5.[1-3] getaddrinfo() creates socket address
	structures with a non-zero port value. This breaks the
	smtp_bind_address etc. features, and breaks inet_interfaces
	settings with only one IP address.  Problem reported by
	Hamish Marson.  Files: util/sock_addr.[hc], util/myaddrinfo.c.

	Bugfix (introduced with the Postfix TLS patch): memory leak
	in verify_extract_peer(). The OpenSSL documentation provides
	no information on how subjectAltNames are managed.  Sam
	Rushing, ironport.  File: tls/tls_client.c.

	Bugfix (introduced with Postfix 2.2): smtp_generic_maps 
	turned on MIME conversion. File: smtp/smtp_proto.c.

	Workaround: don't send SIZE information in the MAIL FROM
	command when message content will be subject to 8bit ->
	quoted-printable conversion.  File: smtp/smtp_proto.c.

20061002

	Compatibility: Sendmail now invokes the Milter connect
	action with the verified hostname instead of the name
	obtained with PTR lookup. File: smtpd/smtpd.c.

20061004

	Cleanup: force space between mailq queueid+status and file
	size items. File: showq/showq.c.

20061005

	Cleanup: make CISCO PIX bug workarounds configurable.  This
	introduces new parameters: smtp_pix_workarounds (default:
	disable_esmtp, delay_dotcrlf) and smtp_pix_workaround_maps
	(workarounds indexed by server IP address).  The default
	settings are backwards compatible. File: smtp/smtp.c,
	smtp/smtp_proto.c.

20061006

	Workaround: include the smtpd(8) service name when searching
	the TLS session cache, to avoid cross-talk between multiple
	master.cf entries. This does not eliminate cross-talk between
	multiple (x)inetd.conf entries. Victor Duchovni. Files:
	smtpd/smtpd.c, tls/tls_server.c.

20061015

	Cleanup: convert the Milter {mail_addr} and {rcpt_addr}
	macro values to external form. File: smtpd/smtpd_milter.c.

	Cleanup: the Milter {mail_addr} and {rcpt_addr} macros are
	now available with non-SMTP mail. File: cleanup/cleanup_milter.c.

	Cleanup: convert addresses in Milter recipient add/delete
	requests to internal form.  File: cleanup/cleanup_milter.c.

	Cleanup: with non-SMTP mail, convert addresses in simulated
	MAIL FROM and RCPT TO events to external form.  File:
	cleanup/cleanup_milter.c.

20061017

	Cleanup: removed spurious warning when the cleanup server
	attempts to bounce mail with soft_bounce=yes. Problem
	reported by Ralf Hildebrandt. File: cleanup/cleanup_bounce.c.

	Bugfix: null pointer bug when receiving a non-protocol
	response on a cached SMTP/LMTP connection.  Report by Brian
	Kantor.  Fix by Victor Duchovni.  File: smtp/smtp_reuse.c.

20061106

	Feature: new retry delivery agent, to avoid the synchronous
	defer service client in the queue manager. This code is
	co-located with the error(8) server. File: error/error.c.

	Performance: the queue manager could spend too much time
	in the synchronous defer service client, causing the watchdog
	timer to go off.  Where possible, the queue manager now
	bounces or defers recipients asynchronously, by routing
	them to the error or the retry delivery agent. Code by
	Wietse and Patrik Rak. Files: global/recipient_list.c,
	*qmgr/qmgr_error.c, *qmgr/qmgr_defer.c, *qmgr/qmgr_entry.c,
	*qmgr/qmgr_deliver.c, *qmgr/qmgr_message.c.

	Performance: refined recipient and job grouping, and more
	agressive early refill of in-memory recipients to prevent
	a worst-case scenario where the queue manager became starved
	until after the last batch of slow in-memory recipients of
	jumbo multi-recipient mail. Code by Patrik Rak.  Files:
	global/mail_conf_time.c, qmgr/qmgr_message.c, qmgr/qmgr.c,
	qmgr/qmgr.h, qmgr/qmgr_entry.c, qmgr/qmgr_job.c,
	qmgr/qmgr_message.c, qmgr/qmgr_transport.c.

20061113

	Bugfix: the Postfix install/upgrade procedure broke with
	non-default config_directory. File: conf/post-install.

20061115

	Bugfix: null pointer bug in end-of-header Milter action
	when the last header line is too large.  Reported by Mark
	Martinec. The root of the problem is that the MIME state
	engine may execute up to three call-back functions when it
	reaches the end of the headers, before it returns to the
	caller; as long as call-backs return no result, each call-back
	has to check for itself if a previous call-back ran into a
	problem.  File: milter/milter8.c.

	Workaround: reduce effective header_size_limit to 60000
	when Milter inspection is enabled, to avoid breaking the
	Milter protocol request length limit. File:
	cleanup/cleanup_message.c.

20061123

	Safety: don't read more than 5000 recipients at a time, to
	avoid spending too much time away from interrupts.  File:
	qmgr/qmgr_message.c.

20061201

	Workaround: don't complain with "Error 0" in the trivial-rewrite,
	verify, proxymap or connection cache client when the server
	exits after the client sends its request. We still complain,
	however, when the problem persists.  Files: global/rewrite_clnt.c,
	global/resolve_clnt.c, global/verify_clnt.c, global/scache_clnt.c,
	global/dict_proxy.c.

	Safety: the header_size_limit is now enforced more strictly,
	to avoid inter-operability problems with the Milter protocol.
	Long headers are truncated at a line boundary if possible,
	otherwise they are cut between line boundaries. File:
	cleanup/cleanup_out.c.

20061203

	Bugfix (introduced with Postfix 2.2): with SMTP server
	tarpit delays of smtp_rset_timeout or larger, the SMTP
	client could get out of sync with the server while reusing
	a connection.  The symptoms were "recipient rejected .. in
	reply to DATA".  Fix by Victor Duchovni and Wietse.  Files:
	smtp/smtp_proto.c, smtp/smtp_connect.c.

	Robustness: the vbuf and vstream documentation claimed that
	their *error() macros reported timeout errors, but they
	didn't really. The implementation was fixed, and redundant
	vstream_ftimeout() calls were removed. As a result, many
	Postfix daemons now properly detect write timeout errors
	on internal connections.  Files: util/vbuf.h.

	Workaround: some broken SMTP servers reply and hang up in
	the middle of DATA. The Postfix SMTP client now stops sending
	and tries to receive the server response. This can help to
	avoid repeated delivery attempts. Initial implementation
	by Wietse, later work by Victor Duchovni. Files:
	smtp/smtp_proto.c, smtpstone/smtp-sink.c, util/vstream.c,
	plus trivial mods for code thatr calls vstream_fpurge().

20061204

	Compatibility: The Postfix installation/upgrade procedure
	no longer sets "unknown_local_recipient_code = 450" in
	main.cf. This was a safety net for upgrades from Postfix
	1.x. Four years later is no longer needed. File:
	conf/post-install.

	Cleanup: removed vstream_fclose() error warning in the code
	that disconnects from a delivery agent. There is no need
	to report errors here because they would already be reported
	earlier.  Files: *qmgr/qmgr_deliver.c.

	Robustness: "kill me after N seconds" feature to ensure
	that a daemon process does not get stuck while preparing
	for exit after signal arrival. File: util/killme_after.[hc],
	util/watchdog.c, master/master_sig.c.

20061206

	Robustness: low-cost re-entrancy guard that allows daemons
	to safely call msg_fatal() etc. from a signal handler,
	without risking memory corruption, or deadlock on Redhat
	Linux.  This works provided that the signal handler terminates
	the process. In that special case we need not guarantee
	after-the-fact consistency of the thread that was interrupted.
	File: util/msg_output.c.

	Robustness: replace exit() calls by _exit(). File: util/msg.c,
	bounce/bounce_cleanup.c.

20061207

	Workaround: on systems with usable futimes() or equivalent
	(Solaris, *BSD, MacOS, but not Linux), always explicitly
	set the queue file last modification time stamps while
	creating a queue file. With this, Postfix can avoid logging
	warnings when the file system clock is ahead of the local
	clock.  Clock skew can be a problem, because Postfix does
	not deliver mail until the local clock catches up with the
	queue file's last modification time stamp.  File:
	global/mail_stream.c.

	Workaround: on systems without usable futimes() or equivalent,
	log a warning when the file system clock is more than 100
	seconds behind the local clock. This does not cause mail
	delivery problems, but it just looks silly in message
	headers. File: global/mail_stream.c.

	On systems without usable futimes() (Linux, and ancient
	versions of Solaris, SunOS and *BSD) Postfix will keep using
	the slower utime() system call to update queue file time
	stamps when the file system clock is off with respect to
	the local system clock.

	Compatibility with Postfix < 2.3: undo the change to bounce
	instead of defer after pipe-to-command delivery fails with
	a signal. File: global/pipe_command.c.

20061208

	Workaround: apparently, some mail software removes or hides
	"<postmaster>" in the Postfix bounce text, because it
	processes the text as if it were HTML. This confuses users.
	The bounce template has been updated to remove the < and
	>.  File: bounce/bounce_templates.c.

	Cleanup: when smtp_generic_maps is turned on, don't parse
	MIME structures in the message body. Victor Duchovni. File:
	smtp/smtp_proto.c.

20061210

	Cleanup: streamline the signal handler reentrancy protections,
	and document under what conditions these protections work,
	with REENTRANCY sections in the relevant man pages. Files:
	util/vbuf_print.c.  util/msg.c, util/msg_output.c.

20061211

	Cleanup: when doing server access control by the remote TLS
	client fingerprint, do not require client certificate
	verification.  Victor Duchovni.  File: smtpd/smtpd_check.c.

	Safety: when the remote TLS client certificate isn't verified,
	don't send ccert_subject and ccert_issuer attributes in
	check_policy_service requests. Victor Duchovni. File:
	smtpd/smtpd_check.c.

	Bugfix: the postconf command still complained about an
	unqualified machine name, because it was not updated with
	the 20050513 change that introduced a default "mydomain =
	localdomain".  File: postconf/postconf.c.

20061213

	Bugfix: race condition in "ETRN site", "sendmail -qRsite"
	and "postqueue -s site". When the command arrived while an
	incoming queue scan was already in progress, mail could
	stay deferred instead of being flushed. The fix was to
	unthrottle the queue manager before moving files from the
	deferred queue to the incoming queue.  Files: flush/flush.c,
	qmgr/qmgr_scan.c.

	Cleanup: the sendmail and postqueue commands no longer
	terminate with a non-standard error status after a run-time
	error in some Postfix internal routine (typically, some
	essential file is not accessible, or the system is out of
	memory). Files: sendmail/sendmail.c, postqueue/postqueue.c.

	Feature: "sendmail -qIqueueid" and "postqueue -i queueid"
	to flush a specific queue file. Files: sendmail/sendmail.c,
	postqueue/postqueue.c, global/flush_clnt.c, flush/flush.c.

20061214

	Performance: "sendmail -qIqueueid" and "postqueue -i queueid"
	unthrottle only the necessary message delivery transports
	and queues. The unthrottle request now is propagated to the
	queue manager via queue file group read permission bits.
	Based on initial implementation by Victor Duchovni.  Files:
	flush/flush.c, *qmgr/qmgr.c, *qmgr/qmgr_scan.c,
	*qmgr/qmgr_active.c, *qmgr/qmgr_message.c.

20061220

	Workaround: PMilter 0.95 does not deliver SMFIC_EOB+data
	to the application as SMFIC_BODY+data followed by SMFIC_EOB.
	To avoid compatibility problems, Postfix now sends
	SMFIC_BODY+data followed by SMFIC_EOB.  File: milter/milter8.c.

	Bugfix (introduced with Postfix 2.3): when inserting
	Milter-generated headers at increasing positions in a
	message, a later header could end up at a previously used
	insertion point.  Thus, inserting headers at positions (N,
	N+M) could work as if (N, N) had been specified. Problem
	reported by Mark Martinec.  File: milter/milter8.c.

20061221

	Feature: time unit suffix support in _command_time_limit.
	Files: pipe/pipe.c, spawn/spawn.c.

20061227

	Bugfix (introduced with Postfix 2.3): the MX hostname syntax
	check was skipped with reject_unknown_helo_hostname and
	reject_unknown_sender/recipient_domain, so that Postfix
	would still accept mail from domains with a zero-length MX
	hostname.  File: smtpd/smtpd_check.c.

20061229

	Cleanup: use separate TLS_LEGACY_README to document the old
	TLS user interface. This will simplify TLS_README dramatically.

	Cleanup: untangled spaghetti code. File: util/inet_listen.c.

20070104

	Bugfix (introduced Postfix 2.3): when creating an alias map
	on a NIS-enabled system, don't case-fold the YP_MASTER_NAME
	and YP_LAST_MODIFIED lookup keys. This requires that an
	application can turn on/off case folding on the fly.  Files:
	postalias/postalias.c, global/dict_mumble.c, util/dict_mumble.c,
	proxymap/proxymap.c.

	Cleanup: after the above revision of the proxymap protocol,
	the proxymap server can now share the same map with clients
	that have only minor differences in dictionary open/access
	options.

20070105

	Performance: pipeline of pending delivery agent connections,
	to improve Linux/Solaris mail delivery performance by another
	10% while going down-hill with the wind from behind. Design
	and implementation Victor and Wietse. Files: *qmgr/qmgr.c,
	*qmgr/qmgr.h, *qmgr/qmgr_transport.c.

20070106

	Cleanup: eliminate the Linux/Solaris "wait for accept()"
	stage from the queue manager to delivery agent protocol.
	This alone achieves 99.99% of the Linux/Solaris speed up
	from the preceding change. The pending connection pipeline
	takes care of the rest.  Tested on Linux kernels dating
	back to 2.0.27 (that's more than 10 years ago).  Files:
	*qmgr/qmgr_transport.c.

20070112

	Bugfix (introduced 20011008): after return from nested
	access restriction, possible longjump into exited stack
	frame upon configuration error or table lookup error. Victor
	Duchovni.  Files: smtpd/smtpd_check.c.

	Workaround: don't insert header/body blank line separator
	in malformed attachments, to avoid breaking digital signatures.
	Switch from header to body state, for robust MIME parsing.
	People concerned about MIME evasion can use a MIME normalizer
	to corrupt their user's legitimate email.  File:
	global/mime_state.c.

20070114

	Feature: body replacement support for Milter applications.
	Postfix 2.3 and older 2.4 versions will be able to deliver
	body-replaced queue files, but will report the message size
	as it was before the body was replaced.  Files: milter/milter8.c,
	cleanup/cleanup_milter.c, cleanup/cleanup_body_region.c.

20070117

	Cleanup: reusable infrastructure for body replacement.
	Files: cleanup/cleanup_body_edit.c, cleanup/cleanup_region.c.

20070118

	Bugfix: match lists didn't implement ![ipv6address].  Problem
	reported by Paulo Pacheco. File: util/match_list.c.

	Cleanup: revised the matchlist "!" support, added support
	for !/file/name, and updated the documentation. File:
	util/match_list.c.

20070119-21

	Cleanup: pad short message headers with a filler record,
	so that the result is never shorter than a pointer record.
	This immensely simplified the support for Milter header
	modification requests: three complex loops could be replaced
	by one simpler loop.  The DTXT record type was re-purposed
	from "deleted header text" to "short header padding", keeping
	the change backwards compatible.  Files: cleanup/cleanup_out.c,
	cleanup/cleanup_milter.c, global/record.c.

	Cleanup: the Milter "add recipient" action always added the
	recipient to the initial envelope segment, causing added
	recipients to be separate from "sendmail -t" recipients.
	This violated design, without impact on delivery (always_bcc
	recipient are always at the end of the queue file even when
	all other recipients are in the initial segment).  File:
	global/rec_types.h.

20070123

	Workaround: OpenSSL falsely concludes that AES256 support
	is present when only AES128 is available.  Code by Victor
	Duchovni.  File: tls/tls_misc.c.

20070125

	Disable workaround pending completion of updated TLS]
	support in non-production releases.

20070131

	Assorted code cleanup, portability fixes/workarounds, and
	minor updates: global/dict_ldap.c, mantools/postlink,
	tlsmgs/tlsmgr.c, conf/master.cf. LaMont Jones.

20070101

	Portability: GNU Hurd support for multiple kernel environments.
	LaMont Jones. Files: util/sys_defs.h, makedefs.

	Cleanup: some default settings were adjusted to better fit
	today's environment: queue_run_delay and minimal_backoff_time
	were reduced from 1000s to 300s, so that deliveries are
	retried earlier after the first failure; ipc_idle was reduced
	from 100s to 5s, so that tlsmgr and scache clients will
	more quickly release unused file handles. Files:
	global/mail_params.h, proto/postconf.5.html

20070202

	Catch-up: FreeBSD kqueue support. File: util/events.c.

20070205

	System-V poll(2) support. This is now the preferred method
	to test a single file descriptor on sufficiently recent
	versions of FreeBSD, NetBSD, OpenBSD, Solaris and Linux;
	other systems will be added as evidence becomes available
	of usable poll(2) implementations. Files: util/read_wait.c,
	util/write_wait.c, util/readble.c, util/writable.c.

	Streamlined the event_enable_read/write implementation to
	speed up smtp-source performance, by eliminating expensive
	kqueue/devpoll/epoll system calls when only the application
	call-back information changes. On FreeBSD, smtp-sink/source
	tests now run 5% faster than with the old select(2) based
	implementation.  File util/events.c.

20070206

	Catch-up: Solaris /dev/poll support. File: util/events.c.

	Bugfix (introduced 20060823): initial state was not in state
	machine, causing memory access outside the lookup table.
	File: smtpstone/smtp-sink.c.

20070210

	Catch-up: Linux epoll support. File: util/events.c.

20070211

	Polished the kqueue/devpoll/epoll support; this is now
	enabled by default on sufficiently recent versions of
	FreeBSD, NetBSD, OpenBSD, Solaris and Linux; other systems
	will be added as evidence becomes available of usable
	implementations. File: util/events.c.

20070212

	Further polish: removed some typos from new code in the
	events.c handler, undid some unnecessary changes to the
	{read,write}{_wait,able}.c modules, and addressed Victor's
	paranoia for multi-client servers with a thousand clients
	while linked with library routines that can't handle file
	descriptors >= FD_SETSIZE.

	Cleanup: while debugging the new events.c handler, removed
	an unnecessary "write after connect" call-back event. File:
	global/post_mail.c.

20070214

	Robustness: in the queue manager keep a number of free file
	descriptor slots at the low end, to work around library
	routines that can't handle file descriptors >= FD_SETSIZE.
	Files: *qmgr/qmgr_transport.c, util/vstream.[hc]

20070215

	Bugfix (introduced 20070114 with Milter body edit support):
	the cleanup server terminated with a fatal error when SMTP
	mail exceeded the message size limit, instead of handling
	it as a non-fatal error. Files: cleanup/cleanup_extracted.c,
	cleanup/cleanup_final.c, cleanup/cleanup_bounce.c,
	cleanup/cleanup_api.c.

20070217

	Streamline the compile time selection of event handling
	styles, replacing multiple on/off macros by just one
	multi-valued macro. Files: util/sys_defs.h, util/events.c,
	master/multi_server.c, *qmgr/qmgr_transport.c.

20070220

	Work-around: Disable SSL/TLS ciphers when the underlying
	symmetric algorithm is not available in the OpenSSL crypto
	library at the required bit strength. Problem observed with
	SunOS 5.10's bundled OpenSSL 0.9.7 and AES 256. Also possible
	with OpenSSL 0.9.8 and CAMELLIA 256. Root cause fixed in
	upcoming OpenSSL 0.9.7m, 0.9.8e and 0.9.9 releases. Victor
	Duchovni, Morgan Stanley. Files: src/smtp/smtp_proto.c,
	src/smtpd/smtpd.c, src/tls/tls.h, src/tls/tls_client.c,
	src/tls/tls_misc.c and src/tls/tls_server.c.

20070222

	Workaround: delayed "postfix reload" with ancient FreeBSD4
	kqueue implementations, causing the first external or
	internal clients after "postfix reload" to experience a
	quick disconnect.  Apparently, these kqueue implementations
	do not deliver a read notification when the master closes
	the per-service shared master/child status pipe (even when
	there is only one child; note that the master keeps a handle
	to both ends of each status pipe).  A child process remains
	ignorant that the status pipe was closed until the arrival
	of the next client request, and then terminates.  The
	workaround is to ignore master status write errors before
	handling a service request.  Files: master/*_server.c.

	Cleanup: fix race condition that caused unnecessary "premature
	end-of-input" warning messages when "postfix reload" was
	issued on a busy mail server. Files: util/attr_scan*c.

20070223

	Cleanup: syslog_name now works as documented with both
	daemons and commands (including set-gid commands).  Files:
	global/mail_task.c postlog/postlog.c, global/mail_version.h,
	sendmail/sendmail.c, postsuper/postsuper.c, postalias/postalias.c,
	postmap/postmap.c, postqueue/postqueue.c, postdrop/postdrop.c,
	master/trigger_server.c, master/single_server.c,
	master/multi_server.c.

20070224

	Workaround: GNU POP3D creates a new mailbox and deletes the
	old one. Postfix now backs off and retries delivery later,
	instead of appending mail to a deleted file.  To minimize
	the use of this workaround, Postfix now by default creates
	mailbox dotlock files on all systems, and creates dotlock
	files before opening mailbox files.  Files: util/sys_defs.h,
	global/mbox_open.c.

20070301

	Workaround: updated workaround for broken Solaris accept().
	File: util/inet_listen.c.

	Workaround: on some FreeBSD versions, accept(2) can fail
	with a bogus EINVAL error. We now allow accept(2) to fail
	for a limited number of times before terminating the process.
	Files: master/single_server.c, master/multi_server.c.

20070306

	Bugfix (introduced with Postfix 2.3 Milter support): postdrop
	reported "illegal seek" instead of "file too large".  File:
	postdrop/postdrop.c.

20070310

	Cleanup: specify "undisclosed_recipients_header =" to disable
	Postfix's "To: undisclosed-recipients:;" header for mail
	that lists no recipient. The To: header is not required as
	of RFC 2822.  The undisclosed_recipients_header parameter
	value can now be an empty string, a value that was not
	allowed with earlier Postfix versions. With Postfix 2.5 it
	will be empty by default. Files: cleanup/cleanup.c,
	cleanup/cleanup_message.c.

20070312

	Backwards compatibility: don't pad short message header
	records when Milter support is turned off. This maintains
	compatibility with Postfix versions that pre-date Milter
	support. File: cleanup/cleanup_out.c.

20070314

	Bitrot: move the "don't run this daemon by hand" message
	before other tests. Files: master/*server.c.

20070315

	Bitrot: New OpenLDAP APIs deprecate simplified interfaces,
	that are the only ones available in Sun's LDAP SDK. Define
	suitable macros that work with new OpenLDAP and Sun's code.
	Victor Duchovni, Morgan Stanley. File: src/global/dict_ldap.c

	Cleanup: new "leaf" and "terminal" result attributes support
	fine-tuning of LDAP group expansion, and provide a solution
	for the problem case where DN recursion returns both the
	group address and the addresses of the member objects.
	Victor Duchovni, Morgan Stanley.  Files: src/global/dict_ldap.c,
	proto/LDAP_README.html, proto/ldap_table

20070317

	Idioten Sicherheit: stamp every executable file and every
	core dump file with "mail_version=xxxxx". Adding version
	stamps and checks to every IPC message is too much change
	after code freeze, and requires too much time for testing.
	File: src/global/mail_version.h and every main program file.

20070320

	Bugfix (introduced between 20070120 and 20070121): the
	cleanup server stored no "delayed mail warning" queue file
	records with "sendmail -t", and no header_checks filter/redirect
	records or content encoding records with other mail.  File:
	global/rec_type.h.

20070321

	Bugfix (introduced 20070224): local(8) or virtual(8) could
	log a misleading error message after failure to open a
	mailbox file. File: global/mbox_open.c.

	Bugfix (code should have been updated 20070104): the proxymap
	client did not propagate changes in case folding flags.
	Currently, nothing in Postfix uses this functionality.
	File: global/dict_proxy.c.

20070325

	Bugfix: postfix-install didn't work for symlink or hardlink
	targets, when the parent directory had a value of "no".

20070326

	Workaround: Eric Raymond's man page formatters don't handle
	low-level *roff .in or .ti controls. We now use .nf and .fi
	instead. Files: many.

20070331 

	Bugfix (introduced Postfix 2.3): segfault with HOLD action
	in access/header_checks/body_checks on 64-bit platforms.
	File: cleanup/cleanup_api.c.

20070402

	Portability (introduced 20070325): the fix for hardlinks
	and symlinks in postfix-install forgot to work around shells
	where "IFS=/ command" makes the IFS setting permanent.  This
	is allowed by some broken standard, and affects Solaris.
	File: postfix-install.

	Portability (introduced 20070212): the workaround for
	non-existent library bugs with descriptors >= FD_SETSIZE
	broke with "fcntl F_DUPFD: Invalid argument" on 64-bit
	Solaris.  Files: master/multi_server.c, *qmgr/qmgr_transport.c.

20070405

	Feature: BCC access/policy action, to demonstrate that this
	is not a good feature. The action's behavior is non-intuitive
	and requires too much documentation to explain.  It's
	therefore snapshot only.  File: smtpd/smtpd_check.c.

20070414

	Cleanup: expire cached results from addres rewriting, address
	resolution, and from transport map lookups.  Results expire
	after 30 seconds; short enough that it doesn't freak out
	people who run the same test repeatedly, and long enough
	that it doesn't upset other people with continuous streams
	of "*" transport map lookups.  Files: global/rewrite_clnt.c,
	global/resolve_clnt.c, trivial-rewrite/transport.c.

20070421

	Cleanup: on (Linux) platforms that cripple signal handlers
	with deadlock, "postfix stop" now forcefully stops all the
	processes in the master's process group, not just the master
	process alone.  File: conf/postfix-script.

20070422

	Cleanup: the "Delivered-To:" loop detection implementation
	was moved from the local(8) delivery agent to the library,
	where it can also be used by other delivery agents. Files:
	global/delivered_hdr.[hc].

	Safety: the "Delivered-To:" loop detection implementation
	keeps state for no more than 1000 "Delivered-To:" headers.

	Feature: $domain command-line macro support, to get access
	to the recipient address domain portion.  Based on code by
	Koen Vermeer. File: pipe/pipe.c.

	Cleanup: support for "Delivered-To:" loop detection in the
	pipe(8) delivery agent. This follows a general principle:
	if a program creates the "Delivered-To:" header, then it
	is also responsible for "Delivered-To:" loop detection.
	File pipe/pipe.c.

20070423

	The cache expiring transport map lookups did not distinguish
	between wildcard transport map entry with an "empty" transport
	field, or no wildcard transport map entry.

20070424

	Cleanup: making hard-coded behavior configurable. In this
	case, extracting 8BITMIME encoding information from
	Content-Transfer-Encoding: message headers.  The default
	behavior, "detect_8bit_encoding_header = yes", is backwards
	compatible. This behavior was introduced to generate
	RFC-compliant bounce messages before Postfix supported the
	8BITMIME option in the MAIL FROM command and on the Postfix
	sendmail command line.  Files: cleanup/cleanup_init.c,
	cleanup/cleanup_message.c, global/mail_params.h.

20070425

	Bugfix: don't falsely report "lost connection from
	localhost[127.0.0.1]" when Postfix is being portscanned.
	Files: smtpd/smtpd_peer.c, qmqpd/qmqpd_peer.c.

20070429

	Feature: "postfix status" to report whether Postfix is
	running.  By Mike Cappella.

	Cleanup: configurable address case folding moved from the
	pipe(8) delivery agent to the library, where it can also
	be used by other delivery agents. Files: global/fold_addr.[hc].

20070430

	Robustness: recommend a "0" process limit for policy servers
	to avoid "connection refused" problems when the smtpd process
	limit exceeds the default process limit.  File:
	proto/SMTPD_POLICY_README.html.

20070501

	Workaround: turn on KEEPALIVE probes to avoided "lost
	connection after sending end-of-data" problems when some
	stateful (NAT) filter expires an idle connection too soon.
	This requires that the kernel's TCP keepalive timer be set
	to a sufficiently short time (perhaps 100s or less).  Files:
	util/sane_accept.c, util/sane_connect.c.

	Safety: when IPv6 (or IPv4) is turned off, don't treat an
	IPv6 (or IPv4) connection from e.g. inetd as if it comes
	from localhost[127.0.0.1]. Files: smtpd/smtpd_peer.c,
	qmqpd/qmqpd_peer.c.

20070502

	Workaround: build without EPOLL support when an epoll-enabled
	kernel sits underneath a retarded libc.  File: makedefs.

	Cleanup: missing support for SASL security properties with
	Dovecot SASL authentication. Based on an initial version
	by Lev A. Serebryakov.  File: xsasl/xsasl_dovecot_server.c.

20070503

	Cleanup: changed the default address verification sender
	from "postmaster" to "double-bounce", so that the Postfix
	SMTP server no longer surprises unsuspecting people by
	excluding "postmaster" from SMTPD access controls.  File:
	global/mail_params.h.

20070508

	Bugfix: Content-Transfer-Encoding: attribute values are
	case insensitive. File: src/cleanup/cleanup_message.c.

20070514

	Bugfix: the makedefs EPOLL workaround broke any attempt to
	build on a 2.6 kernel. And that two weeks after the workaround
	had been posted to the mailing list. File: makedefs.

	Bugfix: mailbox_transport(_maps) and fallback_transport(_maps)
	were broken when used with the error(8) or discard(8)
	transports. Cause: insufficient documentation.  Files:
	error/error.c, discard/discard.c.

20070520

	Bugfix (problem introduced Postfix 2.3): when DSN support
	was introduced it broke "agressive" recipient duplicate
	elimination with "enable_original_recipient = no".  File:
	cleanup/cleanup_out_recipient.c.

20070523

	Feature: cyrus_sasl_config_path to specify a search path
	for Cyrus SASL configuration files (currently used only to
	locate the smtpd.conf file).  Based on code by Victor
	Duchovni. Files: smtpd/smtpd.c xsasl/xsasl_cyrus_server.c,
	(and xsasl/xsasl_cyrus_client.c for future expansion).

20070525

	Bugfix (introduced 20070523): the sasl_set_path() function
	name was mis-speeled.

20070529

	Bugfix (introduced Postfix 2.3): the sendmail/postdrop
	commands would hang when trying to submit a message larger
	than the per-message size limit. File: postdrop/postdrop.c.

20070530

	Sabotage the saboteur who insists on breaking Postfix by
	adding gethostbyname() calls that cause maildir delivery
	to fail when the machine name is not found in /etc/hosts,
	or that cause Postfix processes to hang when the network
	is down.

20070531

	Portability: Victor helpfully pointed out that change
	20070425 broke on non-IPv6 systems. Files: smtpd/smtpd_peer.c,
	qmqpd/qmqpd_peer.c.

20070610

	Isolation: don't allow the pipe(8) delivery agent to leak
	postdrop group privileges with "user=xxx:postdrop". File:
	pipe/pipe.c.

20070613

	Bugfix: the Milter client assumed that a Milter application
	does not modify the message header or envelope, after that
	same Milter application has modified the message body of
	that same email message. This is not a problem with updates
	by different Milter applications.  Problem was triggered
	by Jose-Marcio Martins da Cruz. Also simplified the handling
	of queue file update errors. File: milter/milter8.c.

20070614

	Workaround: some non-Cyrus SASL SMTP servers require SASL
	login without authzid (authoriZation ID), i.e. the client
	must send only the authcid (authentiCation ID) + the authcid's
	password.  In this case the server is supposed to derive
	the authzid from the authcid. This works as expected when
	authenticating to a Cyrus SASL SMTP server.  To get the old
	behavior specify "send_cyrus_sasl_authzid = yes", in which
	case Postfix sends the (authzid, authcid, password), with
	the authzid equal to the authcid. File: xsasl/xsasl_cyrus_client.c.

20070619

	Portability: /dev/poll support for Solaris chroot jail setup
	scripts. Files: examples/chroot-setup/Solaris8,
	examples/chroot-setup/Solaris10.

20070713

	The RFC documents at www.faqs.org are being polluted with
	"feedback" spam. The Postfix hypertext documentation now
	points to tools.ietf.org. File: mantools/postlink.

20070719

	Feature: updated smtp-sink with new options to send a
	pre-formatted message from file, and to handle replies other
	than the expected 2xx or 3xx. File: smtpstone/smtp-source.c.

	Cleanup: Milter client error handling, so that the (Postfix
	SMTP server's Milter client) does not get out of sync with
	Milter applications after the (cleanup server's Milter
	client) encounters some non-recoverable problem.  Files:
	milter/milter8.c, smtpd/smtpd.c.

20070720

	Support for RFC 4954 (SASL AUTH, updates RFC 2554, refines
	some reply codes and introduces DSN enhanced status codes)
	and RFC 3848 ("Received ...  with ESMTPS?A? ...). Currently,
	support for the latter is always on.  Files: smtpd/smtpd.c,
	smtpd/smtpd_sasl_proto.c, smtpd/smtpd_sasl_glue.c.

20070727

	Workaround: the queue manager no longer logs a warning for
	mail sent to the local double-bounce address (normally, the
	this is used as the sender while reporting an undeliverable
	bounce message to the local postmaster).  As of 20070503
	the local double-bounce address is the default sender for
	sender/recipient address verification probes, and it now
	shows up as a spam target. Files: *qmgr/qmgr_message.c.

20070729

	Performance: fix for poor TCP performance for loopback
	(127.0.0.1) connections. Problem reported by Mark Martinec.
	Files: util/vstream.c, util/vstream_tweak.c, milter/milter8.c,
	smtp/smtp_connect.c, smtpstone/*source.c.

20070730

	Bugfix: when a milter replied with ACCEPT at or before the
	first RCPT command, the cleanup server would apply the
	non_smtpd_milters setting as if the message was a local
	submission. Problem reported by Jukka Salmi. Also, the
	cleanup server would get out of sync with the milter when
	a milter replied with ACCEPT at the DATA command. Files:
	cleanup/cleanup_envelope.c, smtpd/smtpd.c, milter/milters.c.

20070811

	Cleanup: unlike smtpd_mumble_restrictions, the Postfix SMTP
	server Milter reject logging did not show the (helo argument,
	sender address, or recipient address) that was being rejected.
	File: smtpd/smtpd.c.

20070824

	Bugfix (introduced snapshot 20070429): the pipe(8) delivery
	agent 'q' flag (quote address local-part) used the same bit
	mask as the 'B' flag (append blank line). Setting one flag
	also turned on the other. File: pipe/pipe.c.

	Feature: specify the 'X' flag to indicate that the pipe(8)
	delivery agent performs final delivery. This changes the
	status in DSN "success" messages from "relayed" into
	"delivered".  File: pipe/pipe.c.

20070904-6

	Feature: stress-adaptive behavior. When a "public" network
	service runs into an "all processes are busy" condition,
	the master(8) daemon logs a warning, restarts the service,
	and runs it with "-o stress=yes" on the command line (normally
	it runs the service with "-o stress=").  This can be used
	to make main.cf parameter settings stress dependent.
	Examples: "smtpd_timeout = ${stress?10}${stress:300}" and
	"smtpd_hard_error_limit = ${stress?1}${stress:20}".  Files:
	master/master_avail.c, master/master_spawn.c, master/master_ent.c.

20070911

	Bugfix (introduced Postfix 2.2.11): TLS client certificate
	with unparsable canonical name caused the SMTP server's
	policy client to allocate zero-length memory, triggering
	an assertion that it shouldn't do such things.  File:
	smtpd/smtpd_check.c.

20070912

	Bugfix (introduced Postfix 2.4) missing initialization of
	event mask in the event_mask_drain() routine (used by the
	obsolete postkick(1) command). Found by Coverity.  File:
	util/events.c.

20070917

	Workaround: the flush daemon forces an access time update
	for the per-destination logfile, to prevent an excessive
	rate of delivery attempts when the queue file system is
	mounted with "noatime".  File: flush/flush.c.

20070923

	Cleanup: don't complain when a "corrupt" queue file is 
	deleted before it can be saved to the "corrupt" queue.
	Files: *qmgr/qmgr_active.c.

20071003

	Logging: the Postfix SMTP server now logs the number of
	bytes received after the DATA command when a connection
	breaks before mail delivery completes.  This may help finding
	the cause of the problem: packet loss, MTU, or other. File:
	smtpd/smtpd.c.

20071004

	Logging: all daemons now log the TCP port number of remote
	SMTP or QMQP clients.  The information is overruled with
	the SMTP XCLIENT command, is propagated through SMTP-based
	content filters with XFORWARD, and is sent to Milter
	applications.  Files: smtpd/smtpd_peer.c, smtpd/smtpd.c,
	smtpd/smtpd_proxy.c, smtpd/smtpd_milter.c, qmqpd/qmqpd_peer.c,
	cleanup/cleanup_milter.c, *qmgr/qmgr_message.c,
	*qmgr/qmgr_deliver.c, smtp/smtp_proto.c, pipe/pipe.c,
	global/deliver_request.c, global/deliver_pass.c,
	proto/XFORWARD_README, proto/XCLIENT_README.

	Feature: per-command delays in smtp-sink. File:
	smtpstone/smtp-sink.c.  Victor Duchovni.

20071006

	Cleanup: updated a bunch of hard-coded host[addr] logging
	statements. Files: smtpd/smtpd.c, smtpd/smtpd_chat.c,
	smtpd/smtpd_sasl_glue.c.

	Cleanup: client port logging is now configurable (off by
	default). Parameters: smtpd_client_port_logging and
	qmqpd_client_port_logging. Files: smtpd/smtpd_peer.c,
	qmqpd/qmqpd_peer.c.

	Cleanup: send client port information "0" instead of "unknown"
	to Milter applications. Files: smtpd/smtpd.c, smtpd/smtpd_milter.c,
	cleanup/cleanup_milter.c.

20071025

	Portability: on Linux we no longer need /proc to find out
	local IPv6 interface address information. LaMont Jones.
	Files: util/sys_defs.h.

20071030

	Bugfix (introduced Postfix 2.3): Postfix mistakenly enforced
	the 64kbyte limit (for sending body parts TO Milter
	applications) also while receiving packets FROM Milter
	applications.  The limit is now at least 1GB.  File:
	milter/milter8.c.

20071105

	Feature: ORIGINAL_RECIPIENT environment variable.  Corey
	Hickey. File: local/local.c.

20071108-10

	Feature: general-purpose header/body_checks library module,
	first used in the SMTP client. Actions that change the
	message delivery time or destination can be implemented
	with a simple extension mechanism (they make sense only in
	before-queue filters).  Configuration parameters:
	smtp_header_checks, smtp_mime_header_checks,
	smtp_nested_header_checks, smtp_body_checks. Unlike the
	cleanup server, the mime and nested header checks don't by
	default assume the header_checks value.  Files:
	global/header_body_checks.[hc], smtp/smtp_proto.c,
	smtp/smtp_session.c.

20071110

	Feature: ${original_recipient} command-line macro.  Corey
	Hickey. File: pipe/pipe.c.

	Bugfix (introduced: 20071004) missing exception handling
	in smtp-sink per-command delay feature. Victor Duchovni.
	File: smtpstone/smtp-sink.c.

2007117-20

	Revised queue manager with separate mechanisms for
	per-destination concurrency control and dead destination
	detection.  The concurrency control supports non-integer
	feedback for more gradual concurrency adjustments, and uses
	hysteresis to avoid rapid oscillations.  A destination is
	declared "dead" after a configurable number of pseudo-cohorts
	(number of deliveries equal to a destination's concurrency)
	reports connection or handshake failure. This work began
	with a discussion that Wietse started with Patrik Rak and
	Victor Duchovni late January 2004, and that Victor revived
	late October 2007. To establish a baseline for further
	improvement, Wietse implemented a few simple mechanisms.

	Configuration parameters for debugging, positive/negative
	hysteresis, and positive/negative feedback. Some have since
	been removed or renamed, so no point naming them here.
	Files: global/mail_params.h, qmgr/qmgr_queue.c,
	qmgr/qmgr_deliver.c.

20071121

	Boundary condition: Patrik Rak pointed out that handling
	of negative feedback with concurrency window 1 could
	be improved.

	Feature: support to look up null sender addresses in
	sender-dependent relayhost maps. Parameter name:
	empty_address_relayhost_maps_lookup_key (default; <>).
	Keean Schupke. File: trivial-rewrite/resolve.c.

20071127-9

	Revision 2 of queue manager scheduler interface, allowing
	feedback parameter settings with constants and variables
	such as 1/8 or 1/concurrency.  Some experimental parameters
	were removed and others were renamed. The new names are:
	default_destination_concurrency_negative_feedback,
	default_destination_concurrency_positive_feedback,
	default_destination_concurrency_failed_cohort_limit,
	destination_concurrency_feedback_debug.

	Also available are transport-specific overrides:
	<transport>_initial_destination_concurrency,
	<transport>_destination_concurrency_negative_feedback,
	<transport>_destination_concurrency_positive_feedback,
	<transport>_destination_concurrency_failed_cohort_limit.

	Files: global/mail_params.h, *qmgr/qmgr.c, *qmgr/qmgr_transport.c,
	*qmgr/qmgr_queue.c, *qmgr/qmgr_feedback.c, postconf/auto.awk.

20071202

	Feature: output rate control. For example, specify
	"smtp_destination_rate_delay = 5m" to insert a five-minute
	delay between deliveries. This was an opportunity to define
	the mutually exclusive states that a queue can have, and
	to detect invalid transitions.  This will make adding new
	features code easier.  Files: *qmgr/qmgr_transport.c,
	*qmgr/qmgr_queue.c, *qmgr/qmgr_entry.c.

	Bugfix (introduced Postfix 2.2): don't update the back-to-back
	delivery time stamp while deferring mail. File: *qmgr/qmgr_entry.c.

20071203

	Feature: support for read-write tables in the proxymap
	service. This is implemented with a separate master.cf entry
	named "proxywrite" that should run with process limit of 1
	if you want to update Berkeley DB like tables. This feature
	requires that tables be authorized with the proxy_write_maps
	configuration parameter. Files: global/dict_procy.[hc],
	proxymap/proxymap.c.

	Human factors: the postmap and postalias commands now produce
	nicer diagnostics when asked to do something with a proxied
	map that they can't do. Files: postmap/postmap.c,
	postalias/postalias.c.

	Bugfix: the proxymap client didn't properly propagate user
	options to the proxymap server.  File: util/dict.h.

	Workaround: force synchronous updates in the proxymap server
	so that maps will be in a consistent state between updates.
	File: proxymap/proxymap.c.

	Bugfix: an empty rate-limited queue wasn't removed after
	timer expiry. Files: *qmgr/qmgr_queue.c.

20071204

	Use different sockets for proxymap (read-only) and proxywrite
	(read-write) services in the proxy: client. Victor Duchovni.
	File: global/dict_proxy.c.

	Feature: proxymap delete support by Victor Duchovni.  Files:
	global/dict_proxy.c, proxymap/proxymap.c.

	Feature: proxymap delete support. Files: postmap/postmap.c
	postalias/postalias.c.

	Cleanup: the Postfix sendmail command did not include the
	user (name/uid) information in all error messages. File:
	sendmail/sendmail.c.

	Feature: data_directory configuration parameter for
	Postfix-writable data such as caches and random numbers.
	Files: postfix-install, conf/postfix-files.

20071206

	Security: tlsmgr(8) and verify(8) no longer use root
	privileges when opening their cache files. This avoids a
	potential security loophole where the ownership of a file
	(or directory) does not match the trust level of the content
	of that file (or directory). See RELEASE_NOTES for how to
	use pre-existing data. Files: util/set_eugid.[hc],
	tlsmgr/tlsmgr.c, verify/verify.c.

	Compatibility: as a migration tool, redirect attempts by
	tlsmgr(8) or verify(8) to open files in non-Postfix directories
	to the Postfix-owned data_directory. File: global/data_redirect.c.

	Lots of pathname fixes in the examples of TLS_README and
	postconf(5); -lm library screw-up in queue manager Makefiles.

20071207

	Cleanup: pathname fixes in documentation; unnecessary queue
	scan in the queue manager rate limiter; inverse square root
	feedback in the queue manager concurrency scheduler.  Files:
	mantools/postlink, proto/TLS_README.html, *qmgr/qmgr_queue.c.

	All changes up to this point should be ready for Postfix 2.5.

	Documentation: updated nqmgr preemptive scheduler documentation
	by Patrik Rak. File: proto/SCHEDULER_README.html.

20071211

	Bugfix (introduced 19980315): the "write" equivalent of
	bugfix 20030104. File: util/vstream.c.

20071212

	Feature: "stress=" or "stress=yes" attribute in the SMTPD
	policy delegation protocol. File: smtp/smtpd_check.c.

	Cleanup: allow_min_user now rejects recipients (and senders)
	starting with '-' at SMTP session time. To make this possible
	the feature was moved from qmgr(8) to trivial-rewrite(8).
	Files: *qmgr/qmgr_message.c, trivial-rewrite/resolve.c.

20071213:

	Cleanup: the queue manager and SMTP client now distinguish
	between connection cache store and retrieve hints. Once the
	queue manager enables connection caching (store and load)
	hints on a per-destination queue, it keeps sending connection
	cache retrieve hints to the delivery agent even after it
	stops sending connection cache store hints.  This prevents
	the SMTP client from making a new connection without checking
	the connection cache first. Victor Duchovni.  Files:
	*qmgr/qmgr_entry.c, smtp/smtp_connect.c.

	Bugfix (introduced Postfix 2.3): the SMTP client never
	marked corrupt files as corrupt. Victor Duchovni. File:
	smtp/smtp_proto.c.

	Cleanup: the SMTP client won't mark a destination as
	unavailable when at least one SMTP session was completed
	without connect or handshake error. Victor Duchovni. Files:
	smtp/smtp_connect.c, smtp/smtp_session.c, smtp/smtp_proto.c,
	smtp/smtp_trouble.c.

20071215

	Documentation and code cleanup. Files: global/deliver_request.h,
	*qmgr/qmgr_entry.c, smtp/smtp_connect.c,
	proto/SCHEDULER_README.html.

	Bugfix (introduced snapshot 20071006): qmqpd ignored the
	qmqpd_client_port_logging parameter setting. File:
	qmqpd/qmqpd.c.

20071216

	Cleanup: show the remote SMTP server port in verbose logging,
	warnings and postmaster notices.  Still don't show the port
	in delivery status notifications. Files: smtp/smtp_chat.c,
	smtp/smtp_sasl_glue.c, smtp/smtp_sasl_proto.c.

	The "tls_require_cert" is now compatible with OpenLDAP 2.1
	and later. Victor Duchovni. Files: proto/ldap_table,
	global/dict_ldap.c.

20071218

	Cleanup: removed the "#ifdef USE_LIBMILTER_INCLUDES"
	dependencies on system-installed Milter protocol include
	files. Verified that the object code has not changed. File:
	milter/milter8.c.

	Sanity check: idiot filter to detect attempts to use the
	same database file for different TLS session caches.  File:
	tlsmgr/tlsmgr.c.

	Cleanup: updated the spell check stoplist and the spell
	check script. Files: mantools/spell, proto/stop.

	Cleanup: replaced documentation references to xxgdb by ddd.
	The xxgdb program hasn't been updated in more than 10 years.
	Files: proto/postconf.proto, conf/main.cf.

20071219-20

	Feature: support for all new Sendmail 8.14 Milter features
	except SMFIR_SKIP (skip further events of this type),
	SMFIP_RCPT_REJ (report rejected recipients to the mail
	filter), SMFIR_CHGFROM (replace sender, with optional ESMTP
	command parameters), and SMFIR_ADDRCPT_PAR (add recipient,
	with optional ESMTP command parameters). Files: milter/milters.c,
	milter/milter8.c, milter/test-milter.c, cleanup/cleanup_milter.c.

20071221

	Feature: support for Sendmail 8.14 Milter SMFIR_SKIP (skip
	further events of this type). Files: milter/milter8.c,
	milter/test-milter.c.

	Cleanup: don't try sending HELO after a 421 EHLO reply.
	File: smtp/smtp_proto.c.

20071221-nonprod

	Using 20071221 as reference point.

	Cleanup: Simplified TLS library cipher and protocol API to
	just pass string-valued properties to tls_client_init() and
	tls_client_start(). The client is now agnostic of the
	mechanics of cipher management internal to the library. The
	main.cf parameters used internally in the library are now
	loaded by the library, not the caller. Files:
	src/smtp/lmtp_params.c, src/smtp/smtp.c, src/smtp/smtp.h,
	src/smtp/smtp_params.c, src/smtp/smtp_proto.c,
	src/smtp/smtp_session.c, src/smtpd/smtpd.c, src/tls/tls.h,
	src/tls/tls_client.c, src/tls/tls_level.c, src/tls/tls_misc.c,
	src/tls/tls_server.c, src/tls/tls_session.c, src/tls/tls_verify.c
	and src/tlsmgr/tlsmgr.c

	Cleanup: Client session lookup key "salting" is now handled
	internally in the tls library. Files: src/tls/tls_client.c

	Cleanup: Cipher state is cached, and only updated when
	necessary.  Files: src/tls/tls_misc.c

	Feature: Extended the syntax of protocol selection to allow
	exclusions as well as inclusions. Files: src/tls/tls_misc.c

	Cleanup: Updated default verification depth to match reality:
	default is 9 in OpenSSL and we don't yet override it.  When
	we do (soon), the default will match previous behavior.
	Files: src/global/mail_params.h

	Bugfix: Reference to obsolete "pfixtls" code won't compile
	inside #ifdef for OpenSSL <= 0.9.5a. Using an OpenSSL release
	that old has not been tested for some time, but may now
	work. Files: src/tls/tls_bio_ops.c.

	Replaced "void *" TLS library application handles by explicit
	pointer types, while hiding data structure implementation
	details from the TLS library users. Files: tls/tls_client.c,
	tls/tls_server.c, smtp/smtp.c, smtpd/smtpd.c.

	The TLS library no longer modifies VSTRINGs passed in by
	the caller. Where possible, information is passed as "const"
	from application to library. Files: smtp/smtp_proto.c,
	tls/tls_client.c.

20071227-nonprod

	Replaced explicit initialization of props structures by
	emulating function calls with named parameter lists.  Files:
	tls/tls.h, smtp/smtp.c, smtp/smtp_proto.c, smtpd/smtpd.c.

20071222

	Further polishing of the Milter code and logging. File:
	milter/milter8.c.

20071123

	Further polishing of the Milter code. With SETSYMLIST, each
	Milter can now update its own macros instead of clobbering
	the global copy that is shared with other Milters. Also an
	opportunity to clean up some ad-hoc code for sending macro
	lists from smtpd(8) to cleanup(8). Files: milter/milter.c,
	milter/milter8.c, milter/milter_macros.c.

20071224

	Further polishing of the Milter code. Eliminated unnecessary
	steps from the initial smtpd/cleanup Milter handshake. Files:
	milter/milter.c, milter/milter8.c, milter/milter_macros.c.

	Cleanup: name_code(3) and name_mask(3) now support read-only
	tables. Files: util/name_code.[hc], util/name_mask.[hc].

20071227

	Cleanup: further refinements of the Milter code, allowing
	for multiple macro overrides. The code is now ready for
	serious testing. File: milter/milter8.c.

20071229

	Bugfix: the Milter client did not replace the Postfix-specific
	form for unknown host names by the Sendmail-specific form.
	File: milter/milter8.c.

	Cleanup: when a cleanup milter reports a problem don't log
	generic "4.3.0 Sevice unavailable", but log the text for
	the actual error. File: cleanup/cleanup_milter.c.

20080102-nonprod

	SMTP client fingerprint security level support and configurable
	fingerprint digest algorithm. Victor Duchovni. Files:
	smtp/lmtp_params.c, smtp/smtp.c, smtp/smtp.h,
	src/smtp/smtp_params.c, src/smtp/smtp_proto.c,
	src/smtp/smtp_session.c, tls/tls_client.c, tls/tls_level.c,
	tls/tls_verify.c.

20080103-nonprod

	Missed "invalid TLS configuration" patch for SMTP client.
	Victor Duchovni. File: smtp/smtp_proto.c.

	SMTP server configurable fingerprint digest algorithm.
	Victor Duchovni. Files: smtpd/smtpd.c, tls/tls.h,
	tls/tls_server.c, tls/tls_verify.c.

20080104-nonprod

	Cleanup: finally implemented certificate verification depth
	limit parameters. Prior to Postfix 2.5 these were ignored.
	For backwards compatibility, the default verification depth
	limit is now 9, the OpenSSL default. Victor Duchovni. Files:
	src/tls/tls_client.c, src/tls/tls_server.c, src/tls/tls_verify.c.

	Robustness: Avoid possibility of NULL pointer issues in
	application code that checks certificate names, by providing
	"empty string" values when no data is available.  Victor
	Duchovni.  Files: src/tls/tls_verify.c, src/tls/tls_client.c,
	src/tls/tls_server.c, src/smtpd/smtpd_check.c, src/smtpd/smtpd.c.

	Cleanup: separation of TLS handshake from security level
	enforcement. The library shakes hands; the application
	decides if the resulting security is acceptable. Victor
	Duchovni.  Files: smtpd/smtpd.c, smtpd/smtpd_proto.c,
	tls/tls_server.c, tls/tls_client.c, tls/tls_verify.c.

	Robustness: more robust processing of ASN.1 string attributes
	in x509v3 certificates, plus additional sanity checks (e.g.
	embedded null characters). Victor Duchovni. File:
	src/tls/tls_verify.c.

20080104

	Workaround: minor change to the Dovecot AUTH request to
	prevent dovecot-auth memory wastage. Timo Sirainen.  File:
	xsasl/xsasl_dovecot_server.c.

20080105-nonprod

	Cleanup: renamed TLS-related symbols for consistency (always
	include the init, start, stop prefix in the TLS library
	function and data structure names; consistently distinguish
	between per-application TLS state and per-session TLS state;
	consistently use the fpt prefix for fingerprint related
	variables and structure members; consistent use of monocase
	typedef-ed names).

20080106-nonprod

	Cleanup: consistent use of <pre> and <blockquote> in examples;
	instead of emphasizing new Postfix 2.5 behavior in reference
	documentation, describe the new behavior as "current", with
	historical behavior as a supplemental note.

20080107

	Feature: new "pass" service type (in addition to "inet",
	"unix" and "fifo").  The "pass" service type supports
	front-end daemons that accept all inbound connections and
	that permit only well-behaved clients to talk to the MTA.
	This service type had been sitting in the master daemon for
	years but was disabled by default.  Actual applications for
	this will have to be developed later.  Files: util/upass_connect.c,
	util/upass_trigger.c.

20080108

	Cleanup: where possible, store data structures in read-only
	memory. Besides the security advantage of no write access,
	this also gives slightly better memory utilization when
	many processes execute the same file. Files: pretty much
	everything that has a static table, except for a few tables
	in the benchmark tools with flags that are controlled by
	command-line information.

20080109

	Cleanup: more read-only data. Files: everything that passes
	around a HEADER_OPTS pointer.

20080112

	Safety: optional lookup table to prevent the Postfix SMTP
	client from making repeated SASL login failures with the
	same hostname, username and password.  This introduces new
	parameters: smtp_sasl_auth_cache_name, smtp_sasl_auth_cache_time.
	Based on code by Keean Schupke.  Files: smtp/smtp_sasl_glue.c,
	smtp/smtp_sasl_auth_cache.c.

	Safety: the Postfix SMTP client now by default defers mail
	after the server rejects a SASL login attempt with a 535
	status code.  Specify "smtp_sasl_auth_soft_bounce = no" to
	get the earlier behavior.  Based on code by Keean Schupke.
	Files: smtp/smtp_sasl_glue.c.

20080114

	Safety: the smtpd_client_new_tls_session_rate_limit setting
	now also limits the number of failed TLS handshakes. This
	limits the impact of broken configurations. File: smtpd/smtpd.c.

20080115

	Bugfix (introduced 20080112): Patrik Rak found two bugs
	that largely canceled each other out, causing Postfix not
	to complain about a missing "proxy:" prefix with the new
	smtp_sasl_auth_cache_name parameter setting. File:
	smtp/smtp_sasl_glue.c.

	Documentation: new SOHO_README file for small/home offices.
	The text is automatically generated from bits and pieces of
	information that are scattered across other documents.
	File: mantools/make_soho_readme.

20080116

	Bugfix (introduced 20080112): missing #ifdef for the SASL
	login failure cache. File: smtp/smtp_sasl_auth_cache.h.

20080123

	Name fix: renamed the mumble_delivery_rate_delay parameter
	to mumble_destination_rate_delay, because it really is a
	per-destination feature. With this change we keep the option
	of implementing a future per-transport rate delay.

20080125

	Bugfix (introduced 20071216): missing {} in the LDAP client
	broke OpenLDAP TLS.  The setting tls_require_cert=no was
	further broken because Postfix used OpenLDAP incorrectly.
	Victor Duchovni.  This broke tls_require_cert=no File:
	global/dict_ldap.c.

20080126

	Cleanup: the post-install script now requires that it is
	invoked via the postfix(1) command. This was the intended
	use since Postfix 2.1, but it was never enforced.  The
	documentation for package maintainers has been updated
	accordingly. File: conf/post-install.

20080130

	Bugfix (introduced 20071204): wrong proxywrite process limit
	in the default master.cf file.  File: conf/master.cf.

20080131

	Bugfix (introduced 20080126): the new "do not execute
	directly" test in post-install got broken during code
	cleanup.  File: conf/post-install.

20080201

	Workaround: undo the changes that require that post-install
	is invoked via the postfix command, because this breaks
	when "postfix start" is invoked with an obsolete postfix
	command that doesn't export the new data_directory parameter.

	Workaround: pick up a missing data_directory setting from
	main.cf when "postfix start" is invoked with an obsolete
	postfix command. File: conf/post-install.

20080207

	Cleanup: soft_bounce support for multi-line Milter replies.
	File: src/milter/milter8.c.

	Cleanup: preserve multi-line format of header/body Milter
	replies. Files: cleanup/cleanup_milter.c, smtpd/smtpd.c.

	Cleanup: multi-line support in SMTP server replies.  File:
	smtpd/smtpd_chat.c.

	SAFETY: postfix-script, postfix-files and post-install are
	moved away from /etc/postfix to $daemon_directory. There
	were too many accidents where people clobbered these files
	with versions from an older Postfix release and ended up
	with an unusable Postfix setup.  Files: postfix-install,
	Makefile.in, postfix/postfix.c, conf/postfix-files,
	conf/postfix-script, conf/post-install.

20080212

	Feature: check_reverse_client_hostname_access, to make
	access decisions based on the unverified client hostname.
	For safety reasons an OK result is not allowed.  Noel Jones.
	Files: smtpd/smtpd_check.c plus header files and documentation.

20080215

	Safety: break SASL loop in case both the SASL library and
	the remote SMTP server are confused. File: smtp/smtp_sasl_glue.c.

20080220

	Safety: the master daemon now sets an exclusive lock on a
	file $data_directory/master.lock, so that the data directory
	can't be shared between multiple Postfix instances.  This
	would corrupt files that rely on single-writer updates
	(examples: verify(8) cache, tlsmgr(8) caches, etc.). File:
	master/master.c.

20080226

	Cleanup: the postfix command did not set argv[0] to a sane
	value when invoking postfix-script. Reported by Victor
	Duchovni. File: postfix/postfix.c.

20080228

	Bugfix: bounce(8) segfault on one-line template text.
	Problem found by Sacha Chlytor. File: bounce/bounce_template.c.

20080310

	Safety: the SMTP server's Dovecot authentication client now
	enforces the SASL mechanism output filter also on client
	command input. File: src/xsasl/xsasl_dovecot_server.c.

20080311

	Bugfix (introduced 20070811): the MAIL and RCPT Milter
	application call-backs no longer received {mail_addr} or
	{rcpt_addr} information. Problem reported by Anton Yuzhaninov.
	File: smtpd/smtpd.c.

	Bugfix (introduced 20080207): "cleanup -v" panic because
	the new "SMTP reply" request flag did not have a printable
	name. File: global/cleanup_strflags.c.

20080318

	Human factors: the PCRE and regexp maps now give more
	comprehensible error messages when people make the common
	mistake of indenting if/endif blocks. Files: util/dict_pcre.c,
	util/dict_regexp.c.

20080324

	Cleanup: the event_drain() function is now a proper event
	processing loop. File: util/events.c

	Feature: when the "postmap -q -" command reads lookup keys
	from standard input, it now understands RFC822 and MIME
	message format. Specify -h or -b to use headers or body
	lines as lookup keys, and specify -hm or -bm to simulate
	header_checks or body_checks.  The postmap -h option (without
	-m) will be compatible with a future postcat -h option.
	File: postmap/postmap.c.

20080411

	Bugfix (introduced Postfix 2.0): after "warn_if_reject
	reject_unlisted_recipient/sender", the SMTP server mistakenly
	remembered that recipient/sender validation was already
	done. File: smtpd/smtpd_check.c.

	Bugfix (introduced Postfix 2.3): the queue manager would
	initialize missing client logging attributes (from xforward)
	with real client attributes. Fix: enable this backwards
	compatibility feature only with queue files that don't
	contain logging attributes. Problem reported by Liviu Daia.
	Files *qmgr/qmgr_message.c.

20080424

	Cleanup: some warning messages said "regexp" or "regexp
	map" instead of "pcre map". File: util/dict_pcre.c.

20080426

	Feature: finer control over address verification error
	handling and amount of information disclosed in the SMTP
	reject message.  Parameters: unverified_recipient_defer_code,
	unverified_recipient_reject_reason, unverified_sender_defer_code,
	unverified_sender_reject_reason. If I don't do this properly,
	then someone will do it anyway. File: src/smtpd/smtpd_check.c.

20080428

	Cleanup: the proxy_read_maps (Postfix 2.0) default setting
	was not updated when adding sender/recipient_bcc_maps
	(Postfix 2.1) and smtp/lmtp_generic_maps (Postfix 2.3).
	File: global/mail_params.h.

	Cleanup: the SMTP server's XFORWARD and XCLIENT support was
	not updated when the smtpd_client_port_logging configuration
	parameter was added. Code by Victor Duchovni. Files:
	smtpd/smtpd.c, smtpd/smtpd_peer.c.

20080508

	Cleanup: delivery status notifications now prepend a
	Return-Path: message header to the returned message.
	File: bounce/bounce_notify_util.c.

20080509

	Bugfix: null-terminate CN comment string after sanitization.
	File: smtpd/smtpd.c.

20080510

	Cleanup: when extracting peer and issuer common name from
	TLS certificates, convert the result into UTF-8, and use
	RFC 2047 encoding when logging these as Received: header
	comment fields. Based remotely on code by Victor Duchovni.
	Files: smtpd/smtpd.c, tls/tls_verify.c.

20080511

	Cleanup: the RFC 2047 encoding of RFC*822 comments is too
	problematic.  The text that explains the problems is as
	long as the code itself.  That is usually a good indication
	that code is not ready for use.  File: smtpd/smtpd.c.

	Cleanup: block non-printable ASCII text in UTF8 encoded TLS
	peer and issuer common names.  File: tls/tls_verify.c.

20080602

	Workaround: avoid watchdog timeout in the local pickup
	daemon when the cleanup server expands a very large virtual
	alias list. Files: master/trigger_server.c, pickup/pickup.c.

20080603

	Workaround: avoid "bad address pattern" errors with non-address
	patterns in namadr_list_match() calls. File: util/match_ops.c.

	Feature: print fsstone elapsed time with sub-second time
	resolution.  Kenji Kikuchi. File: fsstone/fsstone.c.

20080606

	Bitrot: "make test" was broken due to recent changes in
	code and due to recent changes at mail-abuse.org.

20080618

	Add a note to SMTP session transcript email messages that
	other details may be found in the maillog file.  Files:
	smtpd/smtpd_chat.c, smtp/smtp_chat.c.

20080620

	Cleanup: with the "Before-queue content filter", RFC3848
	information was not added to the headers. Carlos Velasco.
	File smtpd/smtpd.c.

20080621

	Cleanup: include unread byte count in the SMTP server's "lost
	connection after DATA (xx bytes)" logging. Files: smtpd/smtpd.c.

20080629

	Bugfix (introduced Postfix 2.2): multiple inconsistencies
	in SASL support after introduction of TLS.  The Postfix
	SMTP server 1) complained about plain-text SASL configuration
	details when SASL was forbidden for plain-text sessions,
	and 2) ignored the smtpd_tls_auth_only parameter setting
	when built without TLS support.  Files: smtpd/smtpd.c,
	smtpd/smtpd_check.c, smtpd/smtpd_sasl_glue.[hc],
	smtpd/smtpd_state.c.

	Some clarification about recipient address versus domain,
	and recipients per message versus session. File:
	proto/postconf.proto.

	The description of SASL authentication attributes was
	garbled.  File: pipe/pipe.c.

	Information: the master(8) server now logs the version
	besides the configuration directory upon "postfix reload".
	File: master/master.c.

20080717

	Cleanup: a poorly-implemented integer overflow check for
	TCP MSS calculation had the unexpected effect that people
	broke Postfix on LP64 systems while attempting to silence
	a compiler warning.  File: util/vstream_tweak.c.

20080721

	The cleanup server now rejects undisclosed_recipients_header
	parameter values with invalid message header syntax.
	File: cleanup/cleanup_message.c.

20080725

	Paranoia: defer delivery when a mailbox file is not owned
	by the recipient. Sebastian Krahmer, SuSE.  Files:
	local/mailbox.c, virtual/mailbox.c.

20080804

	Bugfix: dangling pointer in vstring_sprintf_prepend().
	File: util/vstring.c.

20080814

	Security: some systems have changed their link() semantics,
	and will hardlink a symlink, contrary to POSIX and XPG4.
	Sebastian Krahmer, SuSE. File: util/safe_open.c.

	The solution introduces the following incompatible change:
	when the target of mail delivery is a symlink, the parent
	directory of that symlink must now be writable by root only
	(in addition to the already existing requirement that the
	symlink itself is owned by root).  This change will break
	legitimate configurations that deliver mail to a symbolic
	link in a directory with less restrictive permissions.

20080815

	Feature: the milter_default_action parameter now accepts
	the "quarantine" action. This works like "accept" but also
	freezes the mail in the "hold" queue. File: milter/milter8.c.

	Robustness: transition from setjmp()/longjmp() to the signal
	mask saving/restoring versions sigsetjmp()/siglongjmp().
	These functions have been around for 15 years, but they
	have had bugs on supported platforms, so makedefs tests for
	them.  Files: makedefs, util/sys_defs.h, util/vstream.h.

20080822

	Cleanup: the proxymap_service_name and proxywrite_service_name
	parameters make the proxymap service names configurable.
	This paves the way for a future option where the proxymap
	services are accessible via TCP so that they can be shared
	among multiple Postfix hosts.  File: global/dict_proxy.c.

	Feature: MacOS X support for kqueue style event handling,
	with workaround for broken MacOS X versions.  Files:
	util/sys_defs.h, makedefs.

	Cleanup: the makedefs script now keeps its test programs
	in a directory makedefs.d, instead of inlining them as
	fragile "here documents". Files: makedefs, makedefs.d/*.

20080823

	Feature: IPv6 dns blocklist lookup. File: smtpd/smtpd_check.c.

20080824

	Cleanup: untangled the MacOS X version dependent sections
	in the makedefs script, to make future updates easier. File:
	makedefs.

	Cleanup: don't log multiple Milter "hold" actions for the
	same email message. File: cleanup/cleanup_milter.c.

20080826

	Cleanup: moving test programs from makedefs into a makedefs.d
	directory brought more pain than gain.

	Cleanup: untangled the Linux version dependent sections in
	the makedefs script, to make future updates easier. File:
	makedefs.

	Documentation: MacOS process limit configuration by Quanah
	Gibson-Mount.  File: proto/TUNING_README.html.

	Feature: smtp-sink -M option to terminate after receiving
	a specified number of messages. Laurent Gentil. File:
	smtpstone/smtp-sink.c.

	Bugfix (introduced Postfix 2.4): epoll file descriptor leak.
	With Postfix >= 2.4 on Linux >= 2.6, Postfix has an epoll
	file descriptor leak when it executes non-Postfix commands
	in, for example, user-controlled $HOME/.forward files.  A
	local user can access a leaked epoll file descriptor to
	implement a denial of service attack on Postfix. Data
	confidentiality and integrity are not affected.  File:
	util/events.c.

20080903

	Don't enable kqueue (which requires poll) support on
	MacOS X. File: makedefs.

	Cleanup: remove obsolete Rhapsody and MacOS targets from
	makedefs.

20080929

	Workaround: don't log "file has 2 links" warnings when the
	condition appears to be temporary. As kernels have evolved
	from non-interruptible system calls towards fine-grained
	locks, the showq command has become likely to observe a
	file while the queue manager is in the middle of a rename
	operation, when the file has links to both the old and new
	name.  File: global/mail_open_ok.c.

	Workaround: don't loop forever when write() fails with a
	persistent EAGAIN error on a writable file descriptor.
	File: util/write_buf.c.  

20081003

	Bugfix (introduced Postfix 2.1): when XFORWARD support was
	introduced with Postfix 2.1, the specification failed to
	clearly distinguish between missing and non-existent client
	information. This ambiguity affected the implementation:
	in $name expansions by delivery agents, unknown client
	hostnames could became empty strings (as if a submission
	was local), and local submissions could appear to originate
	from an SMTP-based content filter.  This was fixed with a
	a minor semantic change to the XFORWARD protocol.  Files:
	smtpd/smtpd.c, qmqpd/qmqpd.c, smtp/smtp_proto.c,
	cleanup/cleanup_envelope.c, proto/XFORWARD.html. Note: the
	changes to propagate local submission details were undone
	20082012.

	Feature: a DUNNO lookup result in per_sender_relayhost_maps
	stops the search without replacing the next-hop destination.
	File: trivial-rewrite/resolve.c.

20081005

	Bugfix: further refinements to the handling of missing or
	non-existent remote client attributes. Files: smtpd/smtpd.c,
	smtpd/smtpd.h.

	Documentation: the XFORWARD specification of the ADDR
	attribute did not agree with the actual on-the-wire protocol.
	Since we can't change already existing deployments, the
	spec has been updated. File: proto/XFORWARD_README.html.

20081006

	Bugfix: further refinements to the handling of remote client
	attributes.  Introduced a dummy "we have forwarded client
	info" record, to eliminate the need for the backwards
	incompatible queue file change that was introduced 20081003.
	Files: smtpd/smtpd.c, cleanup/cleanup_envelope.c,
	*qmgr/qmgr_message.c.

	Security: hardened the proxymap client, in case it ever
	ends up in a set-gid program. File: global/dict_proxy.c.

20081007

	Workaround: undo the proxymap client change. It broke
	chrooted servers when they attempted to reconnect to the
	proxy read/write service. File: global/dict_proxy.c.

20081008

	Safety: added checks that $queue_directory/pid is owned by
	root, and that $queue_directory/saved is owned by $mail_owner.
	File: conf/postfix-script.

20081010

	Feature: controls for opportunistic TLS protocols and
	ciphers. The smtp_tls_protocols, smtp_tls_ciphers, and
	equivalent parameters for lmtp and smtpd provide global
	settings; the SMTP client TLS policy table provides ciphers
	and protocols settings for specific peers.  Code by Victor
	Duchovni. Files: smtp/smtp.c, smtp/smtp_session.c, smtpd/smtpd.c
	and documentation.

20081012

	Cleanup: simplify the 20081003 changes and don't try to
	propagate local submission information through XFORWARD.
	Files: smtpd/smtpd.c, qmqpd/qmqpd.c, smtp/smtp_proto.c,
	cleanup/cleanup_envelope.c, proto/XFORWARD.html.

20081015

	Bugfix: GLIBC API version detection. Rob Foehl. File:
	util/sys_defs.h.

20081022

	Documentation: removed inapplicable daemon_timeout reference
	from qmgr(8), oqmgr(8), pickup(8). These daemons need to
	use a much shorter watchdog timer.

20081108

	Feature: smtp_sasl_tls_verified_security_options is no
	longer #ifdef SNAPSHOT.

	Feature: elliptic curve support. This requires OpenSSL
	version 0.9.9 or later. Victor Duchovni. Files: TLS_README,
	smtpd/smtpd.c, smtp/smtp.c, tls/tls_dh.c, tls/tls_certkey.c,
	tls/tls_server.c, tls/tls_client.c, tls/tls.h, tls/tls_misc.c.

	Bugfix (introduced Postfix 2.5): the Postfix SMTP server
	did not ask for a client certificate with "smtpd_tls_req_ccert
	= yes". Reported by Rob Foehl. File: smtpd/smtpd.c.

20081109

	Cleanup: confusing names of variables. File: smtpd/smtpd.c.

20081126

	Documentation: pcre_table(5) incorrectly claimed that the
	'x' flag supports #comment after text. File: proto/pcre_table.

20081202

	Cleanup: vstream_bufstat() provides a more systematic
	approach to get information about VSTREAM buffers. The
	vstream_peek() function is now a backwards compatibility
	wrapper.  Files: util/vstream.[hc].

	Cleanup: the SMTP server should warn about "lost connection
	after QUIT" only when the "." reply was pipelined together
	with the "QUIT" reply. File: smtpd/smtpd.c.

	Cleanup: the SMTP client's code was duplicating buffer
	management that was already done in the VSTREAM module.
	File: smtp/smtp_proto.c.

20081203

	Cleanup: adjust the VSTREAM buffer strategy when reusing
	an SMTP connection with a large TCP MSS value. File:
	smtp/smtp_reuse.c.

20081204

	Cleanup: state the SMTP client PIPELINING implementation's
	dependency on monotonic VSTREAM buffer size behavior, and
	add some checks for boundary cases with VSTREAM buffer size
	change requests. Files: util/vstream.c, smtp/smtp_proto.c.

20081205

	Fix 20081202 flush code. Victor Duchovni. File: smtpd/smtpd.c.

	Safety: add another check to "postfix check", in this case
	for group or other writable queue_directory. File:
	conf/postfix-script.

20081217

	Debugging: ad-hoc code to log the TLS error stack after
	VSTREAM read/write error.  File: tls/tls_bio_ops.c. In a
	better implementation, each I/O "object" would provide an
	optional error reporting method (besides timed_read and
	timed_write) that could be queried via the vstream module.

20081222

	Documentation: log the "*" pattern as the last transport
	map lookup. File: proto/transport.

20090103

	Documentation: rewrote NFS_README, to clarify the support
	status of Postfix and NFS, and to describe the NFS workarounds
	that Postfix actually implements.

20090106

	Feature: "postconf -# parametername ..." to comment out
	named parameter entries. Victor Duchovni.  File:
	postconf/postconf.c.

20090107

	Library: edit_file(3) module for cooperative editing of a
	file. Inspired by the postconf command, this creates a new
	version under a deterministic temporary name and renames
	it into place. The implementation uses an open/lock/stat
	protocol before updating the new file, and rename/unlock/close
	afterwards.  Based on pieces of code by Victor Duchovni,
	with minor improvements by Wietse.  Files: util/edit_file.[hc].

	Cleanup: the postconf command now uses the edit_file(3)
	module to manage collisions when multiple processes attempt
	to update the main.cf file.

20090108

	Feature: master_service_disable parameter (default: empty)
	to easily turn off/on master.cf services by type or by name
	and type. For example, to turn off the main SMTP listener
	use "master_service_disable = smtp.inet", and to turn off
	all TCP/IP listeners use "master_service_disable = inet".
	This immediately terminates all processes that provide the
	specified services. The master_service_disable feature does
	not distinguish services by their privacy property; some
	day, clients will not need to specify that anymore.  Files:
	global/mail_params.h, master/master.c, master/master_vars.c,
	master/master_ent.c.

	Bugfix (introduced May 19, 1997): removing a parameter
	setting from main.cf did not reset the parameter to its
	default value. This was a problem only in the master daemon.
	File: global/mail_conf.c, master/master_vars.c.

20090109

	Cleanup: "defer" action in access maps, and a corresponding
	access_map_defer_code parameter. No idea what was behind
	this omission.  Files: global/mail_params.h, smtpd/smtpd.c,
	smtpd/smtpd_check.c, proto/access.

	Workaround: specify "tcp_windowsize = 65535" (or less) to
	work around broken TCP window scaling implementations.  This
	is perhaps easier than collecting tcpdump output and tuning
	kernel parameters by hand.  See RELEASE_NOTES for how to
	change this setting without stopping Postfix.  Files:
	util/inet_connect.c, inet_listen.c, global/mail_params.[hc].

20090110

	Cleanup: create separate code modules for TCP window size
	handling, master.cf service name matching, and main.cf
	change monitoring.  Files: util/inet_windowsize.c,
	global/match_service.c, master/master_watch.c.

	Feature: TCP window size override for the Postfix SMTP/LMTP
	client, and for the smtp-source and smtp-sink test programs.
	Files: smtp/smtp_connect.c, smtpstone/smtp-source.c,
	smtpstone/smtp-sink.c.

20090114

	Bugfix: VERP now uses the Postfix original recipient, if
	available, because that is what the VERP consumer expects.
	Files: *qmgr/qmgr_deliver.c, bounce/bounce_notify_verp.c.

	Safety: extra check for broken third-party patches that
	allow file size limit < message size limit. This can cause
	mail to be stuck in the queue forever.

	Invisible change, in preparation for multi-instance support.
	Except for main.cf and master.cf, all files are optional
	for non-default Postfix configuration directories. File:
	conf/postfix-files.

20090115

	Cleanup: rewrote the 20090114 VERP bugfix, to replace code
	that "works" by code that is "right". Files: *qmgr/qmgr_deliver.c,
	bounce/bounce_notify_verp.c, global/verp_sender.c.

20090118

	Documentation: some URLs to enable/disable client-side TLS
	jumped into the middle of an enumeration.  File:
	proto/TLS_README.html.

20090119-21

	Feature: multi-instance manager plug-in API.  A sample
	multi-instance manager with instructions is available as
	$daemon_directory/postfix-wrapper. The plug-in API itself
	is described in postfix-wrapper(5).  Files: postfix/postfix.c,
	global/mail_params.[hc], proto/postfix-wrapper,
	conf/postfix-wrapper, conf/postfix-script, conf/postfix-files.

	Support to check/update shared files only in the context
	of the default Postfix instance. Files: conf/post-install,
	conf/postfix-script.

20090122

	Refinements: the multi-instance manager always replaces
	"start" by "check" when a Postfix instance is multi-instance
	disabled, so that problems will still be reported; polish
	documentation; delete unnecessary multi_instance_order
	parameter.  Files: conf/postfix-wrapper, proto/postfix-wrapper,
	global/mail_params.[hc] and documentation.

	Bugfix: the data_directory was not automatically created!
	File: conf/postfix-files.

20090123

	More little fixes in the "trivial but useful" postfix-wrapper
	including instructions. It's ready for testing in the field.
	File: conf/postfix-wrapper.

20090125

	Documentation: more precise description of multi-instance
	manager API, and minor edits of the example program. Files:
	conf/postfix-wrapper, proto/postfix-wrapper.

20090208

	Cleanup: enable multi-instance shared-file logic only when
	the instance is listed in multi_instance_directories.  Files:
	conf/post-install, conf/postfix-script.

20090210

	Feature: specify "reject_tempfail_action = defer" to
	immediately defer a remote SMTP client request after a
	reject-type restriction fails with a temporary error.  Based
	on code by Rob Foehl. File: smtpd/smtpd_check.c.

	Feature: finer control of reject_tempfail_action with
	unknown_address_tempfail_action, unverified_sender_tempfail_action
	unverified_recipient_tempfail_action, and
	unknown_helo_hostname_tempfail_action. See documentation
	for details.  File: smtpd/smtpd_check.c.

20090211

	Workaround: pass the SMTP server socket's local and remote
	peer address information to the Dovecot authentication server.
	This is incomplete code: it ignores XCLIENT server address
	overrides.  File: xsasl/xsasl_dovecot_server.c.

20090212

	Testing revealed that with mumble_tempfail_action=defer,
	the "defer" action was ignored.  Cause: the DEFER_IF_PERMIT[0-9]
	macros lost the SMTPD_CHECK_REJECT result value.  File:
	smtpd/smtpd_check.c.

	Feature: stress-dependent smtpd_timeout (normal: 300s,
	overload: 10s), smtpd_hard_error_limit (normal: 20, overload:
	1) and smtpd_junk_command_limit (normal: 100, overload: 1).
	Files: global/mail_params.h, global/mail_conf_nint.c,
	master/*_server.c, smtpd/smtpd.c.

20090213

	Fine tuning: don't enforce smtpd_junk_command_limit for
	XCLIENT and XFORWARD commands.  These commands can be issued
	only by authorized clients. File: src/smtpd/smtpd.c.

20090215

	Feature: the Postfix SMTP server hangs up after replying
	with "521". This makes overload handling more effective. 
	See also RFC 1846.  File: smtpd/smtpd.c.

	Feature: postmulti mult-instance manager command, very
	lightly tested. The MULTI_INSTANCE_README still needs to
	be proofread.  Originally by Victor Duchovni.  Files:
	src/postmulti/*, proto/MULTI_INSTANCE_README.html,
	conf/postmulti-script.

20090216-24

	Cleanup: assorted code cleanups in postmulti.  File:
	src/postmulti/postmulti.c.

20090223

	Cleanup: multiple instances of the same global.  Files:
	util/inet_windowsize.c, util/inet_listen.c.

20090228

	Cleanup: the Postfix SMTP server now maintains a per-session
	"improper command pipelining detected" flag. This flag can
	be tested at any time with reject_unauth_pipelining, and
	is raised whenever a client command is followed by unexpected
	commands or message content.  Files: smtpd/smtpd.c,
	smtpd/smtpd_check.c.

	Logging: the Postfix SMTP server now logs the first command
	pipelining transgression as "improper command pipelining
	after <command> from <hostname>[<hostaddress>]".

	Cleanup: after DATA command failure, log "(approximately
	XX bytes)" only if Postfix actually accepted the DATA
	command.  File: smtpd/smtpd.c.

20090303

	Cleanup: word smithing of "sendmail -bv" probe message.
	File: sendmail/sendmail.c.

	Cleanup: OpenLDAP now provides a sane solution for conflicts
	with PAM ldap-over-tls. Victor Duchovni.  File: global/dict_ldap.c.

20090304

	Cleanup: skip over suspended or throttled queues while
	looking for delivery requests. File: *qmgr/qmgr_transport.c.

20090305

	Bugfix: in the "new queue manager", the _destination_rate_delay
	code needed to postpone the job scheduler updates after
	delivery completion, otherwise the scheduler could loop on
	blocked jobs.  Victor & Wietse.  File: qmgr/qmgr_entry.c,
	qmgr/qmgr_queue.c, qmgr/qmgr_job.c.

	Cleanup: report a "queue file write error", instead of
	passing though bogus 2xx replies from proxy filters to SMTP
	clients.  File: smtpd/smtpd_proxy.c.

20090307

	Cleanup: with "lmtp_assume_final = yes", the Postfix LMTP
	delivery agent assumes that delivery is final when talking
	to an LMTP server that announces no DSN support.  Otherwise,
	the Postfix LMTP delivery agent assumes that delivery is
	"relayed", to maintain compatibility with simple LMTP-based
	content filters.  Based on code by Michel Sebastien, ATOS
	Origin.  File: smtp/smtp_rcpt.c.

20090310

	Bugfix: Postfix used mumble_concurrency_failed_cohort_limit
	instead of mumble_destination_concurrency_failed_cohort_limit
	as documented. File: global/mail_params.h.

20090330

	Cleanup: add (Resent-) From:, Date:, Message-ID: or To:
	headers only when clients match $local_header_rewrite_clients.
	Specify "always_add_missing_headers = yes" for backwards
	compatibility.  Adding such headers to remote mail can break
	DKIM signatures that cover headers that are not present.
	File: cleanup/cleanup_message.c.

20090415

	Workaround: to avoid unnecessary "fatal" delivery agent
	exits, delivery agents retry getting a shared lock on a
	queue file.  This is necessary since the queue manager's
	behavior was changed years ago to refill the in-memory
	recipient list before it was completely empty.  File:
	global/deliver_request.c.

	Documentation: updated STRESS_README.

20090416

	Workaround: some AWK implementations have a limit of 10
	output files and lack a working close() function. It is too
	much trouble to find out what systems have this limitation,
	and where, if any, such systems store their XPG4-compatible
	AWK program.  So instead we generate a stream of here
	documents and let the shell split the stream into files.
	File: postconf/extract.awk.

	Documentation: clarification of certificate file usage.
	Victor Duchovni.  Files: proto/postconf.proto,
	proto/TLS_README.html.

	Feature: pass a "TLS is active" flag to the server-side
	SASL support.  Based on code by Timo Sirainen, except that
	the implementation uses an extensible API so that it will
	be less painful to add more attributes in future Postfix
	versions.  Files: xsasl/xsasl.h, xsasl/xsasl_*server.c,
	smtpd/smtpd_sasl_glue.c.

20090417

	Documentation: re-generate READMEs and manpages for updated
	hyperlinks.

	Documentation: missing hyperlinks and missing parameters
	in manpages. File: mantools/postlink, mantools/check-postlink.

20090418

	Cleanup: use the extensible API to pass SMTP client address
	information to the dovecot SASL plugin, and prepare for
	passing server address information. Files: xsasl/xsasl.h,
	xsasl/xsasl_dovecot_server.c, smtpd/smtpd_sasl_glue.c.

	Same extensible API transformation for the SASL client-side
	code to make future extensions less painful. Files:
	xsasl/xsasl.h, xsasl/xsasl*client.c, smtp/smtp_sasl_glue.c.

	More postlink fixes. File: mantools/postlink.

20090419

	Bugfix: don't re-enable SIGHUP if it is ignored in the
	parent. This may cause random "Postfix integrity check
	failed" errors at boot time (POSIX SIGHUP death), causing
	Postfix not to start. We duplicate code from postdrop and
	thus avoid past mistakes.  File: postsuper/postsuper.c.

	Robustness: don't re-enable SIGTERM if it is ignored in the
	parent. Files: postsuper/postsuper.c, postdrop/postdrop.c.

20090422

	Undo delivery agent change 20090415. The queue manager never
	locks a queue file to read additional recipients into memory,
	so if a delivery agent runs into a locked file, then something
	is seriously wrong. File: global/deliver_request.c.

20090424

	Compatibility: the Postfix SMTP client no longer uses the
	obsolete SSLv2 by default for opportunistic encryption.
	This has nothing to do with security (we're willing to send
	plaintext over an unauthenticated connection) but with the
	loss of advanced options that give better performance.
	Victor Duchovni. Files: proto/postconf.proto, global/mail_params.h.

20090426

	Feature: more accurate support for Milter macros {mail_addr}
	and {rcpt_addr}, and new support for Milter macros {mail_host},
	{mail_mailer}, {rcpt_host}, and {rcpt_mailer}.  Files:
	milter/milter.[hc], smtpd/smtpd.[hc], smtpd/smtpd_milter.c,
	smtpd/smtpd_resolve.c.

	Feature: support to report rejected recipients to Milters
	(SMFIP_RCPT_REJ). Postfix reports the event as decribed in
	Sendmail 8.14.0 documentation: {rcpt_mailer} = "error",
	{rcpt_host} = enhanced status code (e.g., "5.7.1"), and
	{rcpt_addr} = reason to reject (e.g., "Relay access denied").
	Files: milter/milter.[hc], milter/milter8.c, smtpd/smtpd.[hc],
	smtpd/smtpd_milter.c.

20090427

	Feature: Milter support for replacing the envelope sender
	and adding recipients (SMFIR_CHGFROM, SMFIR_ADDRCPT_PAR).
	This support currently ignores ESMTP command parameters.
	Files: milter/milter8.c, cleanup/cleanup_milter.c.

20090428

	Compatibility: to make all the new Milter features usable,
	raise the default milter_protocol setting from 2 to 6.
	This has been tested with a Sendmail 8.14 libmilter.
	File: global/mail_params.h.

	Bugfix: don't disable MIME parsing with smtp_header_checks,
	smtp_mime_header_checks, smtp_nested_header_checks or with
	smtp_body_checks. Bug reported by Victor. File: smtp/smtp_proto.c.

	Code cleanups: respect VSTRING invariants by using VSTRING_RESET
	and VSTRING_TERMINATE instead of directly groping the
	underlying character buffer. Files: global/dsn_buf.c,
	milter/milter8.c.

20090507

	main.cf:tls_random_source now defaults to /dev/arandom on
	OpenBSD.  This device was introduced before Postfix development
	began. Files: util/sys_defs.h, global/mail_params.h.

20090510

	Code cleanups: while emulating SMTP client requests for
	Milter applications, use user@domain form addresses as
	required by the SMTP protocol, instead of bare usernames.
	This avoids hard to debug errors from some Milter applications.
	Files: cleanup/cleanup_envelope.c, cleanup/cleanup_extracted.c,
	cleanup/cleanup_addr.c.

20090511

	Code cleanups: don't clobber -o command-line arguments so
	that Linux people can debug daemon command lines more easily.
	Files: master/*server.c.

20090513

	Code cleanups: better parsing of Postfix daemon "-o"
	command-line options, with better error handling.  Files:
	master/*server.c.

20090518

	Documentation: missing dummy entries for lmtp_mumble_checks.
	File: proto/postconf.proto.

20090519

	Bugfix (introduced: Postfix 2.3, but did not cause trouble
	until 20090427).  Queue file corruption with (smtpd_milters
	or non_smtpd_milters) enabled, AND with delay_warning_time
	enabled, AND with short envelope sender addresses (e.g.,
	local submissions with bare usernames, but not bounces).
	The queue file would be corrupted when the delay_warning_time
	record was marked as "done" after sending the "your mail
	is delayed" notice.  File: qmgr/qmgr_message.c.

20090522

	Bugfix (introduced: Postfix 2.3).  The cleanup server
	rejected mail with records of type REC_TYPE_DRCP (recipient
	deleted by Milter), but such records could be present in
	mail re-submitted with "postsuper -r". Found during code
	review. Files: global/record.h, cleanup/cleanup_envelope.c.

20090524

	Feature: new postcat options: -e (print envelope), -h (print
	header), and -b (print body). Specify "postcat -bh" to
	suppress information about envelope records, and "postcat
	-h" to get the message header only. With large messages,
	"postcat -h" is much faster than manually stripping the
	message body from the output. File: postcat/postcat.c.

20090528

	Bugfix (introduced: Postfix 2.6 change 20080629): with
	plaintext sessions, smtpd_tls_auth_only=yes caused spurious
	warnings with reject_authenticated_sender_login_mismatch,
	and broke reject_unauthenticated_sender_login_mismatch and
	reject_sender_login_mismatch.  Based on fix by Victor
	Duchovni. File: smtpd/smtpd_check.c.

20090603

	Cleanup: Postfix 2.3 adopted a file descriptor passing
	workaround for OpenBSD. This workaround was hard-coded for
	all platforms because there were no have adverse effects.
	This is no longer the case: OpenBSD is fixed, and NetBSD
	does not like the workaround. We now default back to the
	non-workaround code and turn on the workaround dynamically.
	Files: util/unix_send_fd.c, unix_recv_fd.c, unix_pass_fd_fix.c.

20090605

	Portability: modern kernels below ancient user-land. File:
	makedefs.

20090606

	Feature: post-Milter header checks, with all actions except
	PREPEND. To enable, specify for example "milter_header_checks
	= pcre:/path/to/file".  Files: cleanup/cleanup_init.c,
	cleanup/cleanup_milter.c, cleanup/cleanup_extracted.c,
	cleanup/cleanup_state.c.

	Bugfix: non-portable command pathname in postmulti-script.

	Safety: "postmulti -e destroy" no longer attempts to remove
	files that are created AFTER "postmulti -e create". Rationale:
	by design, postfix queue/data directories are not trusted;
	actions within those directory trees must not affect files
	outside those those trees (e.g. by symlink race attacks).
	We don't want to be nailed with a bunch of CVEs for unsafe
	pathname handling.  File: conf/postmulti-script.

20090607

	Cleanup: revise milter_header_checks action implementation,
	and avoid redundant logging and work when milter_header_checks
	and Milters make redundant or conflicting decisions. File:
	cleanup_milter.c.

20090614

	Preliminary postscreen triage server for all inbound SMTP
	connections.  This is not a proxy: it rejects bad clients
	and forwards the rest of the connections to a real Postfix
	SMTP server. The initial version does a simple "friend or
	foe" based on whether the client starts talking too soon.
	Decisions are cached, so "good" clients have no overhead.
	File: postscreen/postscreen.c.

	Cleanup: more robust code for receiving file descriptors
	via the "pass" master service protocol.  File:
	util/upass_listen.c.

20090617

	Temporary helper daemon that does parallel DNSBL lookups
	for postscreen(8). It logs successful lookups to the maillog
	file without blocking the client. postscreen(8) will use
	the results in a later non-production version. To enable
	DNSBL lookups, specify "postscreen_dnsbl_sites = name,
	name, etc". and restart postscreen(8) with "postfix reload".
	File: src/dnsblog/dnblog.c.

20090618

	postscreen(8) logging and actions are now documented in the
	postscreen(8) manpage. When a client is listed in DNSBLs
	specified with postscreen_dnsbl_sites, it is no longer
	whitelisted. Instead the number of blocklist hits is logged.
	File: postscreen/postscreen.c.

20090619

	postscreen(8) by default no longer immediately drops
	connections. Specify "postscreen_greet_action = drop" and
	"postscreen_hangup_action = drop" for the old behavior.
	There is also a new postscreen_dnsbl_action parameter, for
	completeness.  File: postscreen/postscreen.c.

20090708

	Portability: FreeBSD 8 has closefrom(). File: uti/sys_defs.h.

20090710

	Bugfix (introduced Postfix 2.3): Postfix got out of sync
	with a Milter application after the application sent a
	"quarantine" request at end-of-message time. The milter 
	application would still be in the end-of-message state,
	while Postfix would already be working on the next SMTP
	event (typically, QUIT or MAIL FROM).  Problem diagnosed
	with help from Alban Deniz. File: milter/milter8.c.

20090711-2

	New "event_server" Postfix server framework. It is similar
	to the "multi_server" framework but does not manage client
	I/O events.  This framework is suitable for servers such
	as postscreen that have complex event management requirements.
	File: master/event_server.c.

	New event_fork() primitive to resume event processing in a
	child process after it is created with fork(). This is
	needed by postscreen to complete work-in-progress in the
	background after "postfix reload". File: util/events.c.

	Cleanup: postscreen migrated to the "event_server" framework.
	File: postscreen/postscreen.c.

20090712

	Cleanup: ${multi_instance_name:postfix}${multi_instance_name
	?$multi_instance_name} garbage in Postfix logging is now
	hopefully gone.  File: global/mail_task.c.

20090715

	Documentation: as of Postfix 2.6, the reject_unauth_pipelining
	feature can be used meaningfully at any protocol stage.
	File: proto/postconf.proto.

20090717

	Cleanup: postscreen PREGREET detection now uses non-destructive
	read, so that the real SMTP server can still receive the
	HELO command (apparently some sites allow pregreeters to
	talk to their servers).  File: postscreen/postscreen.c.

20090805

	Bugfix: don't panic when an unexpected smtpd access map is
	specified. File: smtpd/smtpd_check.c.

20090918

	Bugfix (introduced Postfix 2.3): with Milter RCPT TO replies
	turned off, there was no automatic flush-before-read on the
	smtpd-to-milter stream, because the read was done on the
	cleanup-to-milter stream. Problem reported by Stephen Warren.
	File: milter/milter8.c.

20091005

	Bugfix: core dump while printing error message for malformed
	%<letter> sequence in LDAP, MySQL or PostgreSQL configuration.
	File: global/db_common.c. Fix by Victor Duchovni.

20091006

	Feature: "postscreen_whitelist_networks = $mynetworks" (the
	default) to avoid problems with buggy SMTP implementations
	in network appliances.  Note: this feature never uses the
	remote SMTP client hostname.  Files: global/addr_match_list.[hc],
	postscreen/postscreen.c.

	Feature: postscreen_blacklist_networks (default: empty) to
	permanently blacklist hosts or networks. Address syntax is
	as with mynetworks. Note: this feature never uses the remote
	SMTP client hostname.  File: postscreen/postscreen.c.

	Feature: postscreen_blacklist_action (default: continue)
	to control what happens with a permanently blacklisted
	client. File: postscreen/postscreen.c.

20091007

	Feature: hostname-based check_client_{mx,ns}_access,
	check_reverse_client_hostname_{mx,ns}_access (the client
	IP address is not used). Rob Foehl.  Files: smtpd/smtpd_check.c,
	global/mail_params.h, proto/postconf.proto, mantools/postlink.

20091008

	Documentation: restructured the postscreen(8) manpage
	as a sequence of tests. File: postscreen/postscreen.c.

20091012

	Bugfix: postmulti did not skip commands with -p.  Luca
	Berra. File: postmulti/postmulti.c.

20091023

	Feature: specify "smtpd_command_filter = pcre:/file/name"
	to replace remote SMTP client commands before they are
	executed by the Postfix SMTP server. This a last-resort
	tool to fix inter-operability problems.  See examples in
	the postconf(5) manual page.  File: smtpd/smtpd.c.

20091026

	Cleanup: changed parameter evaluation order so that the
	multi_instance_wrapper parameter value is evaluated after
	the command and daemon directory parameters. File:
	global/mail_params.h.

20091101

	Performance: specify "smtpd_proxy_options = speed_adjust"
	to receive an entire message before sending it through a
	before-queue content filter. This reduces the number of
	simultaneous content filtering processes, and thus, the
	system memory requirements.  Files: smtpd/smtpd.[hc],
	smtpd/smtpd_proxy.[hc].

20091103-4

	Cleaned up the speed-adjust code, streamlined the error
	handling, and updated documentation. Files: smtpd/smtpd.[hc],
	smtpd/smtpd_proxy.[hc], proto/SMTPD_PROXY_README.html.

20091105

	Cleaning up after speed_adjust introduction: smtpd segfault
	caused by an incomplete API change; refined the queue space
	check; release scratch space immediately after delivering
	mail to the before-queue filter. Files: smtpd.c, smtpd_proxy.c.

20091110

	Workaround: specify "smtp_tls_block_early_mail_reply = yes"
	to detect a mail hijacking attack based on a TLS protocol
	vulnerability (CVE-2009-3555). The attack involves prepending
	malicious HELO/MAIL/RCPT/DATA commands to a Postfix SMTP
	client TLS session. The attack would succeed with non-Postfix
	SMTP servers that reply to the malicious commands after
	negotiating the Postfix SMTP client TLS session. File:
	smtp/smtp_proto.c.

20091113

	Workaround: skip interfaces without netmask, to avoid
	segfaults (reported by Dmitry Karasik). Don't supply a dummy
	null netmask, as that would turn Postfix into an open relay
	(mynetworks = 0.0.0.0/0). File: util/inet_addr_local.c.

	Bugfix: forgot to flush output to the smtpd_proxy speed-adjust
	buffer before truncating the file. Reported by Mark Martinec,
	fix by Victor Duchovni. File: smtpd/smtpd_proxy.c.

20091114

	Feature: specify "smtp_reply_filter = pcre:/file/name" to
	replace remote SMTP server reply lines before they are
	parsed by the Postfix SMTP client. This a last-resort tool
	to fix inter-operability problems.  See examples in the
	postconf(5) manual page.  File: smtp/smtp_chat.c.

	Safety: don't send postmaster notifications to report
	problems delivering (possible) postmaster notifications.
	File: smtp/smtp_connect.c.

20091121

	Feature: sender_dependent_default_transport_maps, to override
	the default transport in a sender-dependent manner. This
	is not a transport_maps override, and therefore it does not
	use the transport_maps syntax for null transport, null
	nexthop, or null email address.

20091127

	Usability: the Postfix SMTP client now logs a warning that
	wrappermode TLS is not supported, when configured to connect
	to port smtps/465. File: smtp/smtp_connect.c.

20091203

	Safety: the postscreen daemon logs a warning when table
	lookup is slow. Slow lookups cause postscreen to fall behind,
	and worse, to catch up in bursts, which results in overload
	elsewhere.  File: postscreen/postscreen.c.

20091206

	Feature: by popular demand, the Postfix SMTP server now
	logs the before-queue content filter's end-of-message
	accept/reject response.  File: smtpd/smtpd.c.

20091209

	Portability: as the result of continuous improvement,
	Berkeley DB no longer allows fork-then-close. File:
	postscreen/postscreen.c.

	Bugfix: sender_dependent_relayhost_maps did not reject an
	empty lookup result, and did not recognize lookup errors,
	thus treating errors as "not found". Problem found during
	code maintenance. File: trivial-rewrite/resolve.c.

	Cleanup: the postscreen daemon now applies the permanent
	whitelist first. It is a safety feature that prevents mail
	from being blocked. File: postscreeb/postscreen.c.

20091224

	Bugfix (introduced 20041215): dict_dbm_sequence() did not
	release the shared lock when the end of the sequence was
	reached. File: util/dict_dbm.c.

20091227

	Cleanup: postscreen and verify periodic cache cleanup
	(default: 12 hours after the previous cache cleanup run).
	This is based on a new dict_cache(3) module that implements
	a generalized version of the tlsmgr(8) cache maintenance
	code.  Once the new dict_cache(3) code is burned in, the
	tlsmgr(8) will be migrated to it. See the RELEASE_NOTES for
	user interface details. Files: util/htable.[hc], util/dict_ht.c,
	util/dict_cache.[hc], postscreen/postscreen.c, verify/verify.c.

	Bugfix: the event handler starved I/O events when a timer
	call-back routine scheduled a zero-delay timer request.
	This bug was exposed when adding the new dict_cache(3)
	module for cache expiration.  File: util/events.c.

20091228

	Cleanup: postscreen and verify periodic cache cleanup is
	now optional (specify a null time interval between cache
	cleanup runs).

20091229

	Cleanup: the address_verify_poll_count default parameter
	value is now stress-dependent, so that the Postfix SMTP
	server will not wait (up to 6 seconds) for the address
	verification result. File: global/mail_params.h.

	Final solution for the I/O event starvation problem when a
	timer call-back schedules a zero-delay timer request.  File:
	util/events.c.

20091231

	Cleanup: the non-shared, in-memory hash table is now
	accessible as the "internal:" map type. This simplifies
	code by eliminating some special cases. Files: util/dict_ht.c,
	util/dict_open.c, and documentation.

20100101

	Bugfix: the mantools/postlink script applied hyperlinks
	for the "virtual:" transport to "/etc/postfix/virtual:".
	Symptom reported by Christoph Anton Mitterer.

20100102

	Workaround: don't report bogus Berkeley DB close errors as
	fatal errors. All operations before close are already error
	checked, so the data is known to be safe.  File: util/dict_db.c.

20100107

	Documentation: the access(5) manual page did not document
	the "send 521 and disconnect" behavior in the Postfix SMTP
	server (introduced with Postfix 2.6). File: proto/access.

	Bugfix: the pickup daemon did not discard messages that
	were requeued after all recipients were delivered (or
	bounced), and the cleanup server tried to bounce such
	messages. Files: pickup/pickup.c, global/cleanup_user.h.

	Future proofing: redundant code in postdrop to reject a
	submission without recipient record. File: postdrop/postdrop.c.

20100109

	Cleanup: "postcat -q" will now access files in the "saved"
	queue directory (for corrupted queue files). As before, the
	"postsuper" command will not, to avoid suddenly deleting
	such files. Files: global/mail_queue.h postcat/postcat.c.

20100113

	Cleanup: don't supply the "-o stress" command-line option
	with a single-process service. File: master/master_ent.c.

20100115

	Bugfix: the valid_hostname() fuction did not set the
	"non-numeric" flag after encountering the '-' character.
	Reported by Jan Schampera.  File: util/valid_hostname.c.

20100116

	Documentation: the content_filter and FILTER features never
	supported the special cases of transport_maps. References
	to transport_maps syntax are now removed from content filter
	discussions.  Files: proto/postconf.proto, proto/FILTER_README.

	Workaround: as of Postfix 2.3 the VRFY command did not allow
	a mailbox address inside <>, which broke expectations.  RFC
	2821 (and 5321) is vague about the VRFY request format, but
	spends lots of text on the reply format.  File: smtpd/smtpd.c.

20100117

	Cleanup: when a content_filter parameter or FILTER command
	specifies an empty next-hop destination, the queue manager
	now uses the recipient domain instead of $myhostname. Specify
	"default_filter_nexthop = $myhostname" for compatibility
	with Postfix 2.6 and earlier, or specify a non-empty next-hop
	filter destination.  Files: *qmgr/qmgr_message.c proto/access,
	proto/header_checks, proto/postconf.proto, proto/FILTER_README.

20100120

	Cleanup: detect illegal pipelining after HELO, EHLO.  File:
	smtpd/smtpd.c.

20100128

	Documentation: streamlined the decriptions of protocol and
	cipher tweaks. Victor Duchovni. Files: proto/TLS_README,
	proto/postconf.proto.

20100131

	Documentation: the address verification database is now
	persistent by default. This, combined with the now default
	stress-dependent configuration, improves the performance
	limits and simplifies database maintenance.  Files:
	proto/ADDRESS_VERIFICATION_README, verify/verify.c.

	Cleanup: undo the proxymap and trivial-rewrite max_idle=1s
	override that was introduced with Postfix 2.3. It did not
	help to retire long-lived proxymap or trivial-rewrite
	processes on busy servers, and worsened performance on
	low-traffic servers. The reduced ipc_ttl value (introduced
	with Postfix 2.4) already solves the problem of retiring
	long-lived proxymap or trivial-rewrite processes.  Files:
	proxymap/proxymap.c, trivial-rewrite/trivial-rewrite.c.

20100202

	Documentation: major revision of SASL_README with many
	details on how to configure Cyrus SASL internals. Patrick
	Koetter.  File: proto/SASL_README.html

20100204

	Feature: added "forward_secrecy" option for Cyrus SASL.
	File: xsasl/xsasl_cyrus_security.c.

20100206

	Bugfix (from day zero): the local delivery agent returned
	undeliverable mail to the envelope sender instead of the
	owner- alias, when delivering to command or file. This
	reuses the workaround that was implemented to report a
	Delivered-To: loop. Files: local/file.c, local/command.c,
	local/recipient.c, local/bounce_workaround.c.

20100209

	The tcp_table(5) interface is now part of the stable release.
	The last protocol change was in Postfix 2.1. File:
	util/dict_open.c.

20100305

	Feature: reject_rhsbl_reverse_client, to reject a remote
	SMTP client based on its unverified reverse hostname.  Code
	by Noel Jones. Files: smtpd/smtpd_check.c, proto/postconf.proto.

	Feature: smtp_address_preference (default: ipv6) to control
	the order in which the Postfix SMTP client will connect to
	a destination that has IPv6 and IPv4 addresses with equal
	MX preference. Files: global/mail_params.h, smtp/smtp.c,
	smtp/smtp_params.c, smtp/smtp_addr.c, dns/dns_rr.c,
	and documentation.

20100321

	Feature: allow Milter applications to use a lower protocol
	version than the version that Postfix is configured for.
	Based on an idea by Kouhei Sutou.  File: milter/milter8.c.

20100322

	Bugfix (introduced 20100305) the new smtp_address_preference
	feature was not tested with LMTP support. Problem reported
	by Stefan Foerster. File: smtp/smtp.c.

20100407

	Bugfix (introduced 20100305): reject_rhsbl_reverse_client
	was skipped if the forward-confirmed reverse DNS (FCRDNS)
	remote SMTP client hostname was "unknown".  Victor Duchovni.
	File: smtpd/smtpd_check.c.

20100422

	Workaround (introduced: postfix-19990906 a.k.a. Postfix
	0.8.0).  The Postfix local delivery agent did not properly
	distinguish between "address has no extension" and "address
	has an extension, but the extension is invalid". In both
	cases it would run only the full recipient local-part through
	the alias maps.  Instead, it now drops the faulty extension
	from the recipient address local-part (it would be too
	error-prone to replace all tests for "no extension" by tests
	for "no valid extension".  File: local/recipient.c.

20100430

	Feature: customized hard/soft reject responses by Jason
	Parsons.  File: smtpstone/smtp-sink.c.

20100515

	Bugfix (introduced Postfix 2.6): the Postfix SMTP client
	XFORWARD implementation did not skip "unknown" SMTP client
	attributes, causing a syntax error when sending a PORT
	attribute. Reported by Victor Duchovni. File: smtp/smtp_proto.c.

20100526

	Cleanup: a unit-test driver was not updated after an internal
	API change. Vesa-Matti J Kari File: milter/milter.c.

20100529

	Portability: OpenSSL 1.0.0 changes the priority of anonymous
	cyphers. Victor Duchovni. Files: postconf.proto,
	global/mail_params.h, tls/tls_certkey.c, tls/tls_client.c,
	tls/tls_dh.c, tls/tls_server.c.

	Portability: Mac OS 10.6.3 requires <arpa/nameser_compat.h>
	instead of <nameser8_compat.h>. Files: makedefs, util/sys_defs.h,
	dns/dns.h.

20100531

	Robustness: skip LDAP queries with non-UTF-8 search strings
	(in anticipation of UTF8SMTP support).  File: global/dict_ldap.c.

	Strict UTF-8 validator per RFC 3629. File: util/valid_utf8_string.c.

20100601

	Cleanup: Postfix LDAP client support for RFC 2255 LDAP URLs.
	Victor Duchovni. Files: proto/ldap_table global/dict_ldap.c.

	Safety: Postfix processes log a warning when a matchlist
	has a #comment at the end of a line (for example mynetworks
	or relay_domains).  File: util/match_list.c.

	Portability: Berkeley DB 5.x has the same API as Berkeley
	DB 4.1 and later. File: util/dict_db.c.

20100610

	Bugfix (introduced Postfix 2.2): Postfix no longer appends
	the system default CA certificates to the lists specified
	with *_tls_CAfile or with *_tls_CApath.  This prevents
	third-party certificates from getting mail relay permission
	with the permit_tls_all_clientcerts feature.  Unfortunately
	this may cause compatibility problems with configurations
	that rely on certificate verification for other purposes.
	To get the old behavior, specify "tls_append_default_CA =
	yes".  Files: tls/tls_certkey.c, tls/tls_misc.c,
	global/mail_params.h.  proto/postconf.proto, mantools/postlink.

20100615

	Cleanup: the master no longer logs "process P killed with
	signal S" when it shuts down a running service (for example,
	the service is removed from master.cf, or the service is
	disabled via the main.cf master_service_disable parameter).
	File: master/master_spawn.c.

20100617

	Feature: read-only sqlite support based on code by Axel
	Steiner and documentation by Jesus Garcia Crespo. Files:
	conf/postfix-files, mantools/postlink, proto/DATABASE_README.html,
	proto/Makefile.in, proto/INSTALL.html, proto/mysql_table,
	proto/pgsql_table, proto/sqlite_table, proto/SQLITE_README.html,
	global/Makefile.in, global/mail_dict.c, global/dict_sqlite.c,
	global/dict_sqlite.h, postconf/postconf.c, postfix/postfix.c.

20100618

	Cleanup: SQLite read-only driver and documentation.  Files:
	global/dict_sqlite.c, proto/mysql_table, proto/SQLITE_README.html.

20100707

	Completed the 20100610 bugfix. File: tls/tls_misc.c.

20100714

	Compatibility with Postfix < 2.3: fix 20061207 was incomplete
	(undoing the change to bounce instead of defer after
	pipe-to-command delivery fails with a signal). Fix by Thomas
	Arnett. File: global/pipe_command.c.

20100715

	Convenience: "postconf name=value ..." is now equivalent to
	"postconf -e name=value ...".  File: postconf/postconf.c.

20100724

	Feature: INFO header/body_checks action for non-warning
	messages (for example, to log all Milter-inserted headers).
	File: global/header_body_checks.c, proto/header_checks.

	Cleanup: after-filter Postfix SMTP servers now log before-filter
	queue IDs. For this, the XFORWARD protocol was extended
	with an IDENT attribute for the before-filter queue ID.
	This code was started in Postfix 2.1, but it was never
	finished due to time constraints.  Files: smtpd/smtpd.[hc]
	smtpd/smtpd_proxy.c, smtpd/smtpd_sasl_proto.c,
	*qmgr/qmgr_messsage.c, *qmgr/qmgr_deliver.c,
	global/deliver_request.[hc], global/mail_proto.h,
	global/deliver_pass.c, smtp/smtp_proto.c.

20100727

	Bugfix: the milter_header_checks parser provided only the
	actions that change the message flow (reject, filter,
	discard, redirect) but disabled the non-flow actions (warn,
	replace, prepend, ignore, dunno, ok).  File:
	cleanup/cleanup_milter.c.

20100827

	Performance: fix for poor smtpd_proxy_filter TCP performance
	over loopback (127.0.0.1) connections. Problem reported by
	Mark Martinec.  Files: smtpd/smtpd_proxy.c.

	Bugfix: the Postfix SMTP client no longer appends the local
	domain when looking up a DNS name without ".".  Specify
	"smtp_dns_resolver_options = res_defnames" to get the old
	behavior, which can produce unexpected results. Files:
	smtp/smtp.c, smtp/smtp_params.c, smtp/smtp_addr.c.

20100828

	Refactoring: postscreen source code broken up into multiple
	files, and identifiers updated to match changes in their
	purpose.  This will be the baseline for adding support for
	DNSBL weighting, then a dummy engine to collect forensic
	evidence with the option of future protocol checks.  Files:
	postscreen/*.[hc], Makefile.in.

20100829

	Postscreen DNSBL support for optional fixed-string filters
	and optional integral weight factors (use negative weights
	for whitelisting). See RELEASE_NOTES and postconf(5) for
	details.  Files: postscreen/postscreen_dnsbl.c,
	proto/postconf.proto, mantools.postlink, global/mail_params.h.

	Incompatibility: the postscreen-to-dnsblog protocol was
	changed to support DNSBL query result filters. Use "postfix
	reload" after installing the new version otherwise the
	dnsblog(8) server may complain.

20100830

	Polished the postscreen documentation and comments to clarify
	the user interface and implementation. No code changes.

20100831-910

	Restructured postscreen and added support for a dummy SMTP
	protocol engine. This engine logs rejected attempts to
	deliver mail with helo/sender/recipient information, and
	implements deep protocol tests.  The first deep protocol
	test is for command pipelining, where a client sends multiple
	commands instead of waiting for the server to respond to
	each command. The second one implements the Postfix SMTP
	server's smtpd_forbidden_commands feature.  Files:
	postscreen/*.[hc]. See RELEASE_NOTES, postconf(5) and
	postscreen(8) for incompatibilities, features, and configuration
	parameters.

20100910

	Feature: boolean configuration parameters with string-valued
	defaults, so that they can be subject to macro expansions.
	This was needed to make some postscreen parameter defaults
	to the values of the corresponding smtpd parameters.  Files:
	global/mail_conf.h, global/mail_conf_nbool.c,
	master/event_server.c, master/mail_server.h, master/multi_server.c,
	master/single_server.c, master/trigger_server.c,
	postconf/extract.awk, postconf/postconf.c.

20100911

	Feature: texthash read-only database. This is similar to
	hash: files, except that you don't need to run the postmap(1)
	command before you can use the file, and that it does not
	detect changes after the file is read.  All information is
	read into memory. Files: util/dict_open.c, util/dict_thash.[hc],
	proto/DATABASE_README.html, postconf/postconf.c

20100912

	Feature: bare newline detection in postscreen. Real spambots
	don't make this mistake anymore, but poorly-written software
	still does.  File: postscreen/smtpd.c.

	Documentation: POSTSCREEN_README including instructions for
	turning postscreen(8) on without blocking mail, and more.
	Trimmed the text in the postscreen(8) manpage.  File:
	proto/POSTSCREEN_README.html, postscreen/postscreen.c.

20100914

	Cleanup: the "postscreen_greet_wait" delay now ends as soon
	as both the pregreet and DNSBL tests complete (the postscreen
	documentation mentions in history/credits that the program
	started as a crude prototype).  The default postscreen_dnsbl_ttl
	caching time is now reduced to 1h from 24h, allowing
	postscreen to catch up on DNSBL updates more quickly. If
	this increases the database update frequency too much then
	we'll need to make dnsbl result non-cachable.  Files:
	postscreen/postscreen_dnsbl.c, global/mail_params.h.

20100915

	Bugfix (introduced 20100914): missing precondition for
	call-back notification.  File: postscreen/postscreen_dnsbl.c.

	Bugfix (introduced 20100914): the "postscreen_greet_wait"
	delay speedup worked only for DNSBL listed sites.  File:
	postscreen/postscreen_dnsbl.c.

	Workaround: better handling of pregreeting spambots. The
	postscreen built-in SMTP engine no longer sends a 220 banner
	to a client that falls into the pregreet trap.  This eliminates
	many "NON-SMTP COMMAND" records in postscreen logging, as
	the SMTP client and server no longer get out of sync.  It
	also results in better logging of sender/recipient information.
	File: postscreen/postscreen_smtpd.c.

20100916

	Cleanup: postscreen now uses the first responding DNSBL
	name in the "5.7.1 Service unavailable" reply, instead of
	the last responding one. File: postscreen/postscreen_dnsbl.c.

	Cleanup: the 20100914 "postscreen_greet_wait" speedup did
	not happen as often as it should, because some older code
	still turned on PREGREET tests gratuitously, causing a full
	greet-wait delay.  File: postscreen/postscreen_tests.c.

	Cleanup: to avoid "address in use" problems, postscreen now
	closes the listening socket after "postfix stop".  It also
	closes the socket after "postfix reload" but that does not
	hurt. Files: master/event_server.c, master/multi_server.c.

	Cleanup: postscreen now logs CONNECT and DISCONNECT events.
	Files: postscreen/postscreen.c, postscreen/postscreen_misc.c.

20100917

	Bugfix: cut-and-paste error. Postscreen used pregreet_ttl
	instead of dnsbnl_ttl. File: postscreen/postscreen_early.c.

20100920

	Cleanup: minor cleanups and invisible fixes. Files:
	postscreen/postscreen_misc.c, postscreen/postscreen.h,
	postscreen/postscreen_tests.c.

	Feature: preliminary postscreen penalty mechanism. Basic
	idea: when a client exceeds some threshold, don't allow it
	to pass any tests until the penalty expires. Penalties
	provide a way to slow down clients without blocking mail
	permanently.  Files: postscreen/postscreen_misc.c,
	postscreen/postscreen_tests.c, postscreen/postscreen.c.

	A first application of the postscreen penalty mechanism
	triggers on clients that make brief connections to find out
	if the mail server is up.  With "postscreen_early_hangup_penalty
	= 600" they will disqualify themselves for 10 minutes.
	Unfortunately, this behavior is used by legitimate bulk
	mail services. This application was removed 20101103.  The
	penalty mechanism itself is left in place as #ifdef NONPROD.

20100923

	Cleanup: renamed MUMBLE_FLAG_MUMBLE aggregates to
	MUMBLE_MASK_MUMBLE for consistency with other Postfix code.
	Files: postscreen/*.[hc].

20100930

	Cleanup: flag PIPELINING errors with NOOP and VRFY.  File:
	smtpd/smtpd.c.

20101006

	Bugfix (introduced: 20100914) dangling pointer when a client
	makes N > 1 simultaneous connections and closes M < N
	connections before postscreen has delivered the DNSBL score
	to the corresponding pseudothreads. In practice the pointer
	will refer to a block of 0xff bytes; the program terminates
	with a segmentation violation, and is restarted immediately
	by the master daemon. Files: postscreen/postscreen_early.c,
	postscreen/postscreen_dnsbl.c.

	Cleanup: avoid repeated delivery to mailing list members
	with pathological nested alias configurations.  The local(8)
	delivery agent now keeps the owner-alias attribute of the
	parent alias, when delivering mail to a child alias that
	does not have its own owner alias. With this change, local
	addresses from that child alias will be written to a new
	queue file, and a temporary error with one local address
	will no longer result in repeated delivery to other mailing
	list members.  Specify "reset_owner_alias = yes" for the
	older behavior.  File: local/alias.c.

20101007

	Bugfix (introduced: 2100923): duplicate "PASS OLD" logging.
	File: postscreen/postscreen_misc.c.

20101008

	Cleanup: dnsblog now logs "addr X listed by domain Y as Z"
	instead of "addr X blocked by domain Y as Z", because the
	service may be used for whitelist lookups. File:
	dnsblog/dnsblog.c.

20101023

	Cleanup: don't apply reject_rhsbl_helo to non-domain forms
	such as network addresses.  This would cause false positives
	with dbl.spamhaus.org.  File: smtpd/smtpd_check.c.

20101103

	Cleanup: new qmgr_ipc_timeout parameter (default: 60s) to
	override the system-wide ipc_timeout setting (default:
	3600s). The shorter timeout allows the queue manager to
	reset a deadlocked IPC connection before the watchdog timer
	goes off. Files: *qmgr/qmgr.c.

	Cleanup: new qmgr_daemon_timeout parameter (default: 1000s)
	to make the hard-coded 1000s watchdog timeout configurable.
	Files: *qmgr/qmgr.c.

	Cleanup: request default DSN notification when adding a
	recipient with smfi_addrcpt, instead of requesting "never
	notify" as with Postfix automatically-added BCC recipients.
	Files: cleanup/cleanup_addr.c, cleanup/cleanup.h,
	cleanup/cleanup_milter.c.

20101105

	Feature: DNS whitelist support in the Postfix SMTP server.
	permit_dnswl_client whitelists a client by IP address, and
	permit_rhswl_client whitelists a client by its hostname.
	The syntax is the same as reject_rbl_client etc., but the
	result is PERMIT instead of REJECT.  For safety reasons,
	permit_xxx_client are silently ignored when they would
	override reject_unauth_destination.  The result is
	DEFER_IF_REJECT when DNSWL lookup fails.  The implementation
	is based on a design documented by Noel Jones (August 2010).
	File: smtpd/smtpd_check.c.

20101108

	Workaround: strip off IPv6 datalink suffix from peer address
	to avoid problems with strict address checking code. Files:
	smtpd/smtpd_peer.c, qmqpd/qmqpd_peer.c.

20101114

	Robustness: postscreen(8) now implements a time limit on
	reading an entire command, instead of a time limit for
	reading individual characters. File: postscreen/postscreen_smtpd.c.

20101023

	Cleanup: don't apply reject_rhsbl_helo to non-domain forms
	such as network addresses.  This would cause false positives
	with dbl.spamhaus.org.  File: smtpd/smtpd_check.c.

20101117

	Bugfix: the "421" reply after Milter error was overruled
	by Postfix 1.1 code that replied with "503" for RFC 2821
	compliance. We now make an exception for "final" replies,
	as permitted by RFC. Solution by Victor Duchovni. File:
	smtpd/smtpd.c.

20101124-6

	Feature: pattern matching for DNSWL/DNSBL responses.  For
	example, with "reject_rbl_client example.com=d.d.d.d", each
	"d" can now be a pattern inside "[]" that contains one or
	more comma-separated decimal numbers or number..number
	ranges.  Files: smtpd/smtpd_check.c, postscreen/postscreen_dnsbl.c,
	util/ip_match.c, util/ip_match.h.

20101126

	Cleanup: don't log "blocked using example.com=127.0.0.1",
	just log the domain name. File: smtpd/smtpd_check.c.

20101129

	Cleanup: postscreen_client_connection_count_limit (default:
	$smtpd_client_connection_count_limit) to limit the number
	of connections from the same IP address to the postscreen(8)
	daemon. Files: postscreen/postscreen.c, postscreen/postscreen.h,
	postscreen/postscreen_state.c.

20101130

	Cleanup: all postscreen(8) logging now reports the client
	as [address]:port.  This requires an update of tools that
	process postscreen logging.  Files: postscreen/*.c,
	proto/POSTSCREEN_README.html.

	Cleanup: polishing recent documentation and code. Files:
	postscreen/postscreen_dnsbl.c, util/ip_match.c.

20101201

	Bugfix (introduced 20101129): broken default value for
	postscreen_client_connection_count_limit if the
	smtpd_client_connection_count_limit parameter was left at
	its default.  File: postscreen/postscreen.c.

	Workaround: BSD-ish mkdir() ignores the effective GID
	and copies group ownership from the parent directory.
	File: util/make_dirs.c.

20101202

	Feature: the LDAP client can now authenticate to LDAP servers
	via SASL. This is tested with SASL GSSAPI and Kerberos 5.
	Original code by Quanah Gibson-Mount adapted by Victor
	Duchovni.  Files: global/dict_ldap.c, proto/LDAP_README.html,
	proto/ldap_table.

	Cleanup: the cleanup server now reports a temporary delivery
	error when it reaches the virtual_alias_expansion_limit or
	virtual_alias_recursion_limit. Previously, it would silently
	ignore the excess recipients and deliver the message.  File:
	cleanup/cleanup_map1n.c.

20101205

	Cleanup: sache_clnt_create() had an unnecessary data
	dependency on the non-library var_scache_service variable,
	causing problems with shared library builds.  Instead, it
	should use its service argument (which has the same value).
	File: global/scache.c.

	Cleanup: pipe_command.c had an unnecessary data dependency
	on the non-library var_command_maxtime variable, causing
	problems with shared library builds. The dependency was not
	necessary because the callers already specify an explicit
	time limit.  File: global/pipe_command.c.

20101206

	Bugfix (introduced 20101205): postscreen hung up due to
	incorrect output error test. File: postscreen/postscreen_send.c.

20101207

	Cleanup: the undisclosed_recipients_header default value
	is now the empty string. The Internet mail RFCs have supported
	messages without recipient header for almost 10 years now.
	File: global/mail_params.h.

	Cleanup: use strtol() instead of sscanf() for consistent
	handling of out-of-range numbers. Files: global/cfg_parser.c,
	global/conv_time.c, global/mail_conf_int.c,
	global/mail_conf_long.c, global/mail_conf_nint.c.

20101217

	Cleanup: eliminated the code that copied TLS protocol
	messages between the OpenSSL TLS engine and the network.
	This change hopefully simplifies the TLS library enough
	that it can be used in an event-driven TLS proxy in front
	of postscreen.  Files: tls/tls_bio.c, tls/tls_server.c,
	tls/tls_client.c.

	This change eliminates an obscure bug where the SMTP server
	would wait for another $smtpd_timeout seconds after sending
	the "421 Error: timeout exceeded" message to the client.

20101221

	Cleanup: simplified the VSTREAM "large buffer" support by
	dropping the Postfix 2.4 "binary compatibility" requirement.
	Files: util/vstream.c, util/vstream.h.

20101222

	Cleanup: the SMTP client PIPELINING code did not account
	for TLS protocol overhead. This could (only in theory)
	result in deadlock when the remote SMTP server announces a
	very small receive window after the client and server have
	synchronized their SMTP state. Victor Duchovni.  File:
	smtp/smtp_proto.c.

20101223

	Feature: with "tls_preempt_cipherlist = yes" the Postfix
	SMTP server will preempt the remote SMTP client's cipher
	preference order. This requires OpenSSL 0.9.7 and later.
	Victor Duchovni. Files: src/smtpd/smtpd.c, src/tls/tls_server.c,
	proto/TLS_README.html, proto/postconf.proto.

	Future proofing: specify "tls_disable_workarounds = a list
	or bit-mask of OpenSSL bug work-arounds to disable". This
	may become necessary when a bug workaround is found to cause
	problems (security or interoperability). Victor Duchovni.
	Files: tls/tls_misc.c, proto/TLS_README.html, proto/postconf.proto.

	Infrastructure: extended name_mask module feature set with
	extensive documentation and 32-bit regression tests.  Victor
	and Wietse.  File: util/name_mask.[hc].

20101224

	Cleanup: sanitized the name_mask API so that errors will be
	ignored only upon explicit request. Files: util/name_mask.[hc],
	src/global/ehlo_mask.c, src/smtp/smtp_proto.c,
	src/util/name_mask.c, src/xsasl/xsasl_dovecot_server.c.

	Cleanup: more TLS overhead horrors for the SMTP client's
	PIPELINING engine. Wietse and Victor. File: smtp/smtp_proto.c.

20101226

	Cleanup: the SMTP client logic for pipelining the "." and
	"QUIT" commands was bogus - the pipelining engine could not
	know how much unacknowledged data is pending in the local
	TCP stack.  We now ignore the buffer check for sending
	"QUIT" after ".".  Wietse and Victor. File: smtp/smtp_proto.c.

20110101

	Cleanup: the Postfix SMTP server now always refreshes the
	SASL authentication mechanism list after STARTTLS. Some
	Dovecot versions may change their responses when they know
	that the SMTP connection is encrypted. File: smtpd/smtpd.c.

	Cleanup: the smtpd_starttls_timeout default value is now
	stress-dependent.  Files: global/mail_params.h,
	proto/postconf.proto.

	Compatibility: postscreen_discard_ehlo_keyword(s|maps)
	support for compatibility with smtpd_discard_ehlo_keyword(s|maps).
	Files: postscreen/postscreen_smtpd.c.

20110102

	Feature: STARTTLS support for the postscreen(8) daemon.
	With early testing feedback from Victor Duchovni and Ralf
	Hildebrandt.  Files: postscreen/postscreen_smtpd,
	postscreen/postscreen_starttls.c.

	Feature: event-driven tlsproxy(8) daemon that translates
	TLS <=> plaintext for postscreen(8). One tlsproxy(8) process
	can translate traffic for multiple remote SMTP clients.
	With early testing feedback from Victor Duchovni and Christian
	Roessner.  Files: util/nbbio.[hc], tlsproxy/*.[hc],
	postscreen/postscreen_starttlsd.c, postscreen/postscreen_smtpd.c.

20110103

	Cleanup: missing tls_level support in tlsproxy (it has no
	way to send plaintext, but perhaps an informative error
	message is in order anyway).  File: tlsproxy/tlsproxy.c.

	Cleanup: simplified the handling of throttled output (i.e.
	output that can't be sent because the receiver tries to be
	nasty).  File: postscreen/postscreen_send.c.

20110104

	Feature: add contact information to each SMTP server reject
	message. For example, "smtpd_reject_footer = call 800-555-0101
	for assistance", with macro expansion and with multi-line
	support. Files: global/mail_params.h, mantools/postlink,
	proto/postconf.proto, smtpd/smtpd.c, smtpd/smtpd_chat.c,
	smtpd/smtpd_expand.[hc], util/mac_expand.[hc].

20110105

	Cleanup: the forest of TLS-related booleans was shrunk.
	Victor Duchovni. Files: smtpd/smtpd.c, postscreen/postscreen.c,
	postscreen/postscreen_smtpd.c, tlsproxy/tlsproxy.c.

	Non-production: tlsproxy support in the Postfix SMTP server
	for stress testing of the tlsproxy daemon (#ifdef TLSPROXY).
	Seen from outside, Postfix works just as if it has TLS
	support built into in smtpd(8). Files: smtpd/smtpd.c,
	tls/tls_proxy*.[hc], tlsproxy/tlsproxy.c, util/vstream.[hc].

	Bugfix (introduced with the Postfix TLS patch): discard
	plaintext following the STARTTLS command or response. This
	matters only for the minority of SMTP clients that actually
	verify server certificates.  Files: smtpd/smtpd.c,
	smtp/smtp_proto.c.

20110106

	Non-production: cleaned up the tlsproxy support in the
	Postfix SMTP server for stress testing of the tlsproxy
	daemon (still #ifdef TLSPROXY). File: smtpd/smtpd.c.

20110107

	Cleanup: smtpd_reject_contact_information is renamed to
	smtpd_reject_footer, because it can be used for non-contact
	information.

	Compatibility: postscreen_reject_footer support for
	compatibility with smtpd_reject_footer.  Files:
	global/smtp_reply_footer.[hc], global/mail_conf.[hc],
	postscreen/postscreen_expand.c, postscreen/postscreen_send.c,
	postscreen/postscreen.c, smtpd/smtpd_chat.c.

	Compatibility: postscreen_command_filter support for
	compatibility with smtpd_command_filter. Files:
	postscreen/postscreen_dict.c, postscreen/postscreen_smtpd.c

20110108

	Cleanup: postscreen(8) now displays control characters in
	PREGREET responses as C-style \letter escapes, instead of
	"?".  File: postscreen/postscreen_early.c.

20110109

	Cleanup: Solaris support for "pass" (file descriptor passing
	based) services in master.cf.  This was needed by postscreen(8).
	Also, renamed upass_xxx.c to unix_pass_xxx.c. One-character
	prefixes are too short. Removed upass_connect.c because it
	was useless code. Files: util/stream_pass_connect.c,
	util/unix_pass_listen.c, util/unix_pass_trigger.c.

	Bugfix (introduced Postfix 2.4): on Solaris the Postfix
	event engine was deaf for SIGHUP and SIGALRM signals after
	the switch to /dev/poll. Symptoms were delayed "postfix
	reload" response, and killed processes when the watchdog
	timeout was less than max_idle.  The fix is to set up SIGHUP
	and SIGALRM handlers that write to a pipe, and to monitor
	that pipe for read events via the Postfix event engine.
	Files: master/master_sig.c, util/watchdog.c, util/sys_defs.h.

20110111

	Cleanup: replaced the postscreen(8) separate blacklist and
	whitelist lookup tables by one postscreen_access_list table.
	See postconf(5) and POSTSCREEN_README for examples.  Files:
	postscreen/postscreen_access.c, postscreen/postscreen.c,
	proto/postconf.proto, proto/POSTSCREEN_README.html.

20110112

	Cleanup: suspend/resume logic for postscreen(8) SMTP sessions
	that temporarily switch control to an external program such
	as tlsproxy, or perhaps a future policy plugin.  Files:
	postscreen/postscreen_smtpd, postscreen/postscreen_starttls.c.

20110113

	Cleanup: ps_cache and psc_cache are now postscreen_cache.
	There is no need for obscure name abbrevations. File:
	src/global/mail_params.h.

20110115

	Workaround: malloc fuzz (safety margin for malloc requests).
	Files: util/sys_defs.h, util/mymalloc.c.

	Cleanup: dnsblog_service_name and tlsproxy_service_name are
	now configurable, in case someone needs this. Files:
	global/mail_params.h, postscreen/postscreen.c, mantools/postlink,
	proto/postconf.proto.

20110116

	Cleanup: soft_bounce support for postscreen(8). Files:
	postscreen/postscreen_smtpd.c, postscreen/postscreen_send.c.

	Cleanup: for smtpd(8) compatibility, postscreen(8) now
	strips deprecated route address prefixes from email addresses
	(@here,@there:user@example becomes user@example). This is
	primarily to make postscreen(8) logging more similar to
	that of smtpd(8). File: postscreen/postscreen_smtpd.c.

	Cleanup: documentation, in preparation for the Postfix 2.8
	stable release.

20110117

	Bugfix (introduced Postfix alpha, or thereabouts): on HP-UX
	the Postfix event engine was deaf for SIGALRM signals.
	Symptoms were killed processes when the watchdog timeout
	was less than max_idle.  The fix is the same as Solaris fix
	20110109. Since we can't know what other systems need this,
	the workaround is enabled by default.  Files: util/sys_defs.h.

	Cleanup: "smtpd_tls_eecdh_grade = strong" by default, instead
	of snapshot-only. File: global/mail_params.h, proto/postconf.proto.

	Cleanup: missing "#include <errno.h>" in util/watchdog.c.

	Bugfix: when compiled without -DUSE_TLS, tlsproxy used the
	wrong server skeleton (multi_server instead of event_server).
	File: tlsproxy/tlsproxy.c.

	Workaround: added a panic check for code that is mis-compiled
	by the HP-UX compiler.  File: postscreen/postscreen.c,
	postscreen/postscreen.h, postscreen/postscreen_state.c.

20110118

	Bugfix: the tls_disable_workarounds word list only included
	workarounds in SSL_OP_ALL. Problem report by Steve Jenkins,
	problem fix by Victor Duchovni. File: tls/tls_misc.c.
	
	Last-minute incompatible syntax change: Postfix now uses
	";" instead of "," to separate DNSBL/DNSWL address filter
	fields inside "[]". The compatibility break is not an issue,
	because the syntax never worked in main.cf. Problem reported
	by Mark Martinec. Files: util/ip_match.c, util/ip_match.in,
	util/ip_match.ref, proto/postconf.proto.

	Cleanup: postscreen now monitors the AVERAGE latency of
	table access, and complains at most once per minute.  File:
	postscreen/postscreen_dict.c.

	Bugfix: support for the "dunno" command somehow disappeared
	from the postscreen_access_list implementation.  File:
	postscreen/postscreen_access.c.

20110123

	Feature: read/write deadlines. Deadlines were introduced
	with postscreen's dummy SMTP engine. In the Postfix SMTP
	client and server, deadlines limit the total amount of time
	to read or write one command line, one response line, or
	one line of message content. This reduces the impact of
	application exhaustion attacks that trickle data one byte
	at a time.  Files: util/vstream.[hc], global/smtp_stream.c.

	Cleanup: remove #ifdef MIGRATION_WARNING transitional code
	from postscreen. File: postscreen/postscreen.c.

20110125

	Cleaned up and finalized read/write deadline support. Once
	this code has been fielded it can go into Postfix 2.8.1,
	and made available as optional patch for earlier releases.
	Further refinements have only dimishing returns and can
	evolve in the 2.9 release cycle.  File: util/vstream.c.

20110128

	Infrastructure: separate VSTREAM flags for read or write
	errors. Files: util/vbuf.[hc], util/vstream.[hc].

	Cleanup: after write error, the smtp_stream routines now
	disable further network writes. This eliminates the need
	for clumsy code to avoid unwanted I/O while shutting down
	a TLS engine or closing a VSTREAM.  File: util/smtp_stream.c.

20110201

	Cleanup: when verifying that the client_address->client_name
	lookup result resolves to the client_address, request
	hostname->address lookup with the same protocol family (IPv4
	or IPv6) as the client_address.  Files: util/myaddrinfo.[hc],
	smtpd/smtpd_peer.c, qmqpd/qmqpd_peer.c.

20110205

	Infrastructure: vstream_peek_data() primitive to look ahead
	at buffered input. Use vstream_peek() to find out how much,
	and escape() for human presentation.  Files: util/vstream.[hc].

	Cleanup: smtpd(8) and postscreen(8) now log the input that
	triggers an SMTP command pipelining violation. File:
	postscreen/postscreen_smtpd.c, smtpd/smtpd.c.

	Infrastructure: smtp_get() option to skip over input in
	excess of the line length limit. Files: smtp/smtp_stream.[hc].

	Cleanup: handle excessively-long client requests and server
	responses more gracefully, i.e. without losing synchronization.
	Files: smtpd/smtpd_chat.c, smtpd/smtpd_proxy.c, smtp/smtp_chat.c,
	smtpstone/smtp-source.c.

20110207

	Bugfix (introduced Postfix 2.8): segfault with smtpd_tls_loglevel
	>= 3. Files: tls/tls_server.c, tls.h, smtpd.c, tlsproxy.c.

	Cleanup: read/write deadline support for single_server TLS
	applications (i.e. smtpd(8), smtp(8)).  File: tls/tls_bio_ops.c.

20110212

	Infrastructure: run-time switch for read/write deadline
	support. Files: util/vstream.[hc], global/smtp_stream.[hc],
	tls/tls_bio_ops.c.

	Cleanup: configurable read/write deadline support with
	smtpd_per_record_deadline (normal: "no", overload: "yes")
	and smtp_per_record_deadline (default: "no").  Files:
	global/mail_params.h, smtpd/smtpd.c, smtp/smtp.c,
	smtp/smtp_proto.c, proto/postconf.proto, mantools/postlink.

20110213

	Workaround: the TLS library passes the same information via
	different function arguments, and this same information is
	maintained by different functions, so things get out of
	step when code is updated. As of 20110212, tls_client_start()
	needs to set the VSTREAM property of the TLS session object.
	File: tls/tls_client.c.

20110215

	Human factors: the FCRDNS (forward-confirmed reverse DNS)
	checking code now logs "hostname X does not resolve to
	address Y", when a "reverse hostname" lookup result does
	not resolve to the client IP address.  Files: smtpd/smtpd_peer.c,
	qmqpr/qmqpd_peer.c.

20110216

	Cleanup: don't log a "connection reset by peer" error when
	postscreen(8) tries to send a server response.  File:
	postscreen/postscreen_send.c.

20110218

	Cleanup: Postfix now uses long integers for message_size_limit,
	mailbox_size_limit and virtual_mailbox_limit. On LP64 (64-bit
	long and pointer, but 32-bit integer) systems, these message
	and mailbox limits can now exceed 2GB. Files: global/mail_params.c
	global/mail_params.h local/local.c master/event_server.c
	master/mail_server.h master/multi_server.c master/single_server.c
	master/trigger_server.c virtual/virtual.c postconf/extract.awk
	postconf/postconf.c.

20110220

	Cleanup: compiler gripe.  File: util/vstream.c.

20110223

	Cleanup: Debian build tool gripe. File: smtpstone/smtp-sink.c.

20110224

	postscreen(8) support to enforce proper client MX lookup
	policy. Some spambots connect first to a backup MX address
	in the hope that the server has a weaker anti-spam policy.
	By listening on both primary and backup MX addresses,
	postscreen(8) can deny the temporary whitelist status to
	clients that connect only to backup MX hosts, and prevent
	them from talking to a Postfix SMTP server process.

	For example, when 1.2.3.4 is a local backup IP address,
	specify "postscreen_whitelist_interfaces = !1.2.3.4 static:all"
	to disable dynamic whitelisting for clients that connect
	(only) to the backup MX address. Files: mantools/postlink,
	proto/postconf.proto, proto/POSTSCREEN_README.html,
	global/mail_params.h, postscreen/postscreen.c,
	postscreen/postscreen.h, postscreen/postscreen_state.c.

20110225

	Workaround (problem introduced with IPv6 support in Postfix
	2.2): the SMTP client did not support mail to [ipv6:ipv6addr].
	Fix based on a patch by Gurusamy Sarathy (Sophos).  File:
	util/host_port.c and regression test files.

20110227

	Portability: FreeBSD closefrom() support time window.  Sahil
	Tandon. File: util/sys_defs.h.

	Cleanup: each lookup table now has an owner status and UID
	attributes for provenance purposes, even memory-resident
	tables such as pcre, regexp and cidr.  This fixes a problem
	where local(8) ignored the non-root ownership of a regular
	expression-based aliases(5) file.  The table owner status
	is TRUSTED (data straight from root-owned configuration
	file), UNKNOWN (unauthenticated data from proxy or tcp) or
	KNOWN (we actually have an owner UID). With most tables,
	the owner UID is the file owner UID. With LDAP and *SQL,
	the owner UID is the Postfix configuration file owner.
	Files: src/util/dict_unix.c src/util/dict_thash.c
	src/util/dict_static.c src/util/dict_sdbm.c src/util/dict_regexp.c
	src/util/dict_pcre.c src/util/dict_nisplus.c src/util/dict_nis.c
	src/util/dict_ni.c src/util/dict_ht.c src/util/dict_env.c
	src/util/dict_dbm.c src/util/dict_db.c src/util/dict_cidr.c
	src/util/dict_cdb.c src/util/dict_alloc.c src/util/dict.h
	src/util/dict.c src/local/alias.c src/global/dict_sqlite.c
	src/global/dict_pgsql.c src/global/dict_mysql.c
	src/global/dict_ldap.c src/global/cfg_parser.h
	src/global/cfg_parser.c.

20110311

	Feature: Base 32 encoder/decoder per RFC 4648. This code
	was going to be used for long queue IDs, but plans were
	changed. Files: src/util/base32_code.[hc].

20110313

	Bugfix (introduced Postfix 2.8): postscreen DNSBL scoring
	error. When a client disconnected and then reconnected
	before all DNSBL results for the earlier session arrived,
	DNSBL results for the earlier session would be added to the
	score for the later session. Problem report by Larry Vaden.
	Files: dnsblog/dnsblog.c, postscreen/postscreen_dnsbl.c.

	Cleanup: protocol description in dnsblog(8) manpage. File:
	dnsblog/dnsblog.c.

20110314

	Portability: the SUN compiler had trouble with a pointer
	expression of the form ``("text1" "text2") + constant'' so
	we don't try to be so clever. Fix by Victor Duchovni.  File:
	global/mail_params.h.

20110320

	Feature: specify "enable_long_queue_ids = yes" to enable
	support for non-repeating queue IDs (also used as queue
	file names). These queue IDs encode the time and inode
	number with a safe alphabet of the 52 characters 0-9B-Zb-z.
	The alphabet excludes vowels (AEIOUaeiou) to avoid creating
	real words.  The queue ID format is: time in seconds, time
	in microseconds, 'z', inode number (the inode number is
	encoded without using the 'z' character of the safe alphabet).
	Turning on long queue IDs changes the width of the first
	output column of the mailq (postqueue -p) command, and
	changes the appearance of Postfix Message-ID headers to
	queueID@myhostname.  Files: global/file_id.[hc],
	global/safe_ultostr.[hc], global/mail_queue.[hc],
	postsuper/postsuper.c, showq/showq.c

20110321

	Performance: with long queue file names, queue hashing now
	produces the same result as with short names. Postfix uses
	the hexadecimal representation of the file creation time
	in microseconds, instead of the beginning of the file name
	which changes once every year or so, a problem that was
	reported by Victor Duchovni. The base 16 encoding gives
	finer control over the number of directories than possible
	with base 52 encoding.  Files: global/mail_queue.[hc]. This
	change requires "postfix reload".

20110322

	Cleanup: preserve the microseconds value when renaming
	long->short or short->short queue file names.  As a side
	benefit, renaming long->short queue IDs will not change the
	result from queue hashing.  File: postsuper/postsuper.c.

20110323

	Bitrot: qshape regexp pattern for long queue file names.
	Ralf Hildebrandt. File: auxiliary/qshape/qshape.pl.

	Bitrot: text about queue ID reuse in the postsuper manpage.
	File: postsuper/postsuper.c.

20110328

	Cleanup: don't log warnings about socket shutdown() errors
	after a connection breaks. Postfix calls shutdown() to avoid
	unnecessary socket write timeouts. This is only an optimization,
	and failure is not critical.  File: global/smtp_stream.c.

20110411

	Cleanup: postscreen(8) and verify(8) daemons now lock their
	respective cache file exclusively upon open, to avoid massive
	cache corruption by unsupported sharing. Files: util/dict.h,
	util/dict_open.c, verify/verify.c, postscreen/postscreen.c.

20110414

	Bugfix (introduced with Postfix SASL patch 20000314): don't
	reuse a server Cyrus SASL handle after authentication
	failure. File: smtpd/smtpd_proto.c.

20110418

	Bugfix (introduced Postfix 2.3 and Postfix 2.7): the Milter
	client reported some "file too large" errors as temporary
	errors. Problem reported by Michael Tokarev. Files:
	milter/milter8.c, cleanup/cleanup_milter.c.

20110420

	Performance: a high load of DSN success notification requests
	could stall the queue manager. Solution: make the trace
	client asynchronous, just like the bounce and defer clients.
	Problem reported by Eduardo M. Stelmaszczyk of terra.com.br.
	Files: global/abounce.[hc], *qmgr/qmgr_active.c (the
	qmgr_active.c files are identical).

20110421

	Cleanup: updated abounce warning message, and added a safety
	timeout to abounce() etc. requests. File: global/abounce.c.

20110426

	Bugfix (introduced in Postfix 1.1, duplicated in Postfix
	2.3, unrelated mistake in Postfix 2.7): the local(8) delivery
	agent ignored table lookup errors in mailbox_command_maps,
	mailbox_transport_maps, fallback_transport_maps and (while
	bouncing mail to alias) alias owner lookup. Problem reported
	by William Ono. Files: local/command.c, local/mailbox.c,
	local/unknown.c, local/bounce_workaround.c.

20110516

	Update the warning when permit_naked_ip_address is used,
	and add permit_sasl_authenticated to the list of suggested
	alternatives.  File: smtpd/smtpd_check.c.

20110601

	Bugfix (introduced Postfix 2.6 with master_service_disable)
	loop control error when parsing a malformed master.cf file.
	Found by Coverity. File: master/master_ent.c.

20110602

	Bugfix (introduced: Postfix 2.7): "sendmail -t" reported
	"protocol error" after queue file write error.  File:
	postdrop/postdrop.c.

20110605

	Cleanup: removed the PSC_STATE_FLAG_CACHE_EXPIRED flag.
	Nothing uses this anymore. Files: postscreen/postscreen.h,
	postscreen/postscreen_state.c, postscreen/postscreen_tests.c.

20110614

	Linux kernel version 3 support. Linus Torvalds has reset
	the counters for reasons not related to changes in code.
	Files: makedefs, util/sys_defs.h.

20110615

	Workaround: some Spamhaus RHSBL rejects lookups with "No
	IP queries" even if the name has an alphanumerical prefix.
	We play safe, and skip both RHSBL and RHSWL queries for
	names ending in a numerical suffix.  File: smtpd/smtpd_check.c.

20110624

	Cleanup: added error checks for smtpd access primitives
	that don't automatically terminate the program after table
	lookup error: these primitives are permit_tls_clientcerts,
	permit_tls_all_clientcerts, and check_address_map (the last
	one is used in local_header_rewrite_clients only).  File:
	smtpd/smtpd_check.c.

20110729

	Workaround: some getpwnam() and getpwuid() implementations
	cause mail to bounce ("user unknown") after LDAP etc. lookup
	error. Postfix now uses POSIX getpwnam_r() and getpwuid_r()
	where available. Initially, this workaround supports FreeBSD,
	Solaris and Linux. Files: makedefs, util/sys_defs.h,
	global/mypwd.[hc], local/alias.c, local/dotforward.c,
	local/include.c, local/mailbox.c, local/recipient.c.

20110731

	MacOS X 10.5 supports POSIX getpwnam_r() and getpwuid_r()
	(source: MacOS manpages at www.freebsd.org). If MacOS turns
	out to make a false promise, then we will undo this change.
	Files: makedefs, util/sys_defs.h.

20110810

	Cleanup: optimize an optimization to avoid uid->name lookup
	when all users are authorized with authorized_submit_users,
	authorized_mailq_users, authorized_flush_users.  File:
	global/user_acl.c.

20110811

	Workaround: report a {client_connections} Milter macro value
	of zero instead of garbage, when the remote SMTP client is
	not subject to any smtpd_client_* limits. Problem reported
	by Christian Roessner. Files: smtpd/smtpd_state.c,
	proto/MILTER_README.html.

20110817

	Cleanup: avoid misleading error messages after future code
	change. The tls_bio_ops(3) module now returns non-zero errno
	values only when requests fail due to a system-call error.
	File: tls/tls_bio_ops.c.

	Cleanup: TLS handshake error messages. The SMTP client and
	server now report STARTTLS network errors as "connection
	timed out", "connection reset by peer", etc., instead of
	reporting TLS error number 0.  Files: tls/tls_bio_ops.c,
	tls/tls_server.c, tls/tls_client.c.

20110818

	Cleanup: VSTREAM-over-TLS error return values, for robustness
	against future change.  For consistency with VSTREAM internal
	interfaces, the tls_stream(3) read/write routines now return
	-1 instead of unspecified negative OpenSSL results.  File:
	tls/tls_stream.c.

20110819

	Cleanup: further TLS code cleanups, for robustness against
	future change.  Unexpected TLS errors are no longer silently
	treated as ordinary errors, and one corner-case error in TLS
	timeout handling was fixed before it could cause trouble.
	File: tls/tls_bio_ops.c.

20110821-24

	Cleanup: simplified the TLS read/write deadline implementation,
	and documented why this same simplification is not possible
	higher-up, at the VSTREAM level. Files: tls/tls_bio_ops.c,
	util/vstream.c.

20110831

	Bugfix: allow for Milters that send an SMTP server reply
	without RFC 3463 enhanced status code. Reported by Vladimir
	Vassiliev.  File: milter/milter8.c.

20110902

	Cleanup: don't log vstream_tweak "connection reset by peer"
	errors. File: util/vstream_tweak.c.

20110904-7

	Bugfix: master daemon panic with "master_spawn: at process
	limit", when "postfix reload" reduces the process limit
	from (a value larger than the current process count for
	some service) to (a value <= the current process count),
	and then a new connection is made to that service. This
	structural solution centralizes the decision to monitor a
	service port (or not). To improve robustness against future
	code changes, it clarifies some of the internal dependencies
	that exist inside the master daemon.  Files: master/master.h,
	master/master_avail.c, master/master_conf.c,
	master/master_service.c, master/master_spawn.c.

20110911

	Debugging: report the request size when memory allocation
	fails.  File util/mymalloc.c.

20110914

	Incompatibility: the default inet_protocols value is now
	"all" instead of "ipv4", meaning use both IPv4 and IPv6.
	As a compatibility workaround for sites without global IPv6
	connectivity, the commands "make upgrade" and "postfix
	upgrade-configuration" append "inet_protocols = ipv4" to
	main.cf when no explicit setting is present.  This compatibility
	workaround will be phased out in a future release.  Files:
	util/sys_defs.h, conf/post-install, proto/postconf.proto.

	Incompatibility: the default smtp_address_preference value
	is now "any" instead of "ipv6", meaning choose randomly
	between IPv6 and IPv4.  With this the Postfix SMTP client
	will have more success delivering mail to sites that have
	problematic IPv6 configurations.  Files: global/mail_params.h,
	proto/postconf.proto.

20110918

	Workaround for multiple ancient FreeBSD getsockopt() bugs
	after non-blocking connect fails with 'host unreachable'
	that resulted in a unreasonable memory allocation request.
	File: util/vstream_tweak.c.

20110921

	Bugfix (introduced: Postfix 1.1): smtpd(8) did not sanitize
	newline characters in cleanup(8) REJECT messages, causing
	them to be sent out via SMTP as bare newline characters.
	This happened when a REJECT pattern matched multi-line
	header text.  Discovered by Kevin Locke.  File: smtpd/smtpd.c.

20110922

	Bugfix (introduced: Postfix 2.1): smtpd(8) sent multi-line
	responses from a before-queue content filter as text with
	bare <LF> instead of <CR><LF>.  Found during code maintenance.
	File: smtpd/smtpd_proxy.c.

20111011

	Cleanup: for consistency with the SMTP standard, the
	smtp_line_length_limit default value was increased from 990
	characters to 998 (i.e. 1000 characters including <CR><LF>).
	File: global/mail_params.h, proto/postconf.proto.

	Cleanup: the Postfix sendmail command now always transforms
	all input lines ending in <CR><LF> into UNIX format (lines
	ending in <LF>).  This simplifies integration with third-party
	mail generating applications. Specify "sendmail_fix_line_endings
	= strict" to restore historical Postfix behavior (i.e. convert
	all input lines ending in <CR><LF> only if the first input
	line ends in <CR><LF>).  Files: sendmail/sendmail.c,
	global/mail_params.h, proto/postconf.proto.

20111017

	Cleanup: refined the heuristic that automagically transforms
	legacy "sendmail -V" VERP requests into contemporary "sendmail
	-XV" syntax.  File: sendmail/sendmail.c.

	Cleanup: when the cleanup daemon goes into discard mode,
	don't get stuck when it runs onto milter file descriptor
	information. File: cleanup/cleanup.c.

20111020

	EAI Future-proofing: don't apply strict_mime_encoding_domain
	checks to unknown message subtypes such as message/global*.
	File: global/mime_state.c.

20111025

	Bugfix (introduced: Postfix 2.8): postscreen sent non-compliant
	SMTP responses (220- followed by 421) when it could not
	hand off a connection to a real smtpd process, causing some
	remote SMTP clients to bounce mail. The fix redirects the
	client to the dummy SMTP engine which sends the 421 reply
	at the first legitimate opportunity.  Problem reported by
	Ralf Hildebrandt. Files: postscreen/postscreen_send.c,
	postscreen/postscreen_smtpd.c, postscreen/postscreen.h.

20111102

	Workaround: to improve inter-operability with broken remote
	SMTP servers, the Postfix SMTP client by default no longer
	appends the "AUTH=<>" option to the MAIL FROM command.
	Specify "smtp_send_dummy_mail_auth = yes" to restore the
	old behavior.

20111106

	Feature: "postconf -M" support to show Postfix's idea of
	what is in the master.cf file. File: postconf/postconf.c.

	Feature: postconf "-f" option to "nicely" format long lines
	from main.cf or master.cf. File: postconf/postconf.c.

20111108

	Cleanup: postconf finally supports dynamic configuration
	parameter names: parameters whose name depend on a mail
	delivery transport or spawn service in master.cf, and
	parameters whose names are specified with smtpd_restriction_classes
	in main.cf. This adds 70 parameters to the "postconf" output,
	more if additional mail delivery transports are defined in
	master.cf.  File: postconf/postconf.c.

20111109

	Cleanup: account for "," in smtpd_restriction_classes
	value (Victor Duchovni). File: postconf/postconf.c.

20111112

	Cleanup: postconf finally warns about possible mis-typed
	main.cf and master.cf parameter names (i.e. parameters that
	aren't used anywhere), and it finally displays user-defined
	main.cf parameters that *are* used.  File: postconf/postconf.c.

20111113

	Portability: specify ``make makefiles "CCARGS=-DNO_NIS
	..."'' to build on systems without NIS support. Files:
	makedefs, util/sys_defs.h.

	Cleanup: documented the postconf algorithms and their
	limitations, and added regression tests to speed up future
	development. File: postconf/postconf.c

20111117

	Cleanup: postconf didn't "bless" type "inet" service names.

	Cleanup: with pipelined sessions, smtp-sink flushed the
	output too often. Reported by Mark Martinec. File:
	smtpstone/smtp-sink.c.

	Workaround: don't use IPv6 at build time. File: conf/main.cf.

	Workaround: don't abort when IPv6 is present but busted.
	File: util/inet_proto.c.

	Portability: the Dovecot 2.0 authentication server supports
	more socket types for its authentication server. File:
	xsasl/xsasl_dovecot_server.c.

	Documentation: the Dovecot 2.0 authentication server supports
	communication over TCP sockets. Patrick Ben Koetter.  File:
	proto/SASL_README.html.

20111118

	Cleanup: "postconf -M" now supports filtering. For example,
	"postconf -M inet" shows only services that listen on the
	network, and "postconf -M smtp.unix" shows the SMTP delivery
	agent. File: postconf.c.

20111119

	Cleanup: "postconf" commands in postfix-install needed to
	be updated before master.cf was installed.  Reported by
	Sahil Tandon. File: postfix-install.

20111120

	Cleanup: support for parameter name spaces for master.cf
	entries. With this, postconf should no longer log false
	warnings for "-o user-defined-name=value" in master.cf.  As
	a benefit, it will warn for user-defined parameters with
	"name=value" entries that are unused because they are hidden
	by master.cf "-o name=value" entries with the same parameter
	name.  File: postconf/postconf.c.

20111121

	Cleanup: documentation fixes. File: postconf/postconf.c.

	Cleanup: in postconf "main.cf management" mode, errors
	opening master.cf are non-fatal. File: postconf/postconf.c.

20111122

	Documentation: examples to request VERP-style delivery at
	SMTP time with the smtpd_command_filter feature.  Files:
	proto/VERP_README.html, proto/postconf.proto.

	Feature: TLS certificate public-key fingerprint matching
	(SMTP server and client), and TLS logging cleanup. Victor
	Duchovni. Files: proto/SMTPD_POLICY_README.html,
	proto/TLS_README.html, proto/postconf.proto, global/mail_proto.h,
	smtpd/smtpd_check.c, tls/tls.h, tls/tls_client.c, tls/tls_misc.c,
	tls/tls_proxy_print.c, tls/tls_proxy_scan.c, tls/tls_server.c,
	tls/tls_stream.c, tls/tls_verify.c.

	Documentation: complete list of "make makefiles" overrides.
	File: proto/INSTALL.html.

	Cleanup: postscreen now logs more than the first word of
	non-SMTP commands. File: postscreen/postscreen_smtpd.c.

20111124

	Cleanup: eliminated false postconf "unused parameter"
	warnings with legacy parameters such as $virtual_maps, and
	with non-default parameter values for smtpd_expansion_filter
	that can contain legitimate "$" without a macro name.

	Cleanup: split postconf source into separate modules.
	Files: postconf/postconf.c, postconf/postconf_builtin.c,
	postconf/postconf_edit.c, postconf/postconf_main.c,
	postconf/postconf_master.c, postconf/postconf_misc.c,
	postconf/postconf_node.c, postconf/postconf_other.c,
	postconf/postconf_service.c postconf/postconf_unused.c,
	postconf/postconf_user.c, postconf/postconf.h.

20111126

	Bitrot: changes in error reporting to the under-documented
	OpenLDAP API. Problem reported by Quanah Gibson-Mount. Fix
	by Viktor Dukhovni. File: global/dict_ldap.c.

	Cleanup: four-space indentation had become a tab character.
	Files: postconf/postconf.h, postconf/test20.ref,
	postconf/test21.ref.

20111127

	Cleanup: documented <transport>_suffix parameters that don't
	show in postconf command output of earlier Postfix versions.
	Files: proto/SMTPD_POLICY_README.html, proto/postconf.proto,
	proto/SCHEDULER_README.html.

	Cleanup: added the pipe(8) delivery agent to the list of
	programs that implement transport_time_limit parameters.
	File: postconf/postconf_service.c, postconf/test6.ref,
	postconf/test22.ref.

20111128

	Feature: "postconf -C class,..." support to print parameters
	in one or more classes (builtin= built-in parameter names,
	service=service-defined parameter names, user=user-defined
	parameter names). Files: postconf/postconf.c, postconf/postconf.h,
	postconf_service.c, postconf/postconf_user.c.

20111129

	Cleanup: TLS logging level configuration. Files:
	global/mail_params.h, smtp/lmtp_params.c, smtp/smtp.c,
	smtp/smtp_params.c, smtp/smtp_proto.c, smtpd/smtpd.c,
	tls/tls.h, tls/tls_client.c, tls/tls_misc.c, tls/tls_server.c,
	tlsmgr/tlsmgr.c, tlsproxy/tlsproxy.c.

20111203

	Cleanup: time-dependent sender addresses of address
	verification probes.  Specify an address_verify_sender_ttl
	value of several hours or more to frustrate address harvesting.
	Files: global/verify_sender_addr.[hc], smtpd/smtpd.c,
	smtpd/smtpd_check.c, verify/verify.c, proto/postconf.proto,
	proto/ADDRESS_VERIFICATION_README.html.

20111204

	Cleanup: removed the log_level arguments from tls_client_start()
	and tls_server_start() calls. This information is already
	given to tls_client_init() and tls_server_init(). Files:
	smtpd/smtpd.c, tlsproxy/tlsproxy.c, smtp/smtp_proto.c,
	tls/tls.h, tls/tls_client.c, tls/tls_server.c, tls/tls_misc.c.

20111205

	Documentation: made the postconf(5) manpage more precise
	in its use of "client" and "server"; reorganized the
	TLS_README presentation of client configuration so that
	most relevant information is presented earlier. Files:
	proto/postconf.proto, proto/TLS_README.html.

	Bugfix: tlsproxy(8) stored TLS sessions with a serverID of
	"tlsproxy" instead of "smtpd", wasting an opportunity for
	session reuse.  File: tlsproxy/tlsproxy.c.

20111206

	Documentation: removed descriptions of Postfix < 2.3 user
	interface from TLS_README. Users of earlier releases are
	referred to TLS_LEGACY_README. File: proto/TLS_README.html.

20111207

	Cleanup: tlsproxy(8) now receives the session cache serverID
	from its client (postscreen(8)). Files: global/mail_proto.h,
	postscreen/postscreen_starttls.c, tlsproxy/tlsproxy.[hc],
	tlsproxy_state.c.

	Cleanup: the postscreen(8) daemon did not support a zero
	cache cleanup interval. This is needed for memcache support.
	File: postscreen/postscreen.c.

	Bugfix (introduced: 20110227): null pointer bug while
	updating dictionary owner attributes, after reading an empty
	(database) configuration file. File: util/dict.c.

20111208

	Cleanup: db_common_parse_domain() could not be called without
	preceding db_common_parse() call. Files: global/db_common.[hc].

20111209

	Feature: memcache client support. This implementation is
	based on the under-documented libmemcache library, and
	therefore supports only libmemcache version 1.4.0.  Files:
	conf/postfix-files, global/dict_memcache.[hc], global/mail_dict.c,
	html/index.html, mantools/postlink, postconf/postconf.c,
	postfix/postfix.c, proto/DATABASE_README.html,
	proto/MEMCACHE_README.html, proto/memcache_table.

20111209

	Cleanup: support for scripted and manual database tests with
	LDAP, *SQL, and memcache. Files: util/dict_test.c, util/dict.c,
	global/mail_dict.c.

	Workaround: apparently, some distributions use Postfix
	shared libraries without proper so-number versioning. This
	causes programs to fail mysteriously, after an update
	replaces the Postfix library but not the program (someone
	experienced this with an extra copy of the Postfix SMTP
	server).  Files: global/mail_version.[hc], master/*server.c,
	master/master.c, src/postalias/postalias.c,
	src/postdrop/postdrop.c, src/postfix/postfix.c,
	src/postlog/postlog.c, src/postmap/postmap.c,
	src/postmulti/postmulti.c, src/postqueue/postqueue.c,
	src/postsuper/postsuper.c, src/sendmail/sendmail.c.

20111211

	Feature: first/next (sequence) support in the proxymap
	protocol. This is needed for cache cleanup of a proxied
	postscreen or verify persistent cache. Files:
	global/dict_proxy.[hc], proxymap/proxymap.c.

	Feature: memcache client support without libmemcache
	dependencies. Files: global/memcache_proto.[hc],
	global/dict_memcache.c.

	Bugfix: missing lookup table entry and terminator, causing
	proxymap(8) server segfault when postscreen(8) or verify(8)
	attempted to access their cache via the proxymap(8) server.
	This could never have worked anyway, because the Postfix
	proxymap protocol did not support cache cleanup.  File
	util/dict.c.

	Feature: support for persistent backup database in the
	memcache client. The database can be shared with the proxymap
	service, but it needs to be listed as "proxy:maptype:mapname"
	in the proxy_read_maps or proxy_write_maps parameter value
	(depending on whether the access is read-only or read-write).
	Support for proxymap-over-tcp (proxy:maptype:mapname@host:port)
	is under development.  File: global/dict_memcache.c.

20111214

	Documentation: updated the submission and smtps examples
	in the sample master.cf file, so that their logging is
	easier to recognize.  File: conf/master.cf.

20111215

	Documentation: use different hosts to separate MUA "port
	25" traffic from the "port 25" MX service. Files:
	postscreen/postscreen.c, proto/POSTSCREEN_README.html.

20111216

	Cleanup: the proxymap client did not correctly propagate
	the "open_lock" flag, causing the proxymap service to open
	postscreen(8) and verify(8) caches twice, instead of once.
	File: global/dict_proxy.c.

	Cleanup: the verify and postscreen caches were not listed
	as "authorized" for access via the proxywrite service. File:
	global/mail_params.h.

	Refactoring: the postscreen permanent access list code is
	now a library module, so that it can be also used for remote
	access to the proxymap server.  Files: global/server_acl.[hc].

	Hardening: read/write deadlines, to make the proxymap server
	suitable for remote access. File: proxymap/proxymap.c.

20111217

	Cleanup: more orthogonal definition of when the proxymap
	server can/cannot share a single map instance among multiple
	requestors, and corresponding code cleanup in the proxymap
	client and server. Files: util/dict.h, util/dict_test.c,
	global/dict_proxy.c, proxymap/proxymap.c.

	Human factors: the postscreen/verify cache manager now logs
	the full database name including the proxy: prefix, to avoid
	WTF surprises. File: util/dict_cache.c.

20111218

	Cleanup: more configurable memcache client error handling.
	Files: global/dict_memcache.c, proto/memcache_table.

	Feature: the Postfix SMTP server XCLIENT command now supports
	the LOGIN attribute (e.g., login information from nginx).
	Based on the nginx:xclient-login-patch from citrin.ru (Anton
	Yuzhis). The patch was further enhanced to support SASL
	login information everywhere in the Postfix SMTP server
	without having to specify "smtpd_sasl_auth_enable = yes"
	in main.cf.  Files: smtpd.[hc], smtpd_sasl_glue.[hc],
	smtpd_check.c, smtpd_sasl_proto.[hc], smtpd_state.c,
	proto/XCLIENT_README.html.

	Incompatibility: the Postfix SMTP server now always checks
	the smtpd_sender_login_maps table, even without having
	"smtpd_sasl_auth_enable = yes" in main.cf.

20111219

	Cleanup: the match_list-based primitives now provide an
	option to return an error result instead of terminating the
	process with a fatal error.  Files: util/match_ops.[hc],
	util/match_list.c, global/addr_list_match.c, domain_list.c,
	string_list.c, namadr_list.c.

	Cleanup: a "fail:" database type that reliably fails all
	requests. The lookup table name specifies the internal error
	result code. having this table facilitates a systematic
	review of all Postfix table lookup error handling.

	Cleanup: trivial-rewrite now "catches" errors with implicit
	database lookups in virtual_alias_domains, relay_domains,
	virtual_mailbox_domains, just like it already caught explicit
	database lookup errors. This means there are fewer occasions
	where trivial-rewrite clients will appear to hang. File:
	trivial-rewrite/resolve.c.

	Cleanup: a broken relay_domains table would cause many
	Postfix processes to terminate with fatal error as they
	initialized the flush() client (used by defer_append()
	etc.). Postfix now logs a warning instead.  File:
	global/flush_clnt.c.

	Cleanup: the Postfix SMTP server now "catches" errors with
	implicit database lookups in mynetworks, TLS client certificate
	tables, and local_header_rewrite_clients, and reports "server
	configuration error" or "table lookup error" instead of
	terminating with a fatal error. This is work in progress;
	errors with opening a database may be covered later. Files:
	smtpd/smtpd.c, smtpd/smtpd_check.c.

20111220

	Cleanup: the Postfix SMTP server now "catches" errors with
	implicit database lookups in mynetworks, debug_peer_list,
	smtpd_client_event_limit_exceptions, permit_mx_backup_networks.
	This continues work started 20111219, and does not cover
	errors with opening a database.  Files: smtpd/smtpd.c,
	smtpd/smtpd_checks.c, smtpd/smtpd_error.in, smtpd/smtpd_error.ref.

	Cleanup: memory leak testing of error handling. File:
	util/name_mask.c.

20111222

	Cleanup: memory leak testing of error handling. File:
	util/name_mask.c.

	Cleanup: simplified the match_list error reporting, thereby
	reducing the footprint of the changes to "catch" errors
	with implicit database lookups in mynetworks, and other
	lists.  Files: util/match_ops.[hc], util/match_list.c,
	global/addr_list_match.c, domain_list.c, string_list.c,
	namadr_list.c, trivial-rewrite/resolve.c, smtpd/smtpd.c,
	smtpd/smtpd_check.c, global/flush_clnt.c, flush/flush.c.

20111224

	Cleanup: eliminated the global dict_errno variable that
	made error reporting convenient but not necessarily precise.
	This was a straightforward change except in the few modules
	that propagate errors from one dictionary API to another:
	dict_cache.c, dict_debug.c, maps.c, dict_memcache.c.  Files:
	src/cleanup/cleanup_map11.c, src/cleanup/cleanup_map1n.c,
	src/global/addr_match_list.c, src/global/dict_ldap.c,
	src/global/dict_memcache.c, src/global/dict_mysql.c,
	src/global/dict_pgsql.c, src/global/dict_proxy.c,
	src/global/dict_sqlite.c, src/global/domain_list.c,
	src/global/flush_clnt.c, src/global/mail_addr_find.c,
	src/global/mail_addr_map.c, src/global/maps.c, src/global/maps.h,
	src/global/match_parent_style.h, src/global/namadr_list.c,
	src/global/resolve_local.c, src/global/resolve_local.h,
	src/global/server_acl.c, src/global/string_list.c,
	src/local/alias.c, src/local/bounce_workaround.c,
	src/local/mailbox.c, src/local/unknown.c, src/proxymap/proxymap.c,
	src/qmqpd/qmqpd.c, src/smtp/smtp_map11.c, src/smtpd/smtpd_check.c,
	src/trivial-rewrite/resolve.c, src/trivial-rewrite/transport.c,
	src/util/dict.h, src/util/dict_alloc.c, src/util/dict_cache.c,
	src/util/dict_cidr.c, src/util/dict_db.c, src/util/dict_debug.c,
	src/util/dict_env.c, src/util/dict_fail.c, src/util/dict_ht.c,
	src/util/dict_pcre.c, src/util/dict_regexp.c,
	src/util/dict_static.c, src/util/dict_tcp.c, src/util/dict_test.c,
	src/util/dict_thash.c, src/util/dict_unix.c, src/util/match_list.c,
	src/util/match_list.h, src/util/match_ops.c, src/virtual/mailbox.c.

20111226

	Bugfix (introduced 20110426): after lookup error with
	mailbox_transport_maps, mailbox_command_maps or
	fallback_transport_maps, the local delivery agent did not
	log the problem before deferring mail, and produced no defer
	logfile record. Files: local/mailbox.c, local/unknown.c.

20120102

	Workaround: degrade gracefully when the network protocols
	specified with inet_protocols are unavailable.  Files:
	global/mail_params.c, global/mynetworks.c, global/own_inet_addr.c
	master/master_ent.c, master/master_vars.c, postscreen/postscreen.c,
	qmqpd/qmqpd.c, smtp/smtp_connect.c, smtpd/smtpd.c,
	util/inet_proto.c.

20120107

	Workaround: degrade gracefully when the "domain" feature
	of LDAP, *SQL and memcache databases has a table lookup
	problem.  Files: global/db_common.c, global/dict_ldap.c,
	global/dict*sql*.c, global/dict_memcache.c.

	Cleanup: fixed memcache client error handling for things
	that never happen.  global/dict_memcache.c.

	Future proofing: prepare postmap/postalias error logging
	for future changes to database code. Files: postalias/postalias.c,
	postmap/postmap.c.

20120108

	Cleanup: the postscreen(8) and verify(8) cache managers log
	warnings at a reduced rate of one per second per cache
	operation, to avoid logging large numbers of warnings about
	a problem with low-value information. File: util/msg_rate_delay.c,
	util/dict_cache.c.

20120110

	Cleanup: added logging for failed table lookups, and replaced
	some "fatal" errors by warnings. Files: cleanup/cleanup_addr.c,
	cleanup/cleanup_message.c, cleanup/cleanup_milter.c,
	cleanup/cleanup_masquerade.c, global/header_body_checks.c,
	global/smtp_stream.c, postscreen/postscreen_dnsbl.c,
	postscreen/postscreen_smtpd.c, smtp/smtp_chat.c,
	smtp/smtp_proto.c, smtp/smtp_sasl_auth_cache.c,
	smtp/smtp_sasl_glue.c, smtp/smtp_session.c, smtp/smtp_trouble.c,
	smtpd/smtpd.c, smtpd/smtpd_check.c.

20120114

	Cleanup: gradual degradation after database file open errors.
	Instead of terminating immediately with a "fatal" error, a
	Postfix daemon logs an error and continues execution with
	reduced functionality. In other words, features that don't
	depend on the unavailable table will keep working.  However,
	for the sake of sanity, the number of such errors over the
	life of a process is limited to 13.  Files:
	src/global/cfg_parser.c, src/util/dict_thash.c,
	src/util/dict_cidr.c, src/util/dict_nis.c, src/util/dict_nisplus.c,
	src/global/dict_ldap.c, src/global/dict_mysql.c,
	src/global/dict_pgsql.c, src/global/dict_sqlite.c,
	src/postconf/postconf_main.c, src/global/mail_conf.c,
	src/util/dict.h, src/util/dict.c, src/global/dict_memcache.c,
	src/util/dict_tcp.c, src/util/dict_unix.c, src/util/dict_pcre.c,
	src/util/dict_regexp.c, src/master/trigger_server.c,
	src/master/single_server.c, src/master/multi_server.c,
	src/master/event_server.c, src/util/dict_test.c,
	src/util/dict_surrogate.c, src/util/dict_alloc.c, src/util/msg.c,
	src/util/dict_cdb.c, src/util/dict_dbm.c, src/util/msg.h,
	src/util/dict_db.c.

	Incompatibility: the Postfix SMTP server no longer reports
	transcripts of sessions where a client command is rejected
	because a table is unavailable.  To receive such reports,
	add the new "data" class to the notify_classes parameter
	value. The reports will be sent to the error_notice_recipient
	address as before. This class is also used by the Postfix
	SMTP client to report about sessions that fail because a
	table is unavailable. Files: global/mail_error.[hc],
	smtpd/smtpd_check.c, smtp/smtp_trouble.c.

20120115

	Fine tuning: SMTP server error messages. File: smtpd/smtpd.c.

	Fine tuning: documentation. Files: proto/MEMCACHE_README.html.
	proto/memcache_table.html.

	Apply "gradual degradation" also when an unsupported database
	*type* is specified. File: util/dict_open.c.

	Cleanup: tiny memory leaks after surrogate database opens.
	Files: util/dict_cidr.c, util/dict_db.c.

20120117

	Cleanup: support for legacy-style database configuration
	where parameter names are generated by appending suffixes
	to the database name. Files: postconf/postconf_dbms.c.

	Other: build without Berkeley DB support (make makefiles
	"CCARGS=$CCARGS -DNO_DB"). Files: makedefs, util/sys_defs.h,
	proto/DB_README.html, proto/INSTALL.html.

20120120

	Compatibility: added file pflogsumm_quickfix.txt with quick
	patches for pflogsumm that handle the new default master.cf
	entries for the submission and smtps services.

20120121

	Cleanup: getopt(3) compatibility in the postconf(1) master.cf
	parser. Process "--" as the end-of-options indicator, and
	process "-oname=value" as "-o name=value".  Files:
	util/argv.[hc], postconf/postconf_master.cf,
	postconf/postconf_user.c.

20120122

	Workaround: log a warning and suggested solution for common
	stat()/fstat()/lstat() problems caused by 32-bit overflow.
	This is a real stinker that causes Postfix to fail without
	any prior warning.  File: util/warn_stat.[hc], and everything
	that directly calls stat(), fstat() or lstat().

20120127

	Bugfix (introduced: Postfix 2.8): the Postfix client sqlite
	quoting routine returned the unquoted result instead of the
	quoted text.  The opportunities for misuse are limited,
	because Postfix sqlite files are usually owned by root, and
	Postfix daemons usually run with non-root privileges so
	they can't corrupt the database. Problem reported by Rob
	McGee (rob0).  File: global/dict_sqlite.c.

20120130

	Bugfix (introduced: Postfix 2.3): the trace service did not
	distinguish between DSN SUCCESS notifications for a non-bounce
	or a bounce message. This code pre-dates DSN support and
	should have been updated when it was re-purposed to handle
	DSN SUCCESS notifications. Problem reported by Sabahattin
	Gucukoglu.  File: bounce/bounce_trace_service.c.

20120202

	Bugfix (introduced: Postfix 2.3): the "change header" milter
	request could replace the wrong header. A long header name
	could match a shorter one, because a length check was done
	on the wrong string.  Reported by Vladimir Vassiliev.  File:
	cleanup/cleanup_milter.c.

20120214

	Bugfix (introduced: Postfix 2.4): extraneous null assignment
	caused core dump when postlog emitted the "usage" message.
	Reported by Kant (fnord.hammer). File: postlog/postlog.c.

20120217

	Bugfix (introduced 20111219): sendmail -bs segfault, due
	to a missing guard statement after an smtpd_check_rewrite()
	call was moved closer to the command processor loop. Fix
	by Bartek Szady. File: smtpd/smtpd.c.

20120220

	Cleanup: documentation of how to use only system-supplied
	certificates with *CAfile and *CApath. File: proto/postconf.proto.

	Cleanup: documentation of smtp_sasl_mechanism_filter.  File:
	proto/postconf.proto.

20120222

	Cleanup: when multiple DNSBLs block an SMTP client, the
	postscreen "reject" message now gives credit to the DNSBL
	with the largest weight, instead of the DNSBL that replies
	first. File: postscreen/postscreeb_dnsbl.c.

	Cleanup: memcache_table(5) manpage. File proto/memcache_table.

20120225

	Cleanup: eliminated the build-time Perl dependency.  File:
	bounce/annotate.sh.

	Cleanup: when -DNO_DB support was added, the makedefs script
	was not updated to skip the Linux Berkeley DB tests.

	FreeBSD9 is now a supported platform. Files: makedefs,
	util/sys_defs.h.

20120226

	Cleanup: documentation in postfix-install.

20120229

	Feature: smtpd_log_access_permit_actions to enable logging
	of specific permit-like actions in Postfix SMTP server
	access lists.  Files: mantools/postlink, proto/postconf.proto,
	global/mail_params.h, smtpd/smtpd.c, smtpd/smtpd_check.c.

20120306

	To improve the interaction with start-up scripts, "postfix
	start" now waits for master daemon process initialization
	to complete, and returns a non-zero exit status if daemon
	initialization failed or if it did not complete in a
	reasonable amount of time. This involves a new "-w" master
	option.  Files: conf/postfix-script, master/master.c,
	master/master.h.  master/master_monitor.c.

20120307

	postconf -X option to exclude parameters from main.cf
	(require two-finger action, because this is irreversible).
	Files: postconf/postconf.[hc], postconf/postconf_edit.c.

20120317

	Feature: Sendmail-style socketmap.  Files: util/dict_sockmap.[hc],
	util/netstring.[hc], proto/DATABASE_README.html,
	postconf/postconf.c.

20120330

	Workaround: specify "\c" at the start of an smtp_reject_footer
	template to suppress the line break between the reply text
	and the footer text. Files: global/smtp_reply_footer.c,
	proto/postconf.proto.

20120401

	Bugfix (introduced Postfix 2.6): irrelevant memory leak
	that was introduced with postconf -#. File:
	postconf/postconf_edit.c.

	Bitrot: shut up useless warnings about Cyrus SASL call-back
	function pointer type mis-matches. Files: xsasl/xsasl_cyrus.h,
	xsasl/xsasl_cyrus_server.c, xsasl/xsasl_client.c.

20120404

	Cleanup: added smtpd_sender_login_maps to the default
	proxy_read_maps value. Files: global/mail_params.h,
	proxymap/proxymap.c.

	Cleanup: weed out stale TODO's from the WISHLIST, and moved
	some CYA text from WISHLIST into the code. Files: WISHLIST,
	smtpd/smtpd_proxy.c.

20120407

	Bugfix (introduced: 20120330): don't replace <reply-code>
	<space> by <reply-code> <hyphen> when a reply footer starts
	with \c and contains no \n. File: global/smtp_reply_footer.c.

20120422

	Bit-rot: OpenSSL 1.0.1 introduces new protocols. Update the
	known TLS protocol list so that protocols can be turned off
	selectively to work around implementation bugs.  Based on
	a patch by Victor Duchovni.  Files: proto/TLS_README.html,
	proto/postconf.proto, tls/tls.h, tls/tls_misc.c, tls/tls_client.c,
	tls/tls_server.c.

20120425

	Workaround: bugs in 10-year old gcc versions break compilation
	with #ifdef inside a macro invocation (NOT: definition).
	Files: tls/tls.h, tls/tls_client.c, tls/tls_server.c.

20120426

	Bugfix (introduced Postfix 2.9): the postconf command flagged
	parameters defined in master.cf as "unused" when they were
	used only in main.cf. Problem reported by Michael Tokarev.
	Files: postconf/postconf_user.c, postconf/test4b.ref,
	postconf Makefile.in.

20120513

	Cleanup: report both the first and last line number when a
	malformed main.cf entry spans multiple lines, instead of
	reporting the last line number only. File: util/dict.c,
	util/line_number.[hc].

20120516

	Workaround: apparently, FreeBSD 8.3 kqueue notifications
	sometimes break when a dnsblog(8) process loses an accept()
	race on a shared socket, resulting in repeated "connect to
	private/dnsblog service: Connection refused" warnings.  This
	condition is unique to dnsblog(8). The postscreen(8) daemon
	closes a postscreen-to-dnsblog connection as soon as it
	receives a dnsblog(8) reply, resulting in hundreds or
	thousands of connection requests per second.  All other
	multi-server daemons such as anvil(8) or proxymap(8) have
	connection lifetimes ranging from 5s to 1000s depending on
	server load.  The workaround is for dnsblog to use the
	single_server driver instead of the multi_server driver.
	This one-line code change eliminates the accept() race
	without any Postfix performance impact.  Problem reported
	by Sahil Tandon.  File: dnsblog/dnsblog.c.

	Logging: postscreen now logs a warning when a dnsblog(8)
	request takes longer than the hard-coded time limit of 10s.
	File: postscreen/postscreen_dnsbl.c.

20120517

	Workaround: to avoid crashes when the OpenSSL library is
	updated without "postfix reload", the Postfix TLS session
	cache ID now includes the OpenSSL library version number.
	Note: this problem cannot be fixed in tlsmgr(8). Code by
	Victor Duchovni. Files: tls/tls_server.c, tls_client.c.

20120520

	Bugfix (introduced Postfix 2.4): the event_drain() function
	was comparing bitmasks incorrectly causing the program to
	always wait for the full time limit. This error affected
	the unused postkick command, but only after s/fifo/unix/
	in master.cf.  File: util/events.c.

	Cleanup: laptop users have always been able to avoid
	unnecessary disk spin-up by doing s/fifo/unix/ in master.cf
	(this is currently not supported on Solaris systems).
	However, to make this work reliably, the "postqueue -f"
	command must wait until its requests have reached the pickup
	and qmgr servers before closing the UNIX-domain request
	sockets.  Files: postqueue/postqueue.c, postqueue/Makefile.in.

20120522

	Robustness: set LC_ALL=C in post-install to avoid surprises
	when parsing output from Postfix or non-Postfix commands.
	File: postfix-install.

20120611

	Bugfix (introduced: 20031216-21): with soft_bounce=yes, the
	SMTP client did not move on to the next MX host or fallback
	relay after a 5xx reply. File: smtp/smtp_trouble.c.

20120527-8

	Infrastructure: limited support to shrink VSTREAM buffers.
	The change takes place when reading from (a stream for the
	first time | an empty buffer) or when writing to (a stream
	for the first time | a full buffer). TODO: the change should
	also happen after purging or flushing a buffer.  File:
	util/vstream.c.

20120531-617

	Feature: haproxy support in postscreen(8) and smtpd(8).  To
	enable, specify "smtpd_upstream_proxy_protocol = haproxy"
	or "postscreen_upstream_proxy_protocol = haproxy".  Files:
	mantools/postlink, proto/postconf.proto, global/Makefile.in,
	global/haproxy_srvr.c, global/haproxy_srvr.h, global/mail_params.h,
	global/mail_proto.h, master/single_server.c, master/multi_server.c,
	master/event_server.c, postscreen/Makefile.in,
	postscreen/postscreen.c, postscreen/postscreen.h,
	postscreen/postscreen_endpt.c, postscreen/postscreen_haproxy.c,
	postscreen/postscreen_haproxy.h, postscreen/postscreen_send.c,
	postscreen/postscreen_state.c, smtpd/Makefile.in, smtpd/smtpd.h,
	smtpd/smtpd_peer.c, smtpd/smtpd_sasl_glue.c, smtpd/smtpd_haproxy.c,
	util/Makefile.in, util/listen.h, util/recv_pass_attr.c,
	util/stream_listen.c, util/sys_defs.h, util/unix_pass_listen.c.

20120618

	Cleanup: made the postscreen-to-smtpd haproxy attribute
	transmission more robust for Solaris. Files: util/sys_defs.h,
	util/connect.h, util/steam_listen.c, postscreen/postscreen_send.c.

	Cleanup: simplified the "stream used" workaround. Files:
	util/vstream.h, master/event_server.c, master/multi_server.c.

20120621

	Cleanup: simplified workarounds for Solaris streams versus
	UNIX-domain sockets.  Files: util/pass_accept.c (new),
	util/pass_trigger.c (new), util/stream_pass_connect.c
	(deleted), util/unix_pass_listen.c (deleted),
	util/unix_pass_trigger.c (deleted), updated header files,
	and replaced PASS_XXX macros by pass_xxx function calls.

	Cleanup: don't clobber errno when logging a problem.
	File util/msg_output.c.

20120627

	Bugfix (introduced: 20120531-617): in the postscreen module
	for HAproxy sypport, a VSTREAM buffer size request was not
	LP64-clean.  File: postscreen/postscreen_haproxy.c.

	Cleanup: avoid single-character reads in the postscreen
	HAproxy module. File: postscreen/postscreen_haproxy.c.

20120628

	Workaround: heuristic to detect missing (ssize_t) type-cast
	in VSTREAM buffer size requests. File: util/vstream.c.

20120629

	Workaround: "sendmail -bl" emulation. File: sendmail/sendmail.c.

20120630

	Cleanup: sub-optimal hash performance on systems where the
	"char" type is signed.  Files: util/htable.c, util/binhash.c.

20120702

	Bugfix (introduced: 19990127): the BIFF client leaked an
	unprivileged UDP socket. Fix by Jaroslav Skarvada.  File:
	local/biff_notify.c.

20120713

	Bugfix (introduced: 20120527-8): infrastructure to specify
	a smaller-than-default VSTREAM buffer, without the complex
	run-time checks. File: util/vstream.c, vstream_tweak.c.

20120714

	Cleanup: semantics of requests to query or modify the VSTREAM
	buffer size that will be used with the next read(2) or
	write(2) operation. Files: util/vstream.c, util/vstream.h,
	util/vstream_tweak.c.

20120717

	Documentation: update to RFC5321.

20120730

	Bugfix (introduced: 20000314): AUTH is not allowed after
	MAIL. Timo Sirainen.  Files: smtpd/smtpd.c, smtpd/smtpd.h,
	smtpd/smtpd_sasl_proto.c.

20120801

	Documentation: point of what virtual_xxx parameters are
	specific to the virtual(8) delivery agent, and will have
	no effect when mail is delivered with a different program.
	Files: proto/postconf.proto, proto/VIRTUAL_README.html.

20120824

	Feature: support for "sendmail -R hdrs|full". Jan Kundr?t.
	File: sendmail/sendmail.c.

20120902

	Documentation: updated TUNING_README with new pointers to
	the STRESS_README and POSTSCREEN_README documents. Miscellaneous
	documentation clarifications based on postfix-users discussions.

20120903

	Bugfix (introduced 20120317): the socketmap client should
	not share unrelated client endpoint handles. File:
	util/dict_sockmap.c.

20120907

	Cleanup (for change 20120824): the DSN RET attribute should
	not be stored once per recipient. It is a message property
	just like DSN ENVID.  File: sendmail/sendmail.c.

20120911

	Documentation: more explicit enumeration of what happens
	when setting a per-destination recipient limit value to 1.
	File: proto/postconf.proto.

20120918

	Documentation: clarified the bounce/queue_life-time parameter
	descriptions. File: proto/postconf.proto.

20120920

	Documentation: the postscreen_whitelist_interfaces parameter
	syntax was defined only by example. File: proto/postconf.proto.

20120923

	Infrastructure: cleaned up the support for database
	lock-on-open. This is needed for databases that are not
	multi-updater safe.  Files: util/dict_alloc.c, util/dict.c,
	util/dict_open.c, util/dict.h.  tls/tls_scache.c.

20120924

	Documentation: some people are read-challenged distribute
	their own incorrect understanding of master.cf syntax.
	File: proto/master.

	Cleanup: don't emulate UNIX-domain sockets over FIFOs on
	Solaris systems less than 10 years old. This allows us to
	globally s/fifo/unix/ in master.cf.  Files: makedefs,
	util/sys_defs.h.

	Laptop-friendliness: avoid disk spin-up on idle systems by
	s/fifo/unix/ in master.cf.  Files: conf/master.cf.

20120928-30

	Feature: smtpd_relay_restrictions, proposed long ago by
	Victor. The idea is to separate the mail relay policy from
	the spam blocking policy, so that a permissive spam blocking
	policy under smtpd_recipient_restrictions will no longer
	unexpectedly result in a permissive mail relay policy.

	This involves a change in default settings.  Similar to the
	way that local_recipient_maps was introduced, there is a
	safety net that prevents unexpected mail bounces when a
	site upgrades to Postfix 2.10 or later, and there is no
	change in documented smtpd_recipient_restrictions behavior.
	See the RELEASE_NOTES file for details.  Files:
	global/mail_params.h, smtpd/smtpd.c, smtpd/smtpd_check.c,
	proto/postconf.proto, proto/SMTPD_ACCESS_README.html,
	mantools/postlink, conf/post-install, RELEASE_NOTES.

20120931-1001

	Documentation: updated the remainder of the README files
	and manual pages that discuss smtpd_recipient_restrictions.

20121001

	Cleanup: prepend 5.1.1 status code to "User unknown in
	virtual alias table". File: trivial-rewrite/resolve.c.

20121003

	Bugfix: the postscreen_access_list feature was case-sensitive
	in the first character of permit, reject, etc. Reported by
	Francis Picabia. File: global/server_acl.c.

20121009

	Documentation: interaction between delay_warning_time,
	notify_classes and delay_notice_recipient. File:
	proto/postconf.proto.

20101009

	Human factors: log a warning that the postcat option -m
	without -h or -b has no effect. File: postcat/postcat.c.

20121010

	Bugfix (introduced: Postfix 2.5): memory leak in program
	initialization. Reported by Coverity. File: tls/tls_misc.c.

	Bugfix (introduced: Postfix 2.3): memory leak in the unused
	oqmgr program. Reported by Coverity. File: oqmgr/qmgr_message.c.

20121011

	Documentation: how to enable /etc/hosts multi-record lookups
	with main.cf settings.  File: proto/LINUX_README.html.

	Documentation: clarified the postscreen-tlsproxy interface.
	File: tlsproxy/tlsproxy.c.

20121012

	Documentation: a simpler null-client example.  File:
	proto/STANDARD_CONFIGURATION_README.html

20121013

	Cleanup: to compute the LDAP connection cache lookup key,
	join the numeric fields with null, just like string fields.
	Viktor Dukhovni. File: global/dict_ldap.c.

20121015

	Documentation: added section on regular-expression tables
	to the aliases(5) manpage. File: proto/aliases.

	Documentation: why "smtp_address_preference = any" is the
	preferred setting. File: proto/postconf.proto.

20121022

	Bugfix (introduced 20101009) don't complain about stray -m
	option if none of -[bhm] is specified. Ralf Hildebrandt.
	File: postmap/postmap.c.

20121029 

	Workaround: strip datalink suffix from IPv6 addresses
	returned by the system getaddrinfo() routine.  Such suffixes
	mess up the default mynetworks value, host name/address
	verification and possibly more. This change obsoletes the
	20101108 change that removes datalink suffixes in the SMTP
	and QMQP servers.  Files: util/myaddrinfo.c, smtpd/smtpd_peer.c,
	qmqpd/qmqpd_peer.c.

20121031

	Bugfix: smtpd_relay_restrictions compatibility shim did not
	detect "empty" value.  Sahil Tandon. The same problem existed
	with the inet_protocols shim. File: conf/post-install.

20121105

	Cleanup: the postscreen(8) "deep protocol" tests now log
	the SMTP command that precedes a protocol violation.  Files:
	postscreen/postscreen_smtpd.c, proto/POSTSCREEN_README.html.

	Bugfix (introduced: Postfix 1.1): wrong string termination
	when handling an MBOX From_ line at the start of a message.
	File: qmqpd/qmqpd.c.

20121110

	Cleanup: specify $(WARN) on the MacOS X compiler command
	line to suppress "nested comment" and possibly other unwanted
	warnings. Problem reported by Jim Reid. File: makedefs,
	Makefile.in.

20121119

	Documentation: added a note that key_format is required
	when postscreen(8) and verify(8) share the same memcache
	(with different persistent backup databases, or course)
	otherwise automatic cache cleanup breaks due to a name
	collision for the "last cache cleanup" database record.
	File: proto/memcache.

20121122

	Cleanup: the safety-check for smtpd_recipient_restrictions
	and smtpd_relay_restrictions now detects permit before
	reject.  File: smtpd/smtpd_check.c.

	Cleanup: the safety-check for smtpd_recipient_restrictions
	and smtpd_relay_restrictions is no longer case-sensitive.
	File: smtpd/smtpd_check.c.

20121123

	Cleanup: consistent escaping of commands in postscreen deep
	protocol test logging. File: postscreen/postscreen_smtpd.c.

20121124

	Documentation: the bounce behavior for automatically-added
	BCC recipients has changed with Postfix 2.3 when DSN support
	was introduced.  File: proto/postconf.proto.

20121203

	Documentation: added explicit example for -o name=value.
	File: proto/master.

20121210

	Bugfix (introduced: Postfix 2.9) nesting count error while
	stripping the optional [] around a DNS[BW]L address pattern.
	This part of the code is not documented and had escaped
	testing.  Files: util/ip_match.c, util/ip_match.in,
	util/ip_match.ref.

20121215

	Bugfix (introduced: 19980218, when recipient_delimiter
	support was added): The error message for unknown local
	users (or missing required aliases) should report the user
	name instead of the full localpart which may contain an
	address extension.  Problem reported by Christian Holler.
	File: local/unknown.c.

20121221

	Feature: "postconf -x" support to expand $name in main.cf
	parameter values. Files: postconf/postconf_main.c,
	postconf/postconf.h, postconf/postconf_node.c, postconf/postconf.c.

20121222

	Feature: postconf support to warn about an attempt to modify
	a read-only parameter (process_name etc.) in main.cf or
	master.cf. Files: postconf/postconf_readonly.c,
	postconf/postconf_builtin.c.

20121223

	Feature: postconf support to warn about an undefined $name
	in a parameter value in main.cf or master.cf (except for
	backwards-compatibility parameters such as $virtual_maps)
	Files: postconf/postconf_user.c, postconf_dbms.c,
	postconf_builtin.c, util/dict_ht.c, util/htable.c.

	Feature: "postconf -Mx" support to expand $name in master.cf
	parameter values.  Files: postconf/postconf_master.c,
	postconf/postconf_lookup.c, postconf/postconf_main.c,
	postconf/postconf.c.

20121224

	Feature: "postconf -Mn" support to print only master.cf
	entries that have "-o name=value" parameter setttings.
	Files: postconf/postconf_master.c.

20121226

	Miscellaneous cleanups of postconf internal APIs, identifiers
	and comments. No changes in behavior.

	Bugfix (omission in feature 20111203): the SMTP server only
	supported time-dependent address-verification sender addresses
	with RCPT TO but not with MAIL FROM. File: smtpd/smtpd.c.

20121227

	Feature: "postconf -o name=value" support to override main.cf
	settings (for example, "postconf -x -o stress=whatever"
	shows effective settings under overload). Files:
	postconf/postconf.c, postconf/postconf_main.c.

20121230

	Cleanup: postconf(1) master.cf options parser. Files:
	postconf/postconf_master.c, postconf/postconf_user.c.

	Bugfix (omission in feature 20111106): the postconf(1)
	master.cf options parser didn't support "clusters" of
	command-line option letters. Files: postconf/postconf_master.c,
	postconf/test40.ref.

20130105

	Undo a change made around 20121224, and always whitelist
	configuration parameter names for legacy-style proxy:ldap:prefix
	etc.  lookup tables.  Files: postconf/postconf_dbms.c,
	postconf/test28.ref, postconf/test29.ref, postconf/Makefile.in.

20130107

	Factor out the master.cf line parser so that it can be
	reused for "postconf -Me". File: postconf/postconf_master.c.

20130113

	Feature: master.cf attribute namespace. "postconf -F" shows
	individual master.cf fields as "service/type/attribute =
	value", where attribute is "service", "type", "private",
	"unprivileged", "wakeup", "process_limit", or "command".

20130121

	Bugfix (introduced 20120307): the postconf -X option erased
	other options.  File: postconf/postconf.c.

20130131

	Bugfix: the local(8) delivery agent dereferenced a null
	pointer while delivering to null command (for example, "|"
	in a .forward file).  Reported by Gilles Chehade.

20130203

	Bugfix: the undocumented OpenSSL X509_pubkey_digest()
	function is unsuitable for computing certificate PUBLIC KEY
	fingerprints.  Postfix now provides a correct procedure
	that accounts for the algorithm and parameters in addition
	to the key data.  Specify "tls_legacy_public_key_fingerprints
	= yes" if you need backwards compatibility. Fix by Victor
	Duchovni, BC added by Wietse.  Files: tls/tls_verify.c,
	tls/tls_misc.c, proto/TLS_README.html, global/mail_params.h.

20130210

	Bugfix: an error handler for smtp_tls_policy_maps lookups
	was never invoked.  File: smtp/smtp_session.c.

20130212

	Cleanup: logfile message formatting (X: subject_CN=X,
	issuer_CN=X, fingerprint=X, pkey_fingerprint=X). File:
	tls/tls_client.c.

20130315

	Feature: LMDB (memory-mapped persistent file) support by
	Howard Chu. This implementation has unexpected failure modes
	that don't exist with other Postfix databases, so don't
	just yet abandon CDB.  See LMDB_README for details.  Files:
	proto/postconf.proto, proto/LMDB_README.html,
	proto/DATABASE_README.html, proto/INSTALL.html util/dict_lmdb.[hc],
	util/dict_open.c, global/mkmap_lmdb.[hc], global/mkmap_open.c,
	postconf/postconf.c.

20130316

	Cleanup: new Postfix dictionary API flag to control the use
	of (LMDB) bulk database transactions.  With this, LMDB
	databases no longer fail to commit any transactions with
	tlsmgr(8), and LMDB databases no longer perform glacially
	slow with postmap -i/postalias -i.  Files: util/dict.h,
	util/dict_lmdb.c, postmap/postmap.c, postalias/postalias.c.

20130317

	Debugging: generalized setting of dictionary API flags.
	File: util/dict.[hc], util/dict_test.c.

	Robustness: Postfix programs can now recover from LMDB
	"database full" errors without requiring human intervention.
	When a program opens an LMDB file larger than lmdb_map_size/3,
	it logs a warning and uses a larger size limit instead.
	Files: util/dict_lmdb.c, proto/LMDB_README.html.

20130318

	Portability: botched #ifdef. File: util/dict_lmdb.c.

20130319

	Postfix support for LMDB databases is suspended due to the
	existence of a hard limit (an "out of storage" failure mode
	that cannot be resolved by increasing the database size).

	Postfix may support LMDB again when it no longer limits the
	size of Postfix transactions, whether the limit is built
	into LMDB itself, or implicit by requiring an unbounded
	amount of memory to handle a large transaction.

20130322

	Documentation: smtp_skip_5xx_greeting wording updated to
	reflect text in RFC 2821, which appears to say that a 554
	greeting is not a hard delivery error (note that RFC 2821
	was published later than smtp_skip_5xx_greeting). File:
	proto/postconf.proto.

20130324

	Workaround: MacOS 10.8 (Darwin 12) getrlimit(RLIMIT_NOFILE)
	incorrectly reports that rlim_max, the hard limit on the
	number of open files per process, is equal to RLIM_INFINITY
	(i.e. no limit is enforced).  In reality, setrlimit(RLIMIT_NOFILE)
	rejects requests where rlim_cur, the current limit, contains
	any value > kern.maxfilesperproc.  Axel Luttgens.  File:
	util/open_limit.c.

	Portability: MacOS 10.8 (Darwin 12) kqueue support works.
	Axel Luttgens. Files: makedefs.

20130324

	Support for anonymous certificates. Viktor Dukhovni. File:
	tls/tls_verify.c.

	Feature: support for DNSSEC-validated lookups and TLSA
	RRsets.  Viktor Dukhovni. Files: dns/Makefile.in, dns/dns.h,
	dns/dns_lookup.c, dns/dns_rr.c, dns/dns_strtype.c,
	dns/test_dns_lookup.c,

	Cleanup: the personality switch between "smtp" and "lmtp".
	This streamlines the switch in the SMTP/LMTP protocol, DNS
	MX lookups, and configuration parameter names in error
	messages.  Viktor Dukhovni. Files: smtp/smtp.c, smtp/smtp.h,
	smtp/smtp_chat.c, smtp/smtp_connect.c, smtp/smtp_proto.c,
	smtp/smtp_rcpt.c, smtp/smtp_sasl_glue.c, smtp/smtp_sasl_proto.c,
	smtp/smtp_session.c, smtp/smtp_state.c.

	Feature: replace disable_dns_lookups with smtp_dns_support_level,
	enable secure DNSSEC lookups in the Postfix SMTP client,
	and use the DNSSEC-validated remote SMTP server name to
	select the SMTP and TLS policies.  Viktor Dukhovni. Files:
	dns/Makefile.in, dns/dns.h, dns/dns_lookup.c, dns/dns_rr.c,
	dns/dns_strtype.c, dns/test_dns_lookup.c.

20130325

	Portability: on MacOS X, use kqueue() for event handling
	but use select() instead of poll() for read/write timeouts
	(with a workaround to handle file decriptors >=FD_SETSIZE).
	Files: util/sys_defs.h, util/readable.c, util/writable.c,
	util/read_wait.c, util/write_wait.c.

	Portability: support for NetBSD 5.x, NetBSD 6.x and DragonFly
	BSD. Viktor Dukhovni. Files: makedefs, util/sys_defs.h.

20130326

	Cleanup: new module that consolidates all system-dependent
	code to enforce read/write timeouts. This includes a final
	workaround for MacOS X that uses poll() first, and select()
	if that fails.  This makes their /dev/urandom workaround
	unnecessary. Files: util/poll_fd.c, util/iostuff.h.  Removed:
	util/readable.c, util/writable.c, util/read_wait.c,
	util/write_wait.c.

	Cleanup: refactor TLS digest functions, improved signature
	for TLS session cache. Viktor Dukhovni. Files: smtp/smtp.c,
	smtp/smtp_proto.c, smtpd/smtpd.c, tls/Makefile.in, tls/tls.h,
	tls/tls_client.c, tls/tls_fprint.c, tls/tls_level.c,
	tls/tls_misc.c, tls/tls_server.c, tls/tls_verify.c,
	tlsproxy/tlsproxy.c.

20130327

	Cleanup: final polish for MacOSX workarounds; replaced
	#ifdef MacOSX by feature test as required by PORTING document.
	Files: util/poll_fd.c, util/open_limit.c.

	Export tls_fprint() and tls_digest_encode() for use in DANE.
	Viktor Dukhovni. Files: tls/tls.h, tls/tls_fprint.c.

20130331

	Refactoring: TLS verification callback processing in
	preparation for DANE support. Viktor Dukhovni. Files:
	tls/tls.h, tls/tls_client.c, tls/tls_misc.c, tls/tls_verify.c.

	Refactoring: split off SMTP client per-session TLS policy
	data and code in preparation for DANE support.  Viktor
	Dukhovni.  Files: smtp/Makefile.in, smtp/smtp.h,
	smtp/smtp_connect.c, smtp/smtp_proto.c, smtp/smtp_reuse.c,
	smtp/smtp_session.c, smtp/smtp_tls_sess.c.

	Cleanup: "zero time limit" corner case in read_wait() and
	write_wait() emulation. Files: util/poll_fd.c, util/iostuff.h.

20130401

	Refactoring: allow smtp_session_alloc() to fail gracefully
	and report an error.

20130403

	Documentation: in smtpd.c, the comment that justifies the
	454 reply for "TLS unavailable" cited the wrong RFC.

20130404

	Human factors: warning when a main.cf parameter has multiple
	entries with different values.  File: util/dict.c.

20130405

	Feature: the recipient_delimiter parameter can now specify
	a set of characters. A user name is now separated from its
	address extension by the first character that matches the
	recipient_delimiter set.  Files: proto/postconf.proto,
	src/global/mail_addr_find.c, src/global/mail_params.c,
	src/global/split_addr.c, src/global/split_addr.h,
	src/global/strip_addr.c, src/global/strip_addr.h,
	src/global/strip_addr.ref, src/local/bounce_workaround.c,
	src/local/local.c, src/local/local_expand.c, src/local/recipient.c,
	src/local/resolve.c, src/oqmgr/qmgr_message.c, src/pipe/pipe.c,
	src/qmgr/qmgr_message.c, src/smtpd/smtpd.c,
	src/smtpd/smtpd_check.c, src/trivial-rewrite/transport.c,
	src/trivial-rewrite/trivial-rewrite.c.

	Feature: support for trust anchors, i.e. CA certificates
	or public keys that will be used instead of conventional
	root certificates, and revised fingerprint support.  This
	can be used by itself, and this provides support for an
	upcoming DANE implementation.  Victor Duchovni.  Files:
	mantools/postlink, proto/TLS_README.html, proto/postconf.proto,
	global/mail_params.h, smtp/lmtp_params.c, smtp/smtp.c,
	smtp/smtp.h, smtp/smtp_params.c, smtp/smtp_proto.c,
	smtp/smtp_session.c, smtp/smtp_state.c, smtp/smtp_tls_sess.c,
	tls/Makefile.in, tls/tls.h, tls/tls_client.c, tls/tls_dane.c,
	tls/tls_fprint.c, tls/tls_misc.c, tls/tls_verify.c,
	util/argv.c, util/argv.h.

20130409

	Documentation: pointers to other actions under "ACCEPT
	ACTIONS" and "REJECT ACTIONS". File: proto/access.

20130410

	Cleanup: more uniform permutation in dns_rr() by Victor
	Duchovni & Son. File: dns/dns_rr.c.

20130411

	Documentation: clarified text about result formats. Files:
	proto/canonical, proto/virtual.

20130414

	Cleanup: the SMTP client connection management code now
	maintains iterator state with a structure that contains
	next-hop, host name, address, port and other information.
	This iterator structure replaces random variables that were
	updated by add-hoc code, and replaces random function
	argument lists. The more structured approach is easier to
	maintain and has already paid off by exposing opportunities
	to improve SMTP connection cache usage.  Wietse Venema.
	Files: smtp/smtp.h, smtp/smtp_connect.c, smtp/smtp_session.c,
	smtp_reuse.c.

	Cleanup: eliminated minor false SMTP connection cache-sharing
	problems due to mis-aligned lookup keys for caches and
	lookup tables (for example some used the nexthop, and some
	the domain name).  Information that is used in more than
	one lookup key is now generated by a centralized function.
	This replaces ad-hoc code in random places that was
	concatenating ad-hoc data to construct lookup keys. The
	more structured approach is easier to maintain and makes
	future cache-sharing issues easier to prevent.  Wietse
	Venema. Files: smtp/smtp.h, smtp/smtp_connect.c, smtp_reuse.c,
	smtp_key.c, smtp_tls_sess.c.

	Cleanup and fix of non-production code: the trust anchor-digest
	code and smtp_sess_tls_required() function. Victor Duchovni.
	Files: smtp/smtp_connect.c, smtp/smtp_proto.c,
	smtp/smtp_tls_sess.c, tls/tls.h, tls/tls_client.c,
	tls/tls_dane.c, tls/tls_level.c, tls/tls_verify.c.

20130417

	Cleanup and fix of non-production code: add the SASL
	credentials or absence thereof to the connection cache
	endpoint label; better reuse of SASL-authenticated connections
	over UNIX-domains sockets, however unlikely these may be;
	a first step towards refinement of connection cache lookup
	by IP addres for plaintext or SASL-unauthenticated connections.
	Files: smtp/smtp.h smtp/smtp_connect.c, smtp/smtp_reuse.c,
	smtp/smtp_key.c, smtp/smtp_tls_sess.s.

20130418

	Cleanup: configurable field delimiter and optional "not
	available" field place holder for cache and table lookup
	keys; automatic base64 encoding for key fields that contain
	these. Files: smtp/smtp_key,c, smtp/smtp_reuse.c,
	smtp/smtp_proto.c, smtp/smtp_tls_sess.c.

20130420-21

	Documentation: "dane" TLS security level and parameters.
	Viktor Dukhovni. Files: mantools/postlink, proto/TLS_README.html,
	proto/postconf.proto.

	Feature: implemented and enabled DNS-based DANE security
	level.  Viktor Dukhovni. Files: global/mail_params.h,
	smtp/lmtp_params.c, smtp/smtp.c, smtp/smtp.h, smtp/smtp_params.c,
	smtp/smtp_proto.c, smtp/smtp_tls_sess.c, tls/tls.h,
	tls/tls_client.c, tls/tls_dane.c, tls/tls_fprint.c,
	tls/tls_level.c, tls/tls_misc.c, util/Makefile.in,
	util/ctable.c, util/ctable.h, util/timecmp.c, util/timecmp.h.

	Cleanup: rename (unchanged) smtp_tls_sess.c to smtp_tls_policy.c.
	Viktor Dukhovni. Files: smtp/Makefile.in, smtp/smtp_tls_policy.c,
	smtp/smtp_tls_sess.c.

	Portability: OpenSSL workarounds for versions before 0.9.7
	are removed from the source code. Viktor Dukhovni. Files:
	tls/tls.h, tls/tls_bio_ops.c, tls/tls_client.c.

	Non-production fixes: when falling back from opportunistic
	TLS to plaintext, don't modify the cached TLS policy "retry
	as plaintext" and "level" members.  Files: smtp/smtp_session.c.

	Non-production fixes: move TLS policy lookup to the main
	connection iterator loop, so that the policy is known before
	attempting connection reuse and before SMTP connection
	creation. Temporarily link session->tls to state->tls.
	Files: smtp/smtp.h, smtp/smtp_connect.c, smtp/smtp_reuse.c,
	smtp/smtp_tls_policy.c.

20130422

	Feature: smtptls-finger test program for SMTP over TLS.
	Viktor Dukhovni. Files: Makefile.in, html/Makefile.in,
	man/Makefile.in, mantools/postlink, posttls-finger/.indent.pro,
	posttls-finger/Makefile.in, posttls-finger/posttls-finger.c,
	posttls-finger/tlsmgrmem.c, posttls-finger/tlsmgrmem.h,
	tls/tls.h, tls/tls_misc.c.

20130423

	Bugfix (introduced: Postfix 2.0): when myhostname is not
	listed in mydestination, the trivial-rewrite resolver may
	log "do not list <myhostname value> in both mydestination
	and <name of non-mydestination domain list>".  The fix is
	to re-resolve a domain-less address after adding $myhostname
	as the surrogate domain, so that it pops out with the right
	address-class label.  Problem reported by Quanah Gibson-Mount.
	File: trivial-rewrite/resolve.c.

20130425

	Non-production fixes: revert to using proxies (sender,
	nexthop, hostname) to distinguish between different SASL
	credentials for connections to the same IP address and port.
	Files: smtp/smtp.h smtp/smtp_connect.c, smtp/smtp_key.c.

	Non-production cleanup: documentation, identifiers.  Viktor
	Dukhovni. Files: proto/postconf.proto, src/dns/dns.h,
	src/dns/dns_lookup.c, src/dns/dns_rr.c, src/dns/test_dns_lookup.c,
	src/global/mail_proto.h, src/posttls-finger/posttls-finger.c,
	src/smtp/smtp.h, src/smtp/smtp_addr.c, src/smtp/smtp_connect.c,
	src/smtp/smtp_session.c, src/smtp/smtp_tls_policy.c,
	src/smtpd/smtpd_check.c, src/tls/tls.h, src/tls/tls_client.c,
	src/tls/tls_dane.c, src/tls/tls_fprint.c, src/tls/tls_misc.c,
	src/tls/tls_proxy_clnt.c, src/tls/tls_proxy_print.c,
	src/tls/tls_proxy_scan.c, src/tls/tls_server.c,
	src/tls/tls_verify.c.

20130426

	Non-production fixes: refinement of SASL-dependent context
	for connection-cache reuse, documentation. Viktor Dukhovni
	and Wietse Venema. Files: smtp/smtp.h, smtp/smtp_key.c,
	tls/tls_client.c.

20130506

	Non-production bugfix: macros must use distinct names for
	temporary variables, to avoid name collision problems.
	Problem report: Ralf Hildebrandt. Problem fix: Viktor
	Dukhovni.  File: smtp/smtp.h.

	Non-production cleanup: simplified "dane" user interface,
	replacing one "dane" security level plus multiple fall-back
	options, with two "dane" security levels, one opportunistic
	and one mandatory. Viktor Dukhovni.  Files: proto/TLS_README.html,
	proto/postconf.proto, mantools/postlink, proto/TLS_README.html,
	proto/postconf.proto, global/mail_params.h,
	posttls-finger/posttls-finger.c, smtp/lmtp_params.c,
	smtp/smtp.c, smtp/smtp.h, smtp/smtp_params.c,
	smtp/smtp_tls_policy.c, tls/tls.h, tls/tls_level.c.

20130512

	Feature: allow an SMTP client to skip postscreen(8) tests
	before or after the 220 greeting, based on its DNSBL score.
	Suggested by Rob McGee (/dev/rob0). Files: mantools/postlink,
	proto/postconf.proto, global/mail_params.h,
	postscreen/postscreen.c, postscreen/postscreen.h,
	postscreen/postscreen_early.c, postscreen/postscreen_state.c,
	postscreen/postscreen_tests.c.

20130513

	Bugfix (introduced: 20130512): postscreen logged no "PASS
	NEW" event when the pregreet tests were turned off and the
	postscreen_dnsbl_whitelist_treshold feature was turned on.
	Reported by Rob McGee (/dev/rob0). Files: postscreen/postscreen.h,
	postscreen/postscreen_early.c.

	Bugfix (introduced: 20130512): postscreen panic because the
	logic for dnsbl result retrieval was changed. Reported by
	Noel Jones. File: postscreen/postscreen_early.c.

20130517

	Cleanup: just like the postscreen DNS block test will use
	partial scores when some DNS lookup result is unavailable,
	the postscreen_dnsbl_whitelist_treshold feature will now
	use partial scores instead of ignoring them.  File:
	postscreen/postscreen_early.c.

20130518

	Bugfix (introduced: 1997): memory leak after error while
	forwarding mail through the cleanup server. Viktor found
	one, Wietse eliminated the rest.  File: local/forward.c.

	Feature: posttls-finger protocol and cipher grade selection
	options.  Leave protocol debug flags active across reconnects,
	only suppress redundant logging of the certificate details.
	Viktor Dukhovni. File: posttls-finger/posttls-finger.c.

	Robustness: send SNI even when trying to reuse a DANE
	session, because a new session may be negotiated anyway.
	Viktor Dukhovni. File: tls/tls_client.c.

	Cleanup: eliminate variable that is redundant with respect
	to more authoritative state.  Viktor Dukhovni. File:
	posttls-finger/posttls-finger.c.

	Feature: new tls_ssl_options parameter to enable OpenSSL
	features (as opposed to tls_disable_workarounds which is
	disables bug workarounds that are on by default). Viktor
	Dukhovni. Files: proto/TLS_README.html, proto/postconf.proto,
	src/global/mail_params.h, src/tls/tls.h, src/tls/tls_client.c,
	src/tls/tls_misc.c.

20130520

	Documentation: removed resolve_null_domain from the list
	of smtpd(8) parameters. File: smtpd/smtpd.c.

20130523

	Documentation: add cidr: and texthash: to the list of maps
	that don't have automatic change detection. File:
	proto/DATABASE_README.html.

	Documentation: define the netmask format of CIDR maps.
	File: proto/cidr_table.

20130530

	Cleanup: replace alloca() with mymalloc()/myfree() for
	better error handling. Reported by Bill Parker. File:
	util/dict_ni.c (does anyone still use this code?).

20130531

	Feature: tls_wildcard_matches_multiple_labels (default:
	yes) to match multiple DNS labels with "*" in wildcard
	certificates. Viktor Dukhovni. Files: proto/postconf.proto,
	mantools/postlink, global/mail_params.h, tls/tls_client.c,
	tls/tls_misc.c.

20130607

	Bugfix (DANE support): with multiple TLSA RR that carry "x
	0 0" certificates or "x 1 0" keys, Postfix failed to reset
	the cert/key pointer before calling d2i_mumble(), causing
	OpenSSL to clobber the previous cert or key.  Viktor Dukhovni.
	tls/tls_dane.c.

	Robustness: check that TLSA-supplied certs have valid keys.
	It is not clear whether that check is performed in d2i().
	Viktor Dukhovni. tls/tls_dane.c.

20130608

	Cleanup (DANE support): be more explicit in the logging of
	object digests.  Viktor Dukhovni. tls/tls_dane.c.

20100613

	Workaround: unhelpful down-stream maintainers fail to install
	the new smtpd_relay_restrictions safety net, causing breakage
	that could have been avoided. We now hard-code the safety
	net instead.  Files: global/mail_params.h, conf/post-install,
	RELEASE_NOTES_2.10.

	Bugfix (DANE support): when TLSA records are insecure,
	report that none are found. Viktor Dukhovni. Files:
	posttls-finger/posttls-finger.c, smtp/smtp_tls_policy.c,
	tls/tls_dane.c.

20130615

	TLS Interoperability: turn on SHA-2 digests by force.  This
	improves interoperability with clients and servers that
	deploy SHA-2 digests without the required support for
	TLSv1.2-style digest negotiation.  Based on patch by Viktor
	Dukhovni.  Files: tls/tls_client.c, tls/tls_server.c.

20130616

	Workaround: The Postfix SMTP server TLS session cache was
	broken because OpenSSL now enables session tickets by
	default, resulting in different ticket encryption key for
	each smtpd(8) process.  the workaround turns off session
	tickets. In 2.11 we'll enable session tickets properly.
	Viktor Dukhovni. File: tls/tls_server.c.

	Updated DANE support (trust in DNS instead of PKI).  With
	OpenSSL 1.0.2 (under development) trusted certificates don't
	need to be self-signed roots.  Otherwise we use an ephemeral
	root certificate to sign the trust anchor. Viktor Dukhovni.
	Files: posttls-finger/posttls-finger.c, smtp/smtp_proto.c,
	smtp/smtp_tls_policy.c, tls/tls.h, tls/tls_client.c,
	tls/tls_dane.c, tls/tls_fprint.c, tls/tls_misc.c,
	tls/tls_verify.c.

20130619

	Documentation: troff lint. Patch by ES Raymond's bot.  File:
	proto/header_checks.

	Cleanup: enforce smtpd_client_recipient_rate_limit for VRFY
	commands. File: smtpd/smtpd.c.

20130622

	Bugfix: typo in the 20130613 smtpd_relay_restrictions default
	setting. File: global/mail_params.h.

20130623

	Cleanup: configurable tlsmgr(8) service name. Files:
	mantools/postlink, proto/postconf.proto, tls/tls_mgr.c,
	tls/tls_misc.c, tlsproxy/tls-proxy.c, smtp/smtp.c,
	smtpd/smtpd.c.

20130629

	Cleanup: documentation. Files: proto/CONNECTION_CACHE_README.html,
	proto/SCHEDULER_README.html.

20130708

	Cleanup: postscreen_upstream_proxy_protocol setting.  Files:
	global/mail_params.h, postscreen/postscreen_endpt.c.

20130709

	Cleanup: qmgr documentation clarification by Patrik Rak.
	Files: proto/SCHEDULER_README.html, qmgr/qmgr_job.c.

	Cleanup: re-indented code. File: qmgr/qmgr_job.c.

	Logging: minimal DNAME support. Viktor Dukhovni.  dns/dns.h,
	dns/dns_lookup.c, dns/dns_strtype.c, dns/test_dns_lookup.c.

20130710

	Workaround: smtp_connection_reuse_count_limit (default 0,
	i.e.  unlimited) for sites that must deal with hostile
	connection reuse policies. The documentation comes with a
	warning that this feature introduces a "fatal attractor"
	failure mode.  Files: global/mail_params.h, mantools/postlink,
	proto/postconf.proto, smtp/smtp.c, smtp/smtp_params.c,
	smtp/lmtp_params.c, smtp/smtp.h.

	Workaround: FreeBSD9 nroff outputs ANSI escape sequences
	instead of overstrike sequences. To make matters worse, it
	uses the ESC[0m sequence sometimes for end-of-bold and
	sometimes for end-of-italic.  File: mantools/man2html.

20130714

	Cleanup: added smtpd_relay_restrictions entries to the
	default master.cf file, so that main.cf settings won't
	affect the submission and smtps services. Simon Matter.
	File: conf/master.cf.

20130728

	Cleanup: wrong function name in error message. John Fawcett.
	File: util/vstring_vstream.c.

20130801

	Cleanup: with ``make makefiles CCARGS="-DHAS_DB...'', the
	makedefs script no longer tries to locate the Linux Berkeley
	DB include and library files. Instead it assumes that the
	locations are given on the command line, as shown in the
	DB_README examples.  Leo Baltus. File: makedefs.

20130805

	Documentation: clarified reject_non_fqdn_helo_hostname.
	File: proto/postconf.proto.

20130809

	Cleanup: the lmdb_map_size parameter is now a long integer.
	Howard Chu. Files: global/mail_params.[hc].

20130815

	Documentation: added pointer to Dovecot 2 configuration.
	File: proto/SASL_README.html

20130818

	Update: LMDB client updated to LMDB 0.9.7, which hopefully
	fixes the unrecoverable "transaction full" error. With a
	new MDB_MAP_FULL workaround by Howard Chu that ensures that
	postfix will make progress as long as the disk is not full.
	File: util/dict_lmdb.c.

20130822

	The status of LMDB databases is "not recommended".  Unlike
	other Postfix databases, LMDB does not grow beyond a specified
	limit even when the file system has room.  This show-stopper
	bug breaks applications whose requirements grow with load:
	postscreen(8), greylisting, tlsmgr(8) and verify(8).

20130825

	Bitrot: Arrange for shared keys in SMTP server session
	tickets.  Otherwise, with clients that enable session
	tickets, the SMTP session cache is per-process and largely
	ineffective.  Older releases should add SSL_OP_NO_TICKET
	to the SSL options bit mask in the SMTP server only.  The
	session ticket key validity interval (sum of initial issuing
	and retired key validation intervals) must not exceed the
	SSL session lifetime.  Otherwise, clients may send valid
	tickets for expired sessions, which the OpenSSL server code
	mishandles (does not send a replacement ticket, patch
	pending...).

	We set the session lifetime to 2 times the configured cache
	lifetime which is also the ticket issuing and retired
	validation lifetime, so ticketed sessions last 1 to 2 times
	the configured session lifetime and never longer than a
	session's expiration time. 

	Code by Viktor Dukhovni.  Files: .indent.pro, mantools/postlink,
	proto/TLS_README.html, proto/postconf.proto, global/mail_params.h,
	posttls-finger/posttls-finger.c, posttls-finger/tlsmgrmem.c,
	smtpd/smtpd.c, tls/tls.h, tls/tls_client.c, tls/tls_mgr.c,
	tls/tls_mgr.h, tls/tls_scache.c, tls/tls_scache.h,
	tls/tls_server.c, tlsmgr/tlsmgr.c, tlsproxy/tlsproxy.c.

	Robustness: Search for TLSA RRs at the resolved server name
	(rname) and failing that request server name (qname), and
	use whichever was found as the TLSA base domain for certificate
	matching.

	When we find a DNSSEC validated MX RRset, and the initial
	next-hop domain is a CNAME, include both the initial and
	final (the one with the actual MX RRs) domains in the list
	of valid server certificate names.

	When we find no MX records, then the initial next-hop domain
	is obtained securely from the recipient domain or transport
	next-hop.  Without MX records, this is a destination hostname,
	so we should generally do a TLSA lookup.  If however the
	address lookup yields an insecure result, and its rname is
	equal to its qname (no CNAMEs), we reasonably assume that
	the its child "_port._tcp" sub-domain is likewise insecure
	(security here would require DLV just for this sub-domain).
	This allows us to skip futile TLSA queries for most non-MX
	destinations (those that are in insecure zones and are not
	CNAMEs).  This heuristic can be disabled by setting the new
	main.cf parameter smtp_tls_force_insecure_host_tlsa_lookup
	to "yes", the default is "no".

	Finally, with MX hostnames, if the MX RRset is secure, we
	look for TLSA RRs at the qname only when the MX host is an
	alias with an insecure rname.  If both the qname and the
	rname are secure, as before we prefer the rname, but when
	nothing is found there, fall back to the qname.

	Code by Viktor Dukhovni. Files: mantools/postlink,
	proto/postconf.proto, src/global/mail_params.h,
	src/posttls-finger/posttls-finger.c, src/smtp/lmtp_params.c,
	src/smtp/smtp.c, src/smtp/smtp.h, src/smtp/smtp_addr.c,
	src/smtp/smtp_addr.h, src/smtp/smtp_connect.c,
	src/smtp/smtp_params.c, src/smtp/smtp_tls_policy.c,
	src/tls/tls.h, src/tls/tls_dane.c.

20130826

	Documentation: re-ordered STRESS_README, now that all
	supported releases have stress-adaptive behavior built in.
	File: proto/STRESS_README.html.

20130903

	Cleanup: made the default_database_type compile-time
	configurable. Files: util/sys_defs.h, makedefs, proto/INSTALL.

20130916

	Feature: reject_known_sender_login_mismatch, which applies
	reject_sender_login_mismatch only to MAIL FROM addresses
	that are known in $smtpd_sender_login_maps. Viktor & Wietse.
	Files: mantools/postlink, proto/SASL_README.html,
	proto/postconf.proto, global/mail_params.h, smtpd/smtpd_check.c.

20130927

	Cleanup: no more LMDB "database full" errors.  Postfix now
	requires LMDB >= 0.9.8 which supports on-the-fly database
	resizing. When a database becomes full, its size limit is
	automatically doubled, and other processes automatically
	pick up the new database size limit.  Files: util/dict.h,
	util/dict_open.c, util/dict_alloc.c, util/dict_lmdb.c,
	postmap/postmap.c, postalias/postalias.c, proto/LMDB_README.html,
	proto/postconf.proto.

20130928

	Cleanup: the lmdb_max_readers property is now configurable.
	This is a hard limit built into the OpenLDAP library that
	causes requests to fail when the number of open read
	transactions exceeds the limit.  When this happens the LMDB
	client logs an MDB_READERS_FULL warning and continues with
	reduced performance.  Files: util/dict_lmdb.c, util/dict_lmdb.h,
	global/mail_params.h, global/mail_params.c, proto/postconf.proto,
	proto/LMDB_README.html.

20130929

	Security violation: LMDB opens files with read/write access
	for lock management purposes.  This gives unprivileged
	daemon processes read/write file handles for root-owned
	files under /etc/postfix.  This also breaks when a non-root
	process needs to access a root-owned database.  Even if
	LMDB lock files were world-writable, and kept in a dedicated
	directory, they would still violate the principle of least
	privilege. For all these reasons, support to create LMDB
	files is removed from the postmap and postalias commands.
	LMDB files can still be created by unprivileged Postfix
	daemon processes under the postfix-owned data_directory.
	Files: proto/LMDB_README.html, global/mkmap.c.

20131001

	Cleanup: LMDB support is forbidden due to problems with
	LMDB lock management. These problems hinder error recovery
	in multi-programmed systems, and prohibit database sharing
	between privileged writer processes and unprivileged reader
	processes.

20131009

	Documentation: inet_protols description was not updated
	when smtp_address_preference was added. File: proto/postconf.proto

20131013

	Documentation: why postscreen(8) uses hash-table lookups
	instead of direct pointers to find the DNSBL lookup result
	for a specific session. File: postscreen/postscreen_early.c.

20131022

	Cleanup: add more &code; to postconf2man. Someone has been
	writing documentation without checking the result, File:
	mantools/postconf2man.

	Documentation: in the discard(8) manpage, the reason is not
	a host or domain name. File: discard/discard.c.

20131025

	Documentation: specify the expected result format with
	"list" tables. File: proto/DATABASE_README.html.

20131026

	Future proofing: API changes in the PCRE library.  File:
	util/dict_pcre.c.

20131028

	Feature: check_sasl_access to block hijacked logins.  Files:
	mantools/postlink, proto/postconf.proto, global/mail_params.h,
	smtpd/smtpd_check.c, smtpd/smtpd_dsn_fix.h.

20131029-31

	Cleanup: slmdb(3) simplified LMDB API that hides recoverable
	LMDB errors from applications so that they can focus on
	their own job. Files: util/slmdb.[hc].

	Cleanup: LMDB functionality restored, after elimination of
	1) world-writable lockfiles, 2) hard limits on the number
	of concurrent readers, and 3) hard-coded database file inode
	numbers in lockfiles that can prevent automatic crash
	recovery.  Files: proto/LMDB_README.html, proto/postconf.proto,
	mantools/postlink, util/dict_lmdb.c.

20131101

	Cleanup: restore ability to build without LMDB support;
	further slmdb API streamlining. Files: util/slmdb.[hc],
	util/dict_lmdb.c.

	Bugfix: uninitialized variable. File: util/slmdb.c.

	Documentation: added SASL_README example for check_sasl_access.
	File: proto/SASL_README.html.

20131102-3

	Security violation: by default, LMDB 0.9.9 writes uninitialized
	heap memory to a world-readable database file, as chunks
	of up to 4096 bytes.  This is a huge memory disclosure
	vulnerability: memory content that a program does not intend
	to share ends up in a world-readable file.  The content of
	uninitialized heap memory depends on program execution
	history. That history includes code execution in other
	libraries that are linked into the program.

	This is a problem whenever the user who writes the database
	file differs from the user who reads the database file. For
	example, a privileged writer and an unprivileged reader.
	In the case of Postfix, the postmap(1) and postalias(1)
	commands would leak uninitialized heap memory, as chunks
	of up to 4096 bytes, from a root-privileged process that
	writes to a database file, to unprivileged processes that
	read from that database file.

	To work around this problem the postmap(1) and postalias(1)
	commands disable the use of malloc() in LMDB. However, that
	does not address several disclosures of stack memory.  Other
	Postfix databases do not need this workaround: those databases
	are maintained by Postfix daemon processes, and are accessible
	only by the postfix user. File: util/dict_lmdb.c.

20131102-3

	Cleanup: expand TAB characters when generating documentation.
	This was primarily an issue with non-HTML output, but it does
	not hurt to do this also for HTML.  Files: proto/Makefile.in,
	proto/MULTI_INSTANCE_README.html.

20131104

	Feature: ${queue_id} macro support for the pipe(8) delivery
	agent by Andreas Schulze. File: pipe/pipe.c.

20131107

	Cleanup: after 16 years the SKIP() and TRIM() macros were
	triggering compiler warnings.  Files: global/mail_params.c,
	smtpstone/smtp-sink.c, util/mac_parse.c, util/split_nameval.c.

20131110

	Bugfix (introduced Oct 26 1997): don't clobber errno before
	expanding %m. File: util/vbuf_print.c.

20131114

	Cleanup: LMDB >= 0.9.10 does not need the MDB_WRITEMAP
	workaround to avoid heap memory information leaks.  File:
	util/dict_lmdb.c.

20131114

	Cleanup: Coverity found a harmless memory leak in the
	postconf master.cf parser.  Reported by Christos Zoulas,
	NetBSD.  File: postconf/postconf_master.c.

	Cleanup: graceful degradation after database open() error.
	Several instances of that code introduced a harmless memory
	leak, and Coverity complained about one of them (Christos
	Zoulas, NetBSD).  Instead of adding random code in random
	places, restructured dict_foo_open() routines with consistent
	code to dispose of memory or file handles. Files: dict_thash.c,
	dict_sockmap.c, dict_regexp.c, dict_pcre.c, dict_lmdb.c,
	dict_dbm.c, dict_cidr.c, dict_cdb.c.

	Cleanup: warning message after canonical/virtal/etc.
	table lookup error. Files: cleanup/cleanup_addr.c,
	cleanup/cleanup_map11.c, cleanup/cleanup_map1n.c,
	cleanup/cleanup_masquerade.c, cleanup/cleanup_message.c,
	cleanup/cleanup_milter.c.

20131116

	Feature: MySQL client support for option_file, option_group,
	tls_cert_file, tls_key_file, tls_CAfile, tls_CApath,
	tls_verify_cert. See mysql_table(5).  Code by Gareth Palmer.
	Files: proto/mysql_table, global/dict_mysql.c.

	Cleanup: DANE support. Keep the attributes of TA certificates
	obtained via "IN TLSA 2 0 X" RRs, while continuing to only
	use the key from "IN TLSA 2 1 X" RRs.  This means in the
	"2 0 X" case that we re-sign the TA certificate in place,
	rather than synthesize a vanilla cert around just the key.
	Viktor Dukhovni. File: tls/tls_dane.c.

	Bugfix: posttls-finger parsing of destination and optional
	match values. Viktor Dukhovni.  File:
	posttls-finger/posttls-finger.c.

	Cleanup: When wrap_signed is false (OpenSSL 1.0.2 some day),
	we don't have to sign trust anchors, and don't generate a
	key to do so.  Thus don't attempt to re-sign trust-anchor
	certificates (IN TLSA 2 0 X) in this case. Viktor Dukhovni.
	File: tls/tls_dane.c.

	Feature: configurable DANE digest algorithm priority. Use
	only the most-preferred, shared, digest algorithm for any
	give (usage, selector) combination. Viktor Dukhovni.
	mantools/postlink, proto/postconf.proto, global/mail_params.h,
	tls/tls_dane.c, tls/tls_misc.c.

	Bugfix: FreeBSD nroff workaround messed up. File:
	mantools/postlink.

20131118

	Cleanup: FreeBSD nroff workaround. Files: man/Makefile.in,
	proto/Makefile.in.

	Cleanup: the smtpd_proxy_filter client now sends QUIT before
	closing the connection to a content filter.  Files:
	smtpd/smtpd_proxy.c, smtpd/smtpd.c.

	Portability: C99 va_copy() compatibility, in case some
	implementation does not permit multiple va_start() calls
	on the same argument list. Files: global/memcache_proto.c,
	milter/milter8.c, smtpstone/smtp-source.c, util/attr_clnt.c,
	util/concatenate.c, util/dict_surrogate.c, util/netstring.c,
	util/compat_va_copy.h.

	Cleanup: comment formatting. Viktor Dukhovni. File: dns/dns.h.

	Cleanup: removed redundant sort operation. Viktor Dukhovni.
	File: tls/tls_dane.c.

20131119

	Feature: a Postfix LMDB database can now be used as shared
	persistent cache with multiple postscreen(8) or verify(8)
	daemons (but not both), without the need for a shared
	proxymap server.  Files: util/dict.h, util/dict_alloc.c,
	util/dict_open.c, util/dict_lmdb.c.

	Internal: DNS client support to report reply RCODE information,
	in addition to the simplified DNS_NOTFOUND, DNS_RETRY etc.
	Portability note: this requires the C99 __VA_ARGS__ feature.
	Files: dns/dns.h. dns/dns_lookup.c, dns/test_dns_lookup.c.

20131120

	Cleanup: reduced the code footprint for the LMDB < 0.9.10
	heap-to-file information leak workaround, and simplified
	the implementation to "good enough". Files: util/dict.h,
	util/dict.c, util/dict_lmdb.c, postalias/postalias.c,
	postmap/postmap.c.

	Cleanup: reduced the code footprint for the handling of
	multi-writer safe maps. A map only needs to assert that it
	is multi-writer safe, and the rest just happens.  Files:
	util/dict.h, util/dict_open.c, util/dict_lmdb.c,
	global/dict_memcache.c.

	Cleanup: Postfix daemons no longer restart when a multi-writer
	safe map is updated. File: util/dict.c.

	Documentation: sharing an LMDB cache between multiple
	verify(8) or postscreen(8) servers (but not both).  Files:
	proto/ADDRESS_VERIFICATION_README.html,
	proto/POSTSCREEN_README.html.

	Cleanup: improve suppression of TLSA lookups in insecure
	zones.  This is now applied not only to non-MX destinations,
	but also to each MX record.  Viktor Dukhovni. Files:
	src/posttls-finger/posttls-finger.c, src/smtp/smtp_tls_policy.c,
	src/tls/tls.h, src/tls/tls_dane.c.

	Workaround: increased the 5s connection timeout to 30s.
	Viktor Dukhovni. File: posttls-finger/posttls-finger.c.

20131121

	Documentation: new socketmap_table(5) and lmdb_table(5)
	manpages.  Files: mantools/postlink, conf/postfix-files,
	html/Makefile.in, man/Makefile.in, proto/DATABASE_README.html,
	postconf/postconf.c, proto/socketmap_table, proto/lmdb_table.

20131122

	Documentation: missing database hyperlinks, refined text
	about partial lookup keys. Files: mantools/postlink,
	proto/DATABASE_README.html, proto/lmdb_table,
	proto/socketmap_table.

20131123

	Feature: support for NOTIFY parameter in the Milter
	SMFIR_ADDRCPT_PAR request. Contributed by by Andrew Ayer.
	Wietse added support for ORCPT.  Files: cleanup/cleanup.h,
	cleanup/cleanup_milter.c, cleanup/cleanup_state.c,
	global/xtext.c, global/xtext.h, milter/test-milter.c.

20131122

	Feature: "postconf -Fe service/type/attribute = value" edits
	master.cf attribute values. The -e is optional. Example:
	use "postconf -F "*/*/chroot = n" to turn off chroot on all
	master.cf services. Files: postconf/postconf.h,
	postconf/postconf.c, postconf/postcof_master.c,
	postconf/postconf_edit.c.

20131124

	Cleanup: remove extra blank line from ccformat output,
	making it compatible with the script that Wietse actually
	uses (this line was part of a test to detect file truncation,
	but it is now obsolete).  File: mantools/ccformat.

	Feature: master.cf parameter namespace. "postconf -P" shows
	master.cf parameter settings as "service/type/parameter =
	value". This is applicable only to parameter settings in
	master.cf. Files: postconf/postconf.h, postconf/postconf.c,
	postconf/postcof_master.c, postconf/postconf_print.c.

	Incompatibility: the master_service_disable syntax has
	changed: use "service/type" instead of "service.type".  The
	new form is consistent with master.cf parameter namespaces.
	The old form is still supported to avoid breaking existing
	configurations.  Files: global/master_service.c,
	master/master_ent.c.

20131125

	Feature: change, add or delete "-o parameter=value" setting
	in master.cf. Examples: "postconf -P smtp/inet/parameter=value"
	(add or modify "-o name=value" setting) and "postconf -P
	smtp/inet/parameter" (delete "-o parameter=value" setting).
	Files: util/argv.[hc], postconf/postconf.h,
	postconf/postconf_edit.c, postconf_master.c.

20131126

	Cleanup: Leave SSLv3 enabled with DANE. Viktor Dukhovni.
	Files: proto/TLS_README.html proto/postconf.proto
	tls/tls_client.c.

	Cleanup: DANE support: Drop support for usage 0. It SHOULD
	NOT be supported in DANE with SMTP, and we already don't
	support digest TLSA RRs in this case, while full content
	TLSA RRs are not recommended for DNS bloat reasons.  Viktor
	Dukhovni. Files: proto/postconf.proto src/global/mail_params.h
	src/smtp/smtp.c src/tls/tls_dane.c src/tls/tls_misc.c.

	Feature: TLS support: Support future digest algorithms
	without re-compilation. Viktor Dukhovni. Files: .indent.pro
	proto/postconf.proto src/tls/tls_dane.c.

	Feature: DNS support: New configurable digest agility.
	Viktor Dukhovni. Files: .indent.pro proto/TLS_README.html
	proto/postconf.proto src/global/mail_params.h src/tls/tls_dane.c
	src/tls/tls_misc.c.

20131127

	Bugfix (introduced: 20090106): the postconf '-#' option
	erased prior options. File: postconf/postconf.c.

20131129

	Bugfix: Makefile example in MULTI_INSTANCE_README. Viktor
	Dukhovni. File: proto/MULTI_INSTANCE_README.html.

20131130

	Cleanup: simplify fingerprint security level implementation
	in new DANE code.  Viktor Dukhovni.  Files: src/tls/tls.h
	src/smtp/smtp_tls_policy.c src/tls/tls_dane.c
	src/posttls-finger/posttls-finger.c.

20131209

	Cleanup: safe_strtoul() did not report an error for empty
	or all-space input (the code to report this was in the wrong
	place). This was not a problem as long as safe_strtoul()
	was used only for output from safe_ultostr().  Files:
	global/safe_ultostr.c, global/safe_ultostr.in,
	global/safe_ultostr.ref.

20131210

	Documentation: updated description of SSL protocol controls.
	In particular, enabled protocols are part of a contiguous
	range. Viktor Dukhovni.  Files: proto/TLS_README.html,
	proto/postconf.proto.

	Bugfix: DANE support: handle OpenSSL memory allocation
	error. Viktor Dukhovni.  File: tls/tls_dane.c.

	Cleanup: LMDB_README was not installed. File: conf/postfix-files.

20131214

	Portability: on some platforms posttls-finger now requires
	explicitly linking libdl.  File: posttls-finger/Makefile.in.

	Cleanup: DANE support: extension gymnastics. Viktor Dukhovni.
	File: tls/tls_dane.c.

	Bugfix: DANE support: the wrap_cert() and wrap_key() calls
	should never fail, but some callers ignored the return
	value.  The only failure is for lack of memory, so we use
	msg_fatal() internally and change wrap_cert() and wrap_key()
	to return void. Viktor Dukhovni.  File: tls/tls_dane.c.

	Bugfix: DANE support: avoid making DANE certificates with
	replaced public-keys appear as if they were self-signed.
	Viktor Dukhovni.  File: tls/tls_dane.c.

	Cleanup: DANE support: simplify grow_chain() to always apply
	trust consistently. Viktor Dukhovni.  File: tls/tls_dane.c.

	Bugfix: DANE support: backport fixes from OpenSSL DANE
	testing.  Discard errors generated by raw TA key signature
	checks. Record the tadepth as zero with self-signed depth
	0 TAs. Robustness: Though it should never happen, don't
	update the tadepth if already set. Viktor Dukhovni.  Files:
	tls/tls_dane.c, tls/tls_server.c.

20131215

	Cleanup: OpenSSL "const" declarations have changed over
	time. Viktor Dukhovni. Files: src/tls/tls.h, src/tls/tls_client.c,
	src/tls/tls_dane.c, src/tls/tls_server.c.

20131216

	Cleanup: TLS support. Eliminate calls of deprecated functions
	before they are removed from OpenSSL.  CRYPTO_thread_id is
	deprecated and we don't need it.  Replace the deprecated
	ERR_remove_state() call with ERR_remove_thread_state(), and
	use RSA_generate_key_ex().  Viktor Dukhovni. Files:
	posttls-finger/posttls-finger.c, tls/tls_misc.c, tls/tls_rsa.c.

	Cleanup: DANE support: Reduce #ifdef clutter to improve
	redability and maintability. Viktor Dukhovni.  File:
	tls/tls_dane.c.

	Future proofing: Tolerate disappearance of named bug-workaround
	bits without invalidating user configurations.  When support
	for a bug workaround is removed from OpenSSL, the corresponding
	bit is defined as zero (i.e. NOOP) intstead of causing
	programs to break. Viktor Dukhovni.  File: tls/tls_misc.c.

20131217

	Portability: RSA_generate_key_ex() is not available on all
	supported platforms, so this change is made conditional.
	Enforce that this function will be used only for creating
	a 512-bit ephemeral RSA key.  Viktor Dukhovni. File:
	tls/tls_rsa.c.

20131218

	Documentation: new document FORWARD_SECRECY_README that
	describes how different versions of Postfix >= 2.2 implement
	"perfect" forward secrecy. Viktor Dukhovni. File:
	proto/FORWARD_SECRECY_README.html, proto/Makefile.in,
	conf/postfix-files, html/index.html.

20131219

	Cleanup: renamed postconf(1) internal identifiers according
	to a consistent scheme, to avoid future name conflicts as
	Postfix evolves. This is a no-feature change.  Files:
	postconf/*.[hc], postconf/extract.awk.

	Documentation: linearized the order of exposition in
	FORWARD_SECRECY_README. File: proto/FORWARD_SECRECY_README.html.

20131220

	Bugfix: DANE support: segfault. Viktor Dukhovni. File:
	tls/tls_dane.c.

	Documentation: typo in SASL_README. Patrick Ben Koetter.
	File: proto/SASL_README.html.

	Documentation: increased the *.[0-9].html manpage width
	from the historical 65 columns to the more contemporary 78
	columns, and future-proofed the pattern that eliminates
	redundant text from the "README FILES" section.  Files:
	mantools/postlink, mantools/man2html, man/Makefile.in.

	Documentation: misc manual page cleanups. Files:
	postconf/postconf.c, postmulti/postmulti.c.

20131221

	Testbed: TLS support. Viktor Dukhovni. Files: tls/Makefile.in,
	tls/tls_dane.c, tls/tls_dane.sh, tls/tls_mgr.c, .indent.pro.

	Documentation: added section on how to verify that forward
	secrecy works. File: proto/FORWARD_SECRECY_README.html.

20131222

	Documentation: forward secrecy, with feedback from Adam
	Shostack.  Viktor Dukhovni and Wietse Venema. File:
	proto/FORWARD_SECRECY_README.html.

20131224

	Feature: smtpd_sasl_service (until now, this was hard-coded
	internally as "smtp"). On request by Michal (sksoft.cz).
	Files: global/mail_params.h, proto/postconf.proto,
	mantools/postlink, smtpd/smtpd.c, smtpd/smtpd_sasl_glue.c.

	Documentation: updated example to Dovecot version 2 syntax.
	File: proto/SASL_README/html.

20131228

	Cleanup: DANE support: test script. Viktor Dukhovni. File
	tls/tls_dane.sh.

	Debugging: test driver for LMDB debugging and stress testing.
	Shockingly, LMDB terminates the postscreen daemon without
	logfile record.  File: util/dict_cache.c.

20140102

	Bugfix: close the LMDB database cursor's read transaction
	before writing with MDB_NOLOCK and before changing the
	database memory map size. File: util/slmdb.c.

20140103

	Cleanup: eliminated data duplication from the new SMTP_ITERATOR
	structure to the old SMTP_SESSION structure. The SMTP_ITERATOR
	structure now maintains the sole copy. Files: smtp/smtp.h,
	smtp_sasl_auth_cache.c, smtp_reuse.c, smtp_sasl_glue.c,
	smtp_rcpt.c, smtp_session.c, smtp_chat.c, smtp_proto.c,
	smtp_connect.c.

20140104

	Feature: support for optional configuration files
	"$daemon-directory/postfix-files.d/*".  These are processed
	in sorted order after "$daemon-directory/postfix-files",
	This avoids breaking "postfix set-permissions" etc. when a
	Postfix distribution comes in multiple packages.  File:
	conf/post-install.

20140107

	Feature: LMDB 0.9.11 allows Postfix daemons to log an LMDB
	error message, instead of falling out of the sky without
	any notification.  Files: util/slmdb.[hc], util/dict_lmdb.c.

20140108

	Bugfix: every Postfix LMDB transaction is now protected by
	an external lock for its entire life time. File: util/slmdb.c.

20140109

	Cleanup: turn off DNSSEC lookup after CNAME redirection to
	an insecure zone. This is an optimization for resolvers
	that do not automatically resolve CNAME chains. Viktor
	Dukhovni. File: dns/dns_lookup.c.

	Cleanup: do not salt the SMTP TLS policy lookup cache key
	with the DNSSEC status. The DNSSEC status will not change
	when the same nexthop/host pair is looked up repeatedly.
	Viktor Dukhovni. File: smtp/smtp_tls_policy.c.

	Robustness: Suppress TLSA lookups only when the qname zone
	is insecure, not just because the rname zone is insecure.
	This requires an extra T_CNAME lookup for the qname, since
	nameservers are often "too helpful" and report CNAME records
	together with the CNAME targets. When the targets are
	insecure the whole reply is marked as insecure.  Viktor
	Dukhovni.  File: tls/tls_dane.c.

	Cleanup: Unify/simplify reporting of configuration or other
	conditions that prevent DANE security.  Viktor Dukhovni.
	Files: global/dsn_buf.[hc], tls/tls_dane.c, smtp/smtp_tls_policy.c.

20140110-15

	Miscellaneous documentation cleanups.

20140116

	Workaround: prepend "-I. -I../../include" to CCARGS, to
	avoid name clashes with non-Postfix header files. File:
	makedefs.

20140125

	Cleanup: assorted documentation glitches.

20140209

	Workaround: the Postfix SMTP client now also falls back to
	plaintext when TLS fails after the TLS protocol handshake.
	Files: smtp/smtp.h, smtp/smtp_connect.c, smtp/smtp_trouble.c.

	Testbed: unsupported HANGUP access map action that drops
	the connection without responding to the remote SMTP client.
	File: smtpd/smtpd_check.c.

20140214

	Workaround: apparently some buggy kernels report WIFSTOPPED
	events to the parent process (master daemon) instead of the
	tracing process (e.g., gdb). File: master/master_spawn.c.

20140218

	Workaround: require that a queue file is older than
	$minimal_backoff_time, before falling back from failed TLS
	to plaintext (both during or after the TLS handshake).
	Viktor Dukhovni. Files: smtp/smtp.h, smtp/smtp.c,
	smtp/lmtp_params.c, smtp/smtp_params.c.

20140220

	Workaround: in case "minimal_backoff_time = $queue_run_delay".
	Files: smtp/smtp.c, smtp/smtp_params.c, smtp/lmtp_params.c.

	Cleanup: consolidate the code to log the start of a new
	mail transaction in one place, so that code can easily be
	added to log TLS status information in addition to the
	existing client and SASL status information. Files:
	smtpd/smtpd_sasl_proto.h, smtpd/smtpd_sasl_proto.c,
	smtpd/smtpd.c.

20140223

	Workaround: when a session breaks after the TLS handshake,
	do not fall back from TLS to plaintext when all recipients
	were deferred or rejected during the TLS phase. Files:
	smtp/smtp.h, smtp/smtp_rcpt.c.

	Logging: the TLS client logged that an "Untrusted" TLS
	connection was established instead of "Anonymous".  Viktor
	Dukhovni. File: tls/tls_client.c.

	Documentation: new self-signed certificate example and
	updated private CA example. File: proto/TLS_README.html.

20140224

	Bugfix (introduced: 20061106): when the "retry" transport
	was added to Postfix, it was not given special status like
	the "error" transport. The Postfix SMTP server did not defer
	mail that resolves to the "retry" transport, and the
	trivial-rewrite daemon would override the null nexthop
	destination in "retry:" with the current nexthop destination.
	Files: smtpd/smtpd_check.c, trivial-rewrite/transport.c.

20140227

	Bugfix: Enforce TLS when TLSA records exist, but all are
	unusable; Don't leak dane handle when all TLSA records are
	unusable.  Viktor Dukhovni. File: smtp/smtp_tls_policy.c.

	Cleanup: log TLS policy lookup errors as warnings. Viktor
	Dukhovni.  File: smtp/smtp_connect.c.

20140316

	Feature: preliminary support to change arbitrary hard
	delivery errors into soft errors and vice versa, or to
	replace the descriptive text of non-delivery notifications.
	This was originally introduced for sites that want to bounce
	mail when no remote SMTP server announces TLS support. New
	parameters: {default,smtp,pipe,virtual}_bounce_defer_filter.
	Files: proto/postconf.proto, mantools/postlink, global/bounce.[hc],
	bounce/defer.[hc], global/ndr_filter.[hc], global/mail_params.[hc],
	master/event_server.c, master/multi_server.c,
	master/single_server.c, master/trigger_server.c, smtp/smtp.c,
	pipe/pipe.c, virtual/virtual.c.

20140317

	Feature: local_bounce_defer_filter support. Files:
	global/bounce.[hc], global/defer.[hc], local/command.c,
	local/file.c, local/bounce_workaround.c, local/local.c,
	global/mail_params.h, mantools/postlink.

20140318

	Refinement: don't throttle an SMTP destination when the new
	smtp_bounce_defer_filter feature turns a soft bounce into
	a hard bounce.  File: smtp/smtp_trouble.c.

20140320

	Feature: support to replace successful delivery status code
	and explanatory text.  This can be used to to hide local
	details such as destination commands or file names when a
	remote sender requests confirmation of delivery.  As of now
	*_bounce_defer_filter is renamed into *_delivery_status_filter.
	Files: global/bounce.c, global/bounce.h, global/defer.c,
	global/defer.h, global/dsn_filter.c, global/dsn_filter.h,
	global/mail_params.c, global/mail_params.h, global/sent.c,
	local/local.c, master/event_server.c, master/multi_server.c,
	master/single_server.c, master/trigger_server.c, pipe/pipe.c,
	smtp/lmtp_params.c, smtp/smtp.c, smtp/smtp_params.c,
	virtual/virtual.c, mantools/postlink.

20140322

	Cleanup: code comments and identifier names to reflect the
	evolution from "NDR filter" to "delivery status filter".
	Files: global/mail_params.h, smtp/smtp.c, global/dsn_filter.c,
	global/dsn_filter.h, local/local.c, pipe/pipe.c,
	smtp/lmtp_params.c, smtp/smtp_params.c, virtual/virtual.c,
	global/bounce.c.

20140323

	Feature: initial merge of Debian-style dynamic linking.
	Viktor Dukhovni.

20140406

	Bugfix: when testing session caching, stop reconnecting
	after encountering a previously-used server (when the session
	is re-used or not). Viktor Dukhovni. File:
	posttls-finger/posttls-finger.c.

	Feature: configurable TLS session-ticket cipher (default:
	tls_session_ticket_cipher = aes-128-cbc). Viktor Dukhovni
	and Wietse. Files: mantools/postlink, smtpd/smtpd.c,
	proto/postconf.proto, global/mail_params.h, tls/tls_misc.c,
	tls/tls_scache.h, tls/tls_server.c.

20140416

	Cleanup: replace "~0 << positive" with "~0U << positive"
	even if we use only the lower bytes.  Jeffrey Walton.  File:
	util/mask_addr.c.

20140407

	Documentation: the documentation for Postfix > 2.8 TLS
	activity logging was incorrect. Loglevel 0 produces no
	logging. Instead, information is logged only with loglevel
	1 or higher. Viktor Dukhovni. Files: proto/TLS_README.html,
	proto/postconf.proto.

20140501

	Cleanup: postscreen_dnsbl_timeout parameter. Files:
	mantools/postlink, proto/postconf.proto, global/mail_params.h,
	postscreen/postscreen.c, postscreen/postscreen_dnsbl.c.

	Cleanup: added table search order information to the
	postconf(5) manpage. File: proto/postconf.proto.

20140505

	Cleanup: added a client port attribute to the policy
	delegation protocol. Jernej Porenta. File: smtpd/smtpd_check.c.

20140507

	Bugfix (introduced: Postfix 2.11): with connection caching
	enabled (the default), recipients could be given to the
	wrong mail server.  Root cause: due to an incorrect predicate,
	the Postfix SMTP client could save and restore plaintext
	connections that should not be cached, under nonsensical
	lookup keys that did not distinguish by destination.  Problem
	reported by Sahil Tandon, predicate error found by Viktor,
	redundant connection restore request eliminated by Wietse.
	File: smtp/smtp_connect.c.

	Cleanup: the macros that control SMTP connection reuse
	poorly reflected their purpose. "DEAD" is replaced with
	"FORBIDDEN" (no I/O allowed) and "BAD" is replaced with
	"THROTTLED" (anything that causes the queue manager to back
	off from some destination). Files: smtp.h, smtp_connect.c,
	smtp_proto.c, smtp_trouble.c.

	Cleanup: enable SMTP connection cache lookup by destination
	name while a surge of mail dries up. File: smtp_connect.c.

20140505

	Bugfix: the postdrop authorized_submit_users feature requires
	that lookup table support is initialized so that it can use
	libglobal or dynamicmaps maps.  File: postdrop/postdrop.c.

	Cleanup: moved dynamicmaps initialization from parameter
	inititialization (mail_conf_suck()) to dictionary initialization
	(mail_dict_init()).  A benefit of this is that dynamicmaps.cf
	is no longer read by programs that don't use Postfix lookup
	tables.  Files: global/mail_conf.[hc], global/mail_dict.c.

	Cleanup: move the mail_dict_init() call after the
	mail_conf_read() or mail_params_init() call, to prepare for
	a configurable dynamicmaps.cf directory.   Files:
	master/event_server.c, master/multi_server.c,
	master/single_server.c, master/trigger_server.c.

20140506

	Cleanup: you can now specify "make makefiles parameter=value"
	for selected compile-time parameter default overrides.  The
	old "make makefiles 'CCARGS=-DDEF_MUMBLE=\"mumble\"'"
	approach remains supported.  File: makedefs.

20140508

	Cleanup: dynamicmaps.cf is now installed into $daemon_directory
	because the file is shared among Postfix instances just
	like postfix-files and other files.  Files: conf/dynamicmaps.cf,
	Makefile.in, conf/postfix-files.

	Cleanup: INSTALL is now plain ASCII instead of README format,
	to avoid a chicken-and-egg problem (the instructions to
	print/view README-format files are in the INSTALL file).

	Documentation: updated INSTALL instructions and RELEASE_NOTES.

20140512

	Portability: Berkeley DB6 support. File: util/dict_db.c.

20140514

	Cleanup: replace #ifdef/endif containing hard-coded calls
	of dynamicmaps functions with an extension mechanism that
	dynamicmaps functions invoke instead. Files: util/dict.h,
	util/dict_open.c, global/dynamicmaps.[hc], global/mkmap.h,
	global/mkmap_open.c.

20140515

	Bugfix (introduced: 20140320): missing initialization.
	Viktor Dukhovni. File pipe/pipe.c.

	Cleanup: mkmap_open() now caches a dynamically-loaded
	function. This is useful because postmap/postalias may open
	the same database type multiple times. Files: global/mkmap.h,
	global/mkmap_open.c.

	Security: the dynamicmaps.cf file and its and shared-object
	files must not be writable by non-root users. File:
	global/dynamicmaps.c.

20140517

	Cleanup: dynamic linking and hooking. Files: util/dict.h,
	util/load_lib.[hc], global/dynamicmaps.c.

20140518

	Preliminary "make plugins" support. Todo: macros to dynamically
	remove pluggable maps from compile-time tables in dict_open.c
	and mkmap_open.c, and from the OBJS lists in Makefile.in.

20140522

	Support for "make shared=yes" and "make dynamicmaps=yes".
	New plugin_directory parameter for the location of the
	dynamicmaps.cf file and for plugins with a relative pathname.
	See RELEASE_NOTES and INSTALL for details. Files: postfix.c,
	mail_params.[hc], dynamicmaps.c, mail_dict.c, makedefs,
	postfix-files, dynamicmaps.cf, Makefile.in, util/Makefile.in,
	global/Makefile.in, postlink, postconf.proto.  INSTALL.html,
	RELEASE_NOTES.

20140523

	Cleanup: don't install plugins for unsupported databases,
	and don't make dynamicmaps.cf entries for them. Files:
	makedefs, Makefile.in, util/Makefile.in, global/Makefile.in.

	Cleanup: added support for symlinks where the "source" is
	specified as a relative pathname. File: postfix-install.

	Cleanup: moved instructions from RELEASE_NOTES to INSTALL
	to avoid duplication. Files: RELEASE_NOTES, proto/INSTALL.html.

	Cleanup: include <dict_lmdb.h> unconditionally so that
	dict_lmdb_map_size is always defined. Files: mail_params.c,
	dict_test.c.

	Cleanup: port for ancient Solaris9 revealed some non-portability.
	Files: master/Makefile.in, makedefs, sys_defs.h.

20140524

	Cleanup: specify database library dependencies with variables
	named AUXLIBS_CDB, AUXLIBS_LDAP, etc. The global AUXLIBS
	variable is still supported, but the new variables are
	required when building dynamically-loadable building database
	plugins.  Files: RELEASE_NOTES, INSTALL.html, CDB_README.html,
	LDAP_README.html, LMDB_README.html, MYSQL_README.html,
	PCRE_README.html, PGSQL_README.html, SQLITE_README.html,
	makedefs, util/Makefile.in, global/Makefile.in.

	Workaround: reportedly, MacOS can fail to move a symlink
	with a relative target across file system boundaries, because
	it examines the symlink with stat() instead of lstat().
	Files: makedefs, Makefile.in.

	Cleanup: use readlink to verify symlink target. File:
	postfix-install.

20140528

	Cleanup: the configuration file dynamicmaps.cf will now
	automatically include files under the directory dynamicmaps.cf.d,
	just like the configuration file postfix-files will
	automatically include files under the directory postfix-files.d.
	See INSTALL section "Building with Postfix shared libraries
	and database plugins".  File: dynamicmaps.c.

20140530

	Cleanup: add shlib_directory and plugin_directory to the
	postmulti-script list of shared parameters. Viktor Dukhovni.
	File: postmulti-script.

	Cleanup: to avoid "postfix set-permission" errors, don't
	create postfix-files entries for non-existent database
	plugins. Problem reported by Viktor. File: Makefile.in.

	Bugfix: we can't use "mv" to replace a symlink-to-directory.
	Instead we now create all symlinks in place. Unfortunately
	the "ln -n" option is not universally implemented, so we
	remove the old symlink first.  Problem reported by Viktor.
	File: postfix-install.

20140603

	Cleanup: use the OpenSSL session id accessor (available
	since OpenSSL 0.9.8 or so) instead of groping a session
	object directly. Viktor Dukhovni. File: tls_server.c.

20140605

	Feature: the pipe(8) daemon logs some command output after
	successful delivery as "dsn=2.0.0, status=sent (delivered
	via XXX service (YYY))" where XXX is the master.cf service
	name, and YYY is command output. Files: pipe/command.c,
	pipe.c.

20140613

	Feature: the "pipeline" table implements a table pipeline.
	Example "pipeline:!type_1:name_1!...!type_n:name_n".  The
	ASCII character after "pipeline:" will be used as the
	separator between the lookup tables that follow (do not use
	space, ",", ":" or non-ASCII).  Each "pipeline:" query is
	given to the first table.  Each lookup result becomes the
	query for the next table in the pipeline, and the last table
	produces the final result.  When any table lookup produces
	no result, the pipeline produces no result.  Files:
	dict_pipe.[hc], dict_open.c, postlink, DATABASE_README.html,
	postconf.c.

20140617

	Feature: the "random" table performs random selection.
	Example: "random:!result_1!...!result_n". Each table query
	returns a random choice from the specified results. The
	ASCII character after "random:" will be used as the separator
	between the results that follow (do not use space, ",", ":"
	or non-ASCII).  Files: dict_random.[hc], dict_open.c,
	postlink, DATABASE_README.html, postconf.c.

20140618

	Cleanup: INFO action in access(5) tables, for consistency
	with header/body_checks. Viktor Dukhovni.  Files:
	smtpd/smtpd_check.c, proto/access.

20140619

	Cleanup: process LaMont Jones feedback for shared-library
	and database-plugin builds. Changes: 1) move non-executable
	files from $daemon_directory to the default $config_directory
	(postfix-files*, dynamicmaps.cf*, main.cf.proto/master.cf.proto
	for multi-instance support); 2) add foo.so -> foo.so.version
	symlinks; 3) change $shlib_directory and $plugin_directory
	defaults to /usr/lib/postfix to reduce sprawl.  Files:
	conf/main.cf.proto, conf/master.cf.proto, conf/postfix-files.proto,
	conf/post-install, conf/postmulti-script, makedefs,
	postfix-install, proto/INSTALL.html, global/dynamicmaps.c,
	global/dynamicmaps.h, global/mail_dict.c, global/mail_params.h,
	postmulti/postmulti.c.

	Bugfix (introduced: 2001): qmqpd null pointer bug when it
	logs a lost connection while not in a mail transaction.
	Reported by Michal Adamek. File: qmqpd/qmqpd.c.

	Cleanup: filter non-printable characters in X509 subject
	or issuer names. Viktor Dukhovni. File: tls/tls_server.c.

20140620

	Cleanup: for compliance with file system policies, some
	files have been moved from $daemon-directory to the directory
	specified with the new meta_directory parameter which has
	the same default value as config_directory.  This change
	affects non-executable files that are shared among multiple
	Postfix instances, such as postfix-files, dynamicmaps.cf,
	and multi-instance template files.

	For backwards compatibility with Postfix 2.6..2.11, specify
	"meta_directory = $daemon_directory" in main.cf before
	installing Postfix, or specify "meta_directory = /path/name"
	on the "make makefiles", "make install" or "make upgrade"
	command line.

	Files: Makefile.in, RELEASE_NOTES, conf/post-install,
	conf/postfix-files.proto, conf/postmulti-script, makedefs,
	mantools/postlink, postfix-install, proto/INSTALL.html,
	proto/postconf.proto, global/mail_params.c, global/mail_params.h,
	postfix/postfix.c, postmulti/postmulti.c.

	Feature: check_xxx_a_access (for xxx in client, reverse_client,
	helo, sender, recipient) implements access control on all
	A and AAAA IP addresses for the client hostname, helo
	parameter, sender domain or recipient domain. Some spam has
	sender domains with the same IP address but different MX
	hosts.  Files: global/mail_params.h, smtpd/smtpd_check.c,
	proto/postconf.proto.

20140622

	Cleanup: eliminated plugin_directory to reduce configuration
	parameter sprawl. Files: Makefile.in, RELEASE_NOTES,
	conf/post-install, conf/postfix-files.proto, conf/postfix-script,
	conf/postmulti-script, makedefs, mantools/postlink,
	postfix-install, proto/INSTALL.html, proto/postconf.proto,
	global/Makefile.in, global/mail_dict.c, global/mail_params.c,
	global/mail_params.h, global/mail_version.h, postfix/postfix.c,
	postmulti/postmulti.c, smtpd/smtpd_check.c, util/Makefile.in.

20140623

	Cleanup: eliminated the use of Postfix release versions as
	file name suffixes for shared libraries, database plugins
	and dynamicmaps.cf.  The shared-library version suffixes
	were fighting against assumptions and conventions in run-time
	linkers, including the assumption that ABIs are preserved
	from one version to the next. The Postfix version can now
	be embedded in the shlib_directory parameter. As this is
	sufficient to permit upgrade of a running Postfix system
	without risking that old binaries will link against newer
	shared objects, we no longer need a version suffix for
	dynamicmaps.cf.  Files: Makefile.in, RELEASE_NOTES,
	conf/postfix-files.proto, makedefs, proto/INSTALL.html,
	proto/postconf.proto, global/mail_params.h, global/mail_version.h,

20140624

	Cleanup: the commands "make (makefiles|install|upgrade|package)
	parameter=value" now replace the string MAIL_VERSION in a
	configuration parameter value with the Postfix release
	version.  Unfortunately, the more obvious approach, a
	parameter value with the unexpanded '$mail_version', produces
	inconsistent results with different make implementations.
	Files: makedefs, Makefile.in, postfix-install, proto/INSTALL.html,
	proto/PACKAGE_README.html

	Cleanup: postmulti now requires "postmulti -e init" before
	accepting other multi-instance requests.  Viktor Dukhovni.
	File: conf/postmulti-script.

20140625

	Kludge: moved dict_db_cache_size away from dict_db.c in
	preparation for Berkeley DB database plugin support (a
	similar kludge was implemented for LMDB).  Files:
	util/dict_db.[hc], util/dict_test.c, global/mail_params.c.

	Cleanup: don't leak build directory information via SHLIB_ENV
	in makedefs.out.  Files: Makefile.in, conf/postfix-files.

20140626

	Cleanup: construction debris. Files: Makefile.in,
	conf/postfix-script.

	Cleanup: replace the result of MAIL_VERSION expansion with
	$mail_version in main.cf installation parameter settings,
	to permit safe upgrade of a running mail system. File:
	postfix-install.

	Cleanup: replace the result of MAIL_VERSION expansion with
	$mail_version in built-in default installation parameter
	settings, for consistency with main.cf. File: makedefs,
	postfix-install, conf/post-install.

	Cleanup: removed $mail_version from the default shlib_directory
	value. Files: global/mail_params.h, proto/INSTALL.html.

	Cleanup: in postfix-script, use find instead of ls to
	determine permissions or ownership, and group some checks
	with "pathname/." and "pathname/*" into one.  Downside:
	more warnings will now have "/./" in the middle of a pathname.
	File: conf/postfix-script.

	Cleanup: need to evaluate mail_version before evaluating
	parameters that may contain $mail_version. File:
	global/mail_params.c.

	Cleanup: the postmulti command now exercises the postconf
	"-x" option to expand $parameter_name in secondary-instance
	parameter values.  File: postmulti/postmulti.c.

	Cleanup: post-install also needed to replace the result of
	MAIL_VERSION expansion with $mail_version, for the same
	reasons as postfix-script. Viktor Dukhovni. File:
	conf/post-install.

20140627

	Bugfix (introduced: 20140626) broken build and broken install
	with default shlib_directory. Files: makedefs.

	Bugfix (introduced: 20140627) "make install" stopped with
	a bogus error when there was no real "make install name=value"
	parameter override.  Files: conf/post-install.

	Cleanup: support MAIL_VERSION magic (see INSTALL) only at
	the end of a parameter value. Files: proto/INSTALL.html
	makedefs, postfix-install, conf/postfix-files.

	Cleanup: use ${mail_version} as the MAIL_VERSION-unexpanded
	form.  Viktor Dukhovni. Files: makedefs, postfix-install,
	conf/postfix-files.

20140630

	Cleanup: the pipeline and random lookup tables are now
	called pipemap and randmap, respectively. These names are
	more specific. The old names remain available, at least
	temporarily.  Files: util/dict_pipe.[hc], util/dict_random.[hc],
	postconf/postconf.c, mantools/postlink, proto/DATABASE_README.html.

	Feature: smtpd_policy_service_request_limit to limit the
	number of requests per Postfix SMTP server policy connection.
	This is a workaround to avoid error-recovery delays with
	policy servers that cannot maintain a persistent connection.
	Based on code by Markus Benning. Files: global/mail_params.h,
	mantools/postlink, proto/SMTPD_POLICY_README.html,
	proto/postconf.proto, smtpd/smtpd.c, smtpd/smtpd_check.c,
	util/attr_clnt.[hc].

20140701

	Cleanup: documented how Postfix maintains dictionary
	provenance. Provenance matters: for example, the owner UID
	of an aliases(5) database file determines the execution
	privileges for delivery to |command or /file/name.  Refined
	the algorithm that computes the provenance of a pipemap,
	based on the provenance of its constituent lookup tables.
	Files: util/dict.[hc], util/dict_pipe.c.

	Cleanup: made mail_spool_directory configurable with "make
	makefiles mail_spool_directory=/path/name".  This allows
	Postfix to be built without any pathnames that reference
	system directories. This is useful for testing and sandboxing.
	Files: global/mail_params.h, makedefs.

	Cleanup: configurable attr_clnt(3) retry strategy (try limit
	and retry delay).  Files: util/attr_clnt.[hc].

	Feature: control over SMTPD policy lookup error handling:
	smtpd_policy_service_try_limit, smtpd_policy_service_retry_delay,
	smtpd_policy_service_default_action determine how many times
	to try to send a policy request before giving up, the delay
	before resending a failed policy request, and a default
	action when giving up. The defaults are backwards-compatible.
	Files: global/mail_params.h, mantools/postlink,
	proto/postconf.proto, smtpd/smtpd.c, smtpd/smtpd_check.c.

20140709

	Cleanup: bitrot in unused function. File: global/defer.c.

	Cleanup: add SYSLIBS minus static libraries while building
	Postfix shared-library objects. Files: makedefs, util/Makefile.in,
	global/Makefile.in, dns/Makefile.in, master/Makefile.in/.

20140708

	Bugfix (introduced 20140701): did not restore jumpbuf while
	evaluatingsmtpd_policy_service_default_action.  Viktor
	Dukhovni. File: smtpd/smtpd_check.c.

	Feature: VERY PRELIMINARY support for SMTPUTF8 based on an
	initial implementation by Arnt Gulbrandsen, funded by CNNIC.
	This implements the syntax of SMTP commands and DSN delivery
	status notifications. It does not address the problem that
	the same domain name may show up in different forms: an
	UTF8-encoded name with non-ASCII charaters, or an IDNA-encoded
	(xn--mumble) name with ASCII-only characters. This means
	that access policies, mydestination, virtual_*_domains and
	relay_domans will have to understand both forms in order
	to provide complete coverage.  For now, SMTPUTF8 support
	must not be enabled except for testing.

20140710

	Portability: add '-Wl,--enable-new-dtags' to the linker
	command line with building with Postfix shared libraries
	on Linux. Viktor Dukhovni. file: makedefs.

20140711

	Background: What is SMTPUTF8 autodetection? Postfix cannot
	rely solely on the sender's declaration that a message
	requires SMTPUTF8 support, because UTF8 may be introduced
	during local processing (for example, the client hostname
	in Postfix's Received: header, adding @$myorigin or .$mydomain
	to an incomplete address, address rewriting, alias expansion,
	automatic BCC recipients, local forwarding, and modifications
	made by header checks or Milter applications).  This means
	that some form of autodetection is needed that a message
	requires SMTPUTF8 support.

	Cleanup: don't try to distinguish between UTF that is already
	present in a message or envelope, and UTF8 that is introduced
	during local processing (see above).  Maintaining this
	distinction is too problematic.

	Cleanup: mailing list friendliness. Allow delivery of
	SMTPUTF8 mail to non-SMTPUTF8 servers when a message has
	no UTF8 headers, no UTF8 envelope sender, and when the
	specific delivery request contains no UTF8 envelope recipient.
	This is needed for mailing lists that may have a mix of
	UTF8 and non-UTF8 subscriber addresses. File: global/smtputf8.h,
	smtp/smtp_proto.c.

	Cleanup: moved all SMTPUTF8 detection to the cleanup server,
	so that it can apply equally to sendmail command-line
	submission, forwarded mail, postmaster notifications,
	delivery status notifications, mail received with the qmqpd
	server, address verification probes, as well as UTF8
	introduced during local processing (see above).  Files:
	cleanup/cleanup_out.c, cleanup/cleanup_addr.c.

	Cleanup: store the SMTPUTF8 message (i.e. non-recipient)
	flags in the first queue file record, so that the queue
	manager can find the information without having to read
	every queue file record.  Files: cleanup/cleanup_final.c,
	*qmgr/qmgr_message.c.

20140713

	Interoperability: new parameter smtputf8_autodetect_classes
	for selective autodetection that a message requires UTF8SMTP
	support. During the initial SMTPUTF8 rollout, this is limited
	by default to Postfix sendmail command-line submissions and
	address verification probes.  Sites that introduce UTF8
	during local processing (see above) will have to enable
	SMTPUTF8 autodetection for all mail sources. This feature
	shares infrastructure with the older internal_filter_classes
	feature.  Files: bounce/bounce_notify_service.c,
	bounce/bounce_notify_verp.c, bounce/bounce_one_service.c,
	bounce/bounce_trace_service.c, bounce/bounce_warn_service.c,
	global/int_filt.c, global/mail_proto.h, global/smtputf8.c,
	local/forward.c, pickup/pickup.c, qmqpd/qmqpd.c, smtp/smtp_chat.c,
	smtpd/smtpd.c, smtpd/smtpd_chat.c, verify/verify.c.

	Feature: preliminary message/global support. This does not
	yet parse encoded message/global (such as message/global
	sent through an non-8BITMIME system). Such mail cannot yet
	be inspected with header_checks. File: global/mime_state.c.

20140714

	Cleanup: update the "smtputf8" delivery request flags when
	VERP expansion causes an UTF8 recipient address to appear
	in the envelope sender address.  Files: *qmgr/qmgr_deliver.c.

	Cleanup: emit the correct content transfer encoding name
	when downgrading message/global as quoted-printable. File:
	global/mime_state.c.

	Cleanup: generate a bounce message with MIME type *global*
	only when the original message requested SMTPUTF8 support.
	File: bounce/bounce_notify_util.c.

	Cleanup: propagate the "SMTPUTF8 support requested" flag
	when bouncing a message or when forwarding a message through
	a local alias or .forward file.  Files: local/forward.c,
	bounce/bounce_notify_util.c, src/global/post_mail.[hc], and
	specify a dummy argument SMTPUTF8_FLAGS_NONE in all other
	programs that programs that invoke post_mail_fopen*(),

20140715

	Cleanup: change extract_addr() API to indicate that an
	address is parsed in SMTPUTF8 context. File: smtpd/smtpd.c.

	Cleanup: shared-library build fixes. Viktor Dukhovni.  Files:
	makedefs, dns/Makefile.in, global/Makefile.in, master/Makefile.in,
	tls/Makefile.in, util/Makefile.in.

	First general release with SMTPUTF8 support; see RELEASE_NOTES
	for an initial writeup.  The last pre-SMTPUTF8 release is
	snapshot 20140713.

20140716

	Paranoia: validate UTF8 before exposing it to libicuuc.
	File: util/midna.c.

	Typo: Postfix did not warn when smtputf8_enable=yes while
	UTF-8 support is not compiled in. File: global/mail_params.c.

	Cleanup: hard-coded GCC dependencies. Eray Aslan. File:
	makedefs.

20140717

	Safety: manipulate unsigned characters while decoding.
	Files: global/xtext.c, global/uxtext.c.

	Infrastructure: ACE label to UTF-8 conversion. Files:
	util/midna.[hc].

	Infrastructure: macro expansion with printable() filter.
	Files: util/mac_expand.[hc].

	Feature: when expanding myhostname or mydomain in bounce
	template messages, and smtputf8_enable=yes, convert ACE
	(xn--mumble) labels into UTF-8.  bounce/bounce_template.c.

20140720

	Cleanup: charset selection and content-transfer encoding
	in bounce messages (work in progress). The proper solution
	requires separate handling of the returned-message MIME
	properties and of the (boiler-plate text, delivery status)
	MIME properties.  File: bounce/bounce_notify_util.c.

20140722

	Documentation: the TLS_README example for creating a
	self-signed certificate was incomplete. Also, added
	"smtp_tls_loglevel = 1" and "smtpd_tls_loglevel = 1" settings
	to cookbook recipes, so that TLS handshake results will be
	logged. Viktor Dukhovni.  File: proto/TLS_README.html.

	Documentation: update Perl MIME::Base64 example.  File:
	proto/SASL_README.html.

	Documentation: update pointer to Bennett Todd's SMTP proxy.
	File: proto/SMTPD_PROXY_README.html.

20140725

	Documentation: describe what features are controlled by
	parent_domain_matches_subdomains, both in the description
	of the controlled feature, and in the description of
	parent_domain_matches_subdomains. File: proto/postconf.proto.

	Cleanup: smtpd_client_event_limit_exceptions is now controlled
	with parent_domain_matches_subdomains, with backwards-compatible
	default (specify .example.com in order to match subdomains
	of example.com). Files: smtpd/smtpd.c.

	Documentation: SMTPUTF8_README, an updated version of text
	that was originally part of the RELEASE_NOTES file. Files:
	proto/SMTPUTF8_README.html, proto/Makefile.in, html/index.html.

20140731

	Feature: the Postfix SMTP server now logs at the end of a
	session how many times each SMTP command was successfully
	invoked, followed by the total number of invocations if it
	is different.  File: smtpd/smtpd.c.

20140802

	Workaround: detect mis-configuration where Postfix talks
	to the Dovecot master socket instead of the Dovecot userdb
	socket. Timo Sirainen. File: xsasl/xsasl_dovecot_server.c.

20140904

	Logging: the MySQL client now logs a warning when a match
	against the "domain" list fails due to table lookup error
	(the underlying mechanism already logs a warning, but it
	has less context information).  File: global/dict_mysql.c.

20140907

	Feature: with "confirm_delay_cleared = yes", Postfix informs
	the sender when delayed mail leaves the queue. This can
	result in a sudden burst of notifications at the end of a
	prolonged network outage, and is therefore disabled by
	default. Files: mantools/postlink, proto/postconf.proto,
	global/deliver_request.h, global/mail_params.h, global/sent.c,
	*qmgr/qmgr.c, *qmgr/qmgr_active.c, *qmgr/qmgr_message.c.

20140908-14

	Feature: for the first time in 17 years, support for
	${name?if-nonempty:if-empty} macro expressions, and for
	logical expressions ${logical-expr?if-true:if-false}. In
	preparation for configurable message headers and logging.
	Files: util/mac_expand.c.

20140914

	Bugfix (introduced: 19971026): a zero precision value in
	%.*s and $.<digits>s was implemented as if no precision
	value was specified, i.e. print the entire string. This was
	not harmful, it just looked weird.  File: util/vbuf_print.c.

20120917

	Feature: RFC 7372 enhanced status code for unknown SMTP
	client hostnames.  File: smtpd/smtpd_check.c

	Bugfix: the accept() calls in test progams escaped attention
	when Postfix 2.2 was ported to IPv6. Problem found by Mark
	Martinec. Files: smtpstone/smtp-sink.c, smtpstone/qmqp-sink.c.

20140918

	Cleanup: log a warning when the cleanup server detects too
	many hops. smtpd(8) does not log any of the CLEANUP_STAT_XXX
	results. The pickup server logs some because there is no
	client to send the problem description to. This logic of
	who logs what needs to be revisited. File:
	cleanup/cleanup_message.c.

20140919

	Usability: randmap and pipemap syntax, for example,
	pipemap:{type_1:name_1, ..., type_n:name_n}.  This required
	small updates to code that parses input into lookup table
	names. Files: global/data_redirect.c, global/maps.c,
	global/server_acl.c, postconf/postconf.c, postconf/postconf_dbms.c,
	postconf/test58.ref, proto/DATABASE_README.html,
	proxymap/proxymap.c, smtpd/smtpd_check.c, util/argv.h,
	util/balpar.c, util/dict_pipe.c, util/dict_random.c,
	util/match_list.c, util/mystrtok.c, util/argv_splitq.c,
	util/stringops.h.

	Cleanup: added PRINTFLIKE() to enable missing format string
	checks. Files: bounce/bounce_template.h, global/memcache_proto.h,
	global/dict_memcache, postconf/postconf.h, util/dict.h,
	util/msg.h.

20140920

	Bugfix (introduced: 20080212): incorrect client name in
	reject messages from check_reverse_client_hostname_access
	and check_reverse_client_hostname_{a,mx,ns}_access.  They
	replied with the verified client name, instead of the name
	that was rejected.  Problem reported by Reindl Harald. File:
	smtpd/smtpd_check.c.

20140921

	Cleanup: postconf code to determine the default mydomain
	value had not evolved since 1997, while the rest of Postfix
	changed in 2000.  File: postconf/postconf-dbms.c.

20140922

	Cleanup: the confirm_delay_cleared feature now sends no
	notification when the sender requests NOTIFY options that
	do not include NOTIFY=DELAY. Files: global/deliver_request,h,
	global/sent.c, *qmgr/qmgr_active.c, *qmgr/qmgr_message.c.

	Bugfix (introduced: yesterday): missing print arguments.
	File: postconf/postconf_dbms.c.

	Cleanup: simplified "nested" lookup table checks.

	Cleanup: replace stress-dependent main.cf defaults with the
	ternary form: "${stress?{x}:{y}}" File: global/mail_params.h,
	proto/postconf.proto, postscreen/postscreen.c (comments).

20140923

	Cleanup: dict_db and dict_lmdb global settings. Files:
	global/mail_params.c, util/dict_open.c.

	Feature: unionmap, based on contribution by Roel van Meer.
	Files: mantools/postlink, postconf/postconf.c (manpage),
	proto/DATABASE_README.html, util/dict_open.c, util/dict_union.[hc].

20140924

	Bugfix (introduced: 20060117): the escape function didn't
	correctly convert non-ASCII. File: util/unescape.c.

	Bugfix (introduced: 201407): missing conversions for non-ASCII
	domain names in permit_mx_backup, check_mumble_{a,mx,ns}_access
	and reject_unknown_{sender,recipient}_domain. Mark Martinec.
	File: smtpd/smtpd_check.c.

20140925

	Cleanup: support for per-Milter settings, for example:
	smtpd_milters = {inet:host:port, default_action=accept,
	...}.  Specify the Milter endpoint address followed by zero
	or more attribute=value pairs separated by comma or space.
	The supported attributes are command_timeout, connect_timeout,
	content_timeout, default_action, and protocol. These have
	the same names as the corresponding main.cf parameters,
	minus the "milter_" prefix.  Files: global/mail_conf_over.c,
	global/mail_conf_str.c, global/mail_conf_time.c,
	global/mail_conf.h, milter/milters.c.

20140927

	Cleanup: specify { name = value } in per-Milter settings,
	to support space around the "=" or comma/space within the
	value. Files: global/attr_over.[hc].

	Cleanup: "postconf -n" now only shows config_directory when
	an override is in effect (environment, -c or -o).

	Cleanup: support for master.cf arguments inside {}, to
	protect arguments that contain whitespace. File:
	master/master_ent.c, postconf/postconf_master.c,
	postconf/test59.ref.

	Cleanup: support for per-policy client settings, for example:
	check_policy_service {inet:host:port, default_action=dunno,
	timeout=50s, ...}. Specify the policy server endpoint address
	followed by zero or more attribute=value pairs separated
	by comma or space.  Specify { name = value } for attributes
	that contain whitespace; otherwise, space is not allowed
	around the "=".  The supported attributes are default_action,
	max_idle, max_ttl, request_limit, retry_delay, timeout, and
	try_limit. These have the same names as the corresponding
	main.cf parameters, minus the "smtpd_policy_service_" prefix.
	Files: global/mail_conf_int.c, global/mail_conf.h,
	global/attr_override.[hc], smtpd/smtpd_check.c.

20140928

	Cleanup: extpar.c module to reduce code duplication.  Files:
	global/attr_override.c, master/master_ent.c, milter/milter.c,
	postconf/postconf_dbms.c, postconf/postconf_master.c,
	smtpd/smtpd_check.c, util/extpar.c, util/stringops.h.

	Cleanup: the table-driven code for per-Milter and per-policy
	overrides now updates stack-based variables, instead of
	(ugh) statically-allocated variables. Files:
	global/attr_override.[hc], smtpd/smtpd_check.c, milter/milter.c.

	Documentation: added advanced configuration sections for
	how to use per-Milter and per-policy settings.  Files:
	proto/SMTPD_POLICY_README.html, proto/MILTER_README.html.

	Cleanup: force LANG=C to prevent groff from outputting
	non-ASCII cruft into the HTML-ized manpages.  Files:
	html/Makefile.in, proto/Makefile.in, many HTML output files.

20140929

	Cleanup: the table-driven code for per-Milter and per-policy
	overrides now updates arbitrary variables, so that it can
	also be used for, say, TLS policies. Files:
	global/attr_override.[hc], smtpd/smtpd_check.c, milter/milter.c.

	Documentation: support for "{ argument with whitespace }"
	in master(5) and pipe(8). Files: proto/master, src/pipe/pipe.c.

	Documentation: in ADDRES_VERIFY_README, replaced "nearest
	MTA" with "preferred MTA". The SMTP client was changed years
	ago to try alternate MXes after a 4XX SMTP server response.
	File: proto/ADDRES_VERIFY_README.html.

20141001

	Safety: backwards-compatibility safety net that forces
	Postfix to run with backwards-compatible default settings
	after an upgrade to a newer Postfix version.  Postfix logs
	all uses of those backwards-compatible default settings so
	that the system administator can determine whether or not
	some backwards-compatible default settings need to be made
	permanent in main.cf or master.cf.  All this is controlled
	with a new compatibility_level parameter, default value 0.
	Files: global/mail_params.[hc], trivial-rewrite/rewrite.c,
	master/master_ent.c, smtpd/smtpd.c, postfix/postfix.c.

	New defaults for master.cf chroot (n), append_dot_mydomain
	(no) and smtputf8_enable (yes). File: global/mail_params.h,
	global/mail_params.c, smtp/smtp.c (manpage), smtpd/smtpd.c
	(manpage), trivial-rewrite/trivial-rewrite.c.

	Simple relational expression evaluator so that main.cf
	defaults can be made dependent on comparisons with the
	compatibility_level parameter value. File: util/mac_expand.c.

	Bugfix: do not reset the mail transaction after receiving
	a non-ASCII recipient. File: smtpd/smtpd.c.

20141002

	Cleanup: moved the details of BC safety-net messages from
	RELEASE_NOTES to postconf(5) manpage, and changed the wording
	of the BC messages. Files: RELEASE_NOTES, proto/postconf.proto,
	master/master_ent.c, smtpd/smtpd.c, trivial-rewrite/rewrite.c.

20141003

	Workaround: kludge for multiple paragraphs of text in
	indented paragraphs.  Files: mantools/postconf2html,
	mantools/postconf2man, proto/Makefile.in, proto/postconf.proto

20141005

	Cleanup: CHARSET_COMMA_SP, CHARSET_SPACE and CHARSET_BRACE
	to prepare for the elimination of ad-hoc string constants.
	File: util/sys_defs.h.

	Cleanup: allow "{ name=value }" to protect whitespace in
	import_environment and export_environment. Files:
	proto/postconf.proto, global/mail_parm_split.c, global
	/mail_parm_split.h, global/mail_stream.c, local/command.c,
	master/master.c, pipe/pipe.c, postdrop/postdrop.c,
	postfix/postfix.c, postmulti/postmulti.c, postqueue/postqueue.c,
	spawn/spawn.c.

20141006

	Backwards compatibility: log a helpful message when "localhost"
	is missing from mydestination. Files: trivial_rewrite/rewrite.c,
	trivial_rewrite/resolve.c, trivial-rewrite/trivial-rewrite.h,
	proto/postconf.proto.

	Cleanup: message_drop_header for configurable header dropping
	(default: bcc, content-length, resent-bcc, return-path).
	The list of supported header names covers RFC 5321, 5322,
	MIME RFCs, and some historical names.  File: global/header_opts.c,
	global/mail_params.[hc], cleanup/cleanup.c (manpage),
	proto/postconf.proto, mantools/postlink.

20141008

	New defaults: "relayhost=" and "mynetworks_style = host",
	plus a backwards-compatibility safety net that warns when
	the change in defaults could result in rejection of mail
	(with mynetworks_style this requires that Postfix evaluates
	both old and new default values).  Files: proto/postconf.proto,
	global/flush_clnt.c, global/mail_params.c, global/mail_params.h,
	global/mynetworks.c, global/mynetworks.h, global/server_acl.c,
	postconf/postconf_builtin.c, smtpd/smtpd.c, smtpd/smtpd_check.c.

20141009

	Documentation: moved the gory details from postconf(5) to
	a new COMPATIBILITY_README document. Files: proto/postconf.proto,
	proto/COMPATIBILITY_README.html html/index.html.

	Documentation: update the conf/main.cf compatibility_level
	setting for new Postfix installs, and updated a reminder
	in mail_params.h.

20141010

	Cleanup: make "const char myname[]" declarations static.
	global/attr_override.c, global/bounce.c, global/dsn_filter.c,
	global/dynamicmaps.c, global/mkmap_open.c, global/smtputf8.c,
	smtp/smtp_key.c, smtpd/smtpd_check.c, util/dict_pipe.c,
	util/dict_union.c, util/mac_expand.c, util/midna.c,
	util/valid_utf8_hostname.c.

	Documentation: summarize the user-specified "make makefiles"
	settings at the top of makedefs.out. This file now has so
	many internal variables that people would get lost.

20141011

	Cleanup: replaced cryptic macros X_SMTP() and SMTP_X() with
	more descripive names: LMTP_SMTP_SUFFIX() and VAR_LMTP_SMTP().
	Files: smtp/smtp.c, smtp/smtp.h, smtp/smtp_chat.c,
	smtp/smtp_connect.c, smtp/smtp_proto.c, smtp/smtp_sasl_glue.c,
	smtp/smtp_sasl_proto.c, smtp/smtp_tls_policy.c.

20141012

	Cleanup: missing format-string checks. Files: master/master_ent.c,
	posttls-finger/posttls-finger.c, smtpd/smtpd_proxy.c.

	Bugfix (introduced: Postfix 2.3): the PREPEND access/policy
	action added headers ABOVE Postfix's own Received: header,
	exposing Postfix's own Received: header to Milters (protocol
	violation) and hiding the PREPENDed header from Milters.
	The latter caused problems for DMARC implementations with
	SPF policy plus DKIM Milter.  PREPENDed headers are now
	added BELOW Postfix's own Received: header and remain visible
	to Milters. File: smtpd/smtpd.c.

20141013

	Cleanup: configuration file line numbers in error/warning
	messages could point to comment lines before or after the
	problem. Files: util/readlline.[hc], master/master_ent.c,
	postalias/postalias.c, postmap/postmap.c, util/dict.c,
	util/dict_cidr.c, util/dict_pcre.e, util/dict_regexp.c,
	util/dict_thash.c, postconf/postconf_master.c.

20141014

	Portability: Darwin 11.x needs to link with -lresolv. Viktor
	Dukhovni. File: makedefs.

	Documentation: ICU (unicode) library package names. File:
	proto/SMTPUTF*_README.html.

20141015

	Cleanup: master.cf line number reporting made more consistent
	with similar code elsewhere. File: master/master_ent.c.

	Backed out SMTP client TLS fallback due to multiple problems.

20141018

	Bugfix (introduced: Postfix 2.3): when a Milter inserted a
	header ABOVE Postfix's own Received: header, Postfix would
	expose its own Received: header to Milters (violating
	protocol) and hide the Milter-inserted header from Milters
	(wtf).  Files: cleanup/cleanup.h, cleanup/cleanup_message.c,
	cleanup/cleanup_state.c, milter/milter.[hc], milter/milter8.c.

	Cleanup: revert the workaround that places headers inserted
	with PREPEND actions or policy requests BELOW Postfix's own
	Received: message header. File: smtpd/smtpd.c.

20141019

	Cleanup: replace dozens and dozens of ad-hoc string constants
	with CHARS_SPACE, CHARS_COMMA_SP, and CHARS_BRACE. Files:
	52, too many files to mention here.

	Bugfix: the recently-introduced randmap, pipemap, and
	unionmap did not check for all possible forms of "empty
	list". Files: util/dict_random.c, util/dict_pipe.c,
	util/dict_union.c.

	Documentation: word smithing. File: proto/master.

	Cleanup: the last remaining remnants of the withdrawn
	smtp_tls_fallback_level feature. Files: mantools/postlink,
	global/mail_params.h.

20141021

	Per IETF TLS WG consensus, the tls_session_ticket_cipher
	default setting was changed from aes-128-cbc to aes-256-cbc.
	Take that, you quantum computer attackers! Viktor Dukhovni.
	Files: proto/postconf.proto, global/mail_params.h.

20141024

	Cleanup: added $smtpd_mumble_restrictions to the proxy_read_maps
	default setting. File: global/mail_params.h.

	Documentation: different header/body checks for MX service
	and SMTP submissions. File: proto/BUILTIN_FILTER_README.html.

	Cleanup: don't send "bare" original recipient in SMTP DSN
	attributes. File: cleanup/cleanup_addr.c.

	Feature: smtp-sink -N option to suppress DSN announcement.
	File: smtpstone/smtp-sink.c.

20141025

	Bugfix (introduced: Postfix 2,11): core dump when
	smtp_policy_maps specifies an invalid TLS level. Viktor
	Dukhovni. File: smtp/smtp_tls_policy.c.

20141103

	Logging: when a connection is closed, log the request counts
	for unimplemented STARTTLS or AUTH commands separately,
	instead of logging such commands as "unknown". File:
	smtpd/smtpd.c.

20141106

	Cleanup: set errno to ETIMEDOUT after postscreen handshake
	timeout event, so that warnings report the correct error.
	File: tlsproxy/tlsproxy.c.

20141112

	Documentation: 24 identical typos. File: proto/postconf.proto.

	Workaround: support space after "MAIL FROM:" and "RCPT TO:"
	in smtpd_command_filter examples. Reportedly, cashedge.com's
	software (used by banks) needs this (source: Claus Assmann).
	File: proto/postconf.proto.

20141117

	Cleanup: use ~0U instead of (unsigned) -1.  Based on
	complaints from the BEAM static analyzer.  Files:
	global/mynetworks.c, postconf/postconf.c, util/cidr_match.c.

	Cleanup: forgot the "do" in "do { stuff } while (0)" macros.
	Luckily, this had caused no problem. Based on complaints
	from the BEAM static analyzer. Files: util/dict_cdb.c,
	util/dict_dbm.c, util/dict_lmdb.c, util/dict_pcre.c,
	util/dict_regexp.c, util/dict_sockmap.c, util/dict_thash.c.

	Bugfix (introduced: Postfix 2.9):  lockfile descriptor leak
	after error. Based on complaints from the BEAM static
	analyzer. File: util/dict_db.c.

	Bugfix (introduced: Postfix 1.1): don't "set" the null byte
	element in the base64 and base32 decoding maps. Based on
	complaints from the BEAM static analyzer. Files: util/base64_code,
	util/base32_code.c.

	Cleanup: don't exit(0) after failing to run showq(8). Based
	on complaints from the BEAM static analyzer.  File:
	postqueue/postqueue.c.

	Bugfix: memory leak when getaddrinfo() returns a result
	that is neither IPv4 nor IPv6.  Based on complaints from
	the BEAM static analyzer.  File: smtp/smtp_addr.c.

	Cleanup: use more meaningful name for global variable so
	that it isn't shadowed by a local variable. Based on
	complaints from the BEAM static analyzer. smtpstone/smtp-sink.c.

20141119

	Cleanup: base64 test driver. File: base64_code.c.

	Cleanup: make the CONST_CHAR_STAR typedef project-wide.
	Files: global/attr_override.h, util/sys_defs.h.

	Feature: BCC action in header/body_checks and milter_header_checks.
	Files: proto/header_checks, cleanup/cleanup.h,
	cleanup/cleanup_extracted.c, cleanup/cleanup_message.c,
	cleanup/cleanup_milter.c, cleanup/cleanup_milter.in16a,
	cleanup/cleanup_milter.ref16a1, cleanup/cleanup_milter.ref16a2,
	cleanup/cleanup_milter.reg16a, cleanup/cleanup_state.c,
	cleanup/test-queue-file16, global/attr_override.h,
	global/cleanup_strflags.c, global/cleanup_user.h,
	util/sys_defs.h.

	Cleanup: don't write back-to-back queue file pointer records
	when the "add recipient" action was a NOOP (e.g., because
	the recipient was a duplicate). File: cleanup/cleanup_milter.c.

20141120

	Documentation: COMPATIBILITY_README now has "purpose of
	this document" section, plus a separate section for turning
	off the safety net. File: proto/COMPATIBILITY_README.html

20131121

	Cleanup: replace mua_mumble with msa_mumble in master.cf
	submission and smtps service parameter overrides. File:
	proto/BUILTIN_FILTER_README.html.

	Feature: "static:{ text with whitespace }".  This could be
	used as check_mumble_access static:{reject text...} at the
	end of smtpd_mumble_restrictions. Files: util/dict_static.c,
	util/Makefile.in, util/dict_static_test.ref,
	proto/DATABASE_README.html.  postconf/postconf.c (manpage).

20141126

	Feature: "inline:{key=value, { key = text with comma/space}}"
	avoids the need to create a database for just a few entries.
	Files: util/dict_inline.[hc], mantools/postlink,
	proto/DATABASE_README.html. postconf/postconf.c (manpage),
	util/dict_inline.[hc], util/dict_open.c, util/Makefile.in,
	util/dict_inline_test.ref.

	Cleanup: report nullmx DNS records as "domain does not
	accept mail", instead of "invalid DNS response".  The Postfix
	SMTP client already bounced mail for such domains, and the
	Postfix SMTP server already rejected such domains with
	reject_unknown_sender/recipient_domain. This introduces a
	new SMTP server configuration parameter nullmx_reject_code
	(default: 556).  Files: src/dns/dns_lookup.[hc], dns/Makefile,in,
	dns/nullmx_test.ref, src/smtp/smtp_addr.c, smtpd/smtpd_check.c,
	smtpd/smtpd_check_nullmx.in, smtpd/smtpd_check_nullmx.ref,
	mantools/postlink, proto/postconf.proto, smtpd/smtpd.c.

	Cleanup: added some missing libdns tests: dns/Makefile,in,
	dns/mxonly_test,ref, dns/nxdomain_test.ref

	Cleanup: libglobal "make test" had suffered from bitrot.
	Files: global/mime_state.c, global/header_body_checks.c.

20141127

	Feature: DNS reply filter, configured with smtp_dns_reply_filter,
	smtpd_dns_reply_filter, and lmtp_dns_reply_filter. Files:
	mantools/postlink, proto/postconf.proto, dns/dns.h,
	dns/dns_lookup.c, dns/dns_rr_filter.c, dns/dns_strrecord.c,
	dns/error.ref, dns/error.reg, dns/mxonly_test.ref, dns/no-a.ref,
	dns/no-a.reg, dns/no-aaaa.ref, dns/no-aaaa.reg, dns/no-mx.ref,
	dns/no-mx.reg, dns/nullmx_test.ref, dns/test_dns_lookup.c,
	global/mail_params.h, smtp/lmtp_params.c, smtp/smtp.c,
	smtp/smtp_addr.c, smtp/smtp_params.c, smtpd/smtpd.c,
	smtpd/smtpd_check.c, smtpd/smtpd_dns_filter.{in,ref}.

20141130

	Cleanup: when searching multiple DNS record types for a
	specific name, and not all queries return the same result
	status, do not blindly return the last query's rcode and
	diagnostic text.  Instead, return rcode and text that is
	consistent with the aggregate result status.

	Cleanup: un-broke several smtpd regression tests (work in
	progress, with three more to go).  Files: smtpd/smtpd_check.c,
	smtpd/smtpd_server.{in,ref}, smtpd/smtpd_exp.{in,ref}.
	smtpd/smtpd_dnswl.{in,ref}.

	Documentation: added note on Milter-signing bounces.

20141201

	Bugfix (introduced: 20141130): memory leak. File: dns_lookup.c.

	Cleanup: un-broke several dns regression tests by sorting
	getaddrinfo() results by address family. Files: dns/dns_rr_eq_sa.c,
	dns/dns_rr_eq_sa.ref, dns/dns_sa_to_rr.c, dns/dns_sa_to_rr.ref.

	Cleanup: missing #ifdef in smtpd_check test driver. File:
	smtpd/smtpd_check.c.

	Cleanup: fix google.com regexp in smtp_dns_reply_filter
	example. Viktor Dukhovni. File: proto/postconf.proto.

	Cleanup: in the ASCII form of DNS resource records, add
	space after the TLSA match-type field. Viktor Dukhovni.
	File: dns/dns_strrecord.c.

20141202

	Cleanup: to increase clarity. rename DNS result status from
	DNS_UNAVAIL to DNS_NULLMX. If someone uses the same zero-length
	name trick with some other resource type, then we will worry
	about that later.  Files: smtpd/smtpd_check.c, smtp/smtp_addr.c,
	dns/dns.h, dns/dns_lookup.c.

	Cleanup: eliminate TLS state duplication from state->tls
	to session->tls. Viktor Dukhovni. Files: src/smtp/smtp.h,
	src/smtp/smtp_connect.c, src/smtp/smtp_proto.c,
	src/smtp/smtp_reuse.c, src/smtp/smtp_session.c.

20141203

	Feature: support to match UTF8 domain names against ASCII
	names in TLS certificates. Viktor Dukhovni. Files:
	posttls-finger/posttls-finger.c, tls/tls_client.c.

20141206

	Cleanup: use (char *) only for strings, not for data.  The
	"void *" type was not fully portable during initial Postfix
	development, but we no longer have that problem. Also started
	the migration of data structure sizes/counters to ssize_t/size_t
	(the IBM Beam analyzer identified lots of unnecessary 64-bit
	to 32-bit conversions).  The transformation and verification
	were mostly mechanical with manual supervision.  Files:
	anvil/anvil.c, bounce/bounce.c, bounce/bounce_notify_util.c,
	bounce/bounce_template.c, bounce/bounce_templates.c,
	cleanup/cleanup_message.c, cleanup/cleanup_region.c,
	cleanup/cleanup_state.c, dns/dns_lookup.c, dns/dns_rr.c,
	dns/dns_rr_eq_sa.c, dns/dns_rr_to_sa.c, dns/test_dns_lookup.c,
	flush/flush.c, global/abounce.c, global/abounce.h,
	global/been_here.c, global/bounce_log.c, global/clnt_stream.c,
	global/db_common.c, global/deliver_request.c,
	global/delivered_hdr.c, global/dict_ldap.c, global/dict_mysql.c,
	global/dict_pgsql.c, global/dsn.c, global/dsn_buf.c,
	global/dsn_filter.c, global/dynamicmaps.c,
	global/header_body_checks.c, global/header_opts.c,
	global/mail_addr_crunch.c, global/mail_stream.c,
	global/mail_version.c, global/maps.c, global/mbox_open.c,
	global/mime_state.c, global/mkmap_open.c, global/msg_stats_scan.c,
	global/mypwd.c, global/post_mail.c, global/rcpt_buf.c,
	global/recipient_list.c, global/scache_clnt.c,
	global/scache_multi.c, global/scache_single.c,
	global/smtp_reply_footer.c, global/smtp_reply_footer.h,
	global/tok822_node.c, local/biff_notify.c, local/forward.c,
	local/local_expand.c, local/unknown.c, master/event_server.c,
	master/master.c, master/master_avail.c, master/master_ent.c,
	master/master_monitor.c, master/master_proto.c,
	master/master_sig.c, master/master_spawn.c, master/master_status.c,
	master/master_vars.c, master/master_wakeup.c,
	master/multi_server.c, master/single_server.c,
	master/trigger_server.c, milter/milter.c, milter/milter8.c,
	milter/milter_macros.c, oqmgr/qmgr.c, oqmgr/qmgr_active.c,
	oqmgr/qmgr_deliver.c, oqmgr/qmgr_entry.c, oqmgr/qmgr_message.c,
	oqmgr/qmgr_queue.c, oqmgr/qmgr_transport.c, pipe/pipe.c,
	postalias/postalias.c, postconf/postconf.h,
	postconf/postconf_builtin.c, postconf/postconf_edit.c,
	postconf/postconf_lookup.c, postconf/postconf_main.c,
	postconf/postconf_master.c, postconf/postconf_node.c,
	postconf/postconf_service.c, postconf/postconf_user.c,
	postmap/postmap.c, postmulti/postmulti.c, postscreen/postscreen.c,
	postscreen/postscreen.h, postscreen/postscreen_dnsbl.c,
	postscreen/postscreen_early.c, postscreen/postscreen_expand.c,
	postscreen/postscreen_haproxy.c, postscreen/postscreen_send.c,
	postscreen/postscreen_smtpd.c, postscreen/postscreen_starttls.c,
	postscreen/postscreen_state.c, posttls-finger/posttls-finger.c,
	posttls-finger/tlsmgrmem.c, proxymap/proxymap.c, qmgr/qmgr.c,
	qmgr/qmgr_active.c, qmgr/qmgr_deliver.c, qmgr/qmgr_entry.c,
	qmgr/qmgr_job.c, qmgr/qmgr_message.c, qmgr/qmgr_peer.c,
	qmgr/qmgr_queue.c, qmgr/qmgr_transport.c, qmqpd/qmqpd_peer.c,
	qmqpd/qmqpd_state.c, scache/scache.c, sendmail/sendmail.c,
	showq/showq.c, smtp/smtp_chat.c, smtp/smtp_connect.c,
	smtp/smtp_proto.c, smtp/smtp_reuse.c, smtp/smtp_session.c,
	smtp/smtp_state.c, smtp/smtp_tls_policy.c, smtpd/smtpd.c,
	smtpd/smtpd_chat.c, smtpd/smtpd_check.c, smtpd/smtpd_expand.c,
	smtpd/smtpd_expand.h, smtpd/smtpd_peer.c, smtpd/smtpd_proxy.c,
	smtpstone/qmqp-sink.c, smtpstone/qmqp-source.c,
	smtpstone/smtp-sink.c, smtpstone/smtp-source.c, tls/tls_dane.c,
	tls/tls_mgr.c, tls/tls_misc.c, tls/tls_prng_dev.c,
	tls/tls_prng_egd.c, tls/tls_prng_exch.c, tls/tls_prng_file.c,
	tls/tls_proxy_clnt.c, tls/tls_scache.c, tls/tls_server.c,
	tlsmgr/tlsmgr.c, tlsproxy/tlsproxy.c, tlsproxy/tlsproxy_state.c,
	trivial-rewrite/transport.c, trivial-rewrite/trivial-rewrite.c,
	util/argv.c, util/attr_clnt.c, util/attr_print0.c,
	util/attr_print64.c, util/attr_print_plain.c, util/attr_scan0.c,
	util/attr_scan64.c, util/attr_scan_plain.c, util/auto_clnt.c,
	util/binhash.c, util/binhash.h, util/ctable.c, util/ctable.h,
	util/dict.c, util/dict.h, util/dict_alloc.c, util/dict_cache.c,
	util/dict_cache.h, util/dict_cidr.c, util/dict_db.c,
	util/dict_ht.c, util/dict_open.c, util/dict_pcre.c,
	util/dict_regexp.c, util/dict_sockmap.c, util/dict_surrogate.c,
	util/dict_thash.c, util/edit_file.c, util/events.c,
	util/events.h, util/fifo_trigger.c, util/find_inet.c,
	util/htable.c, util/htable.h, util/inet_addr_host.c,
	util/inet_addr_list.c, util/inet_addr_local.c, util/inet_listen.c,
	util/inet_proto.c, util/inet_trigger.c, util/inet_windowsize.c,
	util/iostuff.h, util/line_wrap.c, util/line_wrap.h,
	util/mac_expand.c, util/mac_expand.h, util/mac_parse.c,
	util/mac_parse.h, util/match_list.c, util/msg_output.c,
	util/mvect.c, util/myaddrinfo.c, util/myflock.c, util/mymalloc.c,
	util/mymalloc.h, util/nbbio.c, util/nbbio.h, util/netstring.c,
	util/nvtable.c, util/nvtable.h, util/pass_trigger.c,
	util/sane_accept.c, util/sane_connect.c, util/scan_dir.c,
	util/sock_addr.c, util/stream_trigger.c, util/sys_compat.c,
	util/sys_defs.h, util/timecmp.c, util/timed_connect.c,
	util/timed_write.c, util/unix_connect.c, util/unix_listen.c,
	util/unix_recv_fd.c, util/unix_send_fd.c, util/unix_trigger.c,
	util/vbuf.c, util/vbuf.h, util/vstream.c, util/vstream_tweak.c,
	util/vstring.c, util/watchdog.c, verify/verify.c,
	xsasl/xsasl_cyrus_client.c, xsasl/xsasl_cyrus_server.c,
	xsasl/xsasl_dovecot_server.c.

	Cleanup: removed unnecessary casts. File: global/cfg_parser.c.

	Cleanup: dont cast away "const". File: global/dict_sqlite.c.

20141208

	Bugfix (introduced: 20141207): in new #ifdef, && should be
	||.  File: smtpd.c.

20141210

	Cleanup: the "inline" table now supports case-insensitive
	search, and an iterator. File: util/dict_inline.c.

	Cleanup: minuscule memory leaks in graceful degradation
	after lookup table open error.  Files: util/dict_inline.c,
	util/dict_static.c.

20141211

	Cleanup: memory leaks in unit-test driver programs (i.e.
	code used only during development). Files:
	cleanup/cleanup_milter.c, util/base64_code.c.

	Bugfix (introduced 20141001): mac_expand() error message
	with "??" due to dangling pointer. File: util/mac_expand.c.

	Portability: unit-test driver programs. Files: util/myaddrinfo.c,
	util/myaddrinfo.ref.

	Portability: Clang support. Files: makedefs, util/sys_defs.h.

	Portability: FreeBSD 10 support. Files: makedefs,
	util/sys_defs.h.

	Cleanup: in makedefs, the CC and WARN features are now
	independent. File: makedefs.

	Shut up some Clang format-string nags: util/events.c.

	Cleanup: eliminated unnecessary 64->32bit (and back)
	conversions on LP64 platforms.  Files: util/htable.c,
	util/binhash.c util/mvect.[hc], util/name_mask.c,
	util/sane_time.c, util/unix_listen.c, util/unix_connect.c,
	util/stringops.h, util/trimblanks.c, and dependent code in
	smtpd/smtpd_token.c.

	Cleanup: unused inet_proto_init() results. Files:
	global/mail_params.c, postconf/postconf_builtin.c,
	smtpstone/qmqp-sink.c, smtpstone/qmqp-source.c,
	smtpstone/smtp-source.c/

	Shut up some Clang nags about unused functions in network
	interface API selection.  File: util/inet_addr_local.c.

	Portability: a historical compiler lacks printf-like
	format-string checks for function pointers. Files: util/msg.h,
	bounce/bounce_template.h.

20141212

	Shut up some Clang format-string nags: util/line_number.c,
	sendmail/sendmail.c, smtpd/smtpd_proxy.c, smtp/smtp_sasl_proto.c.

	Cleanup: eliminated unnecessary 64->32bit (and back)
	conversions on LP64 platforms.  Files: dict_memcache.c,
	header_body_checks.[hc], log_adhoc.c, pipe_command.c,
	record.[hc], smtp_reply_footer.c, split_addr.c.
	cleanup/cleanup_milter.c, master/mail_server.h,
	src/master/trigger_server.c, oqmgr/qmgr.c, qmgr/qmgr.c,
	pickup/pickup.c.

	Cleanup: nullmx SMTP reply codes 550 and 556, and enhanced
	status codes X.1.10 and X.7.27. The nullmx SMTP reply codes
	are no longer configurable.  Files: global/mail_params.h,
	smtpd/smtpd.c, smtpd/smtpd_check.c.

	Portability: default table owner UID for testing.  Files:
	util/dict_alloc.c, util/dict_open.c.

	Shut up Clang unused assignment nag: global/mail_queue.h.
	sendmail/sendmail.c, smtpd/smtpd_proxy.c, smtp/smtp_sasl_proto.c.

20141214

	Bugfix (introduced: 20141212): typo in Clang function pointer
	format check, making it a noop. Viktor Dukhovni. File:
	util/sys_defs.h.

	Maintainability: compile-time argument typechecking for
	variadic attribute-value read/write functions. Files:
	anvil/anvil.c, bounce/bounce.c, cleanup/cleanup.c,
	dnsblog/dnsblog.c, flush/flush.c, global/abounce.c,
	global/anvil_clnt.c, global/bounce.c, global/defer.c,
	global/deliver_pass.c, global/deliver_request.c,
	global/dict_proxy.c, global/dsb_scan.c, global/dsn_print.c,
	global/flush_clnt.c, global/mail_command_client.c,
	global/mail_stream.c, global/msg_stats_print.c,
	global/msg_stats_scan.c, global/post_mail.c, global/rcpt_buf.c,
	global/rcpt_print.c, global/resolve_clnt.c, global/rewrite_clnt.c,
	global/scache_clnt.c, global/trace.c, global/verify_clnt.c,
	local/forward.c, milter/milter.c, milter/milter8.c,
	milter/milter_macros.c, oqmgr/qmgr_deliver.c, pickup/pickup.c,
	postdrop/postdrop.c, postscreen/postscreen_dnsbl.c,
	postscreen/postscreen_send.c, postscreen/postscreen_starttls.c,
	proxymap/proxymap.c, qmgr/qmgr_deliver.c, qmqpd/qmqpd.c,
	scache/scache.c, smtpd/smtpd.c, smtpd/smtpd_check.c,
	tls/tls_mgr.c, tls/tls_proxy_clnt.c, tls/tls_proxy_print.c,
	tls/tls_proxy_scan.c, tlsmgr/tlsmgr.c, tlsproxy/tlsproxy.c,
	trivial-rewrite/resolve.c, trivial-rewrite/rewrite.c,
	trivial-rewrite/trivial-rewrite.c, util/attr.h.

20141217

	Replaced compile-time argument typechecking based on inline
	functions with an implementation based on ternary expressions
	with unreachable assignments to dummy variables.   This
	should produce the exact same result as the approach based
	on inline functions (which were standardized with C99).
	Files: util/check_arg.h, util/attr.h, util/attr.c.

20141221

	Portability: proof-of-concept template for OpenBSD build
	with shared libpostfix etc. libraries. File: makedefs.

20141223

	Cleanup: compile-time variadic argument type checking for
	attribute-value APIs of vstream, vstream_popen, vstring,
	pipe_command, spawn_command, attr_override, and mail_server
	skeletons.  Based on mostly automatic conversion and checking,
	with a manual inspection of the remainder.  Files:
	anvil/anvil.c, bounce/bounce.c, cleanup/cleanup.c,
	cleanup/cleanup_api.c, discard/discard.c, dnsblog/dnsblog.c,
	error/error.c, flush/flush.c, global/attr_override.c,
	global/attr_override.h, global/mail_connect.c, global/mail_queue.c,
	global/mail_stream.c, global/mail_stream.h, global/pipe_command.c,
	global/pipe_command.h, global/smtp_stream.c, global/timed_ipc.c,
	local/command.c, local/local.c, master/event_server.c,
	master/mail_server.h, master/multi_server.c,
	master/single_server.c, milter/milter.c, milter/milter8.c,
	oqmgr/qmgr.c, oqmgr/qmgr_transport.c, pickup/pickup.c,
	pipe/pipe.c, postalias/postalias.c, postcat/postcat.c,
	postdrop/postdrop.c, postmap/postmap.c, postscreen/postscreen.c,
	postscreen/postscreen_dnsbl.c, postscreen/postscreen_haproxy.c,
	postscreen/postscreen_starttls.c, posttls-finger/posttls-finger.c,
	proxymap/proxymap.c, qmgr/qmgr.c, qmgr/qmgr_transport.c,
	qmqpd/qmqpd.c, scache/scache.c, showq/showq.c, smtp/smtp.c,
	smtpd/smtpd.c, smtpd/smtpd_check.c, smtpd/smtpd_proxy.c,
	smtpstone/smtp-source.c, spawn/spawn.c, tls/tls_proxy_clnt.c,
	tls/tls_stream.c, tlsmgr/tlsmgr.c, tlsproxy/tlsproxy.c,
	trivial-rewrite/trivial-rewrite.c, util/auto_clnt.c,
	util/ctable.c, util/dict_cache.c, util/dict_cache.h,
	util/dict_lmdb.c, util/dict_tcp.c, util/netstring.c,
	util/recv_pass_attr.c, util/slmdb.c, util/slmdb.h,
	util/spawn_command.c, util/spawn_command.h, util/vstream.c,
	util/vstream.h, util/vstream_popen.c, util/vstream_tweak.c,
	util/vstring.c, util/vstring.h, verify/verify.c,
	virtual/virtual.c, xsasl/xsasl_dovecot_server.c.

20141224

	Cleanup: the compile-time argument typechecks for attribute-value
	APIs are now by default implemented with inline functions.
	Compile with -DNO_INLINE to implement the argument typechecks
	with ternary operators and unreachable assignments.  Files:
	util/check_arg.h and its consumers.

20141226

	NetBSD6/7 dynamic linking support. Viktor Dukhovni.

	Cleanup: instead of making up new names, use a consistent
	CA_ prefix for macros that implement compile-time argument
	typechecks for non-protocol attribute-value APIs. This
	transformation and its verification are mechanical.

	Bugfix (introduced: Postfix 1.1, but latent before 3.0):
	"postfix-install: daemon_directory: not found" error with
	an ancient Solaris shell.  Fixed by ALSO resetting IFS after
	the end of a ``while IFS=foo command'' loop; counter to
	expectation, the IFS reset in the loop body executed in a
	child process.  Background: some shells implement "IFS=foo
	command" as a permanent IFS change; this was allowed by
	standards at some point in time.  File: postfix-install.

20141227

	Feature: smtp_address_verify_target (default: rcpt) that
	determines what protocol stage decides if a recipient is
	valid. Specify "data" for servers that reject recipients
	after the DATA command. Files: mantools/postlink,
	proto/postconf.proto, proto/ADDRESS_VERIFICATION_README.html,
	global/mail_params.h, smtp/lmtp_params.c, smtp/smtp.c,
	smtp/smtp.h, smtp/smtp_params.c, smtp/smtp_proto.c.

20141228

	Cleanup: the IDNA conversion routines now accept both ASCII
	and UTF8 inputs. The functions als verify that either their
	result is a valid ASCII domain name or that it converts
	into a valid ASCII domain name. Files: util/midna.c,
	util/midna_test.in, util/midna_test.ref.

20141230

	Cleanup: s/midna/midna_domain/ for better specificity,
	because we also need functions that act only on the domain
	portion of an email address. Files: bounce/bounce_template.c,
	global/midna_adomain.c, posttls-finger/posttls-finger.c,
	smtp/smtp_addr.c, smtpd/smtpd_check.c, tls/tls_client.c,
	util/midna_domain.[hc], util/valid_utf8_hostname.c.

	Infrastructure: function midna_adomain_to_utf8() (and
	midna_adomain_to_ascii) to convert the domain portion of
	an email address before table lookup. Files:
	global/midna_adomain.[hc].

20141230-20140109

	What is described here is the result of four iterations to
	deal with malformed UTF-8 without massively contaminating
	every Postfix program with new error-handling code paths,
	in particular without triggering fatal errors that didn't
	happen before.

	Infrastructure: function casefold() to support caseless
	string comparison, primarily for table lookups. This function
	supports two modes: case folding a la lowercase() for ASCII
	byte values, and UTF-8 case folding. As recommended at
	http://www.w3.org/International/wiki/Case_folding for
	caseless string comparison, this uses the en_US locale to
	avoid surprises. The implementatin handles the entire RFC
	3629 Unicode range (code points U+0000..U+10FFFF including
	surrogates) and is chroot(2) safe. Files: casefold.c,
	stringops.h.

	Infrastructure: revised the midna_domain_to_ascii and
	midna_domain_to_utf8 domain name conversion functions after
	careful reading of the UTS #46 specification, and after
	observing that ICU 4.8 library functions indeed implement
	this spec, at least with default options. In particular,
	midna_domain_to_utf8 takes an UTF-8 domain name and verifies
	that its A-label form will pass the valid_hostname() test.
	File: util/midna_domain.c.

	Infrastructure: handle UTF-8 errors in lookup table keys
	or values without massively contaminating every Postfix
	program with new error-handling code paths, in particular
	without triggering fatal errors that didn't happen before.
	The lookup/update/delete functions log a warning and ignore
	a request with a bad key (it cannot exist); the update
	functions ignore a request to store a bad value (it cannot
	exist); and the lookup function reports a bad value as a
	configuration error (it should not exist, but there it is).
	Table iterators still report all (key, value) pairs in a
	table. Files: util/dict.h, util/dict_open.c, util/dict_utf8.c,
	global/mkmap_open.c.

	Note that with SMTPUTF8 turned on, each table-driven mechanism
	(access, aliases, etc.) needs to make its own decision
	whether UTF-8 syntax is required. We cannot blindly require
	that everything has valid UTF-8 syntax. That would make
	header/body_checks useless for content inspection, because
	headers may be malformed and bodies may contain legitimate
	binary content that isn't UTF-8.

	Note that with SMTPUTF8 turned off, Postfix must remain
	8-bit clean as it always has been. Table operations must
	not complain that something violates UTF-8 syntax rules.

	UTF-8 sanitization in the Postfix SMTP server.  With
	smtputf8_enable=yes, SMTP commands with UTF-8 syntax errors
	are rejected, table lookup results with invalid UTF-8 syntax
	are handled as configuration errors, and UTF-8 syntax errors
	in policy server replies result in execution of the policy
	server's default action.

20150102

	Cleanup: propagate DICT_ERR_CONFIG through the proxymap
	protocol. Files: global/dict_proxy.[hc], proxymap/proxymap.c.

20150106

	Robustness: don't segfault due to excessive recursion in
	tok822_free_tree() after a faulty configuration runs into
	the virtual_alias_recursion_limit.  File: global/tok822_tree.c.

20150109

	Cleanup: the dict debug module now proxies dict flags.
	File: util/dict_debug.c.

	With "smtputf8_enable = yes", the postmap and postalias
	commands now enable UTF-8 by default (use "-u" to disable)
	with one exception: UTF-8 remains disabled for header/body_checks
	emulation (use "-U" to enable).  Files: postmap/postmap.c,
	postalias/postalias.c.

20150110

	Cleanup: the "inline" and "texthash" implementations now
	reuse the "internal" database instead of reinventing the
	wheel.  Files: util/dict_inline.c, util/dict_thash.c.

	As a first step, with "smtputf8_enable = yes" all features
	based on Postfix matchlists enable UTF-8 syntax checks and
	UTF-8 casefolding for table patterns, but NOT YET for string
	patterns. The list of features includes authorized_flush_users,
	authorized_mailq_users, authorized_submit_users, debug_peer_list,
	fast_flush_domains, mydestination, permit_mx_backup_networks,
	qmqpd_authorized_clients, smtp_connection_cache_destinations,
	smtpd_authorized_verp_clients, smtpd_authorized_xclient_hosts,
	smtpd_authorized_xforward_hosts,
	smtpd_client_event_limit_exceptions,
	smtpd_log_access_permit_actions, smtpd_sasl_exceptions_networks,
	the "domains" feature in ldap_table(5), memcache_table(5)
	mysql_table(5), pgsql_table(5) and sqlite_table(5),
	virtual_alias_domains, virtual_mailbox_domains.

20150111

	Cleanup: simplified the interposition layer that adds UTF-8
	support to Postfix lookup tables. Files: util/dict_utf8.c.

	With "smtputf8_enable = yes", Enable UTF-8 syntax checks
	and UTF-8 casefolding for SMTP server access maps, alias_maps,
	canonical_maps, fallback_transport_maps,
	lmtp_tls_session_cache_database, local_recipient_maps,
	mailbox_command_maps, mailbox_transport_maps, rbl_reply_maps,
	recipient_bcc_maps, recipient_canonical_maps, relay_recipient_maps,
	relocated_maps, sender_bcc_maps, sender_canonical_maps,
	sender_dependent_relayhost_maps, sender_dependent_transport_maps,
	smtp_generic_maps, smtp_sasl_auth_cache_name,
	smtp_sasl_password_maps, smtp_tls_per_site, smtp_tls_policy_maps,
	smtp_tls_session_cache_database, smtpd_sender_login_maps,
	smtpd_tls_session_cache_database, transport_maps,
	virtual_alias_maps, virtual_gid_maps, virtual_mailbox_maps,
	virtual_uid_maps.

20150112

	Infrastructure: support for UTF-8 casefolding in match_lists.
	Instead of using strcasecmp(), casefold all fixed-string
	patterns during initialization, casefold a search string
	at the beginning of the search, and use strcmp() for
	comparison.  Files: util/casefold.c util/dict.h, util/dict_utf8.c,
	util/match_list.c, util/match_list.h, util/match_ops.c,
	util/stringops.h, global/addr_match_list.c, global/domain_list.c,
	global/namadr_list.c, global/string_list.c.

20150113

	Cleanup: show the configuration parameter name in error
	messages while parsing or searching match_list-based features
	such as mydestination, relay_domains and a few dozen more.
	Files: cleanup/cleanup_init.c, flush/flush.c,
	global/addr_match_list.c, global/debug_peer.c,
	global/domain_list.c, global/flush_clnt.c,
	global/match_parent_style.c, global/namadr_list.c,
	global/resolve_local.c, global/string_list.c, global/user_acl.[hc],
	postdrop/postdrop.c, postqueue/postqueue.c,
	postscreen/postscreen.c, qmqpd/qmqpd.c, sendmail/sendmail.c.,
	smtp/smtp.c, smtp/smtp_sasl_glue.c, smtpd/smtpd.c,
	smtpd/smtpd_check.c, trivial-rewrite/resolve.c,
	util/match_list.[hc], util/match_ops.c.

	Cleanup: apply printable() to all bounce(8) service
	string-valued protocol fields. File: bounce/bounce.c.

	Apparenly the UCI 4.8 ucasemap_utf8FoldCase() function does
	not complain about UTF-8 syntax errors, so we add our own
	redundant check. File: util/casefold.c.

20150115

	Bitrot: prepare for future changes in OpenSSL. Viktor
	Dukhovni. Files: tls/tls.h, tls/tls_dh.c, tls/tls_misc.c,
	tls/tls_rsa.c, tls/tls_server.c.

	Documentation: "avoid hash files here, use btree or lmdb
	instead".  File: proto/ADDRESS_VERIFICATION_README.html.

	Safety: virtual_alias_address_length_limit (default: 1000)
	to stop aliasing loops that exponentially increase the
	address length with each iteration. Files: global/mail_params.h,
	mantools/postlink, proto/postconf.proto, cleanup/cleanup.c,
	cleanup/cleanup_init.c, cleanup/cleanup_map1n.c.

20150116

	TLS wrappermode in the Postfix smtp(8) client. This introduces
	a new parameter "smtp_tls_wrappermode" (default: no). Files:
	global/mail_params.h, mantools/postlink, proto/postconf.proto,
	smtp/lmtp_params.c, smtp/smtp.[hc], smtp/smtp_connect.c,
	smtp/smtp_params.c, smtp/smtp_proto.c.

	TLS wrappermode in posttls-finger(1), and some DANE-related
	cleanups. This introduces a new option "-w". Viktor Dukhovni.
	Files: posttls-finger/posttls-finger.c, smtp/smtp_tls_policy.c,
	tls/tls.h, tls/tls_client.c, tls/tls_fprint.c.

20150117

	Cleanup: missing " in \%s\" in postscreen(8) fatal error
	messages. Iain Hibbert. File: postconf/postconf_master.c.

20150118

	Bugfix (introduced: 20140731): when a connection timed out
	before any command was received, the Postfix SMTP server
	"disconnect from" logging would show the content of the
	last SMTP server response (421 4.4.2 $myhostname error:
	timeout exceeded) instead of per-command statistics, because
	there were no statistics to report.  The Postfix SMTP server
	now always logs the total number of commands (commands=x/y)
	even when the client did not send any. This helps logfile
	analyzers to recognize sessions without commands.  File:
	smtpd/smtpd.c.

20150120

	Bugfix (introduced: 20141230-20140109): do not reallocate
	a dictionary handle after it is initialized. This breaks
	CDB. Problem reported by Andreas Schulze. Files: util/dict.h,
	util/dict_alloc.c, util/dict_utf8.c.

	Cleanup: simplified the dict_utf8 wrapper implementation.
	Files: util/dict.h, util/dict_alloc.c, util/dict_utf8.c.

20150121

	Cleanup: undo changes in check_mumble_access() that replaced
	error handling with longjmp() calls. This could introduce
	memory leaks in check_mumble_access() callers. Files:
	smtpd/smtpd_check.c, smtpd/smtpd_error.ref.

20150122

	Cleanup: miscellaneous cruft, typos, comments, error messages.
	proto/COMPATIBILITY_README.html, global/addr_match_list.c,
	global/domain_list.c, global/namadr_list.c, global/string_list.c,
	global/user_acl.c, postalias/postalias.c, postmap/postmap.c,
	tls/tls_client.c, util/dict_alloc.c, util/dict_open.c,
	util/match_list.c.

20150124

	Workaround: nroff has been improved so that "-" comes out as
	some non-ASCII character, unlike HTML where it comes out
	as itself.  Andreas Schulze. This requires jumping a few
	hops to generate HTML and nroff input from the same source
	text.  Files; mantools/srctoman, mantools/postconf2man.

	Cleanup: UTF-8 support in masquerade_domains.  File:
	cleanup/cleanup_masquerade.c.

20150125

	Cleanup: simplified the casefold() API: no input-dependent
	failure modes. Files: cleanup/cleanup_masquerade.c,
	util/casefold.c, util/dict_utf8.c, util/match_list.c,
	util/strcasecmp_utf8.c, util/stringops.h.

	Cleanup: replaced str*casecmp() calls with UTF8-enabled
	versions. Files: bounce/bounce.c, bounce/bounce_append_service.c,
	bounce/bounce_notify_service.c, bounce/bounce_notify_verp.c,
	bounce/bounce_one_service.c, bounce/bounce_trace_service.c,
	bounce/bounce_warn_service.c, cleanup/cleanup_addr.c,
	cleanup/cleanup_map11.c, cleanup/cleanup_map1n.c,
	global/log_adhoc.c, global/mail_addr_find.c, global/mail_params.c,
	global/split_addr.c, global/verify.c, global/verify_sender_addr.c,
	local/alias.c, local/recipient.c, oqmgr/qmgr_message.c,
	qmgr/qmgr_message.c, smtp/smtp_tls_policy.c, smtpd/smtpd_check.c,
	smtpd/smtpd_milter.c, trivial-rewrite/resolve.c,
	util/strcasecmp_utf8.c, util/stringops.h.

20150126

	Portability: added missing #ifdef STRCASECMP_IN_STRINGS_H
	for platforms that require it. Files: dns/dns_rr_filter.c,
	milter/milter8.c, posttls-finger/posttls-finger.c,
	tls/tls_dane.c, tlsproxy/tlsproxy.c, util/dict_test.c.

	Cleanup: replaced lowercase() calls with UTF-8-enabled
	versions. Files: flush/flush.c, global/been_here.c,
	global/delivered_hdr.c, global/fold_addr.c, global/fold_addr.h,
	local/forward.c, local/recipient.c, pipe/pipe.c,
	smtpd/smtpd_resolve.c, util/casefold.c, util/stringops.h,
	virtual/recipient.c.

20150127

	Cleanup: simplified the 20150125 and 20150126 APIs, replacing
	the most-common use cases with convenience macros that have
	fewer arguments. Files: anything that implements or invokes
	casefold*() or str*casecmp().

	Documentation: missing words and typos. Matthew Selsky. Files:
	proto/SMTPUTF8_README.html, util/dict_open.c, util/vstream.c.

20150128

	Bugfix: the ICU casemapping API can report success, while
	producing output that is not null-terminated. But we can
	deal with that. File: util/casefold.c.

	Cleanup: unnecessary buffers. File: util/strcasecmp_utf8.c.

	Cleanup: whitespace in source-code documentation has gotten
	damaged through the years. Files: util/iostuff.h,
	util/msg_vstream.h, util/msg_syslog.h, util/msg_output.h,
	util/msg.h, util/inet_proto.c, trivial-rewrite/trivial-rewrite.c,
	tls/tls.h, postconf/postconf.c, master/multi_server.c,
	master/event_server.c, global/memcache_proto.h,
	global/dict_mysql.c, global/dict_ldap.c, discard/discard.c,
	error/error.c, global/dict_proxy.c, global/mail_conf_int.c,
	global/match_parent_style.c, global/scache.c, global/scache.h,
	qmgr/qmgr_entry.c, qmgr/qmgr_peer.c, smtp/smtp_rcpt.c,
	smtpd/smtpd_peer.c, tls/tls_mgr.c, util/attr_scan0.c,
	util/dict_tcp.c, util/hex_code.c, util/valid_hostname.c.

	Cleanup: typos. Files: proto/socketmap_table, proto/mysql_table,
	global/dict_mysql.c, proto/lmdb_table, smtpstone/smtp-sink.c,
	posttls-finger/posttls-finger.c.

	Bugfix: restart the Postfix SMTP server SASL client after
	XCLIENT may have changed the client IP address. Matthew
	Via. File: smtpd/smtpd.c.

20150129

	More whitespace in source-code comment regressions. Viktor
	(mostly) and Wietse.  smtpd/smtpd_proxy.c, util/format_tv.c,
	util/line_wrap.c, util/slmdb.c, qmgr/qmgr_peer.c,
	smtp/smtp_rcpt.c, smtpd/smtpd_peer.c, tls/tls_mgr.c,
	trivial-rewrite/trivial-rewrite.c, util/attr_scan0.c,
	util/dict_tcp.c, util/hex_code.c, util/valid_hostname.c,
	discard/discard.c, error/error.c, global/dict_proxy.c,
	global/mail_conf_int.c, global/match_parent_style.c,
	global/scache.c, qmgr/qmgr_entry.c, global/dict_ldap.c,
	global/dict_mysql.c, posttls-finger/posttls-finger.c,
	smtp/smtp.c, tls/tls_certkey.c.

	Cleanup: avoid hidden buffer allocation in casefold().
	Files: local/forward.c, local/recipient.c, virtual/recipient.c.

	Cleanup: HTML validator errors. Files: proto/postconf.proto,
	proto/TLS_README.html, proto/MILTER_README.html.

	Great rename from 2.12 to 3.0. Lots of files, 99% mechanical.

	Cleanup: HTML entities in *roff manpage source. File:
	mantools/fixman, proto/postconf.proto, smtpd/smtpd.c,
	trivial-rewrite/trivial-rewrite.c.

20150201

	Usability: in error messages, print the CAfile and CApath
	value in double quotes, to clue in people who specify quoted
	pathnames in main.cf. Viktor Dukhovni. Files: tls/tls_certkey.c
	and testing code in posttls-finger/posttls-finger.c.

20150202

	Cleanup: make posttls-finger -k/-K documentation consistent
	with behavior. File: posttls-finger/posttls-finger.c.

20150203

	Cleanup: API minimization, by making some functions static.
	Files: util/dict.h, util/dict_utf8.c.

20150205

	Preliminary feature: support for building position-independent
	executables (PIE), tested on Fedora Core 20, Ubuntu 14.04,
	FreeBSD 9 and 10, and NetBSD 6. See INSTALL section 4.3 for
	details and limitations. Files: makedefs, proto/INSTALL.html,
	RELEASE_NOTES-3.0.

20150208

	Cleanup: after many years, the access(5) map BCC action is
	part of the stable release. Files: smtpd/smtpd_check.c,
	proto/acces.

20150210

	Cleanup: socketmap documentation. File: proto/socketmap_table.

20150211

	Cleanup: strncasecmp_utf8() streamlining. Files: util/stringops.h,
	util/allascii.c, util/strcasecmp_utf8.c.

20150212

	Cleanup: in code after reading main.cf, removed bogus guard
	before re-evaluating the mail_task() syslog prefix.  File:
	postlog/postlog.c.

20150214

	Bugfix (introduced: Postfix 3.0): missing #ifdef USE_TLS
	inside #ifdef USE_SASL_AUTH broke the build. Viktor Dukhovni.
	File: smtpd/smtpd.c.

	Cleanup: missing errno logging in bounce daemon clients.
	This made troubleshooting significantly more difficult.
	File: global/mail_command_client.c.

20150216

	Cleanup: documented that mail_connect() produces no errno
	logging.  The functions that call it should log the error
	(and the majority does). File: global/mail_connect.c.

	Cleanup: added errno logging after mail_connect() failure.
	Files: global/post_mail.c, local/forward.c.

	Cleanup: in code after reading main.cf, removed bogus guard
	before re-evaluating the mail_task() syslog prefix. Files:
	postalias/postalias.c, postdrop/postdrop.c, postmap/postmap.c,
	postqueue/postqueue.c, postsuper/postsuper.c, sendmail/sendmail.c.

20150218

	Documentation: header/body_checks additional text about whether
	an action stops further inspection of the input stream.  File:
	proto/header_checks.

	Robustness: reject installation pathnames with whitespace.
	File: postfix-install.

20150217

	Cleanup: missing <string.h> include. File: util/allascii.c.

20150221

	Bugfix (introduced: Postfix 3.0): don't append '.' to the
	DNS resource record value, when converting TXT records to
	the string form that is used used by xxx_dns_reply_filter.
	File: dns/dns_strrecord.c.

20150313

	Documentation: incorrect Postfix version number for
	postscreen_dnsbl_timeout. Quanah Gibson-Mount. File:
	postscreen/postscreen.c.

20150320

	Cleanup: better sorting order for the default tls_*_cipherlist
	settings. OpenSSL does not order "ALL" quite right: some
	MEDIUM ciphers (SEED and IDEA) sneak up above some 128-bit
	HIGH ciphers.  Also previously, when we prefer "aNULL" we
	moved MEDIUM with aNULL above same bit-length HIGH but not
	aNULL.  Viktor Dukhovni.  File: global/mail_params.h.

20150324

	Bugfix (introduced: Postfix 2.6): sender_dependent_relayhost_maps
	ignored the relayhost setting in the case of a DUNNO lookup
	result.  It would use the recipient domain instead.  Viktor
	Dukhovni. Wietse took the pieces of code that enforce the
	precedence of a sender-dependent relayhost, the global
	relayhost, and the recipient domain, and put that code
	together in once place so that it is easier to maintain.
	File: trivial-rewrite/resolve.c.

20150326

	Feature: lmtp_fallback_relay, limited to TCP destinations
	only.  Viktor Dukhovni. Wietse updated the postlink, smtp.c,
	and smtp-only files, and added a warning when lmtp_fallback_relay
	is specified for a non-TCP destination. Files: mantools/postlink,
	smtp/smtp.c, smtp/smtp-only, smtp/smtp_connect.c,
	smtp/smtp_params.c, global/mail_params.h, proto/postconf.proto.

20150328

	Bugfix (introduced: Postfix 1.1.0): post-install expanded
	macros in parameter values when trying to detect parameter
	overrides, causing unnecessary main.cf updates during Postfix
	start-up. Julian Reich, Viktor Dukhovni, and Wietse.  File:
	conf/post-install.

20150330

	Bitrot: prepare for future changes in OpenSSL API. Viktor
	Dukhovni. File: tls_dane.c.

	Safety: instead of bouncing mail, report a soft error when
	SASL infrastucture breaks.  Viktor Dukhovni, Emmanuel Fuste.
	Files: smtpd/smtpd_sasl_glue.c, xsasl/xsasl.h,
	xsasl/xsasl_cyrus_server.c, xsasl/xsasl_dovecot_server.c.

20150401

	Documentation: update the mydestination default value in
	the stock main.cf file.  File: conf/main.cf.

20150404

	Documentation: add "postconf -m" output to problem reports. File:
	proto/DEBUG_README.html.

20150418

	Portability: use the icu-config utility to locate the ICU
	include and library files. With this, Postfix builds out
	of the box on MacOS X. File: makedefs.

20150421

	Bugfix (introduced: 19970309): reset errno before calling
	readdir(), in order to distinguish between end-of-directory and
	an error condition. File: scandir.c.

20150426

	Cleanup: when transmitting an attribute-value sequence
	between Postfix processes, a hash table may now appear at
	any position instead of only at the end.  Files:
	util/attr_scan{0,64,plain}.c, util/attr_print{0,64,plain}.c,
	util/attr_scan{0,64,plain}.ref.

	Feature: milter_macro_defaults, an optional list of macro
	name=value pairs that specify default values for Milter
	macros.  When a macro is to be sent to a Milter application,
	Postfix will send its default value when no value is available
	from the mail delivery context. For example, with
	"milter_macro_defaults = auth_type=TLS", Postfix will send
	an auth_type of "TLS" unless a remote client authenticates
	with SASL. Files: mantools/postlink, proto/MILTER_README.html,
	proto/postconf.proto, cleanup/cleanup.c, cleanup/cleanup_init.c,
	cleanup/cleanup_milter.c, global/mail_params.h, milter/milter.c,
	milter/milter.h, smtpd/smtpd.c, smtpd/smtpd_milter.c.

20150501

	Support for Linux 4.*, and some simplification for future
	makedefs files. Files: makedefs, util/sys_defs.h.

20150502

	Cleanup: updated the examples in MILTER_README.  File:
	proto/MILTER_README.html

20150529

	Support for DNS reply TTL values in dnsblog and postscreen.
	Files: dnsblog/dnsblog.c, postscreen/postscreen_early.c,
	postscreen/postscreen_dnsbl.c.

20150607

	Support for DNS reply TTL values for "not found" responses
	(negative reply caching).  The postscreen daemon needs this to
	accurately whitelist an SMTP client that is not found on any
	DNSBL. Files: dns/dns_lookup.c, dns/dns_strrecord.c, dns/dns.h,
	dns/test_dns_lookup.c.

20150615

	Two new parameters to limit how long a DNSBL or DNSWL lookup
	result remains valid: postscreen_dnsbl_max_ttl is an upper
	limit for the TTL from a DNS query, and postscreen_dnsbl_min_ttl
	is a lower limit. The old postscreen_dnsbl_ttl provides a
	backwards-compatible default for postscreen_dnsbl_max_ttl.
	Files: global/mail_params.h, postscreen/postscreen.c,
	postscreen/postscreen_early.c, mantools/postlink,
	proto/postconf.proto.

20150616

	Refinement: the postscreen daemon now computes two combined
	DNS reply TTLs: one combined TTL for replies that the client
	should be blocked, and one combined TTL for replies that the
	client should be allowed. This is more conservative than
	simply combining all reply TTLs into one number.  File:
	postscreen/postscreen_dnsbl.c.

20150621

	Feature: default_transport_rate_delay (and the transport-specific
	*transport*_transport_rate_delay) to enforce a destination-
	independent rate limit on deliveries.  Files: mantools/postlink,
	proto/postconf.proto, *qmgr/qmgr.h, *qmgr/qmgr_transport.c,
	*qmgr/qmgr_deliver.c, *qmgr/qmgr.c.

20150707

	Workaround: some DNS servers reply with NXDOMAIN for type
	NS queries with names that actually have an A record. This
	broke check_mumble_ns_access.  File: smtpd/smtpd_check.c.

20150711

	Workaround: conditional time default value can result in
	multiple time unit suffixes. Files: global/conv_time.c
	global/mail_conf_time.c.

20150712

	Cleanup: configurable workaround (dns_ncache_ttl_fix_enable)
	in case some future libc change breaks a promise made by
	current resolver(3) documentation. Files: global/mail_params.[hc].

	Cleanup: removed unused libdns dependencies. No-one remembers
	why they were introduced. Files: postscreen/Makefile.in,
	qmqpd/Makefile.in, smtpd/Makefile.in, tlsmgr/Makefile.in.

	Cleanup: code indentation. Viktor Dukhovni. File:
	smtp/smtp_addr.c.

	Workaround: With Solaris10, write_wait() hangs in poll()
	until timeout, when invoked after peekfd() has received an
	ECONNRESET error indication. This happens when a client
	sends QUIT and closes the connection immediately. File:
	util/peekfd.c.

20150715

	Security: updated default Diffie-Hellman export (512 bit)
	primes and non-export (from 1024 to 2048 bit) primes, and
	updated text on non-export DH primes. Viktor Dukhovni.
	Files: tls/tls_dh.c, proto/FORWARD_SECRECY_README.html.

20150718

	Security: opportunistic TLS by default uses "medium" or
	stronger ciphers instead of "export" or stronger. See the
	RELEASE_NOTES file for how to get the old settings back.
	Files: global/mail_params.h, proto/TLS_README.html,
	proto/postconf.proto, and files derived from those.

20150719

	Security: Postfix TLS support by default no longer uses
	SSLv2 or SSLv3.  See the RELEASE_NOTES file for how to get
	the old settings back. Files: global/mail_params.h,
	proto/postconf.proto, and files derived from those.

20150722

	Cleanup: the COMPATIBILITY_README* files were not installed.
	File: conf/postfix-files.

20150726

	Cleanup: some lost edits for the SASL_README file. File:
	proto/SASL_README.html.

20150816

	Workaround: updated the 20150707 fix for DNS servers that
	reply with NXDOMAIN for type NS queries instead of (NOERROR,
	zero answers).  File: smtpd/smtpd_check.c.

20150829

	Documentation: TLS session tickets are preferred over the
	local server-side smtpd_tls_session_cache_database storage.
	TLS session tickets are supported as of OpenSSL 0.9.8h (May
	2008).  Files: mantools/postlink, proto/TLS_README.html,
	proto/postconf.proto.

20150831

	Cleanup: obsolete comments in Makefile.init.

20150903

	Workaround: disable DNSSEC support for AIX 7x and earlier.
	The AIX 6/7 resolver(5) API defines RES_USE_DNSSEC without
	defining the "ad" bit.  Viktor Dukhovni.  Files: makedefs,
	proto/INSTALL.html, dns/dns.h.

20150912

	Future-proofing and code cleanup: exploit GCC and Clang
	"warn_unused_result" feature to flag missing error checks.
	Files: util/sys_defs.h, util/attr.h, util/edit_file.h,
	util/listen.h, util/lstat_as.h, util/mac_expand.h,
	util/mac_parse.h, util/myaddrinfo.h, util/myflock.h,
	util/sane_fsops.h, util/sane_socketpair.h, util/stat_as.h,
	util/base32_code.h, util/base64_code.h, util/hex_code.h,
	util/timed_wait.h, util/vstream.h, src/util/vstring_vstream.h.

	Cleanup: incomplete error check. Found with WARN_UNUSED_RESULT
	check. File: util/recv_pass_attr.c.

	Future-proofing: added type mis-match detection for
	ATTR_TYPE_FUNC function-pointer arguments. File: util/attr.h.

	Cleanup: don't ignore seek-to-end-of-file errors.  File:
	global/record.c.

	Cleanup: use vstream_fpurge() to purge VSTREAM buffers,
	instead of calling vstream_fseek() and ignoring ESPIPE
	errors.  File: smtpstone/qmqp-sink.c.

20150913

	Feature: SMTPD policy service "policy_context" attribute
	and smtpd_policy_service_policy_context main.cf parameter.
	Originally, to share the same SMTPD policy service endpoint
	among multiple check_policy_service clients. Markus Benning.
	Files: mantools/postlink, proto/SMTPD_POLICY_README.html,
	proto/postconf.proto, global/mail_params.h, global/mail_proto.h,
	smtpd/smtpd.c, smtpd/smtpd_check.c.

20150923

	Bugfix (introduced: 20120531-617): the Postfix SMTP server
	used a larger-than-1 VSTREAM buffer to read the HAProxy
	connection hand-off information. This broke TLS wrappermode,
	as the TLS helo packet would end up in the plaintext VSTREAM
	buffer. Reported by Lukas Erlacher.  File: smtpd/smtpd_haproxy.c.

20150924

	Cleanup (introduced: 20060510, exposed 20150912): eliminated
	a harmless warning message "seek error after reading END
	record: Illegal seek" from the cleanup server after a
	check_sender_access DISCARD action.  File: cleanup/cleanup.c.

	Bugfix (introduced: 20090216-24): incorrect postmulti error
	message. Reported by Patrik Koetter. Fix by Viktor Dukhovni.
	File: postmulti/postmulti.c.

	Workaround: don't create a new instance when the template
	main.cf and master.cf files are missing, as happens on
	Debian-like systems. Viktor Dukhovni. File: conf/postmulti-script.

20150930

	Bugfix (introduced: 20040124): Milter client panic while
	adding a header, because the PREPEND action used the same
	output function for header_checks and body_checks.  Viktor
	Dukhovni and Wietse. File: cleanup/cleanup_message.c.

	Bugfix (introduced: 20031128): xtext_unquote() did not
	propagate error reports from xtext_unquote_append(), causing
	the decoder to return partial output, instead of rejecting
	malformed input. Fix by Krzysztof Wojta.  File: global/xtext.c.

20151003

	Bugfix (copied from xtext): uxtext_unquote() did not propagate
	error reports from uxtext_unquote_append(), causing the
	decoder to return partial output, instead of rejecting
	malformed input.  Found by searching the code for similar
	error patterns as with xtext_unquote().  File: global/uxtext.c.

	Cleanup: added missing "negative" unit tests. Files:
	global/xtext.c, global/uxtext.c.

20151004

	Future proofing: use a real VSTRING in the 20150930 header
	PREPEND fix. File: cleanup/cleanup_message.c.

	Future proofing: make vstring_import() consistent with
	vstring_alloc(). The alternative would be to remove the
	function as it is unused and exists only for symmetry with
	vstring_export(). File: usr/vstring.c.

20151010

	Cleanup: the 20150903 workaround for AIX DNSSEC used the
	wrong name in #ifdef. File: dns/dns.h.

20151011

	Cleanup: in the PCRE client, turn fatal lookup errors into
	warnings, and skip the failing pattern as in dict_regexp.c.
	Also, fixed the error text when running into the matcher's
	backtracking limit. File: util/dict_pcre.c.

20151017

	Feature: smtpd_client_auth_rate_limit enforces a rate
	limit on the number of AUTH commands per client IP address.
	mantools/postlink, proto/postconf.proto, anvil/anvil.c,
	global/anvil_clnt.c, global/anvil_clnt.h, global/mail_params.h,
	smtpd/smtpd.c.

20151018

	Added RFC 7672 (SMTP security via opportunistic DANE TLS)
	and RFC 7505 ("Null MX" No Service Resource Record) to the
	lists of supported RFCs in manpages. Viktor Dukhovni. Files:
	smtp/smtp.c, smtpd/smtpd.c.

20151031

	Bitrot: OpenSSL API cleanups. Viktor Dukhovni. Files:
	.indent.pro, tls/tls.h, tls/tls_dane.c, tls/tls_fprint.c,
	tls/tls_misc.c, tls/tls_server.c, tls/tls_verify.c.

20151124

	Bugfix (introduced: Postfix 3.0): don't throttle a destination
	after opportunistic TLS failure. Viktor Dukhovni and Wietse.
	Files: smtp/smtp_proto.c, smtp/smtp.h, smtp/smtp_trouble.c.

20151128

	Feature: JSON-formatted queue listing with "postqueue -j".
	Output is a stream of JSON objects, one per queue file.  To
	simplify stream-mode parsing, each JSON object is followed by
	a newline character. Files: postqueue/postqueue.c,
	postqueue/postqueue.h, postqueue/showq_compat.c,
	postqueue/showq_json.c, showq/showq.c.

20151216

	Bugfix (introduced: 20151128) bogus queue file parsing error.
	File: showq/showq.c.

20151226

	Cleanup: postlog(1) now pauses for 1s after reporting a
	fatal or panic error. This makes behavior of scripts such
	as postfix-script consistent with built-in error messages.
	File: postlog/postlog.c.

20151227

	Robustness: don't allow for whitespace in command-line
	arguments.  Files; postfix-install, conf/post-install.

	Robustness: added a comment to discourage people who keep
	adding code that calls gethostbyname() to determine the
	default myhostname setting.  This is a mistake: all Postfix
	programs will hang when the DNS is unavailable.  File:
	global/mail_params.c.

	Safety: a limit on the number of address verification probes
	in the active queue (address_verify_pending_request_limit),
	by default 1/4 of the active queue maximum size. The queue
	manager tempfails probe messages that exceed the limit.
	Files: mantools/postlink, proto/postconf.proto, cleanup/cleanup.h,
	cleanup/cleanup_envelope.c, cleanup/cleanup_out_recipient.c,
	cleanup/cleanup_state.c, global/mail_params.h, global/post_mail.c,
	global/post_mail.h, global/verify.c, oqmgr/qmgr.c, oqmgr/qmgr.h,
	oqmgr/qmgr_message.c, qmgr/qmgr.c, qmgr/qmgr.h,
	qmgr/qmgr_message.c, verify/verify.c.

20160102

	Workaround: MacOS/X 10.11.x /bin/sh unsets DYLD_LIBRARY_PATH,
	which breaks the build and install.  Viktor Dukhovni and
	Wietse.  Files: makedefs, postfix-install, Makefile.in.

	Bitrot: OpenSSL 1.1.0-dev drops support for EXPORT ciphers
	and ephemeral RSA.  Viktor Dukhovni. Files: tls/tls_client.c,
	tls/tls_rsa.c, tls/tls_server.c.

	Bugfix: memory leak in tls_set_eecdh_curve(). Viktor Dukhovni.
	File: tls/tls_dh.c.

	Bugfix (introduced 20150326): when lmtp_fallback_relay
	support was added, the code that generates lmtp_mumble
	parameters from smtp_mumble parameters wasn't updated. File:
	smtp/smtp-only.

	Bugfix (introduced 20151017): the smtpd_client_auth_rate_limit
	implementation was not guarded with #ifdef USE_SASL_AUTH.
	File: smtpd/smtpd.c.

20160103

	Feature: enable DANE policies when an MX host has a secure
	TLSA DNS record, even if the MX DNS record was obtained
	with insecure lookups. The existence of a secure TLSA record
	implies that the host wants to talk TLS and not plaintext.
	This behavior is controlled with smtp_tls_dane_insecure_mx_policy
	(default: "dane", other settings: "encrypt" and "may"; the
	latter is backwards-compatible with earlier Postfix releases).
	Viktor Dukhovni.  Files: mantools/postlink, proto/postconf.proto,
	src/global/mail_params.h, src/posttls-finger/posttls-finger.c,
	src/smtp/smtp-only, src/smtp/smtp.c, src/smtp/smtp.h,
	src/smtp/smtp_addr.c, src/smtp/smtp_params.c,
	src/smtp/smtp_tls_policy.c, src/tls/tls.h, src/tls/tls_client.c.

20160104

	Cleanup: distinct TLS levels for "full" DANE and for DANE
	with insecure MX records.  Viktor Dukhovni. Files:
	posttls-finger/posttls-finger.c, smtp/smtp_tls_policy.c,
	tls/tls.h, tls/tls_client.c, tls/tls_level.c.

20160108

	Cleanup: smtp_reply_footer() now restores state in case of
	input error; unit tests that cover most if not all error
	and non-error cases.  Files: global/smtp_reply_footer.c,
	global/smtp_reply_footer.ref.

20160110

	Bitrot: const-ification for OpenSSL 1.1.0. Viktor Dukhovni.
	File: tls/tls_misc.c.

20160116

	"postconf -H" support (show names without the =value).
	Initial use case: mass reversal of TLS-related main.cf
	parameters (postconf -nH | grep _tls_ | xargs postconf -X).
	This flag also works with "postconf -F" and "postconf -P".
	Added missing documentation that -h works with "postconf
	-F" and "postconf -P".  Files: postconf.c, postconf.h,
	postconf_master.c, postconf_main.c.

	Robustness: force html2text to produce ASCII output.  File:
	mantools/html2readme.

	Feature: "postfix tls" commands to enable opportunistic TLS
	in the Postfix SMTP client or server, or generate or replace
	Postfix SMTP server TLS private keys and server certificates.
	Viktor Dukhovni, Wietse. Files: conf/postfix-files,
	conf/postfix-script, conf/postfix-tls-script, makedefs,
	proto/INSTALL.html, proto/postconf.proto, global/mail_params.h,
	postfix/postfix.c, tls/tls_misc.c.

	Portability: added a tls_random_source default setting for
	MacOS X. Viktor Dukhovni. File: util/sys_defs.h.

20150118

	Bitrot: OpenSSL 1.1.0-dev (aka the "master" branch) has new
	security levels ranging from 0 to 5. Level "0" is backwards
	compatible, and other levels are increasingly restrictive.
	Viktor Dukhovni. Files: tls/tls_server.c, tls/tls_client.c.

20161205

	Portability: Postfix TLS support uses /dev/urandom if
	available and no system-specific setting exists in sys_defs.h.
	Files: makedefs, util/sys_defs.h.

20160208

	Cleanup: building the INSTALL file had failed, added
	hyperlinks for "postfix tls". Files: mantools/postlink.

20160210

	Feature: all-default-client and all-default-server subcommands.
	Eray Aslan. File: conf/postfix-tls-script.

	Bugfix: the postqueue(1) JSON formatter wrote a spurious
	comma after the delay reason. Reported by Christian Roessner.
	File: postqueue/showq_json.c.

20160212

	Cleanup: Bold/Italic cleanup in manpages.

20160213

	Added Google credits to external manpages.

20160214

	More manpage cleanups. Viktor, Wietse.

20160215

	Cleanup: "match_list_match: permit_mynetworks: no match" after
	a SUCCESSFUL permit_mynetworks match of a client IP address was
	complicating troubleshooting.  The fix is to log additional
	context to clarify that this "no match" condition is for
	smtpd_log_access_permit_actions. File: smtpd/smtpd_check.c.

20160228

	Documentation: typos in postfix-tls-script(1) manpage.

20160327

	Documentation: line wrapping in postconf(1) manpage.

20160310

	Bugfix (introduced: Postfix 2.6): the Milter SMFIR_CHGFROM
	(replace sender) request lost the sender_bcc_maps address.
	Fixed by moving some record keeping to the sender output
	function.  Files: cleanup/cleanup_envelope.c,
	cleanup/cleanup_addr.c, cleanup/cleanup_milter.c,
	cleanup/cleanup.h, regression tests.

20160410

	Bugfix (introduced: Postfix 2.6): the "bad filetype"
	header_checks pattern falsely rejected Content-Mumble headers
	with ``name="example"; x-apple-part-url="example.com"''.
	Fixed by respecting the ";" separator between content
	attribute values.  Reported by Cedric Knight.  File:
	proto/header_checks.

20160515

	Portability: OpenBSD 6.0. Files: makedefs, util/sys_defs.h.

20160619

	Bugfix (introduced: 20091121): with the introduction of
	sender_dependent_default_transport_maps, the SMTP daemon
	was not updated. This resulted in false rejects with
	sender-dependent "error" transports. Based on a fix by
	Russell Yanofsky.  Files: global/resolve_clnt.c,
	global/resolve_clnt.h, smtpd/smtpd_check.c, smtpd/smtpd_check.h,
	smtpd/smtpd_milter.c, smtpd/smtpd_resolve.c, smtpd/smtpd_resolve.h.

20160717

	Bugfix (introduced: Postfix 1.1): the virtual(8) delivery
	agent discarded the error result from vstream_fseek().
	File: virtual/mailbox.c.

20160730

	Bugfix (introduced: 20090614): with concurrent connections
	from the same client IP address, and after-220 tests enabled,
	postscreen could overwrite the cached "all tests completed"
	result of one connection that completed the after-220 tests,
	with the "some tests not completed" result of a concurrent
	connection where the client hung up later, without completing
	the after-220 tests.

20160819

	Bugfix (introduced: Postfix 3.0): the makedefs script ignored
	readme_directory=pathname overrides. Fix by Todd C. Olson.
	File: makedefs.

20160821

	Bugfix (introduced: Postfix 3.0): the tls_session_ticket_cipher
	documentation says aes-256-cbc, but the implementation was
	using aes-128-cbc (note that Postfix session ticket keys
	are rotated after 1/2 hour, to limit the impact of attacks
	on session ticket keys).

20160828

	Bitrot: fixes for incompatible OpenSSL 1.1.0 API changes.
	Viktor Dukhovni.  Files: posttls-finger/posttls-finger.c,
	tls/tls.h, tls/tls_dane.c, tls/tls_verify.c, tls/tls_server.c,
	tls/tls_client.c.

20160911

	Bugfix (introduced: Postfix 3.0): the SMTP daemon did not
	reset a previous session's command counts before rejecting
	a client that exceeds request or concurrency rates. File:
	smtpd/smtpd.c.

20160917

	Bugfix (introduced: Postfix 3.0): the unionmap did not
	propagate table lookup errors.  Based on patch by Roel van
	Meer.  Files: util/dict_union.c, util/dict_union_test.*.

20160925

	Workaround (problem introduced: Postfix 2.11): to avoid
	false "not found" errors with MySQL map queries that contain
	UTF8-encoded text, specify "option_group = client" in Postfix
	MySQL configuration files.  This will be the default setting
	with Postfix 3.2 and later.

20161105

	Bugfix (introduced: Postfix 1.1): the postsuper command did
	not count a successful rename operation after error recovery.
	Problem reported by Markus Schönhaber. File: postsuper/postsuper.c.

20161204

	Bugfix (introduced: Postfix 3.1): cut-and-paste error in
	the "postfix tls deploy-server-cert" command, causing the
	wrong certfile and keyfile to be used. Viktor Dukhovni.
	File: conf/postfix-tls-script.

	Robustness: create a new keyfile when "postfix tls
	new-server-cert" is invoked and main.cf specifies a
	non-existent keyfile. Viktor Dukhovni.  File:
	conf/postfix-tls-script.

20161206

	Bugfix (introduced: Postfix 3.0): when receiving a MAIL
	FROM...SMTPUTF8 command while smtpd_delay_reject=no, enable
	SMTPUTF8 support before processing smtpd_sender_restrictions.
	Problem reported by Viktor Dukhovni. File: smtpd/smtpd.c.

20161220

	Bugfix (introduced: Postfix 2.1.0): the Postfix SMTP daemon
	did not query sender_canonical_maps when rejecting unknown
	senders with "smtpd_reject_unlisted_recipient = yes" or
	with reject_unlisted_sender.  Stephen R. van den Berg (Mr.
	procmail).  Files: smtpd/smtpd.c, smtpd/smtpd_check.c.