Man Linux: Main Page and Category List

NAME

       suck  - Pull a small newsfeed from an NNTP server, avoiding the NEWNEWS
       command.

SYNOPSIS

       suck [ hostname ] [ @filename ] [ -V ] [ -K ] [ -L[SL] ] [ filename ] [
       -H ] [ -HC ] [ -HF filename ] [ -HI ] [ -HN ] [ -HO ] [ -d[tmd] dirname
       ] [ -s | -S filename ] [ -e | -E filename ] [ -a ] [ -m  ]  [  -b[irlf]
       batchfile  ]  [  -r  filesize  ]  [  -p  extension ] [ -U userid ] [ -P
       password ] [ -Q ] [ -c ] [ -M ] [ -N  port_number  ]  [  -W  pause_time
       pause_nr_msgs ] [ -w pause_time pause_nr_msgs ] [ -l phrase_file ] [ -D
       ] [ -R ] [ -q ] [ -C count ] [ -k ] [ -A ] [ -AL  activefile  ]  [  -hl
       localhost ] [ -bp ] [ -T timeout ] [ -n ] [ -u ] [ -z ] [ -x ] [ -B ] [
       -O ] [ -G ] [ -X ] [ -f ] [ -y post_filter ]  [  -F  ]  [  -g  ]  [  -i
       number_to_read ] [ -Z ] [ -rc ] [ -lr ] [ -sg ] [ -ssl ] [ -SSL ]

       Options valid in all modes tname

       The  hostname  may  optionally  include  the  port  number, in the form
       Host:Port.Ifthisoptionisused,anyportnumberspecified via the  -N  option
       is ignored.

       @filename

       This option tells suck to read other options from a file in addition to
       the commandline.

       -a

       This option forces suck to always batch  up  any  downloaded  articles,
       even  if  suck  aborts  for any reason.  Without this option, suck will
       only batch up articles if it finishes successfully or is cancelled by a
       signal (see below).

       -A

       This  option  tells  suck to scan the localhost (specified with the -hl
       option) and use its active file to build  and  update  the  sucknewsrc.
       If you add a group to your local server, suck will add it to sucknewsrc
       and download articles.  Or, if you  delete  a  group  from  your  local
       server,  it will be deleted from sucknewsrc.  If posting is not allowed
       to a particular group, then the line in sucknewsrc  is  just  commented
       out.   With this option, you should never have to edit your sucknewsrc.
       In case you have newsgroups (like control and junk) that you don’t want
       downloaded, you can put these newsgroups in a file "active-ignore", one
       per line, and suck will ignore  these  newsgroups  when  it  scans  the
       localhost.   If  your  system  supports  regex(),  you  may use regular
       expressions in the active-ignore file  to  skip  multiple  groups,  eg:
       fred.*.   If  you  use the -p (postfix) option, suck will check for the
       existence of an active-ignore file with the postfix.  If  that  doesn’t
       exist,  then  suck will check for the existence of the file without the
       postfix.

       NOTE: If the localhost is on a non-standard port, the port  number  may
       be specified as part of the hostname, in the form Host:Port.

       NOTE:  If  you use regular expressions, suck will silently add a "^" to
       the beginning of the group name, and a "$" to the end of the group name
       if they aren’t already present, so that if you have "comp.os.linux", it
       won’t match  "comp.os.linux.answers"  or  if  you  have  "alt.test"  it
       doesn’t match "comp.alt.test".

       -AL activefile

       This  option  is identical to the -A option, except it reads the active
       file from the local file specified  instead  of  reading  it  from  the
       localhost.   All the caveats from the -A option apply to this option as
       well.  If both options are used on the command line, suck  first  tries
       to use the -A option, then if that fails it uses this option.

       -B

       This  option  tells  suck  to  attempt  to batch up any articles in its
       directory BEFORE starting to download messages.  This can be useful  if
       you  have  a problem with the previous download.  This option will only
       work if you specify a batch option  (see  below).    If  there  are  no
       messages  to  batch  up,  some of the batch options may produce warning
       messages.  They may be safely ignored.  Also, if the batch files  exist
       at the end of the run, in inn-batch mode, it will be overwritten, since
       the new batch file will contain all messages.  In rnews  mode,  if  the
       batch file exists, it will abort and not batch up any messages.

       -c

       If  this  option  is  specified, suck will clean up after itself.  This
       includes:
              1. Moving sucknewsrc to sucknewsrc.old
              2. Moving suck.newrc to sucknewsrc
              3. rm suck.sorted and suckothermsgs.

       -C count

       This option tells suck to drop the connection and reopen it every count
       number of articles.  This is designed to battle INN’s LIKE_PULLERS=DONT
       option, that some folks compile in. With LIKE_PULLERS=DONT,  after  100
       messages  INN  will  pause between every message, dramatically reducing
       your download speed. I don’t recommend the use of this, but if you have
       no other choice....

       -dd dirname

       -dm dirname

       -dt dirname

       Specify the location of the various files used by suck.

       -dd  dirname  =  directory  of  data  files  used  by  suck (sucknewsrc
       suckkillfile suckothermsgs active-ignore sucknodownload)

       -dm dirname = directory for storage of articles  created  in  Multifile
       mode  or batch mode.  DO NOT make this the same as the directories used
       for the -dt or -d options, or you  will  lose  all  your  configuration
       files.

       -dt  dirname  =  directory  of  temp files created by suck (suck.newrc,
       suck.sort, suck.restart, suck.killlog, suck.post).

       -D

       This  option  tells  suck  to  log  various   debugging   messages   to
       "debug.suck", primarily for use by the maintainer.

       -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 messages 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.

       -f

       This  option  tells  suck  to  reconnect  after  deduping,  and  before
       downloading  the  articles.   This  is  in case long dedupe times cause
       timeouts on the remote end.

       -F

       This option tells suck to reconnect  after  reading  the  local  active
       file,  and  before downloading the Msg-IDs.  This is in case of a large
       active file, which causes timeouts on the remote end.

       -g

       This option causes suck to only download the headers  of  any  selected
       articles.   As  a  result of this, any batching of articles is skipped.
       This option does work with killfiles, however, killfile options such as
       BODYSIZE>  will be ignored, since the body of the article will never be
       downloaded.

       -G

       This option causes suck to display the message  count  and  BPS  status
       lines in a slightly different format, more suitable for use by a filter
       program (such as a GUI).

       -H

       This option will cause suck to bypass the history check.

       -HC

       Use DBZ for history file index, cnews or inn 1.

       -HF history_file_name

       This option tells suck the location of the history file.   The  default
       is at /var/lib/news/history.

       -HI

       Use inn 2.4 history file index.

       -hl localhost

       This option specifies the localhost name.  This option is required with
       both the -A and the -bp option.

       -HN

       No history file.  (Same as -H)

       -HO

       Use history file with no index.

       -i number_to_read

       This option tells suck the number of articles to download  if  you  are
       using  the -A or -AL option, and a new group is added.   The default is
       defined in  suck_config.h  (ACTIVE_DEFAULT_LASTREAD,  currently  -100).
       NOTE:  This must be a negative number (eg -100, -50), or 0, to download
       all articles currently available in the group.

       -k

       This option tells suck to NOT attach the postfix from the -p option  to
       the  names  of  the  killfiles,  both the master killfile and any group
       files.  This allows you to maintain one set of killfiles  for  multiple
       servers.

       -K

       This option will cause suck to bypass checking the killfile(s).

       -l phrase_file

       This  option tells suck to load in an alternate phrase file, instead of
       using the built-in messages.   This  allows  you  to  have  suck  print
       phrases  in another language, or to allow you to customize the messages
       without re-building suck.  See below.

       -lr

       This option, is used in conjunction with the highest article option  in
       the  sucknewsrc,  to  download  the  oldest  articles,  vice the newest
       articles. See that section for more details.

       -L

       This option tells suck to NOT log killed articles to suck.killlog.

       -LF filename

       This  option  allows  you  to  override   the   built-in   default   of
       "suck.killlog"  for  the file which contains the log entries for killed
       articles.

       -LL

       This option tells suck to create  long  log  entries  for  each  killed
       article.   The  long  entry contains the short log entry and the header
       for the killed message.

       -LS

       This option tells suck to create short  log  entries  for  each  killed
       article.   The  short  entry contains which group and which pattern was
       matched, as well as the MsgID of the killed article.

       -M

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

       -n

       This option tells suck to use the article  number  vice  the  MsgId  to
       retrieve  the  articles.   This  option is supposedly less harsh on the
       remote server.  It can also eliminate problems if  your  ISP  ages  off
       articles  quickly  and  you  frequently get "article not found" errors.
       Also, if your ISP uses DNEWS, you might need this  option  so  that  it
       knows you’re reading articles in a group.

       -N port_number

       This  option  tells  suck  to  use  an  alternate NNRP port number when
       connecting to the host, instead of the default, 119.

       -O

       This option tells suck to skip the first article upon restart.  This is
       used  whenever there is a problem with an article on the remote server.
       For some reasons, some NNTP servers, when they have a  problem  with  a
       particular  article, they time out.  Yet, when you restart, you’re back
       on the same article, and you time out again.  This option tells suck to
       skip  the  first  article upon restart, so that you can get the rest of
       the articles.

       -p extension

       This extension is added to all files so that you can have multiple site
       feeds.   For  example,  if  you  specify -p .dummy, then suck looks for
       sucknewsrc.dummy, suckkillfile.dummy, etc, and creates its  temp  files
       with  the  same  extension.   This  will  allow  you  to  keep multiple
       sucknewsrc files, one for each site.

       -q

       This option tells suck  to  not  display  the  BPS  and  article  count
       messages  during download.  Handy when running suck unattended, such as
       from a crontab.

       -R

       This option tells suck to skip a rescan of the remote newserver upon  a
       restart.   The  default is to rescan the newserver for any new articles
       whenever suck runs, including restarts.

       -rc

       This option tells suck to change its behavior when  the  remote  server
       resets  its  article  counters.    The default behavior is to reset the
       lastread in sucknewsrc to the current high article counter.  With  this
       option,  suck  resets  the  lastread  in  sucknewsrc to the current low
       article counter, causing it to suck all  articles  in  the  group,  and
       using the historydb routines to dedupe existing articles.

       -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  version,  -S,  requires  the  filename
       parameter.  All status messages will then be sent to this file.

       -sg

       This option tells suck to add the  name  of  the  current  group  being
       downloaded,  if  known,  to  the BPS display.   Typically the only time
       suck doesn’t know the group name is if an article is downloaded via the
       suckothermsgs file.

       -ssl

       This option tells suck to use SSL to talk to the remote server, if suck
       was compiled with SSL support.

       -SSL

       This option tells suck to use SSL to talk to the local server, if  suck
       was compiled with SSL support.

       -T timeout

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

       -u

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

       -U userid

       -P password

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

       -Q

       This  option  tells  suck  to  get  the  userid  and  password for NNTP
       authentication  from  the   environment   variables   "NNTP_USER"   and
       "NNTP_PASS"  vice  the  -U  or  -P password.  This prevents a potential
       security problem where someone doing a ps command can see  your  userid
       and password.

       -V

       This  option  will  cause suck to print out the version number and then
       exit.

       -w pause_timer pause_nr_msgs

       This option allows you to slow down suck while  pulling  articles.   If
       you send suck a predefined signal (default SIGUSR1, see suck_config.h),
       suck will swap the default  pause  options  (if  specified  by  the  -W
       option),  with  the values from this option.  For example, you run suck
       with -w 2 2, and you send suck a SIGUSR1 (using kill), suck  will  then
       pause  2  seconds  between  every other message, allowing the server to
       "catch its breath."  If you send suck another SIGUSR1, then  suck  will
       put back the default pause options.  If no pause options were specified
       on the command line (you omitted -W), then  suck  will  return  to  the
       default full speed pull.

       -W pause_time pause_nr_msgs

       This  option tells suck to pause between the download of articles.  You
       need to specify how long to pause (in seconds), and how often to  pause
       (every  X  nr of articles). Ex: -W 10 100 would cause suck to pause for
       10 seconds every 100 articles.  Why would you want to  do  this?   Suck
       can  cause  heavy  loads  on a remote server, and this pause allows the
       server to "catch its breath."

       -x

       This option tells suck to not check the Message-IDs for  the  ending  >
       character.   This  option  is for brain dead NNTP servers that truncate
       the XHDR information at 72 characters.

       -X

       This option tells suck to bypass the XOVER killfiles.

       -y post_filter

       This option is only valid when using any of batch modes.  It allows you
       to  edit  any  or  all of the articles downloaded before posting to the
       local host.   See below for more details.

       -z

       This option tells suck to bypass the normal deduping process.  This  is
       primarily  for  slow  machines where the deduping takes longer than the
       download of messages would.  Not recommended.

       -Z

       This option tells suck to use the XOVER command vice the  XHDR  command
       to  retrieve  the information needed to download articles.  Use this if
       your remote news server doesn’t support the XHDR command.

LONG OPTION EQUIVALENTS

              -a  --always_batch
              -bi --batch-inn
              -br --batch_rnews
              -bl --batch_lmove
              -bf --batch_innfeed
              -bp --batch_post
              -c  --cleanup
              -dt --dir_temp
              -dd --dir_data
              -dm --dir_msgs
              -e  --def_error_log
              -f  --reconnect_dedupe
              -g  --header_only
              -h  --host
              -hl --localhost
              -k  --kill_no_postfix
              -l  --language_file
              -lr --low_read
              -m  --multifile
              -n  --number_mode
              -p  --postfix
              -q  --quiet
              -r  --rnews_size
              -rc --resetcounter
              -s  --def_status_log
              -sg --show_group
              -ssl --use_ssl
              -w  --wait_signal
              -x  --no_chk_msgid
              -y  --post_filter
              -z  --no_dedupe
              -A  --active
              -AL --read_active
              -B   --pre-batch
              -C  --reconnect
              -D  --debug
              -E  --error_log
              -G  --use_gui
              -H  --no_history
              -HF --history_file
              -K  --killfile
              -L  --kill_log_none
              -LS --kill_log_short
              -LL --kill_log_long
              -M  --mode_reader
              -N  --portnr
              -O --skip_on_restart
              -P  --password
              -Q  --password_env
              -R  --no_rescan
              -S  --status_log
              -SSL --local_use_ssl
                     -T  --timeout
                     -U  --userid
                     -V  --version
                     -W  --wait
                     -X  --no_xover
                     -Z --use_xover

DESCRIPTION

MODE 1 - stdout mode

              %suck
              %suck myhost.com

       Suck grabs news from an NNTP server and sends the articles  to  stdout.
       Suck  accepts  as  argument  the name of an NNTP server or if you don’t
       give an argument it will take the environment variable NNTPSERVER.  You
       can  redirect  the  articles to a file or compress them on the fly like
       "suck server.domain | gzip -9 > output.gz".  Now it’s up  to  you  what
       you  do  with  the articles.  Maybe you have the output already on your
       local machine because you used  a  slip  line  or  you  still  have  to
       transfer the output to your local machine.

MODE 2 - Multifile mode

              %suck -m
              %suck myhost.com -m

       Suck  grabs  news  from  an  NNTP  server  and stores each article in a
       separate  file.   They  are  stored  in  the  directory  specified   in
       suck_config.h or by the -dm command line option.

MODE 3 - Batch mode

              %suck myhost.com -b[irlf] batchfile
              or %suck myhost.com -bp -hl localhost
              or %suck myhost.com -bP NR -hl localhost
              %suck myhost.com -b[irlf] batchfile

       Suck  will  grab  news articles from an NNTP server and store them into
       files, one for each article (Multifile  mode).   The  location  of  the
       files  is  based  on  the defines in suck_config.h and the command line
       -dm.  Once suck is done downloading the articles, it will build a batch
       file which can be processed by either innxmit or rnews, or it will call
       lmove to put the files directly into the news/group/number format.

       -bi - build batch file for innxmit.  The articles are left intact,  and
       a  batchfile  is  built  with a one-up listing of the full path of each
       article.  Then innxmit can be called:

              %innxmit localhost batchfile

       -bl - suck will call lmove to put the articles  into  news/group/number
       format.   You  must  provide  the name of the configuration file on the
       command line.  The following arguments from suck are passed to lmove:

              The configuration file name (the batchfile  name  provided  with
              this option)
              The  directory specified for articles (-dm or built-in default).
              The errorlog to log errors to (-e or -E),  if  provided  on  the
              command line.
              The phrases file (-l), if provided on the command line.
              The Debug option, if provided on the command line.

       -br  -  build  batch  file  for  rnews.   The articles are concatenated
       together, with the #!rnews size article separator.  This can the be fed
       to rnews:

              %rnews -S localhost batchfile

       -r  filesize   specify  maximum batch file size for rnews.  This option
       allows you to specify the maximum size of a batch file  to  be  fed  to
       rnews.  When this limit is reached, a new batch file is created AFTER I
       finish writing the current article to the old batch file.   The  second
       and  successive  batch files get a 1 up sequence number attached to the
       file name specified with the -br.  Note that since  I  have  to  finish
       writing  out the current article after reaching the limit, the max file
       size is only approximate.

       -bf - build a batch file for  innfeed.   This  batchfile  contains  the
       MsgID  and full path of each article.  The main difference between this
       and the innxmit option is  that  the  innfeed  file  is  built  as  the
       articles  are  downloaded, so that innfeed can be posting the articles,
       even while more articles are downloaded.

       -bp - This option tells suck to  build  a  batch  file,  and  post  the
       articles  in  that  batchfile  to the localhost (specified with the -hl
       option).  This option uses the IHAVE command  to  post  all  downloaded
       articles to the local host.  The batch file is called suck.post, and is
       put in the temporary directory (-dt).  It is deleted  upon  completion,
       as  are the successfully posted articles.  If the article is not wanted
       by the server (usually because it already exists on the server,  or  it
       is  too  old), the article is also deleted.  If other errors occur, the
       article is NOT deleted.  With  the  following  command  line,  you  can
       download  and  post  articles without worrying if you are using INND or
       CNEWS.

              %suck news.server.com -bp -hl localhost -A -c

       -bP NR - This option works identically to -bp above, except instead  of
       waiting  until  all  articles  are downloaded, it will post them to the
       local server after downloading NR of articles.

              %suck news.server.com -bP 100 -hl localhost -A -c

SUCK ARGUMENT FILE

       If you specify @filename on the  command  line,  suck  will  read  from
       filename  and parse it for any arguments that you wish to pass to suck.
       You specify the same arguments in this file as you do  on  the  command
       line.   The arguments 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.

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

SUCKNEWSRC

       Suck looks for a file sucknewsrc to see  what  articles  you  want  and
       which you already received. The format of sucknewsrc is very simple. It
       consists of one line for each newsgroup.   The  line  contains  two  or
       three fields.

       The first field is the name of the group.

       The  second  field  is the highest article number that was in the group
       when that group was last downloaded.

       The third field, which is optional, limits the number of articles which
       can  be  downloaded at any given time.  If there are more articles than
       this number, only the newest are downloaded.  If the third field is  0,
       then no new messages are downloaded.  If the command line option -lr is
       specified, instead  of  downloading  the  newest  articles,  suck  will
       download the oldest articles instead.

       The fields are separated by a space.

              comp.os.linux.announce 1 [ 100 ]

       When  suck  is  finished, it creates the file suck.newrc which contains
       the new sucknewsrc with the updated article numbers.

       To add a new newsgroup, just stick it in  sucknewsrc,  with  a  highest
       article  number  of -1 (or any number less than 0).  Suck will then get
       the newest X number of messages for that  newsgroup.   For  example,  a
       -100  would  cause  suck  to  download the newest 100 articles for that
       newsgroup.

       To tell suck to skip a newsgroup, put a # as the first character  of  a
       line.

SUCKKILLFILE and SUCKXOVER

       There are two types of killfiles supported in suck.  The first, via the
       file suckkillfile, kills articles based on information  in  the  actual
       article  header  or  body.    The second, via the file suckxover, kills
       articles based on the information retreived via the NNTP command XOVER.
       They   are  implemented  in  two  fundamentally  different  ways.   The
       suckkillfile killing is done as the articles are downloaded, one  at  a
       time.   The  XOVER  killing  is  done while suck is getting the list of
       articles to download, and before a single article is  downloaded.   You
       may use either, none or both type of killfiles.

SUCKKILLFILE and GROUP KEEP/KILLFILES

       If  suckkillfile  exists,  the headers of  all articles will be scanned
       and the article downloaded or not,  based  on  the  parameters  in  the
       files.   If  no logging option is specified (see the -L options above),
       then the long logging option is used.

       Comments lines are allowed in the killfiles.  A comment line has a  "#"
       in the first position.  Everything on a comment line is ignored.

       Here’s  how  the  whole  keep/delete  package  works.  All articles are
       checked against the master kill file (suckkillfile).  If an article  is
       not  killed by the master kill file, then its group line is parsed.  If
       a group file exists for one of the groups then the article  is  checked
       against  that  group file.  If it matches a keep file, then it is kept,
       otherwise it is flagged for deletion.  If it  matches  a  delete  file,
       then  it  is  flagged for deletion, otherwise it is kept.  This is done
       for every group on the group line.

       NOTES: With the exception of the USE_EXTENDED_REGEX parameter, none  of
       these  parameters are passed from the master killfile to the individual
       group file.  Each killfile is separate  and  independant.   Also,  each
       search  is  case-insensitive  unless specifically specified by starting
       the search string with the QUOTE character (see below).   However,  the
       parameter part of the search expression (the LOWLINE=, HILINE= part) is
       case sensitive.

PARAMETERS

              LOWLINES=#######
              HILINES=#######
              NRGRPS=####
              NRXREF=####
              QUOTE=c
              NON_REGEX=c
              GROUP=keep  groupname  filename    OR   GROUP=delete   groupname
              filename
              PROGRAM=pathname
              PERL=pathname
              TIEBREAKER_DELETE
              GROUP_OVERRIDE_MASTER
              USE_EXTENDED_REGEX
              XOVER_LOG_LONG
              HEADER:
              Any Valid Header Line:
              BODY:
              BODYSIZE>
              BODYSIZE<

       All  parameters  are  valid  in both the master kill file and the group
       files, with the exception of GROUP, PROGRAM,  PERL,  TIEBREAKER_DELETE,
       and  GROUP_OVERRIDE_MASTER.   These  are  only valid in the master kill
       file.

KILL/KEEP Files Parameters

       HILINES= Match any article longer than the number of lines specified.

       LOWLINES= Match any article shorter than the number of lines specified.

       NRGRPS= This line will match any article which has more groups than the
       number specified on the Newsgroups: line.  Typically this is used in  a
       killfile  to  prevent spammed articles.  (A spammed article is one that
       is posted to many many groups, such as those  get-rich  quick  schemes,
       etc.)

       NRXREF= This line will match any article that has more groups than than
       the number specified on the Xref: line.  This is another spamm stopper.
       WARNING:  the Xref: line is not as accurate as the Newsgroups: line, as
       it only contains groups known to the news server.   This option is most
       useful  in  an xover killfile, as in Xoverviews don’t typically provide
       the Newsgroups: line, but do provide the Xref: line.

       HEADER: Any Valid Header Line: Suck  allows  you  to  scan  any  single
       header line for a particular pattern/string, or you may scan the entire
       article header.  To scan an  individual  line,  just  specify  it,  for
       example to scan the From line for boby@pixi.com, you would put

              From:boby@pixi.com

       Note  that  the  header  line  EXACTLY matches what is contained in the
       article.  To scan the Followup-To: line, simply put To search the  same
       header line for multiple search items, then each search item must be on
       a separate line, eg:
              From:boby@xxx
              From:nerd@yyy
              Subject:suck
              Subject:help
       The parameter HEADER: is a special case of the above.  If you  use  the
       HEADER:  parameter,  then  the  entire header is searched for the item.
       You are allowed multiple HEADER: lines in each killfile.

       When suck searches for the pattern, it only searches for  what  follows
       the  :,  and  spaces  following  the : are significant.  With the above
       example "Subject:suck", we will search the Subject header line for  the
       string  "suck".   If  the  example had read "Subject: suck", suck would
       have searched for the string " suck".  Note the extra space.

       If your system has regex() routines on it, then the items searched  for
       can  be  POSIX regular expressions, instead of just strings.  Note that
       the QUOTE= option is still applied, even to regular expressions.

       BODY: This parameter allows you to search the body of  an  article  for
       text.   Again,  if  your  system  has  regex(),  you  can  use  regular
       expressions, and the QUOTE= option is also applied.   You  are  allowed
       multiple  BODY:  lines  in  each  killfile.   WARNING:   Certain  regex
       combinations, especially with .* at the beginning, (eg BODY:.*jpg),  in
       combination  with  large  articles,  can  cause  the  regex code to eat
       massive amounts of CPU, and suck will seem like it is doing nothing.

       BODYSIZE> This parameter will match an article if the size of its  body
       (not including the header) is greater than this parameter.  The size is
       specified in bytes.

       BODYSIZE< This parameter will match an article if the size of its body,
       is less than this parameter.  The size is specified in bytes.

       QUOTE=  This item specifies the character that defines a quoted string.
       The default for this is  a  ".   If  an  item  starts  with  the  QUOTE
       character,  then  the  item is checked as-is (case significant).  If an
       item does not start with the QUOTE character, then the item is  checked
       with out regard to case.

       NON_REGEX=  This items specifies the character that defines a non-regex
       string.  The default for this is a %.   If  an  item  starts  with  the
       NON_REGEX  character,  then  the  item  is  never  checked  for regular
       expressions.  If the item doesn’t start with the QUOTE character,  then
       suck  tries  to  determine if it is a regular expression, and if it is,
       use regex() on it.  This item is so that you can  tell  suck  to  treat
       strings  like  "$$$$ MONEY $$$$" as non-regex items.    IF YOU USE BOTH
       QUOTE and NON_REGEX characters on a  string,  the  NON_REGEX  character
       MUST appear first.

       GROUP= This line allows you to specify either keep or delete parameters
       on a group by group basis.  There are three parts to this  line.   Each
       part  of  this  line must be separated by exactly one space.  The first
       part is either "keep" or "delete".  If it is keep, then  only  articles
       in  that  group  which  match  the  parameters  in  the  group file are
       downloaded.  If it is delete, articles in that group  which  match  the
       parameters  are not downloaded.  The second part, the group name is the
       full group name for articles to check against  the  group  file.    The
       group  name  may  contain an * as the last character, to match multiple
       groups, eg:   "comp.os.linux.*"   would  match  comp.os.linux.announce,
       comp.os.linux.answers,  etc..   The third part specifies the group file
       which contains the parameters to check  the  articles  against.   Note,
       that  if  you specified a postfix with the -p option, then this postfix
       is attached to the name of the file when suck looks for it, UNLESS  you
       use the -k option above.

       GROUP_OVERRIDE_MASTER  This allows you to override the default behavior
       of the master kill file.  If this option is in the  master  kill  file,
       then  even  if  an  article  is flagged for deletion by the master kill
       file, it is checked against the group files.  If the group  files  says
       to not delete it, then the article is kept.

       TIEBREAKER_DELETE  This option allows you to override the built-in tie-
       breaker default.  The potential exists for a message to be  flagged  by
       one group file as kept, and another group file as killed.  The built-in
       default is to then keep the message.  The TIEBREAKER_DELETE option will
       override that, and caused the article to be deleted.

       USE_EXTENDED_REGEX  This  option  tells  suck  to  use extended regular
       expressions vice standard regular expressions.   It  may  used  in  the
       master  killfile,  in  which case it applies to all killfiles, or in an
       individual killfile, where it  only  applies  to  the  parameters  that
       follow it in the killfile.

       XOVER_LOG_LONG  This option tells suck to format the killfile generated
       by from an Xover killfile so that it looks like an article header.  The
       normal output is to just print the Xover line from theserver.

       PROGRAM=  This  line  allows  suck to call an external program to check
       each article.  You may specify any arguments in addition to the program
       name  on  this  line.   If this line is in your suckkillfile, all other
       lines are ignored.  Instead, the headers are  passed  to  the  external
       program, and the external program determines whether or not to download
       the article.  Here’s how it works.  Suck will fork your  program,  with
       stdin  and  stdout  redirected.   Suck  will  feed  the headers to your
       program thru stdin, and expect a reply back thru  stdout.   Here’s  the
       data flow for each article:

              1.  suck  will  write a 8 byte long string, which represents the
              length of the header record on stdin of  the  external  program.
              Then  length is in ascii, is left-aligned, and ends in a newline
              (example: "1234   \n").
              2. suck will then write the header  on  stdin  of  the  external
              program.
              3.  suck  will  wait  for a 2 character response code on stdout.
              This response code is either "0\n" or "1\n" (NOT BINARY ZERO  OR
              ONE,  ASCII ZERO OR ONE).  If the return code is zero, suck will
              download the article, if it is one, suck won’t.
              4. When there are no more articles, the length written down (for
              step  1)  will be zero (again in ascii "0       \n").  Suck will
              then wait for the external program to exit before continuing on.
              The  external  program  can do any clean up it needs, then exit.
              Note: suck will  not  continue  processing  until  the  external
              program exits.

       PERL=  This  line  allows  suck to call a perl subroutine to check each
       article.  In order to use this option,  you  must  edit  the  Makefile,
       specifically  the  PERL*  options.   If  the  PERL=  line  is  in  your
       suckkillfile, all other lines are ignored.  Instead, the header is sent
       to  your perl subroutine, and your subroutine determines if the article
       is downloaded or not.  The parameter on the PERL=  line  specifies  the
       file name of the perl routine eg:

              PERL=perl_kill.pl

       See  the sample/perl_kill.pl for a sample perl subroutine.  There are a
       couple of key points in this sample.  The "package  Embed::Persistant;"
       must  be  in  the  perl  file.   This is so that any variable names you
       create will not conflict with variable names in suck.  In addition, the
       subroutine  you  define  must  be  "perl_kill",  unless  you change the
       PERL_PACKAGE_SUB define in suck_config.h.  Also, your  subroutine  must
       return exactly one value, an integer, either 0 or 1.  If the subroutine
       returns 0, then the article is downloaded, otherwise,  the  article  is
       not downloaded.

       NOTES:  The  perl  file  is only compiled once, before any articles are
       downloaded.  This is to prevent lengthy delays between  articles  while
       the  perl  routine  is  re-compiled.   Also, you must use Perl 5.003 or
       newer.  In addition, you are advised to run ’perl  -wc  filter’  BEFORE
       using  your  filter,  in  order  to  check  for syntax errors and avoid
       problems.

SUCKXOVER

       If the file suckxover exists, then suck uses the XOVER command  to  get
       information  on  the articles and decide whether or not to download the
       article.  Xover  files  use  the  same  syntax  as  suckkillfiles,  but
       supports a subset of the commands.

       The following killfile commands are not supported in suckxover files:
              NRGROUPS:
              HEADER:
              BODY:
              TIEBREAKER_DELETE:

       Only the following header lines will be checked:
              Subject:
              From:
              Message-ID:
              References:

       The behaviour of the size commands ( BODYSIZE>, BODYSIZE<, HILINES, and
       LOWLINES ) specify the total size of the article (not just the body) in
       bytes or lines, respectively.

       All  other  parameters  are  allowed.   However,  if you use an invalid
       parameter, it is silently ignored.

SUCKXOVER and PROGRAM= or PERL= parameters

       These parameters are supported in a suckxover file, however  they  work
       slightly  differently than described above.  The key difference is that
       prior to sending each individual xoverview line to your  program,  suck
       will  send  you  the  overview.fmt  listing  that it retrieves from the
       server.  This overview.fmt is  a  tab-separated  line,  describing  the
       fields in each overview.fmt line.

       For the PROGRAM= parameter, suck will first send your program an 8 byte
       long string, which is the length of the overview.fmt.  This  length  is
       formatted  as  the  lengths  above (see nr1 under PROGRAM=).  Suck will
       then send the overview.fmt.  After  that,  the  flow  is  as  described
       above.  See sample/killxover_child.c for an example.

       For  the  PERL= parameter, Your program must have two subroutines.  The
       first is perl_overview, which will recieve the  overview.fmt,  and  not
       return  anything.   The  second  subroutine  is  perl_xover, which will
       recieve the xoverview line, and return 0 or  1,  as  described  in  the
       PERL= above.  See sample/perl_xover.pl for an example.

SUCKOTHERMSGS

       If  suckothermsgs  exists,  it  must  contain lines formatted in one of
       three ways.  The first way is a line containing a Message-ID, with  the
       <> included, eg:

                   <12345@somehost.com>

       This will cause the article with that Message-ID to be retrieved.

       The  second  way  is  to  put a group name and article number on a line
       starting with an !, eg:
                   !comp.os.linux.announce 1

       This will cause that specific article to be downloaded.

       You can also get a  group  of  articles  from  a  group  by  using  the
       following syntax:
                   !comp.os.linux.announce 1-10

       Whichever  method  you use, if the article specified exists, it will be
       downloaded, in addition to any articles retreived via  the  sucknewsrc.
       These ways can be used to get a specific article in other groups, or to
       download an article that was killed.  These articles ARE NOT  processed
       through the kill articles routines.

SUCKNODOWNLOAD

       If sucknodownload exists, it must consist of lines contaning a Message-
       ID, with the <> included, eg:

                   <12345@somehost.com>

       This  will  cause  the  article  with  that  Message-ID  to  NEVER   be
       downloaded.   The Message-ID must begin in the first column of the line
       (no leading spaces).   This  file  overrides  suckothermsgs  so  if  an
       article is in both, it will not be downloaded.

POST FILTER

       if  the  -y  post_filter  option  is  specified  on the command line in
       conjunction with any of the batch modes, then suck will call  the  post
       filter   specified,   after   downloading   the  articles,  and  before
       batching/posting the articles.  The  filter  is  passed  the  directory
       where  the articles are stored (the -dm option).  The filter program is
       responsible  for  parsing  the  contents   of   the   directory.    See
       sample/post_filter.pl  for  a  sample  post  filter.   This  option was
       designed to allow you to add your own host name to  the  Path:  header,
       but if you need to do anything else to the messages, you can.

FOREIGN LANGUAGE PHRASES

       If    the    -l    phrases    option   is   specified   or   the   file
       /usr/local/lib/suck.phrases (defined  in  suck_config.h)  exists,  then
       suck  will  load  an alternate language phrase file, and use it for all
       status & error messages, instead of the built-in defaults.  The command
       line  overrides  the build in default, if both are present.  The phrase
       file contains all messages used by suck, rpost,  testhost,  and  lmove,
       each  on  a separate line and enclosed in quotes.  To generate a sample
       phrase file, run make phrases from the command line.  This will  create
       "phrases.engl",  which  is  a list of the default phrases.  Simply edit
       this file, changing  the  english  phrases  to  the  language  of  your
       choosing,  being  sure  to  keep  the phrases within the quotes.  These
       phrases may contain variables to print items provided by  the  program,
       such as hostname.  Variables are designated by %vN% where N is a one-up
       sequence per phrase.  These variables may exist in  any  order  on  the
       phrase line, for example,
              "Hello, %v1%, welcome to %v2%"     or
              "Welcome to %v2%, %v1%"
       are both valid phrases.  Phrases may contain,  \n, \r, or \t to print a
       newline, carriage return, or tab, respectively.  Note  that  the  first
       line of the phrase file is the current version number.  This is checked
       against the version of suck running, to be sure that the  phrases  file
       is the correct version.

       If  you modify any of the source code, and add in new phrases, you will
       need to regenerate phrases.h, so that everything works  correctly.   To
       recreate, just run make phrases.h from the command line.

SIGNAL HANDLING

       Suck  accepts  two signals, defined in suck_config.h.  The first signal
       (default SIGTERM) will cause Suck to  finish  downloading  the  current
       article,  batch up whatever articles were downloaded, and exit, without
       an error.

       The second signal (default SIGUSR1) will cause suck to  use  the  pause
       values defined with the -w option (see above).

EXIT CODES

       Suck will exit with the following return codes:
              0 = success
              1 = no articles available for download.
              2  = suck got an unexpected answer to a command it issued to the
              remote server.
              3 = the -V option was used.
              4 = suck was unable  to  perform  NNTP  authorization  with  the
              remote server.
              -1 = general error.

HISTORY

              Original Author - Tim Smith (unknown address)
              Maintainers -
              March 1995 - Sven Goldt (goldt@math.tu-berlin.de)
              July 1995  - Robert A. Yetman (boby@pixi.com)

SEE ALSO

       testhost(1), rpost(1), lpost(1).