主题: openldap应用

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本: 0.8.3
- 使用的 Linux/BSD 发行版名称及版本号:Centos 5.5
- 与您的问题相关的日志信息:
====
张工好, 我基于openldap部署了Iredmail,  看起来应该没有问题。
我在另一台服务器安装vsftpd, 打算用iredmail服务器里的openldap来验证。
配置好后,发现只有postmaster 用户能够登录,其他任何用户都不行。好奇怪,为什么?

回复: openldap应用

*) 请贴对应的配置文件。
*) 请贴相关的错误日志。
*) 请打开 vsftpd 的 debug 模式,将测试登陆时产生的完整 debug 信息贴一下。

如果不贴以上信息,那恐怕就没人知道为什么了。 big_smile

回复: openldap应用

好吧,我被打败了,折腾两天了还没搞定。
环境说明一下.
1. iredmail 0.8.3 独立服务器, 基本上没有改动。
2. 另一个服务器vsftpd, 基于centos 6.3, ldapsearch 查询是可以查到ldap的用户。
3. 也在各个独立服务器部署了 svn 和 bugzilla , 使用iredmail 验证没有问题。

现在状况是 postmaster 可以登录,其他用户不能。

相关信息如下,如需要补充我再贴

[root@gwrdftp ~]# cat /etc/pam_ldap.conf | egrep -v '^#' | egrep -v ^$
base ou=Users,domainName=gwrd.net,o=domains,dc=gwrd,dc=net
binddn cn=vmail,dc=gwrd,dc=net
bindpw xxxx
scope one
pam_login_attribute sn
uri ldap://192.168.162.145/
ssl no
tls_cacertdir  /etc/openldap/certs
pam_password crypt


[root@gwrdftp ~]# cat /etc/vsftpd/vsftpd.conf | egrep -v '^#' | egrep -v ^$
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftp
log_ftp_protocol=YES



[root@gwrdftp ~]# cat /etc/pam.d/vsftpd | egrep -v '^#' | egrep -v ^$
auth       sufficient   pam_ldap.so
account    sufficient   pam_ldap.so
password   sufficient   pam_ldap.so
session    optional     pam_ldap.so



[root@gwrdftp log]# tailf vsftpd.log
Fri Mar  1 12:19:22 2013 [pid 2600] CONNECT: Client "192.168.18.12"
Fri Mar  1 12:19:22 2013 [pid 2600] FTP response: Client "192.168.18.12", "220 (vsFTPd 2.2.2)"
Fri Mar  1 12:19:22 2013 [pid 2600] FTP command: Client "192.168.18.12", "USER test"
Fri Mar  1 12:19:22 2013 [pid 2600] [test] FTP response: Client "192.168.18.12", "331 Please specify the password."
Fri Mar  1 12:19:22 2013 [pid 2600] [test] FTP command: Client "192.168.18.12", "PASS <password>"
Fri Mar  1 12:19:22 2013 [pid 2599] [test] FAIL LOGIN: Client "192.168.18.12"
Fri Mar  1 12:19:23 2013 [pid 2600] [test] FTP response: Client "192.168.18.12", "530 Login incorrect."
Fri Mar  1 12:21:01 2013 [pid 2657] CONNECT: Client "192.168.18.12"
Fri Mar  1 12:21:01 2013 [pid 2657] FTP response: Client "192.168.18.12", "220 (vsFTPd 2.2.2)"
Fri Mar  1 12:21:01 2013 [pid 2657] FTP command: Client "192.168.18.12", "USER postmaster"
Fri Mar  1 12:21:01 2013 [pid 2657] [postmaster] FTP response: Client "192.168.18.12", "331 Please specify the password."
Fri Mar  1 12:21:01 2013 [pid 2657] [postmaster] FTP command: Client "192.168.18.12", "PASS <password>"
Fri Mar  1 12:21:01 2013 [pid 2656] [postmaster] OK LOGIN: Client "192.168.18.12"
Fri Mar  1 12:21:01 2013 [pid 2664] [postmaster] FTP response: Client "192.168.18.12", "230 Login successful."
Fri Mar  1 12:21:01 2013 [pid 2664] [postmaster] FTP command: Client "192.168.18.12", "OPTS UTF8 ON"
Fri Mar  1 12:21:01 2013 [pid 2664] [postmaster] FTP response: Client "192.168.18.12", "200 Always in UTF8 mode."
Fri Mar  1 12:21:01 2013 [pid 2664] [postmaster] FTP command: Client "192.168.18.12", "PWD"
Fri Mar  1 12:21:01 2013 [pid 2664] [postmaster] FTP response: Client "192.168.18.12", "257 "/""
Fri Mar  1 12:21:04 2013 [pid 2666] CONNECT: Client "192.168.18.12"
Fri Mar  1 12:21:04 2013 [pid 2666] FTP response: Client "192.168.18.12", "220 (vsFTPd 2.2.2)"
Fri Mar  1 12:21:04 2013 [pid 2666] FTP command: Client "192.168.18.12", "USER test"
Fri Mar  1 12:21:04 2013 [pid 2666] [test] FTP response: Client "192.168.18.12", "331 Please specify the password."
Fri Mar  1 12:21:04 2013 [pid 2666] [test] FTP command: Client "192.168.18.12", "PASS <password>"
Fri Mar  1 12:21:04 2013 [pid 2665] [test] FAIL LOGIN: Client "192.168.18.12"
Fri Mar  1 12:21:05 2013 [pid 2666] [test] FTP response: Client "192.168.18.12", "530 Login incorrect."

回复: openldap应用

将 OpenLDAP 的日志级别调到 "loglevel 256",再重新试着登陆 vsftpd,看看 OpenLDAP 日志里有什么具体的信息。主要的是看 ldap filter。

回复: openldap应用

谢谢张工,我把 /etc/vsftpd/vsftpd.conf 的 guest_enable=YES 和 guest_username=ftp 关闭了,postmaster也登录不上了。

如下为ldap日志(loglevel 256): 登录用户test

Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 fd=14 ACCEPT from IP=192.168.162.148:35965 (IP=0.0.0.0:389)
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=0 BIND dn="cn=vmail,dc=gwrd,dc=net" method=128
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=0 BIND dn="cn=vmail,dc=gwrd,dc=net" mech=SIMPLE ssf=0
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=0 RESULT tag=97 err=0 text=
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=1 SRCH base="ou=Users,domainName=gwrd.net,o=domains,dc=gwrd,dc=net" scope=2 deref=0 filter="(sn=test)"
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=1 SRCH attr=host authorizedService shadowExpire shadowFlag shadowInactive shadowLastChange shadowMax shadowMin shadowWarning uidNumber
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=2 BIND anonymous mech=implicit ssf=0
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=2 BIND dn="mail=test@gwrd.net,ou=Users,domainName=gwrd.net,o=domains,dc=gwrd,dc=net" method=128
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=2 BIND dn="mail=test@gwrd.net,ou=Users,domainName=gwrd.net,o=domains,dc=gwrd,dc=net" mech=SIMPLE ssf=0
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=2 RESULT tag=97 err=0 text=
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=3 BIND anonymous mech=implicit ssf=0
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=3 BIND dn="cn=vmail,dc=gwrd,dc=net" method=128
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=3 BIND dn="cn=vmail,dc=gwrd,dc=net" mech=SIMPLE ssf=0
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=3 RESULT tag=97 err=0 text=
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 op=4 UNBIND
Mar  1 01:37:45 LINUX64 slapd[3347]: conn=0 fd=14 closed

回复: openldap应用

登录用户 postmaster


Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 fd=14 ACCEPT from IP=192.168.162.148:40252 (IP=0.0.0.0:389)
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=0 BIND dn="cn=vmail,dc=gwrd,dc=net" method=128
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=0 BIND dn="cn=vmail,dc=gwrd,dc=net" mech=SIMPLE ssf=0
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=0 RESULT tag=97 err=0 text=
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=1 SRCH base="ou=Users,domainName=gwrd.net,o=domains,dc=gwrd,dc=net" scope=2 deref=0 filter="(sn=postmaster)"
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=1 SRCH attr=host authorizedService shadowExpire shadowFlag shadowInactive shadowLastChange shadowMax shadowMin shadowWarning uidNumber
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=2 BIND anonymous mech=implicit ssf=0
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=2 BIND dn="mail=postmaster@gwrd.net,ou=Users,domainName=gwrd.net,o=domains,dc=gwrd,dc=net" method=128
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=2 BIND dn="mail=postmaster@gwrd.net,ou=Users,domainName=gwrd.net,o=domains,dc=gwrd,dc=net" mech=SIMPLE ssf=0
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=2 RESULT tag=97 err=0 text=
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=3 BIND anonymous mech=implicit ssf=0
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=3 BIND dn="cn=vmail,dc=gwrd,dc=net" method=128
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=3 BIND dn="cn=vmail,dc=gwrd,dc=net" mech=SIMPLE ssf=0
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=3 RESULT tag=97 err=0 text=
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=2 fd=17 ACCEPT from IP=192.168.162.148:40253 (IP=0.0.0.0:389)
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=2 op=0 BIND dn="" method=128
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=2 op=0 RESULT tag=97 err=0 text=
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=2 op=1 SRCH base="dc=gwrd,dc=net" scope=2 deref=0 filter="(&(objectClass=posixAccount)(uid=postmaster))"
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=2 op=1 SRCH attr=userPassword cn gidNumber uidNumber loginShell objectClass gecos uid homeDirectory
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=2 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 op=4 UNBIND
Mar  1 01:42:10 LINUX64 slapd[3347]: conn=1 fd=14 closed

回复: openldap应用

首次查询 LDAP 验证用户似乎是OK的,但第二次以用户自己的 dn 做 bind 时似乎不行。不是很清楚到底是 PAM 的 LDAP 验证机制有问题,还是 vsftpd 的问题。抱歉。

另,iRedMail 有文档支持 Pure-FTPd,也许你可以试试:
http://www.iredmail.org/wiki/index.php? … h.OpenLDAP

另,cn, sn, givenName 这三个属性通常都是用于填写姓名的,可能会包含空格等字符,所以不建议用它们来作为登陆的用户名。uid 比较合适一些。

回复: openldap应用

谢谢,但是我看到系统里没有uid 这个属性啊?phpldapadmin 里看的

回复: openldap应用

将属性导出成 LDIF 就可以看到了。phpLDAPadmin 可能是将它翻译为另外更容易理解的单词了。

回复: openldap应用

张工,测试过了,把 ldap里的值 shadowLastChange 删除就可以登录了。 这个值有什么用吗?(默认是0)

回复: openldap应用

再补充一下,需要增加  posixAccount 和删除 shadowLastChange 值 就可以登录了。

回复: openldap应用

- shadowLastChange 用于存储用户最后修改密码的时间,是一个整数值,表示从 1977 年1月1日至当天的偏移量(天数)。
- posixAccount 应该不需要删除才对。是否可以帮忙再次测试一下?

另外,能否整理一下您的 iRedMail + OpenLDAP + VsFTPd 的安装文档?便于其它用户部署。

回复: openldap应用

posixAccount  不是要删除,而是要增加。普通用户原来没有这个值。
shadowLastChange 要删除才能登录,我想知道这个项删除对原来的iredmail系统有没有影响。
另外openldap不是独立安装的,是由iredmail 安装来的,和iredmail 在同一服务器

回复: openldap应用

*) 你应该在 pam_ldap.conf 里指定 pam_filter (LDAP 查询时的 filter),这样就可以不使用 pam_ldap 自己默认的 filter 了。于是也就不需要手工添加 posixAccount。

*) 在 pam_ldap.conf 里设置 "pam_lookup_policy no" 即可让它忽略密码策略检测,即忽略 shadowLastChange 属性。

具体请参考 pam_ldap 模块的 man 手册: http://linux.die.net/man/5/pam_ldap

另外,能否整理一下您的 iRedMail + OpenLDAP + VsFTPd 的安装文档?便于其它用户部署。

15 最后由 tonyjun (2013-03-02 10:43:57) 编辑

回复: openldap应用

整理文档没有问题,我会整理一份  iRedMail + OpenLDAP + VsFTPd + SVN + Bugzilla + Samba  的应用OpenLDAP部署文档。
不过linux 我比较新手,实现起来的东西比较粗,没法象Pure-FTPd应用文档那样优秀,另外我只能写下相关的步骤和重要配置信息,可能没法对文档进行重现。

回到本主题,前贴的内容我测试了一下,还有一些设置需要测试和改进。
1. pam_filter 设置没用,好象posixAccount   是vsftpd必须的.
2. pam_lookup_policy no 设置没有效果。 不过不删除shadowlastchange项的解决办法就是把 shadowlastchange改成非0就可以登录了

还有个问题,登录后出现以下提示,
响应:    500 OOPS: cannot change directory:/mnt/vmail/vmail1/gwrd.net/t/e/s/test-2013.02.27.04.22.08/
现在的临时解决方法就是在ftp服务器创建这个路径,呵呵。 计划是看能不能第一次登录创建个个人目录。

回复: openldap应用

因为vsftpd 对ldap的 posixAccount  等属性有依赖,研究了proftpd服务器,这个配置比较快,参考见文档:
http://www.iredmail.com/bbs/topic2438-i … apftp.html