home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 1400s / rfc1429.txt < prev    next >
Text File  |  1993-02-22  |  18KB  |  451 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                          E. Thomas
  8. Request for Comments: 1429                    Swedish University Network
  9.                                                            February 1993
  10.  
  11.  
  12.                       Listserv Distribute Protocol
  13.  
  14. Status of this Memo
  15.  
  16.    This memo provides information for the Internet community.  It does
  17.    not specify an Internet standard.  Distribution of this memo is
  18.    unlimited.
  19.  
  20. Abstract
  21.  
  22.    This memo specifies a subset of the distribution protocol used by the
  23.    BITNET LISTSERV to deliver mail messages to large amounts of
  24.    recipients.  This protocol, known as DISTRIBUTE, optimizes the
  25.    distribution by sending a single copy of the message over heavily
  26.    loaded links, insofar as topological information is available to
  27.    guide such decisions, and reduces the average turnaround time for
  28.    large mailing lists to 5-15 minutes on the average. This memo
  29.    describes a simple interface allowing non-BITNET mailing list
  30.    exploders (or other bulk-delivery scripts) to take advantage of this
  31.    service by letting the BITNET distribution network take care of the
  32.    delivery.
  33.  
  34. Introduction
  35.  
  36.    Running a mailing list of 1,000 subscribers or more with plain
  37.    "sendmail" while keeping turnaround time to a reasonable level is no
  38.    easy task. Due mostly to its limited bandwidth in the mid-80's,
  39.    BITNET has developed an efficient bulk delivery protocol for its
  40.    mailing lists. Originally introduced in 1986, this protocol was
  41.    refined little by little and now carries 2-6 million mail messages a
  42.    day. In fact, this distribution mechanism implements a general-
  43.    purpose delivery service which can be used by any user of BITNET or
  44.    the Internet. Thus, a simple solution to the "sendmail" turnaround
  45.    problem is to wrap the message and recipient list in a DISTRIBUTE
  46.    envelope and pass it to a BITNET server for delivery.  This may not
  47.    be the best possible solution, but it has the advantage of being easy
  48.    to implement.
  49.  
  50.    In this document we will use the term "production" to refer to the
  51.    normal operation of the mailing list (or bulk delivery application)
  52.    you want to pipe through the DISTRIBUTE service. That is, the
  53.    "production" options are those you should specify once everything is
  54.    tested and you are confident that the setup is working to your
  55.  
  56.  
  57.  
  58. Thomas                                                          [Page 1]
  59.  
  60. RFC 1429              Listserv Distribute Protocol         February 1993
  61.  
  62.  
  63.    satisfaction. In contrast, "test" and "debug" options can be used to
  64.    experiment with the protocol but should not be used for normal
  65.    operation because of the additional bandwidth and CPU time required
  66.    to generate the various informational reports.
  67.  
  68.    Finally, it should be noted that the DISTRIBUTE protocol was
  69.    developed to address a number of issues, some of them relevant only
  70.    to BITNET, and has evolved since 1986 while keeping a compatible
  71.    syntax. For the sake of brevity, this RFC describes only a small
  72.    subset of the available options and syntax. This is why the syntax
  73.    may appear unnecessarily complicated or even illogical.
  74.  
  75. 1. Selecting an entry point into the DISTRIBUTE backbone
  76.  
  77.    The first thing you have to do is to find a suitable site to submit
  78.    your distributions to. For testing, and for testing ONLY, you can
  79.    use:
  80.  
  81.                          LISTSERV@SEARN.SUNET.SE
  82.  
  83.    For production use, however, you should select a DISTRIBUTE site in
  84.    your topological vicinity: it would make no sense to pass your
  85.    distributions from California to a server in Sweden if most of your
  86.    recipients are in the US. If your organization is connected to BITNET
  87.    and your BITNET system is part of the DISTRIBUTE backbone, this ought
  88.    to be your best bet. Otherwise you will want to contact someone
  89.    knowledgeable about BITNET (or the author of this RFC if you have no
  90.    BITNET users). Make sure to run through the following checklist
  91.    before sending any production traffic to the site in question:
  92.  
  93.  
  94.    a. Do you have good connectivity to the host in question? Does the
  95.       host, in general, have decent BITNET connectivity? There are still
  96.       a few sites that insist on using 9.6k leased lines for BITNET in
  97.       spite of having T1 IP access. You will want to avoid them.
  98.  
  99.    b. Send mail to the server with "show version" in the message body
  100.       (not in the subject field, which is ignored). Is the server running
  101.       version 1.7f or higher? If so, it should not have given you the
  102.       following warning,
  103.  
  104.         >>> This server is configured to use PUNCH format for mail <<<
  105.  
  106.       which means that messages with lines longer than 80 characters
  107.       cannot be handled properly. If the software version is less than
  108.       1.7f, the warning will not be present; instead, check the first
  109.       (bottom) "Received:" field. If it does not say "LMail", do not use
  110.       this server as it probably cannot handle messages with long lines.
  111.  
  112.  
  113.  
  114. Thomas                                                          [Page 2]
  115.  
  116. RFC 1429              Listserv Distribute Protocol         February 1993
  117.  
  118.  
  119.       Finally, make sure that the "Master nodes file" is not older
  120.       than 2 months: there are a handful of sites which never update
  121.       their tables due to staffing problems. They cannot be prevented
  122.       from running LISTSERV, but you will certainly want to avoid them.
  123.  
  124.    c. How big is your workload? If you are planning to use the service
  125.       for more than 10,000 daily recipients, you should get permission
  126.       from the LISTSERV administrator, both as a matter of courtesy and
  127.       to hear about any restrictions or regularly scheduled downtime they
  128.       might have. For instance, some universities might not allow large
  129.       distributions during prime time, or they may have several
  130.       DISTRIBUTE machines and will want to make sure you use the "right"
  131.       one.  Send mail to "owner-listserv" at the host in question and
  132.       give an estimate of the amount of daily messages and recipients you
  133.       would like to submit. If your message bounces back with "No such
  134.       local user" or the like, it means the server did not pass the above
  135.       test (b) and you don't want to use it anyway.
  136.  
  137.    An index of sites/hosts which have the required configuration, good
  138.    connectivity, keep their tables up to date and have generally agreed
  139.    to provide this service to anyone in their topological area will be
  140.    published separately in the future.
  141.  
  142. 2. Physical delivery of the DISTRIBUTE request
  143.  
  144.    The distribution request is delivered via SMTP to the e-mail address
  145.    obtained in step 1 (for instance, LISTSERV@SEARN.SUNET.SE). In fact,
  146.    as long as you can somehow get mail to the server's host, you can use
  147.    the service; SMTP is just the most convenient way of doing so.
  148.  
  149. 2.1. Contents of MAIL FROM: field
  150.  
  151.    You should set the MAIL FROM: field to the address of the person who
  152.    maintains your mailing list or, generally speaking, to the address of
  153.    a human being who can take action in case the message fails to reach
  154.    the DISTRIBUTE server's host. This is a very rare occurrence.
  155.  
  156. 2.2. Contents of RCPT TO: field
  157.  
  158.    The RCPT TO: field points to the server's address (for instance,
  159.    LISTSERV@SEARN.SUNET.SE).
  160.  
  161. 2.3. Contents of the RFC822 header
  162.  
  163.    After the DATA instruction, you must supply a valid RFC822 header
  164.    with a "From:" field pointing to the mailbox that should receive
  165.    notification of delivery problems, bounced mail, and so on. This can
  166.    be the same as the MAIL FROM: field, an address of the type "owner-
  167.  
  168.  
  169.  
  170. Thomas                                                          [Page 3]
  171.  
  172. RFC 1429              Listserv Distribute Protocol         February 1993
  173.  
  174.  
  175.    xxxx@yourhost", etc.  DO NOT PUT THE LIST SUBMISSION ADDRESS THERE,
  176.    or you will get mailing loops.
  177.  
  178.    For testing, the "From:" field should point to your own mailbox, so
  179.    that you get the responses from the server.
  180.  
  181.    As long as RFC822 syntax is respected, the only field that matters is
  182.    the "From:" field (or "Sender:", "Resent-From:", etc.). In practice
  183.    this means you can just pipe the distribution request into "mail
  184.    listserv@whatever" and let your mail program build all the headers.
  185.  
  186. 3. Format of the DISTRIBUTE request
  187.  
  188.    The body of the message delivered to LISTSERV defines the recipients
  189.    of the distribution and the text (header + body) of the RFC822
  190.    message you want to have delivered. The request starts with a "job
  191.    card", followed by a DISTRIBUTE command, a list of recipients, and
  192.    finally the message header and body.
  193.  
  194. 3.1. Syntax of the JOB card
  195.  
  196.    The purpose of the JOB card is to make sure that any spurious text
  197.    inserted by mail gateways or the like is flushed and not erroneously
  198.    interpreted as a command. It can optionally be used to associate a
  199.    "job name" with the request, in case you want to use tools to assist
  200.    you in processing the notifications you get from the DISTRIBUTE
  201.    servers when running in test mode. The syntax is as follows:
  202.  
  203.    //jobname JOB ECHO=NO
  204.  
  205.    "jobname" can be anything as long as it does not contain blanks, and
  206.    can be omitted. LISTSERV generally ignores case when parsing
  207.    commands, so you can use "job" or "Job" if you prefer. The ECHO=NO
  208.    keyword is required for production use, to suppress the "resource
  209.    usage summary" you would otherwise get upon completion of your
  210.    delivery. You may want to omit it when testing.
  211.  
  212. 3.2. Syntax of the DISTRIBUTE command
  213.  
  214.    Below the JOB card, you must supply the following line:
  215.  
  216.    DISTRIBUTE MAIL
  217.  
  218.    For production mode, do not specify anything else on that line. When
  219.    testing, you should add ACK=MAIL in order to get an acknowledgement
  220.    confirming the delivery. There are two other useful options:
  221.    DEBUG=YES, which instructs the server to produce a report showing how
  222.    the various recipients will be routed, but without actually
  223.  
  224.  
  225.  
  226. Thomas                                                          [Page 4]
  227.  
  228. RFC 1429              Listserv Distribute Protocol         February 1993
  229.  
  230.  
  231.    delivering the message; and TRACE=YES, which does the same but does
  232.    deliver the message. Before making a "live" test with your actual
  233.    recipients list, you should tack the DEBUG=YES option once to make
  234.    sure you got all the parameters and syntax right, and get a rough
  235.    idea of the efficiency of the distribution (see the section on
  236.    performance).
  237.  
  238. 3.3. Giving the list of recipients
  239.  
  240.    The list of recipients follows the DISTRIBUTE line and is specified
  241.    as follows:
  242.  
  243.    //To DD *
  244.    user1@host1 BSMTP
  245.    user2@host2 BSMTP
  246.    /*
  247.  
  248.    The two lines starting with a "/" have to be copied as-is. Each of
  249.    the lines in between contains the address of one of the recipients,
  250.    followed by a blank and by the word "BSMTP", which indicates that you
  251.    do not want the header rewritten. There are four restrictions:
  252.  
  253.    a. The address must be a plain "local-part@hostname" - no name string,
  254.       no angle bracket, no source route, etc. Bear in mind that the
  255.       DISTRIBUTE server is not in the same domain as you: all the
  256.       addresses should be fully qualified.
  257.  
  258.    b. If the local-part is quoted, it must be quoted from the first word
  259.       on.  Technically, RFC822 allows: Joe."Now@Home".Smith@xyz.edu, but
  260.       for performance reasons this form is not supported. Just quote the
  261.       first word to tell LISTSERV to run the address through the full
  262.       parser: you would write "Joe"."Now@Home".Smith@xyz.edu instead.
  263.  
  264.    c. The local-part of the address may not start with an (unquoted)
  265.       asterisk.  You can bypass this restriction by quoting the local
  266.       part and using a %-hack through the server's host:
  267.       "***JACK***%jack-ws.xyz.edu"@server-host.
  268.  
  269.    d. Blanks are not allowed anywhere in the address.
  270.  
  271.    You can use the pseudo-domain ".BITNET" for BITNET recipients: it is
  272.    always supported within DISTRIBUTE requests.
  273.  
  274. 3.4. Specifying the message text
  275.  
  276.    After the last recipient and the closing "/*", add the following
  277.    line,
  278.  
  279.  
  280.  
  281.  
  282. Thomas                                                          [Page 5]
  283.  
  284. RFC 1429              Listserv Distribute Protocol         February 1993
  285.  
  286.  
  287.    //Data DD *,EOF
  288.  
  289.    followed by the RFC822 message (header + body) that you want
  290.    delivered.  The EOF option indicates that the message header and body
  291.    will extend until the end of the message you are sending to the
  292.    DISTRIBUTE server.  If you are worried about extraneous data being
  293.    appended by a gateway, remove the EOF option, add a closing "/*" line
  294.    after the end of the message, followed by a "// EOJ" card to flush
  295.    any remaining text. This, however, will fail if the message itself
  296.    contains a "/*" line; you would have to insert a space before any
  297.    such line.
  298.  
  299. 4. Examples
  300.  
  301.    Here is an (intentionally short) example to clarify the syntax:
  302.  
  303.    ----- cut here -----
  304.    //Test JOB
  305.    Distribute mail Ack=mail Debug=yes
  306.    //To DD *
  307.    joe@ws-4.xyz.edu BSMTP
  308.    jack@abc.com BSMTP
  309.    jim@tamvm1.bitnet BSMTP
  310.    jill@alpha.cc.buffalo.edu BSMTP
  311.    james@library.rice.edu BSMTP
  312.    /*
  313.    //Data DD *,EOF
  314.    Date:         Tue, 19 Jan 1993 10:57:29 -0500
  315.    From:         Robert H. Smith <RHS@eta.abc.com>
  316.    Subject:      Re: Problem with V5.41
  317.    To:           somelist@some.host.edu
  318.  
  319.    I agree with Jack, V5.41 is not a stable release. I had to fall back
  320.    to V5.40 within 5 minutes of installation...
  321.  
  322.                                            Bob Smith
  323.    ----- cut here -----
  324.  
  325.    Note: some of the hostnames are genuine, but the usernames are all
  326.    fictitious.
  327.  
  328.    You would get the following reply:
  329.  
  330.    --------------------------------------------------------------------
  331.    Job "Test" started on 20 Feb 1993 01:09:40
  332.  
  333.    > Distribute mail ack=mail debug=yes
  334.    Debug trace information:
  335.  
  336.  
  337.  
  338. Thomas                                                          [Page 6]
  339.  
  340. RFC 1429              Listserv Distribute Protocol         February 1993
  341.  
  342.  
  343.    ABC.COM                   goes to SEARN    (213) - single recipient
  344.    ALPHA.CC.BUFFALO.EDU      goes to UBVM     (027) - single recipient
  345.    LIBRARY.RICE.EDU          goes to RICEVM1  (022) - single recipient
  346.    TAMVM1                    goes to TAIVM1   (247) - single recipient
  347.    WS-4.XYZ.EDU              goes to SEARN    (213) - single recipient
  348.  
  349.    Path information:
  350.  
  351.     TAIVM1  : UGA      RICEVM1  TAIVM1
  352.     UBVM    : UGA      UBVM
  353.     RICEVM1 : UGA      RICEVM1
  354.  
  355.    (Debug) Mail forwarded to LISTSERV@UGA      for   3 recipients.
  356.    (Debug) Mail posted via BSMTP to jack@ABC.COM.
  357.    (Debug) Mail posted via BSMTP to joe@WS-4.XYZ.EDU.
  358.  
  359.    Job "Test" ended   on 20 Feb 1993 01:09:40
  360.  
  361.    Summary of resource utilization
  362.    -------------------------------
  363.     CPU time:        0.086 sec                Device I/O:     6
  364.     Overhead CPU:    0.045 sec                Paging I/O:     5
  365.     CPU model:        9221                    DASD model:  3380
  366.    --------------------------------------------------------------------
  367.  
  368.    To actually perform the distribution and get an acknowledgement, you
  369.    would change the first two lines as follows:
  370.  
  371.    ----- cut here -----
  372.    //Test JOB Echo=NO
  373.    Distribute mail Ack=mail
  374.    --------------------
  375.  
  376.    And you would get the following reply:
  377.  
  378.    --------------------------------------------------------------------
  379.    Mail forwarded to LISTSERV@UGA      for   3 recipients.
  380.    Mail posted via BSMTP to jack@ABC.COM.
  381.    Mail posted via BSMTP to joe@WS-4.XYZ.EDU.
  382.    --------------------------------------------------------------------
  383.  
  384.    Finally, by removing the "Ack=mail" keyword you would perform a
  385.    "silent" distribution without any acknowledgement, suitable for
  386.    production mode.
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Thomas                                                          [Page 7]
  395.  
  396. RFC 1429              Listserv Distribute Protocol         February 1993
  397.  
  398.  
  399. 5. Performance
  400.  
  401.    The efficiency of the distribution depends mostly on the quality and
  402.    accuracy of the topological information available to the DISTRIBUTE
  403.    server (and, in some extreme cases, on system load). For BITNET
  404.    recipients, the typical turnaround time for reasonably well connected
  405.    systems is 5-15 minutes. Internet recipients fall in two categories:
  406.    those which can be routed to a machine within or close to the
  407.    recipient's organization (average turnaround time 5-20 minutes), and
  408.    those for which no topological information is available at all. In
  409.    that case the delivery can take much longer, but usually remains
  410.    faster than with a vanilla sendmail setup. At the time being,
  411.    topological information is available for most top-level domains
  412.    outside the US and for many sub-domains of EDU and GOV.
  413.  
  414.    You can measure the efficiency of the distribution using the
  415.    DEBUG=YES option as explained above. Recipients which get forwarded
  416.    to another server usually get delivered within 5-20 minutes (except
  417.    to poorly connected sites or countries, for which not much can be
  418.    done). Recipients which are handled locally are passed to a local
  419.    SMTP agent whose efficiency depends very much on the amount of
  420.    "burst" queries the local name server can handle in quick succession.
  421.  
  422.    A number of projects are currently underway to investigate the
  423.    feasibility of improving the quality of the topological information
  424.    available to the DISTRIBUTE servers for the Internet.
  425.  
  426. Security Considerations
  427.  
  428.    Security issues are not discussed in this memo.
  429.  
  430. Author's Address
  431.  
  432.    Eric Thomas
  433.    Swedish University Network
  434.    Dr.Kristinas vaeg 37B
  435.    100 44 Stockholm, Sweden
  436.  
  437.    E-mail: ERIC@SEARN.SUNET.SE
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450. Thomas                                                          [Page 8]
  451.