On Fri, Jun 17, 2022 at 12:39:30AM +0000, Hamid Maadani wrote:
> > You need to read the mongodb documentation with care and make sure
> > that you honour their API contract. For example:
> > 
> > mongoc_init():
> 
> When it comes to 'mongoc_init' and 'mongoc_clean', they are supposed to be 
> run once per process.
> If I understand how postfix works correctly, it invokes 'dict_mongodb_open'
> when it loads the shared-object for the dict (postfix-mongodb.so).

No, this is invoked once per mongodb table.

> I did not
> Find an init function for the dict libraries, just the open method.
> That would mean that mongoc_init would be run every time that library is
> opened (which should be once for postmap and proxymap, unsure about postfix 
> master).

You need to use a static variable to record whether you've already
initialised the library, and do it just once.  No need to worry about
threads or locks.  Postfix is single-threaded.

> Please let me know if my understanding is incorrect.
> Would it be preferred to move this to postfix master process instead of a 
> loadable
> module? Even if the user does not want to use Mongo?

No.  That can't work.

> I guess that's a difference in our way of thinking. Personally, it would be 
> easier for me
> this way, but if you see more value in failing in case both are specified, 
> that's easy to
> implement. Just let me know.

I think that's better in this case.

> Question about using variables in main.cf I'm getting 'unused
> parameter' errors for my mongo variables, where I know I am using
> them.  Is there something I need to do in the module to mark a
> variable as used while reading it from the config?

See "src/postconf/" for how this is handled for LDAP, ...

> Just Fyi, when compiling postfix, I keep running into <stdio.h> missing from
> src/posttls-finger/posttls-finger.c
> Adding the stdio header resolves the issue, easy fix.

Feel free to post a patch.  I don't see this on FreeBSD or MacOS.  What
platform are you building on?

-- 
    Viktor.

Reply via email to