From: Stefan Foerster on
Two questions regarding proxymap:

1. Is a single proxymap(8) process able to handle multiple lookup
tables? I.e., taking the example from the manpage, modifying it to

mysql = proxy:mysql:/etc/postfix/
virtual_alias_maps =${mysql}virtual_alias_maps.cf
virtual_alias_domains = ${mysql}virtual_alias_domains.cf

and furthermore assuming a limit of 40 proxymap(8) processes defined
in master.cf, will this result in 40 or 80 connections to the
database?


2. Typically, changes in CIDR, PCRE or RegExp tables are not detected
immediately, which is not a problem for short lived processes like
smtpd(8). If those tables are provided by means of proxymap(8) (to
e.g. save memory on very large CIDR tables), will the tables be
re-read as soon as a newly spawned smtpd(8) makes a connection to
proxymap(8) or is it necessary to reload Postfix?


Stefan

From: Stan Hoeppner on
Stefan Foerster put forth on 6/20/2010 5:16 AM:
> Two questions regarding proxymap:
>
> 1. Is a single proxymap(8) process able to handle multiple lookup
> tables? I.e., taking the example from the manpage, modifying it to

For read maps, yes. And even better, one process will do multiple map types.
I use read-only hash, regex, and pcre maps with a single proxymap process.

> mysql = proxy:mysql:/etc/postfix/
> virtual_alias_maps =${mysql}virtual_alias_maps.cf
> virtual_alias_domains = ${mysql}virtual_alias_domains.cf

For write maps I don't know.

> and furthermore assuming a limit of 40 proxymap(8) processes defined
> in master.cf, will this result in 40 or 80 connections to the
> database?

I have no idea on this one. The whole point of proxymap is to have one
process reading all maps to cut down on the memory footprint of multiple
concurrent smtpd processes. Why anyone would want 40 proxymap processes is
beyond me. Doing this seems counterproductive.

> 2. Typically, changes in CIDR, PCRE or RegExp tables are not detected
> immediately, which is not a problem for short lived processes like
> smtpd(8). If those tables are provided by means of proxymap(8) (to
> e.g. save memory on very large CIDR tables), will the tables be
> re-read as soon as a newly spawned smtpd(8) makes a connection to
> proxymap(8) or is it necessary to reload Postfix?

I believe this is controlled by max_idle and ipc_idle. When the timer
expires, the proxymap process is killed. The next process that needs one of
the tables causes the proxymap process launch. At this point the tables are
read. If you need an update to be read before the process expires, you would
have to do a reload.

--
Stan