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:
Changed from using old imap4 module (precursor of python std lib imaplib) to using new imaplib2 module.
Changes from 1.2 are:
Added threading for SMTP. This allows one to continue reading messages while transmission happens in the background.
Allow message editing. An existing message can be edited in place, after which the changed message can be appended to the mailbox, and the original deleted.
Changes from 1.1 are:
Minor bug-fixes and enhancements.
Changes from 1.0 are:
An UNDO window is available from the main menu that displays a scrollable list of recently deleted messages. The list is sortable by number/data/name/address/subject, and searchable using regular expressions.
A ListView window is available from the main menu that displays a scrollable list of all messages in the mailbox. The list is sortable by number/data/name/address/subject, and searchable using regular expressions.
Several widgets have been re-written to use a new ScrolledTable mega-widget.
This shows the main facemail window displaying the last eleven messages received:
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.
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
MailHost = localhost Protocol = imap(NB: If you have a choice, imap is preferred over pop, as the POP3 protocol is less efficient than the IMAP protocol. If necessary, you can obtain an IMAP server from http://www.cac.washington.edu/imap.)
If you have a public directory for a repository of face images, specify it as follows:
FaceDir = /usr/local/lib/faces
If there is a pointer into the repository from the local web server, specify it as follows:
FaceURL = http://www.me.com.au/faces
If you have a proxy web server, specify that as follows:
Proxies = http_proxy=http://cache.me.com.au:8000 ftp_proxy=http://cache.me.com.au:8000(Note that continuation lines are preceded by white-space.)
Read the manual for other possibilities.
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
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
Make the shared library publicly readable:
chmod a+r *.so
To make your own copy and install it somewhere on your PATH:
gcc fmt.c -o fmt cp fmt /usr/local/bin
(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.
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.