[Date Prev][Date Next] [Chronological] [Thread] [Top]

trying to get courier and openldap to play nice



I am trying to authenticate "virtual" users to IMAP with courier and openldap. I started out using this article as a starting point.
http://blog.akbkhome.com/blog/archives/18_Getting_a_OpenLDAPCourierIMAPexim_server_up_and_going.html



openldap seems to be working as I can authenticate and run queries as the virtual users. I cannot seem to telnet to imap and login manually as these users however. I have been trying to go through the various debug levels to see where the queries are failing, but I am having a hard time making sense of many of the things in there. I was wondering if anyone sees anything blantantly wrong in these levels? Is there some other way I can better debug why these queries are failing? I only get a "login failed" error in mail.log and mail.err and no corresponding errors in /var/log/messages.


cn=admin is the admin user of the openldap server that courier is binding as to check
uid=rharding is the virtual user I am testing this all with


basedn is dc=home,dc=ricksweb,dc=info

Thanks for any help that you might be able to offer.
-Rick

Here is the output at level 4
:slapd -d4

connection_get(12)
==> bdb_bind: dn: cn=admin,dc=home,dc=ricksweb,dc=info
send_ldap_result: err=0 matched="" text=""
connection_get(12)
deferring operation
SRCH "dc=home,dc=ricksweb,dc=info" 2 0    0 0 0
    filter: (mail=rharding)
    attrs: homeDirectory Maildir cn userPassword uidNumber mail
bdb_idl_fetch_key: [b49d1940]
bdb_idl_fetch_key: [4f067bec]


At level 32:

str2filter "(objectclass=*)"
begin get_filter
PRESENT
end get_filter 0
begin get_filter
EQUALITY
end get_filter 0
=> bdb_filter_candidates
        AND
=> bdb_list_candidates 0xa0
=> bdb_filter_candidates
        DN SUBTREE
<= bdb_filter_candidates: id=-1 first=1 last=5
=> bdb_filter_candidates
        OR
=> bdb_list_candidates 0xa1
=> bdb_filter_candidates
        EQUALITY
<= bdb_filter_candidates: id=0 first=0 last=0
=> bdb_filter_candidates
        EQUALITY
<= bdb_filter_candidates: id=0 first=0 last=0
<= bdb_list_candidates: id=0 first=0 last=0
<= bdb_filter_candidates: id=0 first=0 last=0
<= bdb_list_candidates: id=0 first=1 last=0
<= bdb_filter_candidates: id=0 first=1 last=0

and finally at 1
bdb_db_open: dbenv_open(/var/lib/ldap)
slapd starting
ldap_pvt_gethostbyname_a: host=localhost, r=0
put_filter: "(objectclass=*)"
put_filter: simple
put_simple_filter: "objectclass=*"
ber_scanf fmt (m) ber:
connection_get(12): got connid=0
connection_read(12): checking for input on id=0
ber_get_next
ber_get_next: tag 0x30 len 55 contents:
do_bind
ber_get_next
ber_get_next on fd 12 failed errno=11 (Resource temporarily unavailable)
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
>>> dnPrettyNormal: <cn=admin,dc=home,dc=ricksweb,dc=info>
=> ldap_bv2dn(cn=admin,dc=home,dc=ricksweb,dc=info,0)
<= ldap_bv2dn(cn=admin,dc=home,dc=ricksweb,dc=info,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=admin,dc=home,dc=ricksweb,dc=info,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(cn=admin,dc=home,dc=ricksweb,dc=info,272)=0
<<< dnPrettyNormal: <cn=admin,dc=home,dc=ricksweb,dc=info>, <cn=admin,dc=home,dc=ricksweb,dc=info>
do_bind: version=2 dn="cn=admin,dc=home,dc=ricksweb,dc=info" method=128
bdb_dn2entry_rw("cn=admin,dc=home,dc=ricksweb,dc=info")
=> bdb_dn2id_matched( "cn=admin,dc=home,dc=ricksweb,dc=info" )
<= bdb_dn2id_matched: id=0x00000002: entry cn=admin,dc=home,dc=ricksweb,dc=info
entry_decode: "cn=admin,dc=home,dc=ricksweb,dc=info"
<= entry_decode(cn=admin,dc=home,dc=ricksweb,dc=info)
=> string_expand: pattern: cn=admin,dc=home,dc=ricksweb,dc=info
=> string_expand: expanded: cn=admin,dc=home,dc=ricksweb,dc=info
=> regex_matches: string:
=> regex_matches: rc: 1 no matches
====> bdb_cache_return_entry_r( 2 ): created (0)
do_bind: v2 bind: "cn=admin,dc=home,dc=ricksweb,dc=info" to "cn=admin,dc=home,dc=ricksweb,dc=info"
send_ldap_result: conn=0 op=0 p=2
send_ldap_response: msgid=1 tag=97 err=0
ber_flush: 14 bytes to sd 12
connection_get(12): got connid=0
connection_read(12): checking for input on id=0
ber_get_next
ber_get_next: tag 0x30 len 128 contents:
ber_get_next
ber_get_next on fd 12 failed errno=11 (Resource temporarily unavailable)
do_search
ber_scanf fmt ({miiiib) ber:
>>> dnPrettyNormal: <dc=home,dc=ricksweb,dc=info>
=> ldap_bv2dn(dc=home,dc=ricksweb,dc=info,0)
<= ldap_bv2dn(dc=home,dc=ricksweb,dc=info,0)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(dc=home,dc=ricksweb,dc=info,272)=0
=> ldap_dn2bv(272)
<= ldap_dn2bv(dc=home,dc=ricksweb,dc=info,272)=0
<<< dnPrettyNormal: <dc=home,dc=ricksweb,dc=info>, <dc=home,dc=ricksweb,dc=info>
ber_scanf fmt ({mm}) ber:
ber_scanf fmt ({M}}) ber:
=> bdb_back_search
bdb_dn2entry_rw("dc=home,dc=ricksweb,dc=info")
=> bdb_dn2id_matched( "dc=home,dc=ricksweb,dc=info" )
<= bdb_dn2id_matched: id=0x00000001: entry dc=home,dc=ricksweb,dc=info
entry_decode: "dc=home,dc=ricksweb,dc=info"
<= entry_decode(dc=home,dc=ricksweb,dc=info)
search_candidates: base="dc=home,dc=ricksweb,dc=info" (0x00000001) scope=2
=> bdb_dn2idl( "dc=home,dc=ricksweb,dc=info" )
=> bdb_equality_candidates (objectClass)
=> key_read
<= bdb_index_read: failed (-30991)
<= bdb_equality_candidates: id=0, first=0, last=0
=> bdb_equality_candidates (mail)
=> key_read
<= bdb_index_read: failed (-30991)
<= bdb_equality_candidates: id=0, first=0, last=0
bdb_search_candidates: id=0 first=1 last=0
====> bdb_cache_return_entry_r( 1 ): created (0)
bdb_search: no candidates
send_search_result: err=0 matched="" text=""
send_ldap_response: msgid=2 tag=101 err=0
ber_flush: 14 bytes to sd 12