在apache 下建立高可扩展的web邮件系统实例

1.2 要求
该文档提到了三种服务器:web服务器,imap服务器和LDAP服务器。这些服务器可以位于独立的主机上,或若干个独立的机 器上(例如:23个web服务器,5个LDAP服务器和10个IMAP服务器),或单台服务器上。同时需要具有在 Linux环境下从源代码安装软件的基本知识

1.3 使用的软件
构建该系统需要以下的软件包: Apache 1.3.6 或以上版本 http://www.apache.org/ PHP 3.0.12 需要将对IMAP和LDAP的支持编译进来 OpenLDAP 1.2 Cyrus 1.5.19 (注:不要使用1.6) postfix 19990627 pwcheck_ldap patch (针对cyrus 1.5的) IMP (2.0.4, 2.0.10, 和2.1.3-dev进行了测试) UW IMAP (针对 c-client) 注:cyrus 1.6树使用了一种不同的,被称作SASL的鉴别方法, pwcheck_ldap补丁不是针对这种鉴别方法设计的。然而,对SASL的LDAP的补丁正在设计中,你可以参观该主页来获得最新信息。

1.4 特别注释
该系统有一个部分的可伸缩性不是很好:IMP使用的用来保存会话数据,参 数,及地址簿的SQL服务器。

2. 安装软件 2.1 Web服务器的安装
在web服务器上,管理员需要安装下列软件包:Apache, PHP, postfix, OpenLDAP, UW IMAP, 及IMP. 安装Apache和PHP是很容易的,具体步骤在PHP软件包中的安装导引有详细的说 明。在安装PHP时,你需要将对LDAP和IMAP的支持编译进来。 安装postfix可以参考随软件包的安装指南,特别要注意文件LDAP_README。

2.2 LDAP服务器的安装
需要安装OpenLDAP软件 来构建LDAP服务器。你需要决定一个root dn并相应地向LDAP的db中加入设置。

2.3 IMAP服务器的安装
在IMAP服务器上,你将需要安装LDAP, postfix, Cyrus及cyrus的pwcheck_ldap补丁。编译postfix时需要有加入对ldap的支持。根据软件安装文档安装Cyrus,但 是需要根据pwcheck_ldap补丁的文档对pwcheck_ldap.c进行修改。另外需要修改pwcheck_ldap.c来提供ldap服 务器及根dn信息;同样若在linux服务器上运行IMAP服务器,则需要在在文件pwcheck_ldap.c作如下修正: 增加行: #include <linux/stddef.h> 另外还需要做一些别的语法修改,具体可以在编译 是发现。 使用下面的命令配置cyrus:

./configure --with-login=unix_pwcheck --with-pwcheck=ldap

后面的编译及安装则根据cyrus的文档;

3. 如何配置服务器协同工作 3.1 LDAP服务器 的配置
每个在LDAP数据库教程中的 邮件用户信息除了其他的希望提供的信息以外需要有下面的内容:(假设你的根dn是o=someorg, c=US):

dn: uid=someuser, o=someorg, c=us
uid: someuser
userpassword: somepassword
maildrop: fulladdress@machine.dom.ain
mailacceptinggeneralid: someuser
mailacceptinggeneralid: somealias

同样,需要选择一个用户拥有cyrus管理权限。只有需要在imap服务器上配置cyrus时,才会需要考虑管理问题。另外,最好不要给一个已经 存在的用户添加管理权限,这样做可能导致安全问题或者导致该用户不能查看自己的信件的问题。

3.2 imap服务器的配置
配置在IMAP服务器上的postfix使用ldap来进行别名匹配。在文档LDAP_README对这个问题进行 了说明。对于Cyrus,按照软件包的安装说明文件进行即可。同样,不要忘记 激活pwcheck并在imap.conf中增添管理用户。

3.3 web服务器
在这一步的设置中,web服务器同样是作为接收邮件网关的前端。配 置postfix来使用ldap进行别名匹配。从而实现检查LDAP的maildrop表项并转发该邮件到maildrop地址,所以在maildrop 中需要全邮件名。 例如,你可以将700,000个用户分配到各个服务器上,平均每台服务器10000个用户。邮件目的地 址是user1@dom.ain的邮件将接入到某台WEB服务器,而该邮件将根据maildrop属性被转发到地址,而发网 user657的邮件将被转发给user657@mail34。而且,maildrop属性同时可以被用作转发地址,如给user302的信 件被转发给someuser@somewhereelse.com">

例如,你可以将700,000个用户分配到各个服务器上,平均每台服务 器10000个用户。邮件目的地址是user1@dom.ain的邮件将接入到某台WEB服务器,而该邮件将根据maildrop属性 被转发到地址,而发网user657的邮件将被转发给user657@mail34。而且,maildrop属性同时可以被用作转发地 址,如给user302的信件被转发给someuser@somewhereelse.com。

对IMP的培配置一般将根据软件文档,配置结束以后,需要做如下修 改: 在config/defaults.php教程3增添如下内容:

 

/* LDAP/IMAP Server Default */ $default->LDAP_server = 'ldap.dom.ain'; $default->LDAP_dn = 'o=someorg,c=US'; $default->LDAP_search_field = 'uid'; $default->ldap_choose_server = true;
to mailbox.php3 apply the following patch:

Index: mailbox.php3 =================================================================== RCS file: /home/cvs/imp/mailbox.php3,v retrieving revision 2.29 diff -c -r2.29 mailbox.php3 *** mailbox.php3 1999/07/29 07:20:00 2.29 --- mailbox.php3 1999/08/04 18:04:10 *************** *** 29,34 **** --- 29,51 ---- require './lib/mimetypes.lib'; require './config/defaults.php3'; + /************LDAP**************/ + + if ($default->ldap_choose_server) { + $ldapconnect = ldap_connect($default->LDAP_server); + if ($ldapconnect) { + print("YES! "); + $ldapbind = ldap_bind($ldapconnect); + $ldaps教程earch = ldap_search($ldapconnect, $default->LDAP_dn, $default->LDAP_search_field."=".$imapuser, array("maildrop")); + $ldapget = ldap_get_entries($ldapconnect, $ldapsearch); + $ldapspl = explode("@", $ldapget[0]["maildrop"][0]); + $server = $ldapspl[1]; + $port = $default->port; + } + }

+ /**********end ldap************/ + + /* Html styles configuration */ require './config/html.php3'; /* Mailbox configuration */ 全部配置结束以后,将具有一个高可扩展性的web邮件系统。
注:1999年8月,IMP的新版本已经包含了这些补丁的内容,所以如果使 用新版本的话,就不需添加这些内容。

4. Miscellaneous 4.1 Adding Users

这里是一小段向LDAP服务器中增添用户的代码,并且同时向cyrus增添一个邮件用户。这是针对 IMAP服务器设计的,但是你可以修改其适应别的环境。

<?php
$ldapconn = ldap_connect("ldap.dom.ain");
$machine = "mail01";
if ($ldapconn)
{
$ldhb = ldap_bind($ldapconn, "cn=cyrusadmin, o=someorg,c=US","password");
$dn = "uid=". $username .", o=someorg, c=US";
$info["uid"]=$username;
$info["userpassword"] = $password;
$info["objectclass"] = "account";
$info["maildrop"] = $username ."@" .$machine .".dom.ain";
$info["mailacceptinggeneralid"] = $username;
$ldhb = ldap_add($ldapconn, $dn, $info);
ldap_close($ldapconn);
}
$imapconn = imap_open("{" .$machine .".dom.ain:143}", "cyrusadmin","password");
if ($imapopen)
{
imap_createmailbox($imapconn, "{" .$machine ."dom.ain:143}user.".$username );
imap_close($imapconn);
}
?>

注:由于一个bug的问题,这里使用明文password。

时间: 2024-10-27 01:15:47

在apache 下建立高可扩展的web邮件系统实例的相关文章

使用Docker、Registrator、Consul、Consul Template和Nginx实现高可扩展的Web框架

本文讲的是使用Docker.Registrator.Consul.Consul Template和Nginx实现高可扩展的Web框架,[编者的话]Consul是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用Go语言开发,基于 Mozilla Public License 2.0 的协议开源.本文介绍了如何使用Consul将多个Docker容器组合起来,以提供一个高可扩展的Web服务. 当你开始将容器拼装起来构建你的系统的时候,你会发现Docker非常

Apache下服务器虚拟主机的设置方法介绍

一.WWW服务器虚拟主机原理 WWW服务器虚拟主机是指使用一台物理机器,充当多个主机名的WWW服务器.比如由一台机器同时提供http://www.company1.com, http://www.company2.com 等的WWW服务,而浏览这些WWW站点的用户感觉不到这种方式下跟由不同的机器提供不同的服务有什么差别. 使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度.另外,对于个人用户,也可以使用这种虚拟主机方式

Apache下服务器虚拟主机设置方法介绍

一.WWW服务器虚拟主机原理 WWW服务器虚拟主机是指使用一台物理机器,充当多个主机名的WWW服务器.比如由一台机器同时提供http://www.company1.com, http://www.company2.com 等的WWW服务,而浏览这些WWW站点的用户感觉不到这种方式下跟由不同的机器提供不同的服务有什么差别. 使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度.另外,对于个人用户,也可以使用这种虚拟主机方式

CentOS 7下搭建高可用集群

CentOS 7下搭建高可用集群 本文以两台机器实现双集热备高可用集群,主机名node1的IP为192.168.122.168 ,主机名node2的IP为192.168.122.169 . 一.安装集群软件 必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件 二.配置防火墙 1.禁止防火墙和selinux # systemctl disable firewalld # systemctl stop firewalld

Apache下的虚拟主机设置

一.WWW服务器虚拟主机原理 WWW服务器虚拟主机是指使用一台物理机器,充当多个主机名的WWW服务器.比如由一台机器同时提供http://www.company1.com, http://www.company2.com 等的WWW服务,而浏览这些WWW站点的用户感觉不到这种方式下跟由不同的机器提供不同的服务有什么差别. 使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度.另外,对于个人用户,也可以使用这种虚拟主机方式

用IIS建立高安全性Web服务器的“小窍门”

本文主要讲述的是用IIS建立高安全性Web服务器的实际操作步骤,众所周知,IIS(Internet Information Server)作为当今流行的Web服务器之一,提供了强大的Internet和Intranet服务功能,如何加强IIS的安全机制.建立一个高安全性能的Web服务器,已成为IIS设置中不可 忽视的重要组成部分.IIS(Internet Information Server)作为当今流行的Web服务器之一,提供了强大的Internet和Intranet服务功能,如何加强IIS的安

在Apache下为PHP添加xcache模块

安装环境centOS6.3 APACHE:apache-2.4.4 PHP:5.4.13 1.安装xchache: # wget http://xcache.lighttpd.net/pub/Releases/3.0.1/xcache-3.0.1.tar.gz # tar xf xcache-3.0.1.tar.gz # cd xcache-3.0.1       #xcache是php的扩展,要使用php命令加载此扩展 # /usr/local/php5/bin/phpize      #ph

Consul实践之Consul结合nginx构建高可用可扩展的Web服务

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1730439 前文<Consul实践之Consul是什么>讲述了consul是什么,这篇文档是一个Consul实际应用的一个例子,用Consul结合nginx构建高可用可扩展的Web服务.Consul还能做许多其他的事情,可以根据实际需要构思和使用. 方案概述 nginx提供的负载均衡服务同样支持高可用.可扩展的W

apache下设置缓存方法详细介绍

默认情况下,apache安装完以后,是不允许被cache的.如果外接了cache或squid服务器要求进行web加速的话,就需要在htttpd.conf里进行设置,当然前提是在安装apache的时候要激活mod_cache的模块 以下简单介绍一下安装与配置的步骤:   1. apache版本:httpd-2.0.49.tar.gz 2. 安装httpd-2.0.49.tar.gz:  代码如下 复制代码 # tar –zxvf httpd-2.0.49.tar.gz # cd httpd-2.0