Suck/Inn FAQ

Welcome to the Suck/Inn FAQ.

Suck is a utility which allows downloading of selected news groups to a local server via an NNRP feed; this is useful if your provider does not allow pull feeds from their NNTP server, or if you only have an NNRP feed.

You can get more information at the official suck site.

About This FAQ

This FAQ is maintained by a person who is definitely not an expert in INN or Suck, I maintain it because no-one else volunteered, so if at any time in the future somebody out there feels that they are willing to do a better job, please send mail to suck-faq@rhyme.com.au.

Becuase I am not an expert, I have created a number of web pages for people to suggest FAQ entries. Please don't post questions! That's what the mailing list is for.

But, if you have solved a problem, not matter how small, and you feel it fits within the Suck/Inn FAQ, please Submit the problem and solution, and I'll look at adding it to the FAQ.

1. General


1-1. My local INN 2.X server is set up to use CNFS, and I can't rpost because the outgoing file doesn't have the path to the article in it. It just has some weird id string in it.
The weird id string is the token for the article. What you have to do is change the put.news filter so that it uses the "sm" command to get the article associated with the filter. See this "put.news.sm" script for an example. You also have to edit the get.news script that you are using and remove the rpost "-p path" option from the rpost command.


1-2. Why are there so few questions in this FAQ?
There are two possible reasons for this:

1. No-one who knows anything about Suck/INN problems has submitted anything to these pages.

2. There are very few problems with using Suck with INN.

Take your pick.

Please, if you know of any issues and their solutions, submit them!


1-3. How do I get inn to stop putting references to every article it receives from suck (via innxmit) in /var/spool/news/out.going so that rpost won't try to post it back to my ISP?
You need to put the Path: header element of your ISP in the newsfeeds file. Just take a random article and see what your ISP puts in the Path: header (it's the 2nd element, you'd be the first).

>news.myisp.com:*,!control,!junk,!local.*/!local::

Need to change this in:

news.myisp.com/ALIAS:*,!control,!junk,!local.*/!local::

Where ALIAS is that 'Path:' element I was talking about.


1-4. I can't push messages with suck using current versions (Suck 4.3.1, INN 2.3.4, March 14, 2003). (a more complete answer)
This took a full day to figure out so I hope somebody can get some use out of it.

Setup INN and make sure you can post locally. Good.

Specifically, I'm using tradspool (storage.conf) but in theory this should work for other storage types as well, in particular cnfs.

The biggest thing to do is remove the ! from ME:!* and change remoteserver to Wf from Wnm.

newsfeeds file:

ME:*/!local,!control::

remoteserver:

:!local,!control/!local\
:Tf,Wf:

When you post to a non-local newsgroup the file path/outgoing/remoteserver should be populated with a string something like this:

@05010000000A000008C70000000000000000@

This string is also the third item in your history file.

Now the slightly trickier part.

From the suck/samples dir copy get.news.inn & put.news.sm into your inn/bin directory.

Edit get.news.inn with your variables. In theory this file should be re-written to use 'innconfval -s' but that's for somebody else to do.

FYI: you'll proably have to add -HF /path/to/history on the suck line

Change the main rpost line in get.news.inn to:

${RPOST} ${REMOTE_HOST} -d -b ${OUTGOINGNEW} -f ${SCRIPT} \$\$o=${OUTFILE} \$\$i ${OUTFILE}

Assuming I haven't forgotten anything you should now be sitting pretty and cross-posting your pr0n. ;)


1-5. Is there a simple way to install & configure INN & Suck?
Yes, see:
http://homepages.ezysurf.co.nz/~pbs/pub/install_suck_wrappers/index.html

2. Errors from the News Server


2-1. Why am I getting '430 no such article' Errors?
Here is a somewhat long explanation about how suck gets the articles, and some possible explanations: Here's the way suck gets the message-ids to download:

Pseudo code of get_message_index function:

for each GROUP {
	GROUP command
	XHDR msgid msgnr- 
}
The GROUP command tells the NNTP server which group I am interested in, then the XHDR commands says to send me all msgids for the range specified in sucknewsrc (last high msgnr usually). The remote NNRP server typically gets this information from the HISTORY or XOVER database it maintains. It has NOT yet looked at the actual articles on the spool directory. This gives me the raw, undeduped list of msg-ids that I have to worry about. Then, I take the list of msgids, dedupe em against itself (so I don't dl the same article twice) and the history database (if requested). Once the deduping is done, I then do:

pseudo code for get_messages function:

for each MSGID {
	article MSGID
}
Of course, this gets more complicated, based on killfiles, etc. This is the point when the NNRP server goes out to get the article from the spool directory. Now, if for any reason, and there are many (badly deleted articles, short retain date, currently running news.daily), the article is deleted from the spool directory, but not from the database of msgids, you'll see the error message noted. If you get these on a daily basis, it can mean that your server is not keeping up with its incoming/outgoing articles. Try using the -n option to suck. This forces suck to use the article number vice MsgID to retrieve the article. If this works, it definitely means the problem is on the remote end. The code that I use to do this processing hasn't changed in a few releases. That's why I don't think its a bug in suck. HOWEVER, there are a couple of ways to very quickly test that theory. If suck gives you a 430 error code, take that MSGID, and put it in "suckothermsgs", this will force suck to try and download it again. Or manually connect to the NNTP server:
telnet remote.server 119
mode reader (if you need the -M command) 
article  (include the <>s)
quit
If either one of these does succeed in getting the message, then there is a very real chance that suck has a very nasty hidden bug somewhere. Let me know. I will need the debug output from a session (use the -D option).


2-2. When trying to send news with rpost, I get the error message "Empty file, skipping".
The file that you pass to rpost -b should contain one line per article to be posted (the FILENAME of the article), and NOT the articles themselves.

For example, this might be written from inn when you have set up a newsfeed to your ISP. The articles already exist in /var/spool/news/... so there is no point in copying them, only pointing at them.

3. Privilege/Protection Problems


3-1. Using innxmit with the -bi option results in "permission denied" when trying to post a message.
Typically this is caused by not giving the localserver permission to post in hosts.nntp like this:
localhost:
If this doesn't fix it, check nnrp.access, it should look something like:
localhost:Read Post:::*


3-2. newserver authentication error when subscribing groups from host
By default the /etc/news/nnrp.access file shows:

    localhost:Read Post:::*

Such a configuration can cause user authentication error when attempting to subscribe groups from the localhost server in Netscape.

This can be solved by adding an entry for the loopback address:

    127.0.0.1:Read Post:::*

4. Other Issues


4-1.
I use suck to download newsgroups then use rnews to pipe the articles to my local news server.

1. How do I stop INN sending the new articles back to my ISP?

2. How do I make sure that all *locally* posted articles *are* sent to my ISP?

From: "Michael J. Palmer" 

>My only problem is that when i want to send a newsarticle or reply to
>an article the file ~news/out.going/servername gets filled with a
>line pointing to that article.
So far so good, you have got your "newsfeeds" file working.

> How can i send that article to my newsserver ???

You use "rpost". The sequence is (roughly, I'm going from memory):

1) rename the file in out.going (e.g. to servername.old)
2) ctlinnd flush servername (causes innd to start writing a new file
   with the original name, giving you sole use of the file without
   inn changing it beneath you).
3) rpost ....
   (read the man page for rpost, can't remember the syntax)
4) rm servername.old

> And furthermore: when i recieve my new batch of articles, this
> ~news/out.going/servername gets filled with all lines pointing to
> all these new articles as if they are to be sent
> to my newsserver! So something is not configured right here.

A very common problem. When innd receives an article, it examines the
"Path:" line in the article, and sees whether it contains "servername"
(delimited by !). If it does, then that article is not put into the
out.going.  So you have to ensure that the "servername" you use in
your "newsfeeds" file agrees with what gets put into the Path: by
the newsserver that you are suck'ing from.
e.g. here at work I get articles containing:
  Path: hursley.ibm.com!newsfeed.de.ibm.net!ibm.net!......etc.....
so I'd typically call the newsfeed back out "hursley.ibm.com" and
only articles that didn't come in that way would be sent out.

If you suck from more than one newsserver, and you don't intend to
feed between them, then you must put _all_ the server names into the
line in your newsfeeds file (as alias's, see the man pages for inn)
so that none of them come out in the out.going file.

Hope this helps.
   Regards, Mike.

---------------------------------------------
From: rel@lipo.at0.net (Roland E. Lipovits)

In article <199904291326.WAA18763@dns1.3ware.co.jp>,
Michael J. Palmer  wrote:
>A very common problem. When innd receives an article, it examines the
>"Path:" line in the article, and sees whether it contains "servername"
>(delimited by !). If it does, then that article is not put into the
>out.going.  So you have to ensure that the "servername" you use in
>your "newsfeeds" file agrees with what gets put into the Path: by
>the newsserver that you are suck'ing from.
>e.g. here at work I get articles containing:
>  Path: hursley.ibm.com!newsfeed.de.ibm.net!ibm.net!......etc.....
>so I'd typically call the newsfeed back out "hursley.ibm.com" and
>only articles that didn't come in that way would be sent out.

If you are using INN (2.2, I guess >=2.0 should work) you can use
the O-Flag in newsfeeds so that only articles posted local are
spooled into outgoing.

Regards,
Lipo


Please submit any error reports to suck-faq@rhyme.com.au.