分享
 
 
 

建全功能的邮件系统

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

本系统可称得上是全功能的:可以实现一个流行的邮件系统所支持的几乎所有功能,包括发送附件、POP3 或 IMAP 收信方式、用户文件夹管理、通讯录、修改密码等。如果你愿意,还可实现日历、记事本等功能。而这一切功能都可以通过Web方式实现,即 Webmail。

【目录】

一.邮件系统的基本原理

二.需要的网络环境

三.安装操作系统

四.安装 Sendmail

五.安装 IMAP

六.安装 Web mail 支持—— Apache、Mysql 和 PHP

七.安装 Web mail

八.安装通讯录模块

九.安装修改密码模块

一. 邮件系统的基本原理

首先让我们来了解一下电子邮件系统的基本原理。这里只做一个简单介绍,详细的可参考有关书籍。

一般情况下,我们把电子邮件程序分解成用户代理,传输代理和投递代理。 用户代理将用户的信件传送至传输代理(如 Outlook Express、FoxMail 等)。邮件传输代理负责将邮件送到目标主机(如sendmail)。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱(如 procmail )。

我们来模拟一封邮件从发出到收到的过程。用户使用 Outlook Express (用户代理或叫做邮件客户端)向 Sendmail (传输代理)请求发送电子邮件的服务,将邮件交给 Sendmail。Sendmail 根据邮件的目的地址,将邮件发送给邮件接收服务器,邮件接收服务器将邮件缓存(这也是 Sendmail 的工作)。接收邮件的用户用 Outlook Express 向邮件接收服务器发出取信的请求,邮件接收服务器将邮件发送给用户(这是 IMAP 或 POP 服务的工作)。至此,一封邮件从发送者的机器到达接收者的机器。

我们要建立的邮件服务器,以性能优越的 RedHat Linux 7.3 为操作系统。以 Sendmail 作邮件传输服务,IMAP 作收信服务来构成邮件系统的基本框架。以 Horde Imp 作为邮件的Web客户端。剩下的就是Horde Imp 的支持软件:以 MySQL 存储用户数据,以 Apache+PHP 作为Web服务器。我们还使用其它的模块来扩充本系统的功能:通讯录模块和修改密码模块。

我们将安装下列软件:

1. RedHat linux7.3

作用:操作系统

下载地址: http://freesoft.online.sh.cn:8888/mirrors/redhat/7.3/

2. Sendmail-8.11.6

作用:邮件传输和接收

下载地址:(RedHat linux7.3自带)

3. Imap

作用:IMAP和POP3服务器

下载地址:ftp://ftp.cac.washington.edu/imap/imap-2001a.tar.Z

4. Apache-1.3.24

作用:Web服务器

下载地址:http://freesoft.online.sh.cn:8888/mirrors/ftp.apache.org/httpd/apache_1.3.24.tar.gz

5. PHP-4.2.1

作用:CGI脚本语言

下载地址:http://www.php.net/do_download.php?download_file=php-4.2.1.tar.gz

6. PEAR-4.1.0

作用:PHP的功能扩展模块

下载地址:ftp://ftp.horde.org/pub/horde/tarballs/pear-4.1.0.tar.gz

7. MySql

作用:数据库,存储邮件用户数据和通讯录

下载地址:http://freesoft.online.sh.cn:8888/mirrors/Database/MySQL/mysql-3.23.49.tar.gz

8. Horde-2.1

作用:Imp的支持模块

下载地址:ftp://ftp.horde.org/pub/horde/tarballs/horde-2.1.tar.gz

补丁:ftp://ftp.horde.org/pub/horde/tarballs/patch-horde-2.0-2.1.gz

9. Imp-3.1

作用:Web mail的核心程序

下载地址:ftp://ftp.horde.org/pub/imp/tarballs/imp-3.1.tar.gz

补丁:ftp://ftp.horde.org/pub/imp/tarballs/patch-imp-3.0-3.1.gz

10.Turba-1.1

作用:提供通讯录功能的模块

下载地址:ftp://ftp.horde.org/pub/turba/tarballs/turba-1.1.tar.gz

补丁:ftp://ftp.horde.org/pub/turba/tarballs/patch-turba-1.0-1.1.gz

11.Poppassd-1.8.2

作用:修改密码的服务,与Passwd for imp结合提供Web方式修改用户密码的功能。

下载地址:http://echelon.pl/pubs/poppassd-1.8.2.tar.gz

12.Passwd for imp

作用:提供修改密码功能的模块

下载地址:https://mail.ph.utexas.edu/test2/patches/public/passwd/passwd.tgz

二. 需要的网络环境

本文假设用户希望在园区网中架设一个电子邮件服务器,为本单位用户提供邮件服务。该服务器拥有一个合法的 IP 地址 202.99.11.200 和一个合法的域名 mail.example.com,并且 example.com 的 DNS 的MX记录指向 mail.example.com。

注:为了满足域名需求,example.com 的 DNS 的域数据文件应该包含以下内容:

IN MX 10 mail

mail IN A 202.99.11.200

三. 安装操作系统 RedHat Linux7.3

RedHat Linux7.3 的安装在很多资料中已有详细说明。这里只说一下分区的问题,作为一个邮件系统,主要的磁盘空间用于存储用户的邮件。我们把大部分软件安装在 /usr,而用户收到的邮件存储在 /var,用户处理(删除、移动等)后的邮件存储在 /home。大家要根据自己的情况确定合理的分区方案。

四. 安装 Sendmail

其实上,RedHat Linux7.3 安装完成后,Sendmail 就被安装了。如果没有,可从 RedHat Linux7.3 的第一张安装盘中用RPM包进行安装。接下来我们只对Sendmail进行一些简单的设置。

Sendmail的配置文件主要是 /etc/sendmail.cf。这里,我们需要修改两个地方:

原内容: Cwlocalhost (大约在83行)

修改为: Cwexample.com

作用:定义邮件交换的域

原内容:O deamonPortoptions=Port=smtp,Addr=127.0.0.1 … (大约在260行)

修改为:(将此行注释掉)

作用:此行的作用是只允从本机使用smtp服务,作为一个邮件系统,这显然是不行的。

修改完成后,键入:

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

重启sendmail,使修改生效。

五. 安装IMAP

IMAP 提供 IMAP 及 POP3 两种服务,它们的作用都是提供用户收取信件的接口,这里我们只使用IMAP服务。

我们假设所有要安装的软件都已经下载到 /tmp。本文涉及的命令都以 root 身份执行。

1.解压,安装:

# cd /tmp

# tar zxvf imap-2001a.tar.Z

# cd imap-2001a

# make slx

2.将生成的可执行文件拷贝到/usr/sbin

#cp imapd/imapd /usr/sbin

3.在/ect/xinetd.d下新建文件imap

#vi /etc/xinetd.d/imap

内容为:

# IMAP server at Port 143

service imap

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/sbin/imapd

}

4.重启 xinetd

/ect/rc.d/init.d/xinetd restart

5.测试 imap 服务起来没有

#telnet localhost 143

如果看到欢迎信息,则说明 IMAP 服务器安装成功。注意,先不要删除 IMAP 的安装文件,我们在后面还会用到。

六. 安装 Web mail 支持——Apache、Mysql 和 PHP

这一步,我们要为 Imp 建立 Web 服务器及数据库支持。

1. 安装 MySql

Web mail Imp 将用户设置和通讯录存储在数据库中,我们选用常用的MySql。

1.1解压,配置编译、安装:

# cd /tmp

# tar zxvf mysql-3.23.47.tar.gz

# cd mysql-3.23.47

# ./configure --prefix=/usr/local/mysql

# make

# make install

完成后MySql被安装到/usr/local/mysql。

1.2建立用户mysql及组mysql

#groupadd mysql

#useradd mysql

#passwd mysql

1.3把MySql启动起来:

#cd /usr/local/mysql/bin

# ./mysql_install_db (安装MySql的基本数据库)

# ./safe_mysqld –uroot & (启动MySql并转入后台)

1.4测试MySql

# ./mysql

如果能连接数据库,则MySql安装完成。请注意修改MySql的root密码,以增加安全性。其它操作请参照有关资料。

2. 安装Apache、PHP及PEAR

Horde及Imp 是以PHP编写的,要使它能够运行,必须提供Web服务和PHP脚本语言支持,而PEAR是PHP的功能扩展模块,虽然PHP默认安装时已经安装了PEAR,但Horde需要较新的版本。

2.1解压:

# cd /tmp

# tar zxvf apache-1.3.24.tar.gz

# tar zxvf php-4.2.1.tar.gz

2.2预编译Apache

# cd apache-1.3.24

# ./configure

2.3配置、编译、安装PHP,根据imp的需要,加上相应的参数,可参照相关资料进行修改

# cd ../php-4.2.1

# ./configure --with-mysql=/usr/local/mysql --with-apache=../apache-1.3.24 --with-imap=../imap2001a --with-gettext --with-xml

# make

# make install

2.4配置、编译、安装Apache

# cd ../apache-1.3.24

# ./configure -- prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a

2.5拷贝PHP配置文件到/usr/local/lib

# cd ../php-4.2.1

# cp php.ini-recommended /usr/local/lib

2.6用新版本的PEAR替换旧版本

# cd /usr/local/lib

# mv php php.bak

# cp /tmp/ pear-4.1.0.tar.gz .

# tar zxvf pear-4.1.0.tar.gz

# mv pear-4.1.0 php

# chown root.root –R php

2.7针对PHP修改Apaceh配置文件/usr/local/apache/conf/http.conf

找到如下两行:

# AddType application/x-httpd-php .php

# AddType application/x-httpd-php-source .phps

将注释符去掉,这两行的作用是定义php文档的后缀。

还要修改默认的首页类型,找到:

DirectoryIndex index.htm

改成:

DirectoryIndex index.htm index.php default.htm default.php

2.8启动Apache

# /usr/local/apache/bin/apachectl start

2.9测试Apache和PHP

删除/usr/local/apache/htdocs/下所有文件

# cd /usr/local/apache/htdocs/

# rm –rf *

新建文件test.php,内容为:

找一台能上网的机器,在浏览器地址栏中输入:http://mail.example.com/test.php,如果能看到PHP的有关信息,则说明Apache及PHP安装成功。

七. 安装Web mail

Imp 是http://horde.org/发布的。它是以PHP编写的一个功能完善的Web界面的邮件客户端程序。它用IMAP或POP3协议连接邮件服务器,完成邮件系统的各种功能。更值得一提的是它支持多种语言界面,包括简体中文。

Horde是http://horde.org/发布的Horde Application Framework(应用程序框架),http://horde.org/所发布的所有程序都要以Horde为基础,Imp也不例外。我们首先安装Horde。

1. 安装Horde

1.1拷贝Horde压缩包到Web服务器的根目录并解压

# cd /usr/local/apache/htdocs

# cp /tmp/horde-2.1.tar.gz .

# tar zxvf horde-2.1.tar.gz

# mv horde-2.1 horde

应用补丁:

# cd horde

# cp /tmp/patch-horde-2.0-2.1.gz .

# gunzip patch-horde-2.0-2.1.gz

# patch –p1 1.2为Horde 和Imp准备数据库

确定MySql在运行,我们将在MySql中建立Horde和Imp所需的数据库。利用Horde中一个SQL脚本文件自动完成这项工作,在进行之前,要修改数据库用户的密码。

# cd horde/scripts/db

# vi mysql_create.sql

找到如下内容:

REPLACE INTO user (host, user, password)

VALUES (

'localhost',

'horde',

-- IMPORTANT: Change this password!

password('horde') // 用户密码

);

将斜体部分的内容改成自己的密码,这里假设被改成“xxx”。

建立数据库:

# /usr/local/mysql/bin/mysql < mysql_create.sql

注:如果你为Mysql的root设置了密码,则在上述命令中就要提供密码。

如果成功,则在MySql中建立了名为horde的数据库,此数据库的所有者是horde,密码是“xxx”。

用下面的命令测试数据库是否成功建立:

# mysql -h localhost -u horde -pxxx

mysql>exit

1.3设置Horde

Horde和Imp的设置存储在它们的配置文件中。

拷贝配置文件:

# cd horde/config

# for foo in *.dist; do cp -v $foo `basename $foo .dist`; done

编辑下列文件:

1.3.1 Horde的设置文件horde.php

// 以IMAP作为登录认证

$conf['auth']['driver'] = 'imap';

$conf['auth']['params'] = array();

$conf['auth']['params']['dsn'] = '{localhost/imap:143}INBOX';

// 使用MySql存储用户资料

$conf['prefs']['driver'] = 'sql';

$conf['prefs']['params'] = array();

$conf['prefs']['params']['phptype'] = 'mysql';

$conf['prefs']['params']['hostspec'] = 'localhost'; // 数据库服务器

$conf['prefs']['params']['username'] = 'horde'; // 数据库用户

$conf['prefs']['params']['password'] = 'xxx'; // 建立数据库时设置的密码

$conf['prefs']['params']['database'] = 'horde'; // 数据库

$conf['prefs']['params']['table'] = 'horde_prefs'; // 表

// 使用Sendmail发送邮件

$conf['mailer']['type'] = 'sendmail';

1.3.2 语言设置文件lang.php

$nls['defaults']['language'] = 'zh_CN'; // 默认语言设成简体中文

(完)

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