Cyrus-Postfix-LDAP-SASL virtual userek autentikációs probléma

Fórumok

Sziasztok!

Az archívumot böngészgetve látom, hogy ez örökzöld téma; sajnos nem találtam megoldást egyelőre, viszont nagyon sürgős a dolog. :-( Ezt akarom összehozni, GOSA felülettel:


Postfix -> lmtp -> Cyrus
   |                   |
   V                   V
 LDAP               SASL -> PAM -> LDAP

Konkrétan: LDAP frankón megy, Postfix megtalálja a mailboxot, lmtp-vel átadja a cyrusnak, és itt megáll a mutatvány, mert 550-Mailbox unknown-nal visszapattan a levél. A usereket GOSA-val hoztam létre.

Mivel az autentikáció legjobb tudomásom szerint úgy megy, hogy cyrus->sasl->pam->ldap, ezért biztos, hogy itt lesz valami probléma:

1. A slapd-t debug módban, nem daemonként futtatva megnéztem, hogy megmozdítja-e a cyrus az ldap-ot, hát nem.

2. Próbálgattam imap-ra bejelentkezni, de az sem működik, a usert nem találja.

3. Viszont bármely saslpasswd2-vel felvitt usert sikeresen autentikál plaintext-tel (ezért is megy az lmtp). Tehát a cyrus->sasl kapcsolat jónak tűnik.

Konfigok (Ubuntu server 5.04, cyrus 2.1, openldap 2.2.26-3, cyrus-sasl2 2.1.19-1.5ubuntu4):


/etc/imapd.conf
---------------
configdirectory: /var/lib/cyrus
defaultpartition: default
partition-default: /var/spool/cyrus/mail
defaultdomain: foobar.hu
altnamespace: no
unixhierarchysep: yes
lmtp_downcase_rcpt: yes
admins: cyrus
lmtp_admins: lmtpuser
autocreatequota: 30720
autocreateinboxfolders: yes
autosubscribeinboxfolders: yes
allowanonymouslogin: no
popminpoll: 2
umask: 077
sendmail: /usr/sbin/sendmail
sieveusehomedir: false
sievedir: /var/spool/sieve
postmaster: postmaster
# Ha saslauthd-t adok meg, cyradm se megy!!!
# sasl_pwcheck_method: saslauthd
sasl_pwcheck_method: auxprop
sasl_mech_list: plain login
sasl_minimum_layer: 0
hashimapspool: false
allowplaintext: yes
lmtp_allowplaintext: yes
allowapop: no
virtdomains: yes

/etc/default/saslauthd
----------------------
START=yes
MECHANISMS="pam"

/etc/pam_ldap.conf
------------------
host 127.0.0.1
base dc=foobar,dc=hu
rootbinddn uid=admin,dc=foobar,dc=hu
port 389
timelimit 30
ssl no
nss_base_passwd         dc=foobar,dc=hu?sub
nss_base_shadow         dc=foobar,dc=hu?sub
nss_base_group          ou=groups,dc=foobar,dc=hu?one
pam_password            md5
pam_login_attribute     uid
pam_member_attribute    memberuid

/etc/pam.d/imap
---------------
auth        sufficient   /lib/security/pam_ldap.so
account     sufficient   /lib/security/pam_ldap.so

/etc/nsswitch.conf
------------------
passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

...Illetve egy ldapsearch eredménye egy userre:


# buran, people, foobar.hu
dn: uid=buran,ou=people,dc=foobar,dc=hu
sambaBadPasswordCount: 0
sambaBadPasswordTime: 0
sn: Andrei
givenName: Buran
dateOfBirth: 1970-01-01
gender: M
cn: Andrei Buran
mail: andrei.buran@foobar.hu
mailRoutingAddress: buran@foobar.hu
gosaMailServer: imap://localhost
gosaMailDeliveryMode: [L]
gosaSpamSortLevel: 0
uid: buran
objectClass: gosaMailAccount
objectClass: inetLocalMailRecipient
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: gosaAccount

Ez a user tök jól működik sima LDAP kéréseknél, de PAM-nál nem. (Lehet, hogy a pam_login_attribute miatt?) Szóval én a PAM->LDAP kommunikációra gyanakszom.

És a kimaradhatatlan log, ez egy levél beérkezésekor:


May  3 23:03:23 gape postfix/smtpd[9191]: connect from unknown[192.168.1.254]
May  3 23:03:30 gape postfix/smtpd[9191]: 092DB1C255: client=unknown[192.168.1.254]
May  3 23:03:38 gape postfix/cleanup[9193]: 092DB1C255: message-id=<20060503210328.092DB1C255@mail.foobar.hu>
May  3 23:03:38 gape postfix/qmgr[9184]: 092DB1C255: from=<buraan@gmail.com>, size=333, nrcpt=1 (queue active)
May  3 23:03:38 gape cyrus/master[9195]: about to exec /usr/lib/cyrus/bin/lmtpd
May  3 23:03:38 gape cyrus/lmtp[9195]: executed
May  3 23:03:38 gape cyrus/lmtpd[9195]: telling master 2
May  3 23:03:38 gape cyrus/master[9087]: service lmtp pid 9195 in READY state: now unavailable and in BUSY state
May  3 23:03:38 gape cyrus/master[9087]: service lmtp now has 0 ready workers
May  3 23:03:38 gape cyrus/lmtpd[9195]: accepted connection
May  3 23:03:38 gape cyrus/lmtpd[9195]: telling master 3
May  3 23:03:38 gape cyrus/master[9087]: service lmtp pid 9195 in BUSY state: now serving connection
May  3 23:03:38 gape cyrus/master[9087]: service lmtp now has 0 ready workers
May  3 23:03:38 gape cyrus/lmtpd[9195]: connection from localhost.localdomain [127.0.0.1]
May  3 23:03:38 gape cyrus/lmtpd[9195]: login: localhost.localdomain [127.0.0.1] lmtpuser LOGIN User logged in
May  3 23:03:38 gape postfix/lmtp[9194]: 092DB1C255: to=<andrei.buran@foobar.hu>, relay=127.0.0.1[127.0.0.1], delay=10, st
atus=bounced (host 127.0.0.1[127.0.0.1] said: 550-Mailbox unknown.  Either there is no mailbox associated with this 550-name
or you do not have authorization to see it. 550 5.1.1 User unknown (in reply to RCPT TO command))

PLS HELP!
Megígérem ünnepélyesen, hogy ha ezt sikerül összelőni, írok egy magyar nyelvű, részletes dokumentációt és közzéteszem, további szívásokat megelőzendő...

---
;-(

Hozzászólások

Mivel már az előző levél is rohadt hosszú volt, itt írom le, hogy ha felveszem az ldap-ba a pam-nak szükséges cuccokat (posixAccount szükséges mezők), akkor be lehet lépni ssh-val (!!!). Tehát a pam->ldap mégis működik. Akkor a sasl->pam-mal lehet probléma? Az authentikáció plaintext, tehát amiatt nem lehet probléma (majd TLS lesz belőle)...

Úgy érted, hogy "cm cyrus"? Vagy úgy, hogy cyrus userrel jelentkezzek be a cyradm-ban, és hozzak létre mailboxot?
Az utóbbit megcsinálja a GOSA:

cyradm --user cyrus gape
IMAP Password:
gape.foobar.hu> lm
andrei.buran@foobar.hu (\HasNoChildren)
user.test1 (\HasNoChildren)
user.test2 (\HasNoChildren)
user.testuser (\HasNoChildren)

Itt az andrei.buran@foobar.hu és a user.testuser mailboxokat én hoztam létre a cyradm-mal, a másik kettőt meg a GOSA hozta létre.

Azt olvastam, hogy a cyrus-nak lmtp-vel egy fully qualified name-et kell átadni; ami egyezik a mailbox nevével. Ezért tesztelgettem az andrei... mailboxszal, de sajnos az nem jött össze.

Most jutott eszembe, hogy lehet, hogy a mailbox neve ugyan FQ, de ilyen uid nincs az ldap-ban... lehet hogy ez a gond? Mindjárt checkelem.

Köszi,

;-(

cyrus userrel jelentkezzek be a cyradm-ban, és hozzak létre

en erre gondoltam, de ha csak otletet sikerult adni annak is orulok :)
szerintem az auth resze rendben van, mar ha mondjuk be tudsz jelentkezni imap-on, a gond erzesre inkabb ott van, h cyrus nem tudja mit csinaljon a levellel.

ezzel az en cyrus, postfix, ldap, stb tudasom ki is merult, ebbe is csak veletlenul szaladtam bele nemreg, varom a howto-t :)

Kipróbáltam az imap bejelentkezést, így:

imtest -a testuser -l0 -m login 192.168.1.10
illetve
imtest -a testuser@foobar.hu -l0 -m login 192.168.1.10


S: * OK gape Cyrus IMAP4 v2.1.18-IPv6-Debian-2.1.18-1ubuntu1 server ready
C: C01 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ MAILBOX-REFERRALS NAMESPACE UIDPLUS ID NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND SORT THREAD=ORDEREDSUBJECT THREAD=REFERENCES IDLE ANNOTATEMORE
S: C01 OK Completed
Please enter your password:
C: L01 LOGIN testuser {8}
S: + go ahead
C: <omitted>
S: L01 NO Login failed: user not found
Authentication failed. generic failure
Security strength factor: 0
C: Q01 LOGOUT
Connection closed.

A logba ezt írja:


May  4 11:56:53 gape cyrus/imapd[6752]: badlogin: gape.foobar.hu[192.168.1.10] plaintext testuser SASL(-13): user not found: checkpass failed

A howtot biztos hogy megírom (ha egyszer működni kezd), mert nagyon nagy mennyiségűt szívtam vele, és hiába kerestem egy egyszerű, érthető howtot.

;-(

Közben kiderült, hogy azzal a userrel, aki a sasldb-ben van, simán megy az imap authentikácia is; tehát tényleg a saslnak nem akaródzik a pam-ot használni. A saslauthd-s processzek így futnak:

root 5957 0.0 0.3 6540 1632 ? S 07:45 0:00 /usr/sbin/saslauthd -a pam

Ebből van 5 db. Lehet, hogy a PAM-nál van hiba? De konzolra meg be tudok jönni, akkor mi probléma lehet a PAM-mal?

Nem tudja valaki, hogyan lehet debug levelt emelni a saslauthd-n? Semmi logot nem ír, strace-vel meg hiába kapaszkodok fel az egyikre, ha épp a másik végzi az autentikácia...

;-(

Új fejlemény: A cyrus levlistán olvastak hatására az imapd.conf-ban átírtam a sasl_pwcheck_method-ot saslauthd-re, annak ellenére, hogy eddig meggyőződésem volt, hogy az nem működik. :-)

Ezután elkezdett működni az imap autentikáció; mind sasldb, mind LDAP userekkel. Csakhogy sajnos mindeközben a cyradm authentikáció romlott el. Ez utóbbira az a megoldás, hogy így jelentkezek be:

# cyradm --user cyrus --auth login localhost

Ez így működik saslauthdb-vel is! Sajnos ez annyira mégsem jó, mert a GOSA-nak nem tudom elmagyarázni, hogy ne plain text-tel jelentkezzen be (a postfixnek meg főleg nem!); de egy vágással megoldottam: felvittem a cyrus felhasználót az LDAP-ba. Frankón működik.

Most még az a gond, hogy a cyrus nem találja a mailboxot a RCPT To: alapján, de az autentikáció egész jó. Ezután már csak egy kis TLS kell és kész is a recept.

;-(