> Technical Notes > Ricochet Routing 8.3.5 

Bankshot Addressing and Ricochet Routing

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.

 

About GSS

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.

Contact GSS

Global System Services Corporation (GSS)
650 Castro Street, Suite 120-268
Mountain View, CA 94041, U.S.A.
1 (650) 965-8669 phone
1 (650) 965-8679 fax
http://www.gssnet.com
info@gssnet.com


 
Messaging, Directory Services, Groupware


©1995-2005 by Global System Services Corporation (GSS). Portions of this material are copyright ©1995-1999 by Ron Herardian