ExtMail服务器社区's Archiver

falkon 发表于 2009-7-25 12:30

Extmail+Samba+OpenWebMail+OpenLdap整合解决方案

[b]Extmail+Samba+OpenWebMail+OpenLdap整合解决方案[/b]
这是一个基本的方案,还有很多地方时需要完善及改进的地方。希望能抛砖引玉,各位有相关经验的朋友,有更好的意见或经验,请多提意见。不正确的地方,请不吝指出。
本文说的比较简单,以后有时间再补详细一点。
由于网上有很多这类的教程,Extmail,Samba,OpenWebMail,Openldap的安装就不说了,他们分别与 Ldap整合的过程我也不细说了。Extmail+LDAP本论坛有详细的安装指导,Openwebmail+Samba+Openldap本论坛也有一个很详细的说明文档。我也是参照那两份完成分别的整合。最好是分别整合成功了,再来做下面的整合,这样就可以排除某些安装上的问题。
下面说的是Extmail+OpenWebmail+Samba+Openldap。
我个人的思路是让Extmail来使用SAMBA的用户来作为认证的基础。之所以这样考虑是基于以下几个方面考虑
1.        因为Openwebmail+Samba两个都可以使用同一OU下的用户来通过验证,改一个总比改两个成功率比较高一点。
2.        考虑到如果改变SAMBA的ObjecClass的工作量比较大,而Extmail的LDAP认证比较容易修改。综合以上因素,就采用SAMBA用户为主体
3.        Extmail有个VirtualDomain,这个SAMBA好像不支持的,如果使用Extmail的ObjectClass为考虑的主体,就会出现用户名可能重复的问题,这个看其他朋友有没有更好的方式。
下面让我们开始吧。
1.        SAMBA+LDAP
由于以SAMBA为主体,所以SAMBA基本不用修改。(补充说明一下,我是用smbldap-tools来做SAMBA与LDAP整合的)
2.        OpenWebMail
也基本不用修改。如何与LDAP结合,请参考相关文章(后面我做了一些扩展)

3.        Extmail 请参考extmail小组提供的extmail+ldap的安装指南下面的修改是以该安装指南为基础的修改。(建议按该指南成功整合后在做一下的整合,这样可以提供成功几率)
这个改动比较大
主要是以下几个文件webmail.cf,authldaprc以及/etc/postfix目录下以ldap 开头的几个文件。
由于extmail的schema里面有homeDirectory和mail两个attribute与SAMB的homeDirectory还有nis的mail有冲突,所以需要重新定义
修改/etc/openldap/schema/extmail.schema,找到定义attribute的结尾
attributetype ( 1.3.6.1.4.1.12461.1.1.47 NAME 'myExtmailHomeDirectory'
        DESC 'The absolute path to the home directory'
        EQUALITY caseExactIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.12461.1.1.48
        NAME ( 'myExtmailMail' )
        DESC 'RFC1274: RFC822 Mailbox'
        EQUALITY caseIgnoreIA5Match
        SUBSTR caseIgnoreIA5SubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
在ObjectClass部分相应地修改为
objectclass ( 1.3.6.1.4.1.12461.1.2.1
        NAME ( 'extmailUser' )
        SUP ( top $ person $ inetOrgPerson ) STRUCTURAL  #这里请一定要按此,不然导入ldif文件时会报错。好像是extmail objectclass结构化的问题,不能有两个不同的来源。
        DESC 'objectclass for internet email user'
        MUST ( myExtmailMail $ myExtmailHomeDirectory $ active )
        MAY ( uid $ virtualDomain $ expireDate $
        userName $ mailMessageStore $ mailQuota $ extmailTransport $
        uidNumber $ gidNumber $ createDate $ active $
        extmailMailHost $ netdiskQuota $ disablesmtpd $
        disablesmtp $ disablewebmail $ disablenetdisk $
        disableimap $ disablepop3 $ clearPassword $
        question $ answer $ disablePasswdChange ) )
Webmail.cf
将LDAP验证部分修改为
SYS_LDAP_BASE = ou=Users,dc=xxx,dc=xxx,dc=xxx
SYS_LDAP_RDN = cn=Manager,dc=xxx,dc=xxx,dc=xxx
SYS_LDAP_PASS = password
SYS_LDAP_HOST = 192.168.1.2
# ldif attributes
SYS_LDAP_ATTR_USERNAME = mail
SYS_LDAP_ATTR_DOMAIN = virtualDomain
SYS_LDAP_ATTR_PASSWD = userPassword
Webman.cf的修改也做同样的修改

Authldaprc文件
修改为
LDAP_BASEDN            ou=Users,dc=xxx,dc=xxx,dc=xxx
LDAP_GLOB_UID         vuser
LDAP_GLOB_GID         vgroup
LDAP_MAILDIR            mailMessageStore

修改/etc/postfix/的ldap_virtual_mailbox_maps.cf文件
search_base = ou=Users,dc=xxx,dc=xxx,dc=xxx
剩下的几个文件也做同样的修改。

剩下的请参考extmail小组提供的extmail+ldap的安装指南

至于用户建立
dn: uid= testuser,ou=Users,dc=xxx,dc=xxx,dc=xxx
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
objectClass: sambaSamAccount
objectClass: extmailUser
objectClass: inetLocalMailRecipient
objectClass: openWebMailActive (请参考下面的openwebmail扩展,如果你没有用openwembail可以不用该项)
cn: testuser
sn: testuser
givenName: testuser
uid: testuser
homeDirectory: /home/mail/ testuser
loginShell: /bin/bash
sambaPwdCanChange: 0
sambaSID: S-1-5-21-2427185443-4212418356-507897511-6008
sambaPrimaryGroupSID: S-1-5-21-2427185443-4212418356-507897511-513
sambaLogonScript: testuser.bat
sambaProfilePath: \\PDC\profiles\ testuser
sambaHomePath: \\PDC\ testuser
sambaHomeDrive: H:
sambaAcctFlags: [U]
uicExtmailMail: testuser@xxx.xxx.xxx.xxx
virtualDomain: xxx.xxx.xxx.xxx
mailMessageStore: xxx.xxx.xxx.xxx / testuser /Maildir/
uicExtmailHomeDirectory: xxx.xxx.xxx.xxx / testuser
userName: testuser@xxx.xxx.xxx.xxx
mailQuota: 104857600S
netdiskQuota: 52428800S
uidNumber: 2511
gidNumber: 513
active: 1
disablesmtpd: 0
disablesmtp: 0
disablewebmail: 0
disablenetdisk: 0
disableimap: 0
disablepop3: 0
expireDate: 2010-10-01
createDate: 2007-02-14 17:56:33
mail: testuser@xxx.xxx.xxx.xxx
userPassword: {CRYPT}22Qs4eXwOpzhM
openWebMailActive: 1
gecos: testuser
description: testuser
displayName: testuser
mailLocalAddress: testuser
mobile: 13570669923
employeeNumber: 1234567890
postalAddress: AAAAAAAAAAAAAAA
postalCode: 000000
initials: A.A.
physicalDeliveryOfficeName: 1001
ou: XXX
title: X
o: X
l: XX
st: XX

上面这个ldif sample还包含了address book。所以可以直接使用outlook来进行连接查询
4.        OpenWebmail的扩展
如果你测试过,你会发现,如果用extmail也可以登录openwebmail的邮箱。那么怎么解决呢?
可以新增一个你自己的ObjectClass来做openwebmail的验证控制,可以修改nis.schema,或者在extmail.schema 上增加也可以,下面只是一个参考,大家要根据实际情况修改。
attribute  (1.3.6.1.4.1.12461.1.1.49
        NAME ( 'openWebMailActive' )
        DESC 'The status of an account: 0 for in-active, 1 for active'
        EQUALITY caseExactIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
        SINGLE-VALUE )

###########################objectclass#####################################

objectclass (1.3.6.1.4.1.12461.1.2.7
        NAME ('openWebMailActive')
        SUP ( top $ extmailUser ) STRUCTURAL
        DESC 'openWebMailActive'
        MUST (openWebMailActive )
            )
修改/var/www/cgi-bin/openwebmail/auth/auth_ldap.pl
找到filter一项,修改为
filter  => "(&(objectClass=*)(uid=$user)(active=1)(openWebMailActive=1))"
这样既可以防止extmail的用户登录openwebmail,同时可以为openwebmail提供了一个在LDAP里关闭或激活的选项。
如果是openWebMailActive=1那么就可以登录openwebmail,如果是0,就不可以登录。
同理,openwebmail的用户也是可以再extmail里面登录,那么就要修改
disablesmtpd: 0
disablesmtp: 0
disablewebmail: 0
disablenetdisk: 0
disableimap: 0
disablepop3: 0
全部变为1.就可以了。

未解决的问题
1.        extmail的用户的密码,如何能变成samba的用户能使用的密码?
2.        aliaes还没有测试。我觉得应该是没有问题。
3.        openwebmail不能使用LDAP地址本,我觉得应该是可以的。只是我的设置不正确而已。。。

对以上几个问题,还要请请教各位朋友有没有好的方法。

falkon 发表于 2009-7-27 13:51

这么辛苦打这么多字,居然没有人顶~~~:'(
我自己顶一下。:lol
顺便问一下:
有没有办法能将现有的extmail mysql的数据导入到ldap里面去?
在LDAP里面新建用户时,有没有办法将用户目录一起新建?

[[i] 本帖最后由 falkon 于 2009-7-27 13:53 编辑 [/i]]

falkon 发表于 2009-7-27 15:50

aliases问题。
由于我修改了extmail的schema
所以发现添加aliases时。提示
原国: object class 'extmailAlias' requires attribute 'myMailLocalAddress'(原mailLocalAddress attribute)
但查看extmailAlias里,发现myMailLocalAddress是有定义的。
而且用ldif文件也是可以添加的。
所以怀疑是extman的添加文件里对myMailLocalAddress是固定的。但目前还找不到修改的方法。只能用ldif文件添加

falkon 发表于 2009-7-28 14:25

找到解决方法了。可以修改extmail的LDAP操作文件来修改.
由于我自己修改了extmail的schema所以extman还是有一些功能不能正常使用。像增加用户之类的。还需要继续完善一下。等正式上线后抽时间整理一下。做个包出来。方便一下大家。

[[i] 本帖最后由 falkon 于 2009-7-28 14:43 编辑 [/i]]

mouse 发表于 2009-7-28 15:09

来晚了,顶!!

楼主到底改了extmail些什么,实现了啥牛的东西呢?没太看明白:$

falkon 发表于 2009-7-28 16:07

[quote]原帖由 [i]mouse[/i] 于 2009-7-28 15:09 发表 [url=http://www.extmail.org/forum/redirect.php?goto=findpost&pid=62682&ptid=11194][img]http://www.extmail.org/forum/images/common/back.gif[/img][/url]
来晚了,顶!!

楼主到底改了extmail些什么,实现了啥牛的东西呢?没太看明白:$ [/quote]

嗯~~:L
也不是什么牛的东西了。
只不过是将EXTMAIL和SAMBA结合起来一起验证。
因为刚好用到,在论坛上也有些朋友遇到过这样的问题,所以就写出来大家看看,有没有什么需要改进的地方。

mouse 发表于 2009-7-28 16:09

哦。强烈支持!是不是就代替了ad+windows+域的方式?

falkon 发表于 2009-7-28 16:50

[quote]原帖由 [i]mouse[/i] 于 2009-7-28 16:09 发表 [url=http://www.extmail.org/forum/redirect.php?goto=findpost&pid=62690&ptid=11194][img]http://www.extmail.org/forum/images/common/back.gif[/img][/url]
哦。强烈支持!是不是就代替了ad+windows+域的方式? [/quote]
嗯。
可以代替基本功能吧。
统一的验证,开机脚本。网络磁盘。如果喜欢的话也可以加上配置漫游。
但SAMBA域和AD相比,功能上还是有一定的差距的。
目前SAMBA域只能实现基本的AD功能。复杂的就要靠自己解决了。

i659 发表于 2009-8-5 22:38

好东西啊,有机会一定试一下

yehaozi 发表于 2009-12-1 17:35

顶。不错。

kukully 发表于 2009-12-12 14:35

力挺。。。对俺这种菜鸟而言。。天书班

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.