         fffff       lll
        fff  ff       lll
 iii    fff fff iii   lll
 iii    fff     iii   lll
      fffffff         lll   eeeeee           000     1    2222
iiii    fff    iiii   lll  eee   ee         0   0   11        2
 iii    fff     iii   lll  eeeeeeee     v v 0   0    1     222
 iii    fff     iii   lll  eee          v v 0   0    1    2
iiiii  fffff   iiiii lllll  eeeeee       v   000  * 111 * 2222 Alpha

Released Mon Aug 26 01:05:00 EDT 1996

If you try to use ifile at all, I would definitely like to hear from you.
I would greatly appreciate hearing about your installation and/or the actual
operation of the system.
Please send me e-mail at "jr6b+@andrew.cmu.edu".

What is ifile?

ifile is an intelligent mail filtering program which uses framework provided by
the mh mailing system and the slocal filtering system.  It uses a text-based
learning algorithm named bayesian learning to determine the user's
preferences.  This allows it to learn where the user likes to have his or her
mail files without requiring a strict set of rules to be layed out.

Does it actually work?

Yes.  It's not perfect and it does take some time to learn a user's
preferences, but in my experiences, it has done quite a good job learning
where I like my mail filtered.  For example, within a day of posting the first
message about ifile on the exmh.users bboard, I received about 15 responses
concerning the filter.  Only three of those required me to do any refiling
into my exmh mailbox.  Granted, most of those had the same subject line and
included similar quotes from my original message, but, hey, at least its a
move in the right direction :)

What exactly does it do?

The ifile mail filtering system replaces two pieces of the system commonly
found with exmh.  The first of those is the mh refile program, which is
completely replaced by irefile, one of the perl scripts which comes with this
package.  irefile provides the basic functionality of the mh refile program
and is sufficient to be used with exmh.  However, it should not be considered
a complete replacement as it is significantly slower and lacks many of the
options of the mh refile program.  It does do one thing the mh refile program
does not do: it records the word frequencies of every message that you refile
to a new folder.  This information is stored in your home directory in a file
named ".idata" and provides the base of information which ifile works upon.

ifile also replaces the filtering.  Better put, it uses the slocal filtering
system to call its own mail filtering program.  The idea is simple enough that
it could be called from any filtering program, or even exmh itself (idea for
future version :), but the simplicity of running through slocal won out for
early versions.  The filtering program reads in one message from standard
input, parses it and then uses the information in ".idata" to decide which
folder to locate the message.

How do I know if I can actually use this system?

To be able to use this system, you must have the entire mh mailing system
installed on your machine.  You (most likely) will need to have root access
on this machine to install the new refile program.  You must have the slocal
mail filtering program installed on your machine.  You must have perl v4.036 or
later installed on your system (I have tested it with perl v5.003).  It is
also highly recommended that you have exmh installed and use that as your
primary e-mail program.

With some minor changes to exmh code, it would be quite possible to get by
the root access or slocal requirements.  I'd definitely be interested in
hearing about it if you can.

So, how do I install this wonderful system?

Unzip this package in the directory of your choice (I would suggest
/usr/local/ifile/) and then run the install script (if you do not have perl
installed in /usr/bin, you will need to edit 'install.perl' and change the
first line to the proper directory).

The script will search for certain binaries, prompting you if it cannot find
them.  If you are prompted and aren't sure of their location, stop the
installation and take the time to find them.

Once it has the directory information, it will backup the current mh refile
program and replace it with a link to irefile.  It will
also add two lines to your .maildelivery file (creating it if necessary) 
which will have slocal run the ifilter program.

Finally, once the script has finished, you must change the
"Incorporate Mail -> Ways to Inc" option within EXMH to "presort".

Is that it?

Yup.  Once you have completed those two minor tasks, ifile will be installed.
At this point, you can sit back and wait for the mail to roll in.  As you
receive it, simply refile (move) any messages which are filed into the wrong
folder.
Each mailbox will probably require a few refilings before ifilter begins to
understand your preferences for that folder.  Folders which contain very
closely related messages will take little time for ifile to learn.  Folders
which have less of a central theme (say an 'inbox' or 'other' folder) will be
more difficult for ifile to learn.

Why is this version 0.1.2A?

The program is still under heavy development.  The first two numbers indicate
the major version number (0.1).  The last number indicates the minor version
number (2).  Each new major version is likely to contain major developments
and lots of new code unseen in previous new versions.  Each new minor version
within a major version will comprise primarily of bug fixes and other less
major changes.
The letter at the end of the version is a stability indicator.  'A', which
stands for Alpha, indicates that the code has not been very well tested
and should not be considered stable.  'B', which stands for Beta, indicates
that the code has undergone some testing in various environment.  There may,
however, still be some significant bugs lying around.  'G', which stands for
Gamma, indicates that the code has been tested in a number of environments
and should not cause major problems (no guarantees!).

Who wrote this?

Why, I did!  'I' am Jason Rennie, a sophomore majoring in Computer Science at
Carnegie Mellon University.  I've been programming for most of my life,
starting with BASIC as a youth, moving through Pascal during high school and
then widening my horizons in college with such languages as C/C++, perl and
Java.  Since installing it in December of '95, I have become a big-time linux
fan, running it almost exclusively (I still have DOS for those occasional
Quake, Doom or Decent sessions :)
I've been doing quite a bit of work with learning algorithms, especially
text-based learning over the summer and decided it would be cool to apply
one of the ideas to mail filtering.  So, I did.

How do I contact this computer geek?

By e-mail, of course!  jr6b+@andrew.cmu.edu  You can also check out my web
page at "http://syrinx.res.cmu.edu/".

Why such an uncreative name?

Well, what can I say, I haven't put a lot of thought into it.  I'm probably
going to be doing some soul searching :) to see if I can figure out a better
one (don't be suprised to see the name 'ifile' gone in a version or two).  Or,
if any of you out there can think of a better name, I'd consider using it,
just drop me a line.  Hey, I would even mention somewhere in the readme
that credit for the name goes to you! (how's that for instant fame :)


Credits
-------
Tom Mitchell - the professor who was willing to hire me for the summer during
		which I learned all I know about bayesian learning.
Dave Robinson - Alpha tester, pointed out some major bugs in version 0.1.x


If you do find this program helpful and would like to support it and see
it grow into a powerful, full-featured mail filtering system :) please
fill out the following short survey and mail it to jr6b@andrew.cmu.edu:

------------------------->8--------------------------

What operating system do you run? :

What version of exmh do you have? :

What version of perl is on your system? :

What is your suggestion for a better name? :

Did you have any problems installing ifile?  If so, please describe them here:








Did you encounter any problems while running ifile (lost mail - poor job of
filtering)?  If so, please describe them here (copies of .idata and
/tmp/irefile.info and /tmp/ifilter.info would be really helpful!) :








Do you have any suggestions on how to improve ifile?  (this would be most
helpful if you have specific code changes)








----------------------8<---------------------------

Thank you for your interest!!!! :)