FTS-0004        EchoMail Specification

This document is directly derived from the documentation of

-------------------------------------------------------------------------------

                          The Conference Mail System

                                      By
                                 Bob Hartman
                      Sysop of FidoNet(tm) node 132/101

                 (C) Copyright 1986,87, Spark Software, Inc.

                             427-3 Amherst Street
                             CS  2032, Suite  232
                             Nashua,  N.H.  03061

                             ALL RIGHTS RESERVED.

-------------------------------------------------------------------------------

version 3.31 of 12 December, 1987.

With Bob Hartman's kind consent, copying for the purpose of technological
research and advancement is allowed.


-------------------------------------------------------------------------------
-------------------------------------------------------------------------------


    WHAT IS THE CONFERENCE MAIL SYSTEM?

         Conference Mail  is a  technique to  permit several  nodes  on  a
         network to  share a  message base,  similar  in  concept  to  the
         conferences available on many of the computer services, but it is
         most closely related to the Usenet system consisting of more than
         8,000 systems  world wide. All systems sharing a given conference
         see any  messages entered  into the  conference  by  any  of  the
         participating systems.  This can  be implemented in such a way as
         to be  totally transparent  to the users of a particular node. In
         fact, they  may not  even be  aware of  the network being used to
         move their  messages about from node to node! Unfortunately, this
         has its  disadvantages also  - most  users who  are not  educated
         about Conference  Mail do  not realize  the messages  transmitted
         cost MANY  sysops (system  operators) money,  not just  the local
         sysop. This  is an important consideration in Conference Mail and
         should not be taken lightly.  In a conference with 100 systems as
         participants the cost per message can get quite high.

         The Conference  Mail System is designed to operate in conjunction
         with a  FidoNet compatible  mail server.  The currently supported
         mail servers  are Fido(tm),  SEAdog(tm), Opus, and Dutchie. Since
         the mail  server is  a prerequisite  to using the Conference Mail
         System, it  will be  assumed you  already have  your mail  server
         operating correctly  on your   system, and you are connected into
         FidoNet or a compatible network.


    HISTORY OF THE CONFERENCE MAIL SYSTEM

         In late  1985, Jeff  Rush, a  Fido  sysop  in  Dallas,  wanted  a
         convenient means  of sharing  ideas with the other Dallas sysops.
         He created  a system  of programs  he called  Echomail,  and  the
         Dallas sysops' Conference was born.

         Within a  short time  sysops in other areas began hearing of this
         marvelous new  gadget and  Echomail took  on a  life of  its own.
         Today, a  scant year and a half later, the FidoNet public network
         boasts a myriad of conferences varying in size from the dozen-or-
         so participants  in the  FidoNet  Technical  Standards  Committee
         Conference  to   the  Sysops'  Conference  with  several  hundred
         participants. It  is not  uncommon for a node to carry 30 or more
         conferences and share those conferences with 10 or more nodes.


    HOW IT WORKS

         The Conference  Mail System  is functionally  compatible with the
         original Echomail utilities.  In general, the process is:

         1. A  message is  entered into  a designated  area on  a  FidoNet
         compatible system.

         2. This message is "Exported" along with some control information
         to each system "linked" to the conference through the originating
         system.

         3. Each  of the  receiving systems  "Import" the message into the
         proper Conference Mail area.

         4. The receiving systems then "Export" these messages, along with
         additional control  information,  to  each  of  their  conference
         links.

         5. Return to step 3.

         As you  can see,  the method  is quite  simple -  in general.  Of
         course, following  the steps  literally would mean messages would
         never stop being Exported and transmitted to other systems.  This
         obviously would  not be  desired or  the  network  would  quickly
         become overburdened.  The information  contained in  the 'control
         information' section  is used  to prevent  transmitting the  same
         message more than once to a single system.


    CONFERENCE MAIL MESSAGE CONTROL INFORMATION

         There are  five pieces  of control  information associated with a
         Conference  Mail  message.  Some  are  optional,  some  are  not.
         Normally this information is never entered by the person creating
         the  message.   The  following   control  fields   determine  how
         Conference Mail is handled:

         1. Area line

              This is  the first  line of  a conference  mail message. Its
              actual appearance is:

                                    AREA:CONFERENCE

              Where CONFERENCE is the name of the conference. This line is
              added when  a conference  is  being  "Exported"  to  another
              system. It  is based upon information found in the AREAS.BBS
              (configuration) File  for the  designated message area. This
              field is  REQUIRED by  the receiving  system to  "Import"  a
              message into the correct Conference Mail area.

         2. Tear Line

              This line is near the end of a message and consists of three
              dashes (---)  followed by  an  optional  program  specifier.
              This is  used to show the first program used to add Echomail
              compatible control information to the message. The tear line
              generated by Conference Mail looks like:

                                   --- <a small product-specific banner>

              This  field   is  optional   for  most  Echomail  compatible
              processors, and  is added  by the  Conference Mail System to
              ensure complete  compatibility. Some systems will place this
              line in  the message  when it  is first  created, but  it is
              normally added when the message is first "exported."

         3. Origin line

              This line  appears near  the bottom of a message and gives a
              small amount  of  information  about  the  system  where  it
              originated. It looks like:

                     * Origin: The Conference Mail BBS (1:132/101)

              The "  * Origin:  " part  of the  line is  a constant field.
              This is followed by the name of the system as taken from the
              AREAS.BBS file  or a  file named  ORIGIN located  in the DOS
              directory of  the  designated  message  area.  The  complete
              network address  (1:132/101 in  this case)  is added  by the
              program inserting  the line.  This field is generated at the
              same time  as the  tear line,  and therefore  may either  be
              generated at  the time  of  creation  or  during  the  first
              "export"  processing.   Although  the  Origin  line  is  not
              required by  all Echomail  processors, it  is added  by  the
              Conference Mail System to ensure complete compatibility.


         4. Seen-by Lines

              There can  be many  seen-by lines  at the  end of Conference
              Mail messages,  and they  are the real "meat" of the control
              information. They  are used  to  determine  the  systems  to
              receive the exported messages. The format of the line is:

                          SEEN-BY: 132/101 113 136/601 1014/1

              The net/node  numbers correspond  to the net/node numbers of
              the systems having already received the message. In this way
              a message  is never  sent to a system twice. In a conference
              with many  participants the  number of  seen-by lines can be
              very large.   This line is added if it is not already a part
              of the  message, or added to if it already exists, each time
              a message  is exported  to other systems. This is a REQUIRED
              field, and  Conference Mail  will not  function correctly if
              this field  is not put in place by other Echomail compatible
              programs.

         5. PATH Lines

              These are  the last  lines in  a Conference Mail message and
              are a  new addition,  and therefore  is not supported by all
              Echomail processors. It appears as follows:

                                 ^aPATH: 132/101 1014/1

              Where the  ^a stands  for Control-A  (ASCII character 1) and
              the net/nodes  listed correspond  to  those  systems  having
              processed the  message before it reached the current system.
              This is  not the  same as  the seen-by  lines, because those
              lines list  all systems  the message has been sent to, while
              the path line contains all systems having actually processed
              the message.  This is not a required field, and few echomail
              processors currently  support it,  however it  can  be  used
              safely with  any other  system, since  the line(s)  will  be
              ignored. For  a discussion  on how  the  path  line  can  be
              helpful, see the "Advanced Features" section of this manual.


    METHODS OF SENDING CONFERENCE MAIL

         To this  point the  issue of how Conference Mail is actually sent
         has been glossed over entirely. The phrase has been, "the message
         is exported  to another  system."   What exactly  does this mean?
         Well, for starters lets show what is called the "basic" setup:

         In this setup exported mail is placed into the FidoNet mail area.
         Each message   exported  from a  Conference  Mail  area  has  one
         message generated  for each  receiving system.  This mail is then
         sent the  same as any other network mail. When Echomail was first
         created this was the only way mail could be sent.

         The "basic"  method has some disadvantages. First, since Echomail
         has grown so large it is not uncommon to get 200 new messages per
         day imported  into various message bases. It is also not uncommon
         for a  system to  be exporting  messages to 4 or 5 other systems.
         Simple arithmetic  shows 800-1000  messages per day would be sent
         in normal  netmail! This  puts a tremendous strain on any netmail
         system, not  to mention transmission time and the resultant phone
         charges. When this limitation of Echomail was first noticed a lot
         of people started scratching their heads wondering what to do. If
         a  solution  could  not  be  found  it  appeared  Echomail  would
         certainly overrun the capabilities of FidoNet.

         Thom Henderson  (from System Enhancement Associates) came up with
         the original  ARCmail program.  Having previously written the ARC
         file archiving  and compression  program,  he  knew  the  savings
         achievable by  having all  of the netmail messages placed in .ARC
         format for  transmission. As  a byproduct, the messages no longer
         appeared in  the netmail  area,  but  were  included  in  a  file
         attached to  a message  (see your  FidoNet mailer manual for file
         attaches).  In   this  way  the  tremendous  number  of  messages
         generated, and the phone bill problems were both solved.

         Unfortunately, ARCmail  required the  messages to first be placed
         into the  netmail area  before it  could be  run. In  effect,  it
         caused the  messages to  be scanned once when they were exported,
         once during  the ARCmail  phase, once when ARCmail was run at the
         other end  to get  the messages out of .ARC format, and once when
         those messages  were later  imported into  a message  base on the
         receiving system.  The Conference Mail System solves this problem
         by eliminating  the ARCmail  program. Conference  Mail builds the
         ARCmail files during Export, and unpacks them during Import. This
         way  messages   are  exported  directly  to  ARCmail  style  file
         attaches, and imported directly from ARCmail style file attaches.
         The scanning  phases between importing and exporting messages are
         totally removed and processing time is proportionally reduced.

         This is  now the  most common  method for sending Conference Mail
         between systems.  The overhead  involved in  doing it  during the
         importing and exporting phases is much less than what is involved
         if ARCmailing  is not  utilized. This was a primary consideration
         in the  design and  implementation of the Conference Mail System,
         and as  a result  the entire system is optimized for this type of
         use.  Please  refer  to  the  Import  and  Export  functions  for
         specifics on how to use the ARCmailing feature.


    CONFERENCE TOPOLOGY

         The  way   in  which  systems  link  together  for  a  particular
         conference is  called the "conference topology."  It is important
         to know  this structure  for two  reasons: 1)  It is important to
         have a  topology which  is  efficient  in  the  transfer  of  the
         Conference Mail  messages, and  2) It  is  important  to  have  a
         topology which  will not  cause systems  to see the same messages
         more than once.

         Efficiency can  be measured  in a  number  of  ways;  least  time
         involved for all systems to receive a message, least cost for all
         systems to receive a message, and fewest phone calls required for
         all systems  to receive  a message  are all  valid indicators  of
         efficiency. Users  of Echomail compatible systems have determined
         (through trial  and error)  the best  measure of  efficiency is a
         combination  of  all  three  of  the  measurements  given  above.
         Balancing the equation is not trivial, but some guidelines can be
         given:

              1. Never have two systems attempting to send Conference mail
              to each other at the same time. This results in "collisions"
              that will  cause both  systems to  fail. To  avoid this, one
              system should  be responsible  for polling  while the  other
              system is holding mail. This arrangement can alternate based
              upon various  criteria, but  both systems  should  never  be
              attempting to call each other at the same time.

              2. Have  nodes form  "stars" for  distribution of Conference
              Mail. This arrangement has several nodes all receiving their
              Conference Mail from the same system. In general the systems
              on the  "outside"  of  the  star  poll  the  system  on  the
              "inside". The  system on  the "inside"  in turn  polls other
              systems to  receive the Conference Mail that is being passed
              on to the "outside" systems.

              3. Utilize  fully connected  polygons with  a few  vertices.
              Nodes can  be connected in a triangle (A sends to B and C, B
              sends to  A and  C, C sends to A and B) or a fully connected
              square (all  corners of  the square send to all of the other
              corners). This  method is useful for getting Conference Mail
              messages to each node as quickly as possible.


         All of  these efficiency  guidelines have to be tempered with the
         guidelines dealing  with keeping  duplicate messages  from  being
         exported. Duplicates  will occur  in any  topology that  forms  a
         closed polygon  that is not fully connected. Take for example the
         following configuration:

                                     A ----- B
                                     |       |
                                     |       |
                                     C ----- D

         This square  is a  closed polygon that is not fully connected. It
         is capable of generating duplicates as follows:

              1. A message is entered on node A.

              2. Node  A exports  the message to node B and node C placing
              the seen-by for A, B, and C in the message as it does so.

              3. Node  B sees that node D is not listed in the seen-by and
              exports the message to node D.

              4. Node  C sees that node D is not listed in the seen-by and
              exports the message to node D.

         At this  point node  D has  received the  same message  twice - a
         duplicate was  generated. Normally  a "dup-ring"  will not  be as
         simple as  a square.  Generally it  will be caused by a system on
         one end  of a  long chain  accidentally connecting to a system on
         the other end of the chain. This causes the two ends of the chain
         to become connected, forming a polygon.

         In FidoNet  this problem  is reduced somewhat by having "Regional
         Echomail Coordinators"  (RECS) that try to keep track of Echomail
         connections within  their regions  of the  world. A  further rule
         which is  followed is  that only  the RECS  are allowed  to  make
         inter-regional connections for the larger conferences. In return,
         the RECS  have established  a very  efficient topology which gets
         messages from  coast to  coast, and onto over 200 systems in less
         than 24  hours. If  no one were willing to follow the rules, then
         this system  would collapse,  but due to the excellent efficiency
         it has remained intact for over a year.


    Why a PATH line?

         As was  previously mentioned,  the PATH  line is a new concept in
         Echomail. It  stores the  net/node numbers  of each system having
         actually processed  a message.  This  information  is  useful  in
         correcting the  biggest problem  encountered by  nodes running an
         Echomail compatible  system - the problem of finding the cause of
         duplicate messages.  How does  the  PATH  line  help  solve  this
         problem? Take the following path line as an example:

              ^aPATH: 107/6 107/312 132/101

         This  shows  the  message  was  processed  by  system  107/6  and
         transferred to  system 107/312.  It further  shows system 107/312
         transferred the  message to  132/101, and  132/101  processed  it
         again. Now take the following path line as the example:

              ^aPATH: 107/6 107/312 107/528 107/312 132/101

         This shows  the message  having been processed by node 107/312 on
         more than one occasion. Based upon the earlier description of the
         'information control'  fields in  Echomail messages, this clearly
         is an  error in  processing (see  the section  entitled  "How  it
         Works"). This  further shows   node  107/528 as  the  node  which
         apparently processed  the message  incorrectly. In  this case the
         path line  can be  used to quickly locate the source of duplicate
         messages.

         In  a   conference  with  many  participants  it  becomes  almost
         impossible to  determine the  exact topology used. In these cases
         the use of the path line can help a coordinator of the conference
         track any  possible breakdowns in the overall topology, while not
         substantially increasing  the amount  of information transmitted.
         Having this  small amount of information added to the end of each
         message pays  for itself very quickly when it can be used to help
         detect a  topology  problem  causing  duplicate  messages  to  be
         transmitted to each system.

-30-