Non-Dairy Creamer Release 0.8

What Is Non-Dairy Creamer?

Non-dairy creamer is a very questionable mixture of chemicals that people put in coffee when they can't get hold of real cream. Besides that, I think it is a pretty good name for a system written in Java considering the huge number of Java systems coming out with puns on coffee. Does anybody else need a system named MOCHA ?

Non-Dairy Creamer (hereafter, NDC) is a software system for utilizing the Interactive Mail Access Protocol version 4 (hereafter IMAP) from within a Java application or Applet. NDC provides a layer of abstraction on top of the network protocol so application writers wishing to build mail reading capabilities into their Java programs (or Applets) may do so with a minimum of hassle.

NDC provides the application program with a set of Java objects which can be used without a detailed understanding of the IMAP protocol to access/manipulate mail messages and related entities such as mailboxes (folders). The NDC API provides objects such as Mailboxes, Messages, Mail Addresses, Body Parts (for multipart mail)etc. It is hoped that in a future version the NDC toolkit will be sufficiently abstracted from IMAP that it will not be necessary for application programmers to know anything about IMAP to use NDC.

Caveat Emptor

The NDC toolkit is currently under development is not yet perfect. It may have bugs and further these bugs could probably ruin your life if you get hit by one which deletes your mail. I use it everyday, but I wrote it and you know how these things work. As of version 0.8, I strongly recommend making copies of your mail before testing programs using NDC.

For those of you not familar with the IMAP protocol, it does not provide the capability of sending electronic mail. That is the domain of RFC 822 and (in short) not my problem.

Summary Of Documentation


Click on a release number to download it. There are two packages in the current release, GIT.GVU.IMAP and GIT.GVU.IMAP.Tests. Both of these have been developed using the Sun compiler and VM interpreter and with the Java Developer's Kit version Beta 2. It will probably work also on Beta 1 but probably not on the Alpha releases.

Running The Test Mailer

The package GIT.GVU.IMAP.Tests is a simple command line mailer that I am currently using as my mailer to make sure the NDC works. Since I haven't been seriously screwed by it yet, I have some reason to believe that NDC is free of the most serious bugs.

To run the mailer you first need to have an imapd running on a system in your network. If you don't have an imapd see below. Now that you are running the imapd, you'll need to tell java where to look for its classes and the NDC classes. You set the environment variable CLASSPATH to a set of directories and/or zip files with the classes in them. (I haven't had much luck with getting things to work out of zip files in the CLASSPATH variable; if you get it work with NDC please send me mail.) As an example, I have the java system loaded into my ~/java director and I have the unpacked NDC distribution there as well. So, I set my CLASSPATH variable to be ~/java/lib:~/java. The first one is for the system defined classes which I have in a zip file ( in the lib subdirectory. The second one is the path to the top of my heirarchy of class names, so there is a directory in ~/java called GIT which has a sudirectory called GVU, and so on.

Once you have this much set up, verify that you have java in your path and that it is the one associated with the classes in your CLASSPATH. Now try this command: java GIT.GVU.IMAP.Tests.Driver. If you get a prompt which asks you IMAP Server : you are in business.


The current version of IMAP is 4, but the University of Washington server for version 4 is still in testing. I have been using it for some time without problems, but your mileage may vary. NDC only works with this new version of the IMAP server. Also note: NDC currently expects a UNIX server, and thus will not work with the NT version of imapd. Ok, ok, I'm working on it ...

To use NDC you'll have to be running a copy of imapd on your system. I have already compiled imapd for some popular operating systems around this building. If you would like to have one of my pre-compiled binaries, please just click on the operating system you are interested in.

Here are Mark Crispin's (author of the IMAP standard and the U. Washington server) instructions for installing imapd on your system.


The imapd daemon should be installed in a system daemon directory,
and invoked by your /etc/inetd.conf file with a line like:

imap	stream	tcp	nowait	root	/usr/local/etc/imapd	imapd

     Note that different variants of UNIX have different versions of inetd,
so you should verify the precise form of these commands (for example, some
versions of inetd do not require the "nowait").

     You may also have to edit your /etc/services (or Yellow Pages,
NetInfo, etc. equivalent) to register this service, such as:

imap		143/tcp

Known Problems And Bugs

These are the known problems and bugs in version 0.8.

Plans For The Next Release (0.9)

Reporting Bugs

I'd appreciate it if you would report bugs in the NDC by sending me mail with the subject "BUG REPORT IN NDC VERSION 0.8". Also, if you are writing an application/Applet using NDC please try to trap all the exceptions and give a stack backtrace in your mail message with your bug report.

Click here for a mail buffer in your browser.

Ian Smith
Last modified: Mon Jan 22 15:35:42 EST 1996