libpostal is a mail library.

What more can be said? libpostal is intended to handle all variety of mail access and processing tasks, with a current concentration on reading from and (for thost that support it) writing to various mail storage formats. We currently have a very workable POP3 implementation, a reasonably complete (though rough around the edges) mbox implementation, and a similarly complete-though-rough Maildir implementation.

The current ongoing thrust is to improve the robustness of the extant parts of the library, with better error handling and memory management, as well as algorithmic work on the actual functional code. Then, down the line, we have our eyes on formats like MH folders, IMAP, and possibly more esoteric formats and protocols like MAPI etc.

The current section in development is libpost_raw. This is the 'raw' interfaces to the mbox's, POP servers, etc. Later, we plan to write a more 'refined' interface, with a full abstraction, where after opening a 'mailbox connection', you don't have to worry about what kind of connection it is, just what you want to do with it. But, that's for the future. First things first.

This document is currently a combination of a documentation of libpostal's interfaces (i.e., "Programming using libpostal"), and of its structure and internals (i.e., "Developing libpostal"). Eventually, these will probably be split into two seperate documents. For now, just take note that certain data structures and functions are 'private', and intended for internal usage only. These structures/functions are *NOT* specified or prototyped in the public header file, so attempting to use them should cause compilation errors, unless you have such warnings turned off. Data types or functions in this document which are intended to be private have a notice after their short description saying so. See, for instance, postal_flock() .

Also, bear in mind that all data structures are intended to be opaque. No program using libpostal should ever mess around inside the structures, their contents are provided only for instructional purposes, and are subject to change. A set of macros are currently provided (though undocumented, except in the sample/test programs and the header file) for such access; these will be replaced down the road by full functions, to provide a little more security against API changes.

Note: libpostal is currently still in a fairly early development phase. We don't recommend using it for Real Work (tm) as of yet. Current releases are all intended for developers to use as reference bases, or for the world at large to use to see what we're doing and where we're going. Until our first true release (i.e., Version 1.0), all API's described here are subject to possible change. You've Been Warned.


Data structures:


Data structures