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
|
2004/09/12 == Released 0.8.19 ==
2004/09/01
- Finished updating the code by adjusting to postfix-2.2-20040829
and started using it at my own site.
2004/08/01
- Started adjusting the patch to postfix-2.2-20040729.
2004/06/21 == Re-released 0.8.18 ==
2004/06/21
- Postfix 2.1.3 has been released. Shortlived 2.1.2 did bring an
incompatibel change (patch conflict) which has been resolved.
- Fixed some typos in the tlsmgr.8 manual page (Chris Pepper
<pepper@reppep.com>).
2004/04/27 == Re-released 0.8.18 ==
2004/04/27
- Postfix 2.1.0 has been released. Some minor patch conflicts with respect
to the actual code and build environment.
- Due to the restructuring of the documentation the old sample-*.cf
files are no longer available.
Took documentation already adopted by Wietse for the 2.1-RC2-IPV6+TLS
snapshot.
2004/02/09 == Re-released 0.8.18 ==
2004/02/09
- Postfix 2.0.18-20040205 is available, patchkit applies without
problems.
2004/02/02 == Release 0.8.18 ==
2004/02/02
- Incorporated Luca Berra's information into the patchkit and ran tests
with my own versions.
2004/02/01
- Reports about server side SMTP failure with Carsten's patch can be
found on postfix-users.
'Luca Berra' <bluca@comedia.it> informs, that he discoverd another
failure of the GNU patch program with a misplaced patch hunk in
smtpd.c
2004/01/30
- Edited in additional #ifdef USE_TLS conditionals. If the TLS patch
is applied but not activated (USE_TLS is not defined), a warning is
printed as soon as TLS shall be used.
2004/01/23
- Postfix 2.0.18-20040122 is now available. Several patch conflicts occur.
Even more: one hunk of the patch (which is provided in unified diff)
fails in smtp.c and causes a segmentation violation.
Carsten Hoeger <choeger@suse.de> provides an adapted patch kit.
2004/01/02 == Released 0.8.17 ==
2004/01/02
- Postfix-2.0.16-20031231 is released. No patch conflicts.
- Changed autoresponder for TLS tests to "The Postfix Book" echo
responder (provided by Patrick Koetter and Ralf Hildebrandt).
2003/12/30
- Postfix-2.0.16-20031226 is released. No patch conflicts.
2003/12/26
- Postfix-2.0.16-20031224 is released. Resolved patch conflicts.
2003/12/16
- Postfix-2.0.16-20031215 is released. Resolved patch conflicts.
- src/global/pfixtls.c: changed occurance of "ssize_t" to "size_t"
as some quite old operating systems do no have ssize_t
(Reported by Klaus Jaehne <kj@uue.org> for SunOS 4.1.4).
- src/global/pfixtls.c: both the client and the server engine did
print out messages even when tls_loglevel was set to 0 (reported
by Florian Effenberger <florian@effenberger.org>): evaluate loglevel
before printing any message.
2003/11/17 == Re-released 0.8.16 ==
2003/11/17
- Postfix 2.0.16-20031113 is released. Some minor patch conflicts.
2003/10/27 == Re-released 0.8.16 ==
2003/10/24
- Postfix 2.0.16-20031022 is released. Some minor patch conflicts.
2003/09/23 == Re-released 0.8.16 ==
2003/09/23
- Postfix 2.0.16 and 2.0.16-20030921 are now available.
Resolved some minor patch conflicts.
2003/09/10 == Released 0.8.16 ==
2003/09/09
- Postfix 2.0.15 has been released including another workaround for
select() on Solaris problems. It contains additional code to catch
EAGAIN on read() in the timed_read() routine (and the respective
precautions in timed_write()
- Note: this fix is not yet part of Postfix 2.0.14-20030812.
- Added corresponding code to pfixtls_timed_read()/_write().
- Changed SSL wrappermode behaviour: use smtpd_sasl_tls_security_options
instead of smtpd_sasl_security_options as is to be expected because TLS
is active. (Bug reported by Bob Snyder <rsnyder@toontown.erial.nj.us>.)
2003/08/29 == Re-released 0.8.15 ==
2003/08/29
- Adapted patchkit to Postfix 2.0.14. No patch conflicts.
2003/07/17 == Re-released 0.8.15a (-20030715 only) ==
2003/07/16
- Experimental version Postfix 2.0.14-20030715 is released, including
the SASL changes. Resolved some minor patch conflicts.
2003/07/11 == Released 0.8.15a (-20030706 only) ==
2003/07/11
- Received error report about about TLS failing with the new smtpd_proxy
feature including instructions on how to reproduce.
(Did receive an earlier report on 2003/07/09, that however indicated other
setup problems, so that the actual problem was not visible.)
- Analysis: when introducing the new smtpd_proxy feature, different mechnisms
where introduced to either write to the cleanup daemon (as before) or to
the smtpd_proxy connection. Functions and streams are now expressed in
out_fprintf() function pointers etc. being assigned accordingly.
When updating to 0.8.15/2.0.13-20030706 this change was missed and the
routine adding the TLS information to the Received: headers did use the
older rec_fprintf() functions etc. This did work fine for the traditional
connection to the cleanup service, but naturally failed for smtpd_proxy
(with a segmentation violation).
Solution: access out_stream via the according pointers.
- The 2.0.13 stable version is not affected.
2003/07/08 == Released 0.8.15 ==
2003/07/07
- Postfix 2.0.13 and 2.0.13-20030706 are released.
Patchkit for 2.0.13 applies cleanly.
Patchkit for 2.0.13-20030607 requires several adaptations (patch conflicts,
no functional changes).
- Slightly modified SASL interface code (smpt[d]_sasl_glue layer) to
allow setting the security policy during session setup instead of
process start. This allows to actually choose SASL mechanisms available
depending on the availability of TLS encryption and authentication.
New parameters: smtpd_sasl_tls_security_options,
smtp_sasl_tls_security_options, smtp_sasl_tls_verified_security_options
- Submitted change to SASL interface to Wietse, who accepted the change
as part of the Snapshot line.
2003/06/19 == Released 0.8.14 ==
2003/06/19
- Add support for SubjectAlternativeName "dNSName" entries in certificate
checking (applies for client mode only).
If the client connects to the server, it does check the list of dNSName
entries against the expected hostname (therefore allowing the server to
have multiple identities). As described in RFC2818 (HTTP over TLS),
CommonName (CN) entries are only checked, if no dNSName entries are found
at all.
Initial patch proposed by Deti Fliegl <fliegl@cs.tum.edu>, reworked to
follow the RFC2818 rules and some cleanup.
2003/06/18
- Checked out similar settings, found another missing entry:
var_smtp_scert_vd was missing src/smtp/smtp.c.
- Renamed HAS_SSL to USE_TLS for compilation (have to use -DUSE_SSL
in the future). Currently pfixtls.h will take care of setting
USE_TLS, when HAS_SSL has been defined.
2003/06/17
- Received bug reports about Postfix/TLS failing (connection closing)
after having finished the "STARTTLS"/"220 Ready to start TLS"
dialogue. (Actually the first report came in via private mail on
2003/06/12, but the information was too diffuse to track down).
Tracking down became possible after it became clear, that only Solaris
systems are affected.
Analysis:
* As of 2003/06/09 postfix uses non-blocking socket I/O for the SMTP
connection on Solaris platforms. This requires using "select()" style
waiting before read() or write() access (which are not prepared EAGAIN
or EWOULDBLOCK in the Postfix case and therefore indicate error).
* As the var_smtpd_starttls_tmout variable is not correctly initialized
(value is 0), the select() style function is not called, therefore
read() fails with EAGAIN and the connection is closed due to a
presumed error condition.
* The initialization of the variable should be done in the time_table[]
list during main().
The entry however was lost during the patch adaptation from 0.7.13e
to 0.7.14-snap20020107 on 2002/01/07.
Impact:
* On Solaris systems, STARTTLS fails during handshake (server only).
* On other systems, the TLS negotiation phase is not protected by the
smtpd_starttls_tmout (default 300s) value and may hang until the
watchdog kills smtpd, if the client does not continue the handshake.
Restored var_smtpd_starttls_tmout variable initialization.
2003/06/12 == Re-released 0.8.13 ==
2003/06/11
- Adapted to snapshot 2.0.12-20030611. No patch conflicts.
2003/06/11
- Adapted to snapshot 2.0.11-20030609. One minor patch conflict.
2003/05/23 == Re-released 0.8.13 ==
2003/05/23
- First release against snapshot 2.0.10-20030523.
2003/04/26 == Re-released 0.8.13 ==
2003/04/26
- Updated patchkit to apply to Postfix 2.0.9.
- Updated patchkit-name to reflect the release of OpenSSL 0.9.7b.
2003/03/06 == Re-released 0.8.13 ==
2003/03/06
- Postfix 2.0.6 has been released. No patch conflicts.
2003/03/02 == Re-released 0.8.13 ==
2003/03/02
- Postfix 2.0.4 has been released. "patch" should work with some warnings
about moved line numbers.
- OpenSSL 0.9.7a has been released. No visible changes with respect to
Postfix/TLS.
2003/01/26 == Re-released 0.8.13 ==
2003/01/26
- Postfix 2.0.3 has been released. One minor patch-conflict.
2003/01/13 == Released 0.8.13 ==
2003/01/13
- Postfix 2.0.1 has been released. Some minor patch conflicts resolved.
- Added HOWTO documents contributed by Justin Davies <justin@palmcoder.net>
to the contribution area.
- Added RFC3207 (SMTP Service Extension for Secure SMTP over Transport Layer
Security) to the documentation. RFC3207 is the successor of RFC2487.
- Updated TODO list to reflect release ideas up to the release of
Postfix/TLS 0.9.0. (Or will it finally be 1.0.0? :-)
2002/12/30
- OpenSSL 0.9.7 has been released. Postfix/TLS works best with the new
0.9.7 release.
2002/12/24 == Re-released 0.8.12 ==
2002/12/24
- Postfix 2.0.0.1 has been released. Resolved one minor patch conflict.
2002/12/20 == Re-released 0.8.12 ==
2002/12/20
- Postfix snapshot 1.1.12-20021214 has been released. Resolved minor
patch conflicts.
2002/12/15 == Re-released 0.8.12 ==
2002/12/15
- Postfix snapshot 1.1.12-20021214 has been released. Two minor patch
conflicts.
2002/12/06 == Released 0.8.12 ==
2002/12/06
- OpenSSL 0.9.6h has been released. Update documentation and filenames
to reflect this new release.
- Minor bug fix: when calling "sendmail -bs", smtpd is not run with
superuser permissions, therefore the loading of the private key fails.
STARTTLS is not used anyway, so the key is not needed anyway, but the
failure to load creates a misleading warning.
Do not initialize TLS engine at all when not started with superuser
permissions.
2002/12/03
- Postfix snapshot 1.1.12-20021203 has been released. Resolved one patch
conflict.
2002/11/01 == Re-released 0.8.11a ==
2002/11/01
- Postfix snapshot 1.1.11-20021031 has been released. No patch conflicts.
2002/10/30 == Re-released 0.8.11a ==
2002/10/30
- Postfix snapshot 1.1.11-20021029 has been released. No patch conflicts.
2002/09/30 == Re-released 0.8.11a ==
2002/09/30
- Postfix snapshot 1.1.11-20020928 has been released. No patch conflices.
2002/09/24
- Postfix snapshot 1.1.11-20020923 has been released. Adapt patchkit.
2002/09/19 == Re-released 0.8.11a ==
2002/09/18
- Postfix snapshot 1.1.11-20020917 has been released. Adapt patchkit.
2002/08/23 == Re-released 0.8.11a ==
2002/08/23
- Postfix snapshot 1.1.11-20020822 has been released. Adapt patchkit.
2002/08/20
- Postfix snapshot 1.1.11-20020819 has been released with several
enhancements and changes. Adapt patchkit (minor issues).
2002/08/12
- OpenSSL has experienced several (security critical) updates.
2002/07/26 == Re-released 0.8.11a ==
2002/07/26
- On popular demand, a new diff for the snapshot version of Postfix
is created: postfix-1.1.11-20020719.
2002/06/18 == Re-released 0.8.11a ==
2002/06/18
- On popular demand, a new diff for the snapshot versions of Postfix
is created: postfix-1.1.11-20020613.
2002/06/03 == Released 0.8.11a ==
2002/06/03
- When compiling with SSL but without SASL, compilation fails due to
the modification of state->sasl_mechanism_list that is not part of the
"state" structure when SASL is not compiled in.
This bug was introduced in version 0.8.11.
Bug reported and patch supplied by Bernd Matthes
<bernd.matthes@gemplus.com>.
2002/05/29 == Released 0.8.11 ==
2002/05/29
- Postfix 1.1.11 is released.
2002/05/25
- Fix processing of options after STARTTLS handshaking: AUTH= was not
handled, as the "=" was not recognized as for the extension list for
the case without TLS. (The TLS case was a copy of an older version
of the code not yet containing the "=" and the change in the main
code slipped through without noting the difference, hence the option
as not added to the TLS part.
Found by "Christoph Vogel" <Christoph.Vogel@Corbach.de>.
2002/05/24
- Bug reported by "Christoph Vogel" <Christoph.Vogel@Corbach.de>:
Client side AUTH does not work, if STARTTLS is used: if a server
announces AUTH and STARTTLS, AUTH is being used if TLS is disabled.
Once TLS is enabled, AUTH is still offered by the server, but the
client does not use it any longer.
Reason: when AUTH is offered, not only the SMTP_REATURE_AUTH flag
is set in state->features, but also the available mechanisms are
remembered in state->sasl_mechanism_list. As AUTH may be offered
twice by some hosts (in the correct "AUTH mech" form and the older
and deprecated "AUTH=mech" form), a check against processing the
line twice is included in smtp_sasl_helo_auth(). This check now
prevented the correct processing in the second evaluation of the
ESMTP extensions offered after the STARTTLS activation.
Solution: reset state->sasl_mechanism_list before processing the
extension list just like state->features.
2002/05/15 == Released 0.8.10 ==
2002/05/15
- Postfix 1.1.10 has been released. No changes.
2002/05/14 == Released 0.8.9 ==
2002/05/14
- Postfix 1.1.9 has been released. Patchkit requires a small adjustment
(supplied by Tuomo Soini <tis@foobar.fi>).
2002/05/10 == Released 0.8.8 ==
2002/05/10
- OpenSSL 0.9.6d has been released. Release the unchanged patchkit
with a new version number and under a new filename to indicate
that it should be built against 0.9.6d (it has the session caching
failure of 0.9.6c fixed). Update documentation accordingly.
2002/05/05
- Postfix 1.1.8 has been released, the patchkit applies cleanly.
2002/04/03 == Re-released 0.8.7 ==
2002/04/03
- Postfix 1.1.7 has been released, the patchkit applies cleanly.
Re-released the patchkit.
2002/03/29 == Released 0.8.7 ==
2002/03/29
- Postfix/TLS did not honor the per-recipient-switching-off in SMTP
client mode via tls_per_site (per-host-switching off was honored).
Patch by Will Day <wd@hpgx.net>.
2002/03/27 == Released 0.8.6 ==
2002/03/27
- Postfix 1.1.6 has been released. Adapted patchkit to resolve minor
patch conflict. (Template provided by Simon Matter
<simon.matter@ch.sauter-bc.com>)
2002/03/13 == Released 0.8.5 ==
2002/03/13
- Postfix 1.1.5 has been released. The patchkit would apply cleanly, but
obviously the "lock_fd" change that applies to dict_dbm.c (Wietse)
also has to be applied to dict_sdbm.c. Tuomo Soini <tis@foobar.fi>
kindly provided this change.
2002/02/25 == Released 0.8.4 ==
2002/02/25
- Postfix 1.1.4 became visible. One patch conflict in a Makefile
(Carsten Hoeger <choeger@suse.de>).
2002/02/21
- Dates in this CHANGES document were showing 2001 even though 2002 already
began :-). Fixed. (Marvin Solomon <solomon@conceptshopping.com>)
2002/02/07
- Bug in the documentation (setup.html): the main.cf variables for the
SMTP server process have to be named smtpd_* instead of smtp_*.
Found by Andreas Piesk <a.piesk@gmx.net>.
2002/02/03 == Released 0.8.3 ==
2002/02/03
- Patch from Andreas Piesk <a.piesk@gmx.net>: remove some compiler warnings
by using explicit type casts in hexdump print statements.
- Re-released otherwise unchanged patchkit against Postfix-1.1.3.
2002/01/30 == Released 0.8.2 ==
2002/01/30
- Re-released unchanged patchkit against Postfix-1.1.2.
2002/01/24 == Released 0.8.1 ==
2002/01/24
- Postfix-1.1.1 has been released. The patchkit needed some small adjustment.
- Both Tuomo Soini <tis@foobar.fi> and Carsten Hoeger <choeger@suse.de>
helped out with this small adjustment. As a side effect of Carsten's
complete pfixtls.diff, which I compared after applying Tuomo's adjustment,
I found that pfixtls.c contained several wrong "'" characters: on the
german keyboard there is an accent looking like the apostroph but producing
a different binary code. Obviously on Carsten's machine the code was
changed which became obvious during the comparison.
(Conclusion: I wrote the comments affected on my SuSE-Linux PC at home with
german keyboard. In my university-office I do have HP-UX workstations
with US keyboards.)
2002/01/22 == Released 0.8.0 ==
2002/01/22
- Received a comment from Wietse on the mailing list, that it is better
to resolve the "standalone" issue by using the already available
SMTPD_STAND_ALONE() macro in smtpd. Undid 0.7.16 change and made
new change in smtpd.c.
- Updated links in the References section of the documentation.
2002/01/21 == Released 0.7.16 ==
2002/01/21
- When calling "sendmail -bs" and STARTTLS is enabled, smtpd tries to
read the private key and fails due to insufficient permissions (smtpd
is run with the privileges of the user). This case is caught since
version 0.6.18 of the Postfix/TLS patchkit: STARTTLS is still being
offered but a "465 temporary failure" message is issued. Some mailers
(read this: PINE) will then refuse to continue. (And an irritating
error message indicating the failure to read the key will be logged.)
Experienced by "Lucky Green" <shamrock@cypherpunks.to> .
- Solution: Disable STARTTLS when running "sendmail -bs" by adding
"-o smtpd_use_tls=no -o smtpd_enforce_tls=no" to smtpd's arguments
upon startup. Using STARTTLS does not make sense in simulated
SMTP mode.
2002/01/18 == Released 0.7.15 ==
2002/01/18
- Postfix 1.1.0 has been released. The patchkit for the former snapshot
version applied cleanly and now becomes the patchkit for the stable
version.
2002/01/16 == Released 0.7.14a ==
2002/01/16
- Snapshot-20020115 is released. Adapted patchkit.
- Add Postfix/TLS entries into the new conf/postfix-files
(Tuomo Soini <tis@s.foobar.fi>, Carsten Hoeger <choeger@suse.de>).
2002/01/14
- OpenSSL: a user reported that session caching stopped working for him
with OpenSSL 0.9.6c. I found that this is also true for my own
Postfix/TLS installation.
Solution: server side session caching is broken in OpenSSL 0.9.6c when
using non-blocking semantics (Postfix/TLS is affected as it uses
BIO-pairs); sessions are simply not added to the cache. This bug
is not security relevant. A fix has been applied to the OpenSSL source
tree for the next release.
2002/01/08 == Released 0.7.14 ==
2002/01/07
- New snapshots released as release candidates. Adapted the patchkit
to snapshot-20020107. Moved our production servers from 20010228-pl08
to snapshot-20020107 with the adapted patchkit.
- Fix documentation: tlsmgr can be run chrooted since a long time.
2001/12/21
- OpenSSL 0.9.6c is released. Postfix/TLS is fully compatible.
2001/12/19 == Released 0.7.13e ==
2001/12/19
- Adapted patchkit to snapshot-20011217.
2001/12/12 == Released 0.7.13d ==
2001/12/12
- Adapted patchkit to snapshot-20011210. Adaption provided by
Tuomo Soini <tis@foobar.fi>.
2001/11/28 == Released 0.7.13c ==
2001/11/28
- Adapted patchkit to snapshot-20011127.
2001/11/26 == Released 0.7.13b ==
2001/11/26
- Adapted patchkit to snapshot-20011125.
2001/11/22 == Released 0.7.13a ==
2001/11/22
- Adapted patchkit to snapshot-20011121.
2001/11/15 == Released 0.7.13 ==
2001/11/15
- Adapted patchkit to postfix-20010228-pl08 and snapshot-20011115.
2001/11/06 == Re-released 0.7.12 ==
2001/11/06
- Snapshot-20011105 released. No patch conflicts, but in order to have
the pfixtls-* filename and home page entry reflect the new version,
I'll re-release 0.7.12.
2001/11/05 == Released 0.7.12 ==
2001/11/05
- Release of Postfix-20010228-pl06 and snapshot-20011104. The snapshot
version had some minor patch conflicts to be resolved.
2001/10/14 == Released 0.7.11 ==
2001/10/14
- Bug fix (client mode): when the peername is checked against the CommonName
in the certificate, the comparison does not correclty ignore the case
(the peername as returned by DNS query or set in the transport map
is not transformed to lower case). This bug was introduced in 0.7.5.
2001/10/09 == Released 0.7.10 ==
2001/10/09
- Snapshot-20011008 is released. Some minor adaptions are required to
sort out patch conflicts.
2001/09/28
- Received patch from Uwe Ohse <use@ohse.de>: There is a bug in sdbm's
handling of the .dir file, that also applies to Postfix/TLS.
The problem only appears for large databases.
- The example entries in conf/master.cf for the submission and smtps services
use "chroot=y" flags, while the Postfix default is "chroot=n". This could
lead to hardly explainable problems when users did not note this fact
during setup.
Fixed example entries to also use "chroot=n" default.
2001/09/18
- Wietse releases Postfix-20010228-pl05. The patch applies cleanly with
"patch -p1 ...", so it is not necessary to release a new patchkit.
2001/09/04 == Released 0.7.9 ==
2001/09/04
- Due to unititialized variable in smtpd_state.c, AUTH may not be offered
without TLS even though smtpd_tls_auth_only was not enabled.
(Patch from Nick Simicich <njs@scifi.squawk.com>.)
2001/08/29
- In the snapshot-20010808 version of 0.7.9, the "tlsmgr" line in the sample
conf/master.cf is missing (reported by Will Day <wd@hpgx.net>). Fixed.
2001/08/27 == Released 0.7.8 ==
2001/08/27
- Received bugreport about issuer_CN imprints consisting of long strings
of nonsense. This only appeard with certificates issued from a certain
CA (RSA Data Security Inc., Secure Server Certification Authority).
(Will Day <wd@hpgx.net>)
- The problem: the issuer data of this certificate is:
Issuer
C=US
O=RSA Data Security, Inc.
OU=Secure Server Certification Authority
It does not contain a CN (CommonName) field. OpenSSL's
X509_NAME_get_text_by_NID() function does not catch this condition
(no error flag set), but it also does not set the name in the memory
location specified.
- Solution:
1. Preset the memory for the string to '\0', so that a string of length
0 is obtained on the failure described above.
2. When no CN data is available, use the O (Organization) field
instead. The data are used for logging only (it is the issuer, not
the subject name), so this change does not affect functionality.
2001/08/22 == Released 0.7.7 ==
2001/08/22
- Found one more bug: erronously called SSL_get_ex_new_index() instead
of SSL_SESSION_get_ex_new_index() (note the _SESSION missing). This
could be responsible for the failure at the locations found during
debugging. Works fine on HP-UX (did also before), must cross check
at home...
2001/08/21
- Received report, that smtp (client) fails with signal 11 (platform:
linux redhat). Cannot reproduce any problem on HP-UX (did run 1
week in production before release). But malloc() and stack strategies
are different between platforms.
- Can reproduce the failure on my Linux PC at home :-(.
- Found one bug in new_session_cb(): on successfull external caching,
success is reported by a return value of 1. This however must be another
bug, as it has nothing to do with the locations of the failure, when
analyzing the core dumps/running under debugger.
Still getting SIGSEGV...
2001/08/20 == Released 0.7.6 ==
2001/08/20
- Following "popular demand" implemented new feature and configuration option
"smtpd_tls_auth_only": Only allow authentication using the AUTH protocol,
when the TLS encryption layer is active. Default is "no" in order to
keep compatiblity to postfix without TLS patch.
This option does not distinguish between different AUTH mechanisms.
2001/08/16 == Released 0.7.5 ==
2001/08/15
- The new session cache handling is working now at my site for quite some
time.
- Client side: modified peername matching code, such that wildcard
certificates can be used. Matching is done as in HTTP/TLS: only the
leftmost part of the hostname may be replaced by a '*'.
2001/08/09
- Further debugged the CRYPTO_set_ex_data() functionality.
- Unified "external cache write" and "external cache remove" callbacks
for client and server side. The "external cache read" functions are not
that easy to combine, as the lookup keys are quite different and do not
match the fixed interface to the callback function.
- Change shutdown behaviour according to SSL_shutdown(). When SSL_shutdown()
returns, the shutdown handshake may not be complete, if we were the first
party to send the shutdown alert. We must call SSL_shutdown() again,
to wait for the peer's alert.
2001/08/08
- Postfix snapshot 20010808 is being released.
2001/08/08
- Rewrite server side to remove externally cached sessions via callback.
- Rewrite client side to remove externally cached sessions via callback.
This turns out to be more difficult as expected, as the client side
session cache is sorted by hostnames, but the callbacks are called
with the SSL_SESSION objects. The information must be stored into the
SSL_SESSION objects by using the CRYPTO_set_ex_data() functionality,
the documentation of which, ahem, ...
- Reloading sessions stays separate, as the functionality is different.
2001/08/07
- Started reworking the session cache code.
* On the server side the retrieval from the external cache and the writing
to the cache are handled by callback functions. The removal is handled
directly.
* On the client side, all session cache operations are performed explicitly.
* The explicit handling is on the client side is bad, as it requires a
quite complicated logic to detect session reuse and the appropriate
handling.
* The explicit handling of session removal on both sides is bad, as
the OpenSSL library will remove sessions (on session failure) according
to the TLS specifications automatically, so we want to take advantage
of this feature and have the externally cached sessions removed as
required via callback.
- First step: on the client side, also use the new_session_cb(), so that
new sessions are automatically saved to the external cache on creation.
2001/08/01
- Postfix-20010228-pl04 is being released.
2001/07/11 == Released 0.7.4 ==
2001/07/10
- Postfix snapshot 20010709 was released. Resolved some minor patch
conflicts.
2001/07/10
- OpenSSL 0.9.6b has been released including a security fix for the
libraries internal pseudo random number generator.
* Note: to exploit the weakness, an attacker must be able to retrieve
single random bytes. As in Postfix/TLS random bytes are only used
indirectly during the SSL handshake, an attacker could never access
the PRNG in the way required to exploit the weakness.
* Postfix/TLS is therefore not vulnerable (as are most (all?) applications
utilizing the SSL layer).
* The OpenSSL team however recommends to upgrade or install the bugfix
included in the announcement in any case.
* Details can be found at http://www.openssl.org/
2001/05/31 == Released 0.7.3a ==
2001/05/30
- Report from <Andre.Konopka@Presse-Data.de>: TLS logging does not work.
Reason: parameters are not evaluated in mail_params.c, as the corresponding
lines for other_int_defaults[] were missing from the patch. This
only affected the 0.7.3-snapshot version, the version for "stable"
is correct.
I will release 0.7.3a with this fix only for the snapshot version to keep
version numbering consistent with the "stable" version.
2001/05/28 == Released 0.7.3 ==
2001/05/28
- Upgraded to snapshot-20010425: resolved some minor patch conflicts.
No functional changes.
2001/05/16
- Received french documentation (doc_french/) contributed by
Etienne Roulland <Etienne.Roulland@univ-poitiers.fr>.
2001/05/03 == Released 0.7.2 ==
2001/05/03
- Postfix-Snapshot 20010502 is released. Bernhard Rosenkraenzer
<bero@redhat.de> supplies an adapted patch for Postfix/TLS, as the
normal patch has several rejections because of code changes;
functionality has not changed.
2001/05/01
- Patchlevel 02 of Postfix 20010228 is being released. The Postfix/TLS
patchkit applies cleanly when using the "-p1" switch to patch.
2001/04/09 == Released 0.7.1 ==
2001/04/06
- OpenSSL 0.9.6a is released. It contains several bugfixes and will become
the recommended version to be used with Postfix/TLS.
I will run some more test and then re-release Postfix/TLS (without
additional changes to the source) as 0.7.1 to make people aware of the
new versions of Postfix and OpenSSL.
2001/04/05
- Hint from Bodo Moeller <moeller@cdc.informatik.tu-darmstadt.de>:
the "Known Bugs" section in doc/test.html actually contains bugs
of clients and/or interoperatbility problems. Better name it
"Known interoperability problems" and rename the entries
"Postfix/TLS server" and "Postfix/TLS client" to improve clarity.
2001/03/29
- Patchlevel 01 of Postfix 20010228 is being released. The Postfix/TLS
patchkit applies cleanly when using the "-p1" switch to patch.
OpenSSL 0.9.6a will be out within the next handful of days, so I will
delay the release of a new patchlevel until then.
2001/03/01 == Released 0.7.0 ==
- IMPORTANT: If you are upgrading from a much older version, you will find
that some configuration options have changed over time (fingerprints are
now handled with ':'. check_relay_ccerts is now permit_tls_clientcerts.
Session caching has been reworked.)
It is recommended to re-read the sample-tls.cf file or the html version
in the documentation.
2001/03/01
- Wietse has announced the _release_ version (non-beta) or postfix:
20010228!
- Applied the Patchkit to the _release_ version (not the snapshot version).
Resolved one minor patch conflict.
- So, it's time to call this Postfix/TLS 0.7.0.
2001/02/26 == Released 0.6.38 ==
2001/02/26
- Snapshot-20010225 has been released. Resolved one minor patch conflict.
2001/02/23 == Released 0.6.37 ==
2001/02/23
- Snapshot-20010222 has been announced as RELEASE CANDIDAT. Resolved one
minor patch conflict.
- Removed "check_relay_ccerts" restriction which has been replaced
by "permit_tls_clientcerts" in 0.6.24. (Was left in until now for
transition.)
- Do not try to save session data > 8kB, since this cannot be handled
by SDBM. (This is more or less academical, since I have never met a
session even half that large.)
2001/02/19 == Released 0.6.36 ==
2001/02/05
- Snapshot-20010204 has been released. Resolved one minor patch conflict.
2001/02/03 == Released 0.6.35 ==
2001/02/03
- Snapshot-20010202 has been released. Resolved one minor patch conflict.
2001/01/29 == Released 0.6.34 ==
2001/01/29
- Snapshot-20010128 has been released. Resolved some minor patch conflicts.
2001/01/11 == Released 0.6.33 ==
2001/01/10
- Discussion in Thread "When to get peer certificate?" continues and it
comes out, that cross references between datastructures are well maintained
inside OpenSSL. A fact not well known due to lack of documentation
(seems I am facing some more work on the OpenSSL manpages :-).
- Moved around data needed for the certificate verification: a lot of
"static" entries globally needed inside pfixtls.c could now be moved
into the connection specific TLScontext.
2001/01/07 == Released 0.6.32 ==
2001/01/07
- Since now the checks at handshake stage (in pfixtls.c) are more strict,
some of the checks in smptd.c and smtp_proto.c could be removed.
At a later point I can probably move even more checks into pfixtls.c...
2001/01/05
- Had a discussion with Ari Pirinen <aripirin@europe.com> on openssl-users
(Thread: When to get peer certificate?) about the earliest possible
place to check the CommonName of the peer against the expected name.
(This is what smtp does when enforcing the peername of the server it
is connecting to.)
The final result was, that the check can already been done inside the
verifiy_callback() routine even before the handshake is completed.
The positive side effect is, that since the session is never completly
established, it is also not cached on either client or server.
- Since this is a good idea, I have extended the verify_callback in
src/global/pfixtls.c to check the CommonName of the peer (if applicable)
and have the handshake shut down immediatly on failure. I have also
changed the behaviour so that whenever a positive certificate verification
is required, the handshake is shut down immediatly.
(The versions up to now did delay these checks until the session was
established and then shut down the connection. I had established this
practice while working on BIO-pairs and running into a bug in
OpenSSL 0.9.5 (fixed now) and with the verify depth.)
2000/12/23 == Released 0.6.31 ==
2000/12/23
- Bug: When only enabling smtpd_tls_wrappermode and not additionally setting
smtpd_use_tls or smtpd_enforce_tls, the TLS engine was not fired up on
startup of smtpd
Fixed: also start TLS engine when only smtpd_tls_wrappermode is enabled.
(Experienced by "Fiamingo, Frank" <FiamingF@strsoh.org>)
2000/12/18 == Released 0.6.30 ==
2000/12/18
- New snapshot 20001217 has been released. Due to the change of "timeout"
parameters now being its own class and table, the old patchkit does not
apply cleanly!
- Checked out Postfix/TLS parameters being timeout values and put them into
the new style time parameter table. This allows to specify time values
like 3600s or 1h. Updated sample configuration to reflect this new style.
- "Fiamingo, Frank" <FiamingF@strsoh.org> pointed out to me, that there are
three parameters in src/global/mail_params.h (namely DEF_TLS_RAND_EXCH_NAME,
DEF_SMTPD_TLS_CERT_FILE, DEF_SMTPD_TLS_CA_FILE) that are hardcoded as
"/etc/postfix/something".
This does not match the usual style of postfix, where no paths are
hardcoded this way. I have removed the defaults for CERT_FILE and CA_FILE.
The RAND_EXCH is needed for good PRNG seeding on systems without
/dev/urandom, I however don't know yet, how to rearrange this requirement.
I could use the Postfix internal mechanisms to enforce a parameter, but
this would annoy people having compiled in TLS but not activated.
2000/12/13 == Released 0.6.29 ==
2000/12/13
- Snapshot-20001212 has been released.
- Undid bugfixes for 20001210 which now are included in the new snapshot.
2000/12/12 == Released 0.6.28 ==
2000/12/12
- Added bugfix provided by Wietse on postfix-users@postfix.org for
"postconf -m" behaviour.
2000/12/11
- New snapshot-20001210 released. Some patch conflicts occur. Additionally
* adjusted calls to myflock() to changed interface,
* fixed bug in smtpd_sasl_glue(), where a change to the name_mask()
call was not applied in the original snapshot.
2000/12/05 == Released 0.6.27 ==
2000/12/04
- Print informational message "SSL session removed" only when
var_smtp[d]_loglevel >= 2. (Proposed by Craig Sanders <cas@taz.net.au>.)
- Extend logging of "setting up TLS connection from/to" and corresponding
success/failure messages so that they include the hostname/ip address.
This way it is much easier to automatically analyze errors by simply
grepping for e.g. "SSL_accept error" and immediately get the peer
causing the problem without further logfile processing.
(Proposed by Craig Sanders <cas@taz.net.au>.)
- When experiencing a TLS failure due to TLS-enforced failure in client mode
(no certificate or hostname/certificate mismatch etc), immediately shut
down the TLS mode with "failure" indication, so that the SSL session is
removed immediately. This way a new session is always enforced in the
case the peer has fixed the problem; no need to wait for the timeout.
2000/11/29 == Released 0.6.26 ==
2000/11/29
- Found security relevant bug in the OpenSSL library: the verify_result
stating whether or not the certificate verification succeeded is not
stored in the session data to be cached and reused.
- This bug was found during the development of Postfix/TLS around one
year ago, the bug in the library was however only fixed for the server
side. At that time I also tested the server side behaviour but ommitted
to check the client side, too.
- Versions before Postfix/TLS 0.4.4 experienced this problem for both
server and client side. Before 0.6.0 a workaround was active for both
sides, which has been removed at 0.6.0 in the believe that the bug
was gone (I only tested the server side, which was fixed).
- Fixed that bug in OpenSSL also for the client side (I can do this myelf
now that I have been invited to join the OpenSSL developers team :-).
The fix is availabe as of today and will be part of the 0.9.7 release
of OpenSSL (or 0.9.6a, if this release will be published).
- Included a workaround inside Postfix/TLS for OpenSSL library versions
before 0.9.6a or 0.9.7, respectively.
********************** Begin Description
- By not caching the verify_result for the client side, the following
behaviour could appear:
* The problem can only appear when smtp_tls_session_cache_database
is activated.
* smtp_use_tls = yes
X On the first connection, the certificate fails verification, failure
is logged:
smtp[*]: Unverified: subject_CN=serv01.aet.tu-cottbus.de, issuer_CN=BTU-CA
For any following connections until the session times out (default 1 hour),
the peer certificate seems to pass verification:
smtp[*]: Verified: subject_CN=serv01.aet.tu-cottbus.de, issuer_CN=BTU-CA
X Security Impact:
Unverified certificates are logged as if verification had succeeded.
* smtp_enforce_tls = yes
X After the verification failure, the session is never correctly established
and hence not reused.
X Security impact:
None, as the session is never reused.
* smtp_enforce_tls = yes after smtp_tls_enforce_tls = yes for a server.
X If the session has been recorded with use_tls and then for this server
enforce_tls is set, the wrong verify_result could be used within the
session cache timeout (default = 1 hour).
X Security impact:
If TLS shall be enforced for a recipient, there is a window of approx.
one hour from setting the "enforce_tls" switch until a verification
failure is noted. For this to happen, a TLS session to that server must
have been used with use_tls set and the not-verifiable certificate must
have been recorded in that session.
- Evaluation:
Even though this _is_ a security problem, I consider risk to be *low*,
given the conditions under which the problem might occur.
********************** End Description
2000/11/27 == Released 0.6.25 ==
2000/11/26
- Added "permit_tls_all_clientcerts" for smtpd_recipient_restrictions.
When this option is enabled, any valid client certificate allows relaying.
This can be practical, if e.g. a company has a special CA to create
these certificates and only this CA is "trusted". It however does not
allow finer control, so if e.g. an employee leaves, he could still
relay. Postfix/TLS does not (yet) allow CRL (certificate revocation lists).
(Added on popular demand.)
- Make the client behaviour more configurabe: when enforcing TLS connections,
the peer's name is checked against the CommonName in its certificate.
New configuration variable "smtp_tls_enforce_peername" (default=yes)
can now be used to accept peername!=CommonName. The server's certificate
must still pass the verifcation process against a trusted CA!
In tls_per_site, the according key is MUST_NOPEERMATCH.
(Added on demand.)
2000/11/24
- If the server requires a client certificate and no certificate is presented
or the certificate fails verification, the connection is shut down but
no information is logged.
-> add according msg_info() in smtpd/smtpd.c:startls_cmd().
- If TLS is not enforced, it does not make sense for a server to require a
client certificate. If no STARTTLS is issued, the SMTP would continue
anyway, so why shut down when TLS is activated without verifyable client
certificate?
-> ignore smtpd_tls_req_ccert=yes, if TLS is not enforced and only treat
like smtpd_tls_ask_ccert = yes with an according information logged.
2000/11/22 == Released 0.6.24 ==
2000/11/22
- Installed on my own servers and changed configuration to use the new
"permit_tls_clientcerts" option name. Patchkit will be released after
some hours of successfull operation.
2000/11/21
- New snapshot-20001121 is being released. The patch applies without any
conflict when applied with "patch -p1", so no need to rush out an updated
patchkit.
- Rename the smtpd_recipient_restrictions option from "check_relay_ccerts"
to "permit_tls_clientcerts" to better match the naming scheme.
Leave in the old option for now to not break existing configurations.
The final incompatible removing is scheduled of release 0.7.0 of the
patchkit which will be matching the next "stable" release of postfix.
- There is no manual page for tlsmgr.8 (pointed out by Terje Elde
<terje@thinksec.com>).
Fix the comments at the beginning of tlsmgr.c and create tlsmgr.8.
- In the session cache code an additional 20 bytes were allocated when
converting SSL_SESSION data to binary using i2d_SSL_SESSION().
In adding these 20 bytes to the size listed by i2d_SSL_SESSION() I followed
the example in the OpenSSL source (PEM_ASN1_write()). These 20 bytes are
only added since when writing the PEM, a 20 byte checksum is added, so
we don't need it in our case -> removed.
(Researched after Carlos Vicente <cvicente@mat.upc.es> asked what these
20 bytes are good for :-)
2000/10/30 == Re-Released 0.6.23 ==
2000/10/30
- Postfix snapshot-20001030 with an important bug fix is made available.
The patchkit applies without any problem (patch -p1).
Hence, I re-release the 0.66.23 release for the new snapshot.
2000/10/30 == Released 0.6.23 ==
2000/10/30
- New Postfix snapshot 20001029 available with some important bug fix.
Adjusted patchkit (only minor conflicts).
2000/10/27
- The CN_sanitize function (src/smtpd/smtpd.c) that shall make sure that
no illegal sign is included into the Received: header does not work
on systems were "char" is unsigned by default.
(Linux on s390, found by Carsten Hoeger <choeger@suse.de>)
-> Worked out a more precise (even though not looking elegant) solution
that checks out all acceptable characters.
- Sent new smptd.c to Carsten Hoeger for testing, will wait with new
Postfix/TLS release.
2000/10/06 == Released 0.6.22 ==
2000/10/06
- snapshot-20001005 has been released, featuring fast ETRN. Only some minor
patch conflicts needed to be resolved.
2000/09/28 == Released 0.6.21 ==
2000/09/28
- snapshot-20000924 seems to be somewhat longer lasting. I have been asked
for a new Postfix/TLS release against snapshot-20000924, hence I will
create one.
- Running OpenSSL 0.9.6 for a week now to my full satisfaction. I will bump
bump up the Postfix/TLS version counting to include "0.9.6", even though
it will still run fine with 0.9.5a.
2000/09/25/
- snapshot-20000924 is available; only small adjustments.
- Wietse seems to release new snaphots on a daily basis, it doesn't make
sense to follow with a new Postfix/TLS release every day.
2000/09/23 == Released 0.6.20 ==
2000/09/23
- Recompile OpenSSL-0.9.6-beta3 with the change and reinstall old pfixtls.c:
works again. Hence, all versions of Postfix/TLS working against 0.9.5a
will also work again 0.9.6-final, which shall be released on 2000/09/24!
- Wietse releases snapshot-20000923, patchkit adapted.
- Went through the "install.html" document to add a remark about
OpenSSL-0.9.6. This document is of historic quality but did not fit
actual versions of Postfix/TLS, we are far beyond OpenSSL 0.9.2: Updated.
2000/09/22
- Wietse releases snapshot-20000922. The source directory hierarchie has
changed, so the patch needs to be adjusted at several places.
- Run tests against OpenSSL 0.9.6-beta3: problems occur!
* Certificates are no longer verified, since an informationa flag about the
CA certificate search process is written into the error storage and
thus misinterpreted as verification failure.
* Changed Postfix/TLS source to maintain its own error storage based on
the verify_callback, send out according warning to Postfix/TLS mailing
list.
* Unfortunately, this will break all older versions of Postfix/TLS.
Sent out analysis to OpenSSL-bugs@openssl.org.
* Additional change is made to OpenSSL: the new behaviour is only activated
when a special flag is set, so compatibility is restored!
2000/09/21
- Wietse releases snapshot-20000921. Some minor patch conflicts resolved.
2000/09/14 == Released 0.6.19 ==
2000/09/14
- Received a bug report: Postfix/TLS will accept a mail even though
smtpd_req_ccert=yes (require use of client certificate) and no
client certificate is presented.
Reason: when no client certificate is presented SSL_get_verify_result()
will return X509_V_OK, since this is the default value.
Solution: only set "peer_verified" internal information, if the
verify_result is X509_V_OK _and_ a peer certificate is available.
Remark: This default value does not make too much sense. I will file
a bug report/patch before the next release of OpenSSL...
2000/09/03 == Released 0.6.18 ==
2000/09/03
- When calling "sendmail -bs", smtpd is started without root privileges,
hence it cannot open the private key file and the session cache database.
Since the database routines do not offer a graceful return (only fatal
and abort), this leads to a failure when TLS and session caching is
activated.
This affects PINE users (noted by Craig Sanders <cas@taz.net.au>).
Solution: Try to read the private key first; if that fails, we can
gracefully recover and won't touch the session cache database at all.
- When STARTTLS is configured for smtpd but does not work (e.g. because of
unaccessible keys), smtpd answers with "465 TLS not available due to
temporary reasons". After that the connection was closed, this is however
not necessary, as the client may decide to continue without TLS activated.
- Craig Sanders <cas@taz.net.au> contributes a script to automatically
generate the keys and certificates for Postfix/TLS usage. Added
"make-postfix-cert.sh" to the contributed/ directory.
2000/09/02 == Released 0.6.17 ==
2000/09/02
- Craig Sanders <cas@taz.net.au> reports that he has connection problems
with a site; the message in the log is:
SSL_connect error 0
8847:error:140943F2:SSL routines:SSL3_READ_BYTES:sslv3 alert unexpected message:s3_pkt.c:956:SSL alert number 10:
* This is the error caused by the faulty TLS implementation with
CommunigatePro. The bug is fixed in later versions of CommunigatePro,
The site shall be contacted, they should update.
- More important, he reports a segmentation fault immediately after this
problem.
- Bug: when not using session caching and an error occurs during the TLS
handshake, pfixtls_start_clienttls() tried to remove the erronous
session from a non-existant session cache.
Fix: check the existence of the session cache before trying to access it.
Comment: at all other places in the code this condition was already
caught.
- Remark: actually session caching was configured, but the configuration
variable was mistyped because...
it was wrong in conf/sample-tls.cf and doc/conf.html.
The correct values are "smtp[d]_tls_session_cache_database" instead of
"smtp[d]_tls_use_session_cache_database".
Unfortunately this is not flagged by Postfix...
2000/08/25 == Released 0.6.16 ==
2000/08/25
- Make sure, that the smtp[d] processes will try to access the "daemon"
entropy sources, but will only print an info when not available. Using
the PRNG-exchange file, they can happily run without.
- Moved HAS_SSL checks, such that the package compiles also when configured
without -DHAS_SSL.
2000/08/24
- Changed the handling of the PRNG-exchange file. Until now it was written
by tlsmgr and read by the smtp[d] daemons. This had the disadvantage, that
until tlsmgr rewrote new bytes to the file, all starting daemons read the
same seed (to which some more bits, but not too much were added).
- Now the file is handled in read->stir into pool->write back mode, so that
every daemon will add its own entropy bits.
- The smtp[d] processes will do so when starting, when opening a TLS
connection and when closing.
- The tlsmgr will also read back the file and add it to its pool, so that
no entropy is lost.
- This change significantly increases the "self seeding" capability of
the TLS service.
2000/08/09
- Cleaned up the new PRNG-seeding.
- When tlsmgr looses connection to an EGD-source (because it was restarted),
tlsmgr performes an exit(0), so that a newly started tlsmgr can reconnect.
[chroot/dropped privileges].
2000/08/04
- Introduced new entropy sources for single daemons:
* tls_daemon_random_source
Using this source (same style as for tlsmgr), each starting daemon can
obtain additional entropy (32 bytes by default). The PRNG-exchange file
is still read.
- I am not sure about the policy for this feature. If such a source is
given, should a failure be considered fatal?
2000/07/23
- Started reworking the PRNG seeding:
* tlsmgr now recognizes tls_random_source as
dev:/dev/urandom /* Direct read from device file */
egd:/path/to/socket /* Connection via EGD-socket */
/path/of/plain-file
* If a dev: or egd: is given, tlsmgr will connect and keep the connection
open, so that it now can run in chroot-mode with dropped privileges.
- Since EGD can be drained, but the connection is permanently open, only
suck a small number of bytes (default 32) at a time, but do it more
often.
2000/08/09 == Released 0.6.15 ==
2000/08/09
- Traced through OpenSSL to learn more about the verify_callback-feature.
The callback is called several times. When it returns "1", the handshake
will continue, when it calls "0", the handshake will immediately fail
(and Postfix/TLS will also close the TCP connection).
- Following the sample in the OpenSSL-apps, the verification chain depth
was the only property triggering this effect, so this stood hidden until
now. Obviously, users having longer chains did set the verifcation
depth accordingly or they gave up, since this was never reported...
- Changed the behaviour of verify_callback() to never return "0", such that
we can deal with the verification result later in a more consistent manner.
If we only enable and not enforce, we simply want to ignore problems with
the certificate.
- verify_callback() did not print out all information, since the wrong
state variables (pfixtls_*active instead of pfixtls_*engine) were
checked. The *active state variables are only set later.
As the verify process now became rather narrative, the normal logging
is only done in loglevel 2!
- Arrrghhh. The conf/sample-tls.cf _and_ the html-docu (which is actually
copied from conf/sample-tls.cf) has wrong names for the verification-
depth parameters. *_vd instead of *_verifydepth and ccert<->scert.
[Wondering, why this never popped up before...]
- Changed the default-verifydepth to "5" which should suffice for most
cases. Maybe the limit could also be completely removed, but we should
at least receive a warning hint when something goes wild.
Since OpenSSL>=0.9.5 is required for Postfix/TLS anyway, certificate chain
verification can now be used, so the caution applied before is no longer
necessary.
2000/08/08
- Tracked down the double-free() call in smtp with Efence. SSL_free()
does call SSL_SESSION_free() on the negotiated session. Hence, I must
not call SSL_SESSION_free() on the session in question, it will be
removed anyway.
- Also tracked down the certificate chain feature. Reason is the
verify_callback() in global/pfixtls.c. It flags a chain depth that
is too long as fatal, hence the connection is immediately closed.
2000/08/04
- Received information from Alain Thivillon <Alain.Thivillon@hsc.fr>:
FreeBSD-CURRENT offers malloc() with additional checks enabled.
After successfully delivering, smtp dumps core with free() called
twice in TLS mode.
- I noted, that there is a communication problem with his site an my new
certificate issued by the universities computer center (which has a chain
depth of 2). Step back to the old self certificate for the time being.
2000/07/27 == Released 0.6.14 ==
2000/07/27
- Introduced new configuration parameter "smtpd_tls_wrappermode" that
enables the (deprecated) old style SSL-wrapping around SMTP. It could
be run on a different port (once smtps=465) was recommended for this
services.
This method is used by old versions of Outlook (Express), the Mac versions
and even actual versions, when not run on port 25.
[Actually it was only a handful of lines, so it doesn't hurt too much,
even though it does not follow any RFC.]
- I recommend using this option only from master.cf. Example lines added
to conf/master.cf and description added to Postfix/TLS-doc/conf.html.
- When having SASL enabled and TLS-enforce mode in "smtpd", only offer
AUTH, when TLS has been activated. Otherwise the client might simply
send the unencrypted credentials before it receives
530 Must issue a STARTTLS command first
and an eavesdropper already has what he was looking for.
2000/07/19 == Released 0.6.13 ==
2000/07/19
- Changed the library-initializaton call to new naming scheme
(SSLeay_add_ssl_algorithms() to OpenSSL_add_ssl_algorithms() :-).
- Updated documentation to reflect the use of chain certificates with
CAfile and smtp[d]_tls_cert_file (see 2000/07/06).
- Documentation: the interoperability problem with CommunigatePro has been
solved: CommunigatePro violated the TLS-RFC and has been fixed.
- Typo: It is "to stir" not "to stirl" :-)
2000/07/06
- Received certificate for our site from our computer center. It's a chain
certificate. Now load the cert with SSL_CTX_use_certificate_chain_file(),
in order to better load the chain CA certificates.
2000/07/04
- Reported Wietse about a possible problem in the SASL code, a relay check
may also be performed if sasl was not enabled and might lead to unwanted
relay.
As the fix is in my own codebase, I will leave it Postfix/TLS until a
new snapshot (or final release) is available.
2000/06/02 == Released 0.6.12 ==
2000/06/02
- Adapted to Snapshot-20000531 (minor patch conflict).
- Cleaned up some old header file dependencies in global/pfixtls.c and
global/Makefile.in that are no longer needed due to the interface changes
(timed_read()/write()) in 0.6.7.
2000/05/29 == Released 0.6.11 ==
2000/05/29
- Following Bodo Moeller's analysis, the error is due to a mismatch between
the CA certificate accessible in the smtp[d]_tls_CAfile and the one used
in the actual certificate (smtp[d]_tls_cert_file).
Daniel Miller fixed his setup and the problem is gone.
- Introduced a workaround into Postfix/TLS: if the padding error is found,
it is removed from the error-queue by Postfix/TLS, in order to protect
more sites from experiencing this problem.
- Added a warning to conf/sample-tls.cf
- Updated to the latest snapshot-20000528.
2000/05/27
- After some fiddling around working through the binary certificate data to
see where it is modified at 0.6.10, I actually note, that both 0.6.9 and
0.6.10 choke on the data. Now going back up through the functions very
fast reveals the problem:
* The certificate supplied triggers the "RSA-padding" error in any case.
Since the certificate authencity is not enforced on OpenSSL-library level
but inside postfix later, the error is not enforced.
The error messages generated stay however in the error queue.
- For blocking sockets, the SSL_accept()/connect() calls return
"success", so the error-queue is never checked.
- With BIO-pairs, the error queue is checked to find out, whether the
function has just to be called again to continue the handshake, so
the error messages are found and the connection is shut down due to
the error condition.
- Submitted bug report to Bodo Moeller. Bug fix is checked into the OpenSSL
CVS archive: if the error is ignored during the handshake, clear the
error-queue.
* The next release of OpenSSL will behave consistently.
- This leaves open the question, why the RSA-padding error is issued in the
first place. Sent a query to the OpenSSL-* mailing lists.
2000/05/26
- A second site experiencing this problem pops up.
-> Issued a warning to the postfix_tls mailing list.
2000/05/24
- Contacted Damien Miller <djm@mindrot.org>. He did not change his TLS setup
in the last time. He is running Postfix/TLS-0.6.6.
- Contacted Bodo Moeller <moeller@cdc.informatik.tu-darmstadt.de>, the author
of the BIO-pair part of OpenSSL for some debugging hints. Received several
worthful remarks on what to look for.
- Checked byte-for-byte the data fed into the OpenSSL-library. It does not
differ between 0.6.9 and 0.6.10, so my handling seems to be actually
correct.
2000/05/23
- A communication error occurs when talking to mail.mindrot.org:
SSL_accept error -1
10264:error:0407006A:rsa routines:RSA_padding_check_PKCS1_type_1:block type is not 01:rsa_pk1.c:100:
10264:error:04067072:rsa routines:RSA_EAY_PUBLIC_DECRYPT:padding check failed:rsa_eay.c:396:
10264:error:0D079006:asn1 encoding routines:ASN1_verify:bad get asn1 object call:a_verify.c:109:
- The error occurs both in client and server mode. 0.6.9 does not show
this problem.
- Tried to connect with several other sites, all connections are fine,
this includes sendmail and qmail peers; hence decided to not recall 0.6.10.
2000/05/23 == Released 0.6.10 ==
2000/05/23
- Sent a note to openssl-dev@openssl.org about the behaviour of SSL_free()
and BIO_free(), hoping for some clarification whether my way of doing
it is the recommended way.
- Run the software in production mode on my own servers...
- Finished writing the in-source documentation.
- Updated sample-tls.cf and sample-smtp[d].cf to reflect the new timeout
parameters.
2000/05/21
- Removed error messages produced by the now non-blocking behaviour of the
TLS layer [apps_ssl_info_callback()].
2000/05/20
- Took results home and tried to run it on my Linux-box: SEGV after
successfully handling the SMTP session!!
* It seems that the SSL_free() and BIO_free() functions interact.
SSL_free() releases the underlying BIO and it will bomb out when
it is then explicitely BIO_free()'ed again and vice versa.
* It did not bomb out on HP-UX, but such things happen. I however want to
know, why the example program does not fail...
* With respect to the bevaviour as is, SSL_free(TLScontext->con);
BIO_free(TLScontext->network_bio) and not touching
TLScontext->internal_bio works.
- Introduced special timeout values for the TLS negotiation stage, as the
timeout values may change with protocol state (suggested by Wietse).
- Started writing a full description of the BIO-pair concept and its
special treatment into the pfixtls.c sourcecode.
2000/05/19
- Systematicly implemented a generalized layer handling:
* do_tls_operation() is the generic handler for all SSL_*() input/output
functions. It deals with the non-blocking behaviour of this functions,
requiring appropriate retrys.
* network_biopair_interop() handles the interaction between the socket/fd
and the buffering BIO-pair.
2000/05/18
- Based on the example in openssl-0.9.5a/ssl/ssltest.c realized the first
usage of BIO-pairs. (Can do server handshaking.)
- Learned, that the BIO-pair has its own buffering that needs its own
flushing. It is not enough to relay on the SSL_ERROR_WANT_READ/WRITE
state information.
2000/05/17 == Released 0.6.9 ==
- Important: the seperator in the relay-fingerprints is now ':'!!!
Don't forget to change your relay_clientcerts databases.
2000/05/16
- Changed pfixtls.c to only use the interface described in util/vstream.c
for handling the VSTREAM.
* Added vstream_context() macro to the VSTREAM-interface.
- Introduce TLScontext to identify the connection instead of the file
descriptor. Move all static data (SSL structure and information gathered
about the connection) into the context.
The TLScontext is allocated on TLS-start for a connection and saved with
the VSTREAM, so several streams can be used at the same time.
- Removed "pfixtls_setfd()" as it is no longer needed.
- Changed the relay_clientcerts list from string_list_* to maps_* interface
to allow usage of ":" in the list.
THIS IS AN INCOMPATIBLE CHANGE!!!!
- Updated documentation accordingly.
2000/05/12 == Re-released 0.6.8 ==
2000/05/12
- Wietse announces snapshot-20000511 with an important bugfix.
- Since upgrading from 20000507 to 20000511 is highly recommended,
Postfix/TLS 0.6.8 is re-released for this snapshot (the patch applied
cleanly, just the name of the toplevel directory has changed).
2000/05/11 == Released 0.6.8 ==
2000/05/11
- Unlike expected I found some time to install the latest cyrus-sasl-1.5.21
and test some parts the integration. It does, well, work as advertised
(and the advertisement in SASL_README is not too optimistic).
- When checking all of the rejected patch-snippets for 0.6.6->0.6.7
I missed the parameter "smtpd_enforce_tls" (noted since I wanted to
enforce TLS encryption while playing around with plaintext passwords)
in the static CONFIG_BOOL_TABLE bool_table[] = {..} in smtpd/smtpd.c
-> I will immediately release a corrected version 0.6.8.
2000/05/11 == Released 0.6.7 ==
2000/05/11
- The latest sendmail.8.11.0.Beta1 includes STARTTLS support; it is available
in source code and also uses OpenSSL.
2000/05/10
- After having it running at home (Linux) I also install it at work for
the field test.
- No time to install the SASL kit, so this part stays untested as of now.
2000/05/09
- Downloaded snaphot and apply the patchkit.
- Straightened out the rejected parts of the patch.
- Due to the new layering with timed_read() and timed_write() functions
the integration of the TLS layer needed special adjustment.
* When TLS is active, the timed_read() and timed_write() functions are
replaced by the corresponding pfixtls_timed_read() and
pfixtls_timed_write() functions. When the TLS functionality is stopped,
the old functions are restored.
* The names of the pfixtls_timed_*() functions are looking into the future,
because they are working as before, the timeout functionality is not
in, yet.
2000/05/08
- Wietse announces snapshot-20000507 with a lot of changes. Especially
important: the I/O handling of the smtp-stream has been changed to
a more layered technique that allows easier integration of the TLS layer.
2000/04/27 == Released 0.6.6 ==
2000/04/27
- Fixed inconsistency between documentation and actual behaviour: peer
certificate information was not logged at level 1 (found by
Damien Miller <djm@mindrot.org>).
* While at it: the logged information did not say whether the certificate
data logged passed verification or not: fixed. (The information logged
in the Received: header already contained that information.)
- Backported dict_dbm.c from snapshot-20000309 with the updated
dict_delete() behaviour (key not found is not considered fatal).
Maintained dict_sdbm.c accordingly.
2000/04/18 == Released 0.6.5 ==
- Important:
* New session cache mechanism SDBM. Please adapt your main.cf and delete
any old ".db" session cache files manually.
2000/04/18
- I am using the SDBM session cache for a week right now and did not have
any trouble, so I think its worth pushing it out.
- I am not completely happy with the dict_del() behaviour of considering
a not-found key fatal. It might happen when the smtp[d] processes would
be allowed to delete themselves. They are not as of now, so I accept it
for now but will reconsider it.
- Updated documentation accordingly.
2000/04/17
- Received corrections for the HTML-docs from Ralf Hildebrandt
<R.Hildebrandt@tu-bs.de>.
2000/04/11
- Transfered SDBM from home (Linux-testbed :-) to work [found and fixed some
small items when compiling on HP-UX]. Started running it under
"real life" conditions.
2000/04/07
- Implemented "SDBM" Simple Database Management routines as also utilized in
ModSSL. Of course, it requires reopening of the databases, so the
routines are changed, that the _file_descriptors_ are left open, but
the _in_memory_ database stuff (especially the cached data) is closed
and reopened on access. This is what is really needed. The pagesize
is increased from standard DBM compatibility to hold the session
information.
Additionally, this software is in the public domain, so no additional
license problems arise.
- The access goes through the dict_* interface, hence the locking is
performed by myflock().
2000/04/01 == Released 0.6.4 ==
2000/04/01
- Updated to the new patchlevel of Postfix (19991231-pl06), some parts of
the patch were rejected due to changes in smtpd.
- Changed patch name with respect of today's release of OpenSSL-0.9.5a.
The code remained unchanged.
2000/03/25-31
- The cached informations are not deleted by "tlsmgr" even though stored
and retrieved by the smtp[d] processess. Strange.
- Spend some large amount of time digging through the Berkeley DB
documentation and code.
* It claims that Berkeley DB is multi-process capable. Caveat: it takes
the very complicated "transaction model", that I did not use until now.
Hence the session cache does not work as is.
* Even with transaction model, Berkeley DB requires re-opening of the
databases to get rid of cached information. F*ck.
- Finally, I give up on Berkeley DB for session caching. It will never
work for us. Even if it would, it requires a large amount of helper files
and it seems, that the transaction environment is somewhat fragile when it
comes to some problem. I won't rely on it.
2000/03/28 == Released 0.6.3 ==
2000/03/28
- As has been pointed out to me, the TLS information in the Received:
header is not conform to RFC822.
- The TLS protocol and peer CN information is now included in '()', so
that it is a comment.
2000/03/21 == Released 0.6.2 ==
2000/03/21
- I have been running DB based session caching with the changes for some
more time now without problems. Am I really confident? No, not really.
I remember the trouble I had with Berkeley DB and sendmail on HP-UX.
I don't think I really trust it.
- Realized single "smtp_tls_per_site" lookup. I cannot use the more or
less comfortable "domain_list" lookups as before, since these do not
return the value, just found or not :-(.
Hence the lookup is realized with maps and exact lookup. I never tried
regexp. But if I understand the docs correctly, it should be possible to
use it here to realize wildcard lookups, if it would not have been
disabled :-(.
- Summary:
* Session Cache will be cleaned at "postfix reload" or "postfix start"
* New table "smtp_tls_per_site"
* Gone: "smtp_tls_[use/enforce]_[recipients/sites]"
2000/03/16
- Changed pfixtls.c, so that it will only open Session Cache databases,
that are already available. tlsmgr is responsible for creation.
- Change tlsmgr.c, such that session cache databases will be removed before
opening, so that fresh databases are used whenever postfix is restarted.
This means, that session information is not kept over a postfix stop/start
or reload sequence, but it also means, that issuing a postfix reload will
clean the session cache.
I don't use simple dict_open with O_TRUNC, because this would not help
against database files, that are locked by hanging smtp[d] processes.
If you think it will also solve the "hang" problem described for
2000/03/15: in a certain sense it can, since tlsmgr will be killed by
the watchdog and new, fresh cache files are installed, but that is not
more than an ugly hack. It must be solved in a clean manner.
2000/03/15
- Experienced some strange problem with Berkeley DB based session cache.
The DB routines hang while trying to delete an entry. I did save the
corresponding "hash:" file and could reproduce it (and walk through
the endless loop with a debugger), but I didn't find the reason why.
Since during "db->del" the database is exclusively locked all other
processes hang however, so this is really bad!!!!!!!!
2000/03/12 == Released 0.6.1 ==
2000/03/12
- Created tls_info_t structure to hold all information about the active
TLS connection. Remove all global variables except those for the
running client/server engines (those might be replaced with global
variables in smtpd/smtp, though).
- Added field "dNSName" to the structure (still unused). This will be
used with X503v3 extensions.
- Cleaned up TODO, since some items are now done...
2000/03/11
- Added missing #include <sys/time.h> to tlsmgr.c. (Worked without on HP-UX,
showed up on Linux.)
- Bug: removal of server side sessions from the cache in case of trouble
failed, because uppercase hex was used instead of lowercase for the key.
This does not affect removal of expired sessions by tlsmgr.
- Stepped up to postfix-19991231-pl05.
2000/03/09 == Released 0.6.0 ==
- Important:
* This release features an additional daemon, the "tlsmgr", please update
your master.cf accordingly.
* This release does not use the /var/spool/postfix/TLS* directories
anymore. Remove them and re-install the original postfix-script.
* Check the new/changed configuration parameters tls_random* and
smtp[d]_tls_session_cache*.
* This release will only work with OpenSSL >= 0.9.5!!!!!
2000/03/09
- Testcompilation of Postfix/TLS without -DSSL and the OpenSSL includes and
libraries passed.
- Worked through tlsmgr.c to remove unneeded header files.
- Wrote documentation for tlsmgr.c.
- Updated documentation on top of pfixtls.c.
- Put (char *) casts into the myfree() calls, where necessary, to make the
HP compiler happy.
- Updated html PRNG documentation in Postfix/TLS.
2000/03/08
- Finished first version of "tlsmgr". Does run through session cache
databases and detects and deletes (*) old sessions.
* Had to realize SYNC_UPDATES for the dict_db_delete() function and patch
the flag handling within the function. Changes sent to Wietse.
- Restored qmgr to its original state.
- Extended pfixtls.c to need an additional "needs_095_or_later()" function
when compiled with an older version of postfix.
- The session cache is now enabled, when a database filename is given.
smtp[d]_tls_use_session_cache configuration parameters removed,
updated documenation accordingly.
- Moved the PRNG handling to tlsmgr, applying the new model. tlsmgr will
query external sources at startup and will then feed a PRNG exchange
file with random data in intervals of configurable (but random driven)
length.
If running outside chroot, tlsmgr can query the entropy source (e.g.
EGD or /dev/urandom) again and so increase entropy with time. If the
entropy sources don't limit access, the tlsmgr can run with "postfix"
privileges. Mine does.
-> master.cf became a new entry.
- tlsmgr is realized as a trigger server and has the "fifo" entry. Actually,
it does not take any input. One could utilize it to feed back some entropy
from running smtp[d] processes, but I think this would overload the
issue.
- I will release a 0.6.0 pre-version as is. tlsmgr still lacks the detailed
information in the header and the interface description in pfixtls.c
probably is also not longer up do date.
2000/03/07
- Since defective session data can cause SEGFAULTs, it is now armored
by a leading structure that does contain a session cache version and
the postfix library version before the timestamp. If a session does
not match exactly the version numbers, it is immediately discarded
and deleted to avoid harm.
- Removed the seperate storage of the peer's certificate verify_result,
so starting from this moment, Postfix/TLS will only work safely with
OpenSSL >= 0.9.5!!!
- Ported server side session cache routines to the client side; works.
- Analyzed structure of "qmgr" to understand consequences for the planned
"tlsmgr" daemon. Transferred the sceleton.
- Received word from sendmail, a (at least preliminary) TLS enabled test
address is "bounce@esmtp.org".
2000/03/06
- Wietse supplied a change to the dict/dict_db mechanism to allow for
synchronous updates.
Session cache updates for the server side seem to work now, removal of
old sessions (when called from the client) integrated.
2000/03/05
- Got the database style session cache to run for the server side (at least
partial). The removal of old sessions is not yet realized.
[There are several man pages for OpenSSL as of 0.9.5, but the i2d etc
interfaces are not belong them, so I had to study the source code instead.]
* What is not working by now is the synchronization of the memory database
to disk. It only is synchronized automatically upon close. It would be
necessary to sync after each update or delete, but this is not implemented
in Wietse's dict library. I will post an according proposal.
2000/03/04
- Wietse posts a patch to select "EHLO" negotiation even if ESMTP is
not recognized from the 220 greeting. Activating this flag will however
break compatibility with mailers, that simply close the connection
upon EHLO. I don't know how the large the number of these broken mailers
is, but activating "smtp_always_send_ehlo" is a tradeoff.
- Integrated Wietse's patch into Postfix/TLS.
2000/03/03
- Received update from Matti Aarnio (Zmailer) is now for some time able
to do server _and_ client side TLS. Updated documenation accordingly.
When testing, Postfix client to Zmailer server failed, because
Zmailer announces with "ESMTP+IDENT" and Postfix does not recognize
the ESMTP token (must be seperate), so only HELO is used and STARTTLS
is not offered by the Zmailer server. Informed Matti accordingly,
will wait until the problem is resolved before actually publishing
the update.
- Enhanced the documentation by listing automatic reply services at which
interoperability can be tested.
2000/03/02
- Went through the Postfix source to check out the database routines.
It should be possible to move session caching from directory/file-
based to database. Since DBM only allows blocks (key+contents) of
1024 bytes and a session is larger, only Berkeley DB can be used.
Put some first bits into Postfix/TLS.
2000/02/29 == Released 0.5.5 ==
2000/02/29
- OpenSSL 0.9.5 has been released. Since I want to promote 0.9.5, as it
contains several bugfixes and enhancements, I release a new version
of Postfix/TLS. My personal highlights:
* The bug with Win32 Netscape not commencing after certificate storage
unlocking should be fixed. (I will leave the not in however, as long
as I have not positively checked it myself. Reproducibility...)
* The bug, that the certificate verifiation result is not stored in the
session cache (discovered for Postfix/TLS 0.4.4) is fixed. I will leave
the Postfix/TLS workaround in as long as it will run with older versions
of OpenSSL.
* The OpenSSL commandline tools like "openssl gendh" now support EGD, so
that the examples for generating the DH parameters now will really work
with high quality random data :-)
* The support of 56bit ciphers has lost its importance since 128bit
versions of Netscape etc are now easily available...
- This version does not feature source code changes but updated documenation
when compared with 0.5.4:
* List examples on how to generate good entropy for the PRNG seed in
/etc/postfix/random_file.
- Update the TODO document with respect to the discussion about session
caching and other security items. This document is a very short summary,
for the full discussion check the mail archive at
http://www.aet.tu-cottbus.de/mailman/listinfo/postfix_tls/
2000/02/26-28
- Wietse considers including Postfix/TLS into the main release. A discussion
about security relevant features, especially the session cache inside
the chroot jail takes place.
The discussion will definetely lead to some changes; I have however not
decided on the first step, yet :-)
2000/02/21 == RELEASED 0.5.4 ==
- Important: Another directoy is created in /var/spool/postfix, so don't
forget to install the new versions of conf/postfix-script-*sgid.
2000/02/21
- Finished the seed-exchange architecture by saving the random seed at exit
of smtp and smtpd.
- Wrote documentation for the PRNG handling to the documentation.
- Tested on HP-UX (with a current OpenSSL-pre-0.9.5 snapshot and 0.9.4)
and on SuSE-Linux (with 0.9.4).
* THIS VERSION WILL STILL RUN WITH OPENSSL-0.9.4, but it will also run
with OpenSSL-0.9.5. Older versions of Postfix/TLS will not, because the
PRNG is not seeded!
2000/02/19
- Start to implement my own model of collecting entropy. All smtp and smtpd
processes will record some items (mainly the time of actions) to add
some entropy into the PRNG. The state is saved and used to re-seed by the
smtp and smtpd processes, so that entropy adds up into the pool.
The seeding by external file is additionally kept in order to be able
to inject additional entropy.
2000/02/18
- Included routines to add random seed from a configurable file
"rand_file_name". I don't want to retrieve the entropy from a real
random system source, because the amount of entropy that can be collected
is limited. We might hence stall. Let's think about this problem.
- The SSL_CTX_load_verify_locations() has been fixed in the latest
OpenSSL snapshot.
2000/02/17
- Tracked down the SSL_CTX_load_verify_locations() problem in the OpenSSL
library. If more than one CA-certificate is loaded, a bogus return value 0
is created, because the count of certs is checked to be "1" instead of
allowing ">=1". Reported to openssl-dev.
2000/02/16
- Downloaded the latest openssl-SNAPSHOT-20000215 and installed it on
my development machine, then recompiled Postfix/TLS and try to run it.
* Failure: SSL_CTX_load_verify_locations() fails on reading the CAfile with
return value 0, but no actual error is displayed.
If the return value is not checked, the CA-certificates work, so that
they are loaded and the error indicator seems to be bogus.
Reported to openssl-dev mailing list.
* Failure: OpenSSL has become picky about correct seeding of the PRNG
Pseudo Random Number Generator. Installed some "testseed" that is
actually not random, but then Postfix/TLS starts to work again. We
will need some good random seed setup, probably reading from either
/dev/random (if available) or from EGD.
Found out during the experiments, that EGD is not that simple to use
as described in some of my Postfix/TLS docs. Must be upgraded.
Asked in the openssl-dev mailing list about the recommended amount
of random data needed for seeding the PRNG. Ulf Moeller recommends
a minimum of 128bit.
2000/02/14 == Released 0.5.3 ==
2000/02/14
- OpenSSL 0.9.5 is to be released within the next hours/days. Since I intend
to use some of its new features soon, I will re-release 0.5.2 as the last
version that will run with 0.9.4 but for the latest postfix patchlevel.
- No functional changes.
- Updated patch for postfix-19991231-pl04.
2000/01/28 == Released 0.5.2 ==
2000/01/28
- Stepped up the next postfix patchlevel postfix-19991231-pl03.
No functional changes.
2000/01/03 == Released 0.5.1 ==
2000/01/03
- Bug fixed: Don't specify a default value for "smtpd_tls_dcert_file",
assuming that typically a DSA certificate is not used.
Otherwise smtpd will try to read it on startup and the TLS engine won't
start since it is not found.
I didn't note this bug before today, because I could not install this
release in a larger scale on my own servers due to a network failure
of our campus backbone lastring from Dec 31 until today.
- Stepped up to the just released postfix-19991231-pl01.
2000/01/01 == Released 0.5.0 ==
2000/01/01
- Upgraded to the new postfix release 19991231.
1999/12/30
- Enabled support for DSA certificate and key for the server side. One
can have both at the same time, the selected cipher decides which one
is used. OpenSSL clients (like Postfix/TLS) will prefer the RSA cipher
suites, if not especially changed in the cipher selection list.
Netscape will only use the RSA cert.
- The client side can only have one certificate. There is a way out by using
a callback function, that will receive the list of acceptable CAs and
then do some clever selection: SSL_CTX_set_client_cert_cb().
I will however have to figure out, how it has to be prepared, it seems,
that there is no example available.
- I have been able to successfully generate a DSA CA and certificates for
some Postfix hosts and to do authentication and relaying as expected.
So now I have to document how it is done in a practical manner...
- Moved up prerelease 0.5.0pre02 to the download site.
1999/12/28
- Moved up to SNAPSHOT-19991227.
- Don't forget to check the return value when calling
SSL_CTX_set_cipherlist().
- Add code to load DH-parameters from disk.
- Add configuration information for the new functionality: DH paramter
support, possibility to influence the cipherlist.
- Moved up prerelease 0.5.0pre01 to the download site.
1999/12/25
- Found some minutes to relax from the christmas business.
- Applied the 0.4.7 patch to SNAPSHOT-19991223 and included the new changes
of 1999/12/19.
Once the new stable release of postfix is out, this minimum state will be
the new Postfix/TLS patch: the new functionality will not influence
stability, so it can stay in even if still unfinished.
1999/12/23
- Wietse announces SNAPSHOT-19991223: if no severe bugs are found, it will
be promoted as next stable release soon. Good to have kept everything
from yesterday.
1999/12/22
- Got a query from a Postfix/TLS user: the patch does not apply cleanly to
SNAPSHOT-19991216 and he somehow messed up to integrate the rejected
parts (it later turned out he just forgot on reject).
Applied the patch myself and generated a diff, sent it to the user
and of course kept a copy for myself, since I will have to apply it
myself eventually once the next "stable" release of postfix is out.
1999/12/19
- Began modifications for 0.5.x:
* Added configuration variables for specifying the cipherlist to be used
smtpd_tls_cipherlist and smtp_tls_cipherlist. For the format, there
is some (however sparse) documentation in the openssl package.
* Call SSL_CTX_set_cipherlist() with these data.
* Added default temporary DH parameters to pfixtls.c (only server side is
necessary) and configuration variables to specify user generated
parameters; they are however not used, yet.
The default parameters were generated using the presumably good
/dev/random source.
1999/12/13 == Released 0.4.7 ==
1999/12/13
- Addendum to the last change: do also remove sessions, that could _not_
be reused.
- Updated configuration information:
* As of OpenSSL 0.9.4, certificate chain verification is not sufficient,
since the certificate purpose is not checked, so I recommend to add
all intermediate CAs the list of CAs and stay with a verification
depth of 1.
Work is in progress for 0.9.5.
- Stepped up to the just released new patchlevel postfix-19990906-pl09.
1999/12/10 == Released 0.4.6 ==
1999/12/10
- Realized changes implied below: Removed SSL_CTX_add_session() in the
client startup; remove session on stop with SSL_SESSION_free().
- In the morning there is a mail on the list, that Postfix might be
crashed with a single "\" on the "CC:" line. Hence, we should expect
a new patchlevel soon. Release the actual change anyway.
1999/12/09
- Read in the "openssl-users" mailing list, that SSL_CTX_add_session()
is only intended for servers. On the client side, SSL_set_session()
is sufficient.
Additionally, the session should be explicitely freed, since
SSL_set_session() will increment the usage count for the session.
Explained by Bodo Moeller.
1999/12/xx
- Had a discussion (by email) with Bodo Moeller about DH/DSS. It seems
I understand better now (after the discussion) how it works :-).
Implementing it should not be too difficult but might take some more
hours. Mentally scheduled it for Version "0.5.0" whenever this might
be (rough guess: christmas vacation).
Decided to hence not discuss this topic in the docs, since it might
change in the near future anyway.
1999/11/23
- Discussion with rch@writeme.com (Richard) about implementing DH ciphers
and DSA keys and certificates on the Postfix/TLS list: It does not work
as of now.
1999/11/15 == Released 0.4.5 ==
1999/11/15
- Applied patch to postfix-19990906-pl07 without problems. Well, let's
release new version of Postfix/TLS, so that we look up to date.
- Add the "DO NOT EDIT THIS FILE" to conf/sample-tls.cf.
1999/11/08
- Applied patch to the fresh release of postfix-19990906-pl06 without
problems. Nothing else, so no new release of Postfix/TLS.
1999/11/07 == Released 0.4.4 ==
1999/11/07
- Played around some more with the X509_verify_cert() function: when saving
a session, neither the verify_result is saved nor the certificate chain
necessary to re-verify. So there were two possibilities left: do a full
renegotiation negating the benefit of session caching or
- save the verify_result into to the session cache file and set the value
when rereading from disk. This way the positive result of session caching
is kept.
- Make sure, the verify_result value is propagated as pfixtls_peer_verified
and used where needed.
- After experiencing some failures at TLS connection setup, the SSL_sessions
are now freed again when closing. It seems, something is left over in the
session structures, even though SSL_clear() is called.
1999/11/06
- When not asking for a client certificate, the "Received:" header will show
the protocol and cipher, but silently omit the client CN (because they
where not supplied). Noted by Craig Sanders <craig@taz.net.au>.
The same holds, if a certificate is asked for, but none supplied.
Now, in any case an appropriate information is added in the "Received:"
header.
- Added a hint to remove sessions from the cache during testing, since
old information may still be in the cache. Also proposed by Craig
Sanders <craig@taz.net.au>.
- While at it: client CN and issuer CN are printed, but the verification
state is not, so that the trust value of this data is not known.
* Added (verify OK/not verified) to the Received: header.
* Obtained information using the SSL_get_verify_result(SSL *con) call.
* Learned, that the state is not saved in the session information, so
that a recalled old session will always return "OK" even if the
certificate failed the verification! Call it a bug in OpenSSL.
Still investigating on a good way to work around this problem.
- Fixed a bug in the syslog entries: The client CN is logged, but the
issuer CN is not, because of a missing "%s" in the format string.
1999/11/03 == Released 0.4.3 ==
1999/11/03
- Added some hints about security to the html documentation.
- Tested the changes made two weeks ago at home in the large university
setup. I was to a conference in between and didn't want to release
the new version without having done some more tests.
1999/10/17
- Added another half a ton of comments (this time for the client side),
yielding one ton alltogether...
1999/10/16
- Rearranged some of the TLS-engine initialization to improve readability.
- Do not "free" the SSL connection, when it is not really necessary. Do only
reset information about the TLS connection, when there was one. This is
the better way instead of the quick fix applied for 0.4.2.
- Added half a ton of comments to the TLS code (server side) to document
what is done when and why, since there is no real documentation about
the OpenSSL library.
1999/10/11 == Released 0.4.2 ==
1999/10/11
- Fixed a severe bug introduced in 0.4.0: smtpd and smtp tried to flush
old session from the session cache even when TLS was not enabled. Since
no SSL-context was allocated, smtp would segfault on connection close.
1999/10/10 == Released 0.4.1 ==
1999/10/10
- Added a long description of the session cache handling to the top of
global/pfixtls.c.
- There is a race condition when cleaning up the session cache in qmgr, that
might lead to lost sessions in client mode. The worst consequence is an
additional session negotiation, so we can live with it as of now.
Bug described in qmgr/qmgr_tls.c.
- Implemented immediate removal of session cache files with expired sessions
when these are called. No need to first load and then discard them.
- Implemented the requirement from RFC2246 to remove sessions, when
connection failures occure (well actually, when TLS layer failures
occur, but I cannot seperate this from another) for the server side.
the client side is under work.
1999/10/09
- Set an absolut maximum length of 32 for the IDs used for session caching.
This matches the default in OpenSSL, but I don't want to see surprises
when somebody sometimes will run into a longer session id.
1999/10/05 == Released 0.4.0 ==
- The new disk based session cache is a major step, so the minor release
number is pushed to 0.4.
- By now I think all necessary bells and whistles are in the code. What
is left is a big code cleanup and some more testing before calling this
patchkit "1.0.0".
- Initiated Mailing List at
http://www.aet.tu-cottbus.de/mailman/listinfo/postfix_tls
1999/10/05
- Some code cleanup.
- Added new options to the documentation and the hint to update
"postfix-script", because otherwise qmgr might fail!
1999/10/03
- Realized disc based session caching also for the Postfix/TLS client.
Must go to real world testing now between hosts.
And, of course, tune up the documentation, because users will have to
install a new postfix-script, too.
1999/10/02
- The old sessions must be removed once they have timed out, so a process
is needed that will scan through the list of old sessions and remove
once they have expired.
Lucky me: this is what qmgr usually does with deferred messages, so
qmgr is extended only a little bit and will now also clean up the
old sessions from the cache directory.
And hey: it is good to see how easily this thing can be extended and
functions can easily be reused. Postfix is an excellent peace of
software engineering and there is no line of C++ or other "object
oriented modern junk" in it. It should be recommended as an example
to computer sience students.
1999/09/28
- I cannot use the mod_ssl way for session caching and I don't want to
spend an extra "gcache" daemon as ApacheSSL does. So I follow Wietse's
idea realized for his mail queues and create hash level based subdirectory
structures. The good thing: I can cannibalize the mail_queue code.
The bad thing: there is a path length of 100 chars fix coded in Wietse's
routines. It does hold for 32byte session ideas.
Status: can save sessions to disk and recall them (server side).
1999/09/26
- Created new call backs for external session caching for the server side.
In a first step, they can print out the session ids for the newly created
session and when recalling a session.
As the OpenSSL documentation on this is pretty sparse, Ben Laurie's
ApacheSSL code is very helpful, Ralph Engelschall's Mod_SSL code for
session caching is far more complicated.
1999/09/23 == Released 0.3.10 ==
1999/09/23
- Debugging for 0.3.8/0.3.9 would have been so much easier, if the error
messages put onto the error message stack from the OpenSSL library would
have been printed out. The error was clearly stated from the library, I
just didn't print it. Added pfixtls_print_errors() calls where missing
after calls to the OpenSSL library.
Sometimes I feel so old...
- Used opportunity to upgrade to the latest postfix patchlevel 05:
postfix-19990906-pl05.
1999/09/19 == Released 0.3.9 ==
1999/09/19
- Added a "smtp_no_tls_sites" table to allow people to enable TLS negotiation
globally and only omit it on a per site basis.
1999/09/18
- Finally found the bug described for 0.3.8: In the server setup, the
SSL_CTX_set_session_id_context() call was missing. To find this, I
had to trace through the OpenSSL library and when I finally found it
in ssl/ssl_sess.c, there was an appropriate comment about this. I however
have to find out why I didn't receive the appropriate error message...
- This bug was hidden during the first developing stages, as the shutdown
sequence was not working correct, so the session was not cached.
1999/09/17 == Released 0.3.8 ==
1999/09/17
- Something is strange with the session caching in smtpd server mode
with Netscape 4.61 client. The first connection is fine, the next
one hangs after the server fails with errors while reading the
SSLv3 client hello C. (Found by Michael Stroeder <x_mst@propack-data.de>)
Reproducable with OpenSSL 0.9.3a, 0.9.4 and SNAPSHOT 19990915, so
the problem seems to be persistent. I will try to figure out the
problem myself before reporting it to the developers. If I don't find
it, maybe they do :-)
Workaround: the cached session is removed after connection is closed.
This will impose some time penalty on the negotiation. As the caching
is local in the smtp processes and they time out anyway, the penalty
should not be significant.
The problem does not occure with Postfix/TLS clients.
1999/09/13 == Released 0.3.7 ==
1999/09/13
- Ran tests, seems no further conflicts between Wietse's changes and my
extensions.
1999/09/09
- Applied the patchkit 0.3.6 to postfix-19990906-pl02 and worked out
the rejected part of the patch. From this point of view the patch
is included. Now everything has to be retested.
1999/09/09 == Released 0.3.6 ==
1999/09/09
- Added a missing '#ifdef HAS_SSL #endif' in smtp_connect.c.
Noted by Jeff Johnson <jeff@websitefactory.net>.
- HINT:
On 1999/09/06 a new "stable" version of postfix was released.
Future Postfix/TLS enhancements will be against this new version 19990906.
1999/08/25 == Released 0.3.5 ==
1999/08/25
- Added Wietse's patch for postfix-19990601 to prevent crashing smtpd when
VRFY is called without setting the sender with "MAIL FROM:" first.
1999/08/13
- Small changes to global/pfixtls.[ch]: Since we also support client STARTLS,
we check the peers certificate, which may also be a "server" certificate
(not just client). Hence I renamed "*ccert*" to "*peer*".
- global/pfixtls.c: add some "const" to "char *" for OpenSSL library calls,
to make gcc happy.
- Extended comments in pfixtls.[ch] to better match Wietse's style.
1999/08/12 == Released 0.3.4 ==
1999/08/12
- Enabled workarounds for known bugs in SSL-engines.
- Tested with OpenSSL 0.9.4.
- Windows95/NT: Problem with Netscape hanging on first connection when
the client certificate database has to be unlocked cannot be reproduced
anymore.
I am happy, but I am also not sure what caused the problem to go away
and I cannot figure out the security settings manually from the files...
1999/08/11
- Corrected loglevel handling: At some points smtpd_tls_loglevel was used
instead of smtp_tls_loglevel (only noted at loglevels >= 2).
1999/08/09 == Released 0.3.3 ==
1999/08/09
- Removed SSL_CTX_set_quiet_shutdown() as it does prevent the shutdown
from actually being performed. In order to remove the annoying
"SSL3 alert write:warning:close notify" it is now explicitly handled
in apps_ssl_info_callback().
Bug found by Bodo Moeller <bodo@openssl.org>.
1999/08/06 == Released 0.3.2 ==
1999/08/06
- Add option "smtp_tls_note_starttls_offer" to collect information about
hosts, that offered the STARTTLS feature without using it.
- Shut up smtpd. Only print information about relaying based on certs
when msg_verbose is true.
1999/07/20
- Added missing "const" in pfixtls.h (found by Juergen Scheiderer
<jnschei@suse.de>). HP-UX ANSI-C didn't complain.
1999/07/08 == Released 0.3.1 ==
1999/07/08
- New config variable "smtpd_tls_received_header". When "true", the protocol
and cipher data as well as subject and issuer CN of the client certificate
are included into the "Received:" header.
1999/07/07
- "starting TLS engine" message will only be printed when loglevel >=2
to reduce unnecessary noise in the log files.
- Added code to fetch the protocol (e.g. TLSv1) and the cipher used (by name
and bits). Information is printed to the logfile.
1999/07/01 == Released 0.3.0 ==
1999/07/01
- (Client mode) Bug fix: Don't try to use STARTTLS if it is not offered. The
server we are connected to might not understand it and respond with a
"500 command not understood", causing the email to bounce back, even
when the lack of STARTTLS is just a temporary problem.
- Updated documentation for the new per recipient/site TLS decisions.
1999/06/30
- Client mode: Added variables and routines to decide "per recipient" or
"per host/site" whether to use/enforce TLS or not.
1999/06/18 == Released 0.2.8 ==
1999/06/18
- In client mode the "use_tls" and "enforce_tls" internal variables were
not initialized correctly, such that the client could try to use the
STARTTLS negotiation even if not wanted. This error was introduced
in 0.2.7.
Noted by "Cerebus" <cerebus@sackheads.org>.
1999/06/08 == Released 0.2.7 ==
1999/06/08
- Studied discussions in the IETF-apps-TLS mailing list: MS Exchange
seems to offer STARTTLS even if not configured. Added this info to the
documentation.
- Updated Documentation regarding the changes made.
1999/06/03
- The subject-CommonName (CN) of the server certificate is extracted when
connecting to a TLS server.
- In "smtp_*_tls" mode, this subject-CommonName is matched against the
hostname of the server. In "enforce" mode, the connection is droppend
when the certified server name and the real hostname differ.
- Added missing dependencies in smtp/Makefile.in (missing pfixtls.h since
0.2.0).
1999/06/02 == Released 0.2.6 ==
1999/06/02
- Adapted patchkit to postfix-19990601.
1999/06/01 == Released 0.2.5 ==
1999/06/01
- Updated OpenSSL API to 0.9.3a -> position of include files has changed
from <xxx.h> to <openssl/xxx.h>. No functional changes.
- pkcs12 utility is now part of OpenSSL -> changed documentation
accordingly.
1999/05/20 == Released 0.2.4 ==
1999/05/20
- Updated postfix base 19990317 from pl04 to pl05.
1999/05/14 == Released 0.2.3 ==
1999/05/14
- Fixed a bug in pfixtls_stop_*(): there was a ";" to much directly
after "if (con);". This check is only done as a safety measure:
When SSL is not started you should not stop it. This case could however
only happen when the code in smtp[d] would be wrong, so it should never
be necessary. (Bug found by Uwe Ohse <uwe@ohse.de>)
1999/05/11 == Released 0.2.2 ==
1999/05/11
- Matti Aarnio: Reworked pfixtls_dump() to use fewer strcpy and strcat calls.
- Added information about Matti Aarnio (author/maintainer of ZMailer)
working on RFC2487 for ZMailer.
1999/05/04 == Released 0.2.1 ==
1999/05/04
- Stuffed up the documenation to reflect the actual status. No change
in functionality.
1999/04/30 == Released 0.2.0 ==
1999/04/30
- Adjusted the changes in smtp*.c to Wietse's indentation style.
- Sorry, the documentation about the client side has by now to be
taken from sample-tls.conf. The documenation has to be rearranged
in a larger scale.
1999/04/29
- Finished client support for STARTTLS in smtp; some testing done.
- Fixed a race condition in smtpd: When in PIPELINE mode, the connection
was switched back from SSL to normal mode before the buffers were
flashed.
- Adjusted the code in pfixtls.[ch] and additions in smtpd*.c to
Wietse's indentation style.
1999/04/28
- Incorporated skeleton of STARTTLS support into smtp.
- Introduced variables to control client STARTTLS to configuration.
1999/04/15 == Released 0.1.5 ==
1999/04/15
- Adjusted pfixtls.diff to postfix-19990317-pl04.
1999/04/14
- Ported from OpenSSL the BIO_callback functions to dump out the negotiation
and transmission for debugging purposes. The functions are triggered
by the new loglevels 3 and 4.
- Call SSL_free() to get rid of the SSL connection structure not used
anymore.
1999/04/13 == Released 0.1.4 ==
1999/04/13
- Based on a hint in the openssl-users list added an SSL_set_accept_state()
before the actual SSL_accept(). I don't really understand why, but the
documentation of SSL is a bit short anyway.
1999/04/11
- Some more comments on certificates in the documentation.
1999/04/10
- Moved initialization of the pfixtls_server_engine to the pre_jail_init()
section of smtpd, so that it is called with root privileges to read the
key and cert information. The secret key of the server can now be protected
by "chown root secretkey.pem; chmod 400 secretkey.pem".
Additionally, this makes it possible to run smtpd in chroot jail, even
though I didn't test that, yet. All information is read at smtpd startup
time except the CAcerts in tls_CApath, which are checked at runtime.
I have to look into that.
- Updated documentation accordingly.
- Rewrote the documentation with regard to the certificate setup and
explaining the different types of certificates.
1999/04/09
- Introduced pfixtls_print_errors() which imitates BIO_print_errors()
(the typical way to print error information in OpenSSL) but writes
to syslog instead of a file handle.
Hence we can get more informative error information.
1999/04/08 == Released 0.1.3 ==
1999/04/08
- Stuffed up the documentation by reworking the references.
- Added contributed script for automatic addition of fingerprints.
- Added ACKNOWLEDGEMENTS file
1999/04/06 == Released 0.1.2 ==
1999/04/06
- Portability: removed call of "snprintf()", as it is not available on
some (older) UNIX versions (in this case Solaris 2.5).
- Removed calls to "select()" when in TLS mode: Even though no new bytes
arrive, there might be bytes left in the SSL buffer -> possible hang.
1999/03/30 == Released 0.1.1 ==
1999/03/30
- Added disclaimer about export restrictions.
- Fixed a bug in util/match_ops.c:
When using dictionary lookup the compare was case sensitive by accident.
Effect: Fingerprint matching did not work with databases, only for plain
file.
Bug report submitted to postfix author.
1999/03/29 == Released first version 0.1.0 ==
|