Copyright (c) 1996-1998 by Hardy Griech
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.
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!
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.
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.
Multithreading gives a speed gain of 200%-500% depending on the overall speed of the connection and the number of threads; on the other hand multiple connections have a communication overhead (i.e. the connections must be established, the groups selected). Estimated loss due to protocoll overhead is around 5%...
For example you can search newsgroups for any mention of your name or any mention of a program you are interested in.
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.
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
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.
%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 :
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.
reply-packet=%HOME%\yarn\out\reply.zip
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...
Environment variables are set in your CONFIG.SYS by lines such as:
SET ETC=D:\TCPIP\ETC
An incorrect setting of TZ can also cause errors if you appear to be getting mail before it was sent.
some simple checks can be carried out:
You can check all single YarnIo modes this way.
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
How the strategy parameter operates:
Recommendation:
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!
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:
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.
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:
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).
VSoup evaluates URLs in the following order:
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.
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.
VSoup returns with an exit code of 1, if any operation failed. Otherwise return code will be 0.
Failing operations are:
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:
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:
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'.
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.
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.
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.
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' :
For POP3 server #2..#9 you have to set up soupRcvMail2..soupRcvMail9. You have to create the corresponding subdirectories manually.
For setting up the correct subdirectory structure see also the Installation section.
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
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
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
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.
ownsoup [-h] [-b] [-q] pattern groupname outputfile
where
If -h or -b is not specified the default is to search the complete article,
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:
ownsoup rgriech stuff4me OwnTemp
X-ownsoup: stuff4me
The search pattern here is "rgriech" but a more complex pattern could be used, for example I could search on a pattern of "rgriech|hardy.griech" which would find either my EMail name or my full name. The '.' wildcard is used in place of a space. The pattern must be in quotes because of the '|' character.
Note that because no -h or -b parameter is set, OwnSoup will search both the header and the body of all messages.
If you are using YarnIo, OwnSoup would be called by setting the preImportProg line in YARNIO.SET. Our example would require the following:
preImportProg = 'ownsoup rgriech stuff4me OwnTemp'
Set up a filter using the Yarn FILTER.EXE program. When run, this shows a box for details, which you would complete as follows:
/ Mail Rule ---------------------------------------------------------------\ | | | Rule name: MentionsMe | | | | Search in: ( ) From | | ( ) To | | ( ) Subject | | (*) Header | | ( ) Body | | ( ) Header and body | | | | Search for: X-ownsoup: stuff4me | | Match case: No | | | | Action: (*) Move to folder/newsgroup: Personal | | ( ) Delete | | | \--------------------------------------------------------------------------/
Note that Yarn's filter now only needs to search the header as it is only looking for the "X-ownsoup: stuff4me" line.
After this preparation all incoming news articles will be checked for pattern as set in OwnSoup (in this case "rgriech"), and matching articles will be moved into the "Personal" mail folder.
Do not set up "Personal" as a newsgroup, because Yarn would skip the filtered articles in this case due to the Message-ID:.
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.
qsoup [-m] [-v] [-i] [-hdir] [-lfile] [inputfile]
where
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:
Cwworkstationname.domain Dwworkstationname.domain
R$+<@$+> $#local $:$1
Mlocal, P=d:\b\32\qsoup.exe , F=lmnDFM, S=10, R=0, A=-m -i $u
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
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
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.
First, this would result in a deadlock during transmit action of VSoup, because the invoked sendmail would invoke an instance of QSoup, which could not proceed, because the Yarn reply packet would be held by the transmitting VSoup.
Second, this would not be a meaningful configuration, because the mail would loop endlessly in your computer without being ever transmitted to the external world.
All command line options will be ignored in either case. Keep in mind, that the messages must contain all required header fields.
Criterion (1) blocks QSoup, if Yarn is active. Also this works like a semaphor and prevents multiple instances of QSoup to access the reply packet. Criterion (2) prevents QSoup from accessing the reply packet if it is unzipped, e.g. during "VSoup -s".
Don't forget that an open Yarn or an active "VSoup -s" blocks QSoup. This means, as long as another application accesses either the lockfile or the Yarn reply packet, QSoup can not perform the requested operation.
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.
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.
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.
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.
%HOME%\NEWSRC contains the list of newsgroups.
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:
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.
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:
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.
There are two special score-sections:
Lines beginning with a '#' in the first non-blank position are treated as comments.
The date algorithm will accept dates until 2100. Age calculation is not absolutely precise, because it knows nothing about the time and the timezone (they are silently ignored).
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
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.
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.
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.
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.
contain the received newsgroup summaries (-u option). The files are written in the SOUP "ic" format.
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'.
contains the table of contents of the received .\00*.MSG / .\00*.IDX files (+ .\STSMAIL.MSG).
contains the news messages that should be sent to the NNTP server. The following SOUP formats are supported:
contains the mail messages that should be sent to the SMTP server. The following SOUP formats are supported:
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.
for (;;) { conn = getConnection( conn ); if (c.nntpcl_primitive was successful) break; conn = -1; }
This of course has to be implemented.
Hardy Griech
Rosenfelsweg 14
79540 Lörrach
Germany
EMail: mailto:hardy@mardys.de%20(VSoup%20Acknowledgements)
Be aware, that at the moment most parts of the documentation are not marked accordingly.
Documentation now in TXT and INF format available, thanks to emxdoc.
To allow the conversion to the old format ConvSoup has been added.
This sections contains several frequently questions and the corresponding answers. The questions are subdivided into several sections. Those are:
What are the major differences between the several VSoup ports?
Currently, there are two ports of VSoup. The diffences are:
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.
Give me sample scripts for simple VSoup IO operation.
vsoup -M nntp://your.news.server pop3://your.pop3.server
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
start do_news_reception start do_mail_reception
vsoup -Ms nntp://your.news.server smtp://your.mail.gateway
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).
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%:
c: cd \vsoup vsoup -M import -u
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?
newgroup VSoupStatus 3
/ Mail Rule ---------------------------------------------------------------\ | | | Rule name: VSoup Status | | | | Search in: ( ) From | | (*) To | | ( ) Subject | | ( ) Header | | ( ) Body | | ( ) Header and body | | | | Search for: vsoupuser | | Match case: No | | | | Action: (*) Move to folder/newsgroup: VSoupStatus | | ( ) Delete | | | \--------------------------------------------------------------------------/
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.
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?
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.
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 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?
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.
The news were received in the usual way, e.g. vsoup -m -h . nntp://isp.news.server. After reception the .\AREAS file was renamed to .\REPLIES and the received articles were pushed to the Domino Server with vsoup -sS0 nntp://inhouse.domino.server.
Mail reception is a little bit more tricky, because the internet email
for all employees was routed into one single mailbox at the ISPs
side. To send it to Dominos SMTP MTA it is necessary to
fake the SMTP envelope to the Domino Server a little
bit. E.g. not the 'To:', 'Cc:' or 'Bcc:' headers of the messag
are relevant, instead one has to analyse the 'Received:' header to find the
correct destination address. Sometimes the 'Received:' header
does not contain the destination address in which case only addresses to a
specific domain should be put in the envelope.
The final
command sequence is: make vsoup -n -h .
pop3://isp.pop3.server, create a .\REPLIES file which
references the .\000001.MSG correctly, then send the mails to the
Domino Server with vsoup -s -E@domino.server -R
smtp://inhouse.domino.server. Replace domino.server with your
actual domain name. Note that both -E and -R are not part
of the option reference and thus might be dropped without further notice
(which is quite unlikely).
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?
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?
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?
Can I abort VSoup operation safely?
Yes, it is safe to abort VSoup by ^C or ^BREAK. The following takes place:
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.
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 (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?
Two rules (but no script...):
Don't forget to change the name of the file accordingly.
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).
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'
In a second step you have to setup the corresponding mail filter with the Yarn filter program.
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'?
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?
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?
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.
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?
pop3 110/tcp #Post Office Protocol - Version 3 pop3 110/udp #Post Office Protocol - Version 3
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!?
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).
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?
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:
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?
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?
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.