facemail 1.4

March 2005

a face

[Abstract] [Changes] [Screenshots] [Download] [Packages] [Installation] [Manual] [Faces] [Notes] [TODO] [Attribution]

facemail is a Python/Tkinter based Mail User Agent for managing mail boxes. Each message in a mailbox is represented by a small image (face) of the sender. The name and date are displayed below each face. Moving the cursor over any face brings up a brief header description from the message. Button 1 on any face makes a new window to display the associated message, button 3 displays a menu of other functions.

facemail understands `X-Face:' entries in mail items, as well as `blit ikon' 48x48x1 files, `xbm' files, and JPEG and GIF image files in the faces database. facemail also generates and understands `X-FaceURL:' header lines in messages, and will fetch a previously unknown face from a message header `X-FaceURL:' into its cache.

facemail is MIME compliant and allows mail composition with attachments.


The latest version is 1.4.

Changes from 1.3 are:

Changes from 1.2 are:

Changes from 1.1 are:

Changes from 1.0 are:


This shows the main facemail window displaying the last eleven messages received:

facemail screenshot

The grey faces are converted from message header X-Face: header lines or default domain images (such as the XEROX logo), the colour faces are from user-supplied JPEG images.

You may view other screenshots here.


facemail source is distributed as a tar file:

The above including some default faces:


facemail requires the Python Imaging Library (PIL) to display the faces, which can be obtained from: http://www.pythonware.com.

However, facemail will still operate if PIL is missing.

Installation on *NIX systems

Create a directory in which to install this package, eg:

	cd /usr/local
	mkdir facemail

Unpack the distribution into it, eg:

	cd /usr/local/facemail
	gunzip </tmp/facemail.tgz | tar xf -

Global configuration can be placed into the system-wide options file called facemailrc which is read from the installation directory if it exists there.

Create and edit the local configuration file:

	cp facemailrc.dist facemailrc
	<editor> facemailrc

Pre-compile all the python code and fix permissions:

	./pycomp .

Make a symbolic link to facemail from your public bin directory, eg:

	cd /usr/local/bin
	ln -s /usr/local/facemail/facemail

Install the manual in the standard place, eg:

	cp /usr/local/facemail/facemail.1 /usr/local/man/man1

Optional compface module
The compface module allows the incorporation of X-Face mail header faces and 48x48x1 image files into facemail.

Copy the localised Makefile from your python library directory, eg:

	cp /usr/local/lib/python1.5/config/Makefile.pre.in .
(if you don't have one available, the distributed version should work).

Create the Makefile:

	make -f Makefile.pre.in boot

Create the shared library:


Make the shared library publicly readable:

	chmod a+r *.so

fmt program
This program is used to format blocks of text within a compose window. As it's not always available, the source is included in fmt.c.

To make your own copy and install it somewhere on your PATH:

	gcc fmt.c -o fmt
	cp fmt /usr/local/bin

mp program
This program is the default formatter for printing mail messages. If you don't have it and would like to install it, it is available from http://java.sun.com/people/richb.

Installing default faces
A default tarball of unknown faces for many net addresses is included in the 2nd. set of distributions listed above. If you do not already have a public faces directory, you can set one up by untarring the defaults into a suitable directory, eg:
	(mkdir /usr/local/lib/faces
	cd /usr/local/lib/faces
	tar xf -
	chmod -R a+r .) <unknown.faces.tar

Then edit facemailrc and set:

	FaceDir = /usr/local/lib/faces

A manual is included in the distribution. It can be viewed here.

Faces database

We have an extensive collection of faces (mostly Australian of course) and you are welcome to browse here.


Some things to be aware of:

If you start facemail and find there are no messages in your inbox, although you were expecting some, check if there is a file called mbox in your home directory. If you have a file called mbox in your home directory on your mail server, some versions of the IMAP server daemon will move all your messages from your inbox into mbox on startup. You can read these messages using: facemail -m mbox. Alternatively, copy the contents of mbox back into your inbox, remove the file mbox, and restart facemail.

If you run more than one copy of facemail simultaneously, be sure that all except one are invoked with the --readonly flag, as otherwise the multiple IMAP servers will compete for the mailbox lock. This usually results in all except one giving up, and you will receive a message about a socket error, or a lost connection.


There are still many things that need doing to make facemail a more useful mail user agent, and I welcome contributions or bug fixes.

facemail was developed on a UN*X system, and I would be delighted if anyone lets me know of successful installations on other platforms.


The original inspiration for facemail came from the vismon program available in various incarnations on systems at Bell Laboratories since the 1980's. There is a paper describing it at: http://plan9.bell-labs.com/cm/cs/doc/85/face.ps.gz

Last modified Wednesday March 16 09:46:30 AEST 2005.

PL | piers:janeelix.com