分享
 
 
 

Postfix+Cyrus-IMAP+Cyrus-SASL+MySQL完全指南(一)

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

CNGNU Postfix邮件系统系列指南之一

Postfix + Cyrus-IMAP + Cyrus-SASL + MySQL完全指南

作者:王兴宇

版本:0.30

版权:GPL

发布日期:2002-9-12

目录

1. 概述

1.1. 目的

1.2. 更新历史

1.3. TODO

1.4. 鸣谢

2. 系统功能

3. 系统基本前提

4. 配置MySQL

4.1. 配置

5. 安装pam_mysql

5.1. 下载

5.2. 编译与安装

5.3. 配置

6. 安装Cyrus-SASL

6.1. 下载

6.2. 编译与安装

6.3. 配置

7. 安装Postfix

7.1. 下载

7.2. 编译与安装

7.3. 配置

8. 安装Cyrus-IMAP

8.1. 下载

8.2. 编译与安装

8.3. 配置

9. 测试

9.1. 启动

9.1.1. 启动MySQL

9.1.2. 启动Postfix

9.1.3. 启动Cyrus-IMAP

9.1.4. 启动脚本

9.2. 测试

9.2.1. 测试MySQL

9.2.2. 测试Postfix

9.2.3. 测试Cyrus-IMAP

9.2.4. 测试邮件

1. 概述

1.1. 目的

本文试图介绍如何在一个Linux平台上安装一套功能完整的邮件系统。这里我们以Postfix做SMTP服务器、Cyrus-IMAP做POP3/IMAP4服务器、通过Cyrus-SASL对存储在MySQL数据库中的用户进行验证和授权。

这个邮件系统的设计目标是提供一个可扩充的、具备大多数功能的邮件系统。

本文的最新版本可以在这里找到:

格式URL

简体中文/HTMLhttp://www.cngnu.org/technology/Postfix_I.html

繁体中文/HTMLhttp://www.cngnu.org/technology/Postfix_I.tw.html

简体中文/TEXThttp://www.cngnu.org/technology/Postfix_I.txt

繁体中文/TEXThttp://www.cngnu.org/technology/Postfix_I.tw.txt

有关本文所涉及的技术问题,请到http://www.cngnu.org/forum/的linux版讨论,我会尽快回复的。

本文的版权遵循GPL,可以在不删除版权信息和注明修改的情况下任意传播。

1.2. 更新历史

2002-5-21 第一次发布,版本0.20。

2002-8-13 修正一些错误,版本0.21。

2002-8-23 修正一些错误,版本0.22。

2002-9-12 在RedHat Linux Advance Server V2.1上进行了测试,修正了一些错误,版本0.30。

1.3. TODO

增加Courier-IMAP部分的内容

增加SqWebmail部分的内容

增加SSL部分的内容

1.4. 鸣谢

谢谢lesson.ward、Yunping Zhu的指正。

参考文档:http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/index.html

2. 系统功能

系统逻辑结构:

+-----------------------------------------------------------------------+

| |

| 25/25 25/25 110/993 143/995 80/443 110/993 143/995 |

| Incoming Outgoing POP3 IMAP WEB-MAIL POP3 IMAP |

| /\ /\ /\ /\ /\ /\ /\ |

| || || || || || || || |

| \/ \/ \/ \/ \/ \/ \/ |

+-------------------+---------------+---------------+-------------------+

| Postfix | | SqWebmail | |

| | +-------+-------+ |

| | Cyrus-IMAP | Courier-IMAP |

| +-----------+-----------------------+---------------------------+

| | Cyrus-IMAP |

| +---------------------------------------------------------------+

| | PAM |

| +---------------------------------------------------------------+

| | pam_mysql |

+-------+---------------------------------------------------------------+

| MySQL |

+-----------------------------------------------------------------------+

3. 系统基本前提

本文以Linux系统为目标平台,支持多数的Linux平台如RedHat 7.x、Mandrake

8.x等,理论上也会支持其他的Linux发行版,甚至其他的UNIX系统。

这里以RedHat Linux Advance Server V2.1(该系统与RedHat V7.3基本相同)为说明平台。

该说明平台除了基本的操作系统部分外,系统中还安装了如下的RPM:

一、gcc:

1. gcc-2.96-108.1

2. gcc-c++-2.96-108.1

二、db3:

1. db3.3-devel-3.3.11.5

2. db3.3-3.3.11-5

3. db3-utils-3.3.11-5

三、pam:

1. pam-0.75-29

2. pam-devel-0.75-29

四、mysql:

1. mysqlclient9-3.23.22-6

2. mysql-3.23.41-1

3. mysql-server-3.23.41-1

4. mysql-devel-3.23.41-1

如果系统中没有,请自行安装RPM包或编译安装。除此之外,其他需要的部分将以源码方式编译。

4. 配置MySQL

4.1. 配置

MySQL安装配置好以后,在MySQL中创建邮件用户数据库,并添加一个测试用户“tester”:

# mysql mysql

mysql> CREATE DATABASE mail;

mysql> GRANT ALL ON mail.* TO mail@localhost

-> IDENTIFIED BY "secret";

mysql> FLUSH PRIVILEGES;

mysql> USE mail;

mysql> CREATE TABLE user (

-> username varchar(32) NOT NULL default '',

-> password varchar(32) binary NOT NULL default '',

-> forward varchar(128) NOT NULL default '',

-> status int(11) NOT NULL default '1',

-> UNIQUE KEY username (username)

-> );

mysql> INSERT INTO user VALUES

-> ('tester','testpw','tester',1);

mysql> \q

上面的mail数据库的user表用来保存用户信息:

username和password字段就是用户名和明文密码。

forward字段默认情况下与username一样,在此情况下,邮件递交到本地邮箱(由于Postfix区分邮箱的大小写,所以通过这样的一个转发,正好可以消除大小写的区别);如果forward字段是另外一个用户名或者邮件地址,则该邮件被转发到别的用户或其它邮件地址。

status字段用来指示该用户是否有效,可以通过修改该值为0来禁止某个用户。

一些软件对mysql的本地连接使用的另外一个位置的sock入口,做个软连接:

# ln –s /tmp/mysql.sock /var/lib/mysql/mysql.sock

5. 安装pam_mysql

5.1. 下载

http://sourceforge.net/projects/pam-mysql/

wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.4.7.tar.gz

注:如果不能访问该网站取得pam_mysql,请自行使用代理服务器访问。

5.2. 编译与安装

编译pam_mysql:

# tar -xvzf pam_mysql-0.4.7.tar.gz

# cd pam_mysql

# make

# cp pam_mysql.so /lib/security

有些情况下,这个编译会报错,但是编译出来的模块还是可以用的。

5.3. 配置

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

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

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

# echo auth sufficient pam_mysql.so user=mail passwd=secret host=localhost

db=mail table=user usercolumn=username passwdcolumn=password crypt=0 >> /etc/pam.d/imap

# echo account required pam_mysql.so user=mail passwd=secret

host=localhost db=mail table=user usercolumn=username passwdcolumn=password crypt=0 >> /etc/pam.d/imap

这里前面两行指是通过UNIX的基本方式认证用户(即系统用户),后面两行是指通过mysql数据库来认证用户。这里我们之所以保留UNIX 系统认证模式,是因为我们下面要通过系统用户cyrus来管理cyrus-imap邮箱。不过你也可以选择将这个管理帐号cyrus放入mysql认证数据库里面,只需要你在上面的数据库里面添加一个cyrus用户。

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

# cd /etc/pam.d

# ln –s imap pop

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

# cd /etc/pam.d

# ln -s imap smtp

系统上可能已经存在了一个/etc/pam.d/smtp文件,请将原来的改名或者删除。

6. 安装Cyrus-SASL

6.1. 下载

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

wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-1.5.28.tar.gz

6.2. 编译与安装

编译Cyrus-sasl,只支持需要的plain和login认证方式:

# tar -zxvf cyrus-sasl-1.5.28.tar.gz

# cd cyrus-sasl-1.5.28

# ./configure --disable-sample --disable-saslauthd --disable-pwcheck

--disable-cram --disable-digest --disable-krb4 --disable-gssapi --disable-anon --enable-plain

--enable-login

# make

# make install

# ln -s /usr/local/lib/sasl /usr/lib/sasl

系统上如果已经安装了SASL,请先删除这些RPM或/usr/lib/sasl这个目录。

加载链接库:

# echo /usr/local/lib >> /etc/ld.so.conf

# echo /usr/local/lib/sasl >> /etc/ld.so.conf

# ldconfig

注意,这里使用的是SASL V1,目前SASL V2和Postfix配合上可能还有问题。

6.3. 配置

设置Postfix使用SASL的PAM模块来支持smtp auth认证:

# echo pwcheck_method: pam > /usr/lib/sasl/smtpd.conf

Cyrus-IMAP的SASL配置不使用标准的sasl语法,它的配置文件放在/etc/imapd.conf中,详细配置在Cyrus-IMAP部分说明。

整个系统使用的认证机制比较复杂。所有的应用(SMTP、IMAP、POP3等)都采用SASL

V1来认证;而SASL是通过它所支持的PAM模块来借助pam_mysql接口对存储在MySQL数据库中用户信息进行认证的。

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