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
|
<pre>Network Working Group R. Allbery, Ed.
Request for Comments: 5537 Stanford University
Obsoletes: <a href="./rfc1036">1036</a> C. Lindsey
Category: Standards Track November 2009
<span class="h1">Netnews Architecture and Protocols</span>
Abstract
This document defines the architecture of Netnews systems and
specifies the correct manipulation and interpretation of Netnews
articles by software that originates, distributes, stores, and
displays them. It also specifies the requirements that must be met
by any protocol used to transport and serve Netnews articles.
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and the IETF Trust's Legal
Provisions Relating to IETF Documents
(<a href="http://trustee.ietf.org/license-info">http://trustee.ietf.org/license-info</a>) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the BSD License.
Table of Contents
<a href="#section-1">1</a>. Introduction ....................................................<a href="#page-3">3</a>
<a href="#section-1.1">1.1</a>. Basic Concepts .............................................<a href="#page-3">3</a>
<a href="#section-1.2">1.2</a>. Scope ......................................................<a href="#page-3">3</a>
<a href="#section-1.3">1.3</a>. Requirements Notation ......................................<a href="#page-3">3</a>
<a href="#section-1.4">1.4</a>. Syntax Notation ............................................<a href="#page-3">3</a>
<a href="#section-1.5">1.5</a>. Definitions ................................................<a href="#page-4">4</a>
<a href="#section-2">2</a>. Transport .......................................................<a href="#page-5">5</a>
<span class="grey">Allbery & Lindsey Standards Track [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
<a href="#section-3">3</a>. Duties of Agents ................................................<a href="#page-6">6</a>
<a href="#section-3.1">3.1</a>. General Principles .........................................<a href="#page-6">6</a>
<a href="#section-3.2">3.2</a>. The Path Header Field ......................................<a href="#page-7">7</a>
<a href="#section-3.2.1">3.2.1</a>. Constructing the Path Header Field ..................<a href="#page-8">8</a>
<a href="#section-3.2.2">3.2.2</a>. Path Header Field Example ...........................<a href="#page-9">9</a>
<a href="#section-3.3">3.3</a>. Article History and Duplicate Suppression .................<a href="#page-10">10</a>
<a href="#section-3.4">3.4</a>. Duties of a Posting Agent .................................<a href="#page-11">11</a>
<a href="#section-3.4.1">3.4.1</a>. Proto-Articles .....................................<a href="#page-12">12</a>
<a href="#section-3.4.2">3.4.2</a>. Multiple Injection of Articles .....................<a href="#page-13">13</a>
<a href="#section-3.4.3">3.4.3</a>. Followups ..........................................<a href="#page-14">14</a>
<a href="#section-3.4.4">3.4.4</a>. Construction of the References Header Field ........<a href="#page-15">15</a>
<a href="#section-3.5">3.5</a>. Duties of an Injecting Agent ..............................<a href="#page-15">15</a>
<a href="#section-3.5.1">3.5.1</a>. Forwarding Messages to a Moderator .................<a href="#page-18">18</a>
<a href="#section-3.6">3.6</a>. Duties of a Relaying Agent ................................<a href="#page-19">19</a>
<a href="#section-3.7">3.7</a>. Duties of a Serving Agent .................................<a href="#page-21">21</a>
<a href="#section-3.8">3.8</a>. Duties of a Reading Agent .................................<a href="#page-22">22</a>
<a href="#section-3.9">3.9</a>. Duties of a Moderator .....................................<a href="#page-22">22</a>
<a href="#section-3.10">3.10</a>. Duties of a Gateway ......................................<a href="#page-24">24</a>
<a href="#section-3.10.1">3.10.1</a>. Duties of an Outgoing Gateway .....................<a href="#page-25">25</a>
<a href="#section-3.10.2">3.10.2</a>. Duties of an Incoming Gateway .....................<a href="#page-25">25</a>
<a href="#section-3.10.3">3.10.3</a>. Original-Sender Header Field ......................<a href="#page-27">27</a>
<a href="#section-3.10.4">3.10.4</a>. Gateway Example ...................................<a href="#page-28">28</a>
<a href="#section-4">4</a>. Media Types ....................................................<a href="#page-29">29</a>
<a href="#section-4.1">4.1</a>. application/news-transmission .............................<a href="#page-30">30</a>
<a href="#section-4.2">4.2</a>. application/news-groupinfo ................................<a href="#page-31">31</a>
<a href="#section-4.3">4.3</a>. application/news-checkgroups ..............................<a href="#page-33">33</a>
<a href="#section-5">5</a>. Control Messages ...............................................<a href="#page-35">35</a>
<a href="#section-5.1">5.1</a>. Authentication and Authorization ..........................<a href="#page-35">35</a>
<a href="#section-5.2">5.2</a>. Group Control Messages ....................................<a href="#page-36">36</a>
<a href="#section-5.2.1">5.2.1</a>. The newgroup Control Message .......................<a href="#page-36">36</a>
<a href="#section-5.2.1.1">5.2.1.1</a>. newgroup Control Message Example ..........<a href="#page-37">37</a>
<a href="#section-5.2.2">5.2.2</a>. The rmgroup Control Message ........................<a href="#page-38">38</a>
<a href="#section-5.2.3">5.2.3</a>. The checkgroups Control Message ....................<a href="#page-38">38</a>
<a href="#section-5.3">5.3</a>. The cancel Control Message ................................<a href="#page-40">40</a>
<a href="#section-5.4">5.4</a>. The Supersedes Header Field ...............................<a href="#page-40">40</a>
<a href="#section-5.5">5.5</a>. The ihave and sendme Control Messages .....................<a href="#page-41">41</a>
<a href="#section-5.6">5.6</a>. Obsolete Control Messages .................................<a href="#page-42">42</a>
<a href="#section-6">6</a>. Security Considerations ........................................<a href="#page-42">42</a>
<a href="#section-6.1">6.1</a>. Compromise of System Integrity ............................<a href="#page-42">42</a>
<a href="#section-6.2">6.2</a>. Denial of Service .........................................<a href="#page-44">44</a>
<a href="#section-6.3">6.3</a>. Leakage ...................................................<a href="#page-44">44</a>
<a href="#section-7">7</a>. IANA Considerations ............................................<a href="#page-45">45</a>
<a href="#section-8">8</a>. References .....................................................<a href="#page-45">45</a>
<a href="#section-8.1">8.1</a>. Normative References ......................................<a href="#page-45">45</a>
<a href="#section-8.2">8.2</a>. Informative References ....................................<a href="#page-46">46</a>
<a href="#appendix-A">Appendix A</a>. Changes to the Existing Protocols ....................<a href="#page-47">47</a>
<a href="#appendix-B">Appendix B</a>. Acknowledgements .....................................<a href="#page-48">48</a>
<span class="grey">Allbery & Lindsey Standards Track [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
<span class="h3"><a class="selflink" id="section-1.1" href="#section-1.1">1.1</a>. Basic Concepts</span>
"Netnews" is a set of protocols for generating, storing, and
retrieving news "articles" whose format is defined in [<a href="./rfc5536" title=""Netnews Article Format"">RFC5536</a>], and
for exchanging them amongst a readership that is potentially widely
distributed. It is organized around "newsgroups", with the
expectation that each reader will be able to see all articles posted
to each newsgroup in which he participates. These protocols most
commonly use a flooding algorithm that propagates copies throughout a
network of participating servers. Typically, only one copy is stored
per server, and each server makes it available on demand to readers
able to access that server.
"Usenet" is a particular worldwide, publicly accessible network based
on the Netnews protocols. It is only one such possible network;
there are deployments of the Netnews protocols other than Usenet
(such as ones internal to particular organizations). This document
discusses the more general Netnews architecture and protocols.
<span class="h3"><a class="selflink" id="section-1.2" href="#section-1.2">1.2</a>. Scope</span>
This document defines the architecture of Netnews systems and
specifies the correct manipulation and interpretation of Netnews
articles by software that originates, distributes, stores, and
displays them. It addresses protocol issues that are independent of
transport protocols such as the Network News Transfer Protocol (NNTP)
[<a href="./rfc3977" title=""Network News Transfer Protocol (NNTP)"">RFC3977</a>], and specifies the requirements Netnews places on those
underlying transport protocols. It also specifies the handling of
control messages.
The format and syntax of Netnews articles are specified in [<a href="./rfc5536" title=""Netnews Article Format"">RFC5536</a>],
which should be read in conjunction with this document.
<span class="h3"><a class="selflink" id="section-1.3" href="#section-1.3">1.3</a>. Requirements Notation</span>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirement Levels"">RFC2119</a>].
<span class="h3"><a class="selflink" id="section-1.4" href="#section-1.4">1.4</a>. Syntax Notation</span>
Syntax defined in this document uses the Augmented Backus-Naur Form
(ABNF) notation (including the Core Rules) defined in [<a href="./rfc5234" title=""Augmented BNF for Syntax Specifications: ABNF"">RFC5234</a>] and
constructs defined in [<a href="./rfc5536" title=""Netnews Article Format"">RFC5536</a>] and [<a href="./rfc5322" title=""Internet Message Format"">RFC5322</a>].
<span class="grey">Allbery & Lindsey Standards Track [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
The ABNF rules defined elsewhere and used in this document are:
CRLF = <see <a href="./rfc5234#appendix-B.1">[RFC5234] Appendix B.1</a>>
DIGIT = <see <a href="./rfc5234#appendix-B.1">[RFC5234] Appendix B.1</a>>
HTAB = <see <a href="./rfc5234#appendix-B.1">[RFC5234] Appendix B.1</a>>
SP = <see <a href="./rfc5234#appendix-B.1">[RFC5234] Appendix B.1</a>>
WSP = <see <a href="./rfc5234#appendix-B.1">[RFC5234] Appendix B.1</a>>
VCHAR = <see <a href="./rfc5234#appendix-B.1">[RFC5234] Appendix B.1</a>>
argument = <see <a href="./rfc5536#section-3.2.3">[RFC5536] Section 3.2.3</a>>
article-locator = <see <a href="./rfc5536#section-3.2.14">[RFC5536] Section 3.2.14</a>>
component = <see <a href="./rfc5536#section-3.1.4">[RFC5536] Section 3.1.4</a>>
control-command = <see <a href="./rfc5536#section-3.2.3">[RFC5536] Section 3.2.3</a>>
diag-keyword = <see <a href="./rfc5536#section-3.1.5">[RFC5536] Section 3.1.5</a>>
diag-match = <see <a href="./rfc5536#section-3.1.5">[RFC5536] Section 3.1.5</a>>
diag-other = <see <a href="./rfc5536#section-3.1.5">[RFC5536] Section 3.1.5</a>>
dist-name = <see <a href="./rfc5536#section-3.2.4">[RFC5536] Section 3.2.4</a>>
msg-id = <see <a href="./rfc5536#section-3.1.3">[RFC5536] Section 3.1.3</a>>
newsgroup-name = <see <a href="./rfc5536#section-3.1.4">[RFC5536] Section 3.1.4</a>>
path-diagnostic = <see <a href="./rfc5536#section-3.1.5">[RFC5536] Section 3.1.5</a>>
path-identity = <see <a href="./rfc5536#section-3.1.5">[RFC5536] Section 3.1.5</a>>
path-nodot = <see <a href="./rfc5536#section-3.1.5">[RFC5536] Section 3.1.5</a>>
tail-entry = <see <a href="./rfc5536#section-3.1.5">[RFC5536] Section 3.1.5</a>>
verb = <see <a href="./rfc5536#section-3.2.3">[RFC5536] Section 3.2.3</a>>
display-name = <see <a href="./rfc5322#section-3.4">[RFC5322] Section 3.4</a>>
local-part = <see <a href="./rfc5322#section-3.4.1">[RFC5322] Section 3.4.1</a>>
mailbox = <see <a href="./rfc5322#section-3.4">[RFC5322] Section 3.4</a>>
<span class="h3"><a class="selflink" id="section-1.5" href="#section-1.5">1.5</a>. Definitions</span>
Any term used in this document that is defined in <a href="./rfc5536#section-1.5">Section 1.5 of
[RFC5536]</a> is used with the definition given there. In addition, the
following terms will be used:
A "hierarchy" is the set of all newsgroups whose names share a first
<component> (as defined in <a href="./rfc5536#section-3.1.4">Section 3.1.4 of [RFC5536]</a>). A "sub-
hierarchy" is the set of all newsgroups whose names share several
initial components.
A "news server" is further distinguished into the roles of "injecting
agent", "relaying agent", and "serving agent". An "injecting agent"
accepts a proto-article with the goal of distributing it to relaying
and serving agents and hence to readers. A "relaying agent" accepts
articles from other relaying agents or injecting agents and
distributes them to other relaying agents or serving agents. A
"serving agent" receives an article from a relaying agent or
injecting agent and makes it available to readers.
<span class="grey">Allbery & Lindsey Standards Track [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
A "user agent" is further distinguished into the roles of "posting
agent" and "reading agent". A "posting agent" is software that
assists in the preparation of a proto-article and then passes it to
an injecting agent. A "reading agent" is software that retrieves
articles from a serving agent for presentation to a reader.
"Injecting" an article is the processing of a proto-article by an
injecting agent. Normally, this action is done once and only once
for a given article. "Multiple injection" is passing the same
article to multiple injecting agents, either serially or in parallel,
by one or several posting agents.
A "gateway" is software that receives news articles and converts them
to messages of some other kind (such as [<a href="./rfc5322" title=""Internet Message Format"">RFC5322</a>] mail messages),
receives messages of some other kind and converts them to news
articles, or conveys articles between two separate Netnews networks.
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Transport</span>
The exact means used to transmit articles from one agent to another
is not specified. NNTP [<a href="./rfc3977" title=""Network News Transfer Protocol (NNTP)"">RFC3977</a>] is the most common transport
mechanism for Netnews networks. Other methods in use include the
Unix-to-Unix Copy Protocol [<a href="#ref-UUCP" title=""Managing UUCP and Usenet"">UUCP</a>] (extensively used in the early days
of Usenet) and physically delivered magnetic and optical media. Any
mechanism may be used in conjunction with this protocol provided that
it can meet the requirements specified here.
Transports for Netnews articles MUST treat news articles as
uninterpreted sequences of octets, excluding the values %d00 (which
may not occur in Netnews articles), %d13, and %d10 (which MUST only
appear in Netnews articles as a pair in that order and which,
together, denote a line separator). These octets are the US-ASCII
[<a href="#ref-ASCII" title=""Coded Character Sets - 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII)"">ASCII</a>] characters NUL, CR, and LF respectively.
NOTE: This corresponds to the range of octets permitted in MIME
8bit data [<a href="./rfc2045" title=""Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies"">RFC2045</a>]. Transports for Netnews are not required to
support transmission of MIME binary data.
In particular, transports MUST convey all header fields unmodified
(including header fields within message/rfc822 objects in article
bodies), even if they contain octets in the range of 128 to 255.
Furthermore, transports for relaying and serving agents MUST, and
transports for other agents SHOULD, convey lines even if they exceed
998 characters in length, especially in article bodies. (This
requirement is stricter than MIME 8bit data.) These requirements
include the transport paths between posting agents, injecting agents,
serving agents, and reading agents.
<span class="grey">Allbery & Lindsey Standards Track [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Duties of Agents</span>
The following section specifies the duties of the agents involved in
the creation, relaying, and serving of Netnews articles. This
protocol is described by following the life of a typical Usenet
article: it is prepared by a posting agent, given to an injecting
agent, transferred through one or more relaying agents, accepted by a
serving agent, and finally retrieved by a reading agent. Articles
submitted to moderated groups go through an additional process, which
is described separately (see <a href="#section-3.5.1">Section 3.5.1</a> and Step 7 of
<a href="#section-3.5">Section 3.5</a>). Finally, the additional duties and requirements of a
gateway are discussed.
At each step, each agent has a set of checks and transformations of
the article that it is required to perform. These are described as
sequences of steps to be followed, but it should be understood that
it is the effect of these sequences that is important, and
implementations may use any method that produces the same effect.
Many news servers combine the functions of injecting agent, relaying
agent, and serving agent in a single software package. For the
purposes of this specification, such combined agents should
conceptually be treated as an injecting agent that sends articles to
a serving agent and, optionally, to a relaying agent. The
requirements of all three agents MUST still be met when the news
server is performing the functions of those agents.
On news servers that accept them, control messages may have
additional effects than those described below. Those effects are
described in <a href="#section-5">Section 5</a>.
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. General Principles</span>
There are two important principles that news implementors and
administrators need to keep in mind. The first is the well-known
Internet Robustness Principle:
Be liberal in what you accept, and conservative in what you send.
As applied to Netnews, this primarily means that unwanted or non-
compliant articles SHOULD be rejected as early as possible, but once
they are in general circulation, relaying and serving agents may wish
to accept them where possible rather than lose information. Posting
agents and injecting agents SHOULD therefore be maximally strict in
their application of both this protocol and [<a href="./rfc5536" title=""Netnews Article Format"">RFC5536</a>], and reading
agents SHOULD be robust in the presence of violations of the Netnews
article format where possible.
<span class="grey">Allbery & Lindsey Standards Track [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
In the case of Netnews, there is an even more important principle,
derived from a much older code of practice, the Hippocratic Oath (we
may thus call this the Hippocratic Principle):
First, do no harm.
It is vital to realize that decisions that might be merely suboptimal
in a smaller context can become devastating mistakes when amplified
by the actions of thousands of hosts within a few minutes.
No Netnews agent is ever required to accept any article. It is
common for injecting, relaying, and serving agents to reject well-
formed articles for reasons of local policy (such as not wishing to
carry a particular newsgroup or attempting to filter out unwanted
articles). This document specifies how articles are to be treated if
they are accepted and specifies some cases where they must be
rejected, but an agent MAY always reject any article for other
reasons than those stated here.
A primary goal of the Netnews protocol is to ensure that all readers
receiving a particular article (as uniquely identified by the content
of its Message-ID header field) see the identical article, apart from
allowable divergence in trace headers and local metadata.
Accordingly, agents (other than moderators) MUST NOT modify articles
in ways other than described here. Unacceptable articles MUST be
rejected rather than corrected.
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. The Path Header Field</span>
All news server components (injecting agents, relaying agents, and
serving agents) MUST identify themselves, when processing an article,
by prepending their <path-identity> (defined in <a href="./rfc5536#section-3.1.5">Section 3.1.5 of
[RFC5536]</a>) to the Path header field. Injecting agents MUST also use
the same identity in Injection-Info header fields that they add, and
serving and relaying agents SHOULD use the same identity in any Xref
header fields they add.
The <path-identity> used by an agent may be chosen via one of the
following methods (in decreasing order of preference):
1. The fully qualified domain name (FQDN) of the system on which the
agent is running.
2. A fully qualified domain name (FQDN) within a domain affiliated
with the administrators of the agent and guaranteed to be unique
by the administrators of that domain. For example, the
<span class="grey">Allbery & Lindsey Standards Track [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
uniqueness of server.example.org could be guaranteed by the
administrator of example.org even if there is no DNS record for
server.example.org itself.
3. Some other (arbitrary) name in the form of a <path-nodot>,
believed to be unique and registered at least with all the other
news servers to which that relaying agent or injecting agent
sends articles. This option SHOULD NOT be used unless the
earlier options are unavailable or unless the name is of
longstanding usage.
Some existing implementations treat <path-identity> as case-
sensitive, some as case-insensitive. The <path-identity> therefore
SHOULD be all lowercase and implementations SHOULD compare identities
case-insensitively.
<span class="h4"><a class="selflink" id="section-3.2.1" href="#section-3.2.1">3.2.1</a>. Constructing the Path Header Field</span>
If a relaying or serving agent receives an article from an injecting
or serving agent that is part of the same news server, it MAY leave
the Path header field of the article unchanged. Otherwise, every
injecting, relaying, or serving agent that accepts an article MUST
update the Path header field as follows. Note that the Path header
field content is constructed from right to left by prepending
elements.
1. The agent MUST prepend "!" to the Path header field content.
2. An injecting agent SHOULD prepend the <path-diagnostic>
"!.POSTED", optionally followed by "." and the FQDN or IP address
of the source, to the Path header field content.
3. A relaying or serving agent SHOULD prepend a <path-diagnostic> to
the Path header field content, where the <path-diagnostic> is
chosen as follows:
* If the expected <path-identity> of the source of the article
matches the leftmost <path-identity> of the Path header
field's content, use "!" (<diag-match>), resulting in two
consecutive "!"s.
* If the expected <path-identity> of the source of the article
does not match, use "!.MISMATCH." followed by the expected
<path-identity> of the source or its IP address.
* If the relaying or serving agent is not willing or able to
check the <path-identity>, use "!.SEEN." followed by the FQDN,
IP address, or expected <path-identity> of the source.
<span class="grey">Allbery & Lindsey Standards Track [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
The "expected <path-identity> of the source of the article" is a
<path-identity> for the injecting or relaying agent that passed
the article to this relaying or serving agent, determined by
properties of the connection via which the article was received
(for example, an authentication identity or a peer IP address).
Be aware that [<a href="./rfc1036" title=""Standard for interchange of USENET messages"">RFC1036</a>] did not include <path-diagnostic>.
Implementations that predate this specification will add only
single "!" characters between <path-identity> strings.
4. The agent MAY then prepend to the Path header field content "!"
or "!!" followed by an additional <path-identity> for itself
other than its primary one. Using "!!", and thereby adding a
<diag-match> since the <path-identity> clearly is verified, is
RECOMMENDED. This step may be repeated any number of times.
This is permitted for agents that have multiple <path-identity>s
(such as during a transition from one to another). Each of these
<path-identity>s MUST meet the requirements set out in
<a href="#section-3.2">Section 3.2</a>.
5. Finally, the agent MUST prepend its primary <path-identity> to
the Path header field content. The primary <path-identity> is
the <path-identity> it normally advertises to its peers for their
use in generating <path-diagnostic>s as described above.
Any agent that modifies the Path header field MAY fold it by
inserting FWS (folding white space) immediately after any <path-
identity> or <diag-other> it added (see <a href="./rfc5536#section-3.1.5">Section 3.1.5 of [RFC5536]</a>
for allowable locations for FWS).
<span class="h4"><a class="selflink" id="section-3.2.2" href="#section-3.2.2">3.2.2</a>. Path Header Field Example</span>
Here is an example of a Path header field created by following the
rules for injecting and relaying agents.
Path: foo.isp.example!.SEEN.isp.example!foo-news
!.MISMATCH.2001:DB8:0:0:8:800:200C:417A!bar.isp.example
!!old.site.example!barbaz!!baz.isp.example
!.POSTED.dialup123.baz.isp.example!not-for-mail
This article was injected by baz.isp.example as indicated by the
<diag-keyword> "POSTED". The injector has recorded that it received
the article from dialup123.baz.isp.example. "not-for-mail" is a
common <tail-entry>.
<span class="grey">Allbery & Lindsey Standards Track [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
The article was relayed to the relaying agent known, at least to
old.site.example, as "barbaz". That relaying agent confirmed to its
satisfaction that "baz.isp.example" was an expected <path-identity>
for the source of the article and therefore used <diag-match> ("!")
for its <path-diagnostic>.
barbaz relayed it to old.site.example, which does not support <diag-
keyword> and therefore used the old "!" delimiter. This indicates
that the identity of "barbaz" was not verified and may have been
forged.
old.site.example relayed it to a news server using the <path-
identity> of bar.isp.example and claiming (by using the "!" <path-
diagnostic>) to have verified that it came from old.site.example.
bar.isp.example relayed it to foo-news, which, not being convinced
that it truly came from bar.isp.example, inserted the <diag-keyword>
"MISMATCH" and then stated that it received the article from the IPv6
address [2001:DB8:0:0:8:800:200C:417A]. (This is not to say that
bar.isp.example was not a correct <path-identity> for that source but
simply that the identity did not match the expectations of foo-news.)
foo-news then passed the article to foo.isp.example, which declined
to validate its <path-identity> and instead appended the <diag-
keyword> "SEEN" to indicate it knows the source of the article as
isp.example. This may be either an expected <path-identity> or the
FQDN of the system from which it received the article. Presumably,
foo.isp.example is a serving agent that then delivered the article to
a reading agent.
baz.isp.example, bar.isp.example, and foo-news folded the Path header
field.
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Article History and Duplicate Suppression</span>
Netnews normally uses a flood-fill algorithm for propagation of
articles in which each news server offers the articles it accepts to
multiple peers, and each news server may be offered the same article
from multiple other news servers. Accordingly, duplicate suppression
is key; if a news server accepted every article it was offered, it
may needlessly accept (and then potentially retransmit) dozens of
copies of every article.
Relaying and serving agents therefore MUST keep a record of articles
they have already seen and use that record to reject additional
offers of the same article. This record is called the "history" file
or database.
<span class="grey">Allbery & Lindsey Standards Track [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
Each article is uniquely identified by its message identifier, so a
relaying or serving agent could satisfy this requirement by storing a
record of every message identifier that agent has ever seen. Such a
history database would grow without bound, however, so it is common
and permitted to optimize based on the Injection-Date or Date header
field of an article as follows. (In the following discussion, the
"date" of an article is defined to be the date represented by its
Injection-Date header field, if present; otherwise, by its Date
header field.)
o Agents MAY select a cutoff interval and reject any article with a
date farther in the past than that cutoff interval. If this
interval is shorter than the time it takes for an article to
propagate through the network, the agent might reject an article
it had not yet seen, so it ought not to be aggressively short.
For Usenet, for example, a cutoff interval of no less than seven
days is conventional.
o Agents that enforce such a cutoff MAY then drop records of
articles that had dates older than the cutoff from their history
databases. If such an article were offered to the agent again, it
would be rejected due to the cutoff date, so the history record is
no longer required to suppress the duplicate.
o Alternatively, agents MAY drop history records according to the
date when the article was first seen by that agent rather than the
date of the article. In this case, the history retention interval
MUST be at least 24 hours longer than the cutoff interval to allow
for articles dated in the future. This interval matches the
allowable error in the date of the article (see <a href="#section-3.5">Section 3.5</a>).
These are just two implementation strategies for article history,
albeit the most common ones. Relaying and serving agents are not
required to use these strategies, only to meet the requirement of not
accepting an article more than once. However, these strategies are
safe and widely deployed, and implementors are encouraged to use one
of them, especially if they do not have extensive experience with
Netnews and the subtle effects of its flood-fill algorithm.
<span class="h3"><a class="selflink" id="section-3.4" href="#section-3.4">3.4</a>. Duties of a Posting Agent</span>
A posting agent is the component of a user agent that assists a
poster in creating a valid proto-article and forwarding it to an
injecting agent.
<span class="grey">Allbery & Lindsey Standards Track [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
Posting agents SHOULD ensure that proto-articles they create are
valid according to [<a href="./rfc5536" title=""Netnews Article Format"">RFC5536</a>] and any other applicable policies. They
MUST NOT create any Injection-Info header field; this header field
may only be added by the injecting agent.
If the proto-article already contains both Message-ID and Date header
fields, posting agents MAY add an Injection-Date header field to that
proto-article immediately before passing that proto-article to an
injection agent. They SHOULD do so if the Date header field
(representing the composition time of the proto-article) is more than
a day in the past at the time of injection. They MUST do so if the
proto-article is being submitted to more than one injecting agent;
see <a href="#section-3.4.2">Section 3.4.2</a>.
The Injection-Date header field is new in this revision of the
Netnews protocol and is designed to allow the Date header field to
hold the composition date (as recommended in <a href="./rfc5322#section-3.6.1">Section 3.6.1 of
[RFC5322]</a>), even if the proto-article is not to be injected for some
time after its composition. However, note that all implementations
predating this specification ignore the Injection-Date header field
and use the Date header field in its stead for rejecting articles
older than their cutoff (see <a href="#section-3.3">Section 3.3</a>), and injecting agents
predating this specification do not add an Injection-Date header.
Articles with a Date header field substantially in the past will
still be rejected by implementations predating this specification,
regardless of the Injection-Date header field, and hence may suffer
poorer propagation.
Contrary to [<a href="./rfc5322" title=""Internet Message Format"">RFC5322</a>], which implies that the mailbox or mailboxes in
the From header field should be that of the poster or posters, a
poster who does not, for whatever reason, wish to use his own mailbox
MAY use any mailbox ending in the top-level domain ".invalid"
[<a href="./rfc2606" title=""Reserved Top Level DNS Names"">RFC2606</a>].
Posting agents meant for use by ordinary posters SHOULD reject any
attempt to post an article that cancels or supersedes (via the
Supersedes header field) another article of which the poster is not
the author or sender.
<span class="h4"><a class="selflink" id="section-3.4.1" href="#section-3.4.1">3.4.1</a>. Proto-Articles</span>
A proto-article is an article in the format used by a posting agent
when offering that article to an injecting agent. It may omit
certain header fields that can be better supplied by the injecting
agent and will not contain header fields that are added by the
injecting agent. A proto-article is only for transmission to an
injecting agent and SHOULD NOT be transmitted to any other agent.
<span class="grey">Allbery & Lindsey Standards Track [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
A proto-article has the same format as a normal article except that
the Injection-Info and Xref header fields MUST NOT be present, the
Path header field SHOULD NOT contain a "POSTED" <diag-keyword>, and
any of the following mandatory header fields MAY be omitted:
Message-ID, Date, and Path. In all other respects, a proto-article
MUST be a valid Netnews article. In particular, the header fields
that may be omitted MUST NOT be present with invalid content.
If a posting agent intends to offer the same proto-article to
multiple injecting agents, the header fields Message-ID, Date, and
Injection-Date MUST be present and identical in all copies of the
proto-article. See <a href="#section-3.4.2">Section 3.4.2</a>.
<span class="h4"><a class="selflink" id="section-3.4.2" href="#section-3.4.2">3.4.2</a>. Multiple Injection of Articles</span>
Under some circumstances (for example, when posting to multiple,
supposedly disjoint, networks, when using injecting agents with
spotty connectivity, or when desiring additional redundancy), a
posting agent may wish to offer the same article to multiple
injecting agents. In this unusual case, the goal is not to create
multiple independent articles but rather to inject the same article
at multiple points and let the normal duplicate suppression facility
of Netnews (see <a href="#section-3.3">Section 3.3</a>) ensure that any given agent accepts the
article only once, even if supposedly disjoint networks have
unexpected links.
Whenever possible, multiple injection SHOULD be done by offering the
same proto-article to multiple injecting agents. The posting agent
MUST supply the Message-ID, Date, and Injection-Date header fields,
and the proto-article as offered to each injecting agent MUST be
identical.
In some cases, offering the same proto-article to all injecting
agents may not be possible (such as when gatewaying, after injection,
articles found on one Netnews network to another supposedly
unconnected one). In this case, the posting agent MUST remove any
Xref header field and rename or remove any Injection-Info, Path, and
other trace header fields before passing it to another injecting
agent. (This converts the article back into a proto-article.) It
MUST retain unmodified the Message-ID, Date, and Injection-Date
header fields. It MUST NOT add an Injection-Date header field if it
is missing from the existing article.
NOTE: Multiple injection inherently risks duplicating articles.
Multiple injection after injection, by converting an article back
to a proto-article and injecting it again, additionally risks
loops, loss of trace information, unintended repeat injection into
the same network, and other problems. It should be done with care
<span class="grey">Allbery & Lindsey Standards Track [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
and only when there is no alternative. The requirement to retain
Message-ID, Date, and Injection-Date header fields minimizes the
possibility of a loop and ensures that the newly injected article
is not treated as a new, separate article.
Multiple injection of an article that lists one or more moderated
newsgroups in its Newsgroups header field SHOULD only be done by a
moderator and MUST only be done after the proto-article has been
approved for all moderated groups to which it is to be posted and
after an Approved header field has been added (see <a href="#section-3.9">Section 3.9</a>).
Multiple injection of an unapproved article intended for moderated
newsgroups will normally only result in the moderator receiving
multiple copies, and if the newsgroup status is not consistent across
all injecting agents, may result in duplication of the article or
other problems.
<span class="h4"><a class="selflink" id="section-3.4.3" href="#section-3.4.3">3.4.3</a>. Followups</span>
A followup is an article that contains a response to the contents of
an earlier article, its precursor. In addition to its normal duties,
a posting agent preparing a followup is also subject to the following
requirements. Wherever in the following it is stated that, by
default, a header field is said to be inherited from one of those
header fields in the precursor, it means that its initial content is
to be a copy of the content of that precursor header field (with
changes in folding permitted). However, posters MAY then override
that default before posting.
Despite the historic practice of some posting agents, the Keywords
header field SHOULD NOT be inherited by default from the precursor
article.
1. If the Followup-To header field of the precursor article consists
of "poster", the followup MUST NOT be posted by default but, by
default, is to be emailed to the address given in the precursor's
Reply-To or From header field following the rules for an email
reply [<a href="./rfc5322" title=""Internet Message Format"">RFC5322</a>]. This action MAY be overridden by the poster, in
which case the posting agent should continue as if the
Followup-To header field in the precursor did not exist.
2. The Newsgroups header field SHOULD, by default, be inherited from
the precursor's Followup-To header field if present; otherwise,
it is inherited from the precursor's Newsgroups header field.
<span class="grey">Allbery & Lindsey Standards Track [Page 14]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-15" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
3. The Subject header field SHOULD, by default, be inherited from
that of the precursor. The case-sensitive string "Re: "
(including the space after the colon) MAY be prepended to the
content of its Subject header field unless it already begins with
that string.
NOTE: Prepending "Re: " serves no protocol function and hence
is not required, but it is widely expected and not doing so
would be surprising.
4. The Distribution header field SHOULD, by default, be inherited
from the precursor's Distribution header field, if present.
5. The followup MUST have a References header field referring to its
precursor, constructed in accordance with <a href="#section-3.4.4">Section 3.4.4</a>.
<span class="h4"><a class="selflink" id="section-3.4.4" href="#section-3.4.4">3.4.4</a>. Construction of the References Header Field</span>
The following procedure is to be used whenever some previous article
(the "parent") is to be referred to in the References header field of
a new article, whether because the new article is a followup and the
parent is its precursor or for some other reason.
The content of the new article's References header field MUST be
formed from the content of the parent's References header field if
present, followed by the content of the Message-ID header field of
the parent. If the parent had a References header, FWS as defined in
[<a href="./rfc5536" title=""Netnews Article Format"">RFC5536</a>] MUST be added between its content and the Message-ID header
field content.
If the resulting References header field would, after unfolding,
exceed 998 characters in length (including its field name but not the
final CRLF), it MUST be trimmed (and otherwise MAY be trimmed).
Trimming means removing any number of message identifiers from its
content, except that the first message identifier and the last two
MUST NOT be removed.
An essential property of the References header field, guaranteed by
the above procedure and REQUIRED to be maintained by any extensions
to this protocol, is that an article MUST NOT precede one of its
parents.
<span class="h3"><a class="selflink" id="section-3.5" href="#section-3.5">3.5</a>. Duties of an Injecting Agent</span>
An injecting agent takes a proto-article from a posting agent and
either forwards it to a moderator or passes it to a relaying or
serving agent or agents. An injecting agent bears the primary
responsibility for ensuring that any article it injects conforms with
<span class="grey">Allbery & Lindsey Standards Track [Page 15]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-16" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
the rules of the Netnews standards. The administrator of an
injecting agent is also expected to bear some responsibility towards
the rest of the Netnews network to which it is connected for the
articles the injecting agent accepts.
Injecting agents, when rejecting articles, are encouraged to
communicate the reason for rejection to the posting agent by using
whatever facility is provided by the underlying transport. The
injecting agent is in a unique position to communicate the reason for
rejection; relaying agents and serving agents normally have to reject
messages silently. The injecting agent therefore bears much of the
burden of diagnosing broken posting agents or communicating policy
violations to posters.
An injecting agent MUST have available a list (possibly empty) of
moderated groups for which it accepts articles and the corresponding
submission addresses. It SHOULD have available a list of valid
newsgroups to catch articles not posted to a valid newsgroup and
therefore likely to be silently discarded by relaying and serving
agents. Usually, an injecting agent is deployed in conjunction with
a serving agent and maintains these lists based on control messages
received by the serving agent.
An injecting agent processes proto-articles as follows:
1. It SHOULD verify that the article is from a trusted source (for
example, by relying on the authorization capability of the
underlying transport used to talk to the posting agent).
2. It MUST reject any proto-article that does not have the proper
mandatory header fields for a proto-article, that has Injection-
Info or Xref header fields, that has a Path header field
containing the "POSTED" <diag-keyword>, or that is not
syntactically valid as defined by [<a href="./rfc5536" title=""Netnews Article Format"">RFC5536</a>]. It SHOULD reject
any proto-article that contains a header field deprecated for
Netnews (see, for example, [<a href="./rfc3798" title=""Message Disposition Notification"">RFC3798</a>]). It MAY reject any proto-
article that contains trace header fields (e.g., NNTP-Posting-
Host) indicating that it was already injected by an injecting
agent that did not add Injection-Info or Injection-Date.
3. It SHOULD reject any article whose Injection-Date or Date header
field is more than 24 hours into the future (and MAY use a
margin less than 24 hours). It SHOULD reject any article whose
Injection-Date header field is too far in the past (older than
the cutoff interval of a relaying agent that the injecting agent
is using, for example). It SHOULD similarly reject any article
whose Date header field is too far in the past, since not all
news servers support Injection-Date and only the injecting agent
<span class="grey">Allbery & Lindsey Standards Track [Page 16]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-17" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
can provide a useful error message to the posting agent. In
either case, this interval SHOULD NOT be any shorter than 72
hours into the past.
4. It SHOULD reject any proto-article whose Newsgroups header field
does not contain at least one <newsgroup-name> for a valid
group, or that contains a <newsgroup-name> reserved for specific
purposes by <a href="./rfc5536#section-3.1.4">Section 3.1.4 of [RFC5536]</a> unless that specific
purpose or local agreement applies to the proto-article being
processed. Crossposting to unknown newsgroups is not precluded
provided that at least one of the newsgroups in the Newsgroups
header is valid.
5. The Message-ID and Date header fields with appropriate contents
MUST be added when not present in the proto-article.
6. The injecting agent MUST NOT alter the body of the article in
any way (including any change of Content-Transfer-Encoding). It
MAY add other header fields not already provided by the poster,
but injecting agents are encouraged to use the Injection-Info
header for such information and to minimize the addition of
other headers. It SHOULD NOT alter, delete, or reorder any
existing header field except the Path header field. It MUST NOT
alter or delete any existing Message-ID header field.
7. If the Newsgroups header contains one or more moderated groups
and the proto-article does not contain an Approved header field,
the injecting agent MUST either forward it to a moderator as
specified in <a href="#section-3.5.1">Section 3.5.1</a> or, if that is not possible, reject
it. This forwarding MUST be done after adding the Message-ID
and Date headers if required, and before adding the Injection-
Info and Injection-Date headers.
8. Otherwise, a Path header field with a <tail-entry> MUST be added
if not already present.
9. The injecting agent MUST then update the Path header field as
described in <a href="#section-3.2.1">Section 3.2.1</a>.
10. An Injection-Info header field SHOULD be added that identifies
the source of the article and possibly other trace information
as described in <a href="./rfc5536#section-3.2.8">Section 3.2.8 of [RFC5536]</a>.
11. If the proto-article already had an Injection-Date header field,
it MUST NOT be modified or replaced. If the proto-article had
both a Message-ID header field and a Date header field, an
Injection-Date header field MUST NOT be added, since the proto-
article may have been multiply injected by a posting agent that
<span class="grey">Allbery & Lindsey Standards Track [Page 17]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-18" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
predates this standard. Otherwise, the injecting agent MUST add
an Injection-Date header field containing the current date and
time.
12. Finally, the injecting agent forwards the article to one or more
relaying agents, and the injection process is complete.
<span class="h4"><a class="selflink" id="section-3.5.1" href="#section-3.5.1">3.5.1</a>. Forwarding Messages to a Moderator</span>
An injecting agent MUST forward the proto-article to the moderator of
the leftmost moderated group listed in the Newsgroups header field,
customarily via email. There are two standard ways in which it may
do this:
1. The complete proto-article is encapsulated, header fields and
all, within the email. This SHOULD be done by creating an email
message with a Content-Type of application/news-transmission with
the usage parameter set to "moderate". The body SHOULD NOT
contain any content other than the message. This method has the
advantage of removing any possible conflict between Netnews and
email header fields and any changes to those fields during
transport through email.
2. The proto-article is sent as an email with the addition of any
header fields required for an email as defined in [<a href="./rfc5322" title=""Internet Message Format"">RFC5322</a>], and
possibly with the addition of other header fields conventional in
email, such as To and Received. The existing Message-ID header
field SHOULD be retained.
Although both of these methods have been used in the past and the
first has clear technical advantages, the second is in more common
use and many moderators are not prepared to deal with messages in the
first format. Accordingly, the first method SHOULD NOT be used
unless the moderator to which it is being forwarded is known to be
able to handle this method.
NOTE: Deriving the email address of the moderator of a group is
outside the scope of this document. It is worth mentioning,
however, that a common method is to use a forwarding service that
handles submissions for many moderated groups. For maximum
compatibility with existing news servers, such forwarding services
generally form the submission address for a moderated group by
replacing each "." in the <newsgroup-name> with "-" and then using
that value as the <local-part> of a <mailbox> formed by appending
a set domain.
<span class="grey">Allbery & Lindsey Standards Track [Page 18]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-19" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
Forwarding proto-articles to moderators via email is the most general
method and the most common in large Netnews networks such as Usenet,
but any means of forwarding the article that preserves it without
injecting it MAY be used. For example, if the injecting agent has
access to a database used by the moderator to store proto-articles
awaiting processing, it may place the proto-article directly into
that database. Such methods may be more appropriate for smaller
Netnews networks.
<span class="h3"><a class="selflink" id="section-3.6" href="#section-3.6">3.6</a>. Duties of a Relaying Agent</span>
A relaying agent accepts injected articles from injecting and other
relaying agents and passes them on to relaying or serving agents. To
avoid bypass of injecting agent policies and forgery of Path and
Injection-Info headers, relaying agents SHOULD accept articles only
from trusted agents.
An article SHOULD NOT be relayed unless the sending agent has been
configured to supply, and the receiving agent to receive, at least
one of the <newsgroup-name>s in its Newsgroups header field and at
least one of the <dist-name>s in its Distribution header field (if
present). Exceptionally, control messages creating or removing
newsgroups (newgroup or rmgroup control messages, for example) SHOULD
be relayed if the affected group appears in its Newsgroups header
field and both the sending and receiving relaying agents are
configured to relay a newsgroup of that name (whether or not such a
newsgroup exists).
In order to avoid unnecessary relaying attempts, an article SHOULD
NOT be relayed if the <path-identity> of the receiving agent (or some
known alias thereof) appears as a <path-identity> (excluding within
the <tail-entry> or following a "POSTED" <diag-keyword>) in its Path
header field.
A relaying agent processes an article as follows:
1. It MUST reject any article without a Newsgroups header field or
Message-ID header field, or without either an Injection-Date or
Date header field.
2. It MUST examine the Injection-Date header field or, if absent,
the Date header field, and reject the article if that date is
more than 24 hours into the future. It MAY reject articles with
dates in the future with a smaller margin than 24 hours.
<span class="grey">Allbery & Lindsey Standards Track [Page 19]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-20" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
3. It MUST reject any article that has already been accepted. If it
implements one of the mechanisms described in <a href="#section-3.3">Section 3.3</a>, this
means that it MUST reject any article whose date falls outside
the cutoff interval since it won't know whether or not such
articles had been accepted previously.
4. It SHOULD reject any article that does not include all the
mandatory header fields. It MAY reject any article that contains
header fields that do not have valid contents.
5. It SHOULD reject any article that matches an already-received
cancel control message or the contents of the Supersedes header
field of an accepted article, provided that the relaying agent
has chosen (on the basis of local site policy) to honor that
cancel control message or Supersedes header field.
6. It MAY reject any article without an Approved header field posted
to a newsgroup known to be moderated. This practice is strongly
encouraged, but the information necessary to do so is not
required to be maintained by a relaying agent.
7. It MUST update the Path header field as described in
<a href="#section-3.2.1">Section 3.2.1</a>.
8. It MAY delete any Xref header field already present. It MAY add
a new Xref header field for its own use (but recall that
[<a href="./rfc5536" title=""Netnews Article Format"">RFC5536</a>] permits at most one such header field).
9. Finally, it passes the article on to other relaying and serving
agents to which it is configured to send articles.
Relaying agents SHOULD, where possible in the underlying transport,
inform the agent that passed the article to the relaying agent if the
article was rejected. Relaying agents MUST NOT inform any other
external entity of the rejection of an article unless that external
entity has explicitly requested that it be informed of such errors.
Relaying agents MUST NOT alter, delete, or rearrange any part of an
article except for the Path and Xref header fields. They MUST NOT
modify the body of articles in any way. If an article is not
acceptable as is, the article MUST be rejected rather than modified.
<span class="grey">Allbery & Lindsey Standards Track [Page 20]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-21" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
<span class="h3"><a class="selflink" id="section-3.7" href="#section-3.7">3.7</a>. Duties of a Serving Agent</span>
A serving agent accepts articles from a relaying agent or injecting
agent, stores them, and makes them available to reading agents.
Articles are normally indexed by newsgroup and <article-locator>
(<a href="./rfc5536#section-3.2.14">Section 3.2.14 of [RFC5536]</a>), usually in the form of a decimal
number.
If the serving agent stores articles by newsgroup, control messages
SHOULD NOT be stored in the newsgroups listed in the control
message's Newsgroups header field. Instead, they SHOULD be stored in
a newsgroup in the hierarchy "control", which is reserved for this
purpose. Conventionally, control messages are stored in newsgroups
named for the type of control message (such as "control.cancel" for
cancel control messages).
A serving agent MUST have available a list (possibly empty) of
moderated groups for which it accepts articles so that it can reject
unapproved articles posted to moderated groups. Frequently, a
serving agent is deployed in combination with an injecting agent and
can use the same list as the injecting agent.
A serving agent processes articles as follows:
1. It MUST reject any article that does not include all the
mandatory header fields or any article that contains header
fields that do not have valid contents.
2. It MUST examine the Injection-Date header field or, if absent,
the Date header field, and reject the article if that date is
more than 24 hours into the future. It MAY reject articles with
dates in the future with a smaller margin than 24 hours.
3. It MUST reject any article that has already been accepted. If it
implements one of the mechanisms described in <a href="#section-3.3">Section 3.3</a>, this
means that it MUST reject any article whose date falls outside
the cutoff interval since it won't know whether or not such
articles had been accepted previously.
4. It SHOULD reject any article that matches an already-received and
honored cancel message or Supersedes header field, following the
same rules as a relaying agent (<a href="#section-3.6">Section 3.6</a>).
5. It MUST reject any article without an Approved header field
posted to any newsgroup listed as moderated.
6. It MUST update the Path header field as described in
<a href="#section-3.2.1">Section 3.2.1</a>.
<span class="grey">Allbery & Lindsey Standards Track [Page 21]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-22" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
7. It MUST remove any Xref header field from each article (except
when specially configured to preserve the <article-locator>s set
by the sending site). It then MAY (and usually will) add a new
Xref header field (but recall that [<a href="./rfc5536" title=""Netnews Article Format"">RFC5536</a>] permits at most one
such header field).
8. Finally, it stores the article and makes it available for reading
agents.
Serving agents MUST NOT create new newsgroups simply because an
unrecognized <newsgroup-name> occurs in a Newsgroups header field.
Newsgroups are normally created via control messages (<a href="#section-5.2.1">Section 5.2.1</a>).
Serving agents MUST NOT alter, delete, or rearrange any part of an
article except for the Path and Xref header fields. They MUST NOT
modify the body of the articles in any way. If an article is not
acceptable as is, the article MUST be rejected rather than modified.
<span class="h3"><a class="selflink" id="section-3.8" href="#section-3.8">3.8</a>. Duties of a Reading Agent</span>
Since a reading agent is only a passive participant in a Netnews
network, there are no specific protocol requirements placed on it.
See [<a href="#ref-USEAGE" title=""Usenet Best Practice"">USEAGE</a>] for best-practice recommendations.
<span class="h3"><a class="selflink" id="section-3.9" href="#section-3.9">3.9</a>. Duties of a Moderator</span>
A moderator receives news articles, customarily by email, decides
whether to approve them and, if so, either passes them to an
injecting agent or forwards them to further moderators.
Articles are normally received by the moderator in email, either
encapsulated as an object of Content-Type application/
news-transmission (or possibly encapsulated but without an explicit
Content-Type header field) or else directly as an email already
containing all the header fields appropriate for a Netnews article
(see <a href="#section-3.5.1">Section 3.5.1</a>). Moderators who may receive articles via email
SHOULD be prepared to accept articles in either format.
There are no protocol restrictions on what criteria are used for
accepting or rejecting messages or on what modifications a moderator
may make to a message (both header fields and body) before injecting
it. Recommended best practice, however, is to make the minimal
required changes. Moderators need to be aware that modifications
made to articles may invalidate signatures created by the poster or
previous moderators. See [<a href="#ref-USEAGE" title=""Usenet Best Practice"">USEAGE</a>] for further best-practice
recommendations.
<span class="grey">Allbery & Lindsey Standards Track [Page 22]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-23" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
Moderators process articles as follows:
1. They decide whether to approve or reject a proto-article and, if
approved, prepare the proto-article for injection. If the proto-
article was received as an unencapsulated email message, this
will require converting it back to a valid Netnews proto-article.
If the article is rejected, it is normally rejected for all
newsgroups to which it was posted and nothing further is done.
If it is approved, the moderator proceeds with the following
steps.
2. If the Newsgroups header field contains further moderated
newsgroups for which approval has not already been given, they
may either reach some agreement with the other moderators on the
disposition of the article or, more generally, add an indication
(identifying both the moderator and the name of the newsgroup)
that they approve the article and then forward it to the
moderator of the leftmost unapproved newsgroup. This forwarding
SHOULD be done following the procedure in <a href="#section-3.5.1">Section 3.5.1</a>. It MAY
be done by rotating the <newsgroup-name>s in the Newsgroups
header field so that the leftmost unapproved newsgroup is the
leftmost moderated newsgroup in that field and then posting it,
letting the injecting agent do the forwarding. However, when
using this mechanism, they MUST first ensure that the article
contains no Approved header field.
3. If the Newsgroups header field contains no further unapproved
moderated groups, they add an Approved header field (see <a href="./rfc5536#section-3.2.1">Section</a>
<a href="./rfc5536#section-3.2.1">3.2.1 of [RFC5536]</a>) identifying the moderator and, insofar as is
possible, all the other moderators who have approved the article.
The moderator who takes this step assumes responsibility for
ensuring that the article was approved by the moderators of all
moderated newsgroups to which it was posted.
4. Moderators are encouraged to retain the Message-ID header field
unless it is invalid or the article was significantly changed
from its original form. Moderators are also encouraged to retain
the Date header field unless it appears to be stale (72 hours or
more in the past) for reasons understood by the moderator (such
as delays in the moderation process), in which case they MAY
substitute the current date. Any Injection-Date, Injection-Info,
or Xref header fields already present MUST be removed.
5. Any Path header field MUST either be removed or truncated to only
those entries following its "POSTED" <diag-keyword>, if any.
6. The moderator then passes the article to an injecting agent,
having first observed all the duties of a posting agent.
<span class="grey">Allbery & Lindsey Standards Track [Page 23]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-24" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
<span class="h3"><a class="selflink" id="section-3.10" href="#section-3.10">3.10</a>. Duties of a Gateway</span>
A gateway transforms an article into the native message format of
another medium, or translates the messages of another medium into
news articles, or transforms articles into proto-articles for
injection into a separate Netnews network. Encapsulation of a news
article into a message of MIME type application/news-transmission, or
the subsequent undoing of that encapsulation, is not gatewaying since
it involves no transformation of the article.
There are two basic types of gateway, the outgoing gateway that
transforms a news article into a different type of message, and the
incoming gateway that transforms a message from another network into
a news proto-article and injects it into a Netnews network. These
are handled separately below.
Transformation of an article into another medium stands a very high
chance of discarding or interfering with the protection inherent in
the news system against duplicate articles. The most common problem
caused by gateways is loops that repeatedly reinject previously
posted articles. To prevent this, a gateway MUST take precautions
against loops, as detailed below.
The transformations applied to the message SHOULD be as minimal as
possible while still accomplishing the gatewaying. Every change made
by a gateway potentially breaks a property of one of the media or
loses information, and therefore only those transformations made
necessary by the differences between the media should be applied.
If bidirectional gatewaying (both an incoming and an outgoing
gateway) is being set up between Netnews and some other medium, the
incoming and outgoing gateways SHOULD be coordinated to avoid
unintended reinjection of gated articles. Circular gatewaying
(gatewaying a message into another medium and then back into Netnews)
SHOULD NOT be done; encapsulation of the article SHOULD be used
instead where this is necessary.
Safe bidirectional gatewaying between a mailing list and a newsgroup
is far easier if the newsgroup is moderated. Posts to the moderated
group and submissions to the mailing list can then go through a
single point that does the necessary gatewaying and then sends the
message out to both the newsgroup and the mailing list at the same
time, eliminating most of the possibility of loops. Bidirectional
gatewaying between a mailing list and an unmoderated newsgroup, in
contrast, is difficult to do correctly and is far more fragile.
Newsgroups intended to be bidirectionally gated to a mailing list
SHOULD therefore be moderated where possible, even if the moderator
<span class="grey">Allbery & Lindsey Standards Track [Page 24]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-25" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
is a simple gateway and injecting agent that correctly handles
crossposting to other moderated groups and otherwise passes all
traffic.
<span class="h4"><a class="selflink" id="section-3.10.1" href="#section-3.10.1">3.10.1</a>. Duties of an Outgoing Gateway</span>
From the perspective of Netnews, an outgoing gateway is just a
special type of reading agent. The exact nature of what the outgoing
gateway will need to do to articles depends on the medium to which
the articles are being gated. Because it raises the danger of loops
due to the possibility of one or more corresponding incoming gateways
back from that medium to Netnews, the operation of the outgoing
gateway is subject to additional constraints.
The following practices are encouraged for all outgoing gateways,
regardless of whether there is known to be a related incoming
gateway, both as precautionary measures and as guidelines to quality
of implementation:
1. The message identifier of the news article should be preserved if
at all possible, preferably as or within the corresponding unique
identifier of the other medium. However, if it is not preserved
in this way, then at least it should be preserved as a comment in
the message. This helps greatly with preventing loops.
2. The Date and Injection-Date of the news article should also be
preserved if possible, for similar reasons.
3. The message should be tagged in some way so as to prevent its
reinjection into Netnews. This may be impossible to do without
knowledge of potential incoming gateways, but it is better to try
to provide some indication even if not successful; at the least,
a human-readable indication that the article should not be gated
back to Netnews can help locate a human problem.
4. Netnews control messages should not be gated to another medium
unless they would somehow be meaningful in that medium.
<span class="h4"><a class="selflink" id="section-3.10.2" href="#section-3.10.2">3.10.2</a>. Duties of an Incoming Gateway</span>
The incoming gateway has the responsibility of ensuring that all of
the requirements of this protocol are met by the articles that it
forms. In addition to its special duties as a gateway, it bears all
of the duties and responsibilities of a posting agent, and it has the
same responsibility of a relaying agent to reject articles that it
has already gatewayed.
<span class="grey">Allbery & Lindsey Standards Track [Page 25]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-26" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
An incoming gateway MUST NOT gate the same message twice. It may not
be possible to ensure this in the face of mangling or modification of
the message, but at the very least a gateway, when given a copy of a
message that it has already gated and that is identical except for
trace header fields (like Received in Email or Path in Netnews), MUST
NOT gate the message again. An incoming gateway SHOULD take
precautions against having this rule bypassed by modifications of the
message that can be anticipated.
News articles prepared by gateways MUST be valid news proto-articles
(see <a href="#section-3.4.1">Section 3.4.1</a>). This often requires the gateway to synthesize a
conforming article from non-conforming input. The gateway MUST then
pass the article to an injecting agent, not directly to a relaying
agent.
Incoming gateways MUST NOT pass control messages (articles containing
a Control or Supersedes header field) without removing or renaming
that header field. Gateways MAY, however, generate cancel control
messages for messages they have gatewayed. If a gateway receives a
message that it can determine is a valid equivalent of a cancel
control message in the medium it is gatewaying, it SHOULD discard
that message without gatewaying it, generate a corresponding cancel
control message of its own, and inject that cancel control message.
NOTE: It is not unheard of for mail-to-news gateways to be used to
post control messages, but encapsulation should be used for these
cases instead. Gateways by their very nature are particularly
prone to loops. Spews of normal articles are bad enough; spews of
control messages with special significance to the news system,
possibly resulting in high processing load or even in emails being
sent for every message received, are catastrophic. It is far
preferable to construct a system specifically for posting control
messages that can do appropriate consistency checks and
authentication of the originator of the message.
If there is a message identifier that fills a role similar to that of
the Message-ID header field in news, it SHOULD be used in the
formation of the message identifier of the news article, perhaps with
transformations required to meet the uniqueness requirement of
Netnews and with the removal of any comments so as to comply with the
syntax in <a href="./rfc5536#section-3.1.3">Section 3.1.3 of [RFC5536]</a>. Such transformations SHOULD be
designed so that two messages with the same identifier generate the
same Message-ID header field.
NOTE: Message identifiers play a central role in the prevention of
duplicates, and their correct use by gateways will do much to
prevent loops. Netnews does, however, require that message
identifiers be unique, and therefore message identifiers from
<span class="grey">Allbery & Lindsey Standards Track [Page 26]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-27" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
other media may not be suitable for use without modification. A
balance must be struck by the gateway between preserving
information used to prevent loops and generating unique message
identifiers.
Exceptionally, if there are multiple incoming gateways for a
particular set of messages, each to a different newsgroup(s), each
one SHOULD generate a message identifier unique to that gateway.
Each incoming gateway nonetheless MUST ensure that it does not gate
the same message twice.
NOTE: Consider the example of two gateways of a given mailing list
into two separate Usenet newsgroups, both of which preserve the
email message identifier. Each newsgroup may then receive a
portion of the messages (different sites seeing different
portions). In these cases, where there is no one "official"
gateway, some other method of generating message identifiers has
to be used to avoid collisions. It would obviously be preferable
for there to be only one gateway that crossposts, but this may not
be possible to coordinate.
If no date information is available, the gateway MAY supply a Date
header field with the gateway's current date. If only partial
information is available (such as date but not time), this SHOULD be
fleshed out to a full Date by adding default values rather than by
discarding this information. Only in very exceptional circumstances
should Date information be discarded, as it plays an important role
in preventing reinjection of old messages.
An incoming gateway MUST add a Sender header field to the news
article it forms by containing the <mailbox> of the administrator of
the gateway. Problems with the gateway may be reported to this
<mailbox>. The <display-name> portion of this <mailbox> SHOULD
indicate that the entity responsible for injection of the message is
a gateway. If the original message already had a Sender header
field, it SHOULD be renamed to Original-Sender so that its contents
can be preserved. See <a href="#section-3.10.3">Section 3.10.3</a> for the specification of that
header field.
<span class="h4"><a class="selflink" id="section-3.10.3" href="#section-3.10.3">3.10.3</a>. Original-Sender Header Field</span>
The Original-Sender header field holds the content of a Sender header
field in an original message received by an incoming gateway,
preserving it while the incoming gateway adds its own Sender header
field. The content syntax makes use of syntax defined in [<a href="./rfc5536" title=""Netnews Article Format"">RFC5536</a>]
and [<a href="./rfc5322" title=""Internet Message Format"">RFC5322</a>].
<span class="grey">Allbery & Lindsey Standards Track [Page 27]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-28" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
header =/ Original-Sender-header
Original-Sender-header
= "Original-Sender" ":" SP
Original-Sender-content
Original-Sender-content
= mailbox
The Permanent Message Header Field Repository entry for this header
field is:
Header field name: Original-Sender
Applicable protocol: Netnews
Status: standard
Author/Change controller: IETF
Specification document(s): <a href="./rfc5537">RFC 5537</a>
<span class="h4"><a class="selflink" id="section-3.10.4" href="#section-3.10.4">3.10.4</a>. Gateway Example</span>
To illustrate the type of precautions that should be taken against
loops, here is an example of the measures taken by one particular
combination of mail-to-news and news-to-mail gateways designed to
handle bidirectional gatewaying between mailing lists and unmoderated
groups:
1. The news-to-mail gateway preserves the message identifier of the
news article in the generated email message. The mail-to-news
gateway likewise preserves the email message identifier, provided
that it is syntactically valid for Netnews. This allows the news
system's built-in suppression of duplicates to serve as the first
line of defense against loops.
2. The news-to-mail gateway adds an X-* header field to all messages
it generates. The mail-to-news gateway discards any incoming
messages containing this header field. This is robust against
mailing list managers that replace the message identifier and
against any number of email hops, provided that the other message
header fields are preserved.
3. The mail-to-news gateway prepends the host name from which it
received the email message to the content of the Path header
field. The news-to-mail gateway refuses to gateway any message
that contains the list server name in its Path header field
(including in the tail section). This is robust against any
amount of munging of the message header fields by the mailing
list, provided that the email only goes through one hop.
<span class="grey">Allbery & Lindsey Standards Track [Page 28]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-29" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
4. The mail-to-news gateway is designed never to generate bounces to
the envelope sender. Instead, articles that are rejected by the
news server (for reasons not warranting silent discarding of the
message) result in a bounce message sent to an errors address
that is known not to forward to any mailing lists. In this way,
they can be handled by the news administrators.
These precautions have proven effective in practice at preventing
loops for this particular application (bidirectional gatewaying
between mailing lists and locally distributed newsgroups where both
gateways can be designed together). General gatewaying to world-wide
newsgroups poses additional difficulties; one must be very wary of
strange configurations, such as a newsgroup gated to a mailing list
that is in turn gated to a different newsgroup.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Media Types</span>
This document defines several media types, which have been registered
with IANA as provided for in [<a href="./rfc4288" title=""Media Type Specifications and Registration Procedures"">RFC4288</a>].
The media type message/news, as previously registered with IANA, is
hereby declared obsolete. The intent of this media type was to
define a standard way of transmitting news articles via mail for
human reading. However, it was never widely implemented, and its
default treatment as application/octet-stream by agents that did not
recognize it was counter-productive. The media type message/rfc822
(defined in <a href="./rfc2046#section-5.2.1">Section 5.2.1 of [RFC2046]</a>) SHOULD be used in its place.
The updated MIME media type definition of message/news is:
MIME type name: message
MIME subtype name: news
Required parameters: none
Optional parameters: none
Encoding considerations: same as message/rfc822
Security considerations: News articles may constitute "control
messages", which can have effects on a
host's news system beyond just addition
of information. Since control messages
may occur in normal news flow, most hosts
are suitably defended against undesired
effects already, but transmission of news
articles via mail may bypass
<span class="grey">Allbery & Lindsey Standards Track [Page 29]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-30" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
firewall-type defenses. Reading a news
article transmitted by mail involves no
hazards beyond those of mail, but
submitting it to news software for
processing should be done with care.
Interoperability considerations:
Rarely used, and therefore often
handled as application/octet-stream.
Disposition should by default be inline.
Published specification: <a href="./rfc5537">RFC 5537</a>
Applications that use this media type:
Some old mail and news user agents.
Intended usage: OBSOLETE
Author: Henry Spencer
Change controller: IETF
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. application/news-transmission</span>
The media type application/news-transmission is intended for the
encapsulation of complete news articles where the intention is that
the recipient should then inject them into Netnews. This application
type provides one of the methods for mailing articles to moderators
(see <a href="#section-3.5.1">Section 3.5.1</a>) and may be used to convey messages to an
injecting agent. This encapsulation removes the need to transform an
email message into a Netnews proto-article and provides a way to send
a Netnews article using MIME through a transport medium that does not
support 8bit data.
The MIME media type definition of application/news-transmission is:
MIME type name: application
MIME subtype name: news-transmission
Required parameters: none
Optional parameters: One and only one of "usage=moderate",
"usage=inject", or "usage=relay".
<span class="grey">Allbery & Lindsey Standards Track [Page 30]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-31" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
Encoding considerations: A transfer-encoding different from that
of the article transmitted MAY be
supplied to ensure correct transmission
over some 7bit transport medium.
Security considerations: News articles may constitute "control
messages", which can have effects on a
host's news system beyond just addition
of information. Since control messages
may occur in normal news flow, most hosts
are suitably defended against undesired
effects already, but transmission of news
articles via mail may bypass
firewall-type defenses.
Published specification: <a href="./rfc5537">RFC 5537</a>
Body part: A complete proto-article ready for
injection into Netnews or an article
being relayed to another agent.
Applications that use this media type:
Injecting agents, Netnews moderators.
Intended usage: COMMON
Change controller: IETF
usage=moderate indicates the article is intended for a moderator,
usage=inject for an injecting agent, and usage=relay for a relaying
agent. The entity receiving the article may only implement one type
of agent, in which case the parameter MAY be omitted.
Contrary to the prior registration of this media type, article
batches are not permitted as a body part. Multiple messages or a
message with multiple application/news-transmission parts may be used
instead.
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. application/news-groupinfo</span>
The application/news-groupinfo media type is used in conjunction with
the newgroup control message (see <a href="#section-5.2.1">Section 5.2.1</a>). Its body part
contains brief information about a newsgroup: the newsgroup name, its
description, and its moderation status.
The MIME media type definition of application/news-groupinfo is:
<span class="grey">Allbery & Lindsey Standards Track [Page 31]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-32" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
MIME type name: application
MIME subtype name: news-groupinfo
Required parameters: none
Optional parameters: charset, which MUST be a charset
registered for use with MIME text types.
It has the same syntax as the parameter
defined for text/plain [<a href="./rfc2046" title=""Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types"">RFC2046</a>].
Specifies the charset of the body part.
If not given, the charset defaults to
US-ASCII [<a href="#ref-ASCII" title=""Coded Character Sets - 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII)"">ASCII</a>].
Encoding considerations: 7bit or 8bit encoding MUST be used to
maintain compatibility.
Security considerations: None.
Interoperability considerations:
Disposition should by default be inline.
Applications that use this media type:
Control message issuers, relaying
agents, serving agents.
Published specification: <a href="./rfc5537">RFC 5537</a>
Intended usage: COMMON
Change controller: IETF
The content of the application/news-groupinfo body part is defined
as:
groupinfo-body = [ newsgroups-tag CRLF ]
newsgroups-line CRLF
newsgroups-tag = %x46.6F.72 SP %x79.6F.75.72 SP
%x6E.65.77.73.67.72.6F.75.70.73 SP
%x66.69.6C.65.3A
; case sensitive
; "For your newsgroups file:"
newsgroups-line = newsgroup-name
[ 1*HTAB newsgroup-description ]
[ *WSP moderation-flag ]
newsgroup-description
= eightbit-utext *( *WSP eightbit-utext )
moderation-flag = SP "(" %x4D.6F.64.65.72.61.74.65.64 ")"
<span class="grey">Allbery & Lindsey Standards Track [Page 32]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-33" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
; SPACE + case sensitive "(Moderated)"
eightbit-utext = VCHAR / %d127-255
This unusual format is backward-compatible with the scanning of the
body of newgroup control messages for descriptions done by Netnews
implementations that predate this specification. Although optional,
the <newsgroups-tag> SHOULD be included for backward compatibility.
The <newsgroup-description> MUST NOT contain any occurrence of the
string "(Moderated)" within it. Moderated newsgroups MUST be marked
by appending the case-sensitive text " (Moderated)" at the end.
While a charset parameter is defined for this media type, most
existing software does not understand MIME header fields or correctly
handle descriptions in a variety of charsets. Using a charset of US-
ASCII where possible is therefore RECOMMENDED; if not possible, UTF-8
[<a href="./rfc3629" title=""UTF-8, a transformation format of ISO 10646"">RFC3629</a>] SHOULD be used. Regardless of the charset used, the
constraints of the above grammar MUST be met and the <newsgroup-name>
MUST be represented in that charset using the same octets as would be
used with a charset of US-ASCII.
<span class="h3"><a class="selflink" id="section-4.3" href="#section-4.3">4.3</a>. application/news-checkgroups</span>
The application/news-checkgroups media type contains a list of
newsgroups within a hierarchy or hierarchies, including their
descriptions and moderation status. It is primarily for use with the
checkgroups control message (see <a href="#section-5.2.3">Section 5.2.3</a>).
The MIME media type definition of application/news-checkgroups is:
MIME type name: application
MIME subtype name: news-checkgroups
Required parameters: none
Optional parameters: charset, which MUST be a charset
registered for use with MIME text types.
It has the same syntax as the parameter
defined for text/plain [<a href="./rfc2046" title=""Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types"">RFC2046</a>].
Specifies the charset of the body part.
If not given, the charset defaults to
US-ASCII [<a href="#ref-ASCII" title=""Coded Character Sets - 7-Bit American National Standard Code for Information Interchange (7-Bit ASCII)"">ASCII</a>].
Encoding considerations: 7bit or 8bit encoding MUST be used to
maintain compatibility.
<span class="grey">Allbery & Lindsey Standards Track [Page 33]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-34" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
Security considerations: This media type provides only a means
for conveying a list of newsgroups and
does not provide any information
indicating whether the sender is
authorized to state which newsgroups
should exist within a hierarchy. Such
authorization must be accomplished by
other means.
Interoperability considerations:
Disposition should by default be inline.
Applications that use this media type:
Control message issuers, relaying
agents, serving agents.
Published specification: <a href="./rfc5537">RFC 5537</a>
Intended usage: COMMON
Change controller: IETF
The content of the application/news-checkgroups body part is defined
as:
checkgroups-body = *( valid-group CRLF )
valid-group = newsgroups-line ; see <a href="#section-4.2">Section 4.2</a>
The same restrictions on charset, <newsgroup-name>, and <newsgroup-
description> apply for this media type as for application/
news-groupinfo.
One application/news-checkgroups message may contain information for
one or more hierarchies and is considered complete for any hierarchy
for which it contains a <valid-group> unless accompanied by external
information limiting its scope (such as a <chkscope> parameter to a
checkgroups control message, as described in <a href="#section-5.2.3">Section 5.2.3</a>). In
other words, an application/news-checkgroups body part consisting of
example.moderated A moderated newsgroup (Moderated)
example.test An unmoderated test group
is a statement that the example.* hierarchy contains two newsgroups,
example.moderated and example.test, and no others. This media type
therefore MUST NOT be used for conveying partial information about a
hierarchy; if a group from a given hierarchy is present, all groups
<span class="grey">Allbery & Lindsey Standards Track [Page 34]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-35" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
that exist in that hierarchy MUST be listed unless its scope is
limited by external information, in which case all groups SHOULD be
listed.
Spaces are used in this example for formatting reasons. In an actual
message, the newsgroup name and description MUST be separated by one
or more tabs (HTAB, ASCII %d09), not spaces.
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Control Messages</span>
A control message is an article that contains a Control header field
and thereby indicates that some action should be taken by an agent
other than distribution and display. Any article containing a
Control header field (defined in <a href="./rfc5536#section-3.2.3">Section 3.2.3 of [RFC5536]</a>) is a
control message. Additionally, the action of an article containing a
Supersedes header field is described here; while such an article is
not a control message, it specifies an action similar to the cancel
control message.
The <control-command> of a Control header field comprises a <verb>,
which indicates the action to be taken, and one or more <argument>
values, which supply the details. For some control messages, the
body of the article is also significant. Each recognized <verb> (the
control message type) is described in a separate section below.
Agents MAY accept other control message types than those specified
below, and MUST either ignore or reject control messages with
unrecognized types. Syntactic definitions of valid <argument> values
and restrictions on control message bodies are given in the section
for each control message type.
Contrary to [<a href="./rfc1036" title=""Standard for interchange of USENET messages"">RFC1036</a>], the presence of a Subject header field
starting with the string "cmsg " MUST NOT cause an article to be
interpreted as a control message. Agents MAY reject an article that
has such a Subject header field and no Control header field as
ambiguous. Likewise, the presence of a <newsgroup-name> ending in
".ctl" in the Newsgroups header field or the presence of an Also-
Control header field MUST NOT cause the article to be interpreted as
a control message.
<span class="h3"><a class="selflink" id="section-5.1" href="#section-5.1">5.1</a>. Authentication and Authorization</span>
Control messages specify actions above and beyond the normal
processing of an article and are therefore potential vectors of abuse
and unauthorized action. There is, at present, no standardized means
of authenticating the sender of a control message or verifying that
the contents of a control message were sent by the claimed sender.
There are, however, some unstandardized authentication mechanisms in
common use, such as [<a href="#ref-PGPVERIFY" title=""Signing Control Messages"">PGPVERIFY</a>].
<span class="grey">Allbery & Lindsey Standards Track [Page 35]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-36" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
Agents acting on control messages SHOULD take steps to authenticate
control messages before acting on them, as determined by local
authorization policy. Whether this is done via the use of an
unstandardized authentication protocol, by comparison with
information obtained through another protocol, by human review, or by
some other means is left unspecified by this document. Further
extensions or revisions of this protocol are expected to standardize
a digital signature mechanism.
Agents are expected to have their own local authorization policies
for which control messages will be honored. No Netnews agent is ever
required to act on any control message. The following descriptions
specify the actions that a control message requests, but an agent MAY
always decline to act on any given control message.
<span class="h3"><a class="selflink" id="section-5.2" href="#section-5.2">5.2</a>. Group Control Messages</span>
A group control message is any control message type that requests
some update to the list of newsgroups known to a news server. The
standard group control message types are "newgroup", "rmgroup", and
"checkgroups".
Before honoring any group control message, an agent MUST check the
newsgroup or newsgroups affected by that control message and decline
to create any newsgroups not in conformance with the restrictions in
<a href="./rfc5536#section-3.1.4">Section 3.1.4 of [RFC5536]</a>.
All of the group control messages MUST have an Approved header field
(<a href="./rfc5536#section-3.2.1">Section 3.2.1 of [RFC5536]</a>). Group control messages without an
Approved header field SHOULD NOT be honored.
Group control messages affecting specific groups (newgroup and
rmgroup control messages, for example) SHOULD include the <newsgroup-
name> for the group or groups affected in their Newsgroups header
field. Other newsgroups MAY be included in the Newsgroups header
field so that the control message will reach more news servers, but
due to the special relaying rules for group control messages (see
<a href="#section-3.6">Section 3.6</a>) this is normally unnecessary and may be excessive.
<span class="h4"><a class="selflink" id="section-5.2.1" href="#section-5.2.1">5.2.1</a>. The newgroup Control Message</span>
The newgroup control message requests that the specified group be
created or, if already existing, that its moderation status or
description be changed. The syntax of its Control header field is:
control-command =/ Newgroup-command
Newgroup-command = "newgroup" Newgroup-arguments
Newgroup-arguments = 1*WSP newsgroup-name
<span class="grey">Allbery & Lindsey Standards Track [Page 36]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-37" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
[ 1*WSP newgroup-flag ]
newgroup-flag = "moderated"
If the request is honored, the moderation status of the group SHOULD
be set in accordance with the presence or absence of the <newgroup-
flag> "moderated". "moderated" is the only flag defined by this
protocol. Other flags MAY be defined by extensions to this protocol
and accepted by agents. If an agent does not recognize the
<newgroup-flag> of a newgroup control message, it SHOULD ignore that
control message.
The body of a newgroup message SHOULD contain an entity of type
application/news-groupinfo specifying the description of the
newsgroup, either as the entire body or as an entity within a
multipart/mixed object [<a href="./rfc2046" title=""Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types"">RFC2046</a>]. If such an entity is present, the
moderation status specified therein MUST match the moderation status
specified by the <newgroup-flag>. The body of a newgroup message MAY
contain other entities (encapsulated in multipart/mixed) that provide
additional information about the newsgroup or the circumstances of
the control message.
In the absence of an application/news-groupinfo entity, a news server
MAY search the body of the message for the line "For your newsgroups
file:" and take the following line as a <newsgroups-line>. Prior to
the standardization of application/news-groupinfo, this was the
convention for providing a newsgroup description.
If the request is honored and contains a newsgroup description, and
if the news server honoring it stores newsgroup descriptions, the
stored newsgroup description SHOULD be updated to the description
specified in the control message, even if no other property of the
group has changed.
<span class="h5"><a class="selflink" id="section-5.2.1.1" href="#section-5.2.1.1">5.2.1.1</a>. newgroup Control Message Example</span>
A newgroup control message requesting creation of the moderated
newsgroup example.admin.info.
From: "example.* Administrator" <admin@noc.example>
Newsgroups: example.admin.info
Date: 27 Feb 2002 12:50:22 +0200
Subject: cmsg newgroup example.admin.info moderated
Approved: admin@noc.example
Control: newgroup example.admin.info moderated
Message-ID: <ng-example.admin.info-20020227@noc.example>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="nxtprt"
Content-Transfer-Encoding: 8bit
<span class="grey">Allbery & Lindsey Standards Track [Page 37]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-38" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
This is a MIME control message.
--nxtprt
Content-Type: application/news-groupinfo; charset=us-ascii
For your newsgroups file:
example.admin.info About the example.* groups (Moderated)
--nxtprt
Content-Type: text/plain; charset=us-ascii
A moderated newsgroup for announcements about new newsgroups in
the example.* hierarchy.
--nxtprt--
Spaces are used in this example for formatting reasons. In an actual
message, the newsgroup name and description MUST be separated by one
or more tabs (HTAB, ASCII %d09), not spaces.
<span class="h4"><a class="selflink" id="section-5.2.2" href="#section-5.2.2">5.2.2</a>. The rmgroup Control Message</span>
The rmgroup control message requests that the specified group be
removed from a news server's list of valid groups. The syntax of its
Control header field is:
control-command =/ Rmgroup-command
Rmgroup-command = "rmgroup" Rmgroup-arguments
Rmgroup-arguments = 1*WSP newsgroup-name
The body of the control message MAY contain anything, usually an
explanatory text.
<span class="h4"><a class="selflink" id="section-5.2.3" href="#section-5.2.3">5.2.3</a>. The checkgroups Control Message</span>
The checkgroups control message contains a list of all the valid
groups in a hierarchy with descriptions and moderation status. It
requests that a news server update its valid newsgroup list for that
hierarchy to include the groups specified, remove any groups not
specified, and update group descriptions and moderation status to
match those given in the checkgroups control message. The syntax of
its Control header field is:
control-command =/ Checkgroup-command
Checkgroup-command = "checkgroups" Checkgroup-arguments
Checkgroup-arguments= [ chkscope ] [ chksernr ]
chkscope = 1*( 1*WSP ["!"] newsgroup-name )
chksernr = 1*WSP "#" 1*DIGIT
<span class="grey">Allbery & Lindsey Standards Track [Page 38]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-39" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
A checkgroups message is interpreted as an exhaustive list of the
valid groups in all hierarchies or sub-hierarchies with a prefix
listed in the <chkscope> argument, excluding any sub-hierarchy where
the <chkscope> argument is prefixed by "!". For complex cases with
multiple <chkscope> arguments, start from an empty list of groups,
include all groups in the checkgroups control message matching
<chkscope> arguments without a "!" prefix, and then exclude all
groups matching <chkscope> arguments with a "!" prefix. Follow this
method regardless of the order of the <chkscope> arguments in the
Control header field.
If no <chkscope> argument is given, it applies to all hierarchies for
which group statements appear in the body of the message.
Since much existing software does not honor the <chkscope> argument,
the body of the checkgroups control message MUST NOT contain group
statements for newsgroups outside the intended scope and SHOULD
contain a correct newsgroup list even for sub-hierarchies excluded
with "!" <chkscope> terms. News servers, however, MUST honor
<chkscope> as specified here.
The <chksernr> argument may be any positive integer. If present, it
MUST increase with every change to the newsgroup list, MUST NOT ever
decrease, and MUST be included in all subsequent checkgroups control
messages with the same scope. If provided, news servers SHOULD
remember the <chksernr> value of the previous checkgroups control
message honored for a particular hierarchy or sub-hierarchy and
decline to honor any subsequent checkgroups control message for the
same hierarchy or sub-hierarchy with a smaller <chksernr> value or
with no <chksernr> value.
There is no upper limit on the length of <chksernr>, other than the
limitation on the length of header fields. Implementations may
therefore want to do comparisons by zero-padding the shorter of two
<chksernr> values on the left and then doing a string comparison,
rather than assuming <chksernr> can be manipulated as a number.
For example, the following Control header field
Control: checkgroups de !de.alt #2009021301
indicates that the body of the message will list every newsgroup in
the de.* hierarchy, excepting the de.alt.* sub-hierarchy, and should
not be honored if a checkgroups control message with a serial number
greater than 2009021301 was previously honored. The serial number in
this example was formed from the date in YYYYMMDD format, followed by
a two-digit sequence number within that date.
<span class="grey">Allbery & Lindsey Standards Track [Page 39]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-40" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
The body of the message is an entity of type application/
news-checkgroups. It SHOULD be declared as such with appropriate
MIME headers, but news servers SHOULD interpret checkgroups messages
that lack the appropriate MIME headers as if the body were of type
application/news-checkgroups for backward compatibility.
<span class="h3"><a class="selflink" id="section-5.3" href="#section-5.3">5.3</a>. The cancel Control Message</span>
The cancel control message requests that a target article be
withdrawn from circulation and access. The syntax of its Control
header field is:
control-command =/ Cancel-command
Cancel-command = "cancel" Cancel-arguments
Cancel-arguments = 1*WSP msg-id
The argument identifies the article to be cancelled by its message
identifier. The body of the control message MAY contain anything,
usually an explanatory text.
A serving agent that elects to honor a cancel message SHOULD make the
article unavailable to reading agents (perhaps by deleting it
completely). If the cancel control message arrives before the
article it targets, news servers choosing to honor it SHOULD remember
the message identifier that was cancelled and reject the cancelled
article when it arrives.
To best ensure that it will be relayed to the same news servers as
the original message, a cancel control message SHOULD have the same
Newsgroups header field as the message it is cancelling.
Cancel control messages listing moderated newsgroups in their
Newsgroups header field MUST contain an Approved header field like
any other article in a moderated newsgroup. This means that cancels
posted to a moderated newsgroup will normally be sent to the
moderator first for approval. Outside of moderated newsgroups,
cancel messages are not required to contain an Approved header field.
Contrary to [<a href="./rfc1036" title=""Standard for interchange of USENET messages"">RFC1036</a>], cancel control messages are not required to
contain From and Sender header fields matching the target message.
This requirement only encouraged cancel issuers to conceal their
identity and provided no security.
<span class="h3"><a class="selflink" id="section-5.4" href="#section-5.4">5.4</a>. The Supersedes Header Field</span>
The presence of a Supersedes header field in an article requests that
the message identifier given in that header field be withdrawn in
exactly the same manner as if it were the target of a cancel control
<span class="grey">Allbery & Lindsey Standards Track [Page 40]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-41" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
message. Accordingly, news servers SHOULD apply to a Supersedes
header field the same authentication and authorization checks as they
would apply to cancel control messages. If the Supersedes header
field is honored, the news server SHOULD take the same actions as it
would take when honoring a cancel control message for the given
target article.
The article containing the Supersedes header field, whether or not
the Supersedes header field is honored, SHOULD be handled as a normal
article and SHOULD NOT receive the special treatment of control
messages described in <a href="#section-3.7">Section 3.7</a>.
<span class="h3"><a class="selflink" id="section-5.5" href="#section-5.5">5.5</a>. The ihave and sendme Control Messages</span>
The ihave and sendme control messages implement a predecessor of the
NNTP [<a href="./rfc3977" title=""Network News Transfer Protocol (NNTP)"">RFC3977</a>] protocol. They are largely obsolete on the Internet
but still see use in conjunction with some transport protocols such
as UUCP [<a href="#ref-UUCP" title=""Managing UUCP and Usenet"">UUCP</a>]. News servers are not required to support them.
ihave and sendme control messages share similar syntax for their
Control header fields and bodies:
control-command =/ Ihave-command
Ihave-command = "ihave" Ihave-arguments
Ihave-arguments = 1*WSP *( msg-id 1*WSP ) relayer-name
control-command =/ Sendme-command
Sendme-command = "sendme" Sendme-arguments
Sendme-arguments = Ihave-arguments
relayer-name = path-identity ; see 3.1.5 of [<a href="./rfc5536" title=""Netnews Article Format"">RFC5536</a>]
ihave-body = *( msg-id CRLF )
sendme-body = ihave-body
The body of the article consists of a list of <msg-id>s, one per
line. The message identifiers SHOULD be put in the body of the
article, not in the Control header field, but news servers MAY
recognize and process message identifiers in the Control header field
for backward compatibility. Message identifiers MUST NOT be put in
the Control header field if they are present in the body of the
control message.
The ihave message states that the named relaying agent has received
articles with the specified message identifiers, which may be of
interest to the relaying agents receiving the ihave message. The
sendme message requests that the agent receiving it send the articles
having the specified message identifiers to the named relaying agent.
Contrary to [<a href="./rfc1036" title=""Standard for interchange of USENET messages"">RFC1036</a>], the relayer-name MUST be given as the last
argument in the Control header field.
<span class="grey">Allbery & Lindsey Standards Track [Page 41]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-42" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
Upon receipt of the sendme message (and a decision to honor it), the
receiving agent sends the article or articles requested. The
mechanism for this transmission is unspecified by this document and
is arranged between the sites involved.
These control messages are normally sent as point-to-point articles
between two sites and not then sent on to other sites. Newsgroups
beginning with "to." are reserved for such point-to-point
communications and are formed by prepending "to." to a <relayer-name>
to form a <newsgroup-name>. Articles with such a group in their
Newsgroups header fields SHOULD NOT be sent to any news server other
than the one identified by <relayer-name>.
<span class="h3"><a class="selflink" id="section-5.6" href="#section-5.6">5.6</a>. Obsolete Control Messages</span>
The following control message types are declared obsolete by this
document and SHOULD NOT be sent or honored:
sendsys
version
whogets
senduuname
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Security Considerations</span>
Netnews is designed for broad dissemination of public messages and
offers little in the way of security. What protection Netnews has
against abuse and impersonation is provided primarily by the
underlying transport layer. In large Netnews networks where news
servers cannot be relied upon to enforce authentication and
authorization requirements at the transport layer, articles may be
trivially forged and widely read, and the identities of article
senders and the privacy of articles cannot be assured.
See <a href="./rfc5536#section-5">Section 5 of [RFC5536]</a> for further security considerations
related to the format of articles.
<span class="h3"><a class="selflink" id="section-6.1" href="#section-6.1">6.1</a>. Compromise of System Integrity</span>
Control messages pose a particular security concern since acting on
unauthorized control messages may cause newsgroups to be removed,
articles to be deleted, and unwanted newsgroups to be created.
Administrators of news servers SHOULD therefore take steps to verify
the authenticity of control messages as discussed in <a href="#section-5.1">Section 5.1</a>.
Articles containing Supersedes header fields are effectively cancel
control messages and SHOULD be subject to the same checks as
<span class="grey">Allbery & Lindsey Standards Track [Page 42]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-43" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
discussed in <a href="#section-5.4">Section 5.4</a>. Currently, many sites are ignoring all
cancel control messages and Supersedes header fields due to the
difficulty of authenticating them and their widespread abuse.
Cancel control messages are not required to have the same Newsgroups
header field as the messages they are cancelling. Since they are
sometimes processed before the original message is received, it may
not be possible to check that the Newsgroup header fields match.
This allows a malicious poster to inject a cancel control message for
an article in a moderated newsgroup without adding an Approved header
field to the control message, and to hide malicious cancel control
messages from some reading agents by using a different Newsgroups
header field so that the cancel control message is not accepted by
all news servers that accepted the original message.
All agents should be aware that all article content, most notably
including the content of the Control header field, is potentially
untrustworthy and malicious. Articles may be constructed in
syntactically invalid ways to attempt to overflow internal buffers,
violate hidden assumptions, or exploit implementation weaknesses.
For example, some news server implementations have been successfully
attacked via inclusion of Unix shell code in the Control header
field. All article contents, and particularly control message
contents, SHOULD be handled with care and rigorously verified before
any action is taken on the basis of the contents of the article.
A malicious poster may add an Approved header field to bypass the
moderation process of a moderated newsgroup. Injecting agents SHOULD
verify that messages approved for a moderated newsgroup are being
injected by the moderator using authentication information from the
underlying transport or some other authentication mechanism arranged
with the moderator. There is, at present, no standardized method of
authenticating approval of messages to moderated groups, although
some unstandardized authentication methods such as [<a href="#ref-PGPMOOSE" title=""PGP Moose"">PGPMOOSE</a>] are in
common use.
A malicious news server participating in a Netnews network may bypass
checks performed by injecting agents, forge Path header fields and
other trace information (such as Injection-Info header fields), and
otherwise compromise the authorization requirements of a Netnews
network. News servers SHOULD use the facilities of the underlying
transport to authenticate their peers and reject articles from
injecting and relaying agents that do not follow the requirements of
this protocol or the Netnews network.
<span class="grey">Allbery & Lindsey Standards Track [Page 43]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-44" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
<span class="h3"><a class="selflink" id="section-6.2" href="#section-6.2">6.2</a>. Denial of Service</span>
The proper functioning of individual newsgroups can be disrupted by
the excessive posting of unwanted articles; by the repeated posting
of identical or near identical articles; by posting followups that
either are unrelated to their precursors or that quote their
precursors in full with the addition of minimal extra material
(especially if this process is iterated); by crossposting to, or
requesting followups to, totally unrelated newsgroups; and by abusing
control messages and the Supersedes header field to delete articles
or newsgroups.
Such articles intended to deny service, or other articles of an
inflammatory nature, may also have their From or Reply-To addresses
set to valid but incorrect email addresses, thus causing large
volumes of email to descend on the true owners of those addresses.
Users and agents should always be aware that identifying information
in articles may be forged.
A malicious poster may prevent an article from being seen at a
particular site by including in the Path header field of the proto-
article the <path-identity> of that site. Use of the <diag-keyword>
"POSTED" by injecting agents to mark the point of injection can
prevent this attack.
Primary responsibility for preventing such attacks lies with
injecting agents, which can apply authentication and authorization
checks via the underlying transport and prevent those attempting
denial-of-service attacks from posting messages. If specific
injecting agents fail to live up to their responsibilities, they may
be excluded from the Netnews network by configuring relaying agents
to reject articles originating from them.
A malicious complainer may submit a modified copy of an article (with
an altered Injection-Info header field, for instance) to the
administrator of an injecting agent in an attempt to discredit the
author of that article and even to have his posting privileges
removed. Administrators SHOULD therefore obtain a genuine copy of
the article from their own serving agent before taking action in
response to such a complaint.
<span class="h3"><a class="selflink" id="section-6.3" href="#section-6.3">6.3</a>. Leakage</span>
Articles that are intended to have restricted distribution are
dependent on the goodwill of every site receiving them. Restrictions
on dissemination and retention of articles may be requested via the
Archive and Distribution header fields, but such requests cannot be
enforced by the protocol.
<span class="grey">Allbery & Lindsey Standards Track [Page 44]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-45" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
The flooding algorithm used by Netnews transports such as NNTP
[<a href="./rfc3977" title=""Network News Transfer Protocol (NNTP)"">RFC3977</a>] is extremely good at finding any path by which articles can
leave a subnet with supposedly restrictive boundaries, and
substantial administrative effort is required to avoid this.
Organizations wishing to control such leakage are advised to
designate a small number of gateways to handle all news exchanges
with the outside world.
The sendme control message (<a href="#section-5.5">Section 5.5</a>), insofar as it is still
used, can be used to request articles that the requester should not
have access to.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. IANA Considerations</span>
IANA has registered the following media types, described elsewhere in
this document, for use with the Content-Type header field, in the
IETF tree in accordance with the procedures set out in [<a href="./rfc4288" title=""Media Type Specifications and Registration Procedures"">RFC4288</a>].
application/news-transmission (4.1)
application/news-groupinfo (4.2)
application/news-checkgroups (4.3)
application/news-transmission is a change to a previous registration.
IANA has registered the new header field, Original-Sender, in the
Permanent Message Header Field Repository, using the template in
<a href="#section-3.10.3">Section 3.10.3</a>.
IANA has changed the status of the message/news media type to
"OBSOLETE". message/rfc822 should be used instead. An updated
template is included in <a href="#section-4">Section 4</a>.
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. References</span>
<span class="h3"><a class="selflink" id="section-8.1" href="#section-8.1">8.1</a>. Normative References</span>
[<a id="ref-ASCII">ASCII</a>] American National Standard for Information Systems,
"Coded Character Sets - 7-Bit American National
Standard Code for Information Interchange (7-Bit
ASCII)", ANSI X3.4, 1986.
[<a id="ref-RFC2046">RFC2046</a>] Freed, N. and N. Borenstein, "Multipurpose Internet
Mail Extensions (MIME) Part Two: Media Types",
<a href="./rfc2046">RFC 2046</a>, November 1996.
[<a id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
<span class="grey">Allbery & Lindsey Standards Track [Page 45]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-46" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
[<a id="ref-RFC3629">RFC3629</a>] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, <a href="./rfc3629">RFC 3629</a>, November 2003.
[<a id="ref-RFC4288">RFC4288</a>] Freed, N. and J. Klensin, "Media Type Specifications
and Registration Procedures", <a href="https://www.rfc-editor.org/bcp/bcp13">BCP 13</a>, <a href="./rfc4288">RFC 4288</a>,
December 2005.
[<a id="ref-RFC5234">RFC5234</a>] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, <a href="./rfc5234">RFC 5234</a>, January 2008.
[<a id="ref-RFC5322">RFC5322</a>] Resnick, P., Ed., "Internet Message Format", <a href="./rfc5322">RFC 5322</a>,
October 2008.
[<a id="ref-RFC5536">RFC5536</a>] Murchison, K., Ed., Lindsey, C., and D. Kohn, "Netnews
Article Format", <a href="./rfc5536">RFC 5536</a>, November 2009.
<span class="h3"><a class="selflink" id="section-8.2" href="#section-8.2">8.2</a>. Informative References</span>
[<a id="ref-PGPMOOSE">PGPMOOSE</a>] Rose, G., "PGP Moose", November 1998.
[<a id="ref-PGPVERIFY">PGPVERIFY</a>] Lawrence, D., "Signing Control Messages", August 2001,
<<a href="ftp://ftp.isc.org/pub/pgpcontrol/FORMAT">ftp://ftp.isc.org/pub/pgpcontrol/FORMAT</a>>.
[<a id="ref-RFC1036">RFC1036</a>] Horton, M. and R. Adams, "Standard for interchange of
USENET messages", <a href="./rfc1036">RFC 1036</a>, December 1987.
[<a id="ref-RFC2045">RFC2045</a>] Freed, N. and N. Borenstein, "Multipurpose Internet
Mail Extensions (MIME) Part One: Format of Internet
Message Bodies", <a href="./rfc2045">RFC 2045</a>, November 1996.
[<a id="ref-RFC2606">RFC2606</a>] Eastlake, D. and A. Panitz, "Reserved Top Level DNS
Names", <a href="https://www.rfc-editor.org/bcp/bcp32">BCP 32</a>, <a href="./rfc2606">RFC 2606</a>, June 1999.
[<a id="ref-RFC3798">RFC3798</a>] Hansen, T. and G. Vaudreuil, "Message Disposition
Notification", <a href="./rfc3798">RFC 3798</a>, May 2004.
[<a id="ref-RFC3977">RFC3977</a>] Feather, C., "Network News Transfer Protocol (NNTP)",
<a href="./rfc3977">RFC 3977</a>, October 2006.
[<a id="ref-SON-OF-1036">SON-OF-1036</a>] Spencer, H., <a style="text-decoration: none" href='https://www.google.com/search?sitesearch=datatracker.ietf.org%2Fdoc%2Fhtml%2F&q=inurl:draft-+%22News+Article+Format+and+Transmission%22'>"News Article Format and Transmission"</a>,
Work in Progress, May 2009.
[<a id="ref-USEAGE">USEAGE</a>] Lindsey, C., <a style="text-decoration: none" href='https://www.google.com/search?sitesearch=datatracker.ietf.org%2Fdoc%2Fhtml%2F&q=inurl:draft-+%22Usenet+Best+Practice%22'>"Usenet Best Practice"</a>, Work in Progress,
March 2005.
[<a id="ref-UUCP">UUCP</a>] O'Reilly, T. and G. Todino, "Managing UUCP and
Usenet", O'Reilly & Associates Ltd., January 1992.
<span class="grey">Allbery & Lindsey Standards Track [Page 46]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-47" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
<span class="h2"><a class="selflink" id="appendix-A" href="#appendix-A">Appendix A</a>. Changes to the Existing Protocols</span>
This document prescribes many changes, clarifications, and new
features since the protocol described in [<a href="./rfc1036" title=""Standard for interchange of USENET messages"">RFC1036</a>]. Most notably:
o A new, backward-compatible Path header field format that permits
standardized embedding of additional trace and authentication
information is now RECOMMENDED. See <a href="#section-3.2">Section 3.2</a>. Folding of the
Path header is permitted.
o Trimming of the References header field is REQUIRED, and a
mechanism for doing so is defined.
o Addition of the new Injection-Date header field is required in
some circumstances for posting agents (<a href="#section-3.4.2">Section 3.4.2</a>) and
injecting agents (<a href="#section-3.5">Section 3.5</a>), and MUST be used by news servers
for date checks (<a href="#section-3.6">Section 3.6</a>). Injecting agents are also strongly
encouraged to put all local trace information in the new
Injection-Info header field.
o A new media type is defined for transmitting Netnews articles
through other media (<a href="#section-4.1">Section 4.1</a>), and moderators SHOULD prepare
to receive submissions in that format (<a href="#section-3.5.1">Section 3.5.1</a>).
o Certain control messages (<a href="#section-5.6">Section 5.6</a>) are declared obsolete, and
the special significance of "cmsg" at the start of a Subject
header field is removed.
o Additional media types are defined for improved structuring,
specification, and automated processing of control messages
(Sections <a href="#section-4.2">4.2</a> and <a href="#section-4.3">4.3</a>).
o Two new optional parameters are added to the checkgroups control
message.
o The message/news media type is declared obsolete.
o Cancel control messages are no longer required to have From and
Sender header fields matching those of the target message, as this
requirement added no real security.
o The relayer-name parameter in the Control header field of ihave
and sendme control messages is now required.
In addition, many protocol steps and article verification
requirements that are unmentioned or left ambiguous by [<a href="./rfc1036" title=""Standard for interchange of USENET messages"">RFC1036</a>] but
are widely implemented by Netnews servers have been standardized and
specified in detail.
<span class="grey">Allbery & Lindsey Standards Track [Page 47]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-48" ></span>
<span class="grey"><a href="./rfc5537">RFC 5537</a> Netnews Architecture and Protocols November 2009</span>
<span class="h2"><a class="selflink" id="appendix-B" href="#appendix-B">Appendix B</a>. Acknowledgements</span>
This document is the result of a twelve-year effort and the number of
people that have contributed to its content are too numerous to
mention individually. Many thanks go out to all past and present
members of the USEFOR Working Group of the Internet Engineering Task
Force (IETF) and the accompanying mailing list.
Special thanks are due to Henry Spencer, whose [<a href="#ref-SON-OF-1036" title=""News Article Format and Transmission"">SON-OF-1036</a>] draft
served as the initial basis for this document.
Authors' Addresses
Russ Allbery (editor)
Stanford University
P.O. Box 20066
Stanford, CA 94309
US
EMail: rra@stanford.edu
URI: <a href="http://www.eyrie.org/~eagle/">http://www.eyrie.org/~eagle/</a>
Charles H. Lindsey
5 Clerewood Avenue
Heald Green
Cheadle
Cheshire SK8 3JU
United Kingdom
Phone: +44 161 436 6131
EMail: chl@clerew.man.ac.uk
Allbery & Lindsey Standards Track [Page 48]
</pre>
|