junkfilter a junk e-mail filter system for procmail Copyright 1997-2000 Gregory Sutter Version 20001025 README $Id: README,v 2.17 2000/10/25 07:43:22 gsutter Exp $ Contents: 0. What is junkfilter? 1. Use of junkfilter 2. How to get junkfilter 3. Mailing list 4. Installation instructions 5. Sample .procmailrc file 6. Forwarding missed spam 7. Contributors 0. What is junkfilter? junkfilter is a spam filtering program built on top of the procmail email delivery system. the goal is to create filter sets that will block as much spam as possible. junkfilter functions equally well at the individual-user level or at the system level; however, since procmail can be slow and mail volumes high, its general use at the system level is discouraged. junkfilter makes an an excellent second stage spam filter, coupled with a first-stage MTA-based ruleset. 1. Use of junkfilter junkfilter is copyright 1997-2000 Gregory Sutter. All rights reserved. junkfilter is licensed under a BSD-style license. See the LICENSE file for the full text. 2. How to get junkfilter The junkfilter web page is http://junkfilter.zer0.org/ junkfilter and this documentation are available at the web site. junkfilter has also been instantiated at SourceForge. The project is http://junkfilter.sourceforge.net/ 3. Mailing lists junkfilter has two mailing lists, an announce list and a general-purpose list. If you wish to receive announcements of new releases, subscribe by sending a message to junkfilter-announce-subscribe@egroups.com. If you wish to also receive general mail from a two-way mailing list, subscribe by sending a message to junkfilter-users-subscribe@egroups.com. Thanks to egroups.com for hosting these lists. 4. Installation of junkfilter We assume you've already got procmail installed and running properly, as this is explicitly a "junk email filter system for procmail". Consult the procmail documentation if you need help installing procmail. Set the $PMDIR variable. We recommend that you make a directory ".procmail" in your home directory and a symlink from $HOME/.procmailrc to $HOME/.procmail/procmailrc. This file is not part of junkfilter; it is the procmailrc file that you already have installed. If you do this, you can set PMDIR=$HOME/.procmail Place the junkfilter files (junkfilter*, jf*) wherever you want them. This can be in $PMDIR or anywhere else. Set $JFDIR in your procmailrc to the directory in which you placed junkfilter. If you are installing junkfilter as a systemwide solution, and want each user to have customizable defaults, you can copy the junkfilter.config file to their home directories, calling it ".junkfilterrc". junkfilter will check $HOME/.junkfilterrc for local configuration overrides each time it is called. To call junkfilter, place a line in your procmailrc file that reads: INCLUDERC=$JFDIR/junkfilter This will call junkfilter. All other junkfilter files are called from within this first file. You now have a basic junkfilter setup. You now need to configure junkfilter to fit your every desire. Edit junkfilter.config and change the various options from 0 to 1 and vice-versa. 0 means "false"; 1 means "true". A given piece of code will only execute if it is set true. Please read the comments at the beginning of each one before changing anything. The file junkfilter.user is provided as a convenient place for you to store your own personal junk filtration recipes. If you follow the recommended format (given at the beginning of that file), junkfilter will treat your recipes the same as the rest of the files. The "user" section is the first section checked when junkfilter is called. In the distribution, the stock junkfilter.user is called junkfilter.user-default so that your personalized copy is not overwritten when you upgrade later. If you enable any of the user- rules or options in junkfilter, you MUST be sure that the files referenced by them in junkfilter.config exist! This means that you must rename the files distributed as *-default, removing the dash and the word "default". If you don't do this, all of your mail will end up in the slag heap. You can change the default action of jf to whatever you prefer. The only action command in junkfilter is to set the variable JFEXP to a relevant piece of text. It is up to you to then take some action. Since you've called junkfilter from your .procmailrc file, you can easily take action depending on the output (in the JFEXP variable) of junkfilter. The whitelist feature is a way of making sure that certain people/mails are not blocked, even if junkfilter would block them ordinarily. The implementation of the whitelist does not break compatibility with older releases of junkfilter, but does require that a more complex set of recipes be used to decide whether or not to take action on the message. I use this action in my .procmailrc directly after the INCLUDERC=$JFDIR/junkfilter statement: :0 * JFEXP ?? . { :0 f * JFSTATUS ?? 1 | formail -i "X-junkfilter: $JFVERSION" \ -i "X-Spammer: $JFEXP" :0 E : | formail -i "X-junkfilter: $JFVERSION" -i "X-Spammer: $JFEXP" >> junkmail } Instead of this, you can change it to whatever you prefer. The most common change will be the name of the mailbox in which the junk mail is stored. You can change it to /dev/null if you wish, but remember that no matter how good the filter, mistakes will be made. The author does NOT recommend immediately discarding any mail filtered by junkfilter. 5. Sample .procmailrc file that calls junkfilter Please see the file procmailrc.sample for a working example of how to call junkfilter from your procmailrc. If you have no other procmail recipes, you can simply install this in $PMDIR and make a symbolic link to it from your $HOME. 6. Forwarding missed spam junkfilter users who wish to see more of their spam caught by the filter in the future may wish to forward their spam (which was not caught by junkfilter) to an email address set up for this purpose. To do this, you should enable JF_OPT_SENDBACK in your junkfilter.config file. It's near the end. This will enable some settings that will mark each email that passes through junkfilter. If a spam has the headers added by this setting, it will be accepted at the email address . Spam sent here will be analysed and used to improve junkfilter. Only spam that has been missed by junkfilter will be of use. junkfilter must have JF_OPT_SENDBACK enabled to be of use. 7. Contributors to junkfilter Many people have contributed to junkfilter in various ways; the author would like to thank the following people in particular: Matthew Hunt , who co-developed junkfilter for the first few months. Thanks, Matt! Jeff A. Earickson Era Eriksson Brian Goetz Philip Guenther Brad Knowles Bryan D. McMeen John Perry Edward Sabol David Tamkin John Wilkes and the procmail mailing list