分享
 
 
 

Postfix+Cyrus-IMAP+Cyrus-SASL+MySQL+IMP

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

1. 安装说明

这里以RedHat AS 3.0平台,安装AS3时选择Web Server、MySQL Database Server”、

Development Tools和Kernel Development软件组,安装完AS3后需要额外安装的有:

php-mysql-4.3.2-8.ent.i386.rpm和mysql-devel-3.23.58-1.i386.rpm,另外需要说明的是,我以

下的安装过程中使用了我预先建立好的安装包和配置文件。大家可以在我的ftp下载

ftp://test:123456@nero.3322.org/postfix/ ,下载这个目录里所有的文件到你的/home/pub/目录下,这样大家就可以不用修改下文中的有关路径直接安装就可以了。

2.0. 配置MySQL

2.1. 安装MySQL

# cd /home/pub

# rpm -ivh mysql-server-3.23.58-1.i386.rpm

修改/etc/my.cnf,使之只监听在本地打环端口:

# vi /etc/my.cnf

在[mysqld]小节里面添加:

bind-address=127.0.0.1

并设置其开机时候自动运行:

# chkconfig --level 35 mysqld on

2.2. 运行MySQL

启动MySQL:

# /etc/init.d/mysqld start

设置MySQL的root用户密码:

# mysqladmin -u root password new_password

2.3. 测试MySQL

启动MySQL后,检查MySQL的运行情况:

# pstree | grep mysqld

|-safe_mysqld---mysqld

应该有如下端口打开:

# netstat -an | grep LISTEN

tcp

0

0 127.0.0.1:3306

0.0.0.0:*

LISTEN

2.4. 建立数据库

# cd /home/pub

修改我建好的数据库脚本注意替换脚本中的域名为你自己的域名然后创用户建数据库:

# mysql --user=root --password=password < mail.sql

在这个过程中创建了用户数据库,确定了每个用户的邮箱为50M并添加了用户“test”,密码是“123456”

3.0. 安装pam_mysql

3.1. 编译与安装

编译pam_mysql:

# cd /home/pub

# tar -zxf pam_mysql-0.5.tar.gz

# cd pam_mysql

修改pam_mysql.c的源代码,去掉调试消息:

# vi +54 pam_mysql.c

将如下一行:

#define DEBUG

修改为:

/* #define DEBUG */

然后编译:

# make

# cp pam_mysql.so /lib/security

3.2. 配置

创建/etc/pam.d/mail,它用来支持Cyrus-IMAP的imap认证、pop认证和Postfix的smtp认证:

# cd /etc/pam.d

# echo auth sufficient pam_mysql.so user=mail passwd=secret host=localhost db=mail table=USER usercolumn=USERNAME passwdcolumn=PASSWORD crypt=1 sqllog=0 > /etc/pam.d/mail

# echo account required pam_mysql.so user=mail passwd=secret host=localhost db=mail table=USER usercolumn=USERNAME passwdcolumn=PASSWORD crypt=1 sqllog=0 >> /etc/pam.d/mail

# echo auth sufficient pam_unix_auth.so >> /etc/pam.d/mail

# echo account sufficient pam_unix_acct.so >> /etc/pam.d/mail

做个符号链接/etc/pam.d/imap,它用来支持Cyrus-IMAP的imap认证:

# [ -f imap ] && mv imap imap.orig

# ln -s mail imap

同样创建/etc/pam.d/pop ,它用来支持Cyrus-IMAP的pop3认证:

# [ -f pop ] && mv pop pop.orig

# ln -s mail pop

同样创建/etc/pam.d/smtp ,它用来支持Postfix的smtp auth认证:

# [ -f smtp ] && mv smtp smtp.orig

# ln -s mail smtp

系统上可能已经存在了这些文件,将原来的改名备份或删除即可。

4.0. 配置Cyrus-SASL

4.1. 配置

AS3默认安装的Cyrus-SASL可以满足这套邮件系统的需要,一般不必重新编译。

设置Postfix使用SASL的saslauthd认证守护进程来支持smtp auth认证,并只打开了plain和login认证模块:

# cd

# echo pwcheck_method: saslauthd > /usr/lib/sasl2/smtpd.conf

# echo mech_list: plain login >> /usr/lib/sasl2/smtpd.conf

配置saslauthd使用PAM认证方案:

# vi /etc/sysconfig/saslauthd

内容如下:

MECH=pam

将saslauthd设置为自动运行:

# chkconfig --level 35 saslauthd on

4.2. 运行

运行saslauthd守护进程:

# /etc/rc.d/init.d/saslauthd start

5.0. 安装Postfix

5.1. 编译与安装

如果你的系统上原来有sendmail,先将其停止并将其文件改名:

# cd /home/pub

# /etc/init.d/sendmail stop

# chkconfig --level 35 sendmail off

# mv /usr/bin/newaliases /usr/bin/newaliases.orig

# mv /usr/bin/mailq /usr/bin/mailq.orig

# mv /usr/sbin/sendmail /usr/sbin/sendmail.orig

然后添加两个组:postfix和maildrop和一个用户:postfix

# groupadd -g 400 postfix

# groupadd -g 401 postdrop

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

这里的组和用户的ID是系统中未使用的ID。

编译Postfix,并支持mysql和sasl:

# tar -xvzf postfix-2.0.16.tar.gz

# cd postfix-2.0.16

# make -f Makefile.init makefiles 'CCARGS=-DUSE_SASL_AUTH -DHAS_MYSQL -I/usr/include/mysql -I/usr/include/sasl' 'AUXLIBS=-L/usr/lib/mysql -L/usr/lib/sasl2 -lmysqlclient -lsasl2 -lz -lm'

# make install

安装时,安装程序会提问一些问题,可以直接按回车采用默认值。

给postfix用户做一个系统别名,并将超级用户的邮箱转发到一个普通用户。使用/etc/postfix/aliases别名数据库(把“nero.3322.org”改成你的域名):

# cd /etc/postfix

# echo 'root: test@nero.3322.org' >> /etc/postfix/aliases

生成/etc/postfix/aliases别名数据库:

# postalias /etc/postfix/aliases

生成/etc/postfix/virtual的DB库:

# postmap virtual

5.2. 配置

修改/etc/postfix/master.cf中的关于cyrus的配置,(cyrus的命令行和以前有不兼容的地方,确保你的cyrus的参数如下使用了-r ${sender}参数):

修改/etc/postfix/master.cf的配置:

使用已备份的文件:

# cp /home/pub/master.cf /etc/postfix/master.cf

修改/etc/postfix/main.cf的配置:

修改我已建好的main.cf文件,改其中的nero.3322.org和3322.org为你自己的域主机名和域名,然后:

# cp /home/pub/main.cf /etc/postfix/main.cf

修改/etc/postfix/virtual.mysql的配置:

使用已建好的文件:

# cp /home/pub/virtual.mysql /etc/postfix/virtual.mysql

修改/etc/postfix/filter.mysql的配置:

使用已建好的文件:

# cp /home/pub/filter.mysql /etc/postfix/filter.mysql

5.3. 运行

启动命令如下:

# /usr/sbin/postfix start

5.4. 测试Postfix

启动Postfix后,首先检查日志/var/log/messages有无错误信息,然后检查进程,应该有如下进程存在:检查端口及进程:

# pstree |grep master

|-master-+-pickup

接着检查端口,应该有如下端口打开:

# netstat -an |grep LISTEN

tcp

0

0 0.0.0.0:25

0.0.0.0:*

LISTEN

再检测SMTP服务是否正常:

# telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 mail.nero.3322.org ESMTP Postfix

QUIT

221 Bye

Connection closed by foreign host.

6.0. 安装Cyrus-IMAP

6.1. 编译与安装

在RedHat系列的Linux中,其Kerberos的头文件不在标准的地方,所以需要在编译配置前用env命令指定。此外取消对ucdsnmp的支持:

# cd /home/pub

# tar -zxf cyrus-imapd-2.1.16.tar.gz

# cd cyrus-imapd-2.1.16

# env CPPFLAGS=-I/usr/kerberos/include ./configure --with-cyrus-prefix=/usr/cyrus --with-sasl=/usr/lib/sasl2 --with-auth=unix --without-ucdsnmp --with-krb=/usr/kerberos

# make depend

# make all CFLAGS=-O

# make install

如果编译时提示没有找到com_err.h,请复制当前目录的et目录下面的com_err.h到/usr/include:

# cp et/com_err.h /usr/include

Cyrus-IMAP的安装脚本有问题,cyradm(现在使用的是Perl版本,原来的TCL版本不再支持)所需要的perl模块被安装到一些不在Perl的标准@INC的目录里,需要手工安装。

# cd perl/imap

# perl Makefile.PL

# make install

6.2. 配置

创建主配置文件/etc/cyrus.conf:

# cd /home/pub/cyrus-imapd-2.1.16

# cp master/conf/small.conf /etc/cyrus.conf

添加cyrus-imap的管理账号cyrus,并设置密码为“cyrus”(实际应用中可以使用更加复杂的密码),但是没有指定有效的SHELL,以防止使用它来登录:

# useradd -g mail -M -s/no/shell -d/var/imap cyrus

# passwd cyrus

Changing password for user cyrus

New password: ******

BAD PASSWORD: it it too short

Retype new password: ******

passwd: all authentocation tokens updated successfully

这里要记住你设的cyrus的密码,在以后添加用户时有用。

创建IMAP配置文件/etc/imapd.conf,管理员是cyrus:

使用已建好的文件:

# cp /home/pub/imapd.conf /etc/imapd.conf

建立Cyrus-IMAP服务器的目录结构:

# mkdir -p /var/imap/sieve

# mkdir /var/spool/imap

# chown -R cyrus:mail /var/imap

# chown -R cyrus:mail /var/spool/imap

# su -s/bin/bash cyrus

$ tools/mkimap

$ exit

这里tools/mkimap这个实用程序在cyrus-imap的源程序目录里面。

创建日志:

# echo local6.debug /var/log/imapd.log >> /etc/syslog.conf

# echo auth.debug /var/log/auth.log >> /etc/syslog.conf

# /etc/rc.d/init.d/syslog restart

设置邮件限额:

# chattr -R +S /var/imap/user

# chattr -R +S /var/imap/quota

# chattr -R +S /var/spool/imap

由于Cyrus-IMAP的主控进程和Postfix的主控进程名字一样,容易混淆而且不方便控制,所以将Cyrus-IMAP服务器的主控进程做个别名连接:cyrusd。

# cd /usr/cyrus/bin

# ln -s master cyrusd

6.3.创建用户邮箱

# cyradm --user cyrus localhost

IMAP Password:******

nero.3322.org> cm user/test

nero.3322.org> sq user/test STORAGE 52485760

nero.3322.org> lm

user/INBOX (HasNoChildren)

user/test (HasNoChildren)

nero.3322.org> quit

6.4. 删除用户邮箱

# cyradm --user cyrus localhost

IMAP Password: ******

nero.3322.org> sam user/username cyrus cd

nero.3322.org> dm user/username

nero.3322.org> quit

# rm –rf username

7.0. 配置Apache与PHP

IMP对PHP的环境要求较高。所以通常需要升级PHP包,并安装由Horde定制后的PEAR包。

修改/etc/php.ini,将register_globals功能打开。

register_globals = On

修改/etc/httpd/conf/httpd.conf,添加如下内容:

AddType application/x-httpd-php .php

并且在DirectoryIndex中加入index.php

安装PEAR包,在AS3中,它位于/usr/share/pear下:

# cd /home/pub

# tar zxf pear-1.1.tar.gz

# cd /usr/share

# cp -Rf /home/pub/pear/* pear

最后重新启动Apache:

# /etc/rc.d/init.d/httpd restart

7.1. 安装配置Horde、IMP和Turba:

安装Horde、IMP和Turba的集合包:

把/home/pub/horde.tar.gz解压到/var/www/html/目录中

# tar –zvxf horde.tar.gz –C /var/www/html

# cd /var/www/html/horde/scripts/db

改掉mysql_create.sql中horde的默认密码。

# mysql --user=root --password=password < mysql_create.sql

最后在浏览器中访问如下URL测试Horde需要的环境是否满足:

http://nero.3322.org/horde/test.php

如果发现有红色的提示,可能需要修改你的PHP的安装和配置,然后再重新测试。

7.2. 配置Turba

# cd /var/www/html/horde/turba/config

# vi sources.php

在146行添上你设的horde的密码

最后,添加turba数据库表:

# cd ../scripts/drivers

# mysql --user=root --password=password horde < turba.sql

7.3. 配置IMP

修改/var/www/html/horde/imp/config/servers.php中的域名部分

最后在浏览器中访问如下URL:

http://nero.3322.org/horde/

输入用户名test和密码123456登录

7.4. 启动脚本

可以编写一个启动脚本/etc/rc.d/init.d/mailsys来启动这些进程,这样就不需要单独启动postfix和cyrusd了:

# cp /home/pub/mailsys /etc/rc.d/init.d/mailsys

# chmod 755 /etc/rc.d/init.d/mailsys

# chkconfig --level 35 mailsys on

8.0. 添加和删除用户

8.1. 添加用户数据库脚本:

USE mail;

INSERT INTO USER (USERNAME,PASSWORD,FORWARD,DOMAIN,MAIL)

VALUES ('user','$1$hmX8KLab$uLC0tV0WJA$6WT2jS4ty3Yg0',

'user','nero.3322.org','user@nero.3322.org');

8.2. 删除用户数据库脚本:

USE mail;

DELETE FROM USER

WHERE USERNAME = 'user';

8.3. 打开防火墙的25和110端口

可参考:http://bbs.chinaunix.net/forum/4/20040228/269510.html

8.4. 建立动态域名解析

可参考:http://bbs.chinaunix.net/forum/4/20040228/269510.html

8.5. 作者注

本文参考了《Postfix+Cyrus-IMAP+Cyrus-SASL+MySQL+IMP》连接如下:

http://www.cngnu.org/technology/Postfix_I.html

8.6. 服务器事例

http://nero.3322.org/horde/ test:123456

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有