Date: Fri, 29 Nov 2002 17:54:58 +0100 (CET) From: Ludo Koren <lk@tempest.sk> To: erlis@engineer.com Cc: freebsd-isp@FreeBSD.ORG Subject: Re: standalone pop3 daemon Message-ID: <200211291654.gATGsw4F094658@lk.tempest.sk> In-Reply-To: <20021129102242.GB91480@engineer.com> (message from Andrew Scherbachenko on Fri, 29 Nov 2002 12:22:42 %2B0200)
next in thread | previous in thread | raw e-mail | index | archive | help
> Qpopper can work with LDAP via PAM but it require fake records
> in /etc/master.passwd 8-( Does anyone know subj that can work
> with LDAP without any additional requirements like records in
> /etc/master.passwd or so?
I did it a while ago. Try to apply the following patches. I assume,
you have sources of sendmail in /usr/src/contrib/sendmail and sendmail
library in /usr/obj/usr/src/lib/libsm.
Regards,
ludo
*** Makefile.patched Thu Oct 17 12:20:46 2002
--- Makefile Thu Oct 17 11:56:39 2002
***************
*** 151,157 ****
${common_dir}/string_util.h
! CFLAGS = -O -pipe -freg-struct-return
CDEFS =
OS_DEFS = -DSETPROCTITLE -DFREEBSD -DUNIX
DEFS = -DHAVE_CONFIG_H
--- 151,157 ----
${common_dir}/string_util.h
! CFLAGS = -O -pipe -freg-struct-return -I/usr/src/contrib/sendmail/include -I/usr/obj/usr/src/lib/libsm
CDEFS =
OS_DEFS = -DSETPROCTITLE -DFREEBSD -DUNIX
DEFS = -DHAVE_CONFIG_H
***************
*** 161,167 ****
NETWORK_LIBS =
KERBEROS_LIBS =
DBM_LIBS =
! LIBS = -lmd -lutil -L/usr/local/lib -lpam -L/usr/lib -lssl -lcrypto
AR_FLAG = -r
RANLIB_CMD =
--- 161,167 ----
NETWORK_LIBS =
KERBEROS_LIBS =
DBM_LIBS =
! LIBS = -lmd -lutil -L/usr/local/lib -lpam -L/usr/lib -lssl -lcrypto /usr/obj/usr/src/lib/libsm/libsm.a -lldap -llber
AR_FLAG = -r
RANLIB_CMD =
------------------ cut here ----------------------------------
*** pop_pass.c.patched Thu Oct 17 10:54:32 2002
--- pop_pass.c Thu Oct 17 12:09:06 2002
***************
*** 135,140 ****
--- 135,141 ----
#endif /* KERBEROS */
#include "snprintf.h"
+ #include <sm/mbdb.h>
#define SLEEP_SECONDS 10
***************
*** 440,445 ****
--- 441,447 ----
int pamerror = 0;
int erc = 0;
const char *errmsg = NULL;
+ SM_MBDB_T user;
/*
* Let conv function access POP structure
***************
*** 479,484 ****
--- 481,492 ----
return ( pop_msg ( p, POP_FAILURE, HERE, GP_ERRSTRING,
p->user, errmsg, erc ) );
}
+ sm_mbdb_initialize ("ldap");
+ sm_mbdb_lookup ( p->user, &user );
+ (&p->pw)->pw_name = strdup ( p->user );
+ (&p->pw)->pw_uid = user.mbdb_uid;
+ (&p->pw)->pw_gid = user.mbdb_gid;
+ sm_mbdb_terminate ();
pamerror = pam_acct_mgmt ( pamh, 0 );
DEBUG_LOG1 ( p, "pam_acct_mgmt returned %i", pamerror );
if ( pamerror != PAM_SUCCESS ) {
***************
*** 1275,1280 ****
--- 1283,1289 ----
*secretkey = '\0';
#endif /* SECURENISPLUS */
+ SM_MBDB_T user;
/*
* Is the user not authorized to use POP?
***************
*** 1296,1301 ****
--- 1305,1317 ----
* Verify user known by system.
*/
pwp = &p->pw;
+ sm_mbdb_initialize ("ldap");
+ sm_mbdb_lookup ( p->user, &user );
+ pwp->pw_name = strdup ( p->user );
+ pwp->pw_uid = user.mbdb_uid;
+ pwp->pw_gid = user.mbdb_gid;
+ sm_mbdb_terminate ();
+
if ( pwp->pw_name == NULL ) {
DEBUG_LOG1 ( p, "User %.128s not known by system",
p->user );
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-isp" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200211291654.gATGsw4F094658>
