Questions: ---------- 1) If ifile doesn't work properly, where can I get information on the errors that have occured? 2) Can I use ifile to filter only a portion of my mail? 3) What is the news2mail script for? 4) Where can I get more information about ifile and download ifile? 5) Where/How does ifile store information about my organizational preferences? 6) Are there any ifile mailing lists? 7) What is ifile? 8) Is it possible to have ifile NOT filter mail to a certain mailbox? 9) All my mail is being filtered to my inbox. What's wrong? 10) How can I install ifile across multiple platforms from a common source directory? 11) What is the format of the .idata file? Answers: -------- 1) If ifile doesn't work properly, where can I get information on the errors that have occured? Most ifile executables are capable of generating a file which contains debugging information. The default is for ifile executables to not generate this file, so you must find the correct command line option for turning on this option by running the executable with the --help argument. Beginning with version 0.7.0 of ifile, debugging/log files are stored in the user's home directory. The name of the log file is of the form ".[executable].log". e.g. the log file for the ifile executable is .ifile.log. If you find out that the ifile binary caused the problem and as a result dumped core, you might be able to get useful information using gdb and the core file: "gdb ifile core". ---------- 2) Can I use ifile to filter only a portion of my mail? Yes, but only if you have another filter to do the preprocessing which can call ifile for mail which does not match other patterns. If you are using the MH system, an easy answer to this question is to use slocal. To use slocal, you would create a .maildelivery file (with 0600 permissions) in your home directory with filtering rules, one of those being a rule to filter all remaining mail through ifile. An example .maildelivery file might look like this: from ifile-discuss ^ ? "/usr/lib/mh/rcvstore +ifile" from joe ^ ? "/usr/lib/mh/rcvstore +friends" default - ^ ? "ifile" Anything from ifile-discuss or joe would always get filtered to a specific folder and all other mail would be filtered according to ifile's filtering method. ---------- 3) What is the news2mail script for? This script was written by Chris Browne under the assumption that you have a newsfeed on your personal machine. The idea is that news isn't always posted to the group/groups to which it best pertains. This script will allow you to have your news filtered through ifile in similar fashion to the way mail is filtered. Thus, for each of the newsgroup mailboxes you have set up in your mail program, only the relevant articles from a particular newsgroup will end up in that mailbox. One can see that this might be quite useful for ridding spam from the news you receive. Please read news2mail.perl for details. news2mail.perl MUST be edited before it will be usable with your system! ---------- 4) Where can I get more information about ifile and download ifile? ifile is available for download at http://www.cs.cmu.edu/~jr6b/ifile/ftp/ or ftp://ftp.cs.cmu.edu/user/jr6b/ifile/ ---------- 5) Where/How does ifile store information about my organizational preferences? ifile keeps a file in your home directory named ".idata" which has information on the frequency of words in each of your mailboxes. Any time new mail is filtered, statistics on the words in the document are stored in this file. Any time mail is moved from one mailbox to another, this data file is updated accordingly. When ifile makes a decision on where to filter a piece of mail, it does so by comparing the word frequencies in the mail to the folder frequencies in the database. ifile filters the mail in the folder which has the closest match. ---------- 6) Are there any ifile mailing lists? ifile has two mailing lists which you are invited to join if you end up becoming a user of ifile. The two mailing lists are ifile-announce@cs.cmu.edu and ifile-discuss@cs.cmu.edu. The discuss mailing list receives all of the announce mail, so you only need to subscribe to one of the two. To subscribe, just send mail to me (jr6b+@andrew.cmu.edu) with a subject of "subscribe" followed by the name of the list you wish to join. As of 12/24/97, I handle these by hand, so you're welcome (in fact encouraged) to say "hi" and tell me what you think of ifile in the subscription e-mail. ---------- 7) What is ifile? ifile is a general mail filtering system which uses a modern-day text learning algorithm to intelligently filter mail according to the way the user tends to organize mail. ifile is different from other mail filtering programs in three major ways: 1. ifile does not require the user to generate a set of rules in order to successfully filter mail 2. ifile uses the entire content of messages for filtering purposes 3. ifile learns as the user moves incorrectly filtered messages to new mailboxes ifile is not dependent upon any specific mail system and should be adaptable to any system which allows an outside program to perform mail filtering. Currently, ifile has been adapted to the MH and EXMH mail systems. ---------- 8) Is it possible to have ifile NOT filter mail to a certain mailbox? Yes, of course the implementation is highly client dependent. For EXMH or MH, one would create a file named ".skip_me" in the directory corresponding to the mailbox you wish ifile to ignore. Once this file is created, ifile will no longer filter mail to that mailbox ---------- 9) All my mail is being filtered to my inbox. What's wrong? One possible problem is that one of your ifile executables is not in the PATH of the environment under which your mail client runs. One telltale sign of this problem is that the mail messages which are filtered to your inbox will have the header "X-filter: => inbox". Normally, when ifile filters your mail, it adds a header similar to "X-filter: ifile 0.6.2 => friends" to each message it processes. The "ifile 0.6.2" string comes from the ifilter. program calling "ifile --version". If ifile is not executable, then ifilter. will read an empty string. Another possible problem is that ifile is causing a segmentation fault during its execution. One way to detect this is to run ifile with the --log-file option and examine the ~/.ifile.log file. Each major operation (reading messages, reading/writing database and calculating ratings) should print two lines to the ifile.info file, one to indicate the start of the task and one to indicate it's completion. If any operations have a starting line but no completion line, a segmentation fault most likely happened. If you're not an experienced C hacker, your best bet would be to send e-mail to Jason Rennie describing your problem. ---------- 10) How can I install ifile across multiple platforms from a common source directory? If you run "./configure --help" from the directory where ifile untars to, you will notice the option --srcdir. This allows you to store executables and status files in a directory other than the source directory. If you have multiple platforms to compile for, create one subdirectory off the ifile source directory for each platform. Then, from each directory, run "../configure --srcdir=../". This will create a Makefile which can be used to compile all the executable files. All platform-specific files will be stored in the subdirectory of the source directory, instead of being stored in the source directory. In case you wish to install files in a different directory than configure defaults to, you can use the "--prefix=DIR" to specify where files should be installed. DIR should be a directory which may contain bin/, lib/, src/ and other such directories. ---------- 11) What is the format of the .idata file? It's pretty simple. The top row is simply a list of your mailboxes. Later in the data file, they are refered to by number according to their order in the first row. Indices for the folders start at 0. The second row is the total word instances for each folder (i.e. sum of frequencies of all words kept in .idata). The third row is a count of the number of messages for which information is stored. Each row following the first three is composed of three parts. The first is a word. The second is the 'age' of the word (i.e. the number of messages which have been entered into the system since first sight of this word - this is used for trimming out words which occur with low frequency). The third is a listing of folder:frequency pairs. Information for a specific folder is only explicitly kept if the frequency for a word in a folder is non-zero. Frequencies which aren't mentioned in the data file are assumed to be zero. Here's a quick example: -----------.idata------------- A B C 5 2 6 2 1 1 party 4 0:2 1:1 belch 3 0:1 yellow 4 0:2 2:3 kick 2 1:1 peep 1 2:2 -----------.idata------------- The two messages in folder A contained words "party party belch yellow yellow" The one message in folder B contained words "party kick" The one message in folder C contained words "peep peep yellow yellow yellow" $Id: FAQ,v 1.10 1999/04/23 02:50:03 jr6b Exp $