VSoup1.2.9.42Beta 29-Aug-1999

The multithreaded Souper for OS/2 and Win32

Copyright (c) 1996-1998 by Hardy Griech


Table of Contents


1 Introduction to VSoup

VSoup is a multithreaded network mail and news client program for OS/2 and Win9x/NT.  It transfers mail and news fetched from a POP3 server and NNTP server respectively to packets in SOUP format.  It can also send messages in SOUP reply packets to NNTP / SMTP servers.

VSoup is especially designed to work with Yarn, but it is probable that VSoup will work with most offline newsreaders which expect SOUP as their input and output. VSoup can also be configured to push SOUP to a news server.

The program requires the emx run-time DLLs.  You can get these from e.g.

The emx09c run-times or newer are required.  emxrev should show at least revision 50 for the DLLs.  VSoup may work with an earlier version such as emx09b, but keep in mind that there were many changes in the DLLs concerning multithreading / sockets since emx09a.



MAKE SURE THAT YOU ARE USING THE CORRECT EMX DLL-VERSIONS


2 Legal Issues

This program is heavily based on ideas and modules from Chin Huangs (cthuang@io.org) Souper15.  Thanks to him for both Souper and Yarn.

Please note that bug reports and everything else concerning VSoup should be directed to Hardy Griech (hardy@mardys.de), not to Chin Huang!

Standard Disclaimer

VSoup is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; either version 2, or (at your option) any later version.  For more details about the GPL see the file COPYING contained in this archive.

VSoup is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

Warning

Some news sites might see VSoup as a news sucking utility and might feel offended by its use.

The intention is that VSoup is to be used to receive news for your personal use from a reasonable number of newsgroups.

Misuse of this program could conceivably result in a general ban on the use of this or similar programs to the detriment of responsible VSoup users who certainly don't want a general ban of VSoup.


3 Features


4 Installation

This section describes the installation of VSoup on a step by step basis.  Steps (1)-(4) are for preparation to ensure that you have a system configuration which can run VSoup.

The installation instructions assume that you intend to run VSoup with the help of YarnIo.  If you wish to use VSoup on its own for example to benefit from multithreaded news reception, but do not need YarnIo, simply skip the steps (7)-(11) and parts of (6).

Anyway you can use YARNIO.CMD as an example.

If you experience any problems take a look at the troubleshooting section.

If you are upgrading an older VSoup version, you should have a look at the history section for hints on important changes.


  1. your system must be one of the following:

    • OS/2 2.x with TCP/IP (not tested but should work)

    • OS/2 3.0 (Warp) with the 'Internet Access Kit' installed

    • OS/2 3.0 (Warp Connect) with TCP/IP installed

    • anything above

  2. get the latest version of the emx runtime library and install it or check your current installation with emxrev. This should show a revision level higher than or equal to '50'. If you are not intending to use YarnIo, then add an environment setting of SET EMXOPT=-h40 to your CONFIG.SYS as noted in the environment settings section below.

  3. check your environment variables according to the environment settings section below.

  4. check your %ETC%\SERVICES file to ensure that it contains the following lines:
      smtp         25/tcp mail          #Simple Mail Transfer
      smtp         25/udp mail          #Simple Mail Transfer
      pop3        110/tcp               #Post Office Protocol - Version 3
      pop3        110/udp               #Post Office Protocol - Version 3
      nntp        119/tcp readnews untp #Network News Transfer Protocol
      nntp        119/udp readnews untp #Network News Transfer Protocol
    

    Most probably the %ETC%\SERVICES file is located either in x:\TCPIP\ETC or x:\MPTN\ETC.  If you need to specify non-standard port numbers, you should do that in the command line.  Check the URL specification.

  5. unzip the VSOUP129.ZIP archive in a temporary file directory (%TMP% is a good place).

  6. copy the following files into a subdirectory of your choice (using a subdirectory contained in the PATH statement is always a good choice):

    • VSOUP.EXE, the VSoup executable

    • YARNIO.CMD, the YarnIo script

    • YARNIO.SET, the YarnIo configuration file

      Note:
      YARNIO.CMD & YARNIO.SET must reside in the same subdirectory and must have the same filename, except the extension...

    • If you want YarnIo dial automatically, then you should also copy LOGINISP.CMD and LOGOUTISP.CMD as templates for your own connect/disconnect scripts.

    • OWNSOUP.EXE and/or QSOUP.EXE and/or CONVSOUP.EXE should be copied if required.

    • If you want to have help available, then copy also the documentation: either VSOUP.INF or VSOUP.TXT (both have the same content but different format).

    • If you are interested in the source code, move it also to a specific subdirectory.

  7. review the Command Line Options section below and edit the YARNIO.SET configuration file according to your specific needs.  Also read the comments in YARNIO.SET.

    Note:
    the setup of YARNIO.SET is required only once.  In future, updates will be made by amending YARNIO.CMD.

  8. If you wish YARNIO.CMD to dial for you, you must also setup the scripts LOGINISP.CMD and LOGOUTISP.CMD to reflect your needs.

    Another option is to use your dialer to call your ISP (provider) and start YarnIo after the connection has been established. The disadvantage of doing it this way is that after completion of YarnIo the dialer will not hang up immediately.

    Note:
    If you have only FAT drives you have to rename LOGOUTISP.CMD to something else.  Therefor you have to change the hangupISP setting in YARNIO.SET too.

  9. setup the directory structure for YarnIo:
      %HOME%-- yarn             - subdirectory containing Yarn config file
               :
               +-- in           - root of YarnIo input subdirectories
               |   +-- mail     - primary     subdir for EMail reception
               |   +-- mail2    - optional #2 subdir for EMail reception
               |   +-- :                          :
               |   +-- mail9    - optional #9 subdir for EMail reception
               |   |
               |   +-- news     - primary     subdir for news reception
               |   +-- news2    - optional #2 subdir for news reception
               |   +-- :                          :
               |   \-- news9    - optional #9 subdir for news reception
               +-- out          - subdirectory for EMail&news transmission
               :
    

    In each of the NEWS subdirectories you will need to create an appropriate NEWSRC file as detailed in the Newsrc File section.

    The ..MAIL, ..MAIL2 until ..MAIL9 subdirectories have to be created only.  They should be left empty.

    The number of subdirectories depend on the number of servers you wish to poll.

  10. change the following line in the Yarn-config file (%HOME%\YARN\CONFIG):
      reply-packet=%HOME%\yarn\out\reply.zip
    

    If this is omitted or is incorrect then transmission of replies will not be possible, because Yarn will move its output to a place where VSoup does not expect it!  Of course %HOME% should be replaced by the actual value of HOME.

  11. if you have setup LOGINISP.CMD and LOGOUTISP.CMD, start YarnIo directly.  Otherwise first dial-in to your ISP and then start YarnIo.

When you first start using VSoup I recommend that you add the -M option to each call of VSoup (e.g. in YARNIO.SET) to force generation of the status mail.  This can be a good debugging aid...


4.1 Environment Settings

Environment variables are set in your CONFIG.SYS by lines such as:


SET ETC=D:\TCPIP\ETC

Also they can be set in a dedicated script, which calls VSoup.

EMXOPT
This are the settings for the emx runtime DLLs.  Recommended setting of this variable should contain -h40 to allow 40 file handles (not required, if you are calling VSoup through YarnIo).

ETC
This is needed for accessing the TCP/IP configuration contained in the file %ETC%\TCPOS2.INI.  If -i is specified in the command line, ETC is not required.

HOME
your home directory (can also be specified on the command line).  If HOME is not defined, it defaults to the current directory.

MAILER
command for transmitting EMails (the EMail is piped into the stdin of MAILER).  The MAILER environment variable is only taken into consideration, if an SMTP gateway is not defined otherwise.

NNTPSERVER
hostname of the nntp server (can also be specified in the command line).  This variable is, in my opinion, obsolete and remains only to avoid compatibility problems.

POSTER
command for transmitting news (the article is piped into the stdin of POSTER).    The POSTER environment variable is only taken into consideration, if an NNTP server is not defined otherwise.

TMP
points to the subdirectory which holds temporary files.  VSoup since VSoup1.2.9 does no longer generate temporaries, but who ever knows, if the C library needs this setting.  So be advised to provide a temporary directory.

TZ
setting of your time zone (e.g. mine is MET-1MES). Due to a bug in the emx runtime, the setting of this variable is critical for correct functioning of the emx C library revision 50.  Check the emx runtime documentation for the syntax of the TZ settings.

An incorrect setting of TZ can also cause errors if you appear to be getting mail before it was sent.


4.2 VSoup And YarnIo Troubleshooting

some simple checks can be carried out:


5 Command Line Options

This section describes the VSoup command line options in detail.  An example is presented first.

Example:


VSoup -m -h d:\yourHomedir nntp://your.news.server

This would start VSoup telling it not to fetch mail (i.e. to collect news only) using a home directory called d:\yourHomedir from a news server named your.news.server.  The loginid and password would by default be taken from your TCP/IP configuration.


Global Options
News Receiving Options
Mail Receiving Options
News Transmission Option(s)
Mail Transmission Option(s)
URLs
News Reception


5.1 Global Options

-hdir
sets the home directory for the VSoup operation.  You can also specify your home directory through the environment variable HOME.  Be aware, that -hdir supersedes the HOME environment variable.  Specification of -h. is pretty legal.

-i
ignore the settings of the TCP/IP configuration (VSoup/2 only).

-m
do not fetch mail.  See also the global option -Z.

-M
generate the VSoup status mail .\STSMAIL.MSG in any case.  Default is to generate the message in case of error only.

-n
do not fetch news.

-Q
query status of POP3 and/or NNTP server. Depending on failure or success, the return code of VSoup will be set.  In case of success, the return code indicates, if there are messages or articles waiting for retrieval.  See diagnostic codes for further explanation.

-r
read only mode.  Only the .\AREAS, .\00*.MSG, .\00*.IDX files are written (e.g. %HOME%\NEWSTIME, %HOME%\NEWSRC are not written).  Also the EMails are not deleted from the POP3 server.  Main purpose for this option is debugging.

-s
send replies.  Do not use this option in combination with -m or -n, if you do it will be ignored. See also the global option -Z.

-Tn
throughput must be higher than n, otherwise transfer will be aborted.  Throughput is checked against the limit n every 10s after data transfer has begun.  If 6 samples show not enough throughput, VSoup will be aborted. Default is '0 bytes/s', i.e. it will be checked for a stuck connection.  Use -T-n to check your throughput conditions.  Special case is -T-1, which disables throughput check.

-Z
if -Z is specified, the command line options -m, -n and -s will be used in a more convinient way: the switch will enable the corresponding action, e.g. -ms will enable mail reception and data transmission for this session.


5.2 News Receiving Options

-a
add new newsgroups to the %HOME%\NEWSRC file.  If there are any new groups on the server, the generation of the status message will be forced.  The new newsgroups will be added in the unsubscribed state.

-c[n]
catchup: mark every article as read except for the last n (default is 10).  No articles are actually read, only the .\NEWSRC file is modified.

-Cn
make an initial catchup (see above) with a count of n for newly subscribed groups.  In the newsrc file newly subscribed groups consists of the groupname only (plus an optional ":" followed by an optional "0").

-kn
set maximum news packet size to n KBytes (default is no limit). n indicates the total amount of received messages, not the size of a single message (this can be done through scoring).

-Kfile
set the name of the score file (see note below concerning -K/-N options).

-Nfile
set the name of the NEWSRC file (see note below regarding -K/-N options).

-Sn
receiving strategy (n=0..2).  Speed increases (at least it should) in the direction 0 to 2, danger of receiving crossposted articles increases also from 0 to 2.  The default of 1 is ok for most cases, but this parameter is an issue of fine tuning!

How the strategy parameter operates:

-S0
groups are read sequentially, i.e. all threads are fetching articles from only one group.

-S1
if one thread goes into waiting state the next group will be accessed - only small modification of the above.

-S2
VSoup tries to keep all threads busy.  I.e. each thread accesses one dedicated group, groups are read in parallel (if there are no more groups to access, the waiting threads are used for parallel reading from one group).

Recommendation:

  • If you have a lot of groups with small amount of articles per fetch and only a little bit cross-posting, -S2 will be the best option for you.  If you allow reception of crossposted articles (see option -x), -S2 will be best for you in any case.

  • if you are accessing groups with large articles (i.e. cost of double reception of crossposted articles is high), -S0 will be the best for you.

-tn
receive the news with n threads, i.e. connect to the NNTP server n times (limits are 1-10, default 4).

-u
create news summary.  Output can be found in the .\00*.IDX files.  Be aware that the summarized articles are marked as read (one way to get out of this, is to call VSoup with -r).

-x
do not process news Xref headers, i.e. allow reception of crossposted articles.


5.2.1 Note Concerning The -K And -N Options

If you are using the -h option then use of either of the options -K or -N is not recommended, because behavior is not very transparent.

If the -h option is placed behind the -K / -N options the result will not be as expected - VSoup (and Souper) will revert to SCORE and NEWSRC in the new specified home directory.

If -K / -N options are placed behind the -h option and do not contain absolute paths, they will not be located in the home directory specified by -h.

This is confusing and will be fixed in a future release.

It is better and cleaner to use -h and setup the special SCORE/NEWSRC files in that subdirectory!


5.3 Mail Receiving Options

-D
If specified, VSoup will logout and login after reception of each EMail, thus effectively forcing deletion of the letter on the POP3 server.  This is useful, if your connection to the POP3 server is aborted often and your mailbox is full.  Normal behaviour is to retrieve EMail without disconnecting/connecting.

-Y
for some POP3 servers the APOP auto detection will lead to a wrong result, -Y will correct this misinterpretation.


5.4 News Transmission Option(s)

News transmission allows, as a special feature, specification of up to four destination servers.  VSoup tries to transmit the articles in the order as specified in the command line until the article has been successfully transmitted to one server.

E.g. if transmission to server1 fails because the corresponding newsgroup does not exist on that server, VSoup will try to send the article to server2.  If that was successful, VSoup will assume, that server2 will correctly distribute the article to the USENET and therefor will not try to send the article to server3 or server4 (if given in the command line).

Other option(s) are:

-Sn
transmission strategy (n=0..1).  n=1 means standard transmission, n=0 means to simulate a push feed.

n=0 is for inter-server news transmission only.  For normal article transmission use n=1 in any case or omit this parameter.

If -Z has been specified, the news transmission strategy can only be specified, if there is no -n in the command line (otherwise -S would be ambigious).  If there is a -n in the command line, news transmission strategy reverts to the default -S1.


5.5 Mail Transmission Option(s)

-X
If specified, VSoup will ignore the CC and BCC headers in outgoing mail.


5.6 URLs

The addresses of the hosts are given in Unified Resource Locator (URL) form.  These do not fully conform to the standard, so a short explanation follows:

The URL-feature makes VSoup different to Souper16, which wants to see a %HOME%\NEWSAUTH file for NNTP authorization.

Notes:

  1. The ! is the escape character to generate special characters in the URL.  The ! must be followed by the hex code of corresponding ASCII code of the special character (exactly two digits).  E.g. if your password contains a @ you have to insert !40 at that place instead.

  2. The % can be used alternatively for the !.

  3. The + character represents a blank in the URL specification. If you have to insert a literal +, you have to use the escape sequence %2b.

  4. It is not intended to implement other protocols like http or so.

  5. If port is not specified, the actual port number is taken from the %ETC%\SERVICES file.  This is the recommended way of port number handling.


5.6.1 Brief Description Of NNTP/POP3/SMTP

Mail can be compared to the postal service, just like a letter. EMail-reception is handled through POP3 server (pop3:// prefix), transmission through SMTP gateways (smtp:// prefix).

News messages are more like broadcasting, everybody will 'hear' your message.  News messages are transmitted and received via NNTP servers (nntp:// prefix).

Perhaps it is a little bit confusing, that you can also deliver news via EMail service (just like the Yarn list).  The other way around is not possible...

Anyway, please don't mix up news and EMail (your EMail might be news, but in these terms they remain EMails).


5.6.2 Evaluation Order Of URLs

VSoup evaluates URLs in the following order:

  1. take all information from the 'Internet Connection for OS/2' notebook settings

  2. check the NNTPSERVER environment settings

    Note1:
    NNTPSERVER is a URL without leading nntp://

    Note2:
    there are no environment variables for the SMTP / POP3 setup.

  3. command line options

If you specify only e.g. nntp://your.news.server in the command line (without userid/password), the userid and password from the TCP/IP configuration are taken as a standard value.


5.7 News Reception

For news reception you have the following options (which cannot be combined):

New newsgroups are added to the %HOME%\NEWSRC file, when news is received in the standard way and the command line option -a is given.


6 Diagnostics

VSoup returns with an exit code of 1, if any operation failed.  Otherwise return code will be 0.

Failing operations are:


.\STSMAIL.MSG

In case of an error condition the status message .\STSMAIL.MSG will be generated.  Under the following additional cases .\STSMAIL.MSG will be generated too:


Query Status With Command Line Option -Q

The command line option -Q queries the status of the POP3 and/or NNTP server.  The return code of VSoup will be set according to the following list:

bit 1=1 (=2)
connect to POP3 server failed,

bit 2=1 (=4)
connect to POP3 server successful and there are messages in the mailbox,

bit 3=1 (=8)
connect to NNTP server failed,

bit 4=1 (=16)
connect to NNTP server successful and there are articles ready for retrieval.

In either error case bit 0 (=1) of the return code will be set. The VSoup console output and .\STSMAIL.MSG are showing more details.

As an example, the return code 19 (1+2+16) would mean 'connect to POP3 failed' and 'there are articles on your NNTP server'.


Future extensions

The following failing operations are NOT yet implemented fully:

It is possible, that diagnostics code will change in the future. Return codes with a cleared bit 0 (like 0,2,4,...)  will indicate a non-fatal condition, return codes with a set bit 0 will indicate fatal conditions.


7 Utilities

This section describes the several utilities contained in VSOUP129.ZIP archive in more detail.  For most users only the YarnIo files will be of interest.


YarnIo
OwnSoup
QSoup
ConvSoup
ModifyEmxH
RmHigh


7.1 YarnIo

As stated before YarnIo - actually consisting of YARNIO.CMD, YARNIO.SET and optionally of LOGINISP.CMD and LOGOUTISP.CMD - is responsible for safe VSoup I/O operations.  The script(s) handle(s) the complete I/O between Yarn and the internet world.  Newsgroups are read from up to nine NNTP servers, mail/news packets are transmitted and mail is received again from up to nine POP3 servers - all simultaneously.  Actions can be disabled individually (type YARNIO ? for more information).

The script should be started directly after the connection has been established.  It is also possible to let YarnIo dial out to establish the connection. To do this you must provide the two scripts LOGINISP.CMD and LOGOUTISP.CMD (see the installation section).

Most items of the user configuration are in a file called YARNIO.SET.  It contains the settings for the initialization of the external programs including VSoup, import ...  calls.

Sorry, but the directory structure must be set up manually!  You should follow the structure given above in the installation section.


7.1.1 YarnIo.Set

For configuration of YarnIo, YARNIO.SET is required.   YARNIO.SET must reside in the same directory as YARNIO.CMD and must have the same filename prefix (i.e. YARNIO).

YARNIO.SET contains the statements which determine how YARNIO.CMD is to call the several commands.  Notice, that the lines contained in YARNIO.SET will be interpreted by REXX, i.e. they must follow REXX syntax rules!

To give you an idea what must be configured in YARNIO.SET, an example follows.  There is a YARNIO.SET contained in the archive, which includes more comments.

Example:


  :
'@SET NNTPSERVER='

preImportProg = 'ownsoup -q rgriech stuff4me OwnTemp'
importProg    = 'import.exe -u'
soupProg      = 'vsoup.exe'
soupSend      = soupProg '-s nntp://xmt.nntp.server'
soupRcvNews   = soupProg '-mai' '-h' rcvNewsDir 'nntp://1st.nntp.server'
soupRcvNews2  = soupProg '-mai' '-h' rcvNews2Dir 'nntp://2nd.nntp.server'
soupRcvMail   = soupProg '-n'
pingHost      = 'slipwait 2 2>&1 > nul'
connectISP    = 'cmd /c loginisp.cmd NOWAIT'
hangupISP     = 'cmd /c logoutisp.cmd'
unzipProg     = 'unzip.exe -oq'
zipProg       = 'zip -0mq'
  :

Remarks


7.1.2 LoginIsp

LOGINISP.CMD is an optional script, which allows YarnIo to dial in to your ISP.  The following example script will connect using the internet dialer. If you are a customer of Advantis the script will work for you without any changes - of course you have to insert the correct account user passwd information.

Example:


/*
  LoginIsp  -  rg211096

  Login to your ISP.  If Option NOWAIT is given, the command will not wait
  until connection has been established.

  You have to do the following configuration:
  -  the line '...logoutisp...' must show the effective logoff script
  -  the line '...start...' must show the effective call of the dialer
  -  the line '...ping...' must show a pinger to check connection
 */

call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
call SysLoadFuncs

TRACE('')

option = ARG(1)

DO FOREVER
    '@cmd /c logoutisp.cmd'
    '@start dialer.exe account user passwd '-m'
    IF option = 'NOWAIT' THEN
        LEAVE

    DO j = 1 TO 20
        rc = SysSleep(3)
        '@ping www.cdrom.com 2>&1 > nul'
        IF rc = 0 THEN
            EXIT
    END j
END

EXIT

Note1:
You will find an almost identical LOGINISP.CMD in the VSOUP129.ZIP archive.

Note2:
This LOGINISP.CMD requires a working LOGOUTISP.CMD.


7.1.3 LogoutIsp

LOGOUTISP.CMD is an optional script, which allows YarnIo to disconnect from your ISP.  The following example script will disconnect using the internet dialer. If you are a customer of Advantis the script will work for you without any changes - other than maybe changing dialer and comPort.

This script is a little bit more complicated than LOGINISP.CMD, because it will

  1. block itself to avoid multiple instances of itself

  2. wait until the dialer has been closed

  3. force a disconnect of the modem through switching DTR

An almost identical version of the script is contained in the VSOUP129.ZIP archive.

Example:


/*
  LogoutIsp  -  rg211096

  Logoff from your ISP.

  The lines dialer/dialerClose,comPort must be configured
*/

call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
call SysLoadFuncs

dialer      = 'c:\tcpip\bin\dialer.exe'
dialerClose = dialer '-c'
comPort     = 'com3'

TRACE('')

parse source . . compCmdName
cmdName = filespec('name',compCmdName)
tmpDir  = value('tmp',,'os2environment')

lockFile = ''
IF tmpDir = '' THEN
    SAY 'please define %TMP% for locking' CmdName
ELSE DO
    lockFile = tmpDir || '\logout.sem'
    if stream( lockFile,'c','open write') \= 'READY:' then DO
        SAY CmdName 'already active...'
        EXIT
    END
END


if isActive(dialer) then do
    SAY 'logging off...'
   '@start /min' dialerClose

   rc = SysSleep( 2 )
   DO FOREVER
       IF \isActive(dialer) THEN
           LEAVE
       call HangupNow
       rc = SysSleep( 2 )
   END
end
call HangupNow

IF lockFile \= '' THEN DO
    rc = stream( lockFile,'c','close' )
    rc = SysFileDelete( lockFile )
END

EXIT


HangupNow:
'@mode' comPort || ',dtr=on  > nul'
'@mode' comPort || ',dtr=off > nul'
'@mode' comPort || ',dtr=on  > nul'
RETURN


isActive: PROCEDURE
prog = ARG(1)

'@pstat /c | RXQUEUE'

prog = TRANSLATE(prog)
found = 0
DO ii = 1 TO queued()
    PULL line
    IF POS(prog,TRANSLATE(line)) \= 0 THEN do
        found = 1
        LEAVE
    END
END
RETURN found


7.2 OwnSoup

OwnSoup, with the help of the Yarn import program, copies news articles matching a specific pattern into a mail folder.   OwnSoup can be seen as a notification program to allow easy tracking of news threads you are involved in.


Syntax

ownsoup [-h] [-b] [-q] pattern groupname outputfile

where

[-h]
search for pattern in header of article only,

[-b]
search for pattern in body of article only.  The subject line of the header is considered to be part of header and body.

If -h or -b is not specified the default is to search the complete article,

[-q]
be quiet.  Only the number of matches found will be displayed,

pattern
is your search pattern which should be defined according to the regular expression syntax,

groupname
is a dummy groupname to allow easy filtering.  All the matching articles will contain the header line X-ownsoup: groupname,

outputfile
is the name of the temporary outputfile (the .MSG-extension will be added by OwnSoup).

The generated outputfile will be registered in the .\AREAS file, thus import will also find the outputfile. Note that the outputfile will be deleted after the import so that the actual name you choose is almost unimportant.


Example Setup of OwnSoup


Restriction

Do not set up "Personal" as a newsgroup, because Yarn would skip the filtered articles in this case due to the Message-ID:.


Others


7.3 QSoup

QSoup (pronounce 'queue soup') appends mail and news messages to the Yarn reply packet file for transmission by VSoup.  The messages must contain all required header fields, i.e. QSoup does not manipulate the content of the message, except that it does '\r' stripping and interpretes ^Z as end of message.


Syntax

qsoup [-m] [-v] [-i] [-hdir] [-lfile] [inputfile]

where

[-m]
the message input to QSoup is a mail, default is news,

[-v]
be verbose,

[-i]
ignore all options coming behind the -i.  This is useful, if the calling program appends command line arguments which are not known by QSoup,

[-rfile]
set the name of the reply packet to file.  Default is to read the name of the reply packet from %HOME%\YARN\CONFIG in the line reply-packet,

[-lfile]
use file as the lock file for access control to the reply packet.  Default is to use %YARN%\HISTORY.PAG,

[inputfile]
is the name of the message file.  If omitted, the message will be read from stdin, thus allowing to connect the message provider and QSoup through a pipe.


Example Setup Of QSoup And Sendmail

Using sendmail has several advantages.  First, it is a standard tool which is used by many programs for mail delivery (e.g. Lynx).  Second, it is very flexible and allows routing of messages depending on their recipients address.  The second point is also the weakest point of sendmail: it is hard to configure.

This example shows my setup of sendmail.  But be warned: I am no sendmail expert and to get this configuration running was a lot of fiddling!


My changes to the standard configuration were as follows:

After you have done the setup, you should check it with a dummy mail.  Type in the following:


sendmail -t
--->IBM OS/2 SENDMAIL VERSION 1.3.17
--->reading ...\sendmail.cf 10
to: dummy@x.y.z
subject: sendmail/qsoup testing

Hello
^Z                    (this is a ctrl-Z!)
--->11/09/96 19:01:03 mail delivered from:  YourName

Now you can check the successful delivery with the command unzip -Cp -aa reply-packet mail.msg. The output should be something like that:
Received: by ibm.net (IBM OS/2 SENDMAIL VERSION 1.3.17/2.12um) id AA3986; ...
Date: Sat, 09 Nov 96 18:59:40 +0100
From: YourName
Message-Id: <9611091759.AA3986@ibm.net>
To: dummy@x.y.z
Subject: sendmail/qsoup testing

Hello

Note, that sendmail inserted the missing Date:, From: and Message-Id: header lines (the redundant header Received: too).  YourName should show the correct settings.

After successful test you should delete the reply packet file. For the actual 'diff' of my sendmail.cf and sendmail.umf see also the FAQ.


Miscellaneous


7.4 ConvSoup

ConvSoup is a small program which converts the VSoup SOUP output files, which are in binary format ("bn" & "Bn") into UNIX mailbox format ("mn") and USENET batch format ("un") respectively. The output files are written with '\n' as line separator.

ConvSoup must be started in the subdirectory that contains the .\AREAS and the .\*.MSG files.

ConvSoup is useful for people who wants to use VSoup with offline newsreader which do not recognize VSoup's packet format directly.  Although VSoup complies to SOUP, some readers only know about UNIX mailbox and USENET batch format.  E.g. Changi's RNews expects USENET batch format on its input.


7.5 ModifyEmxH

This script is of interest for people who wants to compile VSoup on their own.  MODIFYEMXH.CMD is required for multiple inclusion of the os2.h and os2emx.h header files.

MODIFYEMXH.CMD reads form stdin and copies to stdout. Keep in mind, that multiple inclusion of the above mentioned headers is not standard.  It is just for my convenience.


7.6 RmHigh

RMHIGH.CMD removes the highlighting from VSOUP.TXT. This is useful for people who wants to read the documentation in text mode and have no pager or editor available which understands the poor (wo)mans highlighting used in VSOUP.TXT.

GNUs Less is an example of a pager that handles the distributed VSOUP.TXT correctly.


8 Files

This section describes all the input and output files used and generated by VSoup in detail.  Under normal circumstances %HOME%\NEWSRC and %HOME%\SCORE are the only files of interest.  For description of YarnIo files, see the YarnIo section.


The Newsrc File
The Score File
Other Files


8.1 The Newsrc File

%HOME%\NEWSRC contains the list of newsgroups.

':'
behind the name indicates subscribed group,

'!'
indicates an unsubscribed one.

The list of newsgroups can be obtained from the news server by using the -a option of VSoup (see FAQ) or can be prepared with a text editor as follows:

List the newsgroups you want to receive, one per line, and end each line with a colon.

Example:


comp.answers:
news.answers:
rec.humor.funny:

VSoup will keep track of fetched articles by recording the article numbers in this file.


Syntax

For anyone who really wants to know, the syntax of the file is as follows:

%HOME%\NEWSRC ::= lines

lines ::= line lines | empty

line ::= groupname sep article-ranges "\n"

sep ::= "!" | ":"

article-ranges ::= article-ranges "," art-range | art-range

art-range ::= " " art-num | " " art-num "-" art-num

groupname is the name of a group, art-num is a long integer.  article-ranges must be sorted in ascending order to be recognized correctly.  Blanks are only allowed at the indicated positions.

Under normal circumstances, only the sep is important to the user for subscribing and unsubscribing groups.


8.2 The Score File

The score file specifies criteria used to exclude articles from the VSoup packet.  You can kill articles - before loading the actual article body - that have a specific subject, are from a specific poster, or contain a particular string anywhere in the header.  Even killing of articles which do not contain a specific pattern in their header is possible with scoring (inverse logic).

%HOME%\SCORE is the default score file.  The name and subdirectory of the score file can be configured by specifying the -Kscorefile command line option.  This allows one single score file for all news servers you wish to access.

An entry in the score file, also called score-section, has the format:

score-group "{"
    score-rule
           ...
"}"

with score-rule being one of the following alternatives:

  1. score "lines" ">" number

  2. score "lines" "<" number

  3. score "date" ">" age-in-days

  4. score "date" "<" age-in-days

  5. score "pattern" "header" reg-exp

  6. score "pattern" where reg-exp

  7. score "header" string

  8. score where string

score-rules 1. and 2. are scoring the article length, 3. and 4. are scoring the article age, 5. and 6. are both working with regular expressions (reg-exp), 7. and 8. are working with literal strings (string). 5. and 7. are scanning the complete header for the corresponding patterns, 6. and 8. are matching its pattern only in the corresponding header line where.


Description of the score-section elements

score-group
score-group is a regular expression.  The contained score-rules are applied to newsgroups which are matched by the score-group regular expression completely.  If score-group is the string "all", the score-rules are applied to all newsgroups.

score-rule
see above.

score
is the score which has been assigned to the score-rule. All scores of score-rules matching an articles header are added up and then compared to the kill-threshold. If the total score is less than the kill-threshold, the article is killed.

where
specifies where to search in the header.  from searches the From: line, subject searches the Subject: line and so on.  The special where-pattern "header" searches all the lines in the header of the article.

reg-exp
is the string in form of a regular expression to search for.

string
is the literal string to search for.

number
is a line number to which the actual article length is compared.

age-in-days
is the article age in days.  Comparison with ">" means 'article older than...'


Special score-sections

There are two special score-sections:

"quit"
stops reading of the score file immedialtely.

"killthreshold" kill-threshold
sets the threshold for killing articles, i.e. the lowest limit articles should fulfill to not being killed.  The threshold is global (i.e. applies to all groups and rules) and the last occurance of "killthreshold" counts.  Default value is zero.

Lines beginning with a '#' in the first non-blank position are treated as comments.


Remarks


Syntax

The exact syntax of the score file is as follows:

%HOME%\SCORE ::= {line "\n"}*

line ::= '#' text | score-section

score-section ::= "all" "{" score-rules "}"
                 | score-group "{" score-rules "}"
                 | "killthreshold" number
                 | "quit"

score-rules ::= score-rule "\n" {score-rules}

score-rule  ::= score "lines" ">" number
            | score "lines" "<" number
            | score "date" ">" age-in-days
            | score "date" "<" age-in-days
            | score "pattern" "header" reg-exp
            | score "pattern" where reg-exp
            | score "header" string
            | score where string


Note:
"\n" is the newline character.  It is mandatory!


8.2.1 Regular expression syntax

The following description has been taken from the man regexp pages (BSD experimental).

A regular expression is zero or more branches, separated by |. It matches anything that matches one of the branches.

A branch is zero or more pieces, concatenated.  It matches a match for the first, followed by a match for the second, etc.

A piece is an atom possibly followed by *, +, or ?.  An atom followed by * matches a sequence of 0 or more matches of the atom.  An atom followed by + matches a sequence of 1 or more matches of the atom.  An atom followed by ? matches a match of the atom, or the null string.

An atom is a regular expression in parentheses (matching a match for the regular expression), a range (see below), . (matching any single character), ^ (matching the null string at the beginning of the input string), $ (matching the null string at the end of the input string), a \ followed by a single character (matching that character), or a single character with no other significance (matching that character).

A range is a sequence of characters enclosed in [].  It normally matches any single character from the sequence.  If the sequence begins with ^, it matches any single character not from the rest of the sequence.  If two characters in the sequence are separated by -, this is shorthand for the full list of ASCII characters between them (e.g. [0-9] matches any decimal digit).  To include a literal ] in the sequence, make it the first character (following a possible ^).  To include a literal -, make it the first or last character.

Attention:
If you need more information on the topic regular expressions please refer to Bob Rushs Regular Expressions for Dummies.


8.3 Other Files

.\COMMANDS

contains lines with the syntax: 'sendme' groupname article-ranges.  .\COMMANDS is executed instead of standard fetching of news (see also News Reception).  After successful .\COMMANDS processing, the file will be deleted.

Note:
articles which have already been read (marked in %HOME%\NEWSRC) will be skipped!


%HOME%\NEWSTIME

contains the time of the last NNTP connection.  This is for fetching of new newsgroups.  If %HOME%\NEWSTIME does not exist, all currently available newsgroups are fetched from the server when VSoup was called with the -a option.


.\00*.MSG

contain the received messages (news articles & EMail).  The files are written in the following SOUP formats:

Note that the format of the message files can be changed to UNIX mailbox and USENET batch using ConvSoup.


.\00*.IDX

contain the received newsgroup summaries (-u option). The files are written in the SOUP "ic" format.


.\STSMAIL.MSG

contains the status message generated by VSoup.  This file is written in the SOUP UNIX mailbox format ("mn").  Lines are delimited by a single '\n'.


.\AREAS

contains the table of contents of the received .\00*.MSG / .\00*.IDX files (+ .\STSMAIL.MSG).


.\NEWS.MSG

contains the news messages that should be sent to the NNTP server.  The following SOUP formats are supported:

"B"
Binary 8-bit clean news format.  The files are read in binary mode but transferred in text mode to the NNTP host,

"u"
USENET batch format with the area name "news". The files are read in binary mode, thus '\r\n' pairs are treated as two characters (this is not according to RFC1036 but according to Soup12.Html).


.\MAIL.MSG

contains the mail messages that should be sent to the SMTP server.  The following SOUP formats are supported:

"b"
Binary 8-bit clean mail format.  The files are read in binary mode but transferred in text mode to the SMTP gateway,

"u"
USENET batch format with the area name "mail". The files are read in binary mode, thus '\r\n' pairs are treated as two characters (this is not according to RFC1036 but according to Soup12.Html).


.\REPLIES

contains the table of contents of the .\NEWS.MSG / .\MAIL.MSG files to be transmitted.  Instead of the above file names other names could be used too.


9 Insufficiencies, Bugs & Plans

Insufficiencies

Bugs

Plans


10 Author & Acknowledgements

Author

Hardy Griech
Rosenfelsweg 14
79540 Lörrach
Germany

EMail:  mailto:hardy@mardys.de%20(VSoup%20Acknowledgements)


Acknowledgements


11 History


Version 1.2.9 (not yet released)
Version 1.2.8 (190497)
Version 1.2.7 (120297)
Version 1.2.5 (091196)
Version 1.2 (061096)
Version 1.1ß (010996)
Version 1.0ß (010896)


Version 1.2.9 (not yet released)


Version 1.2.8 (190497)


Version 1.2.7 (120297)


Version 1.2.5 (091196)


Version 1.2 (061096)


Version 1.1ß (010996)


Version 1.0ß (010896)


12 FAQ

This sections contains several frequently questions and the corresponding answers.  The questions are subdivided into several sections.  Those are:


General
Setup
Setup / Periphery
Operation / General
Operation / Scoring
Operation / Utilities
Trouble Shooting
More Information
Download and related stuff


12.1 General


What are the major differences between the several VSoup ports?


What are the major differences between the several VSoup ports?

What are the major differences between the several VSoup ports?

Currently, there are two ports of VSoup.  The diffences are:

VSoup/2
Is the best supported version by my side.  All the special scripts ( YarnIo etc) and most of the examples are dedicated to OS/2.

VSoup95/NT
There are a few limitations to the VSoup95/NT version. Those are:

  • The command line option -i does not work for obvious reasons.  I.e.  one has to specify all the required server URLs in the command line.

  • There is no special Win95/NT help file available although VSoup95/NT users have the HTML and text versions of the help file available.

  • The usually contained utilities (e.g. OwnSoup) are not yet supplied with the distribution.

  • None of the scripts contained in VSoup/2 will work with VSoup95/NT (because they are written in REXX).

This means, that the VSoup95/NT port can be seen as a stripped down version.  Nevertheless there are some other tools available.  E.g. see Torben Weiberts CrossPoint / SOUP utilities.

BTW: I am really waiting for one person who wants to port VSoup to Linux.  Interested individuals first should check the differences between the OS/2 and the Win95/NT versions: they are minimal.  So the expected workload to port VSoup to Linux is also minimal.  Only requirements are, a little (better more) C(++) experience, some time to spend, and of course Linux on your computer.  Mail me.


12.2 Setup


Give me sample scripts for simple VSoup IO operation.
How to move the VSoup status mails into a Yarn pseudo newsgroup?


Give me sample scripts for simple VSoup IO operation.

Give me sample scripts for simple VSoup IO operation.

Simple Reception:
Because this is a simple approach, NEWSRC & SCORE resides in the %HOME% directory.

  • change to a directory for IO operation, e.g. c:\vsoup.

  • call VSoup, e.g.
    vsoup -M nntp://your.news.server pop3://your.pop3.server
    

    The output of the VSoup operation will be in the current directory, i.e. in c:\vsoup in this example.  If your 'internet settings' are setup correctly by your dialer, you could omit the nntp:// and pop3:// specifications in the command line.

  • feed the received news/EMails and the by VSoup generated status mail into the database of your newsreader.  For Yarn the import program will be used (e.g. import -u).

If you are using different programs for handling news/EMails, you could do two sequential invocations of VSoup:


vsoup -Mm nntp://your.news.server
handle_news_import
vsoup -Mn pop3://your.pop3.server
handle_mail_import

Of course this VSoup instances could also be started parallel through e.g.:
start do_news_reception
start do_mail_reception

This approach requires a little bit more effort than the sequential one.  Check YarnIo as an example.

Simple Transmission:

  • change to the directory where your reply packets (e.g. reply.zip) reside.  If they are zipped (or packed in another way), you have to unzip/unpack them before VSoup will be called (e.g. unzip -oq reply.zip & del reply.zip).

  • call VSoup, e.g.
    vsoup -Ms nntp://your.news.server smtp://your.mail.gateway
    

    Failure of transmission should be handled in a proper way, e.g. if .\REPLIES still exists, you have to rezip the not transmitted news/mails (for Yarn IO you have to invoke zip -0m reply.zip replies news.msg mail.msg).  If your 'internet settings' are setup correctly by your dialer, you could omit the nntp:// and smtp:// specifications in the command line.

  • handle the by VSoup generated status mail (e.g. import -u for Yarn IO).

If you are using different programs for handling news/mail, you could do two sequential invocations of VSoup or you could start two VSoup parallel (see above).

IO for Yarn with simple scripts

We assume, that the IO subdirectory is at c:\vsoup, the news/EMail reader/writer is Yarn and the server URLs are taken from the 'internet settings', a status mail is generated by VSoup, the reply packet is stored by Yarn to c:\vsoup\reply.zip, the NEWSRC & SCORE (if one exists) are located in %HOME%:

Script for simple reception:

c:
cd \vsoup
vsoup -M
import -u

Script for simple transmission:

c:
cd \vsoup
unzip -oq reply
del reply.zip
vsoup -Ms
import -u
zip -0m reply replies news.msg mail.msg


How to move the VSoup status mails into a Yarn pseudo newsgroup?

How to move the VSoup status mails into a Yarn pseudo newsgroup?

From now on the VSoup status mails are put into the newsgroup VSoupStatus.  Because the Subject: header also contains the server names, Yarn will automatically sort the status mail/news by action.


12.3 Setup / Periphery


Can you show me the 'diff' between your sendmail.cf and...
Can I use VSoup together with Changi?
Can I use VSoup together with my local news server in a push configuration?
Can I use VSoup together with another offline newsreader...
Anything hidden?


Can you show me the 'diff' between your sendmail.cf and...

Can you show me the 'diff' between your sendmail.cf and the original sendmail.uml?

Of course, but you should be capable of reading 'diffs'.  Also be aware, that sendmail requires tabs as delimiter between the ruleset fields.


*** sendmail.uml        Tue Oct  3 23:09:04 1995
--- d:sendmail.cf       Sat Nov  9 19:20:30 1996
***************
*** 1,3 ****
--- 1,7 ----
+ Cwmardys.de
+ Dwmardys.de
  #########################################################################
  #                                                                       #
  #  Sendmail                                                             #
***************
*** 102,108 ****
  #
  # If macro R is undefined, then mail for internal destinations will be
  # delivered directly
! DDYour.Domain

  # Internal, directly connected domains
  #
--- 106,112 ----
  #
  # If macro R is undefined, then mail for internal destinations will be
  # delivered directly
! DD

  # Internal, directly connected domains
  #
***************
*** 154,160 ****
  # SMTP read timeout
  Or15m
  # Queue directory - this must be changed if TCP/IP is moved!
! OQC:\MPTN\ETC\mqueue
  # Always queue for safety
  Os
  # Time to live in the queue
--- 158,164 ----
  # SMTP read timeout
  Or15m
  # Queue directory - this must be changed if TCP/IP is moved!
! OQd:\ETC\MQUEUE
  # Always queue for safety
  Os
  # Time to live in the queue
***************
*** 173,179 ****
  #
  HReceived: $?sfrom $s $.by $j ($v/$Z) id $i; $b
  H?D?Date: $a
! H?F?From: $q
  H?M?Message-Id: <$t.$i@$j>
  H?D?Resent-Date: $a
  H?F?Resent-From: $q
--- 177,183 ----
  #
  HReceived: $?sfrom $s $.by $j ($v/$Z) id $i; $b
  H?D?Date: $a
! H?F?From: Hardy Griech <hardy@mardys.de>
  H?M?Message-Id: <$t.$i@$j>
  H?D?Resent-Date: $a
  H?F?Resent-From: $q
***************
*** 297,302 ****
--- 301,307 ----
  R$* : $* ;              $#error $@ USAGE $: "list:; syntax illegal for...
  R<@ $+>                 $#error $@ USAGE $: "user address required"
  R<$* : $* >             $#error $@ USAGE $: "colon illegal in host name part"
+ R$+<@$+>                $#local $:$1

  # handle numeric address spec
  R$* < @ [ $+ ] > $*     $#smtp $@ [$2] $: $1 < @ [$2] > $3      numeric...
***************
*** 387,393 ****
  #

  Msmtp,  P=[IPC], F=mDFMuX, S=10, R=0, A=IPC $h
! Mlocal, P=C:\TCPIP\UMAIL\UMAILER.EXE , F=lsm, S=10, R=0, A=-dest C:\TCP...
  Mprog,  P=xxx, A=Required by sendmail but unused


--- 392,398 ----
  #

  Msmtp,  P=[IPC], F=mDFMuX, S=10, R=0, A=IPC $h
! Mlocal, P=d:\b\32\qsoup.exe , F=lmnDFM, S=10, R=0, A=-m -i $u
  Mprog,  P=xxx, A=Required by sendmail but unused


Can I use VSoup together with Changi?

Can I use VSoup together with Changi?

Yes, you can use VSoup as the news feed for Changi. For reply transmission Chanx must still be used.  The following setup should work:

The above is not tested!  If anybody likes to confirm the procedure, please send me an EMail.  Anyway the .\STSMAIL.MSG is not handled by the above procedure.

Remark:
The question 'why should I use VSoup together with Changi?' is triggered by the fact that several news servers do not allow the NEWNEWS command, which is used by Chanx for multithreaded news reception.


Can I use VSoup together with my local news server in a push configuration?

Can I use VSoup together with my local news servers in a push configuration?

Note, that this question should be seen in the context, that you have installed a news server in your local area network and like to use VSoup as a feed for this news server because VSoup is such much faster in fetching articles than your local news server (or your ISP does not push articles to your news server but your news server requires pushing (e.g. InterNotes News).

Under normal circumstances you should not use the push option, in most cases your ISP will deny such requests anyway.

Back to the original question and its answer:

Yes, you can use VSoup as a push feed for your news server.  The trick behind all this is to receive news as usual with VSoup, after successful reception rename the .\AREAS file to .\REPLIES and start VSoup with VSoup -s -S0 nntp://my.own.news.server.

To use VSoup as a push feed your local news server must understand IHAVE.  Check RFC977 and RFC1036 for more information.

The VSoup push feed has been successfully tested with the InterNotes News server for Lotus Domino (however the bugs in InterNotes News still remain.  If anybody has InterNotes News (for Domino 4.5x) successfully configured for push feed, please let me know).


Can I use VSoup together with another offline newsreader...

Can I use VSoup together with another offline newsreader than Yarn?

VSoup can be used as news/mail client for all offline newsreaders which expect SOUP format as input and generate articles in SOUP format on the output side.  Perhaps ConvSoup has to be used to convert the received messages into the correct data format known by your newsreader.

For squish based newsreader there exists a free converter which makes VSoup usable also for people prefering such readers. Check Timo Maiers page for more information.

CrossPoint utilities which connect XP and VSoup can be found on Torben Weiberts page.

Reports of successfully combining VSoup with other newsreaders than Yarn and the corresponding recipes are highly welcome and (c|sh)ould be submitted to me.


Anything hidden?

Anything hidden?

Of course, there are also some hidden features!  At a former employer I was responsible for a small internet gateway. News & Mail were polled by VSoup from our ISP each hour and on reception the data was transmitted to a Domino Server.


12.4 Operation / General


How do I get a listing of all available newsgroups?
How to clean up the NEWSRC file?
How to subscribe to a newsgroup?
How to unsubscribe and delete a newsgroup?
Can I abort VSoup operation safely?
How do I call VSoup to send news to more then one news server?


How do I get a listing of all available newsgroups?

How do I get a listing of all available newsgroups?

Delete the file NEWSTIME in the directory of your NEWSRC file and call VSoup with the -a option the next time.  After that you will get a status mail and the available groups are appended to your NEWSRC file.  Note that groups already contained in NEWSRC will not appear in the status mail.


How to clean up the NEWSRC file?

How to clean up the NEWSRC file?

After a while the NEWSRC will contain many unsubscribed groups if VSoup will be called with the -a option. You can get rid off those unsubscribed groups with the following commands:


cd 'directory of newsrc'
find ":" < newsrc > newsrc.tmp
copy newsrc.tmp newsrc
del newsrc.tmp


How to subscribe to a newsgroup?

How to subscribe to a newsgroup?

On the next import to Yarn, import will add the new group to the %YARN\ACTIVE file automatically with defaults specified in the %HOME%\YARN\CONFIG file (keep and max-keep entries).  It is not required to invoke the Yarn newgroup command.  The new group will also appear in the newsgroup selection level of Yarn.

Keep in mind that there are several NEWSRC files!  Some of them are used by VSoup (especially if you access multiples NNTP servers), others are used by Yarn (i.e. %HOME%\YARN\NEWSRC).


How to unsubscribe and delete a newsgroup?

How to unsubscribe and delete a newsgroup?


Can I abort VSoup operation safely?

Can I abort VSoup operation safely?

Yes, it is safe to abort VSoup by ^C or ^BREAK.  The following takes place:

News reception:
VSoup will save the current NEWSRC contents and the articles are stored after the reception of each single article into the corresponding .\00*.MSG file.  The .\AREAS file will be left in a proper state for import.

EMail reception:
The QUIT command will not be sent to the POP3 server, which means that the mailbox will not be emptied which again means that when you next call you will get the already received EMails of the aborted VSoup session again.

News transmission:
Double sent articles are detected by the news server and will be rejected by it.  This special type of rejection (435 & 437 error number in NNTP reply) will be considered by VSoup as a non-error condition, thus the articles are handled as having been successfully delivered (which in fact they are).

EMail transmission:
If the VSoup session has been aborted during EMail transmission, the whole EMail batch will be resent.


How do I call VSoup to send news to more then one news server?

How do I call VSoup to send news to more then one news server?

Assuming the news server news-major is your major news server, news-secondary your secondary.  The VSoup command line parameters to distribute news first to news-major and on failure to news-secondary are as follows:

VSoup -s nntp://news-major nntp://news-secondary

Note that the .\REPLIES file and the corresponding .\*.MSG file(s) must be contained in the current working directory.


12.5 Operation / Scoring


Give me an example scorefile!?
How to kill heavily crossposted articles...
How to convert my old kill file to the new score file format?


Give me an example scorefile!?

Give me an example scorefile!?

Here you are:

Example:


# this is a scorefile for VSoup
#
all {
   -1 header microsoft
   -1 pattern from bill.*gates
}

all {
   -1 pattern subject make.*money
   -1 pattern subject \$\$\$
   -1 x-newsreader forte agent
   -1 date > 15
}

comp.os.os2.mail-news {
   -1 subject ultimail
   -1 subject netscape
   -1 subject help:
}

.*binaries.* {
   -1 lines < 50
   -1 lines > 3000
}

comp\..* {
   -1 lines > 99
}

Also check scorefile explanation and the regular expression syntax.


How to kill heavily crossposted articles...

How to kill heavily crossposted articles (and thus avoid spams very likely)?

Add the following to your score file:


# this kills articles posted to more then 4 groups
#
all {
   -1000 pattern newsgroups ,.*,.*,.*,
}


How to convert my old kill file to the new score file format?

How to convert my old kill file to the new score file format?

Two rules (but no script...):

Don't forget to change the name of the file accordingly.


12.6 Operation / Utilities


YarnIo: I have another EMail program.  Therefor I'd like to disable...
OwnSoup & YarnIo:  How can I setup more than one filter?


YarnIo: I have another EMail program.  Therefor I'd like to disable...

I have another EMail program. Therefor I'd like to disable the RCVMAIL feature of YarnIo.  How do I do this?

You simply have to set soupRcvMail in YARNIO.SET to '' (the empty string).


OwnSoup & YarnIo:  How can I setup more than one filter?

I am using YARNIO.SET.  How can I setup more than one filter with OwnSoup?

You have to use the command concatenator in the preImportProg line of YARNIO.SET, e.g.


preImportProg = 'ownsoup -q rgriech stuff4me OwnTemp'
preImportProg = preImportProg '&& ownsoup -bq vsoup vsoupstuff VsTemp'

This example will search for "rgriech" in header and body and additionally for "vsoup" in the body section of the news articles.

In a second step you have to setup the corresponding mail filter with the Yarn filter program.


12.7 Trouble Shooting


VSOUP.TXT contains strange characters...
Why do I get something like '0000002.msg: Too many open files'?
Why is my news reception getting stuck sometimes?
Are there any specific problems with the different versions of the emx runtimes?
I cannot receive EMail from my POP3 server?
I have 8 connections requested for news receiving...
I am getting mails, which actually seems to be news articles!?


VSOUP.TXT contains strange characters...

VSOUP.TXT contains strange characaters.  What's wrong?

VSOUP.TXT uses some kind of poor (wo)mans highlighting. This is obtained through backspacing and overwriting in the ASCII file.  Some Viewers or Editors are not capable of handling such files correctly (GNUs Less can do it).

Solution is to remove the highlighting with the small script RmHigh.


Why do I get something like '0000002.msg: Too many open files'?

Why do I get something like '0000002.msg: Too many open files'?

and the related question

I am getting the message '...number of threads cut...'.  What does it mean?

VSoup needs a lot of open file handles.  The YarnIo script provides these automatically, but if you are not using this script then it is recommended that you add the following line to your CONFIG.SYS: SET EMXOPT=-h40 -c -n. This allows 40 open file handles which should be enough.


Why is my news reception getting stuck sometimes?

Why is my news reception getting stuck sometimes?

One common reason is that you are using the wrong (too old) version of the emx-runtime-DLLs.  Check them with emxrev (should show revisions >= 50) and update them if required. Also you have to avoid a mixture of emx runtime DLLs.


Are there any specific problems with the different versions of the emx runtimes?

Are there any specific problems with the different versions of the emx runtimes?

Unfortunately there are!  The revision of the runtime DLLs can be obtained via the command emxrev.  Only the revision numbers of emx.dll and emxlibcm.dll are important for VSoup.

revision < 40
No way, because nothing of the TCP/IP stuff is included in the C library.

revision < 50, >= 40
This is not recommended, although it should work because VSoup serializes most of the calls to the C library.  Nevertheless you should use the newest available revision of the emx09b runtimes, because there were many changes/bugfixes in the TCP/IP part.

revision = 50 (also > 50)
Check the setting of the environment variable TZ. It should/must contain a value which is acceptable for the emx C library.  Otherwise you will get an SYS3175.

Revisions > 50 will not crash due to incorrect setting of TZ, anyway they cannot interprete the variable correctly.


I cannot receive EMail from my POP3 server?

I cannot receive EMail from my POP3 server?


I have 8 connections requested for news receiving...

I have 8 connections requested for news receiving (with the -t8 option), but the status message says that only 3 threads were connected successfully. What's wrong?

Nothing! Sometimes it takes very long to establish a connection to the news server which means that VSoup has finished before all requested threads have been connected.  It is also possible that a news server might restrict the number of simultaneous connections by one user.  I have not heard of this happening, but who knows!


I am getting mails, which actually seems to be news articles!?

I am getting mails, which actually seems to be news articles!?

You are using OwnSoup somewhere.  If you are using YarnIo for you I/O operations, check in YARNIO.SET the preImportProg line, which should either be empty ('') or should contain arguments to match your needs (not mine as the settings reflect in the sample YARNIO.SET in the archive).


12.8 More Information


Where to obtain more information about SOUP?
Where are the internet standards described?


Where to obtain more information about SOUP?

Where to obtain more information about SOUP?

For more information about SOUP refer to Soup12.Html which can be found on the net, e.g. at http://www.eden.com/~combee/soup12.html.


Where are the internet standards described?

Where are the internet standards described?

The internet standards are described in Request For Comment documents (RFC).  VSoup uses the NNTP, POP3 and SMTP standards.  A good starting point for RFC reading is e.g. http://www.faqs.org/rfcs/.

RFCs of interest are:

RFC821
Simple Mail Transfer Protocol,

RFC822
Standard for the format of ARPA Internet text messages,

RFC977
Network News Transfer Protocol,

RFC1036
Standard for interchange of USENET messages,

RFC1725
Post Office Protocol - Version 3 (inkl.  APOP).


12.9 Download and related stuff


Where can I obtain the latest version of VSoup?
Where to obtain the latest version of Yarn?
How to subscribe to the Yarn mailing list?


Where can I obtain the latest version of VSoup?

Where to obtain the latest version of VSoup?

I will upload public releases of VSoup to ftp.cdrom.com, ftp.leo.org and ftp-os2.nmsu.edu (Hobbes). The corresponding URLs are:

Version notification will take place in the Yarn mailing list.

The current update frequency is at about one release per month. But this will stabilize in the very near future (09-Nov-1996).

Experimental versions can be downloaded from http://www.mardys.de/vsoup.zip. Content of this archive is only an executable of VSoup.


Where to obtain the latest version of Yarn?

Where to obtain the latest version of Yarn?

Best place to check is http://www.vex.net/yarn/. For notification about new versions check the Yarn mailing list.


How to subscribe to the Yarn mailing list?

How to subscribe to the Yarn mailing list?

To subscribe to the mailing list, mail a message to listproc@lists.colorado.edu. The body of the message should be the line subscribe yarn-list Your Full Name, assuming Your Full Name is your full name.  If it isn't, substitute your own name.


Index


This page was created on Sat, 26 Feb 2000 22:55:10 MET by a modified version of emxdoc (0.9c/rg081299) from Eberhard Mattes. Contact Hardy Griech for more information.