1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886
|
Newsgroups: comp.mail.mh,comp.answers,news.answers
Subject: MH Frequently Asked Questions (FAQ) with Answers
Keywords: FAQ,mh,mail,question,answer,pop,slocal,letter,signature,
draft,message,folder,xmh,olmh,vmail,vmailtool,comp,repl,
forw,scan,SMTP,bind,MH-E,MIME,plum,exmh,nmh
Summary: This document answers Frequently Asked Questions about MH, a
sophisticated mail interface. It should be read by new MH
users and comp.mail.mh readers and before posting to this group.
Followup-To: poster
Approved: news-answers-request@MIT.Edu
Reply-To: Bill Wohler <wohler@newt.com>
From: Bill Wohler <wohler@newt.com>
Organization: Newt Software, Menlo Park, California, USA
Archive-name: mail/mh-faq/part1
Last-modified: $Date: 2012-11-23 21:47:03 -0800 (Fri, 23 Nov 2012) $
Version: $Revision: 11334 $
Posting-Frequency: monthly
This is a living list of frequently asked questions on the mailer
user interface, Mail Handler, or MH. The point of this is to
circulate existing information, and avoid rehashing old answers.
Better to build on top than start again. Please read this document
before ever posting to this newsgroup.
This article is posted monthly. If it has already expired and you're
not reading this, you can hope that you saved the instructions to
retrieve the FAQ (see "Where can I get MH") so that you can get a
copy through other means.
Please do not post an answer when someone posts a frequently asked
question; rather, email the relevant section of the FAQ to eliminate
unnecessary traffic in this newsgroup.
This list depends on your comments, additions and fixes: please send
them to Bill Wohler <wohler at newt.com>.
Copyright 1991-1999, 2001, 2004-2007, 2012 Bill Wohler
Permission to use, copy, distribute, and translate this document for
any non-commercial purpose is hereby granted, provided that this
copyright notice appears in all copies. Commercial distributions
require prior written consent.
This article is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
----------------------------------------------------------------------
Subject: Table of Contents
From: Bill Wohler <wohler at newt.com>
Date: Sat, 3 Mar 2001 11:29:16 -0800
Legend: + new, - deleted, ! changed
__________________
01.00 Introduction
01.01 Why should I use MH?
!01.02 What is the current version/status of MH?
!01.03 Where can I get MH?
01.04 What references exist for MH?
01.05 What other MH software is available?
01.06 How can I print a MH manual?
01.07 How should I report bugs?
01.08 How can I convert from my mailer to MH?
01.09 What is the copyright status of nmh?
_________________
02.00 Building MH
02.01 What machines does MH run on?
02.02 How do I build MH?
02.03 What options should I use?
02.04 What do I need to do to use POP?
02.05 Does MH support IMAP?
02.06 Why does "mailgroup mail" only affect inc and not slocal?
02.07 How can I build MH on Solaris 2?
02.08 How can I build MH on Linux?
02.09 How can I build MH on IRIX?
02.10 How can I get MH to interpret the Content-Length field?
02.11 How do I build MH on HP-UX?
02.12 Can I prevent adding the local hostname to addresses behind firewalls?
02.13 Is there a patch to fix this or that?
02.14 How can I build MH on OS/2?
02.15 Do any POP/IMAP servers handle MH format?
!02.16 How can I build MH on Windows?
!02.17 How can I build MH on a Mac?
________________________
03.00 Scanning & Reading
03.01 What do I do if scan shows the wrong date?
03.02 How would one go about reading Usenet with MH?
03.03 How can I search through multiple folders?
03.04 Why don't MH format commands such as %(friendly) work?
03.05 Why doesn't "show" display all of a MIME message?
03.06 Can I get show not to run "less" so much on MIME messages?
03.07 Why do I get "mhn: don't know how to display content"?
03.08 How can I automatically delete MH backup files?
03.09 Fixing "cannot fopen and lock /var/spool/mail/(user)"
03.10 Can I read my mail with a Web browser?
03.11 How can I run inc automatically with POP?
03.12 Why does inc hang (on Sun)?
03.13 How can I get POP to work?
03.14 How do I persuade mhshow (mhn) not to bring up a new window?
03.15 How do I turn off of all the mhshow (mhn) prompts?
03.16 Why is inc splitting messages improperly?
03.17 Can MH thread messages?
03.18 How can I avoid reading the HTML version of the message?
03.19 How do I view or save attachments?
03.20 How do I view HTML attachments with Netscape?
03.21 Fixing folders: unable to allocate storage for msgstats
03.22 How do I recursively list message attachments?
03.23 Why do folder and flist overlook some of my sub-folders?
____________
04.00 Filing
04.01 Can I append MH messages to a Unix mailbox format file?
04.02 Can I append MH messages to a GNU Emacs rmail BABYL-format file?
04.03 Why do I get ".../.mh_sequences is poorly formatted?"
04.04 How can you save News articles into an MH folder?
04.05 Are there any good tools to archive MH messages?
04.06 How can I remove duplicate messages?
04.07 How can I remove holes in numbering?
__________________________
05.00 Composing & Replying
05.01 Why does repl add a "Re:" to a message that already has one?
05.02 How do I include messages in repl with or without ">"?
05.03 How can I eliminate duplicate copies of letters to myself?
05.04 How can I include my signature?
05.05 How do I call my editor with arguments?
05.06 How can I digestify messages in a folder for mail to another user?
05.07 How can I change my return address?
05.08 How can I change my From header?
05.09 How can I save a copy of all messages I send?
05.10 Can the folder in Fcc: be dynamically specified?
05.11 Can I post secure/encryped mail?
05.12 How can I send multi-media (MIME) attachments?
05.13 What's the best way to send mail to a long list of people?
05.14 What is the Dcc header?
05.15 How can I make sense of the replcomps file?
05.16 How can I convert quoted-printable to 8bit in quoted text in replies?
05.17 Can I have aliases include aliases?
05.18 Why doesn't mhmail understand aliases?
05.19 How do I send blind carbon copies?
05.20 When I forward a message, can I use its Subject?
05.21 Why is the timezone field in my 'Date:' field wrong?
05.22 Can I automate the comp -editor mhn process?
05.23 How can I remove those "=20" characters when forwarding?
05.24 Can I use mh-format substitution with forw?
05.25 How can I keep repl from breaking long lines?
05.26 How do I fix a bogus In-Reply-To or missing References field?
_____________
06.00 Posting
06.01 What to do with "Problems with edit - draft removed".
06.02 Can I run my message through a program (e.g., ispell) before sending?
06.03 What to do with "bad address 'xxx' - no at-sign after local-part".
!06.04 Fixing "post: problem initializing server; [BHST] no servers available"
06.05 Fixing "post: problem initializing server; [RPLY] 503 Sender
already specified"
06.06 Fixing "post: unexpected response; [BHST] no socket opened"
06.07 How do I fix the "X-Authentication-Warning" header?
06.08 Fixing "post: unexpected response; [RPLY] 503 Need MAIL
before RCPT"
!06.09 Fixing "post: problem initializing server; [BHST] premature
end-of-file on socket"
06.10 Fixing "Sender didn't use the HELO protocol"
06.11 Fixing "post: problem initializing server; [RPLY] 553 Local
configuration error, hostname not recognized as local"
__________________
07.00 Mail Filters
07.01 What mail filters are available?
07.02 Why slocal writes messages to system mailbox that from(1) can't read.
07.03 Where can I read about slocal and the format of .maildelivery?
07.04 How do I debug my .maildelivery file?
07.05 Why isn't slocal working?
07.06 Are there any good biff applications for MH?
07.07 How do I read new messages filed by procmail?
__________
08.00 MH-E
08.01 I have a question about MH-E
_________
09.00 Xmh
09.01 How can I get xmh to use Emacs as the editor?
09.02 Does xmh support subfolders?
09.03 How do I precede included messages with ">" when replying in xmh?
________
Appendix
Glossary & Acknowledgments
Switching xmh's editor
babyl2mh.pl
inco - babyl to MH converter
t2h - add hyperlinks to message viewed
srvrsmtp.c patch
IRIX config file
HP-UX 10.20 config file
Removing duplicate messages (Bourne)
Removing duplicate messages (Perl)
Removing duplicate messages (Perl)
------------------------------
Subject: Viewing This Article
From: Bill Wohler <wohler at newt.com>
Date: Mon, 27 Nov 1995 14:44:19 -0800
To skip to a particular question with Subject or number xx, use
"/^S.*xx" with most pagers. In GNU Emacs type "M-C-s ^S.*xx", (or
C-r to search backwards), followed by ESC to end the search.
To skip to new or changed questions, use "/^S.*[!+]" with most
pagers and "M-C-s ^S.*[!+]" in GNU Emacs.
This article is in digest format. nn may have already broken this
message into separate articles; if not, then type "G %". In rn, use
^G to skip sections.
This article is treated as an outline when edited by GNU Emacs. Run
"M-x describe-mode" to see available outline-mode commands. Useful
commands are "M-x hide-body", "C-c C-s" (show-subtree) and "M-x
show-all"
Check out the Usenet Hypertext FAQ Archive (see "What references
exist for nn?"). Files available by ftp, man pages, and other Web
pages, as well as cross-references like the one in this paragraph
are just a click away.
A "Date" field whose time is 00:00:00 is approximate. The month and
year in these fields represent the time they were added to the FAQ,
rather than when they were contributed by the author, as is the case
since November, 1995.
If you should need the Internet address, use nslookup or dig if you
have them, or send mail to <dns at grasp.insa-lyon.fr> with "help"
for a Subject.
References to $MHLIB refer to the directory that contains MH support
files and routines. This directory is usually /usr/lib/mh or
/usr/local/lib/mh (or /usr/local/nmh/lib or /etc/nmh for nmh). Do
not use $MHLIB literally; use the real, absolute path to your MH
library directory.
There are slight differences between the original MH and nmh. In the
text, the nmh command or filename is preferred, and the MH
equivalent is placed in parenthesis. For example, the MH
configuration is in $MHLIB/mts.conf (mtstailor); mhshow (mhn -show)
is used to view attachments.
Note that due to bottom feeding email address harvesting spam scum,
mailto links have been removed and @s in addresses have been
replaced by "at."
------------------------------
Subject: 01.00 ***** Introduction *****
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
------------------------------
Subject: 01.01 Why should I use MH?
From: Jerry Peek <jpeek at jpeek.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
The MH message handling system is a set of electronic mail programs
in the public domain. If your computer runs Unix, it can probably
run MH.
The big difference between MH and most other "mail user agents" is
that you can use MH from a Unix shell prompt. In MH, each command is
a separate program, and the shell is used as an interpreter. So, all
the power of Unix shells (pipes, redirection, history, aliases, and
so on) works with MH--you don't have to learn a new interface. Other
mail agents have their own command interpreter for their individual
mail commands (although the mush mail agent simulates a Unix shell).
Because MH commands aren't part of a monolithic mail system, you can
use them at any time; you don't have to start or quit the mail
agent. Because you use them from a shell prompt, you can use all the
power of the shell.
If your shell has time-saving aliases or functions (and most do),
you'll be able to use them with MH, of course. And because MH isn't
a monolithic mail agent, you can use MH commands in Unix shell
scripts, or call them from programs in high-level languages like C.
Unlike most mail agents, MH keeps each message in a separate file.
The filename is the message number. To rearrange the messages, MH
just changes the filenames. MH can use standard Unix file system
operations such as removing, copying and linking messages. The
message files are grouped into one or more folders, which are
actually Unix directories.
MH is free, powerful, flexible--and the basics are easy to learn.
------------------------------
Subject: !01.02 What is the current version/status of MH.
From: Bill Wohler <wohler at newt.com>
Date: Sun, 23 Sep 2007 23:51:52 -0700
The current official version of MH is 6.8.3, although a beta of
6.8.4 is available.
This version includes MIME, a multi-media MH package that implements
the new IETF work on Multi-media 822 (MIME). This allows you to
include things like audio, graphics, and the like, in your mail
messages. --Marshall Rose <mrose at dbc.mtview.ca.us>
MH now works with Kerberos as well.
In addition, a new program called mhparam extracts arguments from
.mh_profile which is useful in shell scripts.
Please see the file CHANGES in the distribution for more details.
Due to the languishing state of MH, Richard Coleman <coleman at
math.gatech.edu> created another version of MH called nmh based upon
MH 6.8.3. He added GNU autoconf to ease installation considerably
and fixed several bugs and inconsistencies. Doug Morris <doug at
mhost.com. hosted the web site, mailing lists, web pages, and CVS
repository for a long time. Ken Hornstein <kenh at pobox.com> picked
up the torch in 2002 and moved development to Savannah where Jon
Steinhart <nmh at fourwinds.com> joined him as a project maintainer.
See http://www.nongnu.org/nmh/. The stable version of nmh is 1.5.
The file docs/DIFFERENCES in the nmh distribution contains a list of
differences between nmh and MH.
GNU mailutils (version 2.99.97) is a collection of mail-related
utilities. At the core of mailutils is libmailbox, a library which
provides access to various forms of mailbox files (including remote
mailboxes via popular protocols and MH). See
http://www.gnu.org/software/mailutils/.
------------------------------
Subject: !01.03 Where can I get MH?
From: Bill Wohler <wohler at newt.com>
Date: Fri, 23 Nov 2012 12:19:17 -0800
MH comes standard with many systems.
nmh (or mailutils) can be installed on Debian-based systems with:
aptitude install nmh
On Red Hat-based systems, use:
yum install nmh
nmh source code releases are available at:
http://download.savannah.nongnu.org/releases/nmh/
GNU mailutils source code releases are available at:
http://ftp.gnu.org/gnu/mailutils/mailutils-latest.tar.gz
(or .bz2 or .lzma or .xz)
------------------------------
Subject: 01.04 What references exist for MH?
From: Bill Wohler <wohler at newt.com>
Date: Sun, 23 Sep 2007 23:51:41 -0700
The Web:
http://rand-mh.sourceforge.net/
http://www.nongnu.org/nmh/
http://www.gnu.org/software/mailutils/
http://mh-e.sourceforge.net/
Books:
MH & xmh: E-mail for Users & Programmers. Third edition. Jerry
Peek, with Bill Wohler and Brent Welch.
ISBN 1-56592-093-7. 738 pages.
O'Reilly & Associates, Inc.
Out of print as of August, 1996.
References to "the MH book" in this document refer to the third
edition (plus updates) of this book online at
http://rand-mh.sourceforge.net/book/. Section numbers for the
second edition may appear in parentheses.
There is another book that contains a number of examples of
advanced mail handing using MH as the example message handler.
It's also quite a good reference on email in general.
The Internet Message. Marshall T. Rose
ISBN 0-13-092941-7. 396 pages.
P T R Prentice Hall
Papers:
MHN Tutorial by Jerry Sweet
ftp://ftp.ics.uci.edu/pub/mh/contrib/multimedia/mhn-tutorial.ps.Z 141k
ftp://ftp.ics.uci.edu/pub/mh/contrib/multimedia/mhn-tutorial.tex.Z 48k
Usenet:
comp.mail.mh
gmane.mail.exmh.devel
gmane.mail.exmh.user
gmane.mail.mh-e.announce
gmane.mail.mh-e.devel
gmane.mail.mh-e.user
gmane.mail.nmh.devel
Mailing lists:
There are three mailing lists for nmh: nmh-announce, nmh-workers,
and nmh-commits. See:
http://savannah.nongnu.org/mail/?group=nmh
The page for each list contains a link to the archives.
MH-users archives:
Current archives can be found at:
http://lists.nongnu.org/archive/html/nmh-workers/
Older archive can be found in the mh-users and mh-workers archives
at:
http://sourceforge.net/project/showfiles.php?group_id=143658&package_id=188462
There are directions in the release notes. Basically, you can use
the individual commands "inc -file" to get the
messages into a folder, and then "scan", "pick", "show", and so on
(or your favorite commands in xmh, MH-E, etc.). --Jerry Peek
<jpeek at jpeek.com>
This document:
http://www.newt.com/faq/mh.html
http://faqs.cs.uu.nl/na-dir/mail/mh-faq/part1.html
MH-E documentation:
GNU Emacs 19.29 comes with a version of MH-E that includes online
(Texinfo) documentation. Try "C-h i m mh-e RET". It is also
available in HTML and PDF formats at
http://mh-e.sourceforge.net/manual/. See also "What other MH
software is available?" to see where you can get the latest
version of MH-E which includes the documentation sources.
exmh:
The FAQ is available at http://www.beedub.com/exmh/exmh-faq.html.
The online exmh sections from the MH book can be found at
http://rand-mh.sourceforge.net/book/index.html#chTourexmh
Signature and Finger FAQ:
http://www.faqs.org/faqs/usenet/signature-faq/
------------------------------
Subject: 01.05 What other MH software is available?
From: Stephen Gildea <gildea at stop.mail-abuse.org>, Bill Wohler <wohler at newt.com>
Date: Thu, 19 May 2005 21:20:57 -0700
MH-E is the Emacs interface to the MH mail system. It offers all the
functionality of MH, the visual orientation and simplicity of use of
a GUI, and full integration with Emacs and XEmacs, including
thorough configuration and online help.
MH-E allows one to read and process mail very quickly: many commands
are single characters; completion and smart defaults are used for
folder names and aliases. With MH-E you compose outgoing messages in
Emacs. This is a big plus for Emacs users, but even non-Emacs users
have been known to use MH-E after only learning the most basic
cursor motion commands.
Additional features include:
* attractive text rendering with font lock
* composition and display of MIME body parts
* display of images and HTML within the Emacs frame
* folder browsing with speedbar
* threading
* ticking messages
* lightning-fast full-text indexed searches of all of your email
* virtual folders to view ticked and unseen messages, search results
* multiple personalities
* signing and encrypting
* spam filter interaction
* XFace, Face, X-Image-URL header field support with picons
The GNU Emacs distribution includes MH-E.
MH-E is maintained at SourceForge:
http://mh-e.sourceforge.net/
From: Chris Menzel <cmenzel at philebus.tamu.edu>
Date: Sat, 15 Dec 2001 10:02:38 -0600
The terminal-oriented, fast, and powerful mutt mail client not only
supports the MH mail format but also supports .mh_sequences files,
providing a robust interface to MH. It is also amazingly
configurable and is very adept at handling MIME attachments and HTML
mail.
Unlike MH, the displayed message numbers do not necessarily
correspond to the message filenames. This makes threading and
sorting lightning fast but slower to display very large folders.
http://www.mutt.org/
From: Brent Welch <welch at acm.org>
Date: Tue, 20 Mar 2001 22:42:15 -0800
EXMH is a user interface for the MH mail system written in TCL/TK.
Exmh has MIME support, color feedback in the scan listing, a folder
display with one label per folder, clever scan caching, facesaver
bitmap display; background inc, various inc styles, searching over
folder listing and message body, a dialog-box interface to MH pick,
a simple built-in emacs-like editor, interfaces to other editors,
user preferences, user hacking support. For more info or to obtain
exmh, see:
http://exmh.sourceforge.net/
From: "Eric D. Friedman" <friedman at hydra.acs.uci.edu>
Date: Tue, 9 Feb 1999 22:52:44 -0800
Mhtake is a perl script that lets you add people to your mail
aliases file by typing mhtake [message #].
http://orion.oac.uci.edu/~friedman/mhtake.txt
From: Steinar Bang <sb at metis.no>
Date: Fri, 26 Jan 1996 13:51:08 +0100
Mew (an Emacs interface to MH that has MIME and PGP capabilities) is
found at:
ftp://ftp.aist-nara.ac.jp/pub/elisp/Mew/mew-current.tar.gz
[MH-E has had these capabilities since version 7.0 so mew is
obsolete if you use MH-E. --Ed]
From: James Perkins <jamesp at sp-eug.com>
Date: Fri, 1 Jan 1993 00:00:00 -0800
Vmh is designed for people using the bulletin-board features of MH,
where mail is stored in packed (single-file) folders. As a result,
use of this program cannot be mixed with the use of normal MH
commands. Vmh is a part of the official MH distribution.
From: James Perkins <jamesp at sp-eug.com>
Date: Fri, 1 Jan 1993 00:00:00 -0800
Xmh is a X11 mouse-based MH browsing tool. It is very powerful and
feature-filled and thus comes with a moderate learning curve. Its
dependence on the X11 environment makes it very reconfigurable, but
only by people well-versed in X applications programming. Its
message reply built-in-editor interface is not always popular among
those used to having MH bring up the editor of their choice.
Date: Fri, 1 Jan 1993 00:00:00 -0800
xmh is part of the standard X Window System distribution from the X
Consortium. Ultrix also ships dxmail which is similar.
ftp://cs.utk.edu/pub/xmh.shar.Z 162k
From: Harald Tveit Alvestrand <hta at boheme.er.sintef.no>
Date: Fri, 1 Jan 1993 00:00:00 -0800
Here's a version of xmh that includes MIME.
ftp://aun.uninett.no/pub/mail/mixmh/mixmh-0.3.tar.Z 232k
From: Nathaniel Borenstein <nsb at thumper.bellcore.com>
Date: Sun, 26 Nov 1995 19:04:51 -0800
Metamail is a package that can be used to convert virtually ANY
mail-reading program on Unix into a multi-media mail-reading
program. It is an extremely generic implementation of MIME
(Multipurpose Internet Mail Extensions), the proposed standard for
multi-media mail formats on the Internet. The implementation is
extremely flexible and extensible, using a "mailcap" file mechanism
for adding support for new data formats when sent through the mail.
At a heterogeneous site where many mail readers are in use, the
mailcap mechanism can be used to extend them all to support new
types of multi-media mail by a single addition to a mailcap file.
The metamail distribution comes complete with a small patch for each
of over a dozen popular mail reading programs, including Berkeley
mail, mh, Elm, Xmh, Xmail, Mailtool, Emacs Rmail, Emacs VM, Andrew,
and others. Note that the MH patches are now integrated into MH 6.8.
ftp://ftp.bellcore.com/pub/nsb/mm2.7.tar.Z
From: Tom Christiansen <tchrist at perl.com>
Date: Tue, 9 Feb 1999 22:55:24 -0800
Plum is a highly configurable and extensible screen-oriented
front-end for processing MH mail on ASCII terminals. Unlike MH-E,
the extension language used in plum is perl, not LISP. Plum offers
many of the advantages of xmh, but lacks several of xmh's
disadvantages. The look&feel derives more from vi than from emacs.
Key bindings and functions may be changed on the fly to suit the
user's preference. It offers filename and word completion on folder,
variables, and command names.
Until it is included in the standard distribution (under
miscellany), you can find a copy on:
http://www.cpan.org/authors/Tom_Christiansen/scripts/plum.gz 29k
or mail requests to Tom
From: Jerry Sweet <jsweet at irvine.com>
Date: Tue, 1 Nov 1994 00:00:00 -0800
Mhunify is a set of perl scripts and templates that provides
shell-level MH functionality with USENET news. Since MH supports
MIME, MIME-format news articles just work. I've found that being
able to handle news in the same way that I handle email is very
useful, although there are some tradeoffs.
Mhunify also treats MH folders just like news groups. If you
subscribe to several mailing lists, and your email is automatically
delivered to separate folders, say, via procmail or via MMDF's
.maildelivery, the mhunify package lets you progress automatically
through your folders just as you would news groups.
ftp://ftp.ics.uci.edu/pub/mh/contrib/multimedia/mhunify.shar.gz
From: Dale Carstensen <dlc at c3file.c3.lanl.gov>
Date: Tue, 1 Nov 1994 00:00:00 -0800
olmh is a demo for OLIT (Open Look Interface Toolkit, the Open Look
wrapper to Xt) in Sun's Open Windows 3 that does handle 3rd and
subsequent levels of nesting of folders.
Obtain the Open Windows 3 distribution CD/ROM from Sun (SPARC only).
To do this, call 1-800-USA-4SUN and send tone "2" for telemarketing
after it answers. The 4.1.2 CD/ROM may also have Open Windows 3. The
list price for the 4.1.2 CD/ROM is $200.
From: James Perkins <jamesp at sp-eug.com>
Date: Sun, 1 May 1994 00:00:00 -0800
Vmail is a curses-based, vi-like message browser which calls on MH
programs to manipulate mail. It can be used on almost any terminal.
It organizes mail folders into index pages, from which a message can
be selected to be shown, replied-to, forwarded, refiled, deleted,
and so on. The vi-like interface and command keystrokes are
comfortable to less-experienced Unix users, and it is a small,
compact program, unlike the MH-E Emacs package.
This version of vmail has been bugfixed and enhanced from the
original vmail published on the net in 1987 by J. Zobel.
ftp://ftp.uu.net/comp.sources.unix/volume12/vmail/part0*.Z 46k
ftp://ftp.ucs.ubc.ca/pub/mh/vmail.[1-3]of3.Z 58k
Or mail requests to James.
From: James Perkins <jamesp at sp-eug.com>
Date: Sun, 1 May 1994 00:00:00 -0800
vmailtool may be for you if you have a Sun workstation. It is a
button gadget panel for the above-mentioned vmail program. It brings
vmail into the windows era where people no longer need to memorize
specific command keystrokes. It also provides a mail icon with the
flag that pops up when new mail arrives. Again, this is a compact,
simple tool, unlike the powerful xmh program. Still, it's a welcome
alternative for many people who are running SunView or OpenWindows.
ftp://ftp.ucs.ubc.ca/pub/mh/vmailtool.Z 18k
or mail requests to James.
MMH, My Mail Handler, is a Motif interface for reading and sending
mail. It uses the MH commands to actually handle sending a receiving
messages. It does not support all the capabilities of MH, but offers
a large enough subset to handle the majority of users. Its intended
user is someone between "bumbling email novice" and "sophisticated
user". Hooks are provided to allow the user to customize and add new
commands.
ftp://ftp.eos.ncsu.edu/pub/bill/bill.tar.Z 120k
From: Andrew Waugh <ajw at mel.dit.csiro.au>
Date: Fri, 1 Jan 1993 00:00:00 -0800
X.500 lookups: If a name is enclosed in square brackets, when
entering a destination address:
To: [Greg Wickham,CSIRO]
a search will be made in the X.500 Directory for the individual's
entry. If an address exists then it will be extracted and placed
into the headers. Mail requests for the software to the author.
From: Barbara Dyker <dyker at teal.csn.org>
Date: Fri, 1 Jan 1993 00:00:00 -0800
QueueMH is an email based service request and tracking system based
on the Rand Mail Handler.
ftp://ftp.cs.colorado.edu/pub/cs/sysadmin/utilities/queuemh.tar.Z 98k
From: <info at rootgroup.com>
Date: Mon, 1 Mar 1993 00:00:00 -0800
Qmh is an MH-based group mail management tool. Written entirely in
perl, Qmh combines the best aspects of MH with group mail heuristics
and delivers a sensible package for all levels of Unix users. A
limitless number of individual queues and associated groups of
permitted users can be established.
Specific functionality includes the following modes of operation;
checking header dates and sending reminder/deadline mail, editing
existing messages, help screens, creating new messages from scratch
or exiting messages, resolving messages, scanning queue folders, and
annotating with status both by editing and sending mail.
Qmh is a single generic program in and of itself from which all
modes of operation are invoked. Additionally, each separate queue
may be accessed via a link to the single program. All system
configuration is maintained in a single file that is read upon each
invocation of Qmh. Formatting and template files are provided in the
system library, although individual users can override the defaults
simply by creating equivalent files in their own MH mail directory.
Qmh provides a powerful database-like functionality by allowing
limitless per-queue X-Qmh-<$value> headers to be included in
messages. These "fields" then form the context of the queue messages
and provide a user-defined, but yet structured environment for
queries, reporting, and random information.
Qmh is designed to provide a complete solution for SA groups, help
desks, support organizations, or wherever two or more individuals
are trying to manage multiple mail requests.
Qmh is also compatible with versions of xmh that provide user-level
command buttons. Provided in the Qmh package is a ~/.Xdefaults
template file that's setup to harness the power of Qmh.
From: Jerry Peek <jpeek at jpeek.com>, Shannon Yeh <yeh at netix.com>
Date: Sun, 11 Mar 2001 00:23:21 -0800
MacMH and PC/MH:
These were available only for non-commercial degree-granting
institutions from:
Networking & Communication Systems
115 Pine Hall
Stanford University
Stanford, CA 94305-4122
Phone: +1 415-723-3909
See also:
ftp://netix.com/pub/pc-mh-info/*
For more PC/MH info, contact:
Netix Communications, Inc.
15375 Barranca Parkway
Building G, Suite 107
Irvine, CA 92718
Phone: +1 714-727-9532
FAX: +1 714-727-3922
Internet: info at netix.com
In addition, you might try Wollongong, to see if they have
something you can get.
[This information appears to be out of date. Please send me
pointers to valid information. Potential sites include
jessica.stanford.edu. --Ed]
Two other potential methods to run MH under Windows: Run Unix
under Windows with VMware (http://www.vmware.com/) or try to
compile nmh with the Cygwin tools (http://www.cygwin.com/).
------------------------------
Subject: 01.06 How can I print a MH manual?
From: Bill Wohler <wohler at newt.com>, Jos Vos <jos at bull.nl>
Date: Sun, 23 Sep 2007 23:51:33 -0700
Documentation in text and PostScript format is found in the
MH-doc.tgz tarball on:
http://sourceforge.net/project/showfiles.php?group_id=143658&package_id=188464
To generate your own copy for printing, first obtain the MH sources
(see "Where can I get MH?") if you don't already have it. Go into
the "doc" directory and run "make guide" to create the
administrators guide and "make manual" to create a user's manual
which includes tutorials and man pages. If the doc directory is
empty or is missing the Makefile, you'll have to run "mhconfig MH"
in the conf directory so that the documentation with correct local
information is created.
For properly formatting the documentation (at least the manual
pages) you might even have to install MH, because a reference to a
tmac.h file in the MH lib directory is made in the manual pages.
------------------------------
Subject: 01.07 How should I report bugs?
From: Bill Wohler <wohler at newt.com>
Date: Wed, 29 Sep 2004 00:12:42 -0700
Bugs in nmh should be reported at:
http://savannah.nongnu.org/bugs/?group=nmh
Bugs in MH-E should be reported at:
http://sourceforge.net/tracker/?atid=113357&group_id=13357
------------------------------
Subject: 01.08 How can I convert from my mailer to MH?
From: Mike Sutton <mws115 at llcoolj.dayton.saic.com>
Date: 7 Jul 1995 10:03:50 GMT
The unrmail function will convert rmail format to mbox format.
From: Jerry Peek <jpeek at jpeek.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
If you use one of a mail agent like 'mail', 'mailx', 'elm' or
'mush', converting to MH is easy. When you run the 'inc' command, it
reads all new messages from the system mailbox into your 'inbox'
folder. Those mail agents also have separate files or "folders" that
hold messages in the same format as the system mailbox. You can read
them with the 'inc -file' command. For example, to read the messages
from your 'mbox' mail file into your MH 'inbox' folder, you'd type:
% cd
% cp mbox mbox.backup
% inc -file mbox
If you see the usual "Incorporating new mail into inbox..." message
and a scan listing, the messages probably were converted. Read some
or all of them (with the 'show' command) and be sure. The 'inc'
won't remove your mbox unless you use '-truncate'.
From: "Jason R. Mastaler" <jason at Mastaler.COM>
Date: Mon, 1 May 1995 00:00:00 -0800
You can also specify an alternate folder to inc. Here's how you can
convert all your folders en masse:
for arg in `cat flist`; do
echo "converting $arg"
inc +"$arg" -file "$arg" -silent
done
Section D.4 of the MH book's second edition lists two scripts to
convert mail files to MH folders: babyl2mh to convert from rmail's
BABYL format; vmsmail2mh to convert from VMS's mail (see "What
references exist for MH") to see where the book's examples can be
ftped from). These scripts aren't in the third edition but are in
its archive file.
From: Vivek Khera <khera at cs.duke.edu>
Date: Fri, 1 Jan 1993 00:00:00 -0800
I rewrote the above script in Perl since the original script doesn't
work for some people (see "babyl2mh.pl" below).
From: Juergen Nickelsen <nickel at cs.tu-berlin.de>
Date: Fri, 1 Jan 1993 00:00:00 -0800
You can remove the second to last second line ("> $input"), so that
the script doesn't zero out your RMAIL file.
Another alternative is to replace this line with "inc -file $tmpmbox
$folder && > $input", so that the RMAIL is only zeroed if inc
successfully incorporated the mail. Finally one could add a switch
-z, so that the RMAIL file is only zeroed if the switch is given.
(See "Appendix inco".)
Date: Sun, 1 May 1994 00:00:00 -0800
Use the following to convert a BABYL format file to Unix mail
format.
ftp://inf.informatik.uni-stuttgart.de/pub/gnu/emacs_extras/rmailtovm.el.Z
6k
See also MH book second edition (Appendix D).
------------------------------
Subject: 01.09 What is the copyright status of nmh?
From: Richard Coleman <coleman at math.gatech.edu>
Date: Mon, 10 Oct 2005 18:16:58 -0700
nmh is distributed under a variant of the classical BSD copyright.
Check the COPYRIGHT file in the nmh distribution for the details.
There are some specific files which were contributed to the original
MH package that are copyrighted by their original author. We have
retained the copyright notices of these authors in these files.
------------------------------
Subject: 02.00 ***** Building MH *****
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
------------------------------
Subject: 02.01 What machines does MH run on?
From: Bill Wohler <wohler at newt.com>
Date: Thu, 19 May 2005 21:22:55 -0700
MH isn't just for Unix any more. Versions are reported to run on
OS/2 (see "How can I build MH on OS/2?"), Windows (see "How can I
build MH on Windows?"), and Mac (see "How can I build MH on Mac?").
Oh yeah, the Mac is now Unix. Maybe Windows Longhorn will be built
on Unix too.
From: Jerry Peek <jpeek at jpeek.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
If you have a computer running Unix, you can probably run MH.
------------------------------
Subject: 02.02 How do I build MH?
From: Bill Wohler <wohler at newt.com>
Date: Sun, 8 Sep 1996 15:13:12 -0700
If you're using Linux, you can simply install the nmh or MH package
which is available in most distributions.
If you want to build nmh, follow the directions in the file named
INSTALL. Basically, it's simply "./configure; make; make install."
If you have MH on the other hand, if you carefully read the file
named READ-ME in the root of the source hierarchy, you should not
have any trouble building MH.
If you're having troubles building MH, it could be that the problem
has already been fixed, but hasn't yet gotten into an official
release. Please see http://www.gw.com/mail/mh/patches/ for more
info.
------------------------------
Subject: 02.03 What options should I use?
From: Bill Wohler <wohler at newt.com>
Date: Tue, 1 Dec 1992 00:00:00 -0800
BERK: Do NOT include the BERK option (in versions 6.7 or later)!
BERK breaks the mh-format functions that take apart address lines,
for example mbox, from, and friendly. This would really put a crimp
on my replcomps file.
LOCKF: if you have NFS, you need to lock your mailbox with lockf()
so the lock will be honored by all machines on the local network. If
you have the lockf() system call, include LOCKF.
JQ Johnson <jqj at duff.uoregon.edu> makes the point that one should
use this option carefully since it requires a robust lockf() call.
For example, this option caused serious problems on his SunOS 4.1.1.
He suggested using LOK_BELL instead, and adding "lockstyle: 1" to
$MHLIB/mts.conf (mtstailor).
ATZ: makes your timezones print like "EST" instead of "-0500". Much
prettier. --Stephen Gildea <gildea at stop.mail-abuse.org>
However, Tony Landells <ahl at technix.oz.au> replies: "Yes; very
pretty. How unfortunate that timezone names are so ambiguous, so
that EST can be interpreted, at a minimum, as (American) Eastern
Standard Time, (Australian) Eastern Standard Time, or (Australian)
Eastern Summer Time (and yes, I think it's dumb having the same
acronym for both normal and Summer time, but that's a different
problem). While the numeric timezones may not look as nice, they
are, at least, reasonably unambiguous. I would urge anyone who ever
intends/hopes/expects to use email outside the U.S. to NOT use ATZ
(sorry Stephen)."
At any rate, the conf/examples directory has been updated and
contains many examples show you which options are required on your
platform and which are optional (in the upcoming version MH 6.8). At
any rate, it is recommended that you examine the options in the
example configuration files, and read about them in READ-ME.
RPATHS: a side-effect is that slocal writes messages to your system
maildrop without the MMDF C-A's that separate messages, so your BSD
tools like from work.
------------------------------
Subject: 02.04 What do I need to do to use POP?
From: Bill Wohler <wohler at newt.com>
Date: Sun, 8 Sep 1996 23:31:01 -0700
MH6.7 (and earlier versions too) include a server for version 3 of POP.
From: Morgan Fletcher <morgan at tupelo.best.com>
Date: 14 Mar 1996 19:24:23 -0800
Ensure that /etc/services contains the following:
pop2 109/tcp postoffice # POP version 2
pop2 109/udp
->pop 110/tcp # POP version 3 (MH's inc thinks it's "pop")
->pop 110/udp
pop3 110/tcp # POP version 3
pop3 110/udp
Also compile with the POP options: POP, DPOP, RPOP, etc.
From: Richard Coleman <coleman at math.gatech.edu>
Date: 06 Feb 1997 03:43:17 -0500
To get MH to use the pop3 service, add POPSERVICE=pop3 to your MH
configuration and recompile:
------------------------------
Subject: 02.05 Does MH support IMAP?
From: Lyndon Nerenberg <lyndon at MessagingDirect.COM>
Date: 27 Jul 1999 11:33:39 -0600
Run exmh on the laptop, and modify your .mh_profile to inc using
APOP. This is how I run MH-E and it works fine. (I did have to
modify MH-E a wee bit to allow it to prompt for the password. You
would likely have to do something similar with exmh.)
As a spare time project I'm adding enough IMAP support to MH (6.8.3)
to allow you to 'inc -imap [-imapfolder foo]'. If I ever get this
done I'll stick the diffs up somewhere. (It's not a big priority as
I can get at my IMAP INBOX using APOP.)
From: Tim Showalter <tjs at andrew.cmu.edu>, John Prevost <visigoth at cs.cmu.edu>
Date: Wed, 25 Sep 1996 21:34:56 -0400
We are developing fmh and intend to support as much of MH as is
feasible. However, MH and IMAP don't necessarily agree as to what
things are going to look like. MH has static message numbers until
you pack a folder; IMAP keeps two numbers on a message, one which is
absolutely static and one which is relative to the top of a mailbox.
Messages in IMAP are essentially immutable. IMAP doesn't (currently)
allow message annotations. fmh will keep state with a background
daemon instead of writing it to disk, and will probably try and keep
as little on disk as possible.
fmh doesn't understand MH folders at the moment, and probably won't
for a really long time, if ever. As I said before, we're mostly
interested in the IMAP aspects as we're using a networked file
system and saving stuff on the local disk just isn't an option.
fmh is not MH at a very fundamental level. It is very unlikely that
it will be merged, as we're not quite as interested in creating
something that is MH and IMAP as we are in writing a good IMAP
client. Also, the MH code isn't going to take the introduction of
IMAP without a near complete rewrite.
It is not available yet. Inquiries are welcome at <tjs+fmh at
andrew.cmu.edu>.
From: Rahul Dhesi <dhesi at rahul.net>
Date: 23 Sep 1996 08:39:52 GMT
What prevents people from doing a telnet to their mail server,
logging in, and firing up MH directly? Site policy? An operating
system that does not let MH compile or run? Overloaded machine with
insufficient processing power for MH? All these are site-specific
problems and the solution lies in solving them locally, not in
forcing MH to go over IMAP.
IMAP was never designed to emulate a filesytem. MH was designed to
make direct advantage of the filesytem structure. There is no
compatibility between the two. By the time IMAP is revised enough to
support MH you will have reinvented NFS.
There *is* scope for redesign here, though. It would be nice to have
a single-user filesystem. Create a binary telnet session to the
filesystem server, log in as yourself, and then over that session
run a filesystem protocol. Normal filesystem protections at the
other end will be sufficient for all permissions checking, so the
filesystem protocol would need to do no other permissions checking.
The question of whom to export directories to would go away: They
are exported to whoever completes a successful login, and accessible
to the user if he would be able to access them on the server as his
login id. You could even use challenge-response for the initial
login, coupled with ssh-based encryption, so you automatically have
a secure filesystem without even trying.
IMAP is too restricted in its scope to be easily modifiable to
emulate such a filesystem. It would have to be a redesign from
scratch.
From: John Romine <jromine at ics.uci.edu>
Date: Sun, 8 Sep 1996 15:45:27 -0700
No. MH only supports retrieving mail using POP3. POP3 is on the
"standards track"--it is now an elective Internet Draft Standard
(see RFC 1939 for more details). At this point, IMAP[23] are
"experimental, limited use" protocols; it is unlikely that MH will
support them.
From: Bill Wohler <wohler at newt.com>
Date: Sun, 8 Sep 1996 15:45:32 -0700
Since John posted the message above, IMAP has progressed from an
"experiemental, limited use" protocol. While IMAP is not universal,
many vendors now have implementations.
I've found several things which might help. First, a definition
lifted from the Pine FAQ:
What is IMAP?
IMAP stands for "Internet Message Access Protocol". An IMAP client
program on any platform at any location on the Internet can access
email folders on an IMAP server. While the messages appear to be
local, they reside on the server until the client explicitly moves
or deletes them. The IMAP protocol is a superset of POP, containing
all POP commands plus more. For a comparison of IMAP and POP, see
the paper Comparing Two Approaches to Remote Mailbox Access: IMAP
vs. POP (in ftp.cac.washington.edu:/mail/imap.vs.pop). IMAP is what
allows Pine (or any other IMAP client) to get to email on a central
campus email server. There are current IETF working groups revising
IMAP and readying it to become an Internet standard. A copy of the
latest IMAP draft may be obtained from:
ftp://ftp.cac.washington.edu/mail/latest-imap-draft
For a list of IMAP clients, see the file imap.software, in the same
directory.
From: David L Miller <dlm at cac.washington.edu>
Date: Mon, 1 Aug 1994 00:00:00 -0800
ipop3d from the UW IMAP toolkit can operate in a couple modes. As a
straight POP3 server, it uses the same C-client library as imapd, so
it co-exists comfortably with imapd. It can also operate as a
POP-to-IMAP gateway so that your POP-only clients can access IMAP
services.
ftp://ftp.cac.washington.edu/mail/imap.tar.Z 1.0M
From: Mark Crispin <MRC at Panda.COM>
Date: Mon, 1 Aug 1994 00:00:00 -0800
The only answer I can give for [how MH users can use IMAP] is that
Pine can read mailboxes in MH format; and that someone might in the
future develop a version of MH that can use IMAP.
------------------------------
Subject: 02.06 Why does "mailgroup mail" only affect inc but not slocal?
From: John Romine <jromine at ics.uci.edu>
Date: Fri, 1 Jan 1993 00:00:00 -0800
If "mailgroup" is set, inc is made set-group-id to this group name.
Some SYS5 systems want this to be set to "mail". Set this if
/usr/spool/mail (or /usr/mail) is not world-writable. These changes
were contributed by Peter Marvit, and "inc" is very careful about
its use of the set-gid privilege.
Note that slocal doesn't know how to deal with this, and will not
work under these systems; just making it set-group-id will open a
security hole (since it doesn't know when to drop the set-gid
privileges). If you're using "mailgroup", you should remove slocal
(and its man page) from your system.
Alternatives to slocal include deliver, procmail, and mailagent.
(See "What mail filters are available?")
------------------------------
Subject: 02.07 How can I build MH on Solaris 2?
From: Richard Coleman <coleman at math.gatech.edu>
Date: Tue, 20 Jan 1998 02:19:58 -0500
nmh builds out of the box on Solaris.
From: Bill Wohler <wohler at newt.com>
Date: Sun, 8 Sep 1996 15:56:31 -0700
See http://www.gw.com/mail/mh/patches/solaris/ for patches you may need.
From: Neil Rickert <rickert at cs.niu.edu>,
Scott K. Hutton <shutton at habanero.ucs.indiana.edu>,
Casper H.S. Dik <casper at fwi.uva.nl>
Date: Sun, 8 Sep 1996 15:57:25 -0700
First, don't use the BSD compatible stuff. Make sure that the Sun or
GNU compiler appear before the BSD compiler in your PATH (e.g.,
/usr/ccs/bin).
Second, don't use GNU make. Make sure that the Sun make appears
before the GNU make in your PATH.
Use conf/examples/solaris2.sun.com and fix the paths, if necessary.
Optionally change the following to use the GNU compiler, to perform
optimization, and to create shared libraries.
cc gcc
ccoptions -O -g -msupersparc
slflags -shared
Fix mhn.c with the diff in
http://www.gw.com/mail/mh/patches/solaris/si_value_2.3.
Optionally incorporate the Content-Length header fix. (See "How can
I get MH to interpret the Content-Length field?")
Linking with /usr/ucblib/libucb.so is incompatible with including
<dirent.h>.
When compiling, you can ignore the following warning:
fmtcompile.c, line 238: warning: semantics of "/" change in ANSI C;
use explicit cast
If you're using AFS, you'll have to replace any occurrence of "ln"
with "ln -s" wherever the make dies when it tries to make a link "on
a different file system."
See also ftp://ftp.fwi.uva.nl/pub/solaris/solaris2.faq.
Date: Thu, 1 Dec 1994 00:00:00 -0800
Unset LD_LIBRARY_PATH.
From: Gary Strand <strandwg at ncar.ucar.edu>
Date: Mon, 1 May 1995 00:00:00 -0800
To cure slocal's Segmentation Fault problems, I decided to try 'cc'
instead of 'gcc' (an alleged no-no under Solaris) and MH built just
fine, and it's working perfectly.
From: "Jason R. Mastaler" <jason at Mastaler.COM>
Date: Mon, 25 Sep 1995 17:35:13 -0400
Don't use "ldoptions -s" with gcc. It may cause the compile to fail
with:
gcc: Internal compiler error: program ld got fatal signal 11
*** Error code 1
From: "Jeffrey T. Eaton" <jeaton at galt.com>
Date: Fri, 04 Apr 1997 15:30:36 GMT
Fixed [DBM_PAGFNO_NOT_AVAILABLE error] by getting the latest gdbm
package, compiling and installing it and the dbm/ndbm compatability
stuff, and moving Sun's broken ndbm.h out of /usr/include.
To fix "../sbr/libmh.so: undefined reference to
`__builtin_va_arg_incr'", add "option __BUILTIN_VA_ARG_INCR" to your
MH configuration.
------------------------------
Subject: 02.08 How can I build MH on Linux?
From: Richard Coleman <coleman at math.gatech.edu>
Date: Tue, 20 Jan 1998 02:19:58 -0500
nmh should build out of the box for most Linux systems.
From: Bill Wohler <wohler at newt.com>
Date: Tue, 9 Feb 1999 23:04:53 -0800
The Debian distribution of Linux comes with an MH and nmh packages.
See
http://www.debian.org/.
See also http://www.gw.com/mail/mh/patches/linux/.
From: "James A. Robinson" <jimr at simons-rock.edu>
Date: 17 Apr 96 20:39:02 GMT
Somebody on Debian ported it to Linux ELF. Look on
ftp://ftp.debian.org/debian/stable/binary/mail/mh_6.8.4-13.deb for
the .deb package of MH (it's a compressed tar file). The source is
in ftp://ftp.debian.org/debian/stable/source/mail/mh_6.8.4-orig.tar.gz
and mh_6.8.4-13.diff.gz.
From: Brian Kirouac <bri at psa.pencom.com>
Date: 18 Apr 96 14:00:20 GMT
If you are running Redhat and have rpm available you can also use
ftp://???/pub/redhat-3.0.3/i386/RedHat/RPMS/mh-6.8.3-5.i386.rpm. The
source code is in
ftp://???/pub/redhat-3.0.3/i386/SRPMS/mh-6.8.3-5.i386.rpm
From: "Brandon S. Allbery" <bsa at kf8nh.wariat.org>
Date: Sun, 26 Nov 1995 16:18:50 -0800
The current patch is the first one listed below. The old patch only
works with libc-4.4, which is no longer used. The current patch is
split into two pieces, as with the previous patch, but now the
divisions are purely functional: the first diff enables MH to
compile, the second allows creation of a shared library. [The paths
are up to date, but I think the info in this paragraph is old. --Ed]
Recent versions of GNU make choke on MH's makefiles. Unfortunately,
the shared library patches depend on "export". If you have problems
building MH, remove the "export" lines from all of the makefiles (if
you applied the shared library patches) and try using BSD pmake
instead.
If you don't want to compile MH, the second file contains
pre-compiled ready-to-run binaries which can simply be extracted in
the root directory.
ftp://sunsite.unc.edu/pub/Linux/system/Mail/readers/mh-6.8.3-diffs.tar.gz
ftp://sunsite.unc.edu/pub/Linux/system/Mail/readers/mh-6.8.3-bin.tar.gz
The sizes are 650k and 22k respectively.
Note that these files are occasionally "cleaned up" by accident so
please let me know if they are missing.
------------------------------
Subject: 02.09 How can I build MH on IRIX?
From: Richard Coleman <coleman at math.gatech.edu>
Date: Tue, 20 Jan 1998 02:19:58 -0500
nmh should build out of the box for Irix.
From: Bill Wohler <wohler at newt.com>
Date: Sun, 8 Sep 1996 15:33:22 -0700
See http://www.gw.com/mail/mh/patches/sgi/ for patches you may need.
From: Arne K. Frick <frick at info.uni-karlsruhe.de>
Date: 06 Jun 1995 18:30:01 GMT
There is a file at viz.tamu.edu:/pub/sgi (see FAQ) containing a diff
and sample configuration. If you cannot locate it, I can mail it to
you. Note, however, that I had tremendous difficulties with them
under 5.3:
1. Be sure to use /bin/make, NOT GNU make.
2. patch vomits over the diff. You can get around this by increasing the
"fuzz factor" to 4.
3. The Makefile target for the shared library doesn't work. I had to do it
by hand.
But I'm stuck compiling mhn.c.
From: Shankar Unni <shankar at sgi.com>
Date: 9 Jun 1995 01:53:48 GMT
The fix for compiling mhn.c is in
http://www.gw.com/mail/mh/patches/solaris/si_value_2.3.
From: Jack Repenning <jackr at informix.com>
Date: 25 Jul 1995 02:35:41 GMT
(See "IRIX config file") below.
------------------------------
Subject: 02.10 How can I get MH to interpret the Content-Length field?
From: Casper H.S. Dik <Casper.Dik at Holland.Sun.COM>
Date: Sun, 8 Sep 1996 15:38:30 -0700
Apply http://www.gw.com/mail/mh/patches/solaris/content_length to
your MH distribution and add the configuration option
"CONTENT_LENGTH". It also includes the si_ fix in
http://www.gw.com/mail/mh/patches/solaris/si_value_2.3
------------------------------
Subject: 02.11 How can I build MH on HP-UX?
From: Bill Wohler <wohler at newt.com>
Date: Sun, 8 Sep 1996 15:50:54 -0700
If you find that your zotnet/tws directory isn't compiling, upgrade
your MH (see "What is the current version/status of MH?") which
includes fixes to lexedit.sed.
See http://www.gw.com/mail/mh/patches/hp/ for for patches you may need.
------------------------------
Subject: 02.12 Can I prevent adding the local hostname to addresses behind firewalls?
From: Ted Remillard <tedr at hood.sd.com>
Date: 24 Jun 1996 08:53:42 -0700
You can get MH to stop managing the headers and let the email server
to do it. To do this, build MH with the options DUMB and REALLYDUMB.
In the $MHLIB/mts.conf (mtstailor) file, set the server option to
the IP address of the email server. After this is done, MH sends
email directly to the email server and Local email To: and From:
fields just have the user's simple email address, e.g., <fred>, and
the remote email From: header will contain user@domainname, e.g.,
<fred@sd.com>.
Don't forget to define the REALLYDUMB option in the file
sbr/addrsbr.c described below.
From: Bret Rothenberg <bretr at endeavour.exar.com>
Date: Tue, 23 Jan 1996 12:25:24 -0800 (PST)
Yes, use the "localname" parameter in "$MHLIB/mts.conf" (mtstailor)
to specify the desired hostname.
From: Ken Hornstein <kenh at cmf.nrl.navy.mil>
Date: 18 Aug 1995 23:51:48 -0400
If you're behind a firewall and sendmail gives you fits because MH
adds the node name or site name to each address in the To: and CC:
fields, you'll need to modify the MH source.
The relevant source has to do with the REALLYDUMB option in
sbr/addrsbr.c. Essentially what you need to do is set it up so
REALLYDUMB is turned on (normally, it's turned off if you have MMDF
or SMTP turned on). This will do what you want. I did this at our
site, and it's been working great. The stuff for REALLYDUMB starts
around line 613.
------------------------------
Subject: 02.13 Is there a patch to fix this or that?
From: Kimmo Suominen <kim at tac.nyc.ny.us>
Date: Sat, 3 Mar 2001 13:40:35 -0800
The MH Patch Archive has been opened at
http://www.gw.com/mail/mh/patches/
It is a collection of patches to MH (the RAND MH Message Handling
System), a set of electronic mail programs in the public domain.
Since the last complete release of MH (version 6.8.3) UNIX systems
have evolved making changes in the MH code necessary. Several new
UNIX systems have emerged requiring new configuration templates and
examples. This archive tries to collect all these fixes and
enhancements that in the past have been available only through
word-of-mouth and occasional reposts to newsgroups or mailing lists.
The initial archive layout and the very time consuming collecting
and categorizing of patches has been done by Jerry Peek.
I will be the primary maintainer of the archive. Even though I will
be monitoring several sources for new material (mainly the
comp.mail.mh newsgroup but also the mailing lists <mh-workers at
ics.uci.edu>, <mh-e-users at lists.sourceforge.net> and
<exmh-workers at redhat.com>), I'd like to encourage everyone to
submit patches also directly to the archive at <mh-archive at
gw.com>.
------------------------------
Subject: 02.14 How can I build MH on OS/2?
From: Sanjay Aiyagari <sanjay at sandbox.snetnsa.com>
Date: 21 Nov 1996 19:37:10 GMT
ftp://ftp.jaist.ac.jp/pub/os/os2/network/MH/
------------------------------
Subject: 02.15 Do any POP/IMAP servers handle MH format?
From: "Carl S. Gutekunst" <csg at eng.sun.com>
Date: 27 May 1997 07:24:34 GMT
The University of Washington POP3 and IMAP servers can be backended
by a variety of stores, including MH. This is the basis for
Netscape's store, curiously enough. I haven't looked closely at how
Mark Crispin implemented support for the new IMAP4 features when
using an MH backend; it seems like there is a lot of computation
when opening a folder for the first time, writing in the UID fields
and such. But it basically appears to work.
From: Lyndon Nerenberg <lyndon at MessagingDirect.COM>
Date: 27 Jul 1999 11:36:25 -0600
But [the UW IMAP server] can't delete/expunge from MH folders. (At
least I've never been able to get it to work, and I've tried just
about everything.) #mh in UW imapd isn't something I'd recommend to
any serious MH user.
From: Mark Crispin <mrc at CAC.Washington.EDU>
Date: Tue, 27 Jul 1999 14:43:25 -0700
> But it can't delete/expunge from MH folders.
That's a very old version. delete/expunge has been in imap-4.x for a
long while. However, there's no sticky flags.
> #mh in UW imapd isn't something I'd recommend to any serious MH user.
The converse is also true. The two don't play ball very well.
From: Dieter Weber <dieter at Compatible.COM>
Date: 11 Feb 2003 04:23:38 -0800
The UW imap server supports MH folders. In order to see the MH
mailboxes, you need to "subscribe" to the folders or add them to the
.mailboxlist file in your home directory.
------------------------------
Subject: !02.16 How can I build MH on Windows?
From: David Levine <levinedl@acm.org>
Date: Sun Sep 30 22:45:08 CDT 2012
nmh is now available as a Cygwin package. Select it using Cygwin
setup. Or, download and build from source. Hacks are no longer
needed.
From: Satyaki Das <satyaki at theforce.stanford.edu>
Date: Wed, 19 Jun 2002 20:57:19 -0700
I have gotten MH-E to work on Windows (under Cygwin) using Earl
Hood's patched nmh. It was really quite simple, but not very
portable. I just needed to add/subtract "c:/cygwin" from a couple of
places. Now it can read and send mail (even does PGP attachments).
Thought this might be of interest to those of you stuck using
Windows at work.
From: Earl Hood <ehood at earlhood.com>
Date: Sat, 08 Jun 2002 20:30:44 GMT
I've made a tar/bz2 bundle available at
<http://www.nacs.uci.edu/indiv/ehood/tmp/nmh-1.0.4-ehood-cygwin.tar.bz2>
This includes the patched source with binaries pre-built.
I just remembered that I also had to hack the makefiles to get
things to install since windoze executables have to end with .exe. I
hacked the generated makefiles, so if you rerun configure, you may
lose the hacks. Also, I believe the install will fail when trying to
install the documentation, so to force things do:
make -i install
The binaries and support files should get installed (under
/usr/local/nmh), but the docs probably won't.
Then you will need to edit /usr/local/nmh/etc/mts.conf to reflect
your local configuration.
If anyone has any problems installing, I could zip up my
/usr/local/nmh since I think it contains everything needed for
runtime usage.
From: Bill Goffe <goffe at oswego.edu>
Date: 25 May 1999 18:13:55 GMT
If you have Windows, consider looking at VMware
http://www.vmware.com/
which provides a virtual machine where you can run Unix and
therefore MH under Windows.
From: Ted Nolan <ted at ags.ga.erg.sri.com>
Date: 24 May 99 17:20:27 GMT
The latest Cygnus Cygwin, GNU tools that run under Windows,
http://www.cygwin.com/
seems to work pretty well and may well be able to build nmh.
------------------------------
Subject: 02.17 How can I build MH on a Mac?
From: David Levine <levinedl@acm.org>
Date: Sun Sep 30 22:47:12 CDT 2012
nmh 1.3 and later build on Mac OS X out of the box.
From: Dr Eberhard W Lisse <el at lisse.na>
Date: Sun, 05 Jun 2005 13:43:19 +0100
nmh compiles on the G4 iBook running Mac OS X 10.3.7 more or less
out of the box with the powerpc HOST option. Use make all install.
Use fink to install the nmh package on Max OS X 10.3.9 (and 10.4.1).
metamail does not work out of the box. However,
metamail-2.7.19-1030.src.rpm (SuSE) which compiles and installs
cleanly.
For exmh, first use fink to install the tcltk package. Then use fink
to install exmh.
------------------------------
Subject: 03.00 ***** Scanning & Reading *****
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
------------------------------
Subject: 03.01 What do I do if scan shows the wrong date?
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Jan 1993 00:00:00 -0800
Upgrade to MH 6.8 or nmh.
From: Darryl Okahata <darrylo at sr.hp.com>
Date: 19 Jan 2000 23:01:10 -0800
MH 6.8.3 and nmh 1.0 still have a minor buglet where sortm doesn't
always sort messages properly. If a (questionable) mail client sends
messages with 2-digit years, like:
Date: Sat, 23 Oct 09 22:02:01 EST
or sends out buggy dates like (as buggy versions of Elm do):
Date: Sat, 23 Oct 100 22:02:01 EST
then sortm will not sort these messages properly.
I have submitted patches to nmh-workers.
------------------------------
Subject: 03.02 How would one go about reading Usenet with MH?
From: Bill Wohler <wohler at newt.com>
Date: Sun, 26 Nov 1995 12:32:09 -0800
You can post via mail. Send your article to <mail2news at
news.demon.co.uk> with a legitimate Newsgroups field.
From: Jerry Peek <jpeek at jpeek.com>
Date: Tue, 1 Nov 1994 00:00:00 -0800
You can save articles in the news readers for later perusal with MH.
First, create a symbolic link from your mail directory (e.g.,
usenet) to your news directory (e.g., "ln -s ~/News ~/Mail/usenet").
You can then treat your news directory as a mail folder. Thus, to
select a news group, use "folder +usenet/comp/mail/mh".
To set the default save location correctly in rn, use:
rn -M -/
or in your nn presentation sequence:
news.announce. +$F/$N
comp.mail.mh +
.
.
If there's news spooled on your machine (that is, not via NNTP) then
you can read a newsgroup with commands like:
show first +/usr/spool/news/comp/mail/mh
next
...
You can also use sequences to keep track of what you've read. MH
will automatically set a "cur" sequence in each newsgroup you read
that way. So, to continue reading the newsgroup sometime later,
after you've read some other folder, you can do:
next +/usr/spool/news/comp/mail/mh
and you'll read the next (new) article (if any) in that newsgroup.
Note that this can eventually make your private context file pretty
huge; if there's a group you don't read often, you can remove its
context entries with a command like:
rmf +/usr/spool/news/comp/mail/mh
Don't try that on a folder full of mail (a folder that isn't
read-only), though... in that case, it'll remove all the messages!
I haven't looked into posting. It seems like it shouldn't be hard.
You could set up a "sendproc" that would look at outgoing email
messages. If the message had a Newsgroups: header field, your
sendproc could call inews(1) instead of post(8). I haven't seen much
in the MH manpages or documentation about sendprocs (though I
haven't looked for a couple of years...). See the "mysend" script in
the MH book section 7.1.4 (13.13), or the URL:
http://rand-mh.sourceforge.net/book/mh/senove.html#ASAtDm
A threaded news reader like trn or tin is so much nicer, though,
that reading news with MH may not be worth the hassle.
See also MH book section 9.9 (8.7), or the URL:
http://rand-mh.sourceforge.net/book/mh/shafol.html
From: Stephen Gildea <gildea at stop.mail-abuse.org>
Date: Fri, 1 Mar 1991 13:03:15 -0800
Although news readers are better, if one really wants to use MH, bbc
will do the job. For example, "bbc comp.mail.mh" reads this
newsgroup. To enable bbc, you have to specify "bboards" when you
build MH.
From: Kimmo Suominen <kim at tac.nyc.ny.us>
Date: 15 Aug 1996 18:18:10 GMT
Sendmail v8 comes with MAILER(pop) which was written for the MH
spop. Since I use bboards with NNTP, I never looked at the bboards
setup.
Date: Tue, 1 Nov 1994 00:00:00 -0800
See mhunify in (see also "What other MH software is available?").
------------------------------
Subject: 03.03 How can I search through multiple folders?
From: Jerry Peek <jpeek at jpeek.com>
Date: Mon, 1 Mar 1993 00:00:00 -0800
Recurse through the folders (in csh and sh):
% foreach f (`folders -f`) $ for f in `folders -f`
? pick [switches] +$f > pick [switches] +$f
? end > done
Or create a folder that contains links to all messages (in csh and sh):
% foreach f (`folders -f | grep -v -x ln`)
? refile -src +$f -link all +ln
? end
$ for f in `folders -f | grep -v -x ln`
> do refile -src +$f -link all +ln
> done
and in the future, refile messages with "refile +folder +ln". To
find something, use:
% pick [switches] +ln
See MH book sections 8.2.9 (7.2.9), 8.9.3 (7.8.3), or the URLs:
http://rand-mh.sourceforge.net/book/mh/finpic.html#SeMTOnFo
http://rand-mh.sourceforge.net/book/mh/usilin.html#AFoFuoLi
------------------------------
Subject: 03.04 Why don't MH format commands such as %(friendly) work?
From: Anthony Baxter <anthony at aaii.oz.au>
Date: Sun, 1 May 1994 00:00:00 -0800
The BERK option disables address parsing and therefore functions
such as %(friendly). Recompile MH without the BERK option.
------------------------------
Subject: 03.05 Why doesn't "show" display all of a MIME message?
From: Jerry Peek <jpeek at jpeek.com>
Date: Mon, 1 Aug 1994 00:00:00 -0800
It's not the fault of the "show" command or of MH in general. It's
your system's configuration. Check the $MHLIB/mhn.defaults
(mhn_defaults) file; if it doesn't have defaults for all content
types, add them. Or, if you can't (or shouldn't) change mhn.defaults
(mhn_defaults), you can put default entries in your MH profile file
for those content types.
Here's the part of the mhshow(1) (mhn(1)) manpage that explains how
content types are handled. The example is for mhshow, but if you're
using mhn, you'd replace mhshow with mhn:
First, mhshow will look for an entry of the form:
mhshow-show-<type>/<subtype>
to determine the command to use to display the content. If this
isn't found, mhshow will look for an entry of the form:
mhshow-show-<type>
to determine the display command. If this isn't found, mhshow has
two default values:
mhshow-show-text/plain: %pmoreproc '%F'
mhshow-show-message/rfc822: %pshow -file '%F'
If neither apply, mhshow will check to see if the message has a
application/octet-stream content with parameter "type=tar". If so,
mhshow will use an appropriate command. If not, mhshow will
complain.
So, add defaults that cover the types MH doesn't handle right now
(or doesn't handle the way you want it to). Your defaults will
override corresponding defaults in the $MHLIB/mhn.defaults
(mhn_defaults) file. For example, if you don't have an HTML
editor/browser on your system, you could tell MH to use the "less"
paginator for HTML message parts:
mhshow-show-text/x-html: less %F
You can put that line in your MH profile.
You can even set different defaults for different terminal types
(say, your VT100 at home and your X setup at work). Make a file in
the same format as mhn.defaults (mhn_defaults); store its pathname
in the MHSHOW (MHN) environment variable. Add a test to your shell
setup file (.bash_profile, .profile, .login) that tests the value of
the TERM variable -- and, if you have an mhshow (mhn) setup file for
that terminal type, store its pathname in the MHSHOW (MHN) variable.
See also MH book sections 6.2.3, 9.4.4, 9.4.5, or the URLs:
http://rand-mh.sourceforge.net/book/mh/remime.html#HomhShMe
http://rand-mh.sourceforge.net/book/mh/confmhn.html#ShComhsh
http://rand-mh.sourceforge.net/book/mh/confmhn.html#DiOChSmc
From: Michael K. Neylon <mneylon at engin.umich.edu>
Date: Tue, 1 Nov 1994 00:00:00 -0800
If you are not using the X Window System, you may have to add this
line to your MH profile:
mhshow-charset-iso-8859-1: /bin/sh -c '%s' # nmh
mhn-charset-iso-8859-1: /bin/sh -c '%s' # MH
------------------------------
Subject: 03.06 Can I get show not to run "less" so much on MIME messages?
From: Richard Coleman <coleman at math.gatech.edu>
Date: Tue, 20 Jan 1998 02:19:58 -0500
On nmh, you can do this just by "show -nocheckmime". This will
disable the detection of MIME messages.
From: Bill Wohler <wohler at newt.com>
Date: Tue, 1 Nov 1994 00:00:00 -0800
If you say, "show all," and one of the messages was a MIME message,
your pager will be run several times on each message, rather than
once on all the messages as a whole. If you find this annoying, use
-nocheckmime.
See also MH book sections 6.2.3, 6.2.10, or the URLs:
http://rand-mh.sourceforge.net/book/mh/remime.html#HomhShMe
http://rand-mh.sourceforge.net/book/mh/remime.html#Alttomhn
------------------------------
Subject: 03.07 Why do I get "mhn: don't know how to display content"?
From: Richard Coleman <coleman at math.gatech.edu>
Date: Tue, 20 Jan 1998 02:19:58 -0500
This has already been fixed in nmh.
From: Keith Moore <moore at cs.utk.edu>
Date: Sun, 8 Sep 1996 15:49:50 -0700
MH 6.8.3 has a bug where it will not handle multipart/foo correctly
if it doesn't know about foo. The patch:
http://www.gw.com/mail/mh/patches/all/mhn_multipart
tells it to treat such things as if they were multipart/mixed.
(See also "Why doesn't "show" display all of a MIME message?").
------------------------------
Subject: 03.08 How can I automatically delete MH backup files?
From: mccammaa at expt05.stp.xfi.bp.com (Andy McCammont)
Date: 22 May 1995 06:27:36 -0400
On System V system, add this to your crontab. If you don't have one,
put this in a file, and run "crontab file". If your system does not
support personal crontab files, get your system administrator to add
an equivalent line to the system crontab file or daily clean-up
script. Note that some administrators set the prefix character to
'#'.
# Remove old MH files
5 5 * * * find /PATH/TO/HOME/Mail -name ",*" -mtime +5 -exec rm {} \;
------------------------------
Subject: 03.09 Fixing "cannot fopen and lock /var/spool/mail/(user)"
From: Patrick.Wambacq at esat.kuleuven.ac.be
Date: Mon, 30 Sep 96 15:00:16 +0200
One should put the following lines in the $MHLIB/mts.conf
(mtstailor) file:
lockldir:
lockstyle: 1
This prevents MH from using kernel level locking, and uses lock
files instead. It solved the problem for me on two different
architectures. When the lockldir entry is left empty as above, the
lock file is put in the same directory as the file to be locked. If
another directory is wanted, its name should be put here.
From: alhy at MAILBOX.SLAC.Stanford.EDU
Date: Mon, 9 Sep 1996 01:01:16 -0700
Often, this is caused by an NFS file lock. Don't ask me how it got
there in the first place. To remove the file lock, do the following:
# cd /var/spool/mail
# cp user /tmp/user.tmp; rm user # save mail; remove locked file
# chown user /tmp/user.tmp # allow user to inc old mail
# su - user
user% inc -file user.tmp # incorporate user's old mail
Any mail that you receive in the fraction of a second that the
second set of commands takes will be lost.
(See also "Why does inc hang (on Sun)?")
------------------------------
Subject: 03.10 Can I read my mail with a Web browser?
From: Jerry Heyman <jerry@fourwinds.cx>
Date: Sat, 09 Oct 2004 12:41:03 -0400
See http://www.squirrelmail.org/
SquirrelMail is a standards-based webmail package written in PHP4.
It includes built-in pure PHP support for the IMAP and SMTP
protocols, and all pages render in pure HTML 4.0 (with no
JavaScript required) for maximum compatibility across browsers. It
has very few requirements and is very easy to configure and
install. SquirrelMail has all the functionality you would want
from an email client, including strong MIME support, address
books, and folder manipulation.
No MH support. Unless you're willing to write it...
From: J C Lawrence <claw at kanga.nu>
Date: Wed, 10 Dec 2003 09:54:15 -0500
UW-imap can read MH folders although it doesn't maintain sequence
files properly. Drop any of the IMAP web front ends in front of
that.
From: aeriksson at fastmail.fm
Date: Wed, 10 Dec 2003 22:36:52 +0100
Have a peek at http://wmh.sf.net/. It's been a while since I worked
on it, but it does give me what I need.
Date: Mon, 05 Oct 1998 11:02:52 -0500
From: Kent Landfield <kent at nfr.net>
Hypermail now supports MIME and alternate mailbox formats and sorts
by author, date, and thread and can be read by a WWW reader.
http://www.landfield.com/hypermail/
From: "Patrick A. Coronato" <coronato at me216.teb.allied.com>
Date: 8 Sep 1995 16:36:03 GMT
MHonArc, by Earl Hood from Convex, will read MH mailboxes as well as
Unix mailboxes, create HTML "archives" and will also sort by date,
thread and author and has support for MIME. Also, MHonArc is written
in the Perl language. (You should go to this site if nothing more
than to see the cool logo!)
http://www.mhonarc.org/
------------------------------
Subject: 03.11 How can I run inc automatically with POP?
From: Bill Wohler <wohler at newt.com>
Date: Mon, 27 Nov 1995 12:23:51 -0800
If MH has been compiled with RPOP, then the POP server host either
needs to have your host in /etc/hosts.equiv or in your .rhosts file.
Then add to your MH profile:
inc: -host cuckoo
given that "cuckoo" is the name of the your POP server.
From: Andy Norman <ange at hplb.hpl.hp.com>
Date: Mon, 1 May 1995 00:00:00 -0800
Assuming your POP server is called cuckoo, add an entry to your MH
profile for 'inc' like so:
inc: -noaudit -norpop -noapop -host cuckoo
Add the following to ~/.netrc and ensure it [grants no permissions to
group or other] (e.g., chmod 600 .netrc):
machine cuckoo.domain.name login joeuser password secret
Replace the hostname, login and password with your own, of course.
The hostname probably has to be fully qualified (i.e., include the
full domain name). This example assumes that you can send mail by
other means (e.g., with SMTP).
------------------------------
Subject: 03.12 Why does inc hang (on Sun)?
From: ericding at mit.edu (Eric J. Ding)
Date: 30 Apr 1996 00:22:01 -0400
This may be due to a non-robust implementation of lockf() over NFS.
Try setting lockstyle to 1 in the $MHLIB/mts.conf (mtstailor) file
so that MH uses dotfile locking rather than FLOCK or LOCKF.
------------------------------
Subject: 03.13 How can I get POP to work?
From: Jonathan George <jmg at hpopd.pwd.hp.com>
Date: Tue, 23 Apr 1996 10:23:16 GMT
If you get the error:
inc: -ERR Unknown command: "rpop"
you're trying to use "rpop" as the mechanism to authenticate the
user. This mechanism is specified in RFC 1225 and then removed by
RFC 1460.
Your POP server is (rightly) rejecting this.
The POP specification (RFC 1939) states that authentication is done
either via a USER/PASS pair or via the APOP command.
Try running inc with -noapop -norpop flags.
------------------------------
Subject: 03.14 How do I persuade mhshow (mhn) not to bring up a new window?
From: Joel Reicher <joel at panacea.null.org>
Date: Tue, 13 Nov 2001 16:49:04 +1100
I personally think [the solution below] is not the right solution.
There's a reason that new window is opened--to ensure the correct
characters are available. The "right" solution is surely to set the
MM_CHARSET env var to iso-8859-1 and make the appropriate
adjustments to the pager (in the case of less, setting
LESSCHARSET=latin1).
From: Larry Daffner <ldaffner at convex.com>
Date: 27 Mar 1996 16:53:39 -0600
Add one of the following to your .mh_profile:
mhshow-charset-iso-8859-1: %s # nmh
mhn-charset-iso-8859-1: %s # MH
------------------------------
Subject: 03.15 How do I turn off of all the mhshow (mhn) prompts?
From: Bill Wohler <wohler at newt.com>
Date: Sun, 11 Mar 2001 11:33:10 -0800
In nmh, use mhshow -nopause.
From: Larry Daffner <ldaffner at convex.com>
Date: 27 Mar 1996 16:53:39 -0600
The "part xxx" message is controlled by the -list switch to mhn so
add "mhn: -nolist" to your .mh_profile. To remove the pause, add an
entry for "mhn-show-text/plain: more '%F'" to override the default
which includes the "%p" escape. All of this is covered in the mhn
man page (sort of--you need to add 2+2). It's a bit long, but well
worth reading.
------------------------------
Subject: 03.16 Why is inc splitting messages improperly?
From: Mayank Choudhary <micky at eng.sun.com>
Date: Mon, 29 Apr 1996 09:39:29 -0700
MH considers "From " lines as message separators, so if this string
is found within the body, inc splits the message.
Add the following line to your .forward
"|/usr/bin/mailcompat <user-name>"
where user-name is your login-id.
See mailcompat(1) for more information.
------------------------------
Subject: 03.17 Can MH thread messages?
From: "John W. Coomes" <jcoomes at delirius.cs.uiuc.edu>
Date: 30 Apr 1997 13:02:10 -0500
Sort of. You can resort your folders by Subject with:
sortm -textfield subject
------------------------------
Subject: 03.18 How can I avoid reading the HTML version of the message?
From: Bill Wohler <wohler at gbr.newt.com>
Date: 23 Jun 2000 10:19:34 -0700
You might find that you have two versions of the same message within
the message. For example, one part might have a content type of
text/plain and the other might be text/html.
You may find that mhshow (mhn -show) wants to show the HTML version
This is a feature of the multipart/alternative content type. If you
prefer reading the the plain text version over the HTML version,
you'd have to remove the line in $MHLIB/mhn.defaults or
~/.mh_profile that starts with mhshow-show-text/html
(mhn-show-text/html). Of course, the tradeoff is that you'd never be
able to view text/html at all, but you probably wouldn't care.
------------------------------
Subject: 03.19 How do I view or save attachments?
From: Bill Wohler <wohler at gbr.newt.com>
Date: Mon, 5 Mar 2001 09:12:15 -0800
Use mhshow (mhn -show) and mhstore (mhn -store) respectively. See
the man pages for more details.
------------------------------
Subject: 03.20 How do I view HTML attachments with Netscape?
From: Bill Wohler <wohler at gbr.newt.com>
Date: Mon, 5 Mar 2001 09:58:05 -0800
Add one of the following to ~/.mh_profile:
mhshow-show-text/html: %lnetscape -remote 'openURL(file:%f, new-window)'
mhn-show-text/html: %lnetscape -remote 'openURL(file:%f, new-window)'
The % escapes are described in the mhshow (mhn) man page. The ",
new-window" argument in the netscape invocation is optional, but
handy. After reading the message, you can dismiss the window with
M-w and go back to reading mail.
------------------------------
Subject: 03.21 Fixing folders: unable to allocate storage for msgstats
From: Pete Phillips <pete at smtl.co.uk>
Date: 30 Jan 2003 03:33:57 -0800
I found the following in my context file:
atr-cur-/tmp: 1
atr-pseq-/tmp: 1
For some reason folders doesn't like this. Whether it's because of
permission problems or just the size of my tmp directory (about 3/4
of a GB) I don't know, but removing these lines from my context file
fixed the problem.
------------------------------
Subject: 03.22 How do I recursively list message attachments?
From: Joel Reicher <joel at panacea.null.org>
Date: 31 Oct 2001 00:36:14 +1100
I haven't quite managed a recursive listing, but I have worked out a
recursive store, which is still useful. Hinted by a builtin display
string for mhshow, I found the following works for mhstore:
mhstore-store-message/rfc822: | mhstore -file -
With that, mhstore will happily recurse down storing everything on
its way. Not very discriminate, but the line can be altered to limit
without destroying the recursion:
mhstore-store-message/rfc822: | mhstore -auto -type message/rfc822 -type image/jpeg -file -
which also names the files automatically for good measure.
And, FWIW, I engage this by putting it in a separate file and
invoking mhstore like
env MHSTORE=mhn.rec mhstore
------------------------------
Subject: 03.23 Why do folder and flist overlook some of my sub-folders?
From: Richard Coleman <coleman at math.gatech.edu>
Date: Mon, 10 Oct 2005 18:14:24 -0700
There was a bug in these commands which caused them to quit
searching a folder for sub-folders too early if the folder contained
sub-folders which were symbolic links. This has been improved in
nmh-0.25, but folder and flist will still not recurse into folders
that contain only symbolic links.
------------------------------
Subject: 04.00 ***** Filing *****
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
------------------------------
Subject: 04.01 Can I append MH messages to a Unix mailbox format file?
From: Richard Coleman <coleman at math.gatech.edu>
Date: Tue, 20 Jan 1998 02:19:58 -0500
In nmh, use packf instead.
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Jan 1993 00:00:00 -0800
Yes, see $MHLIB/packmbox.
------------------------------
Subject: 04.02 Can I append MH messages to a GNU Emacs rmail BABYL-format file?
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
To convert your MH folders to BABYL folders, first run the following
script on your Mail directory.
#!/bin/sh
for f in Mail/*; do
if [ -d $f ]; then
touch msgbox
folder=`basename $f`
echo -n packing $folder ...
packf +$folder
echo done
mv msgbox Mail-rmail/$folder
fi
done
This assumes you don't have nested folders. Your rmail folders will
be left in $HOME/Mail-rmail in MMDF format which rmail can read.
Then run rmail-input for each folder, which converts each folder
into BABYL format.
Be sure not to append any messages before they are converted from
MMDF to BABYL, since there may be really strange results.
------------------------------
Subject: 04.03 Why do I get ".../.mh_sequences is poorly formatted?"
From: Richard Coleman <coleman at math.gatech.edu>
Date: Tue, 20 Jan 1998 02:19:58 -0500
This bug has been fixed in nmh (as of version 0.20). There are no
limitations on the length of an entry in the .mh_sequences file.
From: Jerry Peek <jpeek at jpeek.com>
Date: Mon, 1 Aug 1994 00:00:00 -0800
There is a line length limit in this file. When sequences are
unbroken (without gaps in numbering), that makes short entries in
the .mh_sequences file, like this:
inftex: 72-8000
But when there are lots of numbering gaps, the entry gets long:
inftex: 76 79-81 87 95-96 105 109 120 124 135 141 158 163...
That's when you run into problems, and why it's good to keep the
folder packed when you can. Simply run "folder -pack +folder".
If you're refiling a lot of messages in a large folder, you might
not be able to use sequences. Use backquotes to give the message
numbers directly to "refile". For example:
refile +tex/info-tex `pick -to info-tex`
That can still generate a long list of arguments to the "refile"
command, and some Unixes can't handle that. In that case, use
xargs(1):
pick -to info-tex | xargs refile +tex/info-tex
If worse comes to worst, fire up a Bourne shell and use a "while"
loop:
pick -to info-tex | fmt | while read nums; do
refile +tex/info-tex $nums
done
The fmt(1) command breaks long lines into manageable chunks of 72
characters or so, splitting arguments at whitespace. When you
redirect the input of a while loop, a "read" command will read the
incoming text and store it in a shell variable line by line. This is
a quick-&-dirty way to write xargs(1) if you don't have it.
------------------------------
Subject: 04.04 How can you save News articles into an MH folder?
From: Jerry Peek <jpeek at jpeek.com>
Date: Mon, 1 May 1995 00:00:00 -0800
If your newsreader handles backquotes on its command line, you can
use the mhpath command. For instance, if your "save" command is "s":
s `mhpath new +somefolder`
Or if your newsreader lets you define your own commands, as in shell
aliases, you could define that as a command.
If your newsreader can pipe an article to the standard input of a
program, use the "rcvstore" command (in the MH library). For
instance, if your "pipe" command is "|":
| $MHLIB/rcvstore +somefolder
Of course, you can also put that in a little shell script.
------------------------------
Subject: 04.05 Are there any good tools to archive MH messages?
From: Bill Wohler <wohler at newt.com>
Date: Sun, 23 Sep 2007 18:35:53 -0700
For those of lesser means, I have three shell scripts for archiving,
seeking, and extracting MH messages that I had been using for a
couple of decades. Send mail if interested.
However, now that disk space is cheap and one can index years worth
of mail in a minute or two, I haven't run those scripts in a few
years. I intend to update them to index and archive a years-worth of
mail at some point.
Since glimpse is no longer free (as in speech), I've switched to
swish++. Other indexing tools (which are also compatible with MH-E)
include mairix and namazu.
From: glimpse at cs.arizona.edu
Date: Sun, 4 Mar 2001 10:26:24 -0800
Glimpse is a very powerful indexing and query system that allows you
to search through all your files very quickly. It can be used by
individuals for their personal file systems as well as by
organizations for large data collections.
http://www.webglimpse.org/
------------------------------
Subject: 04.06 How can I remove duplicate messages?
From: Bill Wohler <wohler at newt.com>
Date: Sun, 17 Oct 2004 13:04:57 -0700
Don't let them get in there in the first place. Add the following to
your .promailrc:
:0
* ? formail -D 16384 $PM_CACHE/msgid
/dev/null
If it's too late, you might be interested in mhfinddup, attached
below, which is an embellishment of the Perl script in (see
"Removing duplicate messages (Perl)").
From: Jerry Peek <jpeek at jpeek.com>
Date: 20 Nov 1995 18:51:24 GMT
The easiest way I know of is to sort the folder by the Message-ID
field using the sortm(1) command.
After the sort, each message should be next to its duplicates in the
folder. Use a script (shell, Perl, etc.) to weed out the duplicates.
(See "Removing duplicate messages (Bourne)").
The Perl script in (see "Removing duplicate messages (Perl)") does
not require that you first sort the folder.
------------------------------
Subject: 04.07 How can I remove holes in numbering?
From: Bill Wohler <wohler at newt.com>
folder -pack
------------------------------
Subject: 05.00 ***** Composing & Replying *****
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
------------------------------
Subject: 05.01 Why does repl add a "Re:" to a message that already has one?
From: Larry McVoy <lm at slovax.Eng.Sun.COM>
Date: Fri, 1 Mar 1991 13:03:15 -0800
I carefully reconfigured and rebuilt MH from scratch and the problem
went away.
------------------------------
Subject: 05.02 How do I include messages in repl with or without ">"?
From: Richard Coleman <coleman at math.gatech.edu>
Date: Tue, 20 Jan 1998 02:19:58 -0500
In nmh, to include a message in a reply with a leading ">", just use
"repl -format".
From: Alan Thew <qq11 at liv.ac.uk>, Mike Schwager <schwager at cs.uiuc.edu>,
James T Perkins <jamesp at sp-eug.com>
Date: Fri, 1 Jan 1993 00:00:00 -0800
When making a reply, specify a filter file on the command line:
repl -filter repl.format
This filter file must be in your MH mail directory (usually "Mail",
in your home directory). Here are a couple of example repl.format
files:
overflowtext="",overflowoffset=0
message-id:nocomponent,formatfield=\
"In message %{text}, you wrote:"
body:component="> ",overflowtext="> ",overflowoffset=0
or
overflowtext="",overflowoffset=0
date:component="Your message dated",formatfield=\
"%<(nodate{text})%{text}%|%(pretty{text})%>"
body:component="> ",overflowtext="> ",overflowoffset=0
Setting overflowoffset to 0 keeps MH from doing anything to
extra-long lines in the headers. In the body, however, this behavior
is overridden so that long lines are automatically broken and a ">"
is inserted before every line. You could put almost whatever you
want between those quotes, although the "standard" ">" makes it
easier to read notes that have been included several times. The
examples differ with the descriptive text that is inserted before
the included body.
It is suggested not to use the "prompter" editor in this case, since
it is likely that you'll not want to use all of the included
message. Indeed, it is proper etiquette to edit out all unnecessary
include verbiage so readers don't have to wade through the morass to
read your pearls of wisdom.
WARNING: the '>' appears on the first line ONLY in versions prior to
6.7.2. Upgrade to MH 6.8.
See also MH book sections 7.8.4 (6.7.4), 7.8.5 (6.7.5), 10.4.1
(9.4.1), or the URLs:
http://rand-mh.sourceforge.net/book/mh/reprep-2.html#ReaEdi
http://rand-mh.sourceforge.net/book/mh/reprep-2.html#Inc
http://rand-mh.sourceforge.net/book/mh/verrep.html#IncRep
------------------------------
Subject: 05.03 How can I eliminate duplicate copies of letters to myself?
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
Add these two lines to your MH profile file:
Alternate-Mailboxes: user@host1, user@host2, ...
repl: -nocc me
The Alternate-Mailboxes also tells scan which messages are really
from you so that it can place the recipient in the scan line instead
of the sender.
From: Jerry Peek <jpeek at jpeek.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
To get one copy, you can either:
- Take out the "-nocc me"... then you'll get exactly one copy of
your replies (assuming all your addresses are listed in
Alternate-Mailboxes), or
- (See also "How can I save a copy of all messages I send?").
For more info, see the man pages comp(1), repl(1), forw(1),
dist(1) and mh-mail(5).
See also MH book sections 7.8.2 (6.7.2), 9.8 (8.6), or the URLs:
http://rand-mh.sourceforge.net/book/mh/reprep-2.html#Sel
http://rand-mh.sourceforge.net/book/mh/defmai.html
From: Alec Wolman <wolman at crl.dec.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
Listing the name of a mailing list in Alternate-Mailboxes is also a
convenient way to AVOID automatically cc-ing a mailing list when
replying to a person who sent the message to the mailing-list.
From: Andre Srinivasan <asriniva at us.oracle.com>
Date: Fri, 24 Jan 1997 09:33:19 -0800
Rather than specify the hostname as part of the mailbox, you can
simply specify the username and it will match on any host:
Alternate-Mailboxes: asriniva
------------------------------
Subject: 05.04 How can I include my signature?
From: Eric W. Ziegast <ziegast at uunet.uu.net>,
Hardy Mayer <hardy at golem.ps.uci.edu>
Date: Tue, 1 Nov 1994 00:00:00 -0800
There are several ways.
1) The MH way.
1a) In your Mail directory, create files that include your signature
into the format of the message.
~/Mail/components:
To:
cc:
Subject:
--------
--
Eric Ziegast ziegast at uunet.uu.net
UUNET Technologies uunet!ziegast
~/Mail/replfmt
body:component="> ",compwidth=2
:--
:Eric Ziegast ziegast at uunet.uu.net
:UUNET Technologies uunet!ziegast
To use the replfmt file, add the following to your ~/.mh_profile:
repl: -filter replfmt
When comp is used, your signature is already there along with my
headers. When repl is used, the mhl program takes the body of
the letter you're replying to, prepends '> ' to each line and
then adds your signature at the end (available after version
6.7).
1b) Create an "editor" which can be called from whatnow to add the
signature when desired or create a frontend to post (use the
.mh_profile line "postproc: postproc" to call it) that always
appends the .signature file before calling post to mail the
message. David J. Fiander <david at golem.uucp>, David A.
Truesdell <truesdel at nas.nasa.gov> and Tom Wilmore <sastjw at
unx.sas.com> have sample scripts to do these.
From: Jerry Peek <jpeek at jpeek.com>
Date: Tue, 1 Sep 1992 00:00:00 -0800
1c) mysend, a sendproc script, processes a message after "What now?
send". See "What references exist for MH" to see where the MH
book scripts can be ftped from. The script is explained in MH
book Section 7.1.4 (13.13), or the URL:
http://rand-mh.sourceforge.net/book/mh/senove.html#ASAtDm
2) Using your editor. If you use vi, you can use something like:
map S :r ~/.signature
to load your signature out of .signature every time you
hit 'S'.
3) Use your windowing system. xterm, for example, can provide key
and button mappings for the utterly lazy.
4) If you use Emacs with MH-E:
4a) C-c C-s will append the signature.
From: Andre Srinivasan <andre at neuronet.pitt.edu>
Date: Mon, 1 May 1995 00:00:00 -0800
4b) Add the following to your .emacs file:
(add-hook 'mh-compose-letter-function
(function
(lambda(a b c)
(save-excursion
(goto-char (point-max))
(beginning-of-line)
(mh-insert-signature)))))
This hook is called after the draft buffer has been initialized,
but before you have a chance to type anything.
From: Tom Christiansen <tchrist at perl.com>
Date: Tue, 1 Nov 1994 00:00:00 -0800
Tired of the same old signature? Want different signatures for
different newsgroups? Here's a program to help you out.
The way it works is to have .signature be a named pipe, so if you
don't have named pipes, just say 'n'.
The sigrand program then feeds stuff down the pipe every time
someone wants to read it. That way it works for more than just news,
but for anything that wants to read your .signature, like a mailer.
You have your choice of three kinds of signatures:
1) random (short) fortune from "fortune -s"; you get these if
you don't have a global sig file.
2) random fortune from ~/News/SIGNATURES [global sig file]
3) random fortune form ~/News/(newsgroup)/SIGNATURES [local sig files]
Send mail if interested.
Date: Tue, 1 Nov 1994 00:00:00 -0800
See also the Signature FAQ (see "What references exist for MH?").
------------------------------
Subject: 05.05 How do I call my editor with arguments?
From: John Romine <jromine at ics.uci.edu>
Date: Mon, 1 May 1995 00:00:00 -0800
Set your editor (in .mh_profile) to the following shellscript.
#/bin/sh
<youreditor> <yourargs> "$@"
exit 0
From: Ray Nickson <Ray.Nickson at comp.vuw.ac.nz>
Date: Fri, 1 Mar 1991 13:03:15 -0800
You might find it useful to make <youreditor> $EDITOR, or to use
different arguments depending on your EDITOR environment variable.
------------------------------
Subject: 05.06 How can I digestify messages in a folder for mail to another user?
From: Jerry Peek <jpeek at jpeek.com>, Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
How about:
forw [-digest tmp] [-form forwcomps] [-filter mhl.digest]
messages +folder
These messages can be un-digestified :-) by the MH burst(1) program.
See also MH book sections 7.9.7 (6.8.7), 8.10 (7.9), or the URLs:
http://rand-mh.sourceforge.net/book/mh/forfor-2.html#CreDig
http://rand-mh.sourceforge.net/book/mh/burdig.html
From: Glenn Vanderburg <glv at utdallas.edu>
Date: Tue, 1 Nov 1994 00:00:00 -0800
There's another way, which is better if the recipient understands
MIME.
forw -mime messages +folder
(Make sure that you either have "automhnproc: mhn" in your mh
profile, or type "edit mhn" to whatnow before you send it.)
This bundles each message in a MIME message/rfc822 part, and then
bundles the whole mess up in a multipart/digest part. You can still
add your own text at the beginning. The MH burst program can also
understand these messages and split them apart with no problem. This
works beautifully with MIME-capable mail readers, especially exmh.
------------------------------
Subject: 05.07 How can I change my return address?
From: Bill Wohler <wohler at newt.com>
Date: Tue, 1 Dec 1992 00:00:00 -0800
If you find that your mailer creates a From header that others have
trouble replying to, you can add a Reply-To header to override the
From header in replies.
Copy the components and replcomps files which are normally found in
$MHLIB into your Mail directory and add a line like the following
after the Subject header replacing my address with your address:
Reply-To: jack@newt.com
------------------------------
Subject: 05.08 How can I change my From header?
From: Bill Wohler <wohler at newt.com>
Date: Mon, 27 Nov 1995 11:40:50 -0800
With either of the following solutions, you'll need to add an
Alternate-Mailboxes entry in your MH profile so that scan prints
"To: recipient" rather than your faked address. For example, if your
real address is user@somedomain.com and you've added a From field
of:
From: Joe Bob <joe.bob@somedomain.com>
you'll add the following to .mh_profile:
Alternate-Mailboxes: joe.bob@somedomain.com
From: Bill Wisner <wisner at netcom.com>
Date: Tue, 1 Dec 1992 00:00:00 -0800
If you're just interested in changing the hostname, add a line to
$MHLIB/mts.conf (mtstailor):
localname: desired_host_name
From: Jerry Peek <jpeek at jpeek.com>
Date: Tue, 1 Dec 1992 00:00:00 -0800
Just put a "From:" header in your "components", "replcomps" and
"forwcomps" files. MH will add a "Sender:" header with what it
thinks is your real address.
------------------------------
Subject: 05.09 How can I save a copy of all messages I send?
From: Ping Huang <pshuang at sgihub.corp.sgi.com>
Date: Mon, 18 Dec 1995 17:51:33 -0800
I suggest the use of the Dcc: field (See "What is the Dcc header?"),
since the use of "Dcc:" solves the issue of having the same
Message-Id. The warning about using Dcc: in general contexts doesn't
apply to self-blind-carbon copies, and if "Dcc:" is used and you are
automatically sorting messages into folders based on mailing lists,
messages which you send will get refiled in the same way. Some may
prefer all outgoing messages to be segregated; others (including
myself) prefer not to segregate outgoing messages.
From: Bill Wohler <wohler at newt.com>, Jerry Peek <jpeek at jpeek.com>
Date: Mon, 1 Aug 1994 00:00:00 -0800
Copy the components and replcomps files which are normally found in
$MHLIB into your Mail directory and add a line like the following
after the cc header:
Fcc: +out
All outgoing messages will then be saved in the +out folder. If you
make a distcomps file, it needs "Resent-Fcc:".
From: Jeppe Sigbrandt <jay at elec.gla.ac.uk>
Date: Sat, 5 Apr 1997 02:04:53 +0100
You can also use @ in the Fcc field to file the outgoing message in
the current folder.
Fcc: @
This is useful if you filter your mail (e.g., with procmail) and you
read your mail in folders other than +inbox.
From: David S. Goldberg <dsg at linus.mitre.org>
Date: 30 Oct 1995 10:23:55 -0500
You can get the Message-ID field by placing the folder in the "Fcc"
field and adding:
send: -msgid
to your .mh_profile. Unfortunately, this Message-ID isn't as useful
as sendmail's--it doesn't include the date.
------------------------------
Subject: 05.10 Can the folder in Fcc: be dynamically specified?
From: Andy Rabagliati <andyr at wizzy.com>
Date: Mon, 1 Aug 1994 00:00:00 -0800
My suggestion would be to run Tom Christiansen's rfi script. If you
cannot find it on *.sources archive sites (please try first), I can
mail it to you.
One good idea would be to write a whatnowproc that files the mail
based on a procmail or deliver file. Then you can use the same file
for incoming and outgoing mail.
------------------------------
Subject: 05.11 Can I post secure/encryped mail?
From: Bill Wohler <wohler at newt.com>
Date: Thu, 19 May 2005 18:06:39 -0700
MH-E 7.0 supports GPG out of the box.
From: Bill Wohler <wohler at newt.com>
Date: Mon, 5 Mar 2001 05:30:43 -0800
PGP keys can be obtained via mail from <pgp-public-keys at
pgp.mit.edu>, and via the Web at
http://www.pgp.net/pgpnet/pks-commands.html. Many PGP front-ends
(e.g., mailcrypt) automatically obtain keys for you.
See http://www.pgp.net/ for more info.
From: Vivek Khera <khera at kciLink.com>
Date: 19 Jun 1995 22:06:37 GMT
A much more robust Perl script I wrote is appended below. [Send a
note to Vivek for the script. --Ed] It works its way through
aliases, and avoids problems with full names in the headers.
Here is my mhn profile entry to display the messages.
mhshow-show-application/x-pgp: %l pgp -m '%F' # nmh
mhn-show-application/x-pgp: %l pgp -m '%F' # MH
to use the script, after you edit the message, at the What now?
prompt, type "edit pgpmail" for plain ascii encryption or "pgpmail
-m" for a MIME formatted encryption. If you want to add a digital
signature, give the script the -s flag also.
From: Jeffrey C. Ollie <jeff at ollie.clive.ia.us>
Date: Mon, 1 May 1995 00:00:00 -0800
TIS has a free, draft-standard compliant public key system that
works with MH (PEM). Check it out on ftp.tis.com.
From: Kimmo Suominen <kim at tac.nyc.ny.us>
Date: Mon, 1 May 1995 00:00:00 -0800
You could try looking at the URL http://www.tac.nyc.ny.us/ and
following the link from the cover page. Everything you need for PGP
to work with MH is there (scripts and mhn entries).
From: mathew at mantis.co.uk
Date: Mon, 1 May 1995 00:00:00 -0800
Excellent stuff. I've tried altering it to conform to
draft-borenstein-pgp-mime-00.txt.
Unfortunately, I can't get mhn to tag PGP-armoured text as
application/pgp; format=text without it insisting on base64 encoding
it. So I can't quite manage to implement the standard. *sigh*
Presumably mhn thinks that anything which isn't text/* must be
encoded.
From: John R MacMillan <john at interlog.com>
Date: Wed, 16 Apr 1997 00:06:59 -0700
Premail, in conjunction with MH, can display and compose security
multiparts (e.g., multipart/signed and multipart/encrypted PGP mail,
non-MIME PGP, and some S/MIME). Check out
http://www.c2.org/~raph/premail/
for details.
------------------------------
Subject: 05.12 How can I send multi-media (MIME) attachments?
From: Brian Exelbierd <bex at ncsu.edu>
Date: Mon, 09 Oct 1995 08:05:55 -0400
The short guide:
1. Compose a letter using comp.
2. When you get to a point where you want to include a MIME
attachment, type the following to include a GIF image (note: the
'#' must be in the first column):
#image/gif [Pictures at an Exhibition] /usr/lib/pictures/exhibition.gif
3. Finish your letter, adding more text or attachments as needed.
4. Save your letter and exit the editor. At the Whatnow prompt type
"edit mhn". mhn will automatically format your letter with the
MIME attachments leaving the original letter in ,##,orig where ##
is the letter number.
5. Type "send" at the Whatnow prompt, and poof, you have just sent
MIME mail. I strongly recommend you practice sending yourself
MIME mail first.
For more information, see the mhn(1) man page,
ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/media-types
for a list of allowed media types in addition to image/gif, and
Chapter 3 in the MH book or the URL:
http://rand-mh.sourceforge.net/book/overall/tocs/intmime.html
------------------------------
Subject: 05.13 What's the best way to send mail to a long list of people?
From: Bill Wohler <wohler at newt.com>
Date: Thu, 12 Oct 1995 07:53:53 -0700
There are three ways to keep the list of members from appearing in
everyone's header.
If you're planning on mailing to these people regularly, the best
way is to create an alias in /etc/aliases (/usr/lib/aliases). That
way, recipients can send and reply to the list as well.
The other two ways allow you to manage the list privately, but the
recipients cannot send to the list (unless you set something up with
your deliver or procmail script). One is with a group list. It looks
like this:
To: All-members: member1, member2, member3, ..., membern;
The recipients see this:
To: All-members:;
You can make this an MH alias as well.
The second way is to use a blind carbon copy (see "How do I send
blind carbon copies?").
Or you could also use the undocumented Dcc field which is used like
the Bcc field, but doesn't inject the "Blind-Carbon-Copy." Warning:
(See "What is the Dcc header?")
------------------------------
Subject: 05.14 What is the Dcc header?
From: jpeek at jpeek.com (Jerry Peek)
Date: 14 Sep 96 05:51:13 GMT
If you put the alias in the Dcc field and leave the To: field empty,
there's a good chance that the recipients will get a message with
the header field:
Apparently-to: <someaddress>
and it might even list several addresses. To avoid that, use a To:
field with some address (like yours) in it. I use a comment that
tells people what's really happening--like this, more or less:
To: "Faculty members, c/o" <super@wierdlmpc.msci.memphis.edu>
dcc: faculty
There are some other choices, like using an un-replyable group list
in the To: field, but I think they tend to confuse non-techies.
Date: Wed, 27 Sep 1995 09:46:37 -0700
From: John Romine <jromine at yoyodyne.ICS.UCI.EDU>
The Dcc (Distribution Carbon Copy) field behaves much like the Bcc
field, but does not add the "Blind-Carbon-Copy" notice. This header
is removed before posting the message,and a copy of the message is
distributed to each listed address. This could be considered a form
of Blind Carbon Copy which is best used for sending to an address
which would never reply (such as an auto-archiver).
People should not be using Dcc as a substitute-Bcc to send to other
people. When users use Dcc as a substitute for Bcc, there is *no*
indication to the "blind" recipients that they have received a blind
copy. If those recipients should reply (and they have no indication
why they shouldn't), the original author could be very embarassed
(or worse).
------------------------------
Subject: 05.15 How can I make sense of the replcomps file?
From: Bill Wohler <wohler at newt.com>
Date: Thu, 9 Mar 2006 19:27:14 -0800
The best thing to do is curl up with the mh-format(5) man page, or
Section 11.2 of the MH book, or the URL:
http://rand-mh.sourceforge.net/book/mh/mhstr.html
These will explain the default replcomps file, included here. Don't
start with the first four lines--the latter group of lines are much
easier to understand.
%; $Header: /cvsroot/nmh/nmh/etc/replcomps,v 1.3.2.1 2003/10/24 20:14:46 kenh Exp $
%;
%; These next lines slurp in lots of addresses for To: and cc:.
%; Use with repl -query or else you may get flooded with addresses!
%;
%; If no To:/cc:/Fcc: text, we output empty fields for prompter to fill in.
%;
%(lit)%(formataddr{reply-to})\
%(formataddr %<{from}%(void{from})%|%(void{apparently-from})%>)\
%(formataddr{resent-to})\
%(formataddr{prev-resent-to})\
%(formataddr{x-to})\
%(formataddr{apparently-to})\
%(void(width))%(putaddr To: )
%(lit)%(formataddr{to})\
%(formataddr{cc})\
%(formataddr{x-cc})\
%(formataddr{resent-cc})\
%(formataddr{prev-resent-cc})\
%(formataddr(me))\
%(void(width))%(putaddr cc: )
Fcc: %<{fcc}%{fcc}%|+outbox%>
Subject: %<{subject}Re: %{subject}%>
%;
%; Make References: and In-reply-to: fields for threading.
%; Use (void), (trim) and (putstr) to eat trailing whitespace.
%;
%<{message-id}In-reply-to: %{message-id}\n%>\
%<{message-id}References: \
%<{references}%(void{references})%(trim)%(putstr) %>\
%(void{message-id})%(trim)%(putstr)\n%>\
Comments: In-reply-to \
%<{from}%(void{from})%?(void{apparently-from})%|%(void{sender})%>\
%(trim)%(putstr)\n\
message dated "%<(nodate{date})%{date}%|%(tws{date})%>."
--------
In particular, note the following:
\ consider the following line to be part of the current line. If
this continuation character is absent, a newline (\n) will
always be inserted. Note that if the field is conditional, and
the condition is false, and there isn't a trailing backslash,
then a blank line will appear in your reply. Since the rest of
the header will now be considered to be part of the body, this
is probably not what you want.
\n inject an actual newline into the reply. Note that inserting a
field without a trailing backslash (\) will cause that field
to be emitted in the reply as well.
%<{field}, %?{field}, %|, %>
if field exists, else if field exists, else, endif.
Conditional fields nearly always contain an explicit newline
(\n) and end with a continuation character (\).
%(command) mh-format commands
%{field} value of the header field inserted at this point
To add new fields, you can either add fields based on whether
certain fields exist in the original message (e.g.,
%<{message-id}...), or hard-code them, as in the Fcc, Subject, or
Comments fields above.
------------------------------
Subject: 05.16 How can I convert quoted-printable to 8bit in quoted text in replies?
From: Jarle F. Greipsland <jarle at idt.unit.no>
Date: 22 Aug 1995 10:42:07 +0200
The idea behind the solution is that I need mhn to store the
contents of the mail in the native iso8859-1 format somewhere. I did
this by creating a custom editor that is invoked when I reply to a
message. This editor extracts the body of the message (sorry, no
multipart stuff), indents it with '> ', appends it to the draft
message and invokes the ordinary editor on it. Here are the details:
`isorepl' is a symbolic link from my $HOME/bin-directory to `repl'.
In my .mh_profile I added the following two lines:
isorepl: -form isoreplcomps -editor isoextract
isoextract-next: vi
The isoreplcomps file in my Mail-directory contains:
%(lit)%(formataddr %<{reply-to}%?{from}%?{sender}%?{return-path}%>)\
%<(nonnull)%(void(width))%(putaddr To: )\n%>\
%(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\
%<(nonnull)%(void(width))%(putaddr cc: )\n%>\
%<{fcc}Fcc: %{fcc}\n%>\
%<{subject}Subject: Re: %{subject}\n%>\
%<{date}In-reply-to: Your message of "\
%<(nodate{date})%{date}%|%(pretty{date})%>."%<{message-id}
%{message-id}%>\n%>\
--------
#<text/plain; charset=iso-8859-1
%<{message-id}In message %{message-id} %>\
%<{from}%(friendly{from}) writes%|You write%>:
This is a "Usenet-like" quoting style. Modify to suit your own
taste. This form will setup the proper header, as well as the first
line of the new message (In <mmmmbbbb> nnnn writes etc.).
The first editor, `isoextract', looks like this:
#!/bin/sh
#
# Called from within repl where the "editalt" variable is valid
#
# Point to a special MHN configuration file (save old one)
OLDMHN="$MHN"
MHN=$HOME/`mhparam Path`/isoquotemsg
export MHN
# Extract message body to "native" format (should be iso-8859-1)
# > More bla bla.
mhn -file "$editalt" -store >> $1 2>/dev/null
MHN="$OLDMHN"
myname=`basename $0`
next=`mhparam ${myname}-next`
if [ "x$next" != "x" ]; then
exec $next "$@"
fi
`isoquotemsg' has just one rule; how mhn should store a text message.
mhn-store-text: |sed -e 's/^[ ]*$//' \
-e 's/^\([>|]\)\(.*\)$/>\1\2/' \
-e 's/^\([^>|].*\)$/> \1/'
This tells mhn to pipe the message to stdout, where the sed commands
will do the reformatting/quoting. (Note: the first pair of square
brackets contains a space and a tab.)
So, when I do a `isorepl' to a message, `repl' will create the draft
message with the proper headers (based on the `isoreplcomps' format
file), fire off its first editor, `isoextract', with the name of the
draft file as its parameter. `isoextract' then invokes mhn in a
suitable environment, tells it that it is to use the file $editalt
as its source, and orders it to store the contents. The store-text
rule in the custom MHN-file tells it to just pipe the message (in
native iso8859-1 form) through a small set of sed commands, and
`isoextract' uses the normal shell construct to append the result to
the draft file. Then, if there's defined a `isoextract-next' entry
in the .mh_profile, isoextract exec's this editor.
------------------------------
Subject: 05.17 Can I have aliases include aliases?
From: Bruce Cox <bruce at maths.su.oz.au>
Date: Fri, 16 Aug 1996 14:26:12 +1000
Indeed, you can.
You just need to remember the way MH expands aliases. In particular,
the right hand sides are only expanded by the aliases below them in
your aliases file. So, if you put in:
dead-men: presidents, authors
presidents: washington, lincoln, jefferson, roosevelt
authors: thoreau, irving, london
and type:
ali dead-men
then you would get the response:
washington, lincoln, jefferson, roosevelt, thoreau, irving, london
If you had the dead-men line after the presidents and authors
aliases, the response would be:
presidents, authors
------------------------------
Subject: 05.18 Why doesn't mhmail understand aliases?
From: "John L. Romine" <jromine at yoyodyne.ics.uci.edu>
Date: 25 Apr 1996 16:34:10 GMT
One way that mhmail might be run is from a shell script. This means
that the user running it might not use MH, and would not have a
.mh_profile, etc. If you want to use aliases with mhmail, expand
them before passing them as arguments (e.g., "mhmail `ali joe`").
------------------------------
Subject: 05.19 How do I send blind carbon copies?
From: Bill Wohler <wohler at newt.com>
Date: Mon, 9 Sep 1996 00:32:14 -0700
Use the Bcc header field:
To: your-address-here
Bcc: member1, member2, member3, ..., membern
The recipients see this:
To: your-address-here
------- Blind-Carbon-Copy
Content of message, with headers
If you don't want the "Blind-Carbon-Copy" message, use the Dcc
field, but this is discouraged in true blind carbon copies since the
warning may prevent the recipient from embarrassing someone
inadvertently. Read the warning in (see "What is the Dcc header?").
------------------------------
Subject: 05.20 When I forward a message, can I use its Subject?
From: Jerry Peek <jpeek at jpeek.com>
Date: Sun, 17 Nov 1996 20:16:31 -0800
Obtain forwedit.
http://rand-mh.sourceforge.net/book/examples/mh/bin/forwedit
------------------------------
Subject: 05.21 Why is the timezone field in my 'Date:' field wrong?
From: Alex Tomlinson <tomlinson at acm.com>
Date: Wed, 11 Jun 1997 09:16:41 -0500
If the date field in your mail header looks like this:
Date: Tue, 10 Jun 1997 15:59:03 +2228904
remove -lbsd from your MH configuration, add "curses -lcurses", and
rebuild.
------------------------------
Subject: 05.22 Can I automate the comp -editor mhn process?
From: Soren Dayton <csdayton at gargoyle164.cs.uchicago.edu>
Date: Tue, 21 Jan 1997 17:23:32 GMT
Add
automhnproc: mhn
to your MH profile.
------------------------------
Subject: 05.23 How can I remove those "=20" characters when forwarding?
From: Dave Marquardt <marquard at Austin.IBM.Com>
Date: 12 Oct 2000 10:27:38 -0500
Use `forw -mime'.
------------------------------
Subject: 05.24 Can I use mh-format substitution with forw?
From: Dave Marquardt <marquard at Austin.IBM.Com>
Date: Tue, 3 Aug 1999 13:28:30 -0500 (EST)
The answer is no, and the real question is why not?
------------------------------
Subject: 05.25 How can I keep repl from breaking long lines?
From: Jerry Peek <jpeek at jpeek.com>
Date: Fri, 14 May 1999 11:15:07 -0400
Try adding width=10000 (or so) to your replcomps. It should work
unless you have messages with lines longer than that...
------------------------------
Subject: 05.26 How do I fix a bogus In-Reply-To or missing References field?
From: Bill Wohler <wohler at newt.com>
Date: Thu, 9 Mar 2006 21:42:21 -0800
In the past, the In-reply-to header field looked as it does in the
new Comments field (see "How can I make sense of the replcomps
file?"). However, the old format is no longer allowable under RFC
2822 which specifies that this field should only include the
Message-ID. You can fix the replcomps and replgroupcomps files by
upgrading to nmh 1.1 (be sure to update your personal copies if
applicable) or simply by fixing the In-reply-to field in your own
replcomps file using the example in the question referenced in this
paragraph.
In addition, older replcomps files lacked the References field which
enables threading in capable UIs. You can get it in the same fashion
as the In-reply-to field--by upgrading or copying.
------------------------------
Subject: 06.00 ***** Posting *****
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
------------------------------
Subject: 06.01 What to do with "Problems with edit - draft removed".
From: John Romine <jromine at ics.uci.edu>
Date: Mon, 1 May 1995 00:00:00 -0800
If your users are using an AT&T version of "vi", it's exiting with
non-zero status (supposedly a count of the "errors" during the
edit). Move "vi" to "broken_vi" and put it its place :
#! /bin/sh
/usr/ucb/broken_vi "$@"
exit 0
Alternatively, compile MH with the ATTVIBUG option.
Then complain to your vendor that "vi" is broken, and they shouldfix it.
------------------------------
Subject: 06.02 Can I run my message through a program (e.g., ispell) before sending?
From: Jerry Peek <jpeek at jpeek.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
It's pretty simple. If your speller is called myspell, use:
What now? edit myspell
MH will actually execute:
myspell /your-mail-draft-directory/draftfile
and give the entire draft message to your speller. The header will
probably be "misspelled," of course, though you might be able to
tell the speller to ignore it--or you could hack up a little shell
script to run the speller on just the message body, then tack the
corrected body back onto the header before sending.
You can automate this some more. For example, if you want your
speller to run after your first edit with "prompter" and also after
you leave the "vi" editor, add these lines to your MH profile:
prompter-next: myspell
vi-next: myspell
Then, at the "What now?" prompt:
What now? e
your speller will run. For more info, see the mh-profile(5) man page
or section 7.2.1 (6.2.1) of the MH book, or the URL:
http://rand-mh.sourceforge.net/book/mh/chaedi.html#Edi
------------------------------
Subject: 06.03 What to do with "bad address 'xxx' - no at-sign after local-part".
From: Owen Rees <rtor at ansa.co.uk>
Date: Fri, 1 Jan 1993 00:00:00 -0800
You may find that post returns the following message:
post: bad address 'Mr. Foo Bar <fb@somewhere.edu>' - no at-sign
after local-part (Bar), continuing...
The unquoted dot causes "Mr. Foo" to be parsed as the local part of
the address. Either remove the dot, or rewrite the address as
follows:
"Mr. Foo Bar" <fb@somewhere.edu>
(Mr. Foo Bar) <fb@somewhere.edu>
(Mr. Foo Bar) fb@somewhere.edu
------------------------------
Subject: !06.04 Fixing "post: problem initializing server; [BHST] no servers available"
From: Peter Marvit <marvit at hplabs.hpl.hp.com>,
Eric Bracken <bracken at bacon.performance.com>
Date: Tue, 1 Nov 1994 00:00:00 -0800
The error message itself is essentially correct. However, what this
really means is: MH's post cannot connect to a running sendmail over
an SMTP port (MH configured with SMTP and SENDMTS).
The potential problems:
1. Your local sendmail daemon is dying or not running for some
reason.
2. You use BIND and your local nameserver is not responding.
Solution: Delete "/etc/resolv.conf."
3. Your $MHLIB/mts.conf (mtstailor) has its "servers:" pointing to a
non-existent machine or a machine which is a) not reachable or b)
not running the sendmail daemon.
From: Bdale Garbee <bdale at col.hp.com>,
Eric Bracken <bracken at bacon.performance.com>
Date: Sun, 1 May 1994 00:00:00 -0800
4. The hostname localhost [127.0.0.1] is missing from /etc/hosts.
Solution: add an entry for "localhost" to /etc/hosts or your DNS
database or add the following to $MHLIB/mts.conf (mtstailor):
servers: 127.0.0.1 \01localnet
From: David Levine <levinedl@acm.org>
Date: Sun Sep 30 22:47:12 CDT 2012
From: Larry Daffner <ldaffner at convex.com>
Date: 3 Mar 1996 14:39:54 -0600
5. Your load average is so high that sendmail is refusing
connections.
Solution: Change your configuration from "mts: smtp" to "mts:
sendmail" (after nmh 1.5, "mts: sendmail/smtp" or "mts:
sendmail/pipe") so that a sendmail processes is spawned to
deliver the message. This is a double-edged sword since the extra
process only makes the load worse.
From: Neil W Rickert <rickert+nn at cs.niu.edu>
Date: 13 Apr 2001 18:47:43 -0500
8. You don't want to use an available server.
See David Levine's answer in Fixing "post: problem initializing
server; [BHST] premature end-of-file on socket."
------------------------------
Subject: 06.05 Fixing "post: problem initializing server; [RPLY] 503 Sender already specified"
From: Paul Pomes <ppomes at Qualcomm.com>
Date: Mon, 1 Mar 1993 00:00:00 -0800
The problem in sendmail is that the RSET after the ONEX does not
reset all the state information. Normally sendmail fork()s after
the Mail from: statement and a RSET causes that child to exit. This
automatically cleans up. If the fork() is suppressed by ONEX, then
the source must be modified to do the cleanup. See "srvrsmtp.c
patch" in the Appendix. If you don't have the sources, modify your
MH sources to not use the ONEX verb.
------------------------------
Subject: 06.06 Fixing "post: unexpected response; [BHST] no socket opened"
From: Steve Lembark <lembark at wrkhors.la.ca.us>, Bill Wohler <wohler at newt.com>
Date: Mon, 1 Aug 1994 00:00:00 -0800
This problem happens when there is no interface defined within the
tcp system. A couple of workarounds include:
o Use a hostname (other than the local host) instead of localhost in
the "servers" entry of the $MHLIB/mts.conf (mtstailor) file.
o Recompile MH with sendmail instead of sendmail/smtp (not very
elegant).
A better fix would be to define your tcp interface.
Here, you run ifconfig and route (as root) to define the loopback
device and route. You should add them to rc.local so they are
effected at every boot.
# ifconfig lo 127.0.0.1 # Linux
# ifconfig lo0 127.0.0.1 # Sun
# route 127.0.0.1
If all is well, "ifconfig lo" (or lo0), will show something like
this (on my Linux system):
lo Link encap Local Loopback
inet addr 127.0.0.1 Bcast 127.255.255.255 Mask 255.0.0.0
UP LOOPBACK RUNNING MTU 2000 Metric 0
RX packets 0 errors 0 dropped 0 overrun 0
TX packets 519 errors 0 dropped 0 overrun 0
and "netstat -r" will show:
# netstat -r
Destination net/address Gateway address Flags RefCnt Use Iface
127.0.0.0 * UN 0 519 lo
If you're not on a network and running DNS, your /etc/hosts will
need at least:
127.0.0.1 your_host_name localhost # loopback address
Note: put your name FIRST on the localhost line. This official name
is used by sendmail to determine your return address.
If you are on a network and running DNS, you might find that putting
your host name in the localhost entry might gum up other things, in
which case you'll want your hostname to have its own proper address.
This might not do it though. David Youatt <dpy at sgi.com> says that
his network was happy but he still had the problem until he upgraded
his system and got the latest revision of sendmail as well. He says:
"Turns out that that the problem I was having seems to be caused (at
least partly, maybe entirely) by the version of sendmail that is
shipped with IRIX 5.2 (sendmail 5.65, I think). The version shipped
w/IRIX 5.3 (in beta) is sendmail 8.6.9 and works fine."
I'm not entirely happy with this section, so please give me some
feedback. If you have this problem, please send me <wohler at
newt.com> a brief description so I'll know which problems and
solutions seem to be the most prevalent.
------------------------------
Subject: 06.07 How do I fix the "X-Authentication-Warning" header?
From: Bill Wohler <wohler at newt.com>
Date: Mon, 9 Sep 1996 01:32:15 -0700
(See "Fixing "Sender didn't use the HELO protocol"".)
------------------------------
Subject: 06.08 Fixing "post: unexpected response; [RPLY] 503 Need MAIL before RCPT"
From: Bjoern Stabell <bjoerns at acm.org>
Date: Mon, 1 May 1995 00:00:00 -0800
I inserted:
clientname: localhost
in the $MHLIB/mts.conf (mtstailor) file, and that fixed the problem.
------------------------------
Subject: !06.09 Fixing "post: problem initializing server; [BHST] premature end-of-file on socket"
From: David Levine <levinedl@acm.org>
Date: Sun Sep 30 22:52:46 CDT 2012
To use a different SMTP server temporarily (after nmh 1.5):
What now? send -server smtp.example.com
Use the name or address of your SMTP server, of course.
Alternatively, if you can use your local sendmail program, then
enable that by one of these methods:
1. Change the mts setting in your mts.conf to:
mts: sendmail/pipe
2. Add the mts setting to a send entry in your profile. For example,
send: -mts sendmail/pipe
3. Override the mts setting temporarily:
What now? send -mts sendmail/pipe
4. Add the following to your profile:
postproc: $MHLIB/spost
This is the only available solution if you are running a version
of MH other than nmh 1.5 and higher. However, the use of spost is
discouraged because:
a) It requires the local sendmail to be configured for delivery
to all possible addresses. This may not be as common as it used
to be, as it is limited by many ISPs.
b) spost and blind MH aliases turn out to be a potentially
dangerous combination: spost expands them as if they weren't
blind, so all recipients see them.
From: Ginko <gianluca at noroboter.rotoni.com>
Date: Thu, 8 Mar 2001 09:18:14 +0000 (UTC)
I have sendmail under control of tcpwrapper started by inetd and
didn't want to take it away, the very simple fix to this problem was
to allow the localhost on /etc/hosts.allow on the sendmail entry.
From: Chuck Mattern <cmattern at mindspring.com>
Date: Mon, 1 May 1995 00:00:00 -0800
If you are running sendmail instead of smail, make sure that all
smtp entries in /etc/inetd.conf are commented out. If you do edit
/etc/inetd.conf, don't forget to run to restart inetd with "kill -1
<inetd PID>".
------------------------------
Subject: 06.10 Fixing "Sender didn't use the HELO protocol"
From: rickert at cs.niu.edu (Neil Rickert)
Date: Tue, 20 Mar 2001 22:01:16 -0800
If you are sharing your $MHLIB/mts.conf (mtstailor) file among
several machines, and you are connecting to the local sendmail, then
use 'localhost' as the hostname argument to the clientname parameter
(described below).
Otherwise, place mts.conf somewhere under /etc on each system, and
install a symlink to it on the shared file system.
From: labrown at dg-rtp.dg.com (Lance A. Brown)
Date: 23 Apr 1996 14:43:04 -0400
You can solve this by putting
localname: localhostname
localdomain: local.domain.name
in your $MHLIB/mts.conf (mtstailor) file. This will make MH send a
HELO string in the SMTP transaction.
From: Terry Manderson <terry at azure.dstc.edu.au>
Date: Mon, 1 May 1995 00:00:00 -0800
Add
clientname sender
to $MHLIB/mts.conf (mtstailor) where sender is the name of the
machine sending the message. The error message occurs because newer
MTA's require SMTP's "HELO" command which MH omits in some
configurations. When you add the above line, it forces MH to use the
HELO command.
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
You get a header like:
X-Authentication-Warning: screamer.rtp.ericsson.se: Host
rcur7.rtp.ericsson.se didn't use HELO protocol
Easy possibilities are: apply the patch to MH that comes with
Sendmail 8.X.X and makes it use HELO, or comment out the line that
says
Opauthwarnings
in your sendmail.cf.
------------------------------
Subject: 06.11 Fixing "post: problem initializing server; [RPLY] 553 Local configuration error, hostname not recognized as local"
From: "Matthew V. J. Whalen" <whalenm at aol.net>
Date: Mon, 1 May 1995 00:00:00 -0800
Change your "mts" in "conf/MH" from "sendmail/smtp" to just
"sendmail."
From: Bill Wohler <wohler at newt.com>
Date: Mon, 1 May 1995 00:00:00 -0800
The solution above will keep MH from using any SMTP server on your
network. require sendmail to be installed on all machines. You could
take advantage of the "sendmail/smtp" option to have MH talk to a
non-local sendmail. In $MHLIB/mts.conf (mtstailor) add:
servers <SMTP-server>
It may also be caused by old versions of sendmail.
------------------------------
Subject: 07.00 ***** Mail Filters *****
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
------------------------------
Subject: 07.01 What mail filters are available?
From: Bill Wohler <wohler at newt.com>
Date: Sun, 11 Mar 2001 10:27:24 -0800
The list currently includes slocal (included with MH), deliver,
procmail and mailagent. They are briefly described here. Slocal is
probably the most popular by virtue of being included in the
distribution. The next most popular entry is procmail, followed by
deliver.
Slocal comes with MH. It can be used to process incoming mail based
on the contents of any of the headers. Actions include filing
messages, running commands, printing messages on your terminal and
so on. The configuration is made in ~/.maildelivery. People seem to
have trouble with slocal bugs, and you can't use it if you don't
have write permission on your system maildrop so a lot of people
have opted for the alternatives, but it's easy to use and comes with
MH.
procmail is quite popular and has a very powerful configuration
file. However, the syntax is its own, but it is easy to learn given
a couple of good examples. Its advantages are its small size and
speed. Like deliver, procmail may be installed as a delivery agent
so you would not even have to have a .forward file.
Deliver can run any script or program (called ~/.deliver), so you
really can do anything you want to incoming mail. One feature that
it sports that no other does is that you can install it as a local
mailer in place of /bin/mail. If it's the local mailer, you don't
need to have a .forward--~/.deliver is run anyway. In addition, it
allows the system administrator to write some programs to filter
everybody's mail. It came with my Linux system, so installation was
non-existent.
I started with slocal, and then moved to deliver. I switched to
procmail because of a bug in deliver (which I think has since been
fixed) whereby a blank line would be inserted into the header before
header fields with numbers in them.
I am still using procmail and probably will do so indefinitely since
it is powerful, there are many spam filters written in it, and it
coexists with MH and Gnus so well.
My recommendation is to use the one that is installed on your system
or get procmail. Here are the URLs for the filters mentioned in this
document:
http://www.procmail.org/
From: "Eric D. Friedman" <friedman at hydra.acs.uci.edu>
Date: 28 Aug 1996 08:28:46 GMT
See http://www.faqs.org/faqs/mail/filtering-faq/index.html.
From: Stephen R. van den Berg <berg at pool.informatik.rwth-aachen.de>
Date: Mon, 1 Aug 1994 00:00:00 -0800
Procmail can be used to create mail-servers, mailing lists, sort
your incoming mail into separate folders/files (real convenient when
subscribing to one or more mailing lists or for prioritizing your
mail), preprocess your mail, start any programs upon mail arrival
(e.g. to generate different chimes on your workstation for different
types of mail) or selectively forward certain incoming mail
automatically to someone.
From: Raphael Manfredi <Raphael_Manfredi at pobox.com>
Date: Tue, 28 Jul 1998 13:22:07 +0200
"mailagent" is yet another mail filter, written in perl, which will
let you do anything with your mail. It has all the features you may
expect from a filter: mailing lists sorting, forwarding to MTA or to
inews, pre-processing of message before saving into folder, vacation
mode, etc. It was initially written as an Elm-filter replacement,
but has now enough power to also supplant MMDF's .maildelivery.
There is also a support for @SH mail hooks, which allows you to
automatically distribute patches or software via command mails.
The mailagent was designed to make mail filtering as easy as it can
be. It is highly configurable and fairly complete. Rules are
specified in a lex-like style, with the full power of perl's regular
expressions. The automaton supports the notion of mode, and header
selection has many magic features built-in, to ease the rule writing
process.
The distribution comes with a set of examples, an exhaustive test
suite, and naturally a detailed manual page. It should be noted that
the mailagent will work even if your system administrator forbids "|
programs" hooks in the ~/.forward, provided you have access to some
sort of cron daemon.
http://www.cpan.org/authors/Raphael_Manfredi/
------------------------------
Subject: 07.02 Why slocal writes messages to system mailbox that from(1) can't read.
From: Bill Wohler <wohler at newt.com>
Date: Mon, 1 May 1995 00:00:00 -0800
Upgrade to MH 6.8 and set the RPATHS option. Better yet, use a more
MH-like command instead of from: "scan -file $MAIL".
------------------------------
Subject: 07.03 Where can I read about slocal and the format of .maildelivery?
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
See the slocal man page.
Here is brief example of a .maildelivery file that stores messages
to babble in a folder and the system mailbox, stores mh-users in a
folder but not the system mailbox, and puts the rest in the system
mailbox.
to mh-users | A "$MHLIB/rcvstore -create +lists/mh-users"
cc mh-users | A "$MHLIB/rcvstore -create +lists/mh-users"
to babble | R "$MHLIB/rcvstore -create +lists/babble"
cc babble | R "$MHLIB/rcvstore -create +lists/babble"
default - > ? /usr/spool/mail/wohler
Your .forward file may look like (quotes necessary):
"| $MHLIB/slocal -user your_login"
In some implementations, the "-user your_login" is not needed. If
not, manually running slocal with the flag will produce an error.
See also chapter 12 (11) in the MH book, or the URL:
http://rand-mh.sourceforge.net/book/mh/tocs/prmaau.html
Alternatives to slocal include deliver, procmail, and mailagent.
(See "What mail filters are available?")
------------------------------
Subject: 07.04 How do I debug my .maildelivery file?
From: Bill Wohler <wohler at newt.com>
Date: Mon, 1 Mar 1993 00:00:00 -0800
Use as many of the following as necessary.
Put a message into a file and call slocal directly on it.
$MHLIB/slocal -user $USER -verbose -debug < test-msg
Modify your .forward to look like:
"|/bin/sh -c 'exec >> /tmp/out 2>&1;
$MHLIB/slocal -user $USER -verbose -debug'"
Or modify a rule in .maildelivery to look like this:
to foo | R "set -xv; exec >/tmp/out 2>&1; $MHLIB/rcvstore +foo"
The previous examples are broken up for readability; the text must
appear on one line.
See also MH book section 12.11 (11.11), or the URL:
http://rand-mh.sourceforge.net/book/mh/debugti.html
------------------------------
Subject: 07.05 Why isn't slocal working?
From: Bill Wohler <wohler at newt.com>
Date: Mon, 1 Mar 1993 00:00:00 -0800
If slocal doesn't appear to be doing anything, run the following
$MHLIB/slocal -user your_login -verbose < file
where "file" is some message in a mail folder. If you get something
like:
.maildelivery: ownership/modes bad (0, 154,154,0100666)
your .maildelivery is writable by too many people. Make it writable
only by you by running "chmod 644 .maildelivery".
See also "How do I debug my .maildelivery file?"
------------------------------
Subject: 07.06 Are there any good biff applications for MH?
From: Rob Austein <sra at epilogue.com>
Date: Tue, 01 Dec 1998 03:02:34 -0500
I've been been using a program called xlbiff (X Literate Biff) and
have been quite happy with it. By default, xlbiff generates its
pop-up listings by running scan on your mail drop file, but it's not
a big deal to customize xlbiff for more complicated setups if you
make heavy use of procmail, multiple mail drops, and so on.
From: Richard Coleman <coleman at math.gatech.edu>
Date: 07 Jul 1997 03:31:42 -0400
nmh (new MH) has an additional command (flist) that will tell you
which folders have unseen messages. I can't imagine using MH without
it.
From: crow at tivoli.com (David L. Crow)
Date: 7 Jul 97 09:36:32 GMT
I have used the following X resource with xbiff before:
xbiff*checkCommand: grep -q '^unread' `mhpath +inbox`/.mh_sequences \
&& exit 0 || exit 2
This should be all one line, but I split it with a line continuation
character for readability.
------------------------------
Subject: 07.07 How do I read new messages filed by procmail?
From: Bill Wohler <wohler at newt.com>
Date: Sun, 17 Oct 2004 15:17:14 -0700
If you use MH-E, use "F n (mh-index-new-messages)" to display unseen
messages.
From: Neil W Rickert <rickert+nn at cs.niu.edu>
Date: 23 Apr 2002 20:38:57 GMT
Here is my "unseen" shell script:
#! /bin/sh -
case "$1" in
"") grep unseen $HOME/Mail/context $HOME/Mail/*/.mh_sequences |
sed -e '/\/fromme\//d' \
-e "s=$HOME/Mail/==" \
-e 's=/.mh_sequences:unseen=='
;;
"+") shift
mark -sequence unseen -add "$@"
;;
"-") shift
mark -sequence unseen -delete "$@"
;;
*) echo "Invalid arguments $*"
;;
esac
From: Paul Fox <pgf-spam at foxharp.boston.ma.us>
Date: Tue, 23 Apr 2002 20:13:42 GMT
I have procmail deliver to a set of mbox files and use "inc -f foo"
to inc from them. The names of the mbox files are the same as the MH
folders which makes it easy to write a script that does something
like this:
cd Mailboxes
for x in *; do
inc -f $x +$x
done
------------------------------
Subject: 08.00 ***** MH-E *****
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
------------------------------
Subject: 08.01 I have a question about MH-E
From: Bill Wohler <wohler at newt.com>
Date: Sat, 3 Mar 2001 13:51:29 -0800
Let me send you over to:
http://mh-e.sourceforge.net/
This is the SourceForge MH-E project. It has mailing lists and files
to download, and will let you submit patches or support requests.
The Support Requests section may already contain an answer to your
question. If not, you can post your question:
http://sourceforge.net/tracker/?group_id=13357&atid=213357
------------------------------
Subject: 09.00 ***** Xmh *****
From: Bill Wohler <wohler at newt.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
------------------------------
Subject: 09.01 How can I get xmh to use Emacs as the editor?
From: Bob Ellison <ellison at sei.cmu.edu>
Date: Fri, 1 Mar 1991 13:03:15 -0800
The modifications to xmh to support an external editor, annotations,
and an append command can be found in the these places.
ftp://ftp.x.org/R5contrib/xmh-mods-R5-1.7.Z 37k
ftp://ftp.sei.cmu.edu/pub/xmh/xmh-mods-R5-1.7.Z 37k
ftp://ftp.sei.cmu.edu/pub/xmh/xmh-mods-R6-1.0.Z 37k
From: Andrew Wason <aw at bae.bellcore.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
As of R5, xmh has a new action proc called XmhShellCommand. A string
parameter will be executed as a shell command with the currently
selected messages as parameters (or the current message if there are
no selected messages).
Using this new action, a couple of shell scripts, a window version
of emacs (e.g. xemacs) and some elisp code, xmh can use emacs as its
editor instead of the built in Athena text widget editor. This
doesn't require any source code changes to xmh. These are included
in the Appendix "Switching xmh's editor".
------------------------------
Subject: 09.02 Does xmh support subfolders?
From: Steve Malowany <malowany at cenparmi.concordia.ca>
Date: Fri, 1 Mar 1991 13:03:15 -0800
Yes. Create one by invoking "Create Folder" as usual, and enter
something like: existing-folder/new-sub-folder. You can then access
the subfolder by popping up a menu over the "existing-folder" button
item.
But:
From: John Cooper <jsc at saxon.Eng.Sun.COM>
Date: Fri, 1 Mar 1991 13:03:15 -0800
The R5 version of xmh does *not* handle nested sub-folders. If you
create a folder as 'grab/some/bandwidth', xmh displays this folder
name for the remainder of the session where it was created, BUT if
you later re-run xmh, the folder is no longer visible to xmh.
See also MH book section 15.6.2 (15.6.2), or the URL:
http://rand-mh.sourceforge.net/book/xmh/orgfol.html#FolaSub
------------------------------
Subject: 09.03 How do I precede included messages with ">" when replying in xmh?
From: Len Makin <len at mel.dit.csiro.au>
Date: Fri, 1 Mar 1991 13:03:15 -0800
Include the following line in your ~/app-defaults/XMh file:
Xmh*replyInsertFilter: "sed 's/^/> /'"
or,
Xmh.ReplyInsertFilter: $MHLIB/mhl -form repl.filter
From: Andy Linton <andy.linton at comp.vuw.ac.nz>
Date: Fri, 1 Mar 1991 13:03:15 -0800
Using this means that you can chose to insert the original by use of
the "Insert" button in the Draft message pane. See "How do I include
messages in repl with or without ">"?" to find examples of
repl.filter.
See also MH book sections 15.1.4 (15.1.4), 16.3.3 (16.3.3), or the URLs:
http://rand-mh.sourceforge.net/book/xmh/senmai.html#MorRep
http://rand-mh.sourceforge.net/book/xmh/resfun.html#Rep
------------------------------
Subject: Glossary
From: Bill Wohler <wohler at newt.com>
Date: Wed, 29 Sep 2004 00:04:34 -0700
MH Mail Handler
MHLIB Where MH support routines and files are kept; usually /usr/lib/mh
or /usr/local/lib/mh.
POP3 Post Office Protocol, RFC 1939
MMDF Multi-channel Memo Distribution Facility
MIME Multipurpose Internet Mail Extensions, RFC 1521
IMAP Internet Message Access Protocol, RFC 1064, 1176
TIS Trusted Information Systems
PEM Privacy Enhanced Mail
PGP Pretty Good Privacy
SMTP Simple Mail Transport Protocol (STD 10; RFC 821)
------------------------------
Subject: Acknowledgments
From: Bill Wohler <wohler at newt.com>
Date: Mon, 9 Sep 1996 01:37:27 -0700
I'd like to thank the following people for providing ideas on the
layout of this article:
Joe Wells <jbw at bigbird.bu.edu> Richard M. Stallman <rms at gnu.org>
David Elliott <dce at smsc.sony.com> Tom Christiansen <tchrist at perl.com>
Eugene N. Miya <eugene at nas.nasa.gov>
We are also grateful to Kim F. Storm <storm at olicom.dk> and Edward
Vielmetti <emv at ox.com> and the folks mentioned in the text of this
document who have provided answers or other information to make this a
better document. I regret that it is possible that some names have
been accidently omitted. I would also like to thank all the readers
of comp.mail.mh.
I'd also like to thank John Romine <jromine at yoyodyne.ICS.UCI.EDU> for
maintaining MH and the MH Web page, Jerry Peek <jpeek at jpeek.com> for
writing the MH bible and for all his hard work with the entire MH
project, Stephen Gildea <gildea at stop.mail-abuse.org> for maintaining MH-E
in years past and always sending me lots of great comments, Kimmo
Suominen <kim at tac.nyc.ny.us> for maintaining the MH patch page, and
Richard Coleman <coleman at math.gatech.edu> for taking MH to nmh.
------------------------------
Subject: Switching xmh's editor
From: Andrew Wason <aw at bae.bellcore.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of shell archive."
# Contents: README Xmh.ad xmh-command.el xmhcommand xmhemacs
# Wrapped by aw@jello on Fri Nov 15 17:10:34 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'README' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(1269 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
XThis is a short description of what to do with each of the enclosed files.
X
XXmh.ad
X Merge this in with your xmh resources. If you already have
X user defined buttons, then you may need to renumber the
X buttons in this resource file.
X
Xxmh-command.el
X Byte compile this file and put it in your GNU emacs load-path.
X
Xxmhcommand
Xxmhemacs
X Put these somewhere in your path.
X
X
XOnce you have installed these, restart the R5 xmh with the new
Xresources. When you press the repl, forw or comp buttons
Xan xemacs window will come up with your draft message.
X
XOnce you have written your mail, save it and exit GNU emacs (C-xC-c).
XYou will be prompted if you want to send the current message.
XIf you enter 'y', the message will be sent and the output will
Xbe displayed in an emacs window (in case you use -verbose or -snoop).
XThen you will be prompted to exit emacs. Enter 'y' when you are ready.
X
XIf you answered 'n' when prompted to send the message,
Xthen the draft message will be deleted and emacs will exit.
X
XYou can modify the Xmh.ad resources to add more buttons.
XAny MH command which accepts "+folder msg" can be used
X(e.g. a replx shell script which includes the body of the
Xmessage being replied to can be bound to a replx button)
X
X
XAndrew Wason
Xaw at bae.bellcore.com
END_OF_FILE
if test 1269 -ne `wc -c <'README'`; then
echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
if test -f 'Xmh.ad' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'Xmh.ad'\"
else
echo shar: Extracting \"'Xmh.ad'\" \(457 characters\)
sed "s/^X//" >'Xmh.ad' <<'END_OF_FILE'
XXmh*CommandButtonCount: 3
X
XXmh*commandBox.button1.label: repl
XXmh*commandBox.button1.translations:\
X #override\n\
X <Btn1Up>: XmhShellCommand(xmhcommand y repl) unset()
X
XXmh*commandBox.button2.label: forw
XXmh*commandBox.button2.translations:\
X #override\n\
X <Btn1Up>: XmhShellCommand(xmhcommand y forw) unset()
X
XXmh*commandBox.button3.label: comp
XXmh*commandBox.button3.translations:\
X #override\n\
X <Btn1Up>: XmhShellCommand(xmhcommand n comp) unset()
END_OF_FILE
if test 457 -ne `wc -c <'Xmh.ad'`; then
echo shar: \"'Xmh.ad'\" unpacked with wrong size!
fi
# end of 'Xmh.ad'
fi
if test -f 'xmh-command.el' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'xmh-command.el'\"
else
echo shar: Extracting \"'xmh-command.el'\" \(1294 characters\)
sed "s/^X//" >'xmh-command.el' <<'END_OF_FILE'
X;;; These functions are for use with xemacs and xmh.
X;;; The R5 xmh has a new action - XmhShellCommand which executes
X;;; a shell command with the current msg as an arg.
X;;; By executing something like:
X;;; XmhShellCommand(xmhcommand repl)
X;;; you can use xemacs as your editor with xmh.
X;;;
X;;; The following elisp functions perform the basic whatnowproc functionality
X;;; (quitting and deleting, sending)
X;;;
X;;; Andrew Wason aw at bae.bellcore.com
X
X
X;;; Override C-xC-c
X(define-key indented-text-mode-map "\C-x\C-c" 'xmh-command-send-or-delete)
X
X
X(setq mhdraft (getenv "mhdraft")) ; save the filename of the draft
X
X
X(find-file mhdraft) ; load the draft letter
X(indented-text-mode)
X(setq draft-buffer (current-buffer)) ; save the buffer the draft is in
X
X
X(defun xmh-command-send-or-delete ()
X "Prompt to send or delete letter, then quit."
X (interactive)
X (set-buffer draft-buffer)
X (if (y-or-n-p "Send message? ")
X (progn
X (save-buffer) ; save the draft buffer
X (message "Sending...")
X (pop-to-buffer "MH mail delivery"); pop to a buffer for "send" output
X (erase-buffer)
X (call-process "send" nil t t mhdraft) ; call MH "send"
X (if (y-or-n-p "Exit? ")
X (kill-emacs))) ; exit emacs
X (delete-file mhdraft) ; delete the draft letter
X (kill-emacs))) ; exit emacs
END_OF_FILE
if test 1294 -ne `wc -c <'xmh-command.el'`; then
echo shar: \"'xmh-command.el'\" unpacked with wrong size!
fi
# end of 'xmh-command.el'
fi
if test -f 'xmhcommand' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'xmhcommand'\"
else
echo shar: Extracting \"'xmhcommand'\" \(669 characters\)
sed "s/^X//" >'xmhcommand' <<'END_OF_FILE'
X#!/bin/sh
X# This shell should be invoked by the xmh XmhShellCommand() action as
X# XmhShellCommand(xmhcommand y repl)
X# XmhShellCommand(xmhcommand n comp) etc.
X# If the second arg is y, then the message list will be used.
X
X# We invoke the passed MH command on the identified message
X# (we must strip the message number and folder from the pathname)
X(if [ $1 = "y" ]
Xthen
X $2 -whatnowproc xmhemacs +`dirname \`echo $3 | \
X sed "s;\\\`mhpath +\\\`/;;"\`` `basename $3`
X
X# You can use this more readable version instead if you have ksh
X# $2 -whatnowproc xmhemacs +$(dirname $(echo $3 | \
X# sed "s;$(mhpath +)/;;")) $(basename $3)
X
Xelse
X $2 -whatnowproc xmhemacs
Xfi)&
END_OF_FILE
if test 669 -ne `wc -c <'xmhcommand'`; then
echo shar: \"'xmhcommand'\" unpacked with wrong size!
fi
chmod +x 'xmhcommand'
# end of 'xmhcommand'
fi
if test -f 'xmhemacs' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'xmhemacs'\"
else
echo shar: Extracting \"'xmhemacs'\" \(116 characters\)
sed "s/^X//" >'xmhemacs' <<'END_OF_FILE'
X#!/bin/sh
X# Invoke xemacs and load the xmh-command.el stuff.
X# xmhemacs is used by xmhcommand
Xxemacs -l xmh-command
END_OF_FILE
if test 116 -ne `wc -c <'xmhemacs'`; then
echo shar: \"'xmhemacs'\" unpacked with wrong size!
fi
chmod +x 'xmhemacs'
# end of 'xmhemacs'
fi
echo shar: End of shell archive.
exit 0
------------------------------
Subject: babyl2mh.pl
From: Vivek Khera <khera at cs.duke.edu>
Date: Fri, 1 Mar 1991 13:03:15 -0800
#!/usr/gnu/bin/perl
# incorporate an RMAIL babyl file into an MH folder
#
# usage: babyl2mh +folder babyl-file
#
# V. Khera <khera at cs.duke.edu> 17-JUL-1991
# where to find rcvstore
$rcvstore = "/usr/local/lib/mh/rcvstore";
#
# pull out command line args
#
die "usage: babyl2mh +folder babyl-file\n" unless @ARGV == 2;
$folder = shift;
# make sure folder name starts with a "+"
(substr($folder,0,1) eq "+") || (substr($folder,0,0) = "+");
$bfname = shift;
print "Incorporating RMAIL file $bfname into MH folder $folder\n";
#
# read in babyl file.
#
$/ = "\037"; # this separates the records in a babyl file
$* = 1; # records are multi-lines
open(BABYL,$bfname) || die "Couldn't open $bfname\n";
$_ = <BABYL>; # discard header.
$msgnum = 0;
while (<BABYL>) {
chop; # get rid of delimeter
s/\f(.|\n)*\*\*\* EOOH \*\*\*\n//; # remove duplicate header information
open(RCVSTORE,"|" . $rcvstore . " $folder");
print RCVSTORE $_;
$msgnum++;
print "Message $msgnum done.\n";
}
------------------------------
Subject: inco - babyl to MH converter
From: Juergen Nickelsen <nickel at cs.tu-berlin.de>
Date: Fri, 1 Mar 1991 13:03:15 -0800
#!/bin/sh
# Usage: inco [from [folder]]
# "from" defaults to $HOME/Mail/outbound, "folder" to +inbox.
lispfile=/tmp/inco.$$.el
input=${1-$HOME/Mail/outbound}
tmpmbox=/tmp/inc.$$.mbox
folder=${2-+inbox}
if [ $# -ge 3 ]; then
echo Usage: `basename $0` [ from [ folder ]]
exit 2
fi
trap "rm -f $lispfile $tmpmbox ; exit 1" 1 2 15
touch $tmpmbox
chmod 600 $tmpmbox
echo '(rmail-input "'$input'")
(rmail-last-message)
(setq last (rmail-what-message))
(rmail-show-message 1)
(while (not (equal (rmail-what-message) last))
(rmail-output "'$tmpmbox'")
(rmail-delete-forward nil))
(rmail-output "'$tmpmbox'")
(kill-buffer (current-buffer))
' > $lispfile
emacs -batch -l $lispfile
inc -file $tmpmbox $folder
> $input
rm -f $lispfile $tmpmbox
------------------------------
Subject: t2h - add hyperlinks to message viewed
From: TANAKA Tomoyuki <tanaka at step.mother.com>
Date: Mon, 13 Sep 1999 11:35:43 -0600
#! /bin/sed -f
# "t2h" by TT news:alt.tanaka-tomoyuki http://listen.to/TT
# USE: t2h <file.txt >file.html
# Or: show | t2h | lynx -
s/&/\&/g
s/</\</g
s/>/\>/g
s/http:[^ "&) ]*/<a href="&">&<\/a>/g
s/news:[^ "&) ]*/<a href="&">&<\/a>/g
s/ftp:[^ "&) ]*/<a href="&">&<\/a>/g
s/telnet:[^ "&) ]*/<a href="&">&<\/a>/g
1i\
<PRE>
$a\
</PRE>
------------------------------
Subject: srvrsmtp.c patch
From: Paul Pomes <ppomes at Qualcomm.com>
Date: Fri, 1 Mar 1991 13:03:15 -0800
>From the 5.67 sources:
*** srvrsmtp.c- Mon Feb 22 12:25:54 1993
--- srvrsmtp.c Mon Feb 22 12:29:09 1993
***************
*** 384,389 ****
--- 384,395 ----
message("250", "Reset state");
if (InChild)
finis();
+
+ /* clean up a bit if running in parent */
+ hasmail = FALSE;
+ dropenvelope(CurEnv);
+ CurEnv = newenvelope(CurEnv);
+ CurEnv->e_flags = BlankEnvelope.e_flags;
break;
case CMDVRFY: /* vrfy -- verify address */
------------------------------
Subject: IRIX config file
From: Jack Repenning <jackr at informix.com>
Date: 25 Jul 1995 02:35:41 GMT
# Irix 5.3 (based on examples/sys5r4)
bboards on
bin /usr/local/bin/mh
cc cc
ccoptions -g
chown /bin/chown
curses -lcurses
etc /usr/local/lib/mh
ldoptions -L/usr/local/lib/mh
mail /usr/mail
mailgroup: mail
manuals local
mts sendmail/smtp
pop on
popdir /usr/local/bin
ranlib off
#sharedlib sys5
#slibdir /usr/local/lib/mh
signal void
sprintf int
options BIND
options DBMPWD
options DUMB
options FOLDPROT='"0700"'
options MHE
options MHRC
options MIME
options MORE='"/usr/bsd/more"'
options MSGPROT='"0600"'
options RENAME
options RPATHS
options SBACKUP='"\\#"'
#options SENDMTS
options SGI
#options SMTP
options SOCKETS
options SVR4
options SYS5
options SYS5DIR
options UNISTD
options _XOPEN_SOURCE
options VSPRINTF
From: David Paschich <dpassage at bigbook.com>
Date: 23 Apr 96 21:27:12 GMT
# @(#)$Id: mh.faq 11334 2012-11-24 05:47:03Z wohler $
# a 4.2BSD VAX system running SendMail
bin /usr/local/bin/mh
bboards off
etc /usr/local/lib/mh
mail /var/mail
manuals local
mandir /usr/local/man
chown /sbin/chown
ranlib off
mts sendmail
signal void
options BIND LOCKF FOLDPROT='"0700"' MHE MHRC MORE='"/usr/bsd/more"'
options MSGPROT='"0600"' RPATHS SENDMTS SGI SMTP SOCKETS SYS5
options TYPESIG="void" ncr MIME VSPRINTF UNISTD SYSVR4 SYS5DIR
------------------------------
Subject: HP-UX 10.20 config file
From: Marko Heikkinen <hema at iki.fi>
Date: 06 Jan 1997 17:19:07 +0000
bin /opt/mail/bin
bboards on
etc /opt/mail/lib/mh
editor prompter
remove mv -f
mail /var/mail
mandir /opt/man
manuals standard
chown /bin/chown
cc cc
ccoptions +DA1.0 +DS1.0
curses -lcurses
mts sendmail/smtp
pop off
slibdir: /opt/mail/lib
options SYS5
options MHE
options MIME
options ATZ
options BIND
options MHE
options MIME
options ATZ
options BIND
options MHE
options MHRC
options MORE='"/opt/gnu/bin/less"'
options MSGPROT='"0600"'
options NDIR
options NTOHLSWAP
options POPUUMBOX
options SOCKETS
options SYS5
options TZNAME
options TYPESIG=void
options VSPRINTF
options WHATNOW
options _STRINGS
signal void
curses -lcurses -ltermlib
sprintf int
------------------------------
Subject: Removing duplicate messages (Bourne)
From: Jerry Peek <jpeek at jpeek.com>
Date: 20 Nov 1995 18:51:24 GMT
Here's a simple-minded Bourne shell version. It uses
"scan" to get the message number and message-id of each message. If
a message has the same message-id as the previous message, the
script adds its message number to the "remove" shell variable.
#!/bin/sh
lastmsgid=hahahaha
remove=
scan -width 300 -format '%(msg) %{message-id}' |
while read msg msgid; do
if [ "$msgid" = "$lastmsgid" ]; then
remove="$remove $msg"
else
lastmsgid="$msgid"
fi
done
rmm $remove
That's pretty simple-minded. For example, if the $remove variable
gets too big, your system may complain. And I'm sure there are some
more-efficient ways to find the list of duplicate message-ids. But
that's the idea.
Subject: Removing duplicate messages (Perl)
From: rtor at ansa.co.uk (Owen Rees)
Date: 20 Nov 1995 12:39:47 GMT
I wrote a perl script to do this some time ago. All the usual dire
warnings about destructive technology apply - take a backup, do it on
a copy, try it on a small test case first etc. Don't use this script
unless you are prepared to accept the consequences.
#!/usr/local/bin/perl
$version = "rmmdup 1";
if (@ARGV == 0) { $folder = ""; }
elsif (@ARGV == 1) { $folder = $ARGV[0];
unless ( $folder =~ /^\+.+$/ )
{ die "usage $0 [+folder]\n"; };
}
else { die "usage $0 [+folder]\n"; };
$rmmlist = "";
open (scan, "scan $folder -format '%(msg) %{message-id}'|");
while (<scan>)
{ if ( ($msg,$msgid) = /^(\d+) (<.*>)$/)
{ if ($msgs{$msgid})
{ print "$msg duplicates $msgs{$msgid}\n";
$rmmlist .= " $msg";
}
else { $msgs{$msgid} = $msg; };
};
};
if ( $rmmlist ) { exec "rmm $folder $rmmlist"; };
exit;
Subject: Removing duplicate messages (Perl)
From: Bill Wohler <wohler at newt.com>
Date: Sun, 17 Oct 2004 13:00:20 -0700
#!/usr/bin/perl -w
#
# Id: mhfinddup 6593 2004-09-02 16:34:24Z wohler
=head1 NAME
mhfinddup - find duplicate messages
=head1 SYNOPSIS
mhfinddup [options] [folder ...]
=head1 DESCRIPTION
B<mhfinddup> finds and removes duplicate MH messages in the folders listed on
the command line (default: current folder). By default, you deal with
duplicate messages interactively. You can either remove the duplicate, not
remove the duplicate, or view the original and duplicate message before
deciding.
If you use the B<-msgid> option to B<send>, then you probably don't want to
list any F<+outbox> folders if you are using the B<--no-same-folder> option
and you want to preserve your sent messages as well as your messages to
mailing lists.
Note that if you specify one or more folders, or if you use the B<--all>
option, B<mhfinddup> recursively descends the given folders.
=head1 CONTEXT
Context is per B<flist>(1). That is, if F<+folder> is given, it will become
the current folder. If multiple folders are given, the last one specified will
become the current folder.
=head1 OPTIONS
=over 4
=item --all
Look for duplicates in all folders. If any folders are specified, this option
is ignored.
=item --debug
Turn on debugging messages.
=item --help
Display the usage of this command.
=item --list
List duplicated messages.
=item --no-same-folder
Since it is common to use C<refile -link> to file a message in multiple
folders, this script doesn't consider messages in different folders to be
duplicates. Specify this option to list or remove duplicates across folders.
=item --rmm
Remove messages non-interactively. Use with care! For safety, the B<--list>
option takes precedence if specified and is a good option to use before using
B<--rmm>.
=item --version
Display program version.
=back
=head1 RETURN VALUE
Returns 0 if all is well; non-zero otherwise.
=head1 EXAMPLES
=over 0
=item mhfinddup
Interactively remove duplicates from the current folder.
=item mhfinddup --all --list --no-same-folder
List all duplicates regardless if they are in different folders or not.
=item mhfinddup --rmm +lists
Remove all duplicates in F<+lists>, recursively.
=back
=head1 SEE ALSO
B<rmm>(1), B<mhl>(1), B<scan>(1)
=head1 VERSION
Revision: 6593
=head1 AUTHOR
Bill Wohler <wohler at newt.com>
Copyright (c) 2003 Newt Software. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, you can find it at
http://www.gnu.org/copyleft/gpl.html or write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
=head1 METHODS
=cut
# Packages and pragmas.
use Getopt::Long;
use strict;
# Constants.
my $cmd; # name by which command called
($cmd = $0) =~ s|^\./||; # ...minus the leading ./
my $ver = '6593'; # program version with CVS noise
# Variables (may be overridden by arguments).
my $all = 0; # look in all folders
my $debug = 0; # verbose mode
my $help = 0; # display usage
my $version = 0; # display version
my $list = 0; # list duplicates
my $no_same_folder = 0; # consider duplicates across folders
my $rmm = 0; # remove duplicates without asking
# Constants.
my $mhl = "/usr/lib/mh/mhl";
my $tmp = "/tmp/mhfinddup$$";
# Parse command line.
# The use of the posix_default option is to ensure that folders like +a are
# not confused with --all. I'd really prefer to set prefix_pattern to "(--|-)"
# so that abbreviations of options can be used without being confused with
# folders, but I couldn't make it so.
my %opts;
Getopt::Long::Configure("pass_through", "posix_default");
GetOptions('all' => \$all,
'debug' => \$debug,
'help' => \$help,
'list' => \$list,
'no-same-folder' => \$no_same_folder,
'rmm' => \$rmm,
'version' => \$version,
) or usage();
show_version() if ($version);
usage() if ($help || int(@ARGV) != int(map(/^\+/, @ARGV)));
my @folders = expand_folders(@ARGV);
print("Expanded " . join(" ", @ARGV) . " into\n" . join("\n", @folders) . "\n")
if ($debug);
print("Scanning for duplicate messages...\n");
my %msgs;
foreach my $folder (sort @folders) {
print("Scanning $folder...\n") if ($debug);
open (SCAN,
"MHCONTEXT=$tmp scan +$folder -format '%(msg) %{message-id}'|");
while (<SCAN>) {
if (my ($msg, $msgid) = /^(\d+) (<.*>)$/) {
if ($msgs{$msgid}) {
$msgs{$msgid} =~ m|^\+(.*)/(\d+)$|;
my($f, $m) = ($1, $2);
if ($folder eq $f || $no_same_folder) {
handle_dup($f, $m, $folder, $msg);
}
} else {
$msgs{$msgid} = "+$folder/$msg";
}
}
}
close(SCAN);
}
unlink("$tmp");
sub expand_folders {
my @folders = @_;
print("Getting list of folders...");
open(FOLDERS,
"flist -recurse "
. (($all == 1 && @folders == 0) ? "-all" : join(" ", @folders))
. "|")
or die("Could not determine folders\n");
@folders = ();
chomp(my $current_folder = `mhparam Current-Folder`);
$current_folder = quotemeta($current_folder);
while (<FOLDERS>) {
chomp;
my ($folder, $a, $b, $c, $d, $e, $f, $g, $count) = split;
if ($folder =~ /^$current_folder\+$/) {
$folder =~ s/\+$//; # remove current folder indication
}
next if ($count == 0);
push(@folders, $folder);
}
close(FOLDERS);
print("done\n");
return(@folders);
}
sub handle_dup {
my($f1, $m1, $f2, $m2) = @_;
my $ans;
repeat:
print("+$f2/$m2 duplicate of +$f1/$m1");
if ($list) {
print("\n");
} else {
if ($rmm) {
$ans = "y";
print("\n");
} else {
print(", remove? [Yns?] ");
chomp($ans = <STDIN>);
}
if ($ans eq "y" || $ans eq "") {
system("rmm +$f2 $m2");
} elsif ($ans eq "s") {
system("$mhl `mhpath +$f1 $m1` `mhpath +$f2 $m2`");
goto repeat;
} elsif ($ans eq "?") {
print("y, remove message (default)\n" .
"n, don't remove message\n" .
"s, show messages\n" .
"?, show this message\n");
goto repeat;
}
}
}
=head2 usage
Display usage information and exit.
=cut
sub usage {
print <<EOF;
Usage: $cmd [options] [folder ...]
--all remove duplicates in all folders
--debug print actions that program takes
--help display this message
--list list duplicates only
--no-same-folder consider duplicates even if in different folders
--rmm remove duplicates without asking
--version display program version
EOF
exit(1);
}
=head2 show_version
Display version information and exit.
=cut
sub show_version {
print("$cmd version $ver\n".
"Copyright (c) 2003 Bill Wohler <wohler at newt.com>\n\n".
"$cmd comes with ABSOLUTELY NO WARRANTY.\n\n".
"This is free software, and you are welcome\n".
"to redistribute it under certain conditions.\n\n".
"See `http://www.gnu.org/copyleft/gpl.html' for details.\n");
exit(0);
}
Local Variables:
mode: outline
outline-regexp: "^Subject:"
fill-prefix: " "
End:
|