Socket maps are a very effective way of extending the functionality of MTAs, implemented by Sendmail and MeTA1. They may be used for a vide variety of purposes. For example, one may use them to configure one's Sendmail to keep all data in an SQL database or in any other database, not directly supported by it.

So far socket maps have been given undeservedly little attention. Perhaps, this is due to lack of suitable free software servers that could be queried using them.

Smap aims to fill this gap. Its main component, smapd, is a modular server which handles socket map requests. Instead of handling each request itself, smapd relies on loadable modules to provide the requested functionality. In other words, the server is responsible for handling socket map protocol, and for dispatching queries to appropriate modules. Modules, in their turn, are responsible for looking up the requested key and returning the result.

Second important part of the package is a set of loadable modules for smapd. These modules cover several important database management systems and make it possible to easily configure servers for retrieving data from them.

Furthermore, the package provides a framework for writing new modules for smapd. New modules may be written either in C or in Guile.

And finally, Smap includes a client program, smapc, which can be used to query arbitrary socket servers from the command line. Besides other possible uses, smapc is a valuable tool for testing your socket servers.

The main audience of Smap are administrators of Sendmail and MeTA1 mail transport agents, as well as those who use Mailfromd, a flexible general-purpose mail filter.