Alex:
> Hi,
>
> > >> smtpd_tls_session_cache_database
> > >
> > > This is defined to the default for all instances:
> > > smtpd_tls_session_cache_database =
> > > btree:/var/lib/postfix/smtpd_tls_session_cache
> >
> > That's wrong. The session cache needs to be:
> >
> > smtpd_tls_session_cache_database =
> > ${data_directory}/smtpd_tls_session_cache
> >
> > with (enforced by postmulti) distict values of `data_directory`
> > for each instance. Only the default instance gets to scribble
> > in "/var/lib/postfix".
>
> Ah yes, of course. Thank you.
The xxx_tls_session_cache_database implementation has code that
uses DICT_FLAG_OPEN_LOCK and would have prevented sharing this
database, but that code is not enabled.
In src/tls/tls_scache.c:
#ifdef SINGLE_UPDATER
#define DICT_FLAGS (DICT_FLAG_DUP_REPLACE | DICT_FLAG_OPEN_LOCK \
| DICT_FLAG_UTF8_REQUEST)
#else
#define DICT_FLAGS \
(DICT_FLAG_DUP_REPLACE | DICT_FLAG_LOCK | DICT_FLAG_SYNC_UPDATE \
| DICT_FLAG_UTF8_REQUEST)
#endif
As SINGLE_UPDATER is never defined, the second variant is used.
Postscreen uses DICT_FLAG_OPEN_LOCK unconditionally:
#define PSC_DICT_OPEN_FLAGS (DICT_FLAG_DUP_REPLACE | DICT_FLAG_SYNC_UPDATE | \
DICT_FLAG_OPEN_LOCK)
We have good results with postscreen, so I'm changing the
xxx_tls_session_cache_database code to use DICT_FLAG_OPEN_LOCK as
well, starting in Postfix 3.7.
Wietse