Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
RPOST(1)		     General Commands Manual			RPOST(1)

NAME
     rpost - post an article to an NNTP news server

SYNOPSIS
     rpost  [ hostname ] [ @filename ] [ -s | -S filename ] [ -e | -E filename ]
     [ -b batchfile ] [ -r rnews_file rnews_path ] [ -p prefix ] [ -Q ] [ -d ] [
     -U userid ] [ -P password ] [ -M ] [ -N port_number ] [ -l phrase_file ]  [
     -D ] [ -T timeout ] [ -u ] [ -n ]

     [ -F perl_file ] [ -i ] [ -z ] [ -f filter $$o=<outfile> filter_arg1 ...  ]

DESCRIPTION
     Rpost  will  post one or more articles, specified by hostname.  If hostname
     is not specified, rpost will use the environment variable NNTPSERVER.   The
     hostname  may  optionally include the port number, in the form Host:Port If
     this form is used, any port number specified via the -N option will be  ig-
     nored.

Generic Options
     @filename

     This  option  tells  rpost to read other options from a file in addition to
     the command line.

     -D This option tells rpost  to  log  various  debugging  messages	to  "de-
     bug.suck", primarily for use by the developer.

     -e|-E filename

     These  options will send all error messages (normally displayed on stderr),
     to an alternate file.  The lower case version, -e, will send the error mes-
     sages to the compiled-in default defined in suck_config.h.  The default  is
     suck.errlog.   The upper case version, -E, requires the filename parameter.
     All error messages will then be sent to this file.

     -i

     This option tells rpost to ignore the 201 (no  posting  allowed)  from  the
     welcoming	message  and  to  try  and  post  anyway.    Some  news  servers
     (inn-2.3.1) send 201 no posting allowed when they are  using  the	AUTHINFO
     commands to verify permission to post.

     -l phrase_file

     This option tells rpost to load in an alternate phrase file, instead of us-
     ing  the built-in messages.  This allows you to have rpost print phrases in
     another language, or to allow you to customize  the  messages  without  re-
     building.	See the "FOREIGN LANGUAGE PHRASES" in suck.1 for more details.

     -M

     This  option  tells  rpost  to send the "mode reader" command to the remote
     server.  If you get an invalid command message from rpost immediately after
     the welcome announcement, then try this option.

     -n

     This option tells rpost to show the name of the file as  it  is  being  up-
     loaded.

     -N port_number

     This  option tells rpost to use an alternate NNRP port number when connect-
     ing to the host, instead of the default port number, 119.

     -s|-S filename

     These options will send all status messages (normally displayed on stdout),
     to an alternate file.  The lower case version, -s,  will  send  the  status
     messages  to the compiled-in default defined in suck_config.h.  The default
     is /dev/null, so no status messages will be displayed.  The upper case ver-
     sion, -S, requires the filename parameter.  All status messages  will  then
     be sent to this file.

     -T  This  option  overrides the compiled-in TIMEOUT value. This is how long
     rpost waits for data from the remote host before timing out and aborting.

     -u This option tells rpost to send the AUTHINFO  USER  command  immediately
     upon  connect  to the remote server, rather than wait for a request for au-
     thorization.  You must supply the -U and -P options when you use  this  op-
     tion.

     -U userid -P password

     These  two  options  let  you  specify  a userid and password, if your NNTP
     server requires them.

     -Q

     This option allows you to specify the userid and password via the	environ-
     ment  variables "NNTP_USER" and "NNTP_PASS" instead of on the command line.
     This prevents a potential security issue where someone doing a  ps  command
     can see your login and password.

     -z This option tells rpost to use SSL to communicate with the remote hosts,
     if SSL was compiled into rpost.

STDIN MODE
     rpost

     rpost hostname

     rpost reads one article from stdin and sends it to the NNTP server. The ar-
     ticle must have a header of at least two lines, namely Newsgroups: and Sub-
     ject:  and  a body (the article). Header and body have to be separated by a
     newline.  Rpost does not change the article in any way.

     Rpost uses the POST command to post your article, just  like  any	standard
     newsreader.  This is handy when using SLIP and PPP, since most providers do
     not allow any other method to post articles (such as nntpsend or innxmit).

BATCH MODE
     rpost hostname -b batchfile -p prefix -d

     This  batch mode allows you to give rpost a list of articles, and have them
     all posted.

     -b batchfile

     A listing of the articles to be posted.  This parameter is REQUIRED.   This
     file  contains  one  article  per line, with the line being the path to the
     file containing the article. For example:

	    -b /usr/spool/news/out.going/pixi

     IF there are any problems uploading a specific  article,  a  "failed"  file
     will  be created.	It will be called "batchfile".fail, and contain the line
     from this batchfile for the article(s) that did  not  successfully  upload.
     This  file  can be used to re-run the failed messages through rpost.  NOTE:
     duplicate articles are NOT considered an error for the fail file.

     -d

     If the upload of articles is successful, this option will cause rpost to
      delete the batchfile named in the -b option.

     -p prefix

     If the batchfile does not contain a full path, but rather a  partial  path,
     this  parameter  must  be specified.  This is useful when the batch file is
     generated by another program.  For example,  Inn  lists  the  path  in  the
     out.going	file  relative	to  its base directory /usr/spool/news.  In that
     case just use:

	     -p /usr/spool/news

RNEWS MODE
     rpost hostname -r rnews_file rnews_path

     This option allows you to use rnews generated file(s) to post.  It requires
     two parameters.

     rnews_file - this is the base name for the rnews files.  If you  have  your
     rnews  file(s)  called  batch1,  batch2,  etc., then this argument would be
     "batch".

     rnews_path - this is the path to the location of the rnews files.
	    -r batch /usr/tmp/rnews

     -d

     If the upload of all the articles from any of the rnews files  is	success-
     ful,  then  this  option  will  cause rpost to delete that particular rnews
     file.

FILTER MODES
     -f filter $$o=<outfile> filter_arg1 filter_arg2 ...

     In many cases, each article must be massaged before the  remote  NNTP  will
     accept  it.   This  option, and the embedded perl filter option below, lets
     you do that.  These filters do not work in STDIN mode, but in the batch and
     rnews modes from above.  Note that the -f .... option must be the LAST  op-
     tion,  as	everything  that  follows  it is passed to the filter, except as
     noted below.  There are three required parameters with this:

     $$o=<outfile>  - <outfile> is the name of the file produced by your  filter
     that  will  get  uploaded to the remote NNTP server.  THIS IS NOT passed to
     your filter program.  This can be specified anywhere on  the  command  line
     AFTER the -f filter argument, either before the filter name, or after it.

     filter  - name of the program to call.  Whatever follows filter, EXCEPT for
     the $$o, are arguments passed to the filter.

     arg1 - The first argument to your filter program/script.	It  most  likely
     will  be  $$i, which rpost fills in with the name of the article that needs
     to be cleaned up.

     arg2 ... - any additional args needed can be specified.

     Let's clarify this a bit with an example.	Some NNTP servers don't like  to
     receive  articles	with  the  NNTP-Posting-Host  filled in.  Create a short
     shell script to delete this from a file:

     -myscr--------------------------------------------

     #!/bin/sh

     sed -e "/^NNTP-Posting-Host/d" $1 > $2

     -end myscr----------------------------------------

     Then call rpost like this:
	    rpost   localhost	-b   /usr/spool/news/out.going/pixi   -f   myscr
	    \$\$o=/tmp/FILTERED_MSG \$\$i /tmp/FILTERED_MSG

     Then, before each article is uploaded, myscr is called like such:
	    myscr infilename /tmp/FILTERED_MSG

     After  myscr  has finished, rpost uploads the cleaned up article, stored in
     /tmp/FILTERED_MSG, to the remote NNTP server.

NOTE:
     The $$o and $$i have to be escaped, using either the backslashes as  above,
     or  with single quotes, to prevent the shell from trying to interpret these
     as variables.  Failure to escape them will result in rpost not working!

     -F perlfilter

     This option allows you to use an embedded perl filter to filter your  arti-
     cles.   In  order	to  use this, you must edit the Makefile, and define the
     various PERL_ options.  It has a couple of advantages over  the  -f  option
     above.   Because it is embedded perl, there are no forks and execls() done,
     so it should be faster.  Also, you don't need to worry about the  arguments
     to the program and escaping $$, etc as above.

     Rpost  will,  when it starts up, load in the perlfilter file designated and
     parse it for syntax errors.  Then, for each article to be	uploaded,  rpost
     will  call  the  subroutine "perl_rpost", contained in the perlfilter file.
     See sample/put.news.pl for a complete working example.  There are three key
     points you need to be aware of when creating your filter.

	    1. The perlfilter file must contain the line "package Embed::Persis-
	    tant;", so that variables in the perlfilter file  don't  clash  with
	    rpost  variables,  and  the  subroutine must be called "perl_rpost".
	    This can  be  changed  by  editting  the  PERL_RPOST_SUB  define  in
	    suck_config.h.

	    2.	The  perl_rpost  subroutine  receives the input file name as its
	    sole argument, and must return the full path to the location of  the
	    filtered article as a single scalar string (return $outfile).

	    3.	The subroutine must explicitly close the output file (containing
	    the filtered argument) before it returns.  This is because perl will
	    only do an automatic close upon program completion (in our case when
	    rpost exits), or when the file handle is reused (the next  time  the
	    subroutine	is  called).   If  the close is not done, then more than
	    likely, a 0 byte file will exist when rpost tries to post the  arti-
	    cle, and errors will result.

WARNING:
     Be  very  careful	with  what  the filter program deletes from the article.
     Deleting the wrong line can have bad effects later on.  For example, do not
     delete the MSG-ID line, as this could cause a single message to  be  posted
     many  times,  depending  on  the configuration of both the local and remote
     newserver.

RPOST ARGUMENT FILE
     If you specify @filename on the command line, rpost will read from filename
     and parse it for any arguments that you wish to pass to rpost.  You specify
     the same arguments in this file as you do on the command line.   The  argu-
     ments  can be on one line, or spread out among more than one line.  You may
     also use comments.  Comments begin with '#' and go to the end  of	a  line.
     All  command  line arguments override arguments in the file.  One advantage
     to using the file instead of the command line, is that you  don't	have  to
     escape any special characters, such as $.

	    # Sample Argument file
	    -b batch # batch file option
	    -M	 # use mode reader option

EXIT VALUES
     Rpost returns the following exit values:

	    0 = success
	    1 = error posting an article
	    2 = unable to do NNTP authorization with the remote server.
	    3 = unexpected answer to command when doing NNTP authorization.
	    -1 = other fatal error.

SEE ALSO
     suck(1), testhost(1), lpost(1).

									RPOST(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rpost&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help