mirror of https://github.com/tLDP/LDP
231 lines
6.7 KiB
Plaintext
231 lines
6.7 KiB
Plaintext
<!doctype linuxdoc system>
|
|
|
|
<article>
|
|
|
|
<!-- Title information -->
|
|
|
|
<title>Mail2News Mini-Howto
|
|
|
|
<author>Bek Oberin
|
|
<tt/gossamer@tertius.net.au/
|
|
<date>v1.2, November 2000
|
|
|
|
<abstract>
|
|
This document describes how to set up your news server and the
|
|
mail2news software to link mailing lists to local news groups.
|
|
</abstract>
|
|
|
|
<sect>Copyright and such
|
|
|
|
<!-- Copyright 2000, Bek Oberin -->
|
|
|
|
<p>
|
|
The copyright of this document is retained by the author. Permission
|
|
is granted to distribute the document by electronic means and on CDs
|
|
provided that it is kept entirely in its original format. Permission
|
|
is also granted to print a copy of this document for personal use.
|
|
|
|
<p>
|
|
The republishing of this document in part or in whole without the
|
|
permission of the copyright holder by any means other than as noted
|
|
above is prohibited.
|
|
|
|
<sect>Introduction
|
|
|
|
<p>
|
|
Why would you want to post mailing list traffic to local news groups?
|
|
|
|
<p>
|
|
Should more than one user subscribe to the same mailing list, there is
|
|
going to be traffic duplication. By subscribing the site to a list
|
|
(if this is allowed by the list owner) and 'gating' the email traffic
|
|
to the local news server, it is possible to make mailing lists
|
|
accessible to all site users, or, using the security features of
|
|
'innd', to limit the access to certain users. Such a site
|
|
subscription (particularly if there are a number of high traffic
|
|
lists) can make worthwhile savings in bandwidth usage.
|
|
|
|
<p>
|
|
Also, reading list traffic via a newsreader offers the advantages of
|
|
threading and scoring/killfiles which tend not to be available in all
|
|
mailreaders. And, of course, it keeps your inbox free for
|
|
possibly more urgent, personal email.
|
|
|
|
<p>
|
|
This mini-HOWTO describes setting up the 'mail2news' script to
|
|
accomplish this.
|
|
|
|
<sect1>Finding mail2news
|
|
|
|
<p>
|
|
You can download the mail2news package including the script and
|
|
this HOWTO and other documentation from
|
|
|
|
<code>
|
|
http://www.tertius.net.au/~gossamer/code/mail2news/
|
|
</code>
|
|
|
|
<sect>Overview of the system
|
|
|
|
<p>
|
|
It is probably easiest to understand how this system works by tracking
|
|
a message from the mailing list to the newsgroup and then a message
|
|
posted to the local newsgroup (and gated to the mailing list) and see
|
|
how they are handled.
|
|
|
|
<sect1>Mail from the mailing list
|
|
|
|
<p>
|
|
When mail from the mailing list arrives at the local machine, procmail
|
|
figures out what newsgroup it belongs in, and pipes the incoming
|
|
message to mail2news.
|
|
|
|
<p>
|
|
The mail2news script processes the message, applying news headers
|
|
and then uses rnews or inews to post the message to the newsgroup.
|
|
|
|
<sect1>Messages posted to the local newsgroup
|
|
|
|
<p>
|
|
The local newsgroup is set up as a moderated group, as this allows us
|
|
to take advantage of the email capabilities of innd. Any messages
|
|
posted to a moderated group are not immediately submitted to the
|
|
group. Instead, messages are emailed to the moderator of the group.
|
|
|
|
<p>
|
|
By declaring the moderator of the local newsgroup to be mailing list
|
|
address, all locally posted messages to the newsgroup are
|
|
automatically mailed out to the mailing list by innd and only appear
|
|
once they have been received back through mail2news which adds the
|
|
necessary 'approved' line to the messages and are thus acceptable to
|
|
innd for posting to the newsgroup.
|
|
|
|
<sect>Setting up mail2news
|
|
|
|
<p>
|
|
Put the mail2news script in a suitable location. I favour
|
|
/usr/local/bin, but the location is up to you.
|
|
|
|
<p>
|
|
You will need to edit script as follows:-
|
|
|
|
<itemize>
|
|
<item>At the top of the script, make sure you are pointing at the
|
|
local Perl binary. You can probably find out where Perl is by typing
|
|
'whereis perl' or 'which perl' at a command prompt. If you can't find
|
|
it, /usr/bin/perl is the safest bet:
|
|
|
|
<code>
|
|
#!/usr/bin/perl
|
|
# point at the correct location of perl
|
|
</code>
|
|
|
|
|
|
<item>Edit the following lines to point at the posting program (I use
|
|
rnews, inews will work too) and your news host:
|
|
|
|
<code>
|
|
# $inews = "/usr/bin/inews";
|
|
# $iopts = "-h -o \"mail2news gateway\"";
|
|
$inews = "/usr/bin/rnews";
|
|
$iopts = "";
|
|
$postinghost = "your.news.server"; # points at your news server
|
|
</code>
|
|
|
|
<item>Make sure that the script is exectuable:
|
|
|
|
<code>
|
|
chmod 755 /usr/local/bin/mail2news
|
|
</code>
|
|
</itemize>
|
|
|
|
<sect>Procmail
|
|
|
|
<p>
|
|
The procmail config file is at ~/.procmailrc. If you don't already
|
|
have a procmailrc file, just create one.
|
|
|
|
<p>
|
|
Make an entry for each mailing list that is to be gated to your local
|
|
news server. Something like this will do the trick for most cases,
|
|
but might fail for mail Bcc'd to the mailing list.
|
|
|
|
<p>
|
|
For example if your mailing list is 'jokes@netizen.com.au' and you
|
|
want the newsgroup to be called 'lists.jokes' your entry would look
|
|
like this:
|
|
|
|
<code>
|
|
:0
|
|
* TOjokes@netizen.com.au
|
|
|/usr/local/bin/mail2news lists.jokes
|
|
</code>
|
|
|
|
<p>
|
|
Note there's no space between the 'TO' and the list address on the
|
|
second line.
|
|
|
|
<p>
|
|
You need to put a blank line between the lines for each group. Put as
|
|
many entries as you want, using the same 3 lines for each group, but
|
|
changing the list address and newsgroup.
|
|
|
|
|
|
<sect>Setting up the news groups and news server (innd)
|
|
|
|
<p>
|
|
Using ctlinnd, create the newsgroups on your news server. Remember,
|
|
these are to be local news groups, so start them with a distinctive
|
|
name so you can filter them out from your news distributions (in your
|
|
newsfeeds file).
|
|
|
|
<p>
|
|
You also need to tell innd that the group is moderated (by using
|
|
ctlinnd). Remember, innd is very sensitive to file ownership and
|
|
permissions, so you need to interct at this level with innd as the
|
|
news user. Indicating a moderated group is done by specifying m to the
|
|
newgroup command.
|
|
|
|
<code>
|
|
ctlinnd newgroup lists.jokes m
|
|
</code>
|
|
|
|
<p>
|
|
The m tells innd that the group is moderated.
|
|
|
|
<p>
|
|
Edit your newsfeeds file to make sure that these local groups are not
|
|
distributed (unless you specificaly wish this to occur).
|
|
|
|
<p>
|
|
For example, if your mailing list is called local.site.group, then you
|
|
would probably want to add !local* to the second field of your up (and
|
|
possibly your down) stream news sites in your newsfeeds file.
|
|
|
|
<p>
|
|
Now, in order to ensure that user messages are sent to the list
|
|
automatically by innd, edit /etc/news/moderators to include a line
|
|
declaring the mailing list email address as the moderator.
|
|
|
|
<code>
|
|
lists.jokes:jokes@netizen.com.au
|
|
</code>
|
|
|
|
<sect>If it doesn't work...
|
|
|
|
<p>
|
|
If things don't work, you need to track through the path the messages
|
|
are taking to see exactly where things are breaking down. Useful tools
|
|
here are the mail and news logs.
|
|
|
|
<sect>The Future
|
|
|
|
<p>
|
|
One problem with messages posted this way is they'll have a
|
|
Newsgroups: header in them, and some other junk that the newsserver
|
|
introduces. This isn't a major problem, but it makes the messages
|
|
"messy". It'd be nice if some program could intercept them and
|
|
re-write the headers before sending them on.
|
|
|
|
</article>
|