Annotation of 43BSD/contrib/nntp/doc/rfc977, revision 1.1

1.1     ! root        1: 
        !             2: 
        !             3: Network Working Group                      Brian Kantor (U.C. San Diego)
        !             4: Request for Comments: 977                   Phil Lapsley (U.C. Berkeley)
        !             5:                                                            February 1986
        !             6: 
        !             7:                      Network News Transfer Protocol
        !             8:                                     
        !             9:                 A Proposed Standard for the Stream-Based
        !            10:                           Transmission of News
        !            11: 
        !            12: Status of This Memo
        !            13: 
        !            14:    NNTP specifies a protocol for the distribution, inquiry, retrieval,
        !            15:    and posting of news articles using a reliable stream-based
        !            16:    transmission of news among the ARPA-Internet community.  NNTP is
        !            17:    designed so that news articles are stored in a central database
        !            18:    allowing a subscriber to select only those items he wishes to read.
        !            19:    Indexing, cross-referencing, and expiration of aged messages are also
        !            20:    provided. This RFC suggests a proposed protocol for the ARPA-Internet
        !            21:    community, and requests discussion and suggestions for improvements.
        !            22:    Distribution of this memo is unlimited.
        !            23: 
        !            24: 1.  Introduction
        !            25: 
        !            26:    For many years, the ARPA-Internet community has supported the
        !            27:    distribution of bulletins, information, and data in a timely fashion
        !            28:    to thousands of participants.  We collectively refer to such items of
        !            29:    information as "news".  Such news provides for the rapid
        !            30:    dissemination of items of interest such as software bug fixes, new
        !            31:    product reviews, technical tips, and programming pointers, as well as
        !            32:    rapid-fire discussions of matters of concern to the working computer
        !            33:    professional. News is very popular among its readers.
        !            34: 
        !            35:    There are popularly two methods of distributing such news: the
        !            36:    Internet method of direct mailing, and the USENET news system.
        !            37: 
        !            38: 1.1.  Internet Mailing Lists
        !            39: 
        !            40:    The Internet community distributes news by the use of mailing lists.
        !            41:    These are lists of subscriber's mailbox addresses and remailing
        !            42:    sublists of all intended recipients.  These mailing lists operate by
        !            43:    remailing a copy of the information to be distributed to each
        !            44:    subscriber on the mailing list.  Such remailing is inefficient when a
        !            45:    mailing list grows beyond a dozen or so people, since sending a
        !            46:    separate copy to each of the subscribers occupies large quantities of
        !            47:    network bandwidth, CPU resources, and significant amounts of disk
        !            48:    storage at the destination host.  There is also a significant problem
        !            49:    in maintenance of the list itself: as subscribers move from one job
        !            50:    to another; as new subscribers join and old ones leave; and as hosts
        !            51:    come in and out of service.
        !            52: 
        !            53: 
        !            54: 
        !            55: 
        !            56: Kantor & Lapsley                                                [Page 1]
        !            57: 
        !            58: 
        !            59: 
        !            60: RFC 977                                                    February 1986
        !            61: Network News Transfer Protocol
        !            62: 
        !            63: 
        !            64: 1.2.  The USENET News System
        !            65: 
        !            66:    Clearly, a worthwhile reduction of the amount of these resources used
        !            67:    can be achieved if articles are stored in a central database on the
        !            68:    receiving host instead of in each subscriber's mailbox. The USENET
        !            69:    news system provides a method of doing just this.  There is a central
        !            70:    repository of the news articles in one place (customarily a spool
        !            71:    directory of some sort), and a set of programs that allow a
        !            72:    subscriber to select those items he wishes to read.  Indexing,
        !            73:    cross-referencing, and expiration of aged messages are also provided.
        !            74: 
        !            75: 1.3.  Central Storage of News
        !            76: 
        !            77:    For clusters of hosts connected together by fast local area networks
        !            78:    (such as Ethernet), it makes even more sense to consolidate news
        !            79:    distribution onto one (or a very few) hosts, and to allow access to
        !            80:    these news articles using a server and client model.  Subscribers may
        !            81:    then request only the articles they wish to see, without having to
        !            82:    wastefully duplicate the storage of a copy of each item on each host.
        !            83: 
        !            84: 1.4.  A Central News Server
        !            85: 
        !            86:    A way to achieve these economies is to have a central computer system
        !            87:    that can provide news service to the other systems on the local area
        !            88:    network.  Such a server would manage the collection of news articles
        !            89:    and index files, with each person who desires to read news bulletins
        !            90:    doing so over the LAN.  For a large cluster of computer systems, the
        !            91:    savings in total disk space is clearly worthwhile.  Also, this allows
        !            92:    workstations with limited disk storage space to participate in the
        !            93:    news without incoming items consuming oppressive amounts of the
        !            94:    workstation's disk storage.
        !            95: 
        !            96:    We have heard rumors of somewhat successful attempts to provide
        !            97:    centralized news service using IBIS and other shared or distributed
        !            98:    file systems.  While it is possible that such a distributed file
        !            99:    system implementation might work well with a group of similar
        !           100:    computers running nearly identical operating systems, such a scheme
        !           101:    is not general enough to offer service to a wide range of client
        !           102:    systems, especially when many diverse operating systems may be in use
        !           103:    among a group of clients.  There are few (if any) shared or networked
        !           104:    file systems that can offer the generality of service that stream
        !           105:    connections using Internet TCP provide, particularly when a wide
        !           106:    range of host hardware and operating systems are considered.
        !           107: 
        !           108:    NNTP specifies a protocol for the distribution, inquiry, retrieval,
        !           109:    and posting of news articles using a reliable stream (such as TCP)
        !           110:    server-client model. NNTP is designed so that news articles need only
        !           111: 
        !           112: 
        !           113: Kantor & Lapsley                                                [Page 2]
        !           114: 
        !           115: 
        !           116: 
        !           117: RFC 977                                                    February 1986
        !           118: Network News Transfer Protocol
        !           119: 
        !           120: 
        !           121:    be stored on one (presumably central) host, and subscribers on other
        !           122:    hosts attached to the LAN may read news articles using stream
        !           123:    connections to the news host.
        !           124: 
        !           125:    NNTP is modelled upon the news article specifications in RFC 850,
        !           126:    which describes the USENET news system.  However, NNTP makes few
        !           127:    demands upon the structure, content, or storage of news articles, and
        !           128:    thus we believe it easily can be adapted to other non-USENET news
        !           129:    systems.
        !           130: 
        !           131:    Typically, the NNTP server runs as a background process on one host,
        !           132:    and would accept connections from other hosts on the LAN.  This works
        !           133:    well when there are a number of small computer systems (such as
        !           134:    workstations, with only one or at most a few users each), and a large
        !           135:    central server.
        !           136: 
        !           137: 1.5.  Intermediate News Servers
        !           138: 
        !           139:    For clusters of machines with many users (as might be the case in a
        !           140:    university or large industrial environment), an intermediate server
        !           141:    might be used.  This intermediate or "slave" server runs on each
        !           142:    computer system, and is responsible for mediating news reading
        !           143:    requests and performing local caching of recently-retrieved news
        !           144:    articles.
        !           145: 
        !           146:    Typically, a client attempting to obtain news service would first
        !           147:    attempt to connect to the news service port on the local machine.  If
        !           148:    this attempt were unsuccessful, indicating a failed server, an
        !           149:    installation might choose to either deny news access, or to permit
        !           150:    connection to the central "master" news server.
        !           151: 
        !           152:    For workstations or other small systems, direct connection to the
        !           153:    master server would probably be the normal manner of operation.
        !           154: 
        !           155:    This specification does not cover the operation of slave NNTP
        !           156:    servers.  We merely suggest that slave servers are a logical addition
        !           157:    to NNTP server usage which would enhance operation on large local
        !           158:    area networks.
        !           159: 
        !           160: 1.6.  News Distribution
        !           161: 
        !           162:    NNTP has commands which provide a straightforward method of
        !           163:    exchanging articles between cooperating hosts. Hosts which are well
        !           164:    connected on a local area or other fast network and who wish to
        !           165:    actually obtain copies of news articles for local storage might well
        !           166:    find NNTP to be a more efficient way to distribute news than more
        !           167:    traditional transfer methods (such as UUCP).
        !           168: 
        !           169: 
        !           170: Kantor & Lapsley                                                [Page 3]
        !           171: 
        !           172: 
        !           173: 
        !           174: RFC 977                                                    February 1986
        !           175: Network News Transfer Protocol
        !           176: 
        !           177: 
        !           178:    In the traditional method of distributing news articles, news is
        !           179:    propagated from host to host by flooding - that is, each host will
        !           180:    send all its new news articles on to each host that it feeds.  These
        !           181:    hosts will then in turn send these new articles on to other hosts
        !           182:    that they feed.  Clearly, sending articles that a host already has
        !           183:    obtained a copy of from another feed (many hosts that receive news
        !           184:    are redundantly fed) again is a waste of time and communications
        !           185:    resources, but for transport mechanisms that are single-transaction
        !           186:    based rather than interactive (such as UUCP in the UNIX-world <1>),
        !           187:    distribution time is diminished by sending all articles and having
        !           188:    the receiving host simply discard the duplicates.  This is an
        !           189:    especially true when communications sessions are limited to once a
        !           190:    day.
        !           191: 
        !           192:    Using NNTP, hosts exchanging news articles have an interactive
        !           193:    mechanism for deciding which articles are to be transmitted.  A host
        !           194:    desiring new news, or which has new news to send, will typically
        !           195:    contact one or more of its neighbors using NNTP.  First it will
        !           196:    inquire if any new news groups have been created on the serving host
        !           197:    by means of the NEWGROUPS command.  If so, and those are appropriate
        !           198:    or desired (as established by local site-dependent rules), those new
        !           199:    newsgroups can be created.
        !           200: 
        !           201:    The client host will then inquire as to which new articles have
        !           202:    arrived in all or some of the newsgroups that it desires to receive,
        !           203:    using the NEWNEWS command.  It will receive a list of new articles
        !           204:    from the server, and can request transmission of those articles that
        !           205:    it desires and does not already have.
        !           206: 
        !           207:    Finally, the client can advise the server of those new articles which
        !           208:    the client has recently received.  The server will indicate those
        !           209:    articles that it has already obtained copies of, and which articles
        !           210:    should be sent to add to its collection.
        !           211: 
        !           212:    In this manner, only those articles which are not duplicates and
        !           213:    which are desired are transferred.
        !           214: 
        !           215: 
        !           216: 
        !           217: 
        !           218: 
        !           219: 
        !           220: 
        !           221: 
        !           222: 
        !           223: 
        !           224: 
        !           225: 
        !           226: 
        !           227: Kantor & Lapsley                                                [Page 4]
        !           228: 
        !           229: 
        !           230: 
        !           231: RFC 977                                                    February 1986
        !           232: Network News Transfer Protocol
        !           233: 
        !           234: 
        !           235: 2.  The NNTP Specification
        !           236: 
        !           237: 2.1.  Overview
        !           238: 
        !           239:    The news server specified by this document uses a stream connection
        !           240:    (such as TCP) and SMTP-like commands and responses.  It is designed
        !           241:    to accept connections from hosts, and to provide a simple interface
        !           242:    to the news database.
        !           243: 
        !           244:    This server is only an interface between programs and the news
        !           245:    databases. It does not perform any user interaction or presentation-
        !           246:    level functions. These "user-friendly" functions are better left to
        !           247:    the client programs, which have a better understanding of the
        !           248:    environment in which they are operating.
        !           249: 
        !           250:    When used via Internet TCP, the contact port assigned for this
        !           251:    service is 119.
        !           252: 
        !           253: 2.2.  Character Codes
        !           254: 
        !           255:    Commands and replies are composed of characters from the ASCII
        !           256:    character set.  When the transport service provides an 8-bit byte
        !           257:    (octet) transmission channel, each 7-bit character is transmitted
        !           258:    right justified in an octet with the high order bit cleared to zero.
        !           259: 
        !           260: 2.3.  Commands
        !           261: 
        !           262:    Commands consist of a command word, which in some cases may be
        !           263:    followed by a parameter.  Commands with parameters must separate the
        !           264:    parameters from each other and from the command by one or more space
        !           265:    or tab characters.  Command lines must be complete with all required
        !           266:    parameters, and may not contain more than one command.
        !           267: 
        !           268:    Commands and command parameters are not case sensitive. That is, a
        !           269:    command or parameter word may be upper case, lower case, or any
        !           270:    mixture of upper and lower case.
        !           271: 
        !           272:    Each command line must be terminated by a CR-LF (Carriage Return -
        !           273:    Line Feed) pair.
        !           274: 
        !           275:    Command lines shall not exceed 512 characters in length, counting all
        !           276:    characters including spaces, separators, punctuation, and the
        !           277:    trailing CR-LF (thus there are 510 characters maximum allowed for the
        !           278:    command and its parameters).  There is no provision for continuation
        !           279:    command lines.
        !           280: 
        !           281: 
        !           282: 
        !           283: 
        !           284: Kantor & Lapsley                                                [Page 5]
        !           285: 
        !           286: 
        !           287: 
        !           288: RFC 977                                                    February 1986
        !           289: Network News Transfer Protocol
        !           290: 
        !           291: 
        !           292: 2.4.  Responses
        !           293: 
        !           294:    Responses are of two kinds, textual and status.
        !           295: 
        !           296: 2.4.1.  Text Responses
        !           297: 
        !           298:    Text is sent only after a numeric status response line has been sent
        !           299:    that indicates that text will follow.  Text is sent as a series of
        !           300:    successive lines of textual matter, each terminated with CR-LF pair.
        !           301:    A single line containing only a period (.) is sent to indicate the
        !           302:    end of the text (i.e., the server will send a CR-LF pair at the end
        !           303:    of the last line of text, a period, and another CR-LF pair).
        !           304: 
        !           305:    If the text contained a period as the first character of the text
        !           306:    line in the original, that first period is doubled.  Therefore, the
        !           307:    client must examine the first character of each line received, and
        !           308:    for those beginning with a period, determine either that this is the
        !           309:    end of the text or whether to collapse the doubled period to a single
        !           310:    one.
        !           311: 
        !           312:    The intention is that text messages will usually be displayed on the
        !           313:    user's terminal whereas command/status responses will be interpreted
        !           314:    by the client program before any possible display is done.
        !           315: 
        !           316: 2.4.2.  Status Responses
        !           317: 
        !           318:    These are status reports from the server and indicate the response to
        !           319:    the last command received from the client.
        !           320: 
        !           321:    Status response lines begin with a 3 digit numeric code which is
        !           322:    sufficient to distinguish all responses.  Some of these may herald
        !           323:    the subsequent transmission of text.
        !           324: 
        !           325:    The first digit of the response broadly indicates the success,
        !           326:    failure, or progress of the previous command.
        !           327: 
        !           328:       1xx - Informative message
        !           329:       2xx - Command ok
        !           330:       3xx - Command ok so far, send the rest of it.
        !           331:       4xx - Command was correct, but couldn't be performed for
        !           332:             some reason.
        !           333:       5xx - Command unimplemented, or incorrect, or a serious
        !           334:             program error occurred.
        !           335: 
        !           336: 
        !           337: 
        !           338: 
        !           339: 
        !           340: 
        !           341: Kantor & Lapsley                                                [Page 6]
        !           342: 
        !           343: 
        !           344: 
        !           345: RFC 977                                                    February 1986
        !           346: Network News Transfer Protocol
        !           347: 
        !           348: 
        !           349:    The next digit in the code indicates the function response category.
        !           350: 
        !           351:       x0x - Connection, setup, and miscellaneous messages
        !           352:       x1x - Newsgroup selection
        !           353:       x2x - Article selection
        !           354:       x3x - Distribution functions
        !           355:       x4x - Posting
        !           356:       x8x - Nonstandard (private implementation) extensions
        !           357:       x9x - Debugging output
        !           358: 
        !           359:    The exact response codes that should be expected from each command
        !           360:    are detailed in the description of that command.  In addition, below
        !           361:    is listed a general set of response codes that may be received at any
        !           362:    time.
        !           363: 
        !           364:    Certain status responses contain parameters such as numbers and
        !           365:    names. The number and type of such parameters is fixed for each
        !           366:    response code to simplify interpretation of the response.
        !           367: 
        !           368:    Parameters are separated from the numeric response code and from each
        !           369:    other by a single space. All numeric parameters are decimal, and may
        !           370:    have leading zeros. All string parameters begin after the separating
        !           371:    space, and end before the following separating space or the CR-LF
        !           372:    pair at the end of the line. (String parameters may not, therefore,
        !           373:    contain spaces.) All text, if any, in the response which is not a
        !           374:    parameter of the response must follow and be separated from the last
        !           375:    parameter by a space.  Also, note that the text following a response
        !           376:    number may vary in different implementations of the server. The
        !           377:    3-digit numeric code should be used to determine what response was
        !           378:    sent.
        !           379: 
        !           380:    Response codes not specified in this standard may be used for any
        !           381:    installation-specific additional commands also not specified. These
        !           382:    should be chosen to fit the pattern of x8x specified above.  (Note
        !           383:    that debugging is provided for explicitly in the x9x response codes.)
        !           384:    The use of unspecified response codes for standard commands is
        !           385:    prohibited.
        !           386: 
        !           387:    We have provided a response pattern x9x for debugging.  Since much
        !           388:    debugging output may be classed as "informative messages", we would
        !           389:    expect, therefore, that responses 190 through 199 would be used for
        !           390:    various debugging outputs.  There is no requirement in this
        !           391:    specification for debugging output, but if such is provided over the
        !           392:    connected stream, it must use these response codes.  If appropriate
        !           393:    to a specific implementation, other x9x codes may be used for
        !           394:    debugging.  (An example might be to use e.g., 290 to acknowledge a
        !           395:    remote debugging request.)
        !           396: 
        !           397: 
        !           398: Kantor & Lapsley                                                [Page 7]
        !           399: 
        !           400: 
        !           401: 
        !           402: RFC 977                                                    February 1986
        !           403: Network News Transfer Protocol
        !           404: 
        !           405: 
        !           406: 2.4.3.  General Responses
        !           407: 
        !           408:    The following is a list of general response codes that may be sent by
        !           409:    the NNTP server.  These are not specific to any one command, but may
        !           410:    be returned as the result of a connection, a failure, or some unusual
        !           411:    condition.
        !           412: 
        !           413:    In general, 1xx codes may be ignored or displayed as desired;  code
        !           414:    200 or 201 is sent upon initial connection to the NNTP server
        !           415:    depending upon posting permission; code 400 will be sent when the
        !           416:    NNTP server discontinues service (by operator request, for example);
        !           417:    and 5xx codes indicate that the command could not be performed for
        !           418:    some unusual reason.
        !           419: 
        !           420:       100 help text
        !           421:       190
        !           422:         through
        !           423:       199 debug output
        !           424: 
        !           425:       200 server ready - posting allowed
        !           426:       201 server ready - no posting allowed
        !           427: 
        !           428:       400 service discontinued
        !           429: 
        !           430:       500 command not recognized
        !           431:       501 command syntax error
        !           432:       502 access restriction or permission denied
        !           433:       503 program fault - command not performed
        !           434: 
        !           435: 3.  Command and Response Details
        !           436: 
        !           437:    On the following pages are descriptions of each command recognized by
        !           438:    the NNTP server and the responses which will be returned by those
        !           439:    commands.
        !           440: 
        !           441:    Each command is shown in upper case for clarity, although case is
        !           442:    ignored in the interpretation of commands by the NNTP server.  Any
        !           443:    parameters are shown in lower case.  A parameter shown in [square
        !           444:    brackets] is optional.  For example, [GMT] indicates that the
        !           445:    triglyph GMT may present or omitted.
        !           446: 
        !           447:    Every command described in this section must be implemented by all
        !           448:    NNTP servers.
        !           449: 
        !           450: 
        !           451: 
        !           452: 
        !           453: 
        !           454: 
        !           455: Kantor & Lapsley                                                [Page 8]
        !           456: 
        !           457: 
        !           458: 
        !           459: RFC 977                                                    February 1986
        !           460: Network News Transfer Protocol
        !           461: 
        !           462: 
        !           463:    There is no prohibition against additional commands being added;
        !           464:    however, it is recommended that any such unspecified command begin
        !           465:    with the letter "X" to avoid conflict with later revisions of this
        !           466:    specification.
        !           467: 
        !           468:    Implementors are reminded that such additional commands may not
        !           469:    redefine specified status response codes.  Using additional
        !           470:    unspecified responses for standard commands is also prohibited.
        !           471: 
        !           472: 3.1.  The ARTICLE, BODY, HEAD, and STAT commands
        !           473: 
        !           474:    There are two forms to the ARTICLE command (and the related BODY,
        !           475:    HEAD, and STAT commands), each using a different method of specifying
        !           476:    which article is to be retrieved.  When the ARTICLE command is
        !           477:    followed by a message-id in angle brackets ("<" and ">"), the first
        !           478:    form of the command is used; when a numeric parameter or no parameter
        !           479:    is supplied, the second form is invoked.
        !           480: 
        !           481:    The text of the article is returned as a textual response, as
        !           482:    described earlier in this document.
        !           483: 
        !           484:    The HEAD and BODY commands are identical to the ARTICLE command
        !           485:    except that they respectively return only the header lines or text
        !           486:    body of the article.
        !           487: 
        !           488:    The STAT command is similar to the ARTICLE command except that no
        !           489:    text is returned.  When selecting by message number within a group,
        !           490:    the STAT command serves to set the current article pointer without
        !           491:    sending text. The returned acknowledgement response will contain the
        !           492:    message-id, which may be of some value.  Using the STAT command to
        !           493:    select by message-id is valid but of questionable value, since a
        !           494:    selection by message-id does NOT alter the "current article pointer".
        !           495: 
        !           496: 3.1.1.  ARTICLE (selection by message-id)
        !           497: 
        !           498:    ARTICLE <message-id>
        !           499: 
        !           500:    Display the header, a blank line, then the body (text) of the
        !           501:    specified article.  Message-id is the message id of an article as
        !           502:    shown in that article's header.  It is anticipated that the client
        !           503:    will obtain the message-id from a list provided by the NEWNEWS
        !           504:    command, from references contained within another article, or from
        !           505:    the message-id provided in the response to some other commands.
        !           506: 
        !           507:    Please note that the internally-maintained "current article pointer"
        !           508:    is NOT ALTERED by this command. This is both to facilitate the
        !           509:    presentation of articles that may be referenced within an article
        !           510: 
        !           511: 
        !           512: Kantor & Lapsley                                                [Page 9]
        !           513: 
        !           514: 
        !           515: 
        !           516: RFC 977                                                    February 1986
        !           517: Network News Transfer Protocol
        !           518: 
        !           519: 
        !           520:    being read, and because of the semantic difficulties of determining
        !           521:    the proper sequence and membership of an article which may have been
        !           522:    posted to more than one newsgroup.
        !           523: 
        !           524: 3.1.2.  ARTICLE (selection by number)
        !           525: 
        !           526:    ARTICLE [nnn]
        !           527: 
        !           528:    Displays the header, a blank line, then the body (text) of the
        !           529:    current or specified article.  The optional parameter nnn is the
        !           530: 
        !           531:    numeric id of an article in the current newsgroup and must be chosen
        !           532:    from the range of articles provided when the newsgroup was selected.
        !           533:    If it is omitted, the current article is assumed.
        !           534: 
        !           535:    The internally-maintained "current article pointer" is set by this
        !           536:    command if a valid article number is specified.
        !           537: 
        !           538:    [the following applies to both forms of the article command.] A
        !           539:    response indicating the current article number, a message-id string,
        !           540:    and that text is to follow will be returned.
        !           541: 
        !           542:    The message-id string returned is an identification string contained
        !           543:    within angle brackets ("<" and ">"), which is derived from the header
        !           544:    of the article itself.  The Message-ID header line (required by
        !           545:    RFC850) from the article must be used to supply this information. If
        !           546:    the message-id header line is missing from the article, a single
        !           547:    digit "0" (zero) should be supplied within the angle brackets.
        !           548: 
        !           549:    Since the message-id field is unique with each article, it may be
        !           550:    used by a news reading program to skip duplicate displays of articles
        !           551:    that have been posted more than once, or to more than one newsgroup.
        !           552: 
        !           553: 3.1.3.  Responses
        !           554: 
        !           555:    220 n <a> article retrieved - head and body follow
        !           556:            (n = article number, <a> = message-id)
        !           557:    221 n <a> article retrieved - head follows
        !           558:    222 n <a> article retrieved - body follows
        !           559:    223 n <a> article retrieved - request text separately
        !           560:    412 no newsgroup has been selected
        !           561:    420 no current article has been selected
        !           562:    423 no such article number in this group
        !           563:    430 no such article found
        !           564: 
        !           565: 
        !           566: 
        !           567: 
        !           568: 
        !           569: Kantor & Lapsley                                               [Page 10]
        !           570: 
        !           571: 
        !           572: 
        !           573: RFC 977                                                    February 1986
        !           574: Network News Transfer Protocol
        !           575: 
        !           576: 
        !           577: 3.2.  The GROUP command
        !           578: 
        !           579: 3.2.1.  GROUP
        !           580: 
        !           581:    GROUP ggg
        !           582: 
        !           583:    The required parameter ggg is the name of the newsgroup to be
        !           584:    selected (e.g. "net.news").  A list of valid newsgroups may be
        !           585:    obtained from the LIST command.
        !           586: 
        !           587:    The successful selection response will return the article numbers of
        !           588:    the first and last articles in the group, and an estimate of the
        !           589:    number of articles on file in the group.  It is not necessary that
        !           590:    the estimate be correct, although that is helpful; it must only be
        !           591:    equal to or larger than the actual number of articles on file.  (Some
        !           592:    implementations will actually count the number of articles on file.
        !           593:    Others will just subtract first article number from last to get an
        !           594:    estimate.)
        !           595: 
        !           596:    When a valid group is selected by means of this command, the
        !           597:    internally maintained "current article pointer" is set to the first
        !           598:    article in the group.  If an invalid group is specified, the
        !           599:    previously selected group and article remain selected.  If an empty
        !           600:    newsgroup is selected, the "current article pointer" is in an
        !           601:    indeterminate state and should not be used.
        !           602: 
        !           603:    Note that the name of the newsgroup is not case-dependent.  It must
        !           604:    otherwise match a newsgroup obtained from the LIST command or an
        !           605:    error will result.
        !           606: 
        !           607: 3.2.2.  Responses
        !           608: 
        !           609:    211 n f l s group selected
        !           610:            (n = estimated number of articles in group,
        !           611:            f = first article number in the group,
        !           612:            l = last article number in the group,
        !           613:            s = name of the group.)
        !           614:    411 no such news group
        !           615: 
        !           616: 
        !           617: 
        !           618: 
        !           619: 
        !           620: 
        !           621: 
        !           622: 
        !           623: 
        !           624: 
        !           625: 
        !           626: Kantor & Lapsley                                               [Page 11]
        !           627: 
        !           628: 
        !           629: 
        !           630: RFC 977                                                    February 1986
        !           631: Network News Transfer Protocol
        !           632: 
        !           633: 
        !           634: 3.3.  The HELP command
        !           635: 
        !           636: 3.3.1.  HELP
        !           637: 
        !           638:    HELP
        !           639: 
        !           640:    Provides a short summary of commands that are understood by this
        !           641:    implementation of the server. The help text will be presented as a
        !           642:    textual response, terminated by a single period on a line by itself.
        !           643: 
        !           644:    3.3.2.  Responses
        !           645: 
        !           646:    100 help text follows
        !           647: 
        !           648: 3.4.  The IHAVE command
        !           649: 
        !           650: 3.4.1.  IHAVE
        !           651: 
        !           652:    IHAVE <messageid>
        !           653: 
        !           654:    The IHAVE command informs the server that the client has an article
        !           655:    whose id is <messageid>.  If the server desires a copy of that
        !           656:    article, it will return a response instructing the client to send the
        !           657:    entire article.  If the server does not want the article (if, for
        !           658:    example, the server already has a copy of it), a response indicating
        !           659:    that the article is not wanted will be returned.
        !           660: 
        !           661:    If transmission of the article is requested, the client should send
        !           662:    the entire article, including header and body, in the manner
        !           663:    specified for text transmission from the server. A response code
        !           664:    indicating success or failure of the transferral of the article will
        !           665:    be returned.
        !           666: 
        !           667:    This function differs from the POST command in that it is intended
        !           668:    for use in transferring already-posted articles between hosts.
        !           669:    Normally it will not be used when the client is a personal
        !           670:    newsreading program.  In particular, this function will invoke the
        !           671:    server's news posting program with the appropriate settings (flags,
        !           672:    options, etc) to indicate that the forthcoming article is being
        !           673:    forwarded from another host.
        !           674: 
        !           675:    The server may, however, elect not to post or forward the article if
        !           676:    after further examination of the article it deems it inappropriate to
        !           677:    do so.  The 436 or 437 error codes may be returned as appropriate to
        !           678:    the situation.
        !           679: 
        !           680:    Reasons for such subsequent rejection of an article may include such
        !           681: 
        !           682: 
        !           683: Kantor & Lapsley                                               [Page 12]
        !           684: 
        !           685: 
        !           686: 
        !           687: RFC 977                                                    February 1986
        !           688: Network News Transfer Protocol
        !           689: 
        !           690: 
        !           691:    problems as inappropriate newsgroups or distributions, disk space
        !           692:    limitations, article lengths, garbled headers, and the like.  These
        !           693:    are typically restrictions enforced by the server host's news
        !           694:    software and not necessarily the NNTP server itself.
        !           695: 
        !           696: 3.4.2.  Responses
        !           697: 
        !           698:    235 article transferred ok
        !           699:    335 send article to be transferred.  End with <CR-LF>.<CR-LF>
        !           700:    435 article not wanted - do not send it
        !           701:    436 transfer failed - try again later
        !           702:    437 article rejected - do not try again
        !           703: 
        !           704:    An implementation note:
        !           705: 
        !           706:    Because some host news posting software may not be able to decide
        !           707:    immediately that an article is inappropriate for posting or
        !           708:    forwarding, it is acceptable to acknowledge the successful transfer
        !           709:    of the article and to later silently discard it.  Thus it is
        !           710:    permitted to return the 235 acknowledgement code and later discard
        !           711:    the received article.  This is not a fully satisfactory solution to
        !           712:    the problem.  Perhaps some implementations will wish to send mail to
        !           713:    the author of the article in certain of these cases.
        !           714: 
        !           715: 3.5.  The LAST command
        !           716: 
        !           717: 3.5.1.  LAST
        !           718: 
        !           719:    LAST
        !           720: 
        !           721:    The internally maintained "current article pointer" is set to the
        !           722:    previous article in the current newsgroup.  If already positioned at
        !           723:    the first article of the newsgroup, an error message is returned and
        !           724:    the current article remains selected.
        !           725: 
        !           726:    The internally-maintained "current article pointer" is set by this
        !           727:    command.
        !           728: 
        !           729:    A response indicating the current article number, and a message-id
        !           730:    string will be returned.  No text is sent in response to this
        !           731:    command.
        !           732: 
        !           733: 3.5.2.  Responses
        !           734: 
        !           735:    223 n a article retrieved - request text separately
        !           736:            (n = article number, a = unique article id)
        !           737: 
        !           738: 
        !           739: 
        !           740: Kantor & Lapsley                                               [Page 13]
        !           741: 
        !           742: 
        !           743: 
        !           744: RFC 977                                                    February 1986
        !           745: Network News Transfer Protocol
        !           746: 
        !           747: 
        !           748:    412 no newsgroup selected
        !           749:    420 no current article has been selected
        !           750:    422 no previous article in this group
        !           751: 
        !           752: 3.6.  The LIST command
        !           753: 
        !           754: 3.6.1.  LIST
        !           755: 
        !           756:    LIST
        !           757: 
        !           758:    Returns a list of valid newsgroups and associated information.  Each
        !           759:    newsgroup is sent as a line of text in the following format:
        !           760: 
        !           761:       group last first p
        !           762: 
        !           763:    where <group> is the name of the newsgroup, <last> is the number of
        !           764:    the last known article currently in that newsgroup, <first> is the
        !           765:    number of the first article currently in the newsgroup, and <p> is
        !           766:    either 'y' or 'n' indicating whether posting to this newsgroup is
        !           767:    allowed ('y') or prohibited ('n').
        !           768: 
        !           769:    The <first> and <last> fields will always be numeric.  They may have
        !           770:    leading zeros.  If the <last> field evaluates to less than the
        !           771:    <first> field, there are no articles currently on file in the
        !           772:    newsgroup.
        !           773: 
        !           774:    Note that posting may still be prohibited to a client even though the
        !           775:    LIST command indicates that posting is permitted to a particular
        !           776:    newsgroup. See the POST command for an explanation of client
        !           777:    prohibitions.  The posting flag exists for each newsgroup because
        !           778:    some newsgroups are moderated or are digests, and therefore cannot be
        !           779:    posted to; that is, articles posted to them must be mailed to a
        !           780:    moderator who will post them for the submitter.  This is independent
        !           781:    of the posting permission granted to a client by the NNTP server.
        !           782: 
        !           783:    Please note that an empty list (i.e., the text body returned by this
        !           784:    command consists only of the terminating period) is a possible valid
        !           785:    response, and indicates that there are currently no valid newsgroups.
        !           786: 
        !           787: 3.6.2.  Responses
        !           788: 
        !           789:    215 list of newsgroups follows
        !           790: 
        !           791: 
        !           792: 
        !           793: 
        !           794: 
        !           795: 
        !           796: 
        !           797: Kantor & Lapsley                                               [Page 14]
        !           798: 
        !           799: 
        !           800: 
        !           801: RFC 977                                                    February 1986
        !           802: Network News Transfer Protocol
        !           803: 
        !           804: 
        !           805: 3.7.  The NEWGROUPS command
        !           806: 
        !           807: 3.7.1.  NEWGROUPS
        !           808: 
        !           809:    NEWGROUPS date time [GMT] [<distributions>]
        !           810: 
        !           811:    A list of newsgroups created since <date and time> will be listed in
        !           812:    the same format as the LIST command.
        !           813: 
        !           814:    The date is sent as 6 digits in the format YYMMDD, where YY is the
        !           815:    last two digits of the year, MM is the two digits of the month (with
        !           816:    leading zero, if appropriate), and DD is the day of the month (with
        !           817:    leading zero, if appropriate).  The closest century is assumed as
        !           818:    part of the year (i.e., 86 specifies 1986, 30 specifies 2030, 99 is
        !           819:    1999, 00 is 2000).
        !           820: 
        !           821:    Time must also be specified.  It must be as 6 digits HHMMSS with HH
        !           822:    being hours on the 24-hour clock, MM minutes 00-59, and SS seconds
        !           823:    00-59.  The time is assumed to be in the server's timezone unless the
        !           824:    token "GMT" appears, in which case both time and date are evaluated
        !           825:    at the 0 meridian.
        !           826: 
        !           827:    The optional parameter "distributions" is a list of distribution
        !           828:    groups, enclosed in angle brackets.  If specified, the distribution
        !           829:    portion of a new newsgroup (e.g, 'net' in 'net.wombat') will be
        !           830:    examined for a match with the distribution categories listed, and
        !           831:    only those new newsgroups which match will be listed.  If more than
        !           832:    one distribution group is to be listed, they must be separated by
        !           833:    commas within the angle brackets.
        !           834: 
        !           835:    Please note that an empty list (i.e., the text body returned by this
        !           836:    command consists only of the terminating period) is a possible valid
        !           837:    response, and indicates that there are currently no new newsgroups.
        !           838: 
        !           839: 3.7.2.  Responses
        !           840: 
        !           841:    231 list of new newsgroups follows
        !           842: 
        !           843: 
        !           844: 
        !           845: 
        !           846: 
        !           847: 
        !           848: 
        !           849: 
        !           850: 
        !           851: 
        !           852: 
        !           853: 
        !           854: Kantor & Lapsley                                               [Page 15]
        !           855: 
        !           856: 
        !           857: 
        !           858: RFC 977                                                    February 1986
        !           859: Network News Transfer Protocol
        !           860: 
        !           861: 
        !           862: 3.8.  The NEWNEWS command
        !           863: 
        !           864: 3.8.1.  NEWNEWS
        !           865: 
        !           866:    NEWNEWS newsgroups date time [GMT] [<distribution>]
        !           867: 
        !           868:    A list of message-ids of articles posted or received to the specified
        !           869:    newsgroup since "date" will be listed. The format of the listing will
        !           870:    be one message-id per line, as though text were being sent.  A single
        !           871:    line consisting solely of one period followed by CR-LF will terminate
        !           872:    the list.
        !           873: 
        !           874:    Date and time are in the same format as the NEWGROUPS command.
        !           875: 
        !           876:    A newsgroup name containing a "*" (an asterisk) may be specified to
        !           877:    broaden the article search to some or all newsgroups.  The asterisk
        !           878:    will be extended to match any part of a newsgroup name (e.g.,
        !           879:    net.micro* will match net.micro.wombat, net.micro.apple, etc). Thus
        !           880:    if only an asterisk is given as the newsgroup name, all newsgroups
        !           881:    will be searched for new news.
        !           882: 
        !           883:    (Please note that the asterisk "*" expansion is a general
        !           884:    replacement; in particular, the specification of e.g., net.*.unix
        !           885:    should be correctly expanded to embrace names such as net.wombat.unix
        !           886:    and net.whocares.unix.)
        !           887: 
        !           888:    Conversely, if no asterisk appears in a given newsgroup name, only
        !           889:    the specified newsgroup will be searched for new articles. Newsgroup
        !           890:    names must be chosen from those returned in the listing of available
        !           891:    groups.  Multiple newsgroup names (including a "*") may be specified
        !           892:    in this command, separated by a comma.  No comma shall appear after
        !           893:    the last newsgroup in the list.  [Implementors are cautioned to keep
        !           894:    the 512 character command length limit in mind.]
        !           895: 
        !           896:    The exclamation point ("!") may be used to negate a match. This can
        !           897:    be used to selectively omit certain newsgroups from an otherwise
        !           898:    larger list.  For example, a newsgroups specification of
        !           899:    "net.*,mod.*,!mod.map.*" would specify that all net.<anything> and
        !           900:    all mod.<anything> EXCEPT mod.map.<anything> newsgroup names would be
        !           901:    matched.  If used, the exclamation point must appear as the first
        !           902:    character of the given newsgroup name or pattern.
        !           903: 
        !           904:    The optional parameter "distributions" is a list of distribution
        !           905:    groups, enclosed in angle brackets.  If specified, the distribution
        !           906:    portion of an article's newsgroup (e.g, 'net' in 'net.wombat') will
        !           907:    be examined for a match with the distribution categories listed, and
        !           908:    only those articles which have at least one newsgroup belonging to
        !           909: 
        !           910: 
        !           911: Kantor & Lapsley                                               [Page 16]
        !           912: 
        !           913: 
        !           914: 
        !           915: RFC 977                                                    February 1986
        !           916: Network News Transfer Protocol
        !           917: 
        !           918: 
        !           919:    the list of distributions will be listed.  If more than one
        !           920:    distribution group is to be supplied, they must be separated by
        !           921:    commas within the angle brackets.
        !           922: 
        !           923:    The use of the IHAVE, NEWNEWS, and NEWGROUPS commands to distribute
        !           924:    news is discussed in an earlier part of this document.
        !           925: 
        !           926:    Please note that an empty list (i.e., the text body returned by this
        !           927:    command consists only of the terminating period) is a possible valid
        !           928:    response, and indicates that there is currently no new news.
        !           929: 
        !           930: 3.8.2.  Responses
        !           931: 
        !           932:    230 list of new articles by message-id follows
        !           933: 
        !           934: 3.9.  The NEXT command
        !           935: 
        !           936: 3.9.1.  NEXT
        !           937: 
        !           938:    NEXT
        !           939: 
        !           940:    The internally maintained "current article pointer" is advanced to
        !           941:    the next article in the current newsgroup.  If no more articles
        !           942:    remain in the current group, an error message is returned and the
        !           943:    current article remains selected.
        !           944: 
        !           945:    The internally-maintained "current article pointer" is set by this
        !           946:    command.
        !           947: 
        !           948:    A response indicating the current article number, and the message-id
        !           949:    string will be returned.  No text is sent in response to this
        !           950:    command.
        !           951: 
        !           952: 3.9.2.  Responses
        !           953: 
        !           954:    223 n a article retrieved - request text separately
        !           955:            (n = article number, a = unique article id)
        !           956:    412 no newsgroup selected
        !           957:    420 no current article has been selected
        !           958:    421 no next article in this group
        !           959: 
        !           960: 
        !           961: 
        !           962: 
        !           963: 
        !           964: 
        !           965: 
        !           966: 
        !           967: 
        !           968: Kantor & Lapsley                                               [Page 17]
        !           969: 
        !           970: 
        !           971: 
        !           972: RFC 977                                                    February 1986
        !           973: Network News Transfer Protocol
        !           974: 
        !           975: 
        !           976: 3.10.  The POST command
        !           977: 
        !           978: 3.10.1.  POST
        !           979: 
        !           980:    POST
        !           981: 
        !           982:    If posting is allowed, response code 340 is returned to indicate that
        !           983:    the article to be posted should be sent. Response code 440 indicates
        !           984:    that posting is prohibited for some installation-dependent reason.
        !           985: 
        !           986:    If posting is permitted, the article should be presented in the
        !           987:    format specified by RFC850, and should include all required header
        !           988:    lines. After the article's header and body have been completely sent
        !           989:    by the client to the server, a further response code will be returned
        !           990:    to indicate success or failure of the posting attempt.
        !           991: 
        !           992:    The text forming the header and body of the message to be posted
        !           993:    should be sent by the client using the conventions for text received
        !           994:    from the news server:  A single period (".") on a line indicates the
        !           995:    end of the text, with lines starting with a period in the original
        !           996:    text having that period doubled during transmission.
        !           997: 
        !           998:    No attempt shall be made by the server to filter characters, fold or
        !           999:    limit lines, or otherwise process incoming text.  It is our intent
        !          1000:    that the server just pass the incoming message to be posted to the
        !          1001:    server installation's news posting software, which is separate from
        !          1002:    this specification.  See RFC850 for more details.
        !          1003: 
        !          1004:    Since most installations will want the client news program to allow
        !          1005:    the user to prepare his message using some sort of text editor, and
        !          1006:    transmit it to the server for posting only after it is composed, the
        !          1007:    client program should take note of the herald message that greeted it
        !          1008:    when the connection was first established. This message indicates
        !          1009:    whether postings from that client are permitted or not, and can be
        !          1010:    used to caution the user that his access is read-only if that is the
        !          1011:    case. This will prevent the user from wasting a good deal of time
        !          1012:    composing a message only to find posting of the message was denied.
        !          1013:    The method and determination of which clients and hosts may post is
        !          1014:    installation dependent and is not covered by this specification.
        !          1015: 
        !          1016: 3.10.2.  Responses
        !          1017: 
        !          1018:    240 article posted ok
        !          1019:    340 send article to be posted. End with <CR-LF>.<CR-LF>
        !          1020:    440 posting not allowed
        !          1021:    441 posting failed
        !          1022: 
        !          1023: 
        !          1024: 
        !          1025: Kantor & Lapsley                                               [Page 18]
        !          1026: 
        !          1027: 
        !          1028: 
        !          1029: RFC 977                                                    February 1986
        !          1030: Network News Transfer Protocol
        !          1031: 
        !          1032: 
        !          1033:    (for reference, one of the following codes will be sent upon initial
        !          1034:    connection; the client program should determine whether posting is
        !          1035:    generally permitted from these:) 200 server ready - posting allowed
        !          1036:    201 server ready - no posting allowed
        !          1037: 
        !          1038: 3.11.  The QUIT command
        !          1039: 
        !          1040: 3.11.1.  QUIT
        !          1041: 
        !          1042:    QUIT
        !          1043: 
        !          1044:    The server process acknowledges the QUIT command and then closes the
        !          1045:    connection to the client.  This is the preferred method for a client
        !          1046:    to indicate that it has finished all its transactions with the NNTP
        !          1047:    server.
        !          1048: 
        !          1049:    If a client simply disconnects (or the connection times out, or some
        !          1050:    other fault occurs), the server should gracefully cease its attempts
        !          1051:    to service the client.
        !          1052: 
        !          1053: 3.11.2.  Responses
        !          1054: 
        !          1055:    205 closing connection - goodbye!
        !          1056: 
        !          1057: 3.12.  The SLAVE command
        !          1058: 
        !          1059: 3.12.1.  SLAVE
        !          1060: 
        !          1061:    SLAVE
        !          1062: 
        !          1063:    Indicates to the server that this client connection is to a slave
        !          1064:    server, rather than a user.
        !          1065: 
        !          1066:    This command is intended for use in separating connections to single
        !          1067:    users from those to subsidiary ("slave") servers.  It may be used to
        !          1068:    indicate that priority should therefore be given to requests from
        !          1069:    this client, as it is presumably serving more than one person.  It
        !          1070:    might also be used to determine which connections to close when
        !          1071:    system load levels are exceeded, perhaps giving preference to slave
        !          1072:    servers.  The actual use this command is put to is entirely
        !          1073:    implementation dependent, and may vary from one host to another.  In
        !          1074:    NNTP servers which do not give priority to slave servers, this
        !          1075:    command must nonetheless be recognized and acknowledged.
        !          1076: 
        !          1077: 3.12.2.  Responses
        !          1078: 
        !          1079:    202 slave status noted
        !          1080: 
        !          1081: 
        !          1082: Kantor & Lapsley                                               [Page 19]
        !          1083: 
        !          1084: 
        !          1085: 
        !          1086: RFC 977                                                    February 1986
        !          1087: Network News Transfer Protocol
        !          1088: 
        !          1089: 
        !          1090: 4.  Sample Conversations
        !          1091: 
        !          1092:    These are samples of the conversations that might be expected with
        !          1093:    the news server in hypothetical sessions.  The notation C: indicates
        !          1094:    commands sent to the news server from the client program; S: indicate
        !          1095:    responses received from the server by the client.
        !          1096: 
        !          1097: 4.1.  Example 1 - relative access with NEXT
        !          1098: 
        !          1099:    S:      (listens at TCP port 119)
        !          1100: 
        !          1101:    C:      (requests connection on TCP port 119)
        !          1102:    S:      200 wombatvax news server ready - posting ok
        !          1103: 
        !          1104:    (client asks for a current newsgroup list)
        !          1105:    C:      LIST
        !          1106:    S:      215 list of newsgroups follows
        !          1107:    S:      net.wombats 00543 00501 y
        !          1108:    S:      net.unix-wizards 10125 10011 y
        !          1109:            (more information here)
        !          1110:    S:      net.idiots 00100 00001 n
        !          1111:    S:      .
        !          1112: 
        !          1113:    (client selects a newsgroup)
        !          1114:    C:      GROUP net.unix-wizards
        !          1115:    S:      211 104 10011 10125 net.unix-wizards group selected
        !          1116:            (there are 104 articles on file, from 10011 to 10125)
        !          1117: 
        !          1118:    (client selects an article to read)
        !          1119:    C:      STAT 10110
        !          1120:    S:      223 10110 <[email protected]> article retrieved - statistics
        !          1121:            only (article 10110 selected, its message-id is
        !          1122:            <[email protected]>)
        !          1123: 
        !          1124:    (client examines the header)
        !          1125:    C:      HEAD
        !          1126:    S:      221 10110 <[email protected]> article retrieved - head
        !          1127:            follows (text of the header appears here)
        !          1128:    S:      .
        !          1129: 
        !          1130:    (client wants to see the text body of the article)
        !          1131:    C:      BODY
        !          1132:    S:      222 10110 <[email protected]> article retrieved - body
        !          1133:            follows (body text here)
        !          1134:    S:      .
        !          1135: 
        !          1136:    (client selects next article in group)
        !          1137: 
        !          1138: 
        !          1139: Kantor & Lapsley                                               [Page 20]
        !          1140: 
        !          1141: 
        !          1142: 
        !          1143: RFC 977                                                    February 1986
        !          1144: Network News Transfer Protocol
        !          1145: 
        !          1146: 
        !          1147:    C:      NEXT
        !          1148:    S:      223 10113 <[email protected]> article retrieved - statistics
        !          1149:            only (article 10113 was next in group)
        !          1150: 
        !          1151:    (client finishes session)
        !          1152:    C:      QUIT
        !          1153:    S:      205 goodbye.
        !          1154: 
        !          1155: 4.2.  Example 2 - absolute article access with ARTICLE
        !          1156: 
        !          1157:    S:      (listens at TCP port 119)
        !          1158: 
        !          1159:    C:      (requests connection on TCP port 119)
        !          1160:    S:      201 UCB-VAX netnews server ready -- no posting allowed
        !          1161: 
        !          1162:    C:      GROUP msgs
        !          1163:    S:      211 103 402 504 msgs Your new group is msgs
        !          1164:            (there are 103 articles, from 402 to 504)
        !          1165: 
        !          1166:    C:      ARTICLE 401
        !          1167:    S:      423 No such article in this newsgroup
        !          1168: 
        !          1169:    C:      ARTICLE 402
        !          1170:    S:      220 402 <[email protected]> Article retrieved, text follows
        !          1171:    S:      (article header and body follow)
        !          1172:    S:      .
        !          1173: 
        !          1174:    C:      HEAD 403
        !          1175:    S:      221 403 <[email protected]> Article retrieved, header follows
        !          1176:    S:      (article header follows)
        !          1177:    S:      .
        !          1178: 
        !          1179:    C:      QUIT
        !          1180:    S:      205 UCB-VAX news server closing connection.  Goodbye.
        !          1181: 
        !          1182: 4.3.  Example 3 - NEWGROUPS command
        !          1183: 
        !          1184:    S:      (listens at TCP port 119)
        !          1185: 
        !          1186:    C:      (requests connection on TCP port 119)
        !          1187:    S:      200 Imaginary Institute News Server ready (posting ok)
        !          1188: 
        !          1189:    (client asks for new newsgroups since April 3, 1985)
        !          1190:    C:      NEWGROUPS 850403 020000
        !          1191: 
        !          1192:    S:      231 New newsgroups since 03/04/85 02:00:00 follow
        !          1193: 
        !          1194: 
        !          1195: 
        !          1196: Kantor & Lapsley                                               [Page 21]
        !          1197: 
        !          1198: 
        !          1199: 
        !          1200: RFC 977                                                    February 1986
        !          1201: Network News Transfer Protocol
        !          1202: 
        !          1203: 
        !          1204:    S:      net.music.gdead
        !          1205:    S:      net.games.sources
        !          1206:    S:      .
        !          1207: 
        !          1208:    C:      GROUP net.music.gdead
        !          1209:    S:      211 0 1 1 net.music.gdead Newsgroup selected
        !          1210:            (there are no articles in that newsgroup, and
        !          1211:            the first and last article numbers should be ignored)
        !          1212: 
        !          1213:    C:      QUIT
        !          1214:    S:      205 Imaginary Institute news server ceasing service.  Bye!
        !          1215: 
        !          1216: 4.4.  Example 4 - posting a news article
        !          1217: 
        !          1218:    S:      (listens at TCP port 119)
        !          1219: 
        !          1220:    C:      (requests connection on TCP port 119)
        !          1221:    S:      200 BANZAIVAX news server ready, posting allowed.
        !          1222: 
        !          1223:    C:      POST
        !          1224:    S:      340 Continue posting; Period on a line by itself to end
        !          1225:    C:      (transmits news article in RFC850 format)
        !          1226:    C:      .
        !          1227:    S:      240 Article posted successfully.
        !          1228: 
        !          1229:    C:      QUIT
        !          1230:    S:      205 BANZAIVAX closing connection.  Goodbye.
        !          1231: 
        !          1232: 4.5.  Example 5 - interruption due to operator request
        !          1233: 
        !          1234:    S:      (listens at TCP port 119)
        !          1235: 
        !          1236:    C:      (requests connection on TCP port 119)
        !          1237:    S:      201 genericvax news server ready, no posting allowed.
        !          1238: 
        !          1239:            (assume normal conversation for some time, and
        !          1240:            that a newsgroup has been selected)
        !          1241: 
        !          1242:    C:      NEXT
        !          1243:    S:      223 1013 <[email protected]> Article retrieved; text separate.
        !          1244: 
        !          1245:    C:      HEAD
        !          1246:    C:      221 1013 <[email protected]> Article retrieved; head follows.
        !          1247: 
        !          1248:    S:      (sends head of article, but halfway through is
        !          1249:            interrupted by an operator request.  The following
        !          1250:            then occurs, without client intervention.)
        !          1251: 
        !          1252: 
        !          1253: Kantor & Lapsley                                               [Page 22]
        !          1254: 
        !          1255: 
        !          1256: 
        !          1257: RFC 977                                                    February 1986
        !          1258: Network News Transfer Protocol
        !          1259: 
        !          1260: 
        !          1261:    S:      (ends current line with a CR-LF pair)
        !          1262:    S:      .
        !          1263:    S:      400 Connection closed by operator.  Goodbye.
        !          1264:    S:      (closes connection)
        !          1265: 
        !          1266: 4.6.  Example 6 - Using the news server to distribute news between
        !          1267:       systems.
        !          1268: 
        !          1269:    S:      (listens at TCP port 119)
        !          1270: 
        !          1271:    C:      (requests connection on TCP port 119)
        !          1272:    S:      201 Foobar NNTP server ready (no posting)
        !          1273: 
        !          1274:    (client asks for new newsgroups since 2 am, May 15, 1985)
        !          1275:    C:      NEWGROUPS 850515 020000
        !          1276:    S:      235 New newsgroups since 850515 follow
        !          1277:    S:      net.fluff
        !          1278:    S:      net.lint
        !          1279:    S:      .
        !          1280: 
        !          1281:    (client asks for new news articles since 2 am, May 15, 1985)
        !          1282:    C:      NEWNEWS * 850515 020000
        !          1283:    S:      230 New news since 850515 020000 follows
        !          1284:    S:      <[email protected]>
        !          1285:    S:      <[email protected]>
        !          1286:    S:      <[email protected]>
        !          1287:    S:      .
        !          1288: 
        !          1289:    (client asks for article <[email protected]>)
        !          1290:    C:      ARTICLE <[email protected]>
        !          1291:    S:      220 <[email protected]> All of article follows
        !          1292:    S:      (sends entire message)
        !          1293:    S:      .
        !          1294: 
        !          1295:    (client asks for article <[email protected]>
        !          1296:    C:      ARTICLE <[email protected]>
        !          1297:    S:      220 <[email protected]> All of article follows
        !          1298:    S:      (sends entire message)
        !          1299:    S:      .
        !          1300: 
        !          1301:    (client asks for article <[email protected]>
        !          1302:    C:      ARTICLE <[email protected]>
        !          1303:    S:      220 <[email protected]> All of article follows
        !          1304:    S:      (sends entire message)
        !          1305:    S:      .
        !          1306: 
        !          1307: 
        !          1308: 
        !          1309: 
        !          1310: Kantor & Lapsley                                               [Page 23]
        !          1311: 
        !          1312: 
        !          1313: 
        !          1314: RFC 977                                                    February 1986
        !          1315: Network News Transfer Protocol
        !          1316: 
        !          1317: 
        !          1318:    (client offers an article it has received recently)
        !          1319:    C:      IHAVE <[email protected]>
        !          1320:    S:      435 Already seen that one, where you been?
        !          1321: 
        !          1322:    (client offers another article)
        !          1323:    C:      IHAVE <[email protected]>
        !          1324:    S:      335 News to me!  <CRLF.CRLF> to end.
        !          1325:    C:      (sends article)
        !          1326:    C:      .
        !          1327:    S:      235 Article transferred successfully.  Thanks.
        !          1328: 
        !          1329:    (or)
        !          1330: 
        !          1331:    S:      436 Transfer failed.
        !          1332: 
        !          1333:    (client is all through with the session)
        !          1334:    C:      QUIT
        !          1335:    S:      205 Foobar NNTP server bids you farewell.
        !          1336: 
        !          1337: 4.7.  Summary of commands and responses.
        !          1338: 
        !          1339:    The following are the commands recognized and responses returned by
        !          1340:    the NNTP server.
        !          1341: 
        !          1342: 4.7.1.  Commands
        !          1343: 
        !          1344:    ARTICLE
        !          1345:    BODY
        !          1346:    GROUP
        !          1347:    HEAD
        !          1348:    HELP
        !          1349:    IHAVE
        !          1350:    LAST
        !          1351:    LIST
        !          1352:    NEWGROUPS
        !          1353:    NEWNEWS
        !          1354:    NEXT
        !          1355:    POST
        !          1356:    QUIT
        !          1357:    SLAVE
        !          1358:    STAT
        !          1359: 
        !          1360: 4.7.2.  Responses
        !          1361: 
        !          1362:    100 help text follows
        !          1363:    199 debug output
        !          1364: 
        !          1365: 
        !          1366: 
        !          1367: Kantor & Lapsley                                               [Page 24]
        !          1368: 
        !          1369: 
        !          1370: 
        !          1371: RFC 977                                                    February 1986
        !          1372: Network News Transfer Protocol
        !          1373: 
        !          1374: 
        !          1375:    200 server ready - posting allowed
        !          1376:    201 server ready - no posting allowed
        !          1377:    202 slave status noted
        !          1378:    205 closing connection - goodbye!
        !          1379:    211 n f l s group selected
        !          1380:    215 list of newsgroups follows
        !          1381:    220 n <a> article retrieved - head and body follow 221 n <a> article
        !          1382:    retrieved - head follows
        !          1383:    222 n <a> article retrieved - body follows
        !          1384:    223 n <a> article retrieved - request text separately 230 list of new
        !          1385:    articles by message-id follows
        !          1386:    231 list of new newsgroups follows
        !          1387:    235 article transferred ok
        !          1388:    240 article posted ok
        !          1389: 
        !          1390:    335 send article to be transferred.  End with <CR-LF>.<CR-LF>
        !          1391:    340 send article to be posted. End with <CR-LF>.<CR-LF>
        !          1392: 
        !          1393:    400 service discontinued
        !          1394:    411 no such news group
        !          1395:    412 no newsgroup has been selected
        !          1396:    420 no current article has been selected
        !          1397:    421 no next article in this group
        !          1398:    422 no previous article in this group
        !          1399:    423 no such article number in this group
        !          1400:    430 no such article found
        !          1401:    435 article not wanted - do not send it
        !          1402:    436 transfer failed - try again later
        !          1403:    437 article rejected - do not try again.
        !          1404:    440 posting not allowed
        !          1405:    441 posting failed
        !          1406: 
        !          1407:    500 command not recognized
        !          1408:    501 command syntax error
        !          1409:    502 access restriction or permission denied
        !          1410:    503 program fault - command not performed
        !          1411: 
        !          1412: 4.8.  A Brief Word about the USENET News System
        !          1413: 
        !          1414:    In the UNIX world, which traditionally has been linked by 1200 baud
        !          1415:    dial-up telephone lines, the USENET News system has evolved to handle
        !          1416:    central storage, indexing, retrieval, and distribution of news.  With
        !          1417:    the exception of its underlying transport mechanism (UUCP), USENET
        !          1418:    News is an efficient means of providing news and bulletin service to
        !          1419:    subscribers on UNIX and other hosts worldwide.  The USENET News
        !          1420: 
        !          1421: 
        !          1422: 
        !          1423: 
        !          1424: Kantor & Lapsley                                               [Page 25]
        !          1425: 
        !          1426: 
        !          1427: 
        !          1428: RFC 977                                                    February 1986
        !          1429: Network News Transfer Protocol
        !          1430: 
        !          1431: 
        !          1432:    system is discussed in detail in RFC 850.  It runs on most versions
        !          1433:    of UNIX and on many other operating systems, and is customarily
        !          1434:    distributed without charge.
        !          1435: 
        !          1436:    USENET uses a spooling area on the UNIX host to store news articles,
        !          1437:    one per file. Each article consists of a series of heading text,
        !          1438:    which contain the sender's identification and organizational
        !          1439:    affiliation, timestamps, electronic mail reply paths, subject,
        !          1440:    newsgroup (subject category), and the like.  A complete news article
        !          1441:    is reproduced in its entirety below.  Please consult RFC 850 for more
        !          1442:    details.
        !          1443: 
        !          1444:       Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site
        !          1445:       sdcsvax.UUCP
        !          1446:       Posting-Version: version B 2.10.1 6/24/83 SMI; site unitek.uucp
        !          1447:       Path:sdcsvax!sdcrdcf!hplabs!qantel!ihnp4!alberta!ubc-vision!unitek
        !          1448:       !honman
        !          1449:       From: [email protected] (Man Wong)
        !          1450:       Newsgroups: net.unix-wizards
        !          1451:       Subject: foreground -> background ?
        !          1452:       Message-ID: <[email protected]>
        !          1453:       Date: 25 Sep 85 23:51:52 GMT
        !          1454:       Date-Received: 29 Sep 85 09:54:48 GMT
        !          1455:       Reply-To: [email protected] (Hon-Man Wong)
        !          1456:       Distribution: net.all
        !          1457:       Organization: Unitek Technologies Corporation
        !          1458:       Lines: 12
        !          1459: 
        !          1460:       I have a process (C program) which generates a child and waits for
        !          1461:       it to return.  What I would like to do is to be able to run the
        !          1462:       child process interactively for a while before kicking itself into
        !          1463:       the background so I can return to the parent process (while the
        !          1464:       child process is RUNNING in the background).  Can it be done?  And
        !          1465:       if it can, how?
        !          1466: 
        !          1467:       Please reply by E-mail.  Thanks in advance.
        !          1468: 
        !          1469:       Hon-Man Wong
        !          1470: 
        !          1471: 
        !          1472: 
        !          1473: 
        !          1474: 
        !          1475: 
        !          1476: 
        !          1477: 
        !          1478: 
        !          1479: 
        !          1480: 
        !          1481: Kantor & Lapsley                                               [Page 26]
        !          1482: 
        !          1483: 
        !          1484: 
        !          1485: RFC 977                                                    February 1986
        !          1486: Network News Transfer Protocol
        !          1487: 
        !          1488: 
        !          1489: 5.  References
        !          1490: 
        !          1491:    [1]  Crocker, D., "Standard for the Format of ARPA Internet Text
        !          1492:         Messages", RFC-822, Department of Electrical Engineering,
        !          1493:         University of Delaware, August, 1982.
        !          1494: 
        !          1495:    [2]  Horton, M., "Standard for Interchange of USENET Messages",
        !          1496:         RFC-850, USENET Project, June, 1983.
        !          1497: 
        !          1498:    [3]  Postel, J., "Transmission Control Protocol- DARPA Internet
        !          1499:         Program Protocol Specification", RFC-793, USC/Information
        !          1500:         Sciences Institute, September, 1981.
        !          1501: 
        !          1502:    [4]  Postel, J., "Simple Mail Transfer Protocol", RFC-821,
        !          1503:         USC/Information Sciences Institute, August, 1982.
        !          1504: 
        !          1505: 6.  Acknowledgements
        !          1506: 
        !          1507:    The authors wish to express their heartfelt thanks to those many
        !          1508:    people who contributed to this specification, and especially to Erik
        !          1509:    Fair and Chuq von Rospach, without whose inspiration this whole thing
        !          1510:    would not have been necessary.
        !          1511: 
        !          1512: 7.  Notes
        !          1513: 
        !          1514:    <1> UNIX is a trademark of Bell Laboratories.
        !          1515: 
        !          1516: 
        !          1517: 
        !          1518: 
        !          1519: 
        !          1520: 
        !          1521: 
        !          1522: 
        !          1523: 
        !          1524: 
        !          1525: 
        !          1526: 
        !          1527: 
        !          1528: 
        !          1529: 
        !          1530: 
        !          1531: 
        !          1532: 
        !          1533: 
        !          1534: 
        !          1535: 
        !          1536: 
        !          1537: 
        !          1538: Kantor & Lapsley                                               [Page 27]
        !          1539: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.