An overview of SpamFryer

Index | Browse >


SpamFryer is a utility which deletes unsolicited emails from an ISP's server, without you having to download them. Over the last five years it has reliably 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.



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 HTML version is for people who prefer to read things in a web browser. 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.

What you must have in order to use SpamFryer

Contents | Index | < Browse | Browse >


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 (accountFile), 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.

  Username: ISP_Account_Name
  Password: guessthis


  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. or a domain name like

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 Hostname must be specified before the corresponding UserName (this is a change since earlier versions which removes a risk that a badly- formatted line might invalidate the remainder of the account information). If you miss out the password SpamFryer will ask for the password interactively. This feature no longer requires Workbench 2, reqtools.library and rexxreqtools.library, though it will use those if available.

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

(Important: Read also the section about the sortMethod option.)

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 = ""

This can be an IP number e.g. or a domain name like

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

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):

Other options are:

Options for the log file

Contents | Index | < Browse | Browse >

Log options

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

SpamFryer6 adds an option to store only the log for the latest session, rather than to append each new log to any existing file. The variable 'lastLogOnly' controls this. By default it is 0, for compatibility with previous releases, but if you set it to 1 the old log will be deleted and replaced with a log for each latest SpamFryer session.

<- Configuring SpamFryer to suit yourself

Configuration - screenName

Contents | Index | < Browse | Browse >

Screen selection

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, but you can redirect SpamFryer to use the same screen as your mailer or any other application by editing the 'screenName' configuration.

If you set the screenName to '' no window will be opened unless you run SpamFryer 6 in interactive mode by giving the BROWSE argument, in which case both windows will be opened on the current screen.

If you want to use a particular font in the windows of the interactive (BROWSE) mode, edit the SpamBrowser text file and add a 'setfont' line specifying the name and size of the font you prefer. The script contains the following line, commented out for now, to select the classic Amiga font in 8 point size:

 setfont Topaz 8

Edit this to set any non-proportional font and size you prefer. Proportionally-spaced fonts like Helvetica and Times will not work well as the browse view uses fixed-width columns.

<- Configuring SpamFryer to suit yourself

Configuration - lineMax, maxLineSize, maxMailSize

Contents | Index | < Browse | Browse >

Mail limits

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.

maxLineSize sets the maximum length a line in a mail can be before it is considered abnormal or dangerous (potentially causing buffer overflow). Setting this variable to 0 or anything below 80 causes the limit to be ignored.

Note: RFC2822 (which supercedes RFC822) specifies that:
"Each line of characters MUST be no more than 998 characters, and SHOULD be no more than 78 characters, excluding the CR/LF."

maxMailSize sets the maximum total size in bytes for an acceptable mail. Setting this variable to 0 or anything below 1024 causes this limit to be ignored.

Note that these mail limits are respectful of the keep rules (which override all lose rules) - so if a mail is identified via your keepList it will not be deleted regardless of line lengths or its total size.

<- Configuring SpamFryer to suit yourself

Configuration - sortMethod

Contents | Index | < Browse | Browse >

Automatic rule optimisation

SpamFryer 6:18 adds an option to sort rules so that the most effective are tried first. This is not switched on by default, as it removes comments from the rule files (not knowing how to sort them), and its effectiveness depends very much upon how many rules you have defined.

When sortMethod is set to 1 or 2 SpamFryer will sort your keepList and loseList. Leave it set to 0 if you don't want your hand-made keep/lose lists to be over-written (and to lose your comments and own order of rules). But note that a backup copy of your lists will be made (with a ".old" filename extension) during the first run of SpamFryer with the sorting option enabled.

When set to 1, all the rules are sorted in descending order on their "Trigger Hits" score.

When set to 2, the rules are grouped by field types ("From:", "Subject:", ...), then sorted in descending order upon each group "Trigger Hits" score. This sorting method is faster than the first as it saves the rules grouped as they are used internally. However the lists can end up longer because there are more "Trigger Hits" lines added, and they are a bit less convenient for humans to read.

When sorting is activated, you will see in your keep/lose lists that the rules have been sorted, and that new comment lines like this

// Trigger Hits: 342

have been added here and there. Those lines tell you how often the rules following them have matched when checking mails.

The keepList or the loseList are re-sorted if at least one mail has been automatically deleted from the server by SpamFryer. If, in interactive mode, you have unselected some of the mails previously marked as 'to delete' by SpamFryer, the rules triggered for those mails will still score one more Hit, even if the same mails will re-appear in the next session of SpamFryer. Now you know, consider this a feature ;-) .

(See also: "How can I make SpamFryer faster?".)

<- Configuring SpamFryer to suit yourself

Configuration - noDigits

Contents | Index | < Browse | Browse >

Numeric addresses

'noDigits' sets or clears an 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 delete 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.

<- Configuring SpamFryer to suit yourself

Configuration - fuzzyMatch

Contents | Index | < Browse | Browse >

Fuzzy matching

This optional extension from SpamFryer 5 catches spams that use MIME or redundant accents or equivalent characters to hide their unwanted payload from brute-force searches.

Fuzzy matching is controlled by the fuzzyMatch variable in the configuration block 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.

<- Configuring SpamFryer to suit yourself

Configuration - emptyMIME

Contents | Index | < Browse | Browse >

MIME spam

The emptyMIME option was implemented in SpamFryer 5 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 sifted 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

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.

<- Configuring SpamFryer to suit yourself

How to use SpamFryer

Contents | Index | < Browse | Browse >


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, versions 3 and 4 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 (see FAQ 4).

You can also configure it to be launched as an ARexx script by Miami, by integration into the Thor mailer (using the special version provided) 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. (See also the Log options section.)

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 - but if some other programs loaded early in your boot sequence (such as MiamiDX) need ARexx you may find you need to launch it from your S:user-startup script. ARexx was a standard component of Commodore's AmigaOS versions 2 and 3 and sold as an add-on for other versions.

Once launched, 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 at the start, or subjects or a recipient address known to be bogus. It includes special sifting for 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. New rules that I and other users value end up on the Wiki page - please post yours, too!

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!

Usage - Command line arguments

Contents | Index | < Browse | Browse >

Command line arguments

SpamFryer now supports the standard "?" argument. When calling SpamFryer with that argument, a template with the available arguments will be shown, and you will be prompted to enter one or more (or none) from the following options:

The 'BROWSE' switch (without quotes) is the most important new feature. It allows you to start in interactive mode that shows you a preview of the waiting mails in your POP account, and allows you to select the mails you want to delete, as explained in the SpamBrowser usage section of this document.

The 'LANGUAGE' argument (without quotes, but keyword needed) is only useful if you want to use another language than the one configured as your preference in Workbench (or if your OS does not support Locale programs). Otherwise SpamFryer will run automatically in your favourite (or native) language as long as a translation file is available for that language.
Tip: If you run SpamFryer transparently (without any output, that is without the BROWSE and VERBOSE arguments, and with the screenName set to ''), you may want to add LANGUAGE='english' as an argument. This will force SpamFryer to run with the built-in default English text, and skip any attempt to load a language file.

The 'SORT' argument (without quotes, keyword required) overrides the settings for the sortMethod option. Acceptable values are 0, 1 or 2.

The 'VERBOSE' switch affects the log text output. If VERBOSE is specified SpamFryer outputs more details about what is going on.

<- How to use SpamFryer

Usage - The interactive (BROWSE) mode

Contents | Index | < Browse | Browse >

Spam Browsing

When started with the 'BROWSE' (without quotes) switch, SpamFryer will enter an interactive mode known as SpamBrowser. The same script and configurations files are used - the only difference is the switch and the opportunity to review waiting mail after it has been checked by SpamFryer and before the server is updated.

If you have more than one POP account, a requester will ask you to select the account you want to browse. If you have fewer than 10 accounts configured, you can quickly select one by pressing the numeric key shown in front of the account name.

Then SpamFryer will collect details of the mails waiting in the selected account. If more than ten mails are waiting in the mailbox, a countdown will inform you of how many mails have yet to be spam-checked.

When done, another window will open. This is where you will see the waiting mails (and the ones already flagged as 'to delete' by SpamFryer), and be able to select (or unselect) those you want to be deleted (or not).

If you press the HELP key, the first window will tell you how to navigate through the selection (BROWSE) window. You need to make sure the selection window is selected when scrolling through it.

The selection window looks rather like this:

 |SpamFryer 6:18 -- Previewing mails waiting in    |
 | | Honey       | Wake up, lazy boy !                           |
 |*| Free pills  | How to get a one meter dick easily            |
     ...          ...
 |*| Casino      | 300 $ Free                                    |
 |*| =?koi8-r?B? | =?koi8-r?B?gkjhdffgd;b,nnbfg;fg,;nns         +|

The first column marks with a '*' the messages flagged as 'to be deleted'. Press the SPACE bar or M key to toggle that flagging. Even if you mark a message for deletion, it will be left alone if it matches a rule in your keepList; if so, SpamFryer will tell you.

The second column shows the TO: field, and the third column shows the SUBJECT: field.

The [+] symbol which might appear at the bottom right corner of the window indicates that there are more messages to be seen. Press the down-arrow key (or SHIFT down-arrow to page down) to see the later messages.

The reverse-coloured bar shows you the currently selected message. Press ? or I to get more information about that message. The main window (above the browser window) will then shows you the From: field, the To: field, the Subject: field, and the status of the message (a short explanation about why the message is marked as 'to delete', or why it is to be kept).

When you have finished reviewing and marking mails, press ENTER or A to delete the selected mails (marked *) from the server.

If you press Esc or Q at any time the SpamFrying process for the selected account will be cancelled, with no changes on the server.

<- How to use SpamFryer

Integration and support

Contents | Index | < Browse | Browse >

Integration and support

Further Customisation

SpamFryer comes with more than 100 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.

Integration and support - Miami integration

Contents | Index | < Browse | Browse >

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 */

   'Run <>NIL:' miamipath
   'WaitForPort MIAMI.1'
   'rx' Spampath
    'wait 10'

<- Customising SpamFryer for your environment

Integration and support - DOpus Magellan integration

Contents | Index | < Browse | Browse >

Directory Opus Magellan integration

Here is an example of commands to be used to launch SpamFryer with a DOpus5 button:

     AmigaDOS    CD "Work:SpamFryer"
     ARexx       SpamFryer.rexx

The first line is important if the path to SpamFryer.rexx contains any space as in such a case rx will not be able to run the script. The second line is the script itself. Add any argument you want to that line.

If you wish something else to be performed after SpamFryer has done its job (like loading a mail program), add these lines :

     Command     FinishSection
     Workbench   <name of the program to run>

<- Customising SpamFryer for your environment

Integration and support - Yam support

Contents | Index | < Browse | Browse >

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, as noted in the Miami section.

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.

<- Customising SpamFryer for your environment

Integration and support - Thor support

Contents | Index | < Browse | Browse >

Thor support

SpamFryer.thor is an ARexx script for the shareware email and news client Thor, which uses SpamFryer rules to identify spam in POP accounts. It also has an interactive (browse) mode where you can preview waiting mails and select those you want to delete. SpamFryer.thor can be run with or without Thor loaded. For more details please see SpamFryer.Thor.readme, in the Thor Support drawer.

<- Customising SpamFryer for your environment

Integration and support - Alternative icons

Contents | Index | < Browse | Browse >

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 and there are ILBM images so you can see the variants on your own display, whatever screen mode and icon system you currently have installed.

<- Customising SpamFryer for your environment

Customising SpamFryer for your messages

Contents | Index | < Browse | Browse >


Since SpamFryer is a 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. But if you can do it by editing the configuration, that's likely to be a lot easier and less risky than editing the script.

Customisation - Background

Contents | Index | < Browse | Browse >


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 tell-tale 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 (etc) 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.

-> The keepList and loseList

<- Customising SpamFryer for your messages

Customisation - keepList, loseList

Contents | Index | < Browse | Browse >

SpamFryer lists

SpamFryer now incorporates more than 100 rules in the two configuration files and in the script itself. Only the most complex 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 From:, Subject:, 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

-> Safety first

<- Customising SpamFryer for your messages

Customisation - Safety First

Contents | Index | < Browse | Browse >

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 (at) vituperation (dot) 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 (and often many more) bulk junk mails sent out between 2004 and 2008. But a few people might actually 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.

-> General rules about rules

<- Customising SpamFryer for your messages

Customisation - General rules about rules

Contents | Index | < Browse | Browse >

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 such 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. But if you use the new option to sort rules so that the most effective are counted and moved up the list, blank lines and comments will be removed (as the sort cannot work out where to put them) so take a backup of your changes and comments before enabling the SORT option.

SpamFryer writes a report showing how many messages it has fried from each category, and how many it has left on the server. There might possibly 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

<- Customising SpamFryer for your messages

Customisation - Editing the source

Contents | Index | < Browse | Browse >

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 (ARexxGuide2_0A 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 (on Aminet) which was written in 1994 by Matt White <whitem (at) duke (dot) usask (dot) ca> 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:

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 dummy@nowhere.nul, you can sift them out like this:

         if left(instring,10)='Reply-To: ' then
           if pos('dummy@nowhere.nul',instring) >0 then spam=1

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

<- Customising SpamFryer for your messages

Customisation - Combination tests

Contents | Index | < Browse | Browse >

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.

<- Customising SpamFryer for your messages

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.

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. rather than their POP3 mail server (e.g., or

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 host 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 HOSTNAME: followed by the matching server address and a USERNAME: line to indicate the relevant account name.

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 or refer to Amigas, but friends often might!

(7) What does 'Server closed the connection' mean?

This message may appear in interactive ('BROWSE') mode. A POP server shuts down the connection if it detects no activity from the user's client after some time. If you start SpamFryer with the BROWSE argument, then go away for a cup of coffee, it's normal to find the connection closed upon your return.

The timeout delay varies from one server to another, but if you are actively browsing your mailbox, SpamFryer keeps talking to the server until you accept or cancel the mail selection. If you think you are getting this message too often, try lowering the 'pollRate' value to 10 seconds.

(8) How can I make SpamFryer faster?

Hey, remember this is an ARexx script. Don't expect the same performance as with a true machine-code program. That said, SpamFryer may be limited by the connection, not the ARexx.

However, it's true that the more rules you have in the keep or lose lists (typically the loseList is much bigger than the keepList), and the more messages you have waiting in your mailbox, the longer SpamFryer will take to do its job.

You can improve the performance a bit by enabling the sort option (see sortMethod in the "CONFIGURATION BLOCK" section of the script) for the keepList and the loseList (set 'sortMethod' to 1 or 2).

By doing this, SpamFryer will try to keep the rules in the order they are most efficient, by putting the most often triggered rules first in the lists.

If after some time you see that your loseList contains rules which were never triggered (eg.: the "// Trigger Hits:" line before those rules has 0 as value), you can decide to remove those rules. SpamFryer will then have fewer rules to compare mails with, and thus will run a bit faster.

Also, don't neglect the keepList. If you know how to recognise the mails you want to keep, add a rule to the keepList. A mail matching a keep rule will not be tested against all the loseList rules.

As technology improves to make our lives more comfortable, so do spammers' techniques in attempt to bypass spam-filters. So you will have to keep an eye on your keepList and loseList to keep them up-to-date, adding rules for new types of spam. Please put them on the Wiki page so can all benefit!

The 'sortMethod' option can help you here, by showing which rules are the most "efficient". But even with the sorting option enabled, SpamFryer has no way to self-learn from the newer spams. Let's take an idiotic example:

Today, you receive about 12 mails per day. Say Rule #1 in your loseList catches 10 spam from them, and Rule #63 catches another one. In a year's time, the spams caught by Rule #1 are not as pervasive as today, but the spams caught by Rule #63 is now more aggressive. Because Rule #1 has reached a "Trigger Hits" count of 3520 and Rule #63 has only 352 "Hits", it will take a lot of time before SpamFryer learns that Rule #63 is the most efficient at the moment.

Fortunately, SpamFryer 6 includes a technique that can help in this case:

When a rule has been triggered at least 250 times, all the rules "Trigger" counters are scaled down by 2. The orders of the rules on the keepList and loseList are preserved, but it will take less time for Rule #63 to replace Rule #1.

Of course, if every second counts, it's still up to you to re-organise the list to the make the best of each moment. ;-)

(9) I moved SpamFryer.rexx to another place on my hard disk, and since then, SpamFryer doesn't work anymore.

It's better to move the whole SpamFryer directory to ensure you have not left a required file behind in the course of the move.

Check in the CONFIGURATION BLOCK of the SpamFryer.rexx script to see if the path to the keepList, the loseList and the accountFile is still correct.

Check also if the path + filename to the script is not longer than 63 characters. If it is, try to find another location on your drive, with a shorter total path length.

Where you have to provide or configure a filename, check that you've used double-quotes around names with spaces in. Without the quotes some programs won't be able to find that file, if there is a space anywhere in the path or filename.

The people who made SpamFryer possible

Contents | Index | < Browse | Browse >


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       Keith Himmelreich
  Niels Bache            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
         Philippe Duchenne      Brian Savage
          Herve Dupont           Krister Skrtic
           Philippe Ferrucci      John Smith
            John Giudice           Stellan
             Simon N Goodwin        Ivan Teskera
             Bernd Gollesch          Thomas Wurgler
              Kelvin Graham           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 added 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 added a French translation of the script, two new rules, and further improvements to the documentation.

Version 4:5 typically ran 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 added fresh rules, with some redundant ones removed, and has even better reporting and documentation.

Version 5:3 supported 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 page. The MIME and fuzzy matching routines are explained in the Configuration section.

Version 6:18 of SpamFryer adds 'SpamBrowser' which gives you the option to run SpamFryer in an interactive mode, where you can preview the contents of your mailbox and select the mails you want to keep or delete. Passwords may now be encrypted according to the APOP standard. There's a new version for users of the Thor mailer. Localisation support is improved, as is the handling of control characters and long lines (to Internet standard RFC2822).

New rules and tips for SpamFryer users are updated between releases at

-> Detailed history

Detailed history

Contents | Index | < Browse | Browse >

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 (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

Code changes 2006/08   Option to start SpamFryer in interactive mode:
                       Preview the content of your mailbox, and select the mails
                       you want to keep or delete. Custom screen and font allowed.

                       Option to sort the rules to make checking more efficient:
                       SpamFryer will re-build the keepList and loseList so that
                       the most often triggered rules are the first ones used to
                       check the mails. This also gives some stats about spam.

                       Standard localisation support and new translation tool.
                       Support for APOP (POP3 protocol) password encryption.
                       Support for Thor mailer via customised version of SpamFryer.
                       Folded mail headers are now fully supported to RFC 822.
                       Option to fry mails above a specified size.
                       No dependency upon external programs or libraries.
                       Account selection shortcuts (in interactive mode).
                       Option to over-write or append to previous logs.
                       DOpus Magellan integration examples.

        Eighth Aminet upload (version 6:18), September 2008

The above list of changes made for version 6:18 is just a condensed summary, based on the contents of the WhatsNew.text file for recent upgraders. A blow-by-blow description of the changes made, mostly by AmigaPhil, in the course of development of SpamFryer 6 appears in the file ChangeLog6_18.text.

Most of the changes in versions 5 and 6 are due to the persistence of Allan Rasmussen and Philippe Duchenne, aka AmigaPhil, respectively - and Simon Goodwin's willingness to make time to test and integrate their 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:

Copying and modification rights

Contents | Index | < Browse | Browse >


SpamFryer is copyright 2004-2008 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 >


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

Please study the contents of the Translation Tool drawer to find out how to add a new translation quite painlessly.

How to contact the author

Contents | Index | < Browse | Browse >


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 ;-).

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:

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 is simon (at) mooli (dot) org (dot) uk

     Simon N Goodwin, Warwick UK, September 2008

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


 Keyword or phrase                       Theme of the related section


 A500                                    What you must have in order to use SpamFryer
 abort                                   Detailed history
 abuse                                   Customisation - Safety first
 Account.1.1                             FAQ, problems and solutions
 accountFile                             FAQ, problems and solutions
 accountFile                             Configuring SpamFryer to suit your server
 accounts                                Configuring SpamFryer to suit your server
 AGuideCheck                             The people who made SpamFryer possible
 AGW                                     The people who made SpamFryer possible
 all-HTML                                Customisation - Background
 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                                     Configuration - noDigits
 ARexx                                   Configuration - emptyMIME
 ARexx                                   How to use SpamFryer
 ARexx                                   What you must have in order to use SpamFryer
 argument                                Usage - Command line arguments
 attachments                             Configuration - emptyMIME
 authorization                           FAQ, problems and solutions
 Authors                                 The people who made SpamFryer possible
 Automatic rule optimisation             Configuration - sortMethod
 AWeb                                    FAQ, problems and solutions


 Background                              Customisation - Background
 Bagle/Beagle                            Detailed history
 bogus                                   How to use SpamFryer
 BROWSE                                  Usage - Command line arguments


 capitalisation                          Detailed history
 Case-independent                        Detailed history
 category                                Customisation - keepList, loseList
 cc'd                                    Configuration - noDigits
 Changes between released versions       Changes between released versions
 ChkMail                                 Customisation - Editing the source
 CIALIS                                  Customisation - Editing the source
 Colons                                  Customisation - keepList, loseList
 Combination                             Customising SpamFryer for your messages
 Combination tests                       Customisation - Combination tests
 command                                 How to use SpamFryer
 Command line arguments                  Usage - Command line arguments
 comments                                Configuring SpamFryer to suit your server
 compatible                              What you must have in order to use SpamFryer
 conditional                             Customisation - Combination tests
 confidential                            Configuring SpamFryer to suit your server
 Configuration                           Configuring SpamFryer to suit your server
 Configuring to suit your environment    Integration and support
 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                                 Option for the log file
 console                                 How to use SpamFryer
 Contact                                 How to contact the author
 Contents                                An overview of SpamFryer
 CR                                      Detailed history
 Customisation                           How to use SpamFryer
 Customising for your environment        Customising SpamFryer for your environment
 Customising for your messages           Customising SpamFryer for your messages


 date                                    Changes between released versions
 dating                                  Customisation - Combination tests
 dele                                    Customisation - Editing the source
 Detailed history                        Detailed history
 Devpac                                  The people who made SpamFryer possible
 digits                                  Configuration - noDigits
 directories                             FAQ, problems and solutions
 Directory Opus Magellan                 Integration and support - DOpus Magellan integration
 disable                                 Customisation - General rules about rules
 Distribution                            Copying and modification rights
 drives                                  Configuring SpamFryer to suit your server
 drugs                                   Detailed history
 Duplicate                               FAQ, problems and solutions


 EARLY-REF                               FAQ, problems and solutions
 Early-Ref                               Customisation - keepList, loseList
 editing                                 Customising SpamFryer for your messages
 Editing the source                      Customisation - Editing the source
 embedding                               Configuring SpamFryer to suit your server
 emptyMIME                               Configuration - emptyMIME
 emulator                                FAQ, problems and solutions
 ERR                                     FAQ, problems and solutions                              Detailed history
 exclude                                 Customisation - Editing the source


 FAQ, problems and solutions             FAQ, problems and solutions
 feedback                                The people who made SpamFryer possible
 filter                                  Customisation - Background
 fixes                                   Detailed history
 flag                                    Configuration - noDigits
 flag                                    Configuration - emptyMIME
 flag                                    How to use SpamFryer
 flag                                    Usage - The interactive (BROWSE) mode
 freely-distributable                    FAQ, problems and solutions
 Freeserve                               Configuration - noDigits
 Frequently asked questions              FAQ, problems and solutions
 future                                  How to contact the author
 fuzzyMatch                              Configuration - fuzzyMatch


 General rules about rules               Customisation - General rules about rules
 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
 GuideCheck                              The people who made SpamFryer possible
 Guido                                   The people who made SpamFryer possible


 headings                                Configuration - Option for the log file
 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 can I make SpamFryer faster?        FAQ, problems and solutions
 How to contact the author               How to contact the author
 How to use SpamFryer                    How to use SpamFryer
 HTML-only                               Customisation - keepList, loseList


 icon start                              How to use SpamFryer
 icon choices                            Integration and support - Alternative icons
 improvements                            Changes between released versions
 IndexAG                                 The people who made SpamFryer possible
 infection                               Customisation - Background
 install                                 FAQ, problems and solutions
 integration                             Integration and support
 interactive mode                        Usage - The interactive (BROWSE) mode
 interactive passwords                   Configuring SpamFryer to suit your server
 ISP_Account_Name                        Configuring SpamFryer to suit your server


 keepList                                Customisation - keepList, loseList
 keepList                                Configuring SpamFryer to suit yourself
 keepList                                Configuration - sortMethod
 Kickstart                               What you must have in order to use SpamFryer


 LANGUAGE                                Usage - Command line arguments
 lastLogOnly                             Option for the log file
 Latin-based                             Configuration - fuzzyMatch
 Launching                               How to use SpamFryer
 LF                                      Detailed history
 LHA                                     Customisation - Background
 limits                                  Configuration - lineMax, maxLineSize, maxMailSize
 lineMax                                 Configuration - lineMax, maxLineSize, maxMailSize
 lists                                   FAQ, problems and solutions
 lists                                   Customisation - keepList, loseList
 lists                                   Configuration - sortMethod
 localisation                            Translations of SpamFryer to other languages
 localisation                            Detailed history
 localisation                            Usage - Command line arguments
 location                                Configuring SpamFryer to suit yourself
 location                                FAQ, problems and solutions
 Log options                             Option for the log file
 logFile                                 Option for the log file
 logfile                                 Detailed history
 logging                                 Configuring SpamFryer to suit your server
 login                                   Configuring SpamFryer to suit your server
 logs                                    Option for the log file
 loseList                                Configuring SpamFryer to suit your yourself
 loseList                                Configuration - sortMethod
 loseList                                Customisation - keepList, loseList
 LZX                                     Customisation - Background


 Mail limits                             Configuration - lineMax, maxLineSize, maxMailSize
 matches                                 Configuration - fuzzyMatch
 matches                                 Customisation - keepList, loseList
 matching                                FAQ, problems and solutions
 maxLineSize                             Configuration - lineMax, maxLineSize, maxMailSize
 maxMailSize                             Configuration - lineMax, maxLineSize, maxMailSize
 message number                          Customisation - Editing the source
 Miami                                   Integration and support - Miami integration
 Miami                                   What you must have in order to use SpamFryer
 MiamiOnline.yam                         Integration and support - Yam support
 MIME                                    Configuration - emptyMIME
 mountlist                               FAQ, problems and solutions
 multi-account                           Detailed history


 name and password                       Configuring SpamFryer to suit your server
 New rules                               Customisation - keepList, loseList
 noDigits                                Configuration - noDigits
 Numeric addresses                       Configuration - noDigits


 obscured                                Configuring SpamFryer to suit your server
 on-line                                 Customisation - Editing the source
 optional                                Customisation - keepList, loseList
 optional                                How to use SpamFryer
 Optional                                Configuring SpamFryer to suit yourself
 optional                                Configuring SpamFryer to suit your server
 order                                   Configuring SpamFryer to suit your server
 order                                   Configuration - sortMethod
 over-ridden                             Customisation - keepList, loseList


 parameter                               Usage - Command line arguments
 parameter                               Configuring SpamFryer to suit yourself
 password                                FAQ, problems and solutions
 password                                Customisation - Editing the source
 path                                    FAQ, problems and solutions
 path                                    How to use SpamFryer
 path                                    Configuring SpamFryer to suit yourself
 path                                    Integration and support - Miami integration
 path                                    Integration and support - DOpus Magellan integration
 pattern                                 FAQ, problems and solutions
 pattern                                 Customisation - keepList, loseList
 patterns                                Customisation - Background
 penis                                   Customisation - Safety first
 PIF                                     How to use SpamFryer
 plain-text                              Customising SpamFryer for your messages
 pollRate                                FAQ, problems and solutions
 POP3                                    FAQ, problems and solutions
 POP3                                    Customisation - Editing the source
 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                              Customisation - Safety first
 pre-programmed                          Integration and support
 printout                                An overview of SpamFryer
 problem                                 FAQ, problems and solutions
 problem                                 How to use SpamFryer
 protocol                                Customisation - Editing the source


 quicker                                 Customisation - keepList, loseList
 quotes                                  Customisation - General rules about rules


 Rasmussen, Allan                        The people who made SpamFryer possible
 recipient                               How to use SpamFryer
 redirected                              Customisation - Background
 references                              Customisation - keepList, loseList
 references                              Customisation - Safety first
 references                              Customisation - Combination tests
 REPLY-TO                                FAQ, problems and solutions
 Reply-To                                Customisation - Editing the source
 report                                  Customising SpamFryer for your messages
 report                                  Customisation - General rules about rules
 reports                                 Option for the log file
 reqtools.library                        Configuring SpamFryer to suit your server
 requester                               Configuring SpamFryer to suit your server
 requester                               Usage - The interactive (BROWSE) mode
 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                                     Configuration - lineMax, maxLineSize, maxMailSize
 RFC                                     Customisation - Safety first
 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                                   Configuration - sortMethod
 rules                                   Customising SpamFryer for your messages
 rx                                      How to use SpamFryer
 rx                                      Integration and support - Miami integration
 rx                                      Integration and support - DOpus Magellan integration
 rx                                      Option for the log file


 Screen selection                        Configuration - screenName
 screenName                              Configuration - screenName
 scripts                                 Integration and support - Yam support
 scripts                                 FAQ, problems and solutions
 Search                                  FAQ, problems and solutions
 security                                Customisation - Safety first
 security                                Configuring SpamFryer to suit your server
 servers                                 Customisation - Safety first
 servers                                 Configuration - noDigits
 servers                                 Configuring SpamFryer to suit your server
 Simon N Goodwin                         How to contact the author
 SORT                                    Usage - Command line arguments
 sortMethod                              Configuration - sortMethod
 source                                  Customisation - Editing the source
 Spam Browsing                           Usage - The interactive (BROWSE) mode
 SpamAssassin                            Customisation - Background
 SpamAssassin                            How to use SpamFryer
 SpamBrowser                             Usage - The interactive (BROWSE) mode
 SpamFryer lists                         Customisation - keepList, loseList
 SpamFryer.accounts                      FAQ, problems and solutions
 SpamFryer.accounts                      Configuring SpamFryer to suit yourself
 SpamFryer.accounts                      Configuring SpamFryer to suit your server
 SpamFryer.keepList                      FAQ, problems and solutions
 SpamFryer.keepList                      Customising SpamFryer for your messages
 SpamFryer.keepList                      Customisation - Safety first
 SpamFryer.keepList                      How to use SpamFryer
 SpamFryer.log                           Configuring SpamFryer to suit yourself
 SpamFryer.loseList                      FAQ, problems and solutions
 SpamFryer.loseList                      Customising SpamFryer for your messages
 SpamFryer.loseList                      Customisation - Safety first
 SpamFryer.loseList                      How to use SpamFryer
 SpamFryer.rexx                          FAQ, problems and solutions
 SpamFryer.rexx                          How to use SpamFryer
 SpamFryer.rexx                          Configuring SpamFryer to suit yourself
 SpamFryer.rexx                          Configuring SpamFryer to suit your server
 SpamFryer.thor                          Integration and support - Thor support
 SpamFryer.yam                           Integration and support - Yam support
 standards                               Customisation - Safety first
 subdirectory                            Integration and support - Alternative icons
 subject                                 Configuration - lineMax, maxLineSize, maxMailSize
 Summary                                 An overview of SpamFryer
 support                                 Integration and support
 sys:wbstartup                           How to use SpamFryer


 TCP-Handler                             FAQ, problems and solutions
 the author                              How to contact the author
 the basics                              What you must have in order to use SpamFryer
 Thor support                            Integration and support - Thor support
 threshold                               Customisation - Combination tests
 Translations                            Non-English versions of SpamFryer
 Trigger Hits                            Configuration - sortMethod
 trojan                                  How to use SpamFryer


 UAE                                     FAQ, problems and solutions
 undisclosed-recipients                  Detailed history
 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


 variables                               Customisation - Combination tests
 VERBOSE                                 Usage - Command line arguments
 verbose                                 Option for the log file
 Version                                 Changes between released versions
 virus                                   How to use SpamFryer


 What you must have                      What you must have in order to use SpamFryer
 whitelist                               Customisation - Background
 window                                  Configuration - screenName
 window                                  Usage - The interactive (BROWSE) mode
 Windoze                                 How to use SpamFryer
 worms                                   How to use SpamFryer


 YAM                                     Integration and support - Yam support
 YAM                                     Configuring SpamFryer to suit your server

Converted using GuideML 3.15