A Proposal For Sensible New Kludge Lines
========================================
Mark Kimes
FidoNet 1:380/16
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.
MSGTO: This kludge line, together with a MSGID: kludge (see FTS-0009),
would provide full address specs for both the originating and
destination nodes of a netmail message (MSGTO should _not_ be
used in echo mail). Its format is simple:
^aMSGTO: <FTN address>
MSGTO (coupled with MSGID) would eliminate the need for the
INTL, FMPT, TOPT and DOMAIN kludges. A MSGTO kludge line should
go just below any MSGID and REPLY kludge lines. See also
discussion on FTN address representation below.
ASSOC: ASSOC introduces a filename that should follow the message (is
associated with the message). Format is, again, simple:
^aASSOC: <filename>
A message tosser would forward the file along with the message,
if so configured for the AREA: of the message (assuming
echomail) or other criteria. Paths would probably not be useful
in the <filename> field and should not normally be included or
used if found to be present. ASSOC kludge lines should go below
any addressing kludge lines.
SPTH: Clint Adams described this as a "5D, sensible order,
top-of-the-message path" line. I like that. Stands for "Sticky
PaTH." SPTH displaces the current PATH line. Instead of being
located at the bottom of the message, it's located at the top of
the message. Instead of being 2-D (net/node), it's 5-D
(domain#zone:net/node.point). It's sticky like a normal PATH
line so that the size doesn't get outrageous. Because it's 5-D
instead of 2-D it can be used for dupe checking (which a normal
2-D PATH line cannot; is 1/1 Fidonet#1:1/1 or Dufusnet#2:1/1?).
Because it's 5-D we would no longer have to go through hideous
gyrations when gating echo mail from one domain to another; just
let it flow. Using SPTH it becomes trivial to cut SEEN-BYs down
to Tiny Seenbys (only required for backward compatibility with
old mail processors that barf without some SEEN-BYs, and to
protect fully enclosed polygon topology).
SPTH is to be used only in echo mail. It's format is basically:
^aSPTH: <address> <address> ... <address>
SPTH lines, like PATH lines, contain only addresses of mail
processors that actually processed the message. SPTH lines are
specifically not sorted and are "sticky" so that they carry the
least amount of information that will convey a full address when
coupled with preceding addresses. For example, if
1:380/16.0@Fidonet, 1:380/16.1@Fidonet, 1:380/100.0@Fidonet,
1:396/100.0@Fidonet, 2:4177/1.0@Fidonet and 2:4177/1.0@Othernet
processed a message, in that order, you'd have:
Note that point 0 is assumed if missing and that punctuation
*precedes* an address element except in the case of a domain
change (and when the net element is the first change -- this
dictates that domain names begin with an alphabetical
character). This compacts SPTH entries as much as possible for
most typical topologies.
When an SPTH-aware processor forwards a message containing (a)
PATH line(s) but no SPTH line(s), it should create a new SPTH
line (or lines as required; SPTH lines shouldn't get longer than
80 characters, including terminating carriage return) containing
"fleshed-out" addresses from the PATH line(s), then add itself.
If this is done at all zone/domain gates, the SPTH will always
be current even if intermediate nodes are not SPTH-aware. In
the event an SPTH-aware processor receives a message containing
both SPTH line(s) and PATH line(s), it should concatenate the
"fleshed-out" addresses from the PATH line(s) to the SPTH
line(s), then add itself. The PATH line(s) may then be
discarded from the message. When exporting new messages, only a
SPTH line should be created; no PATH line should be generated.
Tiny Seenbys should be added at the end of the message for the
reasons noted above.
Note that all the kludge lines above are in actual use and have been for
some time; they do work, and work as presented. Code is available on
request, but implementation is trivial (only SPTH takes any real work at
all).
The current convention for representing an FTN address has become:
zone:net/node[.point]@domain
I propose we change this to:
domain#zone:net/node[.point]
Why? It's all in one order, highest to lowest; it's consistent. "@" is
used, in the former method, in a way rather opposed to normal usage in
network addressing.
While we're on the subject of domains, let's knock off using
"fidonet.org" in FTN addresses. That only means something in Internet.
It's going to gum up the works for FTN domains, where we'll want things
like "fidonet.eu" to mean Fidonet Europe some day.