Document: FSC-0063
Version:  001
Date:     10-May-1992




                      A Proposal for FidoNet style messages
                                   Jem Miller
                               1:147/33.0 @FidoNet




Status of this document:

        This FSC suggests a proposed protocol for the FidoNet(r) community,
        and requests discussion and suggestions for improvements.
        Distribution of this document is unlimited.

        Fido and FidoNet are registered marks of Tom Jennings and Fido
        Software.




        I. Introduction

             The current message strucures that are  transmitted  between
        systems is fast becoming outdated.  Dupe checking, path checking,
        and zone aware routing are all areas of weekness in  the  current
        format.  This  proposal  both  simplifies  the current processing
        needed of mail tossers,  and eliminates the worst  problem  areas
        and limitations of the current methods.

             Currently,  Seen-By  lines  and  Path lines are appended and
        maintained in all EchoMail type message sent into FidoNet technol-
        ogy networks.  The original intention of Seen-By's  was  to  help
        eliminate  duplicate messages,  and give a sort of "tracking his-
        tory" of each piece of EchoMail.  Path lines tell us what systems
        have  actually  processed the mail and sent it on to another sys-
        tem, and offer some audit checking in case of problems.

             Unfortunately,  these systems can not reliably detect and/or
        correct duplicate messges,  or point to the offending system with
        any surity. In recent times, a MSGID kludge has been used, requir-
        ing the maintaining of databases (one per echo usually)  to  test
        each message for duplication.  While this procedure cures much of
        the duplication problems,  it does nothing for the audit trail of
        each  message.  Further,  it needlessly slows the tossing/packing
        process, and promotes disk fragmentation problems further.

             Yet another consideration as we enter wider  acceptance  and
        useage  of  our  electronic  media  is overhead.  Overhead can be
        viewed in many ways,  two of the most important are Cost per mes-
        sage  to transmit,  and disk space used for needless information.
        The proposed changes outlined below address all  of  these  items
        and more, giving a means of expanding into the future.

        II. Proposed Changes

             Seen-By lines will be greatly changed as compared to the cur-
        rent  structure,  Path  lines  will be eliminated,  and the MSGID
        kludge will also be eliminated.  Tear lines and origin lines will
        remain unchanged.  INTL kludges, FMPT kludges, and others will be
        eliminated.

             This audit system is not new in concept.  In fact it is cur-
        rently used in a similar manner in the popular TICK and FLEA file
        echo processors.  Each system that processes a piece of mail adds
        its node number into an audit list.  The audit list is similar to
        current Seen-By's only in that node numbers are listed at the end
        of each message.

             Node  numbers added to the audit list are FULL node numbers,
        ie.

        Zone:Net/Node.Point

                                        1


             A system ALWAYS adds itself to the  Audit  list,  but  NEVER
        adds  any  other  system address to the list.  The mail processor
        must be capable of automatically zone matching its own  node  ad-
        dress to that of the system it is currently sending a message to.
        For  example:  If I am sending an echo to zone 1 AND zone 42,  my
        mail processor would add the following Audit entries:

        For each zone 1 message:
        1:147/33.0
        For each zone 42 message:
        42:1036/33.0

             My system then sends the message to the  correct  receivers.
        If  the receiver is at the end of a line (not sending the area to
        any other systems),  it simply checks the audit  list  to  ensure
        that the senders address is listed only once, and tosses that mes-
        sage to the correct area.

             ONLY  SYSTEMS  THAT  RE-SEND A MESSAGE add themselves to the
        Audit list.  A system NEVER adds itself to the Audit list if  its
        sending system is listed more than once.  In this case,  the mes-
        sage is a duplicate, and is killed.

             The Audit list is NEVER sorted,  or disturbed in any way ex-
        cept to add a new node to the end of the list.

             There are no databases to maintain,  no path lines to check,
        and best of all,  only SENDING systems are  listed.  In  national
        echos,  it is not uncommon to see 5 to 8 lines of Seen-By's and 2
        or 3 path lines in EACH message.  Even though including the  full
        zone  address  (including points) adds to the length of node num-
        bers,  far fewer node numbers  are  listed.  In  the  case  of  a
        problem,   the   offending  system  can  be  quickly  and  easily
        idetified, and the problem corrected.

             Security is also enhanced by allowing the mail processor  to
        check  the  sending  system against its send-to list in the areas
        file to determine that it was received from the correct node  ad-
        dress (the senders address can be cross checked by the Audit list
        as well as the packet header).



        III. Implementation



        A. Packet Header

             The  current  packet  header  needs  no  changes (except the
        packet type identifier). This allows full backward compatibility.



        B. Packed Messages

             No change to packed message structures or procedures.



        C. MSGID Line
             Eliminated.


                                        2


        D. Message Body

             Unchanged.



        E. Tear Lines

             Unchanged.



        F. Origin Lines

             Unchanged.




        G. Seen-By's

             Replaced by Audit list.  The Audit line begins with a unique
        tag:

        AUDIT:

        followed by a space (ASCII #32). Each node number is seperated by
        a  space.  Each Audit line is terminated by a carriage return and
        optionally a linefeed (ASCII #13 and #10).  The  length  of  each
        Audit  line  follows  current  Seen-By  line  specifications  (79
        characters).

             Node numbers in the Audit list are full  Zone:Net/Node.Point
        numbering. The maximum feild length per entry is 23 characters of
        text up to and including:

        65535:65535/65535.65535



        H. Path Lines

             Eliminated.




        IV. Operations



        A. Sender

             The originating system begins the Audit sequence by creating
        the  initial  Audit  line  and  adding  his node number after the
        AUDIT: tag.

        AUDIT: 1:147/33.0

             Then packs the message to the receiving system  as  it  nor-
        mally would.



                                        3

             A  system  that  is  re-sending the message to other systems
        first completes the Receiver requirements in step B  below.  Then
        the  system  adds  its own node number (zone matched) to the LAST
        Audit line of the message (or creates a new line if needed).  The
        sender then packs the message as it normally would.  This process
        is repeated for each message,  and each system  that  recieves  a
        copy  of the message.  Zone gates may or may not be listed in the
        Audit list to correctly identify any problems (open to ruling).

 

        B. Receiver

             Upon processing a packet,  the receiver scans for the  Audit
        lines as it currently does for a Seen-By line for each message it
        processes.  Each  entry  in the Audit list is checked against the
        LAST entry, as well as its own address, for duplication. Addition-
        ally,  the LAST address is checked against the receivers list  of
        valid  systems  for  that message area to insure that security is
        not breeched.  Optionally,  the receiver may check the address of
        the  packet header against that of the senders Audit entry to en-
        sure correct addressing.

             After all tests are made,  the message is tossed to the cor-
        rect message area.  If the receiver is to send the message to any
        other systems, it then becomes the sender and procedes as in step
        A above.



        V. Qualifications

             I am a programmer by trade,  and hold a degree in Electronic
        Engineering.  I attended Oklahoma State University, and MIT. I am
        the author of the SuperComm bulletin board system which includes:

        SCBBS     The BBS program
        SCMAIL    The Mail processor
        SCED      The offline Message editor
        SCSET     Set-up utility
        SCNET     Network interface (Front-end mailer).

             The SuperComm system holds a current FidoNet  product  code,
        and  is fully compliant in its mail handling.  A working model of
        ScMail including these changes is available  for  review.  Source
        code ideas are also available for the proposed changes, either in
        C or Turbo Pascal.















                                        4