/mpop3

A modular POP3 server, written in C. Experimental.

Primary LanguageCOtherNOASSERTION

MPOP3 - a modular POP3 server
=============================

This program is a modular POP3 implementation, meaning that it supports different authentication/storage modules loadable at runtime. At the moment, I only have four, and the default config file (mpop3.conf) loads two of them by default: auth_file and storage_mbox.


AUTH MODULES

auth_file
---------

This is a simple authentication handler for reading usernames/passwords straight from a file. It's pretty much as minimal as it can get, replacing only the _auth_password() function, and it should be good for customising if you're going to be using APOP (plain-text passwords server-side).

config options: none

auth_getpw
----------

This is a simple auth handler for using UNIX system passwords, replacing only _auth_attempt_login and _auth_timestamp (NULL). APOP won't work with it.

config options: none

auth_postgresql
---------------

Checks against a PostgreSQL database; also supports (optionally) mailboxnames as the second field in the SQL result.

Config options: connection (a PostgreSQL connection string), query (an SQL statement with $1 in the place of the username to compare against)

STORAGE MODULES

storage_mbox
------------

This is a fully-functional 'mbox'-format storage handler, so if that's what you're after, relax.

config options: storage_dir [sets the directory in which the spools are to be found]


MODULES

For further information about the modules system, please consult README.modules

CONFIG FILE

auth_module [filename]
> [auth module config option]
> [auth module config option]
storage_module [filename]
> [storage module config option]

NOTES

= Can handle NULLs (^v000) in mail spools
= Can handle varied line endings in a mail spool (\n or \r\n... but fgets()/fgetln() unfortunately won't break on \r alone)
= Can do APOP where appropriate
= Supports extended POP3 response codes
= Supports CAPA
= Supports UIDL where appropriate

BUILDING

	./configure
	make all test
	make install

If you see fit to start the program as root, it will drop privileges at the earliest practical opportunity. To make this work, you may need
to use the --with-safe-user argument to configure. Run "./configure --help" for details.

WHINING

There are a few cool things this conspicuously *doesn't* do, see the file 'TODO' for details.

COPYING

All the files that make up this distribution are copyright 2005 Jim Driscoll.
All rights reserved.

Please see the file 'COPYING' for further details.