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 <cbbrowne@hex.net> 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.<mail_client> program
calling "ifile --version".  If ifile is not executable, then
ifilter.<mail_client> 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
<jr6b@andrew.cmu.edu> 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 $
