[Dovecot] Trying to building a customized auth plugin

Antonio Perez-Aranda aperezaranda at yaco.es
Tue Nov 16 13:43:42 EET 2010


Maybe, but I haven't got any experience with PAM modules as with dovecot.

I have a preauthcustom.c from courier which I have to migrate to dovecot.

2010/11/16 Alex Baule <alexwbaule at gmail.com>:
> Dovecot plugins works with hooks. This hooks allow you customize some
> actions.
>
> You need to find the authentication hook, and rewrite it's actions.
>
> Inside the userdb.c have it void userdbs_init(void), but you change the
> shared name, so you need to change inside your plugin too.
>
> But, you're trying to do something with auth, you can use PAM, it's more
> easy. (i think)
>
> 2010/11/16 Antonio Perez-Aranda <aperezaranda at yaco.es>
>
>> Well, all modules start with ifdef like this:
>>
>> #ifdef USERDB_CUSTOM
>>
>> And in this case, this isn't defined. I commet out this ifdef/else/if
>> block and then I have got more errors, I can continure.
>>
>> 2010/11/16 Antonio Perez-Aranda <aperezaranda at yaco.es>:
>> > Not, userdb-custom and passdb-custom are copies from
>> > userdb-passwd-file and passdb-passwd-file.
>> >
>> > I try with this function now, thanks.
>> >
>> > 2010/11/16 Alex Baule <alexwbaule at gmail.com>:
>> >> inside your plugin, have this function ? <authdb_custom_init>
>> >>
>> >> Every plugin must have a "init" function and it must call
>> "plugin-name_init"
>> >>
>> >>
>> >> 2010/11/16 Antonio Perez-Aranda <aperezaranda at yaco.es>
>> >>
>> >>> Is it needed to include custom db on usedb.c and passdb.c ?
>> >>>
>> >>> I can see at userdb.c:
>> >>>
>> >>> void userdbs_init(void)
>> >>>
>> >>> with all userdb registered, and similar at passdb.c
>> >>>
>> >>>
>> >>> At now, I get the follow line loading the module and trying to access
>> >>> vía imap login
>> >>>
>> >>> Nov 16 17:54:28 auth: Error: module
>> >>> /usr/lib64/dovecot/auth/libauthdb_custom.so: dlsym(authdb_custom_init)
>> >>> failed: /usr/lib64/dovecot/auth/libauthdb_custom.so: undefined symbol:
>> >>> authdb_custom_init
>> >>> Nov 16 17:54:28 auth: Error: Module doesn't have init function:
>> >>> /usr/lib64/dovecot/auth/libauthdb_custom.so
>> >>>
>> >>>
>> >>>
>> >>> 2010/11/16 Antonio Perez-Aranda <aperezaranda at yaco.es>:
>> >>> > Well, I didn't execute ./configure on $DOVECOT path
>> >>> >
>> >>> > 2010/11/16 Antonio Perez-Aranda <aperezaranda at yaco.es>:
>> >>> >>  gcc -fPIC -shared -g -Wall \
>> >>> >>      -I$DOVECOT \
>> >>> >>      -I$DOVECOT/src/lib \
>> >>> >>      -I$DOVECOT/src/lib-auth  \
>> >>> >>      -I$DOVECOT/src/lib-sql \
>> >>> >>      -I$DOVECOT/src/lib-settings \
>> >>> >>      -I$DOVECOT/src/lib-ntlm \
>> >>> >>      -I$DOVECOT/src/lib-master \
>> >>> >>      -I$DOVECOT/src/auth \
>> >>> >>      -DHAVE_CONFIG_H \
>> >>> >>      -DAUTH_MODULE_DIR=\"passdb-custom\"\
>> >>> >>      passdb-custom.c -o passdb-custom.o
>> >>> >>
>> >>> >> With this I get:
>> >>> >>
>> >>> >> error on auth-common.h
>> >>> >> ...
>> >>> >> config.h Not found.
>> >>> >>
>> >>> >>
>> >>> >> But config.h are in $DOVECOT path
>> >>> >>
>> >>> >>
>> >>> >> 2010/11/15 Timo Sirainen <tss at iki.fi>:
>> >>> >>> On 15.11.2010, at 18.03, Antonio Perez-Aranda wrote:
>> >>> >>>
>> >>> >>>> gcc -fPIC -shared -g -Wall -I$DOVECOT \
>> >>> >>>>     -I$DOVECOT/src/lib \
>> >>> >>>>     -I$DOVECOT/src/lib-auth  \
>> >>> >>>>     -I$DOVECOT/src/lib-sql \
>> >>> >>>>     -I$DOVECOT/src/lib-settings \
>> >>> >>>>     -I$DOVECOT/src/lib-ntlm \
>> >>> >>>>     -I$DOVECOT/src/lib-master \
>> >>> >>>>     -I$DOVECOT/src/auth \
>> >>> >>>>     passdb-passwd-file.c -o passdb-passwd-file.o
>> >>> >>>>
>> >>> >>>> With this, I get errors relate with uoff_t
>> >>> >>>
>> >>> >>> You need to add -DHAVE_CONFIG_H
>> >>> >>>
>> >>> >>>
>> >>> >>
>> >>> >
>> >>>
>> >>
>> >
>>
>


More information about the dovecot mailing list