Subject: Re: preventing loops in bidirectional gateways

From: Ofer Inbar <[email-masked]>
Date: Thu, 4 Mar 1999 12:50:21 -0500 (EST)

On Feb 9, Jacob Palme <[email-masked]> wrote:
> Common methods to stop loops when two mailing lists or
> newsgroups are members of each other (best is to use all or
> several of them):
> 
> (1) Put list name in a "Received" header, recognize it when
>     the message comes back again.
> 
> (2) Store Message-ID of passed messages. (Need only be
>     stored a short time.)
> 
> (3) Store checksum of passed messages. Checksum should be
>     computed so it will not be changed if spaces are changed to
>     tabs, or the reverse, or newlines of various kinds
>     inserted, or character encoding changed from
>     quoted-printable to 8-bit, etc.
> 
> (4) Have mechanism to stop producing bidrectional membership.

The last is my favored method, for the news-mail gateways I run.
Specifically, I set them up like this:

list subscribers' postings     the Usenet
  |                              |
  v                              |
list submission address        peer server
  |                              | (bidirectional news flow)
  v                              |
massaging script --> inews --> local news server <-- local news postings
                                      |
                                      v
                               massaging script --> distribution list

Everything flows through the system in one direction only, and no
loops are possible.  With a little bit of header rewriting, it can be
set up so that it appears to the list users as if there is just one
list.  The To: header on the mail that goes out to the distribution
list has the submission address that actually leads to the posting
gateway, not to the list.  The local news server is the "primary
repository" and every message goes through the news server once.

Later on the same day, he added:
> Someone should write a non-standard, i.e. informational, RFC om how
> to write good mail-news gateways. Would you do it?

So, how widespread is the practice I described?
Is there some informational document describing it?
If not, would it be useful if I wrote such?

  --  Cos (Ofer Inbar)         -- [email-masked] [email-masked]
  --  The Left Bank Operation  -- [email-masked] http://www.leftbank.com/
 A cos is an abstraction for a stream or datagram channel, used in BSD
 and BSD derivatives.  -- Ben Tober <[email-masked]>