[Dovecot] Trying to building a customized auth plugin

Alex Baule alexwbaule at gmail.com
Tue Nov 16 14:30:05 EET 2010


Humm... if you get the remote ip, sometimes the PAM don't have this
information to use...

Well...it's better you do the plugin.



2010/11/16 Antonio Perez-Aranda <aperezaranda at yaco.es>

> It take login user, pass and other dat from connection like remote ip
> and send to a Java App with special security. If the result of Java
> App is correct (more difficult to explain), then it pass ask to
> standard courier ldap plugin.
>
> 2010/11/16 Alex Baule <alexwbaule at gmail.com>:
> > What the preauthcustom.c does ? something special or setting some rights
> > from users ?
> >
> > If was only auth, PAM is much more easy....
> >
> > 2010/11/16 Antonio Perez-Aranda <aperezaranda at yaco.es>
> >
> >> 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