分享
 
 
 

WITH POSTFIX, CYRUS IMAP, OPENLDAP, HORDE|IMP.

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

相关软件及网址:

www.postfix.org

postfix-19991231-pl08

www.horde.org

horde-1.2.3

imp-2.2.3

http://asg.web.cmu.edu/cyrus/

cyrus-imapd-v1.5.19

www.linc-dev.com

pwcheck_ldap.c for cyrus

TODO LIST:

相关软件文档

用户管理功能

安全

安装脚本

分布扩展

分布管理

维护人:ai_ya

email: ai_ya@21cn.com

http://ai_yaya.home.chinaren.com

http://ai_ya.myetang.com

错漏很多,请多多指正!非常希望听到改进的意见!

本文是 www.horde.org/papers/Scalable_webmail_HOWTO.php 的详细安装步骤及一点扩展,本文没有包含基本原理及概念,如有需求,请访问该网址。

本文假设你使用的是 redhat 6.2 , 已经设置好 apache 、php4 、postgresql、DNS。

准备LDAP服务器

LDAP服务器在本例中用的是 Redhat 6.2 自带的openldap-1.2.9-5。

1. 设置dns服务器

主要是对 /etc/openldap/ldap.conf /etc/openldap/slapd.conf 两个培植文件的修改。ldap.conf 是 ldap 客户端的配置文件,要修改的配置参数如下:

#-----<

BASE dc=your, dc=com

HOST ldap.your.com

PORT 389

#----->

slapd.conf 是 ldap 服务器的配制文件,主要修改如下参数其中,directory 是ldap数据储存的位置,默认值为 /tmp,是 redhat 的 bug,要改

#-----<

database ldbm

suffix "dc=your, dc=com"

rootdn "cn=Manager, dc=your, dc=com"

rootpw yourpassword

directory /usr/local/openldap/ldbm

#----->

2. 分析LDAP数据结构

现在使用如下结构作为例子:

dn: uid=testnn,ou=email_auth,ou=service,o=it,dc=your,dc=com

uid: testnn

maildrop: testnn@mail.your.com

mailacceptinggeneralid: testnn

signup_ip: 132.97.102.175

objectclass: account

userpassword: nn

3. 将以上数据储存在一个文本文件中,并以*.ldif为其命名。然后使用以下命令将数据增加入ldap服务器。

# ldapadd -D "cn=Manager, dc=your, dc=com" -W < test01.ldif

4. 通过下面命令从ldap服务器检索数据

# ldapsearch -L -b "dc=your, dc=com" "(objectclass=*)"

5. 从ldap服务器删除数据

# ldapdelete -D "cn=Manager, dc=your, dc=com" "dc=your, dc=com"

配置安装postfix

1. 删除 sendmail

# rpm -e sendmail

2. 使用如下命令配置postfix使其支持LDAP

# make tidy

# make makefiles CCARGS="-I/usr/include -DHAS_LDAP" AUXLIBS="/usr/lib/libldap.a /usr/lib/liblber.a"

# make

3. 增加 postfix 用户

# useradd -c postfix -d /no/where -M -s /no/shell postfix

4. 为postfix在/etc/aliases增加一个alias:

postfix: root

5. 使用如下命令安装:

# sh INSTALL.sh

6. 修改 /etc/postfix/main.cf

6.1. 域名环境设置

myhostname = mail.your.net

#myhostname = virtual.domain.name

mydomain = your.net

#myorigin =  $myhostname

myorigin =  $mydomain

inet_interfaces = all

#inet_interfaces =  $myhostname

#inet_interfaces =  $myhostname, localhost

#mydestination =  $myhostname, localhost. $mydomain

#mydestination =  $myhostname, localhost. $mydomain  $mydomain

mydestination =  $myhostname, localhost. $mydomain,  $mydomain,mail. $mydomain, www. $mydomain, ftp. $mydomain

6.2. 对cyrus的支持

mailbox_transport = cyrus

local_transport = cyrus

6.3 修改 /etc/postfix/main.cf, 增加 LDAP 搜索数据属性

alias_maps = hash:/etc/aliases, ldap:ldapsource

ldapsource_server_host = ldap.your.com

ldapsource_search_base = ou=email_auth, ou=service, o=it, dc=your, dc=com

7. 修改 /etc/postfix/master.cf

cyrus unix - n n - - pipe

flags=R user=cyrus argv=/usr/cyrus/bin/deliver -e -m  ${extension}  ${user}

配置安装Cyrus

0. 铲除 IMAP

rpm -e imap

1. 配置pwcheck

1.1. 复制 pwcheck_ldap.c 到 pwcheck 目录

1.2. 修改 pwcheck_ldap.c

#----------Before

25 define MY_LDAP_SERVER "ldap.your.com"

26 define MY_LDAP_BASEDN "ou=email_auth, ou=service, o=it, dc=your, dc=com"

27 define MY_LDAP_UIDATTR "uid"

87 if ((ldap_count_entries(ld,result) != 1)

#----------After

25 #define MY_LDAP_SERVER "ldap.your.com"

26 #define MY_LDAP_BASEDN "ou=email_auth, ou=service, o=it, dc=your, dc=com"

27 #define MY_LDAP_UIDATTR "uid"

87 if ((ldap_count_entries(ld,result)) != 1)

1.3. 修改 pwcheck 目录下的 Makefile.in

#----------Before

DEPLIBS = ../lib/libcyrus.a @DEPLIBS@

#----------After

DEPLIBS = ../lib/libcyrus.a -lldap -llber @DEPLIBS@

2. # cp et/com_err.h /usr/include

3.

# rm -f config.cache

# ./configure --with-login=unix_pwcheck --with-pwcheck=ldap --with-cyrus-group=cyrusmail --without-krb

4. # make depend

5. # make all

6. 为 Cyrus 建立系统用户和组

Cyrus 的默认用户是 cyrus, 组是 mail,如果系统中已经存在相同的用户和组,那你必须为 Cyrus 指定一个不同的用户以及组。特定用户的指定是在 ./configure 时设置 with-cyrus-user= 选项,特定组的指定是在 ./configure 时设置 with-cyrus-group= 选项。

在本例中特定用户为cyrus ;组为cyrusmail

7. # make install

8. 修改 /etc/syslog.conf

增加如下设置:

local6.debug /var/adm/imapd.log

9. 建立 imapd.log 文件

# mkdir /var/adm

# touch /var/adm/imapd.log

10. 建立 /etc/imapd.conf 文件

加入如下设置,并将你的 Cyrus IMAP 管理员加在 admins: 项目后面

configdirectory: /var/imap

partition-default: /var/spool/imap

admins: cyrus curtj abell

srvtab: /var/imap/srvtab

11. 根据 imapd.conf 文件中的 configdirectory 选项,建立目录

命令如下

# cd /var

# mkdir imap

# chown cyrus imap

# chgrp cyrusmail imap

# chmod 750 imap

12. 在configuration目录中,制作空的文件 mailboxes 和相关的空目录:

# cd imap

# true >> mailboxes

# mkdir user quota proc log msg

# chown cyrus *

# chgrp cyrusmail *

13. 按照 /etc/imapd.conf 文件里的设置,建立 partition 目录

在这里,我们使用 /var/spool/imap 作为 partition 目录

# cd /var/spool

# mkdir imap

# chown cyrus imap

# chgrp cyrusmail imap

# chmod 750 imap

partition 目录在概念上与 /var/spool/news 相似,是mailboxes储备的地方。与大部分的网络新闻服务系统不同,Cyrus 允许你有1以上的partition。由于 "news" 是一个保留字,所以不要它作为 partition 的名字。

14. Linux系统:将 configuration, user, quota 以及 partition 目录设置为同步更新

不这样样做,在系统崩溃后可能导致数据出错或丢失。

# cd /var/imap

# chattr +S . user quota

# chattr +S /var/spool/imap

15. 建立“/var/pwcheck”目录,把它设置为只允许 cyrus 用户读取:

# mkdir /var/pwcheck

# chown cyrus /var/pwcheck

# chmod 700 /var/pwcheck

16. 如果 /etc/services 文件内不存在如下内容,请增加

pop3 110/tcp

imap 143/tcp

imsp 406/tcp

kpop 1109/tcp

17. 把下面几行加入 /etc/inetd.conf 文件中

imap stream tcp nowait cyrus /usr/cyrus/bin/imapd imapd

#(If you want to run the POP3 protocol, add the following line.)

pop3 stream tcp nowait cyrus /usr/cyrus/bin/pop3d pop3d

#(If you want to run MIT's KPOP (Kerberized POP) protocol, add the following line)

kpop stream tcp nowait cyrus /usr/cyrus/bin/pop3d pop3d -k

#("cyrus" is the Cyrus user and "/usr/cyrus/bin/" is the path name to the executable.)

18. 用 vigr 编辑 /etc/group ,将 daemon 用户加入到 cyrusmail 组

这样将允许 sendmail 运行“deliver”程序将邮件传递给 IMAP 服务器。

19. 在 /etc/rc.d/rc.local 加入下面内容,并重启

postfix start

/usr/cyrus/bin/pwcheck &

20. 在LDAP和Cyrus IMAP里增加用户并使用 outlook、Netscape 进行测试

20.1. LDAP 按介绍加入用户

20.2. cyrus 用户的管理使用下面命令

# /usr/local/bin/cyradm -u cyrus yourcyrushost

具体的操作细节可以键入 help 得到

设置HORDE|IMP

1. 将两个 tar 包解压,将 horde-x-x-x 移入html 的根目录,并更名为 horde;将 imp-X-X-X 移入 horde 目录下,更名为 imp。

2. 复制 horde/phplib/子目录到 usr/local/apache/phplib/

3. 在 httpd.conf 中加入:

# Added for Horde

<Directory /home/httpd/htdocs/horde>

Options Indexes FollowSymLinks

AllowOverride None

order allow,deny

allow from all

<IfModule mod_php3.c>

php3_include_path '/usr/local/apache/phplib:.'

php3_auto_prepend_file /usr/local/apache/phplib/prepend.php3

php3_magic_quotes_gpc Off

php3_track_vars On

</IfModule>

<IfModule mod_php4.c>

php_value include_path '/usr/local/apache/phplib:.'

php_value auto_prepend_file /usr/local/apache/phplib/prepend.php3

php_flag magic_quotes_gpc Off

php_flag track_vars On

</IfModule>

</Directory>

4. 修改 /usr/local/apache/phplib 文件夹中的local.inc(设置 SQL)及prepend.php3

5. 执行下面命令设置horde所用的数据库:

# su - postgres

# ./pgsql_cuser.sh(如果pgsql 是使用 tarball 安装的,那你必须更改 pgsql_cuser.sh)

# psql template1 < pgsql_create.sql

6. 将 horde/config/horde.php3.dist复制为 horde/config/horde.php3,并根据你的需要进行修改。

7. 修改httpd.conf

DirectoryIndex index.html index.php3

8. # kill -HUP <httpd's pid>

9. 浏览 www.youdomain.com/horde/test 进行测试。

10. 按照下面的步骤对IMP进行设置:

# cd <horde dir>

# sh ./install.sh

11. 浏览下面的地址设置你的 IMP

http://<your imp server>/<your horde home>/setup.php3

12. 设置完成后,执行下面的命令取消设置文件的访问权:

# cd <horde dir>

# sh secure.sh

13. 修改数据库口令

/home/httpd/htdocs/horde/scripts/database/dbpasswd.sh

14. 复制简体译文到 horde/imp/locale/

15. 修改 horde/imp/config/lang.php3 ,加入简体中文配置,并取消你不用的语言

16. 修改 signup.php3,并将其复制到 horde/,覆盖原有文件。

17. 复制changepasswd.php3 至 horde/, 修改 horde/imp/config/menu.txt,加入 changepasswd.php3

18. 根据你的需要定制IMP。

18.1. 减少浏览窗口、取消软件介绍

 $default->minimum_popups = true;

 $default->newuser_link = false;

18.2. 根据你的需要修改 cn/login.lang、cn/status.lang 里的 IMP 版本标题

18.3. 在 horde/imp/templates/status/body.inc里更改 IMP 的版本联接

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有