Wietse Venema: > Ronald F. Guilmette: > > >In the case of a Postfix-only solution, whitelist updates could be > > >generated by mis-using smtp_generic_maps, relocated_maps, etc. (add > > >an address if it isn't already "known") > > > > Could you be induced to elaborate on the above comment, hopefully at > > length? > > With a socketmap daemon: > > /etc/postfix/main.cf: > relocated_maps = socketmap:inet:host:port:name > relocated_maps = socketmap:unix:pathname:name > > This queries relocated_maps for every envelope recipient before > email delivery. > > You provide a server that runs on the specified TCP host and port > (or UNIX-domain socket) that speaks the socketmap protocol, and > that answers all queries with "not found". The socketmap protocol > is described in the socketmap_table(5) manpage. There is a Python > socketmap implementation. > > This server maintains a persistent database, adding an (address, > suitable Postfix access map reply, see below) entry if the database > entry does not already exist. The database could be MySQL, LMDB, > but not any version of Berkeley DB > 1.85 because that does not > work with Postfix locks.
This suitable reply can be a time stamp of the last database update for that address. Postfix treats an all-numerical field as "OK". Then, you can do the proactive refresh as described below with any database type. Wietse > The database is queried with check_sender_access, and returns the > suitable reply value that was stored by the socketmap server. > > If you use an MySQL database then your server can also maintain a > "last update" time-stamp field with each address and reply so that > an inactive address can be recognized as "too old". When an active > address entry is mid-way towards expiration, the socketmap server > updates the time stamp to prevent the address from becoming "too > old". > > If you use an LMDB database then your server has to implement the > Postfix external locking protocol as described in lmdb_table(5). > LMDB built-in locks are not suitable (they require a world-writable > lockfile, and that would violate the Postfix security model). > > Wietse >