ldap+qmail+postaci 安装, 用户管理
ldap+qmail+postaci 安装, 用户管理参考文献:
1. 建一个大容量的webmail系统(作者:谢顺华)
目前唯一能找到的中文qmail+ldap资料
http://www.linuxforum.net/doc/webmail.html
2. Postaci Webmail
基于php的webmail系统, 支持pop3, imap, 使用数据库做缓存.
相对于imp和sqwebmail来说, 配置相当容易, 而且界面很好.
(http://www.trlinux.com/)
3. Simple ldap user admin tool
For Qmail的php版用户管理, 可以设置用户资料, 别名, maillist, 公司组织...
http://sourceforge.net/projects/alldap/
4. Softerra LDAP Browser
win32的ldap查看修改工具
http://www.ldapbrowser.com
5. Life With qmail-ldap
http://www.lifewithqmail.org/ldap/
6. Life With qmail
http://www.lifewithqmail.org/
说明:
考虑到qmail使用系统用户在管理上不大方便. 而使用mysql作为用户又会和mysql用户冲突, 而且mysql的局限性很大, 没有ldap的open和自由扩展特性. 使用ldap后, 利用php的ldap函数就可以实现用户管理, 用户可方便的自行编程解决用户管理.
因为不是虚拟主机, 所以选用了配置简单, 好用的Postaci和Simple ldap user admin tool. 适合单一团体/公司使用.
安装:
1. openldap请参考文献1的步骤1.在/etc/openldap目录下是openldap的设置, 除了要按参考1中增加qmail的qmailUser类型外, 还要注意修改slapd.conf文件, 关键内容如下:
#你的公司名, 最好用站点名
suffix "dc=test, dc=com"
#管理员名称, 类似于系统管理员. 很长, 但是很重要.
rootdn "cn=Manager, dc=test, dc=com"
#管理员密码(这里用的是明文密码)
rootpw secret
加入基本数据:
ldapadd -D "cn=Manager,dc=test, dc=com" -W
dn: dc=test, dc=com
objectclass: dcObject
objectclass: organization
o: test Company
dc: test
dn: cn=Manager, dc=test, dc=com
objectclass: organizationalRole
cn: Manager
2. qmail需要加for ldap的补丁, 并且配置pop3, imap, sendmail.请参考文献1中的步骤2. 其中注意以下事项:
ldap要求qmail使用Maildir格式, 所以, 要修改/var/qmail/rc如下:
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`" splogger qmail
在/var/qmail/control/defaultdelivery中内容如下:
./Maildir/
/var/qmail/control/ldapuid和ldapgid是ldap用户资料中的qmailUid/qmailGid的缺省值, 设置后ldap中可不必设置. 注意此处uid和gid必是存放mail目录的uid/gid, 一般是/mail, 属性是750, 不可对其它人可写, 否则出错. 考虑到要在php中执行管理用户的操作, 所以这个uid/gid和apache的相同, 可以在apache/conf/httpd.conf中修改. 注意虚拟主机时可能会有安全问题.
用tail -n 30 /var/log/maillog可以查看发送mail的过程记录, 错误会被记录在内, qmail出错时会自动回信给发件人, 不加-n 30只会看到自动回信的正确信息!
RedHat7中使用xinetd, 不同于老版的inetd, 配置文件放在/etc/xinetd.d/下, 修改如下:
pop3文件:
#default: off
# description: The POP3 service allows remote users to access their mail \
# using an POP3 client such as Netscape Communicator, mutt, \
# or fetchmail.
service pop3
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /var/qmail/bin/qmail-popup
server_args = test.com /var/qmail/bin/auth_pop /var/qmail/bin/qmail-pop3d Maildir
only_from = 0.0.0.0
log_type = FILE /var/log/maillog
disable = no
log_type = FILE /var/log/xinetd.log
log_on_success = HOST
log_on_failure = HOST RECORD
}
smtp文件:
# default: off
# description: The POP3 service allows remote users to access their mail \
# using an POP3 client such as Netscape Communicator, mutt, \
# or fetchmail.
service smtp
{
socket_type = stream
protocol = tcp
wait = no
user = qmaild
server = /var/qmail/bin/tcp-env
server_args = -R /var/qmail/bin/qmail-smtpd
log_type = FILE /var/log/maillog
env = NODNSCHECK=""
log_on_success = HOST
log_on_failure = HOST RECORD
only_from = 0.0.0.0
disable = no
}
如果有其它pop3, smtp的服务应该设定其disable项为yes, 以免冲突.
/var/qmail/control/下的控制文件可以参考文献1的步骤5,一般需要以下文件:
ldapbasedn,ldaplogin,ldappassword,ldapuid,ldapgid,ldapserver
3. 安装php版ldap用户管理工具.(参考文献3)
主要配置都在common.inc文件里面, 如果你的php系统没有对.inc文件处理, 会暴露出系统配置, 建议修改成
common.inc.php, 然后分别修改index.php和format.php的第二行. common.inc.php主要修改如下: 也可以参考postaci的安装文件:
//刚开始的时候可能问题很多, 建议设置成1, 以便观察错误在哪里.
$debug = 0;
//这里有些地方可能适合虚拟主机情况, 这里没用到, 待研究
$root_dn = "dc=test, dc=com";
$exchanges_dn = "".$root_dn;
$people_dn = "".$root_dn;
$lists_dn = "".$root_dn;
//这里要注意和步骤1中设置一致
$ldap_host = "localhost";
$bind_dn = "cn=Manager, dc=test, dc=com";
$pw = "secret";
$mainTitle = "LDAP user admin";
//这里要和步骤2中设置一致
$qmailuid = 501;
$qmailgid = 501;
$messageStoreDir = "/mail";
$mailQuota = "10000000000S,100000C";
$generalUser = "steeven";
/* not sure on the relevance of this... */
$mailHost = "test.com";
//你的公司部门, 可增减, 自己汉化吧 :)
$org_units = array( "Routed", "Switched", "Colocation", "Networks", "Metro", "Recruitment", "Commercial", "Finance", "IT", "Marketing" );
$acc_status = array( "active", "nopop", "disabled" );
$default_email = "test.com";
$logoImg = "../poweredby.png";
$ver = "0.03";
这个老外写的管理工具很好用, 可以设置转发mail, 无限mail别名; 按地域划分公司组织, 下面又分部门, 每个部门又可以指定邮件, 发给部门的邮件可以指定哪些人来接受. 也可以自定义一些maillist, 管理参加人员. 充分体现了ldap的灵活性. 难怪notes, windows都向ldap靠拢 :)
如果qmail没有设置成自动创建用户目录, 可以在add.php第188行增加如下代码:
if (!is_dir($messageStoreDir."/".$uid[0])){
mkdir($messageStoreDir."/".$uid[0],0770);
}
if (!is_dir($messageStoreDir."/".$uid[0]."/".$uid)){
mkdir($messageStoreDir."/".$uid[0]."/".$uid,0770);
}
在add.php中增加用户时的LoginId似乎也有点问题, 可直接采用firstName:
function create_username() {
var first_str = document.user_details.elements[2].value;
document.user_details.elements[11].value = first_str.toLowerCase();
}
利用参考文献4中的LdapBrowser可以看到对LDAP的相关修改, 或者手动修改.
4. 安装Postaci, webmail(参考文献2).
这是一个基于php的webmail, 具有比较完善的功能, 而且支持imap, pop3. 需要mysql支持. 用户可以自行汉化, 文件在lang目录下.
解压后修改includes目录下global.inc文件(有安全顾虑, 参考步骤3), 里面有配置说明.
Following doc/INSTALL to install
安装完成后添加适当用户, 然后就可以通过becky, outlook, foxmail....等收发邮件. 用浏览器打开postaci的安装目录就可以通过web收发mail了.
下一篇:聊天室技术 - 密谈的实现
↓相关文章:
- · 聊天室技术 - 密谈的实现
- · 规范1
- · phpMyAdmin又出了新版本phpMyAdmin-2.2.3-rc1
- · PHP 4.1.0 出版公告(中英对照版)补 1
- · PHP的面向对象编程
- · php重大发现!:)
- · PHP函数索引(4)
- · php函数索引(1)
- · 是你期待的吗? 从Zend Engine 2.0的设计蓝图(草稿)看PHP的将来
- · Mysql权限系统工作原理
- · 加固PHP环境(转)
- · 先做点好事,转点东东来,用PHP和MySQL构建一个数据库驱动的网站(-)
- · 用PHP和MySQL构建一个数据库驱动的网站(三)
- · 用PHP和MySQL构建一个数据库驱动的网站(四)
- · 用PHP和MySQL构建一个数据库驱动的网站(7)
- · 用PHP和MySQL构建一个数据库驱动的网站(十)
- · php中echo <<< 的应用
- · 正则表达式语法(转)
- · PHP的面向对象编程:开发大型PHP项目的方法(三)(转载)
- · PHP的面向对象编程:开发大型PHP项目的方法(五)(转载)
- · 规范3
- · 认知Web服务器
- · PHP脚本数据库功能详解(1)
- · PHP脚本数据库功能详解(3)
- · 第1次亲密接触PHP5(2)
- · 第1次亲密接触PHP5(1)
- · Oracle 常见问题解答
- · Oracle Faq(Oracle TAF的配置)
- · Oracle Faq(Oracle的版本)
- · PHP概述.
- · 数据库相关问题
- · 编译问题
- · 如何获得PHP相关资料
- · 提问的智慧
- · 用PHP实现banner轮换的程序代码
- · PHP取得客户端信息
- · PHP开发中接收复选框信息的方法
- · PHP技术:回帖脱衣服的图片实现
- · PHP程序加速探索之压缩输出gzip
- · 正确理解PHP程序编译时的错误信息
- · PHP和XSS跨站攻击
- · PHP调用java类常见配置错误
- · PHP中的MD5加密
- · PHP能得到你是从什么页面过来的,referer的用处
- · AJAX技术在PHP开发中的简单应用

