Path: usenet.cise.ufl.edu!huron.eel.ufl.edu!usenet.eel.ufl.edu!uky.edu!news.campus.mci.net!calwebnntp!cezanne.op.net!op.net!newsfeed.direct.ca!logbridge.uoregon.edu!nntp.teleport.com!news.teleport.com!not-for-mail
From: Russ Allbery <
[email protected]>
Newsgroups: comp.lang.perl.announce,comp.lang.perl.modules
Subject: ANNOUNCE: News::Gateway 0.40 (mail <-> news gatewaying support)
Followup-To: comp.lang.perl.modules
Date: 2 Jan 1998 23:57:47 GMT
Organization: The Eyrie
Lines: 112
Sender:
[email protected]
Approved:
[email protected] (comp.lang.perl.announce)
Message-ID: <
[email protected]>
NNTP-Posting-Host: gadget.cscaper.com
X-Disclaimer: The "Approved" header verifies header information for article transmission and does not imply approval of content.
Xref: usenet.cise.ufl.edu comp.lang.perl.announce:39 comp.lang.perl.modules:875
Ladies and gentlemen, I'm pleased to announce, after almost two years of
work, my robomoderation, moderation support, mail to news gatewaying, and
news to mail gatewaying package has finally reached the alpha release
stage, thanks in large part to the help of Andrew Gierth. And yes, this
means that those of you I've promised support packages based on this
script, sometimes far too long ago, should expect them very soon.
News::Gateway is a Perl module, requiring Perl 5.003 or later. The
distribution at this point includes well over a thousand lines of
documentation, not counting the README, TODO list, and changelogs.
In case you were not previously aware of this project, here is an excerpt
from the README:
Welcome to my attempt to do robomoderation, moderation support, mail to
news gatewaying, and news to mail gatewaying right.
Essentially, robomoderators, moderation support programs, and mail to
news gateways are all the same thing. They take an incoming message,
from either an MTA or from a user filtering program like procmail, or
perhaps even directly from a user's MUA, perform a variety of rewrites
required to turn an RFC 822 message into an RFC 1024 message, possibly
perform a variety of checks and additional rewrites suited to the
particular application, and then hand the message off to a news server.
News to mail gateways just do exactly the same thing in reverse.
From extremely simple procmail hacks through Rich Salz's newsgate
program to the variety of robomoderators and moderation support packages
written (most notably, Igor Chudov's STUMP), a variety of people have
tackled different aspects of this problem, but nearly every effort was
aimed at a particular view or hard-coded various assumptions, and as a
result the wheel has been reinvented a ridiculous number of times.
This is an attempt to generalize out the framework, so that people don't
have to keep writing the same code to read e-mail messages, post
messages, send e-mail messages, and do the common rewrites, and instead
can concentrate on the *interesting* parts, namely the checks and
rewrites they need for their specific application. News::Gateway is
*not* a robomoderator or gateway in and of itself. Rather, it's a
toolkit for *building* robomoderators and gateways that attempts to take
care of all of the nitpicking details for you and drastically decrease
the amount of code you have to write. And if your problem happens to
coincide with one of the supplied example programs, you may not have to
write any code at all.
It furthermore sets up a consistent interface for those additional
checks and rewrites, so once they're done they can be generalized and
included in the News::Gateway distribution and someone else who is
trying to solve the same problem can just use (or work with) the
existing code. This concept of News::Gateway as a library of reusable
modules is inherent in its design.
To give you a general idea, the *entire* rec.arts.comics.creative
moderation system including the front-end robomoderation system and the
posting script used by the human moderators is only 109 lines of code
using this module. (And is included as an example.)
Included in the standard release are the following more specific modules:
anykeyword.al Require articles to have some keyword.
bodyheaders.al Extracts headers from the message body.
cleanbody.al Various standard article body cleaning.
crosspost.al Limit crossposts and followups.
headers.al Rewrite and trim headers.
keywords.al Check for required subject line keywords.
mailpath.al Generates an X-Mail-Path from Received.
mailtonews.al Translate e-mail into a news article.
moosesign.al Sign a post with PGPMoose.
newsgroups.al Logic to build Newsgroups header.
nobinaries.al Detect and reject binary files.
previoushop.al Adds the previous mail hop to the Path.
whitelist.al Check the From line against valid posters.
Furthermore, modules have a well-defined interface and the full
functionality of Andrew Gierth's News::Article class to work with; most
modules end up only being a couple score lines of code.
This module has just been uploaded to CPAN, and is also available at:
<URL:
ftp://ftp.eyrie.org/pub/software/modules/Gateway-0.40.tar.gz>
It also uses Andrew Gierth's excellent News::Article module and my own
PGP::Sign module (for PGPMoose support), both available from CPAN or from:
<URL:
http://www.erlenstar.demon.co.uk/perl/>
<URL:
ftp://ftp.eyrie.org/pub/software/modules/PGP-Sign-0.08.tar.gz>
respectively.
This package is in current use for moderating rec.arts.comics.creative,
and earlier versions of this package have been used as mail to news
gateways at various sites, including Stanford, and for moderating
humanities.philosophy.objectivism.
There is a mailing list available for support and development. From the
README:
If you are interested in being notified of new releases, helping with
development, developing, testing, or using new modules, or even just
getting tips on how to use this module, there is a mailing list
available. To subscribe, send mail to
[email protected] with:
subscribe gateway-users
in the body.
Happy New Year, everyone!
--
#!/usr/bin/perl -- Russ Allbery, Just Another Perl Hacker
$^=q;@!>~|{>krw>yn{u<$$<[~||<Juukn{=,<S~|}<Jwx}qn{<Yn{u<Qjltn{ > 0gFzD gD,
00Fz, 0,,( 0hF 0g)F/=, 0> "L$/GEIFewe{,$/ 0C$~> "@=,m,|,(e 0.), 01,pnn,y{
rw} >;,$0=q,$,,($_=$^)=~y,$/ C-~><@=\n\r,-~$:-u/ #y,d,s,(\$.),$1,gee,print