Postmark on letter


[ Home page | Software ]

This is no longer the home page for tpop3d. It is now hosted here.

tpop3d is a fast, extensible, secure UNIX POP3 server. `Extensible' is used specifically in the context of new authentication mechanisms. Presently the distribution contains auth-pam, which uses Linux-style Pluggable Authentication Modules to mediate access of registered users of a machine to their Unix-style mailboxes, auth-passwd for older Unix machines, and auth-mysql, which works with vmail-sql or other MySQL-based solutions to mediate access to virtual-domain email. auth-pgsql supplies similar functionality for PostgreSQL. auth-ldap allows authentication of users against an LDAP directory, and auth-flatfile uses files in the format of /etc/passwd. In addition, there are two authenticators which are designed to allow easy implementation of new authentication schemes without writing C code: auth-other, which allows you to write an external program to communicate with tpop3d via pipes; and auth-perl, which allows you to embed a perl interpreter in tpop3d to authenticate users with custom perl code. tpop3d supports TLS/SSL for encrypted communications.

tpop3d makes POP-before-SMTP relaying easy, providing configurable hooks which allow you to insert rows into a database, or call custom code either running in an embedded perl interpeter or in an arbitrary external program whenever a user is authenticated. The same facilities can be used to implement POP3 server `bulletin' support. In addition, tpop3d can notify a DRAC (`dynamic relay authentication control') or WHOSON server of logins.

tpop3d supports traditional (BSD-format) mailspools and, thanks to the efforts of Paul Makepeace, the maildir format of qmail. Location and type of mailspools can be selected flexibly at run time using the configuration file. There is also experimental support for index caching to improve performance with BSD mailspools; this is in the latest version. Adding support for new mailbox formats would be simple.

tpop3d is portable to modern systems. It builds successfully `out of the box' on Linux, modern BSD systems, Solaris and Mac OS X. The GNU autoconf mechanism is used to configure and build tpop3d (thanks to Mark Longair for this contribution), so should also build on other reasonable Unix systems.

tpop3d is free software, available under the terms of the GNU GPL.

A note about support

If you have a query about tpop3d, please do not send me personal email. Send it to the mailing list instead. And before you do that, check the list archive to see whether someone else has already answered your question. You may send email to the list without subscribing to it, but email from subscribers is preferred.

Catching a frisbee

Get tpop3d

You can download the source distribution, tpop3d-1.5.3.tar.gz, or read the README file. The previous version is also available: tpop3d-1.5.2.tar.gz. Or, you could read the manual pages for tpop3d(8), its configuration file, tpop3d.conf(5), the CREDITS file, or the (vaguely informative) change log. If you like to hack on other peoples' code, then take a look at the notes on hacking tpop3d and the list of things to do. If you are interested in adapting the MySQL authentication support in tpop3d to work with your database, you should also read README.auth_mysql. There is also a set of frequently asked questions about tpop3d, with answers.

It is also possible to obtain the source code for tpop3d from a public CVS server, as follows:

cvs -d login
cvs -d co tpop3d

The password is `anonymous'. This service is experimental, but may help you get the latest and greatest bleeding-edge version of the code. Note that to compile tpop3d from CVS, you need to run the bootstrap script to build the configure script.

I welcome patches and suggestions for tpop3d, and would be interested to hear if you get it running on an unusual architecture or in a novel configuration. The most convenient format for a patch is a unified diff against the version of the source code in CVS.

If you're looking for a good, simple POP3 client -- of the command line sort, i.e., like fetchmail, but actually some good -- then you might want to look at Mark Longair's just-hand-over-the-mail. It might also help you learn Ruby.

Mailing list

There is now a mailing list for tpop3d, to which you can subscribe by sending a mail with the subject `subscribe' to This is a low-traffic list which will also be used for announcements of new revisions of tpop3d. You can also view archived postings to the list.

How to report a problem or ask for help

Read this before you post to the mailing list! If you don't, I will just tell you to do so! Others on the mailing list may be more accomodating, but I wouldn't rely on it.

If you are reporting a bug, then try the following in order:

  1. Check the documentation (in particular, the README files and man pages) to see whether the issue is addressed there.
  2. If you are not using the most recent version of tpop3d, upgrade and see if that fixes the problem. There are known bugs in earlier versions of tpop3d -- that's what makes them earlier versions!
  3. Use Google to look for information on your problem, which may well appear in the mailing list archives.
  4. Read Simon Tatham's essay, How to report bugs effectively. (His essay is best geared to producing bug reports for graphical software like PuTTY, but much of what he says applies here, too. In particular, report the version number, build options, type of system and configuration in use. Be concise and don't include irrelevant information. If you can, identify the part of the program which is failing. Better still is a patch.)
  5. Now, and only now, send mail to the mailing list.

If you can't get tpop3d to work, or need help configuring it, then:

  1. Ensure that you have read and understood the documentation. In particular, most users' questions are answered in the man page tpop3d.conf(5). It probably will answer your question. It really will. I don't write this stuff for fun, you know.
  2. Search for more information on your problem using Google.
  3. Read the documentation again. It's really good. Even the bits other people wrote.
  4. Read the log entries that tpop3d produces (if you have not already done so, run tpop3d with the -v option to make it report more detailed diagnostics). Try to interpret them. Most of the diagnostics tpop3d logs are structured to include the name of the function that is issuing the error, some explanatory text, and the text of any pertinent system error. Typically this is enough to suggest the likely source of the problem.
  5. Record the version, configure and build options, configuration, log entries and any other information you feel is pertinent.
  6. Now compose your question. Please try to make it coherent and don't include scads of irrelevant information. For instance, if ./configure fails when you build tpop3d, don't include the whole output of the script, just the last few lines that indicate the error.
  7. Read over your question carefully. Make sure you haven't missed anything obvious.
  8. Now, and only now, post it to the list.

One last point: keep support mail on the mailing list. If you start sending me personal mail about tpop3d, I will bounce it to the mailing list. There is no way that I will answer questions about tpop3d for free without making the answers available to others. That's not how the game works.

Copyright (c) 2000-2003 Chris Lightfoot. All rights reserved.