An overview of SpamFryer

Index | Browse >



Summary

SpamFryer is a small utility which deletes unsolicited emails from
an ISP's server, without you having to download them. Over the last
three years or more it has got rid of 85 to 95 per cent of the
spam directed to the author's email accounts, without deleting any
messages he actually wanted to read. That said, your mileage may
vary. SpamFryer is free and you're free to use it or not, at your
own risk.

Links

SpamFryer.lha
 - the latest SpamFryer package released to Aminet
SpamFryerYAM.lha - Allan Rasmussen's latest SpamFryer integration for the YAM mailer

Contents What you must have in order to use SpamFryer If your Amiga can get onto the internet, you've probably got everything necessary, but this page lists the details. Configuring SpamFryer to suit your server You need to tell SpamFryer how to get at your email account. Configuring SpamFryer to suit yourself You may customise the reports it generates, or accept the defaults. How to use SpamFryer Launching SpamFryer from Workbench or from a script. Customising SpamFryer for your messages How to teach SpamFryer new rules to spot more spam, while leaving mails you may want to read safely alone. You can also select icons to suit your desktop or integrate SpamFryer with the Miami TCP/IP stack, so it runs whenever you go online. FAQ, problems and solutions Error messages from ARexx and SpamFryer explained, and some tips for users of Amiga Forever and UAE. The people who made SpamFryer possible ...plus some notes on the programs used to make this document. Changes between released versions Copying and modification rights SpamFryer is freely distributable only if unchanged. Translation of SpamFryer to other languages How to contact the author Cross-reference index A plain text version of this hypertext document is in the file SpamFryer.text. Apart from the links and formatting, the content of both files is the same. This hypertext version is for people who like to click their way though an electronic document, with cross-references and an automated index. The plain text suits those who prefer to refer to a printout, or be sure they've read everything. An AmigaGuide version is also available, for those who prefer to read this in MultiView, with more accurate indexing.

What you must have in order to use SpamFryer

Contents | Index | < Browse | Browse >



Requirements

AmiTCP or compatible TCP/IP stack (e.g. Genesis, Miami or Roadshow).

An account with an Internet Service Provider that offers POP3 email
  (virtually all do).

ARexx (add-on or as bundled by Commodore with Kickstart 2 and 3).

A network-capable Amiga (A500 to A4000, or authentic emulation
  e.g. Amithlon, or UAE running a genuine Amiga TCP/IP stack),
  or an AmigaOne PowerPC system.

Configuring SpamFryer to suit your server

Contents | Index | < Browse | Browse >



Essential Configuration

Before you try to use SpamFryer you need to configure it to access
your internet service provider and email account. If you are unable
to edit a text file, please give up at this stage :-(. Presuming you
know how to edit a text file, and can get hold of your own account
details (I can't help you with this!) there are two ways to do this
- by adding your details to the SpamFryer.accounts file, or embedding
them in the SpamFryer.rexx script. It's simpler to put them in the
SpamFryer.accounts file as long as you don't mind keeping several
SpamFryer files together in one directory

Three bits of information are needed before SpamFryer can log in to
an email account and check for spam on your behalf. One of these,
the password, is optional - if you choose not put it in the text
files (e.g. for security reasons if you are running a server and
allow remote users access to all drives on your machine) SpamFryer
will pop up a requester, requiring you to type in the password
each time it needs access to the relevant account.

This information appears in the YAM2 mailer's Settings/Configuration/First
Steps dialogue, and in the yam:.config file (under POP00.Server, POP00.User
and POP00.Password - though the latter is deliberately obscured in the YAM
files, for security reasons). If all else fails, you can get the password,
or a replacement one, from your Internet Service Provider (ISP).

Typically you'll include three lines in SpamFryer.accounts for each
POP3 mail account you want SpamFryer to check, e.g.

  Hostname: mail.isp.org
  Username: ISP_Account_Name
  Password: guessthis

or

  Hostname: 194.5.6.7
  Username: JoeBlogs
  Password: tribbles

HostName identifies the mail server (the machine that stores emails for
you to collect) on the internet. This can be an IP number e.g. 194.5.6.7
or a domain name like mail.demon.net

UserName is the name your computer uses to identify itself, and you, to
the mail server. Typically this is your ISP account name.

You can give details of as many accounts as you like. SpamFryer
will check them all, in the order you specify them. The Username
and Hostname for each may come in either order. If you miss out the
password your Amiga will need to be running Workbench 2 or later,
and have reqtools.library and rexxreqtools.library on its LIBS:
path, in order that it can ask for the password interactively.

You can put comments in any of the SpamFryer configuration files
(SpamFryer.accounts, SpamFryer.keepList and SpamFryer.loseList)
by starting the line with two slashes and a space, like this:

// this is a comment

Blank lines are allowed, and ignored.

Alternatively, if you'd prefer to keep all your changes in one file
and be able to run SpamFryer without needing other files, add three
lines near the start of the file SpamFryer.rexx, after the comment
/*** CONFIGURATION BLOCK **/ and before the line starting keepList,
as follows:

   Account.1.1 =  "mail.isp.net"

This can be an IP number e.g. 194.5.6.7 or a domain name like mail.demon.net

   Account.1.2 = "yourname"

This needs to be your user name - the name your computer uses to identify
itself, and you, to the mail server. Typically this is your ISP account name.

   Account.1.3 = "password"

This should be the confidential login password you use for email. If you
run any sort of server on your Amiga, you should read this from somewhere
that people logging on to your machine can't access, or they might extract
your password from the SpamFryer script (or any other software you use for
email access). If you make a new version of SpamFryer, remember to remove
this before you send the modified code to anyone else!

SpamFryer can check mails from more than one server, and make a log
of what it finds and does on each one. To do this, add additional lines
for other accounts, called Account.2.1, Account.2.2 and Account.2.3 for
the same three items of information listed above for your second server,
and more (e.g. Account.3.1, etc) for as many other accounts as you like.
Alternatively you can put these details in the SpamFryer.accounts file,
or keep some in the file and some in the script - which may be handy if
you want to change part of the configuration (e.g. by renaming several
copies of the accounts file as required) while always checking servers
listed in the script.

You don't need to provide any more information to use SpamFryer. But
you might like to adjust the reports it generates to make it easier
to understand and tune what it's doing. If you'd like to know about
this now, click for details of these  options .

Otherwise,  follow this link to get using SpamFryer right away. 

Configuring SpamFryer to suit yourself

Contents | Index | < Browse | Browse >



Optional Configuration

You don't need to provide any information other than the server and user
names and a password to use SpamFryer. However there are a few other lines,
in the configuration block which you may wish to add or alter to tune
SpamFryer for your system. Of course, you're free to change the whole
script, but the block at the start contains the main configurable ones.

Four lines specify files that SpamFryer will attempt to read or write.
You can edit these lines to change the name or location of the files.
The first three are optional data files, presumed to be in the same
directory as the SpamFryer.rexx script unless you alter the assignments
to include an alternative path (e.g. WORK:Secure/SpamFryer.accounts):

SpamFryer.keepList is the default path and name of the optional file
which identifies mails you want to keep.

SpamFryer.loseList is the default path and name of the optional file
holding details of mails you want to lose.

SpamFryer.accounts is the default name of the optional file containing
information used to log in to your POP3 accounts.

SpamFryer.log is the output file, normally directed to the T: drive,
which logs what SpamFryer script finds on the server and what it does
as a result. If the verbose variable is set to 1, in the script or by
passing an eponymous argument when the script is called, for instance

  rx SpamFryer.rexx VERBOSE

The log will contain lots of extra information, including lists of
account details and rules, header information from each mail checked,
and a note on what SpamFryer has done about it. By default the log
file just reports the subject and number of each mail it fries, and
information about errors in the configuration files, with simple
headings. The same information is written to a console window as
the script runs, so you can see what it's doing as it goes along.

screenName gives the name of the public screen on which you want
to see a temporary copy of the log as SpamFryer runs - close this
when you've finished with it. The default is '*' which opens a window
on the current screen. lineMax sets the maximum number of characters
of subject lines reported to the screen. Some mails - usually spams -
have very long subjects, so this limits the maximum amount of screen
space such a line can take up.

Finally 'noDigits' sets or clears an experimental flag which marks
mails with any numeric digits in their To: address for zapping. Many
spammers make up email addresses for known servers, and if you have
your own domain this rule helps you sift out those non-existent user
names which would otherwise be delivered to your Amiga. BEWARE: This
flag may deleted wanted mails (e.g. if you are cc'd on a mail to an
Yahoo, Freeserve or AOL victim with a human-hostile user name) unless
you apply other rules, e.g. in the keeplist, to make sure mails that
are specifically addressed to you don't get flushed with the spams.

Miami integration

To make SpamFryer run automatically when Miami goes
online, use a MiamiOnline.yam script something like this:

miamipath = "WORK:COMMS/MIAMI/Miami"  /* Change this if required */
Spampath = "work:comms/SpamFryer/SpamFryer.rexx" /* Add this line */

OPTIONS RESULTS
IF ~SHOW('P', 'MIAMI.1') THEN DO
   ADDRESS COMMAND
   'Run <>NIL:' miamipath
   'WaitForPort MIAMI.1'
END
ADDRESS 'MIAMI.1'
ISONLINE
IF RC=0 THEN ONLINE
ISONLINE
IF RC=0 THEN EXIT 5
HIDE
   ADDRESS COMMAND  /* Added for SpamFryer by Kelvin Graham */
   'rx' Spampath
    'wait 10'
    'endcli'
EXIT 0

Alternative icons

The subdirectory Alternate Icons contains replacements for the default
SpamFryer launch icon. These work the same way but vary in size and
colouring to best suit old and new Amiga systems. The text file in
the same drawer gives more details.

YAM Support

Marcel Beck's YAM (Yet Another Mailer), now open source, is the premier
Amiga email application. Two scripts contributed by users of SpamFryer
are in the subdirectory YAM Support, with plain-text documentation.

MiamiOnline.yam modifies the script that launches Miami so that it
also fires up SpamFryer, so your new email is filtered automatically.

SpamFryer.yam uses the rules and configuration of SpamFryer.rexx to
scan mails already downloaded and move the likely spams from one
YAM folder to another. It is most useful for those with continuous
and fast internet connections, who do not need to eliminate download
time but still wish to sift spams from their other mail automatically.

How to use SpamFryer

Contents | Index | < Browse | Browse >



Usage

You can start SpamFryer by clicking on the supplied icon or with an
AmigaOS command (rx SpamFryer.rexx when SpamFryer.rexx is in the
current directory or on your path). The script has been successfully
tested on AmigaOS 3.0 with Genesis, earlier versions of AmiTCP, Miami
and Roadshow, the AmigaOS 4 stack. It will not work with the tiny
TCP/IP implementation forwarded from the host by UAE unless that
implements the AmigaOS TCP: device.

You can also configure it to be launched as an ARexx script by Miami,
or run it from the console. One optional parameter 'verbose' makes it
list the details of mails it leaves, as well as those it zaps, in the
console log.

You do need to be online and have the ARexx server running when you
start SpamFryer. The easiest way to ensure the latter is to put RexxMast
in your sys:wbstartup directory when you boot your Amiga. ARexx shipped
as a standard component of Commodore's AmigaOS versions 2 and 3.

SpamFryer checks through emails on a POP3 host and purges the
unwanted ones by applying simple rules that sift out nine-tenths
of the mass-produced junk mail and attempts by dimwitted PC trojan
and virus programs to mate with Amigas. While these viruses die out
when they reach a real computer (indeed, anything not running Windoze)
they are large, arrive many times over, and are of course useless.

SpamFryer shows a summary of waiting messages and deletes any with html
right the start, or subjects or a recipient address known to be bogus.
It includes special sifting for recent Windoze .PIF worms, and mails
flagged by SpamAssassin on the server. It's easy to extend for similar
cases (e.g. new viruses or trojans and mails from particular idiots
who unfortunately have your address) but I find it catches 80..90 per
cent of spams without adding any extra code - if I get a rash of new
spams that it misses I add an extra rule or two.

If SpamFryer gives an error message,  click here  for
information about problems and solutions, Frequently Asked Questions
and answers.

If that still doesn't resolve your problem,  click here  to find
out how to contact the author for personal advice. You may have found
a problem that no other user has run into. But make sure you've read
the documentation first, or you should expect short shrift!

Further Customisation

Spam Fryer comes with more than 120 pre-programmed rules to help it
identify spam and sift out mails that you might really want to read.
You don't need to alter these to use SpamFryer, though it's a good
idea to tune them to suit your system once you understand what
SpamFryer can do for you.

If you'd like to know more about customising SpamFryer for the
sort of mail you're likely to receive, either by adding and
removing rules or modifying the script,  click here. 

Customising SpamFryer for your messages

Contents | Index | < Browse | Browse >



Customisation

Since SpamFryer is a short plain-text program you can be sure of
what it does and doesn't do, and can easily extend it to do more
- or less, e.g. just report likely spams without deleting them -
by adding rules to the configuration files, or by editing the
script. If you can do it by editing the configuration, that's
likely to be a lot easier and less risky than editing the script.

At first SpamFryer automated the procedure I used to manually
get rid of spams, by printing the commands automatically to
save me typing them, and reading the message headers to find
the sure signs of spam - these include HTML in the first few
lines (i.e. a message with no plain text part); subjects
known to be autogenerated by persistent spamming programs;
mails marked as spam (but not actually deleted) by a server
filter program like SpamAssassin, which was used by Amiga Inc;
mails to any address you've abandoned but which is still
redirected to you,  and emails with .scr and .pif MIME
attachments which are useless on Amigas and generally only
a cause of infection to PCs. If anyone does really need to
send you one of those, ask them to rename it or compress
it into an archive with LHA, LZX, ZIP or whatever so that
SpamFryer doesn't zap the mail.

At first SpamFryer only looked for reasons to delete a
mail, and had to be conservative about such rules in case
it accidentally deleted something important. Then Allan
Rasmussen volunteered to add support for rules in separate
files, and for rules that denote a mail that should be kept
rather than lost (sometimes known as a whitelist). This
means that tests can use shorter and more general patterns,
as long as they are effective in identifying spams, as
the risk of losing a wanted mail is reduced

The snag of this is that the whole mail header and
first part of every mail must be read by the script,
in case a later line contains text that indicates the
mail should be kept, despite spam matches earlier.
This slows down the checks, as they can't skip a mail
as soon as it's matched a spam test.

SpamFryer lists

SpamFryer now incorporates around 120 rules, in the two
configuration files and in the script itself. Only the
most safe yet effective rules are in the script, where
they are hardest to lose. This means that SpamFryer has
a basic but useful capability without any extra files
(as long as you add your account details to the script).

SpamFryer.keepList contains rules that tell SpamFryer about
mails you always want left on the server. These are mails
you never want deleted, even if they contain text that is
typically in junk mail. For instance, mails with SpamFryer
in the checked text are always left on the server (unless
you alter SpamFryer.keeplist to remove the rule) so that
people can quote messages that SpamFryer might delete (for
better or worse) without having their discussion fried!

The tests look for references to 'Spam Fryer' (with a
space) as well as SpamFryer (without) in case someone
prefers to type the name as two words. The rule starts
with the term 'Early-Ref:' so that the entire mail header
and first few lines (up to the point where an HTML-only
message can be identified) are checked for the pattern.
This 'Early-Ref:' category is the slowest test; others
look for certain lines in the mail header and only look
further on the line, trying all the patterns in that
category, providing the first part matches.

The first word in the list file tells SpamFryer what part
of the mail to test - the quicker options test the Subject:,
From:, or To: or Reply-To: lines in the header. The colons
and dashes are optional but recommended as they mean the
category names correspond to those used in a mail header.

The remainder of each line in the keepList file indicates a
pattern to look for. If that pattern appears anywhere in
the part of the mail specified by the first word, the mail
will be left on the server; it won't be fried even if it
matches rules in the loseList.

Rules in the loseList work the same way, except that they
detect patterns which may indicate junk mail, and can be
over-ridden by any rule in the keepList. For this reason,
and because spammers keep trying new scams, there are a
lot more rules in the supplied loseList than there are
in the keepList.

New rules for SpamFryer are updated continuously by users
at http://www.amigawiki.com/cgi-bin/wiki.pl/SpamFryer

Safety First

You should add your own name and any unpublished email
addresses as 'To:' rules in your own SpamFryer.keepList
to reduce the risk of mails explicitly addressed to you
getting fried.

The default keepList contains certain user names which
must be acknowledged by mail to any domain - RFC 2142
(one of the internet standards, informally known as a
'Request for Comment') says that mails to postmaster,
abuse, security and noc user names (for a server) must
be handled by a human. If you don't own a domain, you
can delete these rules. If you do, it's worth adding
the rest of the address (e.g. abuse@vituperation.org)
to narrow down the default test.

A few more default rules let through mails associated
with yahoo group internet mailing lists, and those
associated with Aminet and the YAM Amiga mailer. Add
more rules to suit the lists you subscribe to, unless
you'd prefer to have SpamFryer check those for spam
references - some list servers filter spam well, but
some act annoyingly as spam relays.

If you are concerned about the small risk of losing
wanted mails due to the accidental use of terms common
in junk mail, you should check the contents of
SpamFryer.loseList and remove any rules that you
consider might delete things you want to know of.

All the rules in that file are there because they
have identified at least four (often many more)
bulk junk mails sent out between 2004 and 2006.
But a few people might want unsolicited
information about cable filters (even variously
mis-spelt) penis enlargement or extended warranties,
or might even send mails asking about such things -
if so they should delete the rules containing those
terms, or they may lose the replies.

To be on the safe side, rename SpamFryer.loseList
or move it to another directory until you've made
sure it doesn't exclude any patterns that might be
in mails you want to read. That way the only tests
SpamFryer will perform to identify mails to lose
are for all-HTML mail, those addressed to web (not
email!) addresses, those for undisclosed-recipients
or those marked as spam by SpamAssassin on a server.

You can remove those tests by deleting the lines
starting 'CALL lose_rule' in SpamFryer.rexx - but
if you want any of these you probably should not
be using Spam Fryer at all. 8-)

General rules about rules

Comparisons ignore case, so THIS matches thIs and This,
and any line with that word (even THIStle) will match.
If you want to match a specific word, rather than part
of one, put the pattern in 'single ' or " double"
quotes with a space either side (as in the examples)
- however if you have a space both sides you may not
pick up a reference at the start or end of a line.

Put // (remember the space) at the start of a line to
temporarily disable a rule without removing it from the
list. Blank lines are ignored, but can make sets clearer.
Before you

SpamFryer writes a report showing how many messages it
has killed from each category, and how many it has left
on the server. There will probably still be a few spams
there, but you'll have eliminated most of them by running
SpamFryer before you collect mail in the usual way. As
it's an ARexx script you can automate the process so the
script runs first, whenever your mail client goes to get
new mail - but I leave the details of this to you. :-)

Editing the source

This section is for programmers who want do more than just
add a rule which includes or excludes mails from SpamFryer's
list of things to fry. You will need to understand a bit about
ARexx programming, but not much. ARexx manuals come with Amiga
OS 3.1, A4000s and some earlier Amiga systems. ARexx documentation
is on-line (http://main.aminet.net/util/rexx/ARexxGuide2_0A.lha
is a good start) though there's rather less information about
the ARexx interface to TCP/IP - I worked out how to write this
by examining ChkMail which was written in 1994 by Matt White
<whitem@duke.usask.ca> and uploaded to Aminet, and from basic
knowledge of the POP3 protocol, which I previously used from
an Amiga Shell via telnet to port 110 on my ISP's mail server
(thanks to Peter Corlett for first showing me how to do this).

POP3 is a simple plain-text protocol - you send commands like
"user <name>" and "pass <password>" and "stat" to log in and
get a list of messages, then "top <message number> <lines>"
to read back a given number of lines from the chosen message,
and "dele <message number>" to delete it. The protocol is
documented here: http://www.faqs.org/rfcs/rfc1939.html

The script can writes messages about the header of each mail
and the reason it is considered spam. If you want to make it
check but not delete anything you can comment out all the lines:

   writeln(net,'DELE '||message)

by changing them to

   /* writeln(net,'DELE '||message) */

The comment brackets in ARexx are /* */ just as in C.

You can then run the modified script and will see a list
of the things that would have been deleted, but they'll
all still be on the server after the test.

SpamFryer uses whatever rules it is programmed to apply by
the configuration files. Be wary of checks that might find
patterns in legitimate mails - the test for CIALIS looks
for a space after that name so it doesn't mistakenly fry
mails with the word 'specialist' in them, for example.

To be specific, if the mails you don't want all expect
you to reply to an address medical@hype.net, you can sift
them out like this:

         if left(instring,10)='Reply-to: ' then
         do
           if pos('medical@hype.net',instring) >0 then spam=1
         end

left(var,num) returns the first (leftmost) num characters of
variable var, so in this case it checks if the line in the
variable instring starts with the 10 characters 'Reply-to: '
and only performs the code between 'do' and 'end' if they
match. If you didn't care about the case of the characters
in this address you'd be far better off adding a REPLY-TO:
rule to SpamFryer.LoseList, but this example shows how to
add a test that requires an ExAcT match.

The prewritten tests use the ARexx POS function rather
than exact matches, so a check for .HTM would match
.HTML - and POS("HTM"),inCaps) would match HTM, _Html,
.html, hTm and so on - including Weightman which you
might not want...

Combination tests

Ad hoc code can be used to add more complex tests than the
keep and lose lists will allow. For instance, messages with
the text "created by women" in the first few lines are
suspect, because a substantial proportion of junk mails
that slipped through the net early in 2004 were from
dating sites which use this phrase as a come-on. Since all
the mails that triggered this also contained the word ' dating '
(with the spaces, so post-dating and carbon-dating would not
match) I set the variable 'dating' to zero before starting to
scan each mail header, and test as follows:

    if pos(' DATING ',inCaps) >0 then dating = dating + 1;
    if pos('CREATED BY WOMEN',inCaps) >0 then dating = dating + 1;

Then after scanning each mail, I check for at least two such
references, and only zap the mail if the above test triggered
more than once, as follows:

  if dating>1 then spam=1

You can add more variables for other cases, adjusting the threshold
and the number added for each match, to create conditional rules
that are triggered by a combination of indicators, rather than
just one - although in many cases one indicator is sure enough.


SpamFryer 5

The most significant advances in SpamFryer 5 are not in the
rules - though there are useful additions at the start of
SpamFryer.loselist, and a few changes to old rules - but
in the addition of custom code to detect categories of spam
that simple rules cannot. This code catches spams that use
MIME or redundant accents or equivalent characters to hide
their unwanted payload from brute-force searches.

Fuzzy matching

Fuzzy matching is controlled by the fuzzyMatch symbol near
the start of the SpamFryer.rexx script. If this is 0, all
matches are case-independent but otherwise exact. If spam
includes a phrase in your loselist but adds redundant
accents - so viagra appears as viägrä, for example - the
modified word will NOT be recognised. If fuzzyMatch = 1
the accents will be ignored - accented characters will be
translated to their Latin counterparts - so the modified
word WILL match the normal one it closely resembles. :-)

This could be considered an extension of the upper and
lower case equivalence that catches ViAgRa as well as
Viagra and viagra. It is safest to use if you and your
correspondents use an unaccented Latin-based language;
if you use accents, you may prefer to set fuzzyMatch = 0
to reduce the risk of vital distinctions in your own
language being misinterpreted, and to allow you to use
acents in your own loseList and keepList rules. Since
fuzzyMatch strips accents, you must likewise remove
accents from your rules, or they'll never be matched!

Depending on the characters you use, the

    header = TRANSLATE(header ...

lines in SpamFryer.rexx may merit customisation. Most
of those specify a set of characters any one of which
will be considered equivalent to a single one following,
e.g. any of 'ÈÉÊËèéêë' are remapped to 'E'. The final
TRANSLATE line is rather different in effect, as you
can probably tell from the syntax. Rather than strip
accents it replaces three characters among the ANSI
Latin 1 extensions to the original ASCII set with the
Latin ASCII characters they most closely resemble. £
is considered equivalent to E, the multiplication
symbol × is equivalenced to X and x, and ß is treated
like a Latin letter B or b.

It is not a good idea to include any ASCII characters
(those with ANSI codes less than 128) among those
remapped, as that would prevent any of those being
matched if they appear in rules.

MIME spam

The emptyMIME option was implemented to meet the
challenge of increasing numbers of spams that use
MIME blocks to conceal spam indicators in HTML or
images, later in the mail.

Since SpamFryer tries to identify unwanted mail
without reading the entire message (which could
be large and hard to decode in the case of HTML
and image attachments) Simon Goodwin and Allan
Rasmussen have compared hundreds of spams of
this type with others containing wrappers in
MIME (Multipurpose Internet Mail Extensions)
format, and come up with a rule that sifts out
almost all mails of this type (as of 2006) with
only a small - but still problematic - risk of
falsely identifying wanted mail as bulk-mailed
spam.

The emptyMIME routine searches for lines indicating
a complex MIME structure followed by two blank
lines, at the top of the message. Those are
flagged as having a 'suspicious MIME header'
and will be deleted from your mail server unless
they match rules in your SpamFryer.keeplist.

We don't know why some, or which, programs
sometimes generate two blank lines after the
MIME header, but statistically it seems to be
a rare phenomenon in mails that are not spam.

Out of more than 2000 "good" emails in Allan's
test set, only one was zapped by this option.
One out of 2000 is not bad, but still a little
bit worrying, so we do not recommend you use
this option without a clever and well-kept
SpamFryer.keeplist.

We welcome ideas to improve this code so that
it catches more spam and fewer mails you're
likely to want to read. The MIME format is
explained at

  http://mailformat.dan.info/headers/mime.html

To enable this rule, set emptyMIME = 1 in the
configuration block of the SpamFryer ARexx
script. By default it is set to emptyMIME = 0,
which means the rule is NOT applied and spams
of this type - along with similar messages you
might actually want to read - are NOT sifted
out by SpamFryer.

FAQ, problems and solutions

Contents | Index | < Browse | Browse >



Problems and solutions

Check these things first before you email me for help:


(0) Remember to put your correct details into the
    configuration block at the start of the script,
    or in the SpamFryer.config file

    See the  Configuration  page to find out how
    to do this. If you get it wrong you'll get a message like this:

Error from server: -ERR authorization failed
Command returned 10

   or maybe

+++ Error 18 in line 197: Invalid argument to function
Command returned 10/18: Invalid argument

That message suggests that your setting of Account.1.1
in SpamFryer.rexx, or HostName: in SpamFryer.accounts,
is incorrect, as the first line that attempts to talk to
the mail server is failing. You may be using the name of
your ISP (e.g. demon.co.uk) rather than their POP3 mail
server (e.g. mail.demon.net, or pop3.demon.co.uk.

The line number may vary if the script has been edited,
so check point (2) in this list too if you get Error 18.

(1) Make sure you're running ARexx.
    The shell command 'rexxmast' should ensure this.
    If it gives an error message, fix that or no
    ARexx scripts can work on your system.

(2) Make sure you're online - if you get:

+++ Error 18 in line 180: Invalid argument to function
Command returned 10/18: Invalid argument to function

   or maybe

Login [userName]: -ERR not found.

  you're not connected to the Internet, or maybe not even
  running a TCP/IP stack! SpamFryer can't work under such
  conditions. Check you can connect to your mail server in
  the usual way, then try to run SpamFryer again while you
  are still online.

The line number may vary if the script has been edited, so
also check point (0) in this list if you get an Error 18.

(3) Configuration error messages

SpamFryer attempts to catch all circumstances when errors
in the configuration stop it working properly. Even assuming
you have  the basics  needed to run the script you
may still get messages if there are errors in the text files
that customise SpamFryer for your system. By default these
files are named SpamFryer.accounts, SpamFryer.keepList and
SpamFryer.loseList.

This section lists the error messages and explains their
meanings. Items in brackets vary depending on the error
and other aspects of your configuration.

ERROR: Unrecognised item [word] in [accountFile]

  The first word of a line in the SpamFryer.accounts file
  must be // (for a comment, ignored by the program) or
  'HOSTNAME:', 'USERNAME:' or 'PASSWORD:' followed by the
  appropriate information for your mail server. If you
  get this message it indicates that the file (accountFile)
  (in the same directory as SpamFryer.rexx unless another
  path is specified) contains a line which starts with
  (word) rather than any of the expected terms.

ERROR: No user name configured for host [hostName] in [AccountFile]

  The file (accountFile) specifies a host (hostName) with
  no associated user name for logging in to that host. To
  fix this, add a USERNAME: line with the required name.

ERROR: No user name configured for host [userName] in [AccountFile]

  The file (accountFile) specifies an account (userName) but
  contains no line indicating the server for that account. To
  fix this, add a HOSTNAME: line with the required address.

ERROR: Duplicate passwords [word1] and [word2] in [AccountFile]

  Two passwords were specified in the file without an intervening
  host and user name. SpamFryer will attempt to use the second one.
  To fix this, remove the redundant line starting with PASSWORD:

ERROR: Password [word] in [AccountFile] needs a host and user name

  You have specified a password but no corresponding host or
  user name. To fix this, add a USERNAME: line to indicate the relevant
  account name and a HOSTNAME: followed by the matching server address.

ERROR: Rule [rule] in [SpamFryer config file] skipped

  The indicated rule was not understood. Search the config file shown
  for the rule indicated in the message and make sure that it starts with
  one of the correct terms ('TO:', 'FROM:', 'REPLY-TO:', 'SUBJECT:' or
  'EARLY-REF:') to identify a section of the mail to be checked,
  followed by a space and some pattern for SpamFryer to look for
  in that context, on the same line.

  If the message refers to 'embedded rules' rather than one of the
  keepList or loseList configuration files, the problem is in the
  indicated rule which is embedded in the SpamFryer.rexx script (or
  whatever you may have renamed it to) rather than in a list file.
  Search for the rule text (which will be in inverted commas, prefixed
  by CALL keep_rule or CALL lose_rule depending on the rule category)
  and ensure that the quoted text follows the syntax indicated above.

(4) UAE and Amiga Forever

I use real Amigas, unless I'm writing for people without access
to the genuine article. But the monolithic and unsafe internet
software on most computers has led some people to run AmigaOS
via the excellent UAE emulator. SpamFryer works with UAE, but
requires some extra software to make the host's TCP/IP stack
accessible to scripts.

Joe Cosby posted the following question on an Amiga message board:

: SpamFryer tries to read from a device TCP:, which I guess must
: be created by the most common Amiga TCP/IP programs.
: This doesn't work under UAE though, there is no TCP: device. I am
: not really sure how UAE handles TCP/IP at all, actually [but] it is
: working for me, I browse the web and download email using AWeb and YAM.
: Does anybody know what, if anything, the equivalent in UAE is, or if
: there is a workaround for this?

Thomas Rapp helpfully replied:

You need the TCP-Handler program and the TCP mountlist. Get either AmiTCP
or Genesis from Aminet, they should both contain the needed files. Don't
install the archives, only copy the needed files to your System partition.

The UAE-Support directory contains files which should be
added to the corresponding directories on the SYS: drive
of a UAE setup, to enable the TCP: device which is used by
SpamFryer and many other fine AmigaOS networking programs.

Both files come from the freely-distributable AmiTCP stack,
release 3.0.2b. Please direct all questions about using
UAE to emulator support sites, rather than to the authors
of SpamFryer. If all else fails, get a real Amiga. ;-)

(5) Non-Latin character matching

If you find rules containing accented characters seem to
be ignored, or accented characters are matching when you
would not expect them to, check the setting of fuzzyMatch
at the start of the ARexx script. If you want accented
characters to be treated as distinct from unaccented ones,
fuzzyMatch must be set to 0.

(6) No spam for users called 'amiga' detected

If the word 'amiga' appears in your name or email address you
must remove the rule Early-Ref: Amiga from SpamFryer.keeplist
or the presence of that word in the mail header will prevent
any spams from being fried. In general it's a good way to sift
out and protect mails from friends - spammers don't use Amiga
software!

The people who made SpamFryer possible

Contents | Index | < Browse | Browse >



Credits

Thanks to the following people for help and feedback
since the first release of SpamFryer. Without them,
there would be no updates of SpamFryer on Aminet:

  Julian Aronowitz       Paul Juhusz
   Olaf Barthel           Markus Lunk
    Fabrizio Bartoloni     Mike McCool
     Adolf Brunner          Vince Morra
      Scott Campbell         Harry Patterson
       Peter Corlett          Thomas Rapp
        Joe Cosby              Allan Rasmussen
         Herve Dupont           Brian Savage
          Philippe Ferrucci      Krister Skrtic
           John Giudice           John Smith
            Simon N Goodwin        Stellan
             Kelvin Graham          Ivan Teskera
              Keith Himmelreich      Thomas Wurgler
                                      Chris Young

If you'd like to see you name added to this list, send
some feedback to  the author  Simon N Goodwin. The more
interest is expressed in SpamFryer, the more likely it
is that it will continue to be maintained and updated.

HTML notes

This version of the SpamFryer documentation was produced
automatically from the AmigaGuide version using Guide2ML,
and validated with the following programs from Aminet:

AmigaGuide Writer (AGW) by D.L McPaul (to get started)
Devpac by Hisoft (for most of the editing and linking)
GuideCheck by Guido Mersmann (to check the syntax)
AGuideCheck by Thomas Richter (to check the checking)
IndexAG 2.3ß by Sébastien Boisvert (to make the index)
GuideML by Unsatisfactory Software (to make the HTML)
Tidy by Dave Raggett (to check the HTML after editing)

Changes between released versions

Contents | Index | < Browse | Browse >



Summary of improvements since the first Aminet release

This is the seventh release of SpamFryer and better than ever
thanks to feedback from users - most notably Allan Rasmussen.

Version 2:1 rejected more spam, worked with more POP3 servers,
generated better reports, ran faster, supported multiple POP3
accounts, and had pretty new icons.

Version 3:7 adds the ability to specify rules via 'keep' and
'lose' lists set in the script or from configuration files.
It can also read account details from a separate file, and
accept passwords interactively if you prefer not to store
them in plain-text on your system. It now works with public
ARexx ports, comes with over 100 rules to sift out good and
bad mails, provides even better reports, and has updated and
improved documentation, as you can probably tell by now. :-)

Version 3:9 adds a French translation of the script, two new
rules, and further improvements to the documentation.

Version 4:5 typically runs three or four times faster as it
searches the entire early part of the mail for patterns,
rather than a line at a time, and avoids redundant checks
if a mail matches the keepList or any rule in the LoseList.

It also adds fresh rules, with some redundant ones removed,
and has even better reporting and documentation.

Version 5:3 supports fuzzy matching and can identify common
spams from their MIME header alone, and includes other minor
bugfixes, extensions and optimisations, mostly associated
with the exact way rules and email headers are interpreted.
Details are in the ARexx source and the code history later
in this document. The new MIME and fuzzy matching routines
are explained at the end of the Customisation section.

New rules and tips for SpamFryer users are updated between
releases at http://www.amigawiki.com/cgi-bin/wiki.pl/SpamFryer

Detailed history

Modified November 2003 to remove personal information

        First Aminet upload

Modified December 2003 to explicitly QUIT and CLOSE (thanks to Chris Young)

        Second Aminet upload (Version 1:5)

Modified January  2004 Verbose argument and multi-account system (by Elwood)
                       Bug fix: multiply-identified spams only get fried once
                       Reports errors and actions to log as well as console
                       Configurable truncation of long console subject lines
                       New check for 'Test, Yep.' Bagle/Beagle worm signature
                       also purges mails 'To: undisclosed-recipients' (SNG)
                       Combines reports for all accounts (Elwood's correction)
                       Junks all mails with the word VIAGRA inside (Stellan)
                       Junks all mails from excite.com (add more?) (Stellan)
                       Skips quickly through headers once spam is identified
                       Explicitly opens the console window - thanks Kelvin!
                       Closes log only after last account (fixes Elwood's fix)
                       POP3 commands end with explicit CR as well as LF (RFC)
                       Junks references to V1agra, Xanax and 'Cialis ' drugs
                       Combination tests sift out unwanted date invitations

        Third Aminet Upload (version 2:1)

Modified February 2004 Major updates, most of them made by Allan Rasmussen.
                       Added possibility to use a 'keep' and a 'lose' list.
                       Fixed a minor bug which prevented the Reply-To: field
                       from being scanned properly. I couldn't figure out what
                       the variable 'both' was all about, so I got rid of it
                       and invented a simpler way to produce the final output.
                       Removed the 'bogus address' option, as it is redundant.
                       Made it possible to keep a growing logfile. Made the
                       script compatible with public ARexx ports. Fixed a bug
                       which prevented the second account from being scanned
                       if the first was empty.

Modified March/April   Initial keep/lose list update made by Allan Rasmussen.
            2004       Now verbose also works on the log file. Made an offline
                       version of the script for YAM. Verbose argument changed
                       to quiet in the offline YAM version. Simon: Junks mails
                       with the word 'searchingforasoulmate' inside. Allan:
                       Added Early-Ref: argument to the lists. Renamed lists.
                       Simon: removed checks for old worm subjects, added John
                       Smith's patch for optional interactive password entry,
                       added headings for Elwood's multiple account reporting.
                       Symbolic names for constant list indices for readability.
                       Case-independent list pattern handling. No categorisation.

Modified May 2004      Call to learn rules. Allow keep and lose list information
                       to be embedded in this program file. Allow comments in list
                       files - such lines must start with "// " (including the
                       space, which the ARexx parser treats as a delimiter).
                       Many new rules.

Modified June 2004     New code to check and report rule effectiveness.
                       Code cleanup, consistent nesting and capitalisation.
                       Allows account details to be read from a file.

Modified July 2004     Option to kill all mail to addresses with digits in.
                       Now reads other accounts even if first has no mail.
                       Parsing of account file is more robust and error-trapped.
                       Colons after first field in lists are now optional.
                       Quoted pattern support allows leading or trailing spaces.

        Fourth Aminet Upload (Version 3:7)

Modified August 2004   Always reports if a list file is not found if that list's
                       name in the script is not null. Rejects mails with both
                       no subject and no 'from' or 'reply-to' address (Elwood).
                       New rule: rejects mails with 'prescription' in subject.
                       French translation of ARexx added to package (Herve).
                       Clarified integration in SpamFryer.yam.readme (Allan).
                       Missing History file added to the archive.
                       Clarified distribution and translation rules (Simon).

        Fifth Aminet Upload (Version 3:9)

Data changes Sep..Nov  New rules which get rid of Hotmail misdirected spam
                       bounces and 75K Windows worms doing the rounds, and
                       to catch other less common but still irritating spams.

Code changes Dec 2004  Verbose report details the first rule matched by a mail.
                       Checks for early-ref rules in whole mail, not each line.
                       Skips further loseList rule tests after any one matches.
                       Checks rather than scans server response to TOP command.
                       Much faster scanning due to concatenation of the entire
                       header into one line instead of checking in every line.
                       Timer to report rate of mail scanning. Allan Rasmussen's
                       optimisation tips and SpamFryer.yam updates integrated.

Code changes Feb 2005  Fix for refactored no-subject and no-from-address case.
                       Added SpamFrier to variant names for internal keepList
                       and Allan's tweaks to improve reporting and rule parsing.
                       French translation of the script updated - thanks Herve!

Data changes Jan..Feb  Several new rules, and some redundant old ones removed.
                       Documentation checked and overhauled.

        Sixth Aminet upload (Version 4:5) February 2005

Data changes 2005/06   Some new rules, and some costly obsolete ones trimmed.

Code changes 2005/06   fuzzyMatch configuration option
                       Allows matching of patterns agains spam using accented
                       characters to conceal literal matches, e.g. "VïÅgRà"
                       for "VIAGRA".

                       fuzzyMatch = 0  Recognise only exact matches.
                       fuzzyMatch = 1  Consider accented characters (and "£×ß"
                                       symbols) equivalent to Latin letters in
                                       Early-Ref checks. Beware! this means that
                                       accented characters in Early-Ref patterns
                                       never match the corresponding accents in
                                       email (as those are translated into ASCII
                                       characters). However if you use patterns
                                       without accents those will match similar
                                       sequences with or without them in spams.

                       MIME checks consistently report "suspicious MIME header".
                       Description of emptyMIME in the "CONF BLOCK" changed.
                       Timer code optimised. Removed redundant "datematch = 0".
                       Tabs replaced with spaces. Window now headed SpamFryer5.

                       Only responds to first From:, To: Subject or Reply-to: line
                       encountered in top of message. Stores only the first Date:
                       line seen. This copes with replies that cite the header of
                       the mail being replied to, without indenting that citation.
                       Otherwise spam checks are performed on those header lines
                       as well as those of the new message, if the cited header
                       lines appear in the top part of the message checked for
                       give-away signs of spam.

                       Optionally identifies mails with an extra blank line after
                       an initial MIME multipart/alternative section as spam.

                       Interactive password entry working again (>> expunged).
                       Redundant template line removed:
                         CALL addlib(LibName, Priority, Offset, Version)

                       Allows quotes of either type - enclosed in the other type
                       - in patterns, e.g. Early-Ref: '"ALLAN.TNT"' which could
                       search for "ALLAN.TNT" inclusive of the quotation marks.

                       Tests for initial parts (reply-to, subject etc) are now
                       cASe inSenSItivE

                       Allows Control C abort (leaving mails on the current server)
                       Moved rule error messages to the 'learn_rule' subroutine,
                       No longer writes passwords to the log file in verbose mode
                       unless there is a password-related error in the accounts file.

        Seventh Aminet upload (Version 5:3), October 2006

Most of the changes in version 5 are due to the persistence of Allan Rasmussen
and Simon Goodwin's willingness to make time to test and integrate suggestions.
Further updates depend upon the amount of feedback we get from users. If we
don't hear from you, whether it's because you're entirely happy or have given up,
you should not expect another version of this software. But Simon and Allan are
always keen to hear from users - it makes our effort worthwhile.

       For the latest rules, and support between releases, see:

                       http://www.amigawiki.com/cgi-bin/wiki.pl/SpamFryer

Copying and modification rights

Contents | Index | < Browse | Browse >



Distribution

SpamFryer is copyright Simon N Goodwin and individual
contributors. It may be freely distributed, without change,
as long as all of the original files in the current Aminet
release are included in the distribution.

Nobody is allowed to distribute cut-down, edited, extended
or otherwise modified packages based on SpamFryer, without
the explicit permission of  the author  Simon N Goodwin.

This rule has been made explicit because otherwise there is
a big risk that changes might be made or rules could be added
which substantially increase the chance that mails users want
to keep are inadvertently deleted. Whilst this risk cannot be
avoided in any automatic program, a great deal of effort has
gone into developing, testing and documenting SpamFryer with
a view to minimising such risk.

Suggestions for changes and extensions are very welcome. In
general these will be incorporated into the full release
on Aminet.

Non-English versions of SpamFryer

Contents | Index | < Browse | Browse >



Translations

I welcome translations of the script and ideally all the
documentation into any language, to make SpamFryer more
useful to those who are not accustomed to English. But I
am concerned that such changes, unless carefully done and
tested, might make the script less safe for users. I am
also concerned at the extra work involved in keeping many
versions of the script up to date -  Simon N Goodwin .

A translation may not be accepted unless the author is
prepared to maintain it for future releases of SpamFryer.

The preferred format for the translation is in the form
of a list of unique English and translated patterns which
can be automatically searched for and replaced, using free
Amiga software, so that fresh translated versions of the
script can be produced from the original English version
with minimal need for manual intervention. Translators
should be prepared to help in the updating of SpamFryer
so that their work is not made obsolete by developments.

How to contact the author

Contents | Index | < Browse | Browse >



Contact

I hope you like this package, and welcome emails about
it as long as they are constructive and in English, and
not entirely in HTML (or they will be fried as spam ;-).

Since the code is now feature-complete and much faster,
the main updates needed in future are new rules to cope
with the latest spams. As making an Aminet update is a
big job (even if Aminet is working to distribute it) I
encourage users to check the following web page for new
rules between updates of the code and documentation on
Aminet:

  http://www.amigawiki.com/cgi-bin/wiki.pl/SpamFryer

Better still, if you find any effective new rules, please
add them to the page, which is designed for anyone to edit.
That way we all benefit from the customisations discovered
by other keen users of SpamFryer.

My email address (updated 2005) is simon@mooli.org.uk

     Simon N Goodwin, Warwick UK, October 2006

Former Commodore Amiga hardware developer #2202
 Former Commodore Amiga Certified Software developer
  Former Motorola 68060 processor Alpha/Beta tester
   Former columnist, Amiga Format, Amiga User International
    Former Amiga Inc Audio development team leader
     Continuing Amiga A4000/060 user and developer :-)

Cross-reference index

Contents | Index | < Browse



         SPAMFRYER HTML CROSS-REFERENCE INDEX

Please note: this HTML index only jumps to the section containing the relevant term.
The original AmigaGuide version has accurate links, direct to the line concerned.


  Keyword or phrase                        Theme of the related section

 A

  A500                                     What you must have in order to use SpamFryer
  abort                                    Changes between released versions
  abuse                                    Customising SpamFryer for your messages
  Account.1.1                              FAQ, problems and solutions
  accountFile                              FAQ, problems and solutions
  accounts                                 Configuring SpamFryer to suit your server
  AGuideCheck                              The people who made SpamFryer possible
  AGW                                      The people who made SpamFryer possible
  all-HTML                                 Customising SpamFryer for your messages
  Allan Rasmussen                          The people who made SpamFryer possible
  Amiga                                    What you must have in order to use SpamFryer
  Amiga Forever                            FAQ, problems and solutions
  AmigaGuide                               The people who made SpamFryer possible
  Aminet                                   The people who made SpamFryer possible
  AmiTCP                                   FAQ, problems and solutions
  AmiTCP                                   How to use SpamFryer
  Amithlon                                 What you must have in order to use SpamFryer
  AOL                                      Configuring SpamFryer to suit yourself
  ARexx                                    Customising SpamFryer for your messages
  ARexx                                    How to use SpamFryer
  ARexx                                    What you must have in order to use SpamFryer
  argument                                 Configuring SpamFryer to suit yourself
  attachments                              Customising SpamFryer for your messages
  authorization                            FAQ, problems and solutions
  Authors                                  The people who made SpamFryer possible
  AWeb                                     FAQ, problems and solutions

 B

  Bagle/Beagle                             Changes between released versions
  bogus                                    How to use SpamFryer

 C

  CALL                                     Customising SpamFryer for your messages
  capitalisation                           Changes between released versions
  Case-independent                         Changes between released versions
  category                                 Customising SpamFryer for your messages
  cc'd                                     Configuring SpamFryer to suit yourself
  Changes between released versions        Changes between released versions
  ChkMail                                  Customising SpamFryer for your messages
  CIALIS                                   Customising SpamFryer for your messages
  Colons                                   Changes between released versions
  Combination                              Customising SpamFryer for your messages
  command                                  How to use SpamFryer
  comments                                 Configuring SpamFryer to suit your server
  compatible                               What you must have in order to use SpamFryer
  conditional                              Customising SpamFryer for your messages
  confidential                             Configuring SpamFryer to suit your server
  Configuration                            Configuring SpamFryer to suit your server
  Configuring to suit your server          Configuring SpamFryer to suit your server
  Configuring to suit yourself             Configuring SpamFryer to suit yourself
  connect                                  FAQ, problems and solutions
  console                                  How to use SpamFryer
  Contact                                  How to contact the author
  Contents                                 An overview of SpamFryer
  CR                                       Changes between released versions
  Customisation                            How to use SpamFryer
  Customising for your messages            Customising SpamFryer for your messages

 D

  date                                     Changes between released versions
  dating                                   Customising SpamFryer for your messages
  dele                                     Customising SpamFryer for your messages
  Devpac                                   The people who made SpamFryer possible
  digits                                   Configuring SpamFryer to suit yourself
  directories                              FAQ, problems and solutions
  disable                                  Customising SpamFryer for your messages
  Distribution                             Copying and modification rights
  drawer                                   Configuring SpamFryer to suit yourself
  drives                                   Configuring SpamFryer to suit your server
  drugs                                    Changes between released versions
  Duplicate                                FAQ, problems and solutions

 E

  EARLY-REF                                FAQ, problems and solutions
  Early-Ref                                Customising SpamFryer for your messages
  editing                                  Customising SpamFryer for your messages
  embedding                                Configuring SpamFryer to suit your server
  emptyMIME                                Customising SpamFryer for your messages
  emulator                                 FAQ, problems and solutions
  ERR                                      FAQ, problems and solutions
  examples                                 Customising SpamFryer for your messages
  excite.com                               Changes between released versions
  exclude                                  Customising SpamFryer for your messages
  EXIT                                     Configuring SpamFryer to suit yourself

 F

  FAQ, problems and solutions              FAQ, problems and solutions
  feedback                                 The people who made SpamFryer possible
  filter                                   Customising SpamFryer for your messages
  fixes                                    Changes between released versions
  flag                                     Configuring SpamFryer to suit yourself
  freely-distributable                     FAQ, problems and solutions
  Freeserve                                Configuring SpamFryer to suit yourself
  Frequently asked questions               FAQ, problems and solutions
  future                                   How to contact the author
  fuzzyMatch                               Customising SpamFryer for your messages

 G

  Genesis                                  FAQ, problems and solutions
  Genesis                                  How to use SpamFryer
  Genesis                                  What you must have in order to use SpamFryer
  Goodwin, Simon                                  How to contact the author
  group                                    Customising SpamFryer for your messages
  GuideCheck                               The people who made SpamFryer possible
  Guido                                    The people who made SpamFryer possible

 H

  headings                                 Configuring SpamFryer to suit yourself
  Hisoft                                   The people who made SpamFryer possible
  history                                  Changes between released versions
  HostName                                 FAQ, problems and solutions
  Hostname                                 Configuring SpamFryer to suit your server
  How to contact the author                How to contact the author
  How to use SpamFryer                     How to use SpamFryer
  HTML-only                                Customising SpamFryer for your messages
  HTML guide                               The people who made SpamFryer possible

 I

  icon start                               How to use SpamFryer
  icon choices                             Configuring SpamFryer to suit yourself
  improvements                             Changes between released versions
  IndexAG                                  The people who made SpamFryer possible
  infection                                Customising SpamFryer for your messages
  install                                  FAQ, problems and solutions
  integration                              Configuring SpamFryer to suit yourself
  interactive passwords                    Configuring SpamFryer to suit your server
  ISP_Account_Name                         Configuring SpamFryer to suit your server

 K

  keepList                                 Customising SpamFryer for your messages
  keeplist                                 Configuring SpamFryer to suit yourself
  keepList                                 Configuring SpamFryer to suit your server
  Kickstart                                What you must have in order to use SpamFryer

 L

  Latin-based                              Customising SpamFryer for your messages
  Launching                                How to use SpamFryer
  LF                                       Changes between released versions
  LHA                                      Customising SpamFryer for your messages
  LIBS                                     Configuring SpamFryer to suit your server
  limits                                   Configuring SpamFryer to suit yourself
  lineMax                                  Configuring SpamFryer to suit yourself
  lists                                    FAQ, problems and solutions
  lists                                    Customising SpamFryer for your messages
  lists                                    Configuring SpamFryer to suit yourself
  localisation                             Translations of SpamFryer to other languages
  location                                 Configuring SpamFryer to suit yourself
  logging                                  Configuring SpamFryer to suit your server
  login                                    Configuring SpamFryer to suit your server
  logs                                     Configuring SpamFryer to suit yourself
  loseList                                 Customising SpamFryer for your messages
  lose_rule                                Customising SpamFryer for your messages
  LZX                                      Customising SpamFryer for your messages

 M

  matches                                  Customising SpamFryer for your messages
  matching                                 FAQ, problems and solutions
  message number                           Customising SpamFryer for your messages
  Miami                                    How to use SpamFryer
  Miami                                    What you must have in order to use SpamFryer
  MiamiOnline.yam                          Configuring SpamFryer to suit yourself
  MIME                                     Customising SpamFryer for your messages
  mountlist                                FAQ, problems and solutions
  multi-account                            Changes between released versions

 N

  name and password                        Customising SpamFryer for your messages
  New rules                                How to contact the author
  noDigits                                 Configuring SpamFryer to suit yourself

 O

  obscured                                 Configuring SpamFryer to suit your server
  on-line                                  Customising SpamFryer for your messages
  optional                                 Customising SpamFryer for your messages
  optional                                 How to use SpamFryer
  Optional                                 Configuring SpamFryer to suit yourself
  optional                                 Configuring SpamFryer to suit your server
  options                                  Configuring SpamFryer to suit yourself
  options                                  Customising SpamFryer for your messages
  OPTIONS                                  Configuring SpamFryer to suit yourself
  order                                    Configuring SpamFryer to suit your server
  over-ridden                              Customising SpamFryer for your messages

 P

  parameter                                How to use SpamFryer
  password                                 FAQ, problems and solutions
  path                                     FAQ, problems and solutions
  path                                     How to use SpamFryer
  path                                     Configuring SpamFryer to suit yourself
  path                                     Configuring SpamFryer to suit your server
  pattern                                  FAQ, problems and solutions
  patterns                                 Customising SpamFryer for your messages
  penis                                    Customising SpamFryer for your messages
  PIF                                      How to use SpamFryer
  plain-text                               Customising SpamFryer for your messages
  POP3                                     FAQ, problems and solutions
  POP3                                     Customising SpamFryer for your messages
  POP3                                     How to use SpamFryer
  POP3                                     Configuring SpamFryer to suit yourself
  POP3                                     Configuring SpamFryer to suit your server
  POP3                                     What you must have in order to use SpamFryer
  postmaster                               Customising SpamFryer for your messages
  pre-programmed                           How to use SpamFryer
  printout                                 An overview of SpamFryer
  problem                                  FAQ, problems and solutions
  problem                                  How to use SpamFryer
  protocol                                 Customising SpamFryer for your messages

 Q

  quicker                                  Customising SpamFryer for your messages
  quotes                                   Customising SpamFryer for your messages

 R

  Rasmussen, Allan                         The people who made SpamFryer possible
  recipient                                How to use SpamFryer
  redirected                               Customising SpamFryer for your messages
  references                               Customising SpamFryer for your messages
  Reply-To                                 FAQ, problems and solutions
  Reply-To                                 Customising SpamFryer for your messages
  report                                   Customising SpamFryer for your messages
  reports                                  Configuring SpamFryer to suit yourself
  reports                                  Configuring SpamFryer to suit your server
  reqtools.library                         Configuring SpamFryer to suit your server
  requester                                Configuring SpamFryer to suit your server
  Requirements                             What you must have in order to use SpamFryer
  rexxmast                                 FAQ, problems and solutions
  RexxMast                                 How to use SpamFryer
  rexxreqtools.library                     Configuring SpamFryer to suit your server
  RFC                                      Changes between released versions
  Rights                                   Copying and modification rights
  Roadshow                                 How to use SpamFryer
  Roadshow                                 What you must have in order to use SpamFryer
  rules                                    Configuring SpamFryer to suit yourself
  rx                                       How to use SpamFryer
  rx                                       Configuring SpamFryer to suit yourself

 S

  screenName                               Configuring SpamFryer to suit yourself
  scripts                                  FAQ, problems and solutions
  Search                                   FAQ, problems and solutions
  security                                 Customising SpamFryer for your messages
  security                                 Configuring SpamFryer to suit your server
  servers                                  Customising SpamFryer for your messages
  servers                                  Configuring SpamFryer to suit yourself
  servers                                  Configuring SpamFryer to suit your server
  Simon N Goodwin                          How to contact the author
  source                                   Customising SpamFryer for your messages
  SpamAssassin                             Customising SpamFryer for your messages
  SpamAssassin                             How to use SpamFryer
  SpamFryer.accounts                       FAQ, problems and solutions
  SpamFryer.accounts                       Configuring SpamFryer to suit yourself
  SpamFryer.accounts                       Configuring SpamFryer to suit your server
  SpamFryer.config                         FAQ, problems and solutions
  SpamFryer.keepList                       FAQ, problems and solutions
  SpamFryer.keepList                       Customising SpamFryer for your messages
  SpamFryer.keepList                       Configuring SpamFryer to suit yourself
  SpamFryer.keepList                       Configuring SpamFryer to suit your server
  SpamFryer.log                            Configuring SpamFryer to suit yourself
  SpamFryer.loseList                       FAQ, problems and solutions
  SpamFryer.loseList                       Customising SpamFryer for your messages
  SpamFryer.loseList                       Configuring SpamFryer to suit yourself
  SpamFryer.loseList                       Configuring SpamFryer to suit your server
  SpamFryer.rexx                           FAQ, problems and solutions
  SpamFryer.rexx                           Customising SpamFryer for your messages
  SpamFryer.rexx                           How to use SpamFryer
  SpamFryer.rexx                           Configuring SpamFryer to suit yourself
  SpamFryer.rexx                           Configuring SpamFryer to suit your server
  SpamFryer.text                           An overview of SpamFryer
  SpamFryer.yam                            Configuring SpamFryer to suit yourself
  standards                                Customising SpamFryer for your messages
  subdirectory                             Configuring SpamFryer to suit yourself
  subject                                  Configuring SpamFryer to suit yourself
  Summary                                  An overview of SpamFryer
  support                                  FAQ, problems and solutions
  sys:wbstartup                            How to use SpamFryer

 T

  TCP-Handler                              FAQ, problems and solutions
  the author                               How to contact the author
  the basics                               What you must have in order to use SpamFryer
  threshold                                Customising SpamFryer for your messages
  Translations                             Non-English versions of SpamFryer
  trojan                                   How to use SpamFryer

 U

  UAE                                      FAQ, problems and solutions
  undisclosed-recipients                   Customising SpamFryer for your messages
  updates                                  Changes between released versions
  updates                                  The people who made SpamFryer possible
  Usage                                    How to use SpamFryer
  userName                                 FAQ, problems and solutions
  users                                    Configuring SpamFryer to suit your server

 V

  variables                                Customising SpamFryer for your messages
  verbose                                  How to use SpamFryer
  verbose                                  Configuring SpamFryer to suit yourself
  Version                                  Changes between released versions
  virus                                    How to use SpamFryer

 W

  What you must have                       What you must have in order to use SpamFryer
  whitelist                                Customising SpamFryer for your messages
  Wiki page                                How to contact the author
  window                                   Configuring SpamFryer to suit yourself
  Windoze                                  How to use SpamFryer
  Workbench                                Configuring SpamFryer to suit your server
  worms                                    How to use SpamFryer

 Y

  YAM                                      FAQ, problems and solutions
  YAM                                      Customising SpamFryer for your messages
  YAM                                      Configuring SpamFryer to suit yourself
  YAM                                      Configuring SpamFryer to suit your server
  yam:.config                              Configuring SpamFryer to suit your server
  Your name                                Configuring SpamFryer to suit your server

Converted using GuideML 3.10