by Ron Herardian
April 29, 1993
PURPOSE
The purposes of this technical note are: 1) to
review and clarify ordinary bankshot addressing; 2) to provide a solution
to the limitations of bankshot addressing, primarily the problem that
over two hundred local users at the same post office cannot be addressed
using bankshot addressing (see SIMPLE RICOCHET ROUTING); and 3) to provide
a centralized method of setting up and administering enterprise-wide
mailing lists that does not require separate mailing lists to be maintained
at each post office (see COMPLEX RICOCHET ROUTING).
DEFINITIONS
BANKSHOT ADDRESSING:
A method of addressing messages to mailing lists based on indirect addressing.
Bankshot addressing allows messages to be addressed and delivered to
more than two hundred users. The cc:Mail message header allows 4K of
data, or about two hundred ordinary cc:Mail addresses. This makes it
impossible to directly address a message to more than approximately
two hundred users at the same time. Bankshot addressing bypasses this
limitation by delivering messages to multiple mailing lists each of
which contains less than 200 user names.
CC:MAIL DIRECTORY:
The list of users stored in a cc:Mail post office. The cc:Mail directory
is used by cc:Mail users to address messages and is managed by the cc:Mail
administrator using a cc:Mail administration program. The examples in
this document will be based on the cc:Mail for DOS administration program,
ADMIN.EXE.
CC:ROUTER
(formerly cc:Mail Gateway): A program that moves messages from one cc:Mail
post office to another. When cc:Router delivers a message it looks first
to see if the name that the message is addressed to is the name of a
bulletin board, then to see if the name is the name of a public mailing
list, and finally to see if the name is a user name in the cc:Mail directory
(see cc:Mail Gateway version 3.21 manual page 92).
COMPLEX RICOCHET ROUTING:
The ricochet routing method developed for centrally administered, enterprise-wide
mailing lists. complex ricochet routing requires two router post offices
(one primary and one secondary) in addition to a third post offices
where the ricochet mailing lists reside (see A TYPE B RICOCHET MAILING
LIST). In complex ricochet routing the cc:Router must originate at the
[PRIMARY] ROUTER POST OFFICE and not at the post office where the ricochet
mailing lists reside (see SIMPLE RICOCHET ROUTING).
DESTINATION POST OFFICE:
The post office where a message will ultimately be delivered, regardless
of the route of the message (see 'originating post office'). For the
purposes of this technical note, the term destination post office will
generally be used to refer to the post office where the ricochet mailing
lists are located.
GLOBAL MAILING LIST
(or 'GML'): A term previously used in ordinary bankshot addressing to
mean a mailing list containing the names of all local users at that
post office where the list actually resides. In this document a mailing
list of local users at a given post office containing the names of all
users at that post office will be referred to as a "mailing list
of local users."
LOCAL USER:
At the post office where a users' mailbox is stored that user's cc:Mail
location is "local" and they have a location status of 'L'
in the cc:Mail directory of their home post office.
MAILING LIST:
An ordinary cc:Mail public mailing list containing the names of cc:Mail
users, and possibly the mailing list names of other mailing lists. Messages
addressed to a mailing list are delivered to all of the users on the
list.
MAILING LIST NAME (or LIST NAME):
The name of a public mailing list (private mailing lists are not referred
to in this document). A mailing list name can be added to a cc:Mail
post office directory in the same way that a user name is added (See
cc:Mail Gateway version 3.21 manual page 97).
MAILING LIST OF LOCAL USERS: A mailing
list containing the names of all local users at the post office where
the mailing list is (see 'global mailing list').
ORIGINATING POST OFFICE:
The post office where a given message is created and from which it is
originally sent. The term 'originating post office' is used in this
document as a point of reference when following the route of a message
from one post office to another (see destination post office).
RICOCHET MAILING LIST: Either
(TYPE A) a mailing list that also contains the list name of a router
mailing list; or (TYPE B) an ordinary mailing list that is included
in a complex ricochet routing scenario.
RICOCHET POST OFFICE:
A post office where the series of mailing lists used for ricochet routing
reside.
RICOCHET ROUTING: A
method of addressing and routing messages to mailing lists and mailing
list names that causes messages to be sent back and forth between two
or three post offices in such a way as to deliver messages sequentially
to a series of mailing lists.
ROUTER MAILING LIST (or PRIMARY ROUTER
MAILING LIST): A mailing list at a routing
post office containing the mailing list names of a mailing lists at
a destination post office and, in COMPLEX RICOCHET ROUTING, the mailing
list names of SECONDARY ROUTER MAILING LISTS.
ROUTING HUB POST OFFICE:
A post office used to route messages between post offices. One or more
cc:Routers originate at the routing hub post office and call to other
(usually slave) post offices.
ROUTER POST OFFICE (or PRIMARY ROUTER
POST OFFICE): A post office set up to route
messages between other post offices. A routing post office does not
require any local users.
SECONDARY ROUTER MAILING LIST:
A ROUTER MAILING LIST located at a SECONDARY ROUTER POST OFFICE used
in COMPLEX RICOCHET ROUTING.
SECONDARY ROUTER POST OFFICE:
The second ROUTER POST OFFICE used in COMPLEX RICOCHET ROUTING where
SECONDARY ROUTER MAILING LISTS are located.
SIMPLE RICOCHET ROUTING:
A ricochet routing configuration using only one routing post office
and where less than 200 recipients are 'r' (remote) users at the destination
post office. In this scenario the cc:Router may originate at either
of the two post offices (see COMPLEX RICOCHET ROUTING).
SUPER MAILING LIST (or 'SML'): A
term used in bankshot addressing meaning a mailing list name in the
cc:Mail directory of a routing post office containing the names of mailing
lists of local users at other post offices. In this document the term
'router mailing list' will be used to indicate a mailing list containing
the names of other mailing lists.
OVERVIEW OF BANKSHOT ADDRESSING
Bankshot addressing was designed to work around the limit of having
200 users per mailing list. The method of the work-around was to create
a mailing list at each of the cc:Mail post offices in a given mail system
that contained all the names of the local users for that post office
(see 'global mailing list' above). A routing post office would then
be set up containing a 'super mailing list'. The super mailing list,
or SML, contained the names of the global mailing lists at each of the
other post offices. This works because a message can be addressed to
the name of a mailing list just as an ordinary message can be addressed
to a user.
BANKSHOT ADDRESSING BASICS
For a message originating at one post office to be delivered to a mailing
list at another post office the name of the mailing list at the destination
post office must be entered into the directory of the originating post
office. The entry appears in the directory of the originating post office
as if it were a user whose mailbox is located at the destination post
office, i.e., as if it was a local user at the destination post office.
EXAMPLE
To send a message from a post office, po1, to a user named "John
Valentine" who was a local user at a post office, po2, the user
name "John Valentine" would be added to the cc:Mail directory
of po1 and would appear in the DOS version of the cc:Mail administration
program with the following characteristics:
Directory of po1
Name Loc. Address Comments
Valentine, John r po2 user at po2
Directory of po2
Name Loc. Address Comments
Valentine, John L local user
For a mailing list name the situation is very similar except that at
the destination post office, rather than being a local user, the addressee
is an ordinary cc:Mail mailing list.
Directory of po1
Name Loc. Address Comments
#mailing_list r po2 mailing list at po2
NOTE: At the destination post office, po2, #mailing_list
is not listed in the cc:Mail directory because it is not a user but
an ordinary cc:Mail mailing list called #mailing_list.
At po2 there would be an ordinary mailing list, called #mailing_list.
In this example a message sent from po1 addressed to #mailing_list at
po2 would be delivered to all of the users on the mailing list at po2.
Note that the list itself actually exists at po2 and not at po1. At
po1 the mailing list name is entered into the cc:Mail directory as if
it were a regular cc:Mail user name. Notice that the mailing list name
is not entered into the cc:Mail directory at po2 where the mailing list
actually exists.
FULL SCALE BANKSHOT ADDRESSING
Ordinarily, bankshot addressing is set up so that each post office in
a mail system has a mailing list of its own local users. The names of
these lists are entered into the cc:Mail directory of a router post
office and a mailing list is created containing these list names. The
mailing list name of this list (a 'super mailing list') is the entered
into the cc:Mail directories of all the other post offices. A message
addressed to the list name of the mailing list at the router post office
will go to the router post office and will be delivered to the mailing
list containing the list names of all the other mailing lists. Finally,
the message gets delivered to each of the mailing lists of local users
at the other post offices.
NOTE: Usually a special post office is created just for message routing.
Often this post office is an existing routing 'hub' post office. Normally,
a separate router post office with its own cc:Mail gateway is used.
SETTING UP BANKSHOT ADDRESSING
1. At each post office, create a mailing list containing the names of
all the local users.
NOTE: Users can use these mailing lists directly like any other mailing
list to send messages to everyone at their post office.
2. At a router post office enter the names of the mailing lists at each
post office into the cc:Mail directory as 'r' (remote) users with addresses
reflecting the post offices where the mailing lists exist.
EXAMPLE
Directory of router_po:
Name: Loc Address Comments
#po1_list r po1 mailing list at po1
#po2_list r po2 mailing list at po2
NOTE: The names #po1_list and #po2_list are the
exact names of ordinary public mailing lists at po1 and po2. These lists
contain the names of all the local users at their respective post offices.
3. Create a mailing list at the router post office containing the list
names for each of the other post offices. This list should be named
in such a way as to indicate its function, #all_users, for example.
4. Add the name of the mailing list at the router post office to the
cc:Mail directories of the other post offices.
5. Advise users of the procedure for addressing messages to the 'super
mailing list' by selecting the list name from their cc:Mail directory.
HOW TO USE BANKSHOT ADDRESSING
Users can send messages to everyone in their cc:Mail system by addressing
them to the list name #all_users in their cc:Mail directory. Notice
that this is not the same procedure as using an ordinary mailing list.
EXAMPLE POST OFFICE 1
Mailing lists at example_po1:
Mailing list name: Contents of mailing list:
#po1_local_users All users at example po1
cc:Mail directory of example_po1:
Name: Loc Address Comments
#all_users r router router mailing list
EXAMPLE POST OFFICE 2
Mailing lists at example_po2:
Mailing list name: Contents of mailing list:
#po2_local_users All users at example post office 2
cc:Mail directory of example_po2:
Name: Loc Address Comments
#all_users r router router mailing list
ROUTER POST OFFICE
Mailing lists at router post office:
Mailing list name: Contents of mailing list
#all_users #po1_local_users
#po2_local_users
cc:Mail directory of router post office:
Name: Loc Address Comments
#po1_local_users r po1 list name at po1
#po2_local_users r po2 list name at po2
EXPLANATION
To clarify how this works, let's follow the route of a cc:Mail message
through this scenario:
1. A message is addressed to the list name of the 'super mailing list',
#all_users, in the cc:Mail directory of an originating post office.
2. At the router post office, the message is delivered to the mailing
list #all_users. On this list are the list names of the mailing lists
of local users at each of the other post offices (the 'global mailing
lists' #po1_local_users, and #po2_local_users).
3. The massage is delivered by cc:Router to the mailing lists of local
users at po1 and po2.
LIMITATIONS OF BANKSHOT ADDRESSING
There are two minor drawbacks and limitations to traditional bankshot
addressing:
PROBLEM 1: If any one mailing list of local
users has more than 200 users on it, the original problem comes up
again, and messages cannot be delivered to all of them at the same
time.
SOLUTION: SIMPLE RICOCHET ROUTING.
PROBLEM 2: The mailing lists of local users have to be separately
administered at each post office.
SOLUTION: COMPLEX RICOCHET ROUTING.
RICOCHET ROUTING
Ricochet routing, a method of sequential bankshot addressing, was originally
developed to handle situations where there were more than 200 local
users at a single post office (simple ricochet routing). A modified
version of ricochet routing can be used to set up centrally administered
and controlled mailing lists for any size organization (complex ricochet
routing).
SIMPLE RICOCHET ROUTING
Simple ricochet routing requires one post office where there are over
200 local users and one router post office. The first step in setting
up simple ricochet routing is to divide up all of the local users into
groups of less than 200 and then to create a series of mailing lists
containing less than 200 users each. In simple ricochet routing some
'r' user may be included in the mailing lists also but the number of
'r' users included in the series of mailing lists must be well under
200. The mailing lists in the series will be referred to as 'ricochet
mailing lists'.
Ricochet routing delivers a message to a series of mailing lists. This
is done by addressing a message in such a way as to have it sent back
and forth between a router post office and the post office where the
series mailing lists reside. Each time the cc:Router delivers the message
to mailing list a copy of that message is sent back to the router post
office then delivered to the next mailing list, etc..
NOTE: The technical reason why the number of 'r' users is limited in
simple ricochet routing to well under 200 is that when the cc:Router
delivers a message to a mailing list, the names of 'r' users, as opposed
to local users, are enumerated in the cc:Mail message header. This is
so that local users can see who, other than the users at their own post
office, got the message. For ricochet routing, however, the consequence
of this is that the header of the message that is
returned to the router post office will contain the cc:Mail names and
addresses of the 'r' users that the message has been delivered to. On
delivery of the message to one of the series of mailing lists the names
of the 'r' users accumulate in the message header so that if there are
close to 200 of them, the 4K message header buffer will overflow and
the message will become undeliverable. This is the reason why complex
ricochet routing was developed.
To set up simple ricochet routing, the list names of the ricochet mailing
lists are entered into the cc:Mail directory of a router post office
and a series of router mailing lists are created. Each router mailing
list contains only the list name of one ricochet mailing lists at the
originating post office. The first router mailing list contains the
list name of the second ricochet mailing list at the originating post
office and the second router mailing list contains the list name of
the third ricochet mailing list at the originating post office, etc.
The list names of the router mailing lists are then entered into the
cc:Mail directory of the originating post office. Next, the list name
of the first router mailing list is added to the first ricochet mailing
list, and the name of the second router mailing list is added to the
second ricochet mailing list, etc.
When messages are sent to the first ricochet mailing list they are delivered
immediately to the users on that list but also sent to the first router
mailing list at the router post office. When messages are delivered
to the first router mailing list, they are sent back to the originating
post office, addressed to the second ricochet mailing list. When messages
addressed to the second ricochet mailing list are delivered, they are
also sent to the second router mailing list at the router post office,
etc. The last ricochet mailing list in the series does not contain the
name of a router mailing list because when a message is delivered to
that mailing list it has been delivered to all of the users of the series
of mailing lists.
HOW TO SET UP SIMPLE RICOCHET ROUTING
1. Create a series of ricochet mailing lists at the originating post
office. Each list should contain less that 200 users.
2. Add the list names of the ricochet mailing lists to the cc:Mail directory
of a router post office.
3. Create a series of router mailing lists at the router post office.
The first router mailing list will contain the list name of the second
ricochet mailing list; the second router mailing list will contain the
list name of the third ricochet mailing list, etc.
4. Add the list names of the router mailing lists to the cc:Mail directory
of the originating post office.
5. Add the list name of the first router mailing list to the first ricochet
mailing list at the originating post office; add the list name of the
second ricochet mailing list to the second ricochet mailing list at
the originating post office, etc.
6. Add the list name of the first ricochet mailing list to the cc:Mail
directories of other post offices.
7. Advise users of procedures to:
a) Address messages to the list name of the first ricochet mailing list
in their cc:Mail directory in order to address messages to everyone
in the mail system;
NOTE: If ricochet routing is set up exactly as described in the example,
local users at the originating post office will address messages directly
to the first ricochet mailing list, rather than using a list name in
the cc:Mail directory, as in bankshot addressing. To create a standard
procedure for all users an initial router mailing list must be created.
This is discussed below.
b) Use the forward feature to send a reply to everyone by addressing
the forwarded message to the list name of the first ricochet mailing
list.
EXAMPLE
ORIGINATING POST OFFICE
Mailing Lists at Originating Post Office
Mailing List Name Contents of lists:
#users_a-h 166 user names + list name of #router_list1
#users_i-p 166 user names + list name of #router_list2
#users_q-z 168 user names
cc:Mail Directory of Originating Post Office:
Name Loc Address Comments
#router_list1 r router router list 1
#router_list2 r router router list 2
ROUTER POST OFFICE
Mailing Lists at Router Post Office:
Mailing List Name Contents of mailing lists
#router_list1 list name #users_i-p
#router_list2 list name #users_q-z
cc:Mail Directory of Router Post Office:
Name Loc Address Comments
#users_i-p r originating po second ricochet list
#users_q-z r originating po final ricochet list
NOTE: The naming conventions of the list names in this example of simple
ricochet routing are intended for illustrative purposes only. In a real-world
implementation of ricochet routing the lists should be named in a way
that would prevent users from accidentally sending a message to all
or part of the series of ricochet mailing lists. In complex ricochet
routing the ricochet mailing lists do not contain the list names of
any router mailing lists, hence the lists may be used separately either
directly or via bankshot addressing without accidentally causing the
message to ricochet down the series of mailing lists.
HOW TO USE RICOCHET ROUTING
In the example above users could send messages to everyone in their
cc:Mail system by addressing them to the list name #all_users in their
cc:Mail directories. Notice that this is not the same procedure as using
an ordinary mailing list. Users at the ricochet post office may directly
address messages to the first ricochet mailing list, however they would
never directly address a message any other ricochet mailing lists (see
above note). To create a standard procedure for all users an initial
router mailing lists must be used.
EXPLANATION
To clarify how this works, let's follow the route of a cc:Mail message
through this scenario:
1. At the originating post office, a user addresses a message to the
first ricochet mailing list (or a user at another post office addresses
a message to the list name of the first ricochet mailing list in their
cc:Mail directory), #users_a-h.
2. The message is delivered to all of the first 166 users on the first
ricochet mailing list, but also on this list is the list name of the
first router mailing list at the router post office, router_list1 (see
above example).
3. At the router post office, the message is delivered to the first
router mailing list. On this list is the list name of the second ricochet
mailing list, #users_i-p.
4. Back at the originating post office, the message is now delivered
to next 166 users on the second ricochet mailing list, #users_i-p, but
also on this list is the list name of the second router mailing list,
#router_list2.
5. Again at the router post office, the message is delivered to the
second router mailing list, #router_list2. On this list is the list
name of the third and final ricochet mailing list at the originating
post office, #users_q-z.
6. Finally, at the originating post office, the message is delivered
to the last 168 users on the third ricochet mailing list, #users_q-z.
This mailing list does not contain the list name of a router mailing
list because it is the last mailing list in the ricochet series.
LIMITATIONS OF RICOCHET ROUTING
PROBLEM: Users whose names are on ricochet mailing lists other than
the first one cannot directly reply to a message because replies will
only go to the names of users on the ricochet mailing list that the
user who replies is on and to all the users further down in the series
of ricochet mailing lists.
SOLUTION: To reply to everyone, users must use the forward feature of
cc:Mail and forward their reply to the list name of the first ricochet
mailing list.
PROBLEM: If ricochet addressing is set up exactly as described in the
example above, users at the ricochet post office will address messages
directly to the first ricochet mailing list, while users at other post
offices will address messages to the list name of first ricochet mailing
list in their cc:Mail directory. The problem is, that there are two
different procedures for users depending upon the post office where
their mailbox is located.
SOLUTION: This problem can be solved by adding one additional router
mailing list at the router post office that points to the first ricochet
mailing list at the originating post office. The name of this initial
router mailing list can then be used by all users to address messages
using the same procedure.
NOTE: In the example above, the ricochet mailing list was used directly
by local users at the originating post office and messages addressed
to this mailing list cascaded down the whole series of ricochet mailing
lists. Technically, this is optimal for a single post office with over
200 local users because at the time that the message is sent, it is
immediately delivered to the users on the first ricochet mailing list
rather than being sent to the router post office first.
PROBLEM: If ricochet addressing is set up exactly as described in the
example above, it's possible for local users at the originating post
to accidentally address messages to one of the ricochet mailing lists
resulting in a partial mailing to the ricochet mailing lists after the
one to which the message was addressed.
SOLUTION: First, assign names to the ricochet mailing lists that indicate
that their function is internal to cc:Mail. An ordinary mailing list
might be called #Sales, so the ricochet mailing lists should be given
names that will prevent addressing errors. For example, the ricochet
mailing lists might be called #~ricochet_1, #~ricochet_2, etc. It would
be difficult for a user to know who would be on these lists hence an
addressing error would be very unlikely.
COMPLEX RICOCHET ROUTING
Complex ricochet routing offers two important advantages over simple
ricochet routing. First, complex ricochet routing allows for the mailing
lists at the ricochet hub post office to used independently because
messages addressed to specific mailing lists are no longer forwarded
to the next mailing list in the ricochet series. Second, it allows for
central administration of enterprise-wide mailing lists. In complex
ricochet routing, two router post offices are used and a dedicated cc:Mail
router is required.
CONCEPTUAL OVERVIEW
Three post offices are used to construct the complex ricochet routing
loop. The post office where the ordinary mailing lists exist is referred
to as the ricochet hub post office (this will usually be an ordinary
routing hub post office). The first router post office is referred to
as the ricochet master post office and it is at this post office that
the dedicated cc:Mail router will run. The third post office is referred
to as the ricochet slave post office.
The idea is that, as in simple ricochet routing a message will be sent
back and forth between a series of mailing lists at two post offices,
except that in complex ricochet routing, the two post offices are the
ricochet master and the ricochet slave. Each time a message is delivered
to the ricochet master post office one copy is sent from the ricochet
master a mailing list at the ricochet hub and another copy is sent to
the ricochet slave. The message bounces back and forth through a series
of mailing lists between the ricochet master and the ricochet slave
until the ricochet master has sent a copy of the message to all of the
mailing lists at the ricochet hub post office.
Mailing lists at the ricochet hub post office will be referred to as
ricochet mailing lists (see RICOCHET MAILING LIST TYPE B). Mailing lists
at the ricochet master post office will be referred to as router mailing
lists. Mailing lists at the ricochet slave post office will be referred
to as shadow mailing lists.
Messages will be cycled through a series of mailing lists at the ricochet
slave and ricochet router mailing lists at the ricochet master. Each
time a message returns to the ricochet master it is sent back to both
the next shadow mailing list at the ricochet slave (actually a router
mailing list) and to the next ricochet mailing list at the ricochet
hub (ordinary mailing lists).
NOTE: The reason why a second router post office and a dedicated cc:Mail
router are required for complex ricochet routing has to do with the
enumeration of 'r' user addresses in the message header. Whenever the
router delivers a message to a mailing list the cc:Mail addresses of
'r' users are enumerated in the message header. If simple ricochet routing
is used, the header of a message will fill up with addresses just like
a mailing list with over 200 addresses. Similarly, even with a complex
ricochet routing configuration, if the cc:Mail router is located at
the same post office as the ricochet mailing lists, i.e., at the ricochet
hub post office, messages returned to the master-slave ricochet routing
loop via the ricochet hub post office, will have the 'r' addressees
enumerated in the message header and after a few passes through the
ricochet routing loop the message header buffer will overflow. This
is because a cc:Mail router at the ricochet hub post office would actually
use only one copy of a message to both deliver to a ricochet mailing
list and to pass on to the ricochet slave, thus the ricochet slave would
get a copy of the message with the 'r' users enumerated in the message
header. This is why ricochet routing requires a dedicated cc:Mail router.
Global System Services Corporation (GSS) is the leading
provider of consulting and professional services for large-scale and
distributed infrastructure systems such as email and messaging, directory
services, groupware, and wireless solutions. GSS customers include Fortune
500 companies, large services providers and telecom companies, government
agencies, major messaging product vendors, and innovative technology
startups.
GSS provides a complementary suite of services including
strategic technology consultation and competitive vendor and product
analysis, product and system architecture and design, system development
deployment, customization, and testing, technical support, email migration,
and other IT services. GSS has been directly responsible for some of
the largest global systems and solutions and counts as customers many
of the largest companies in the world.
From its offices in the Silicon Valley California, GSS delivers services and solutions
to customers worldwide through a network of mobile consultants and qualified
GSS Affiliates. With industry certified professionals on staff, GSS
is a Qualified
Lotus Business Partner, a Certified
Microsoft Solution Provider (MCSP), a Principal Partner in the Sun Partner Advantage program and a member of the Sun Software Partner Council, as well as a member of key industry organizations.