——LAMP+Postfix+Dovecot+SquirrelMail+Extmail+Extman+SpamAssassin安装笔记

    客,汝知之乎?先,吾慨叹,全源码构建,全功能Mail,难于上青天。余历经廿时许,终克。后,吾复叹,源码邮件,惟手熟尔。汝信乎?现,吾献降Mail秘籍,助卿攻克Mail之蛮夷。

     提前声明:由于文章字数限制,篇幅较长,因此,笔者将文章分为上下两部分,给您带来的不便敬请谅解!

第零章 postfix所需软件包及存放目录

    本文档是基于Redhat5.4(2.6.18-164.el5)来实现postfix邮件服务器的架构,下面列出所需相关软件包。(您可以到http://down.51cto.com/data/373697下载所有的源码包

httpd-2.2.9.tar.gz 安装源码包apache

mysql-5.0.81.tar.gz 安装源码包mysql

php-5.3.7.tar.bz2 安装php软件

postfix-2.8.2.tar.gz postfix主程序

dovecot-1.1.4.tar.gz IMAP和POP3邮件服务器软件

squirrelmail-webmail-1.4.22.tar.gz web界面邮件管理

extman-0.2.5.tar.gz 邮件后台管理程序

extmail-1.0.5.tar.gz web界面邮件管理

courier-authlib-0.62.4.tar.bz2 SMTP发信认证

Unix-Syslog-1.1.tar.gz extmail的倚赖包之一

DBI-1.616.tar.gz extmail的倚赖包之一

DBD-mysql-4.020.tar.gz extmail的倚赖包之一

GD-2.46.tar.gz extman的倚赖包之一

File-Tail-0.99.3.tar.gz extman的倚赖包之一

rrdtool-1.2.23-3.el5.i386.rpm extman的倚赖包之一

rrdtool-perl-1.2.23-3.el5.i386.rpm extman的倚赖包之一

fp-Linux-i686-ws.tar.gz F-Port 杀毒软件软件包

MailScanner-4.84.3-1.rpm.tar.gz MailScanner 扫描调度工具

其它包(可选):

postfix-2.4.6-vda-ng.patch.gz postfix(2.4.6)的补丁包(高版本不需要)

zh_CN-1.4.13-20071220.tar.bz2 汉化包(选作)

将以上必选包上传到服务器的管理员家目录(/root)。(略)

    另须特别注意,本文中所有修改有关文件中,开头出现数字,该数字不需要添加,是行号。

第一章 安装环境准备

1.1 基本准备

1.1.1修改网卡地址

本机的服务器的地址是192.168.10.1/24,其配置过程略。

1.1.2修改DNS指向

[root@phoenix ~]# vim /etc/resolv.conf

nameserver 192.168.101.10

1.1.3 修改主机名称

[root@phoenix ~]# vim /etc/sysconfig/network //可以这样修改

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=mail.phoenix.com

也可以使用以下方法修改

[root@phoenix ~]# hostname

phoenix.com

[root@phoenix ~]# hostname mail.phoenix.com

[root@phoenix ~]# hostname

mail.phoenix.com

[root@phoenix ~]# export hostname

[root@phoenix ~]# init 6 //最好重启

1.1.4 部署yum服务器

后面安装包时会出现依赖性,所以应该建立yum服务器(略)。

1.1.5 安装开发包

想要实现源码安装,必须先要配置好编译环境。使用yum grouplist |less进行查看。

Development Tools --开发工具

Legacy Software Development -- 传统软件开发工具

Development Libraries –开发工具库

如果需要图形。那么以下安装包是需要的。

Kde环境需要安装:

Kde software development

Gnome环境需要安装:

Gnome software development

X software development

[root@server ~]# yum groupinstall "Development Libraries"

[root@server ~]# yum groupinstall "Development Tools"

1.2 部署DNS

1.2.1安装DNS

[root@phoenix ~]# yum install -y bind bind-chroot caching-nameserver

1.2.2修改相关文件

[root@phoenix ~]# cd /var/named/chroot/

[root@phoenix chroot]# cd etc

[root@phoenix etc]# ll

total 16

-rw-r--r-- 1 root root 405 Feb 8 02:08 localtime

-rw-r----- 1 root named 1230 Jul 30 2009 named.caching-nameserver.conf

-rw-r----- 1 root named 955 Jul 30 2009 named.rfc1912.zones

-rw-r----- 1 root named 113 Feb 8 02:28 rndc.key

[root@phoenix etc]# cp named.caching-nameserver.conf named.conf -p //-p参数,同时复制权限等

[root@phoenix etc]# vim named.conf //修改配置文件

14 options {

15 listen-on port 53 { any; };

16 listen-on-v6 port 53 { ::1; };

17 directory "/var/named";

18 dump-file "/var/named/data/cache_dump.db";

19 statistics-file "/var/named/data/named_stats.txt";

20 memstatistics-file "/var/named/data/named_mem_stats.txt";

21

22 // Those options should be used carefully because they disable port

23 // randomization

24 // query-source port 53;

25 // query-source-v6 port 53;

26

27 allow-query { any; };

28 allow-query-cache { any; };

29 };

30logging {

31 channel default_debug {

32 file "data/named.run";

33 severity dynamic;

34 };

35 };

36 view localhost_resolver {

37 match-clients { any; };

38 match-destinations { any; };

39 recursion yes;

40 include "/etc/named.rfc1912.zones";

41 };

[root@phoenix etc]# vim named.rfc1912.zones //修改区域文件

27 zone "phoenix.com" IN {

28 type master;

29 file "phoenix.com.db";

30 allow-update { none; };

31 };

32 zone "10.168.192.in-addr.arpa" IN {

33 type master;

34 file "10.168.192.db";

35 allow-update { none; };

36 };

[root@phoenix etc]# cd ../var/named/

[root@phoenix named]#

[root@phoenix named]# cp -p localhost.zone phoenix.com.db //-p参数复制权限等

[root@phoenix named]# cp -p named.local 10.168.192.db

[root@phoenix named]#

[root@phoenix named]# vim phoenix.com.db //修改正向区域数据库

1 $TTL 86400

2 @ IN SOA ns.phoenix.com. root (

3 42 ; serial (d. adams)

4 3H ; refresh

5 15M ; retry

6 1W ; expiry

7 1D ) ; minimum

8

9 IN NS ns.phoenix.com.

10 ns IN A 192.168.10.1

11 mail IN A 192.168.10.1

12 smtp IN CNAME 192.168.10.1

13 pop3 IN CNAME 192.168.10.1 14

14 @ IN MX 10 mail.phoenix.com.

[root@phoenix named]# vim 10.168.192.db //修改反向区域数据库

$TTL 86400

@ IN SOA localhost. root.localhost. (

1997022700 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

IN NS localhost.

1 IN PTR mail.phoenix.com.

1.2.3重启服务

[root@phoenix named]# service named start

Starting named: [ OK ]

[root@phoenix named]# chkconfig named on

[root@phoenix named]# chkconfig --list |grep named

named 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@phoenix named]#

1.2.4测试

[root@phoenix ~]# nslookup

> set q=any

> ns.phoenix.com

Server: 192.168.10.1

Address: 192.168.10.1#53

Name: ns.phoenix.com

Address: 192.168.10.1

> mail.phoenix.com

Server: 192.168.10.1

Address: 192.168.10.1#53

Name: mail.phoenix.com

Address: 192.168.10.1

> 192.168.10.1

Server: 192.168.10.1

Address: 192.168.10.1#53

1.10.168.192.in-addr.arpa name = mail.phoenix.com.

> exit

[root@phoenix ~]#

第二章 平台结构

2.1安装apache软件:

下面将需要的安装包解压到/usr/local/src/下面以方便统一管理维护

[root@phoenix ~]# tar -zxf httpd-2.2.9.tar.gz -C /usr/local/src

[root@phoenix ~]# cd /usr/local/src/httpd-2.2.9

[root@phoenix httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite

[root@phoenix httpd-2.2.9]#make

[root@phoenix httpd-2.2.9]#make install

这里我们并没有将Suexec编译进apache中去,提到这个的原因是因为后面我们装postfix时候的后台管理extman是通过CGI的方式来调用程序的,如果不启用Suexec的话那么就会限制其他用户调用CGI程序,但考虑到启用Suexec的风险我们在此就不启用它了。

启用方式:--enable-suexec –with-suexec-caller=daemon –with-suexec-docroot=/usr/local/apache2/htdocs

2.2安装mysql软件:

[root@phoenix ~]# useradd -M -s /sbin/nologin mysql

添加mysql用户,如果安装系统时候已经装过mysql会提示用户已存在,建议在安装前先卸载掉系统自带的mysql,卸载完成后必须重启,否则新装的mysql会无法启动,提示错误信息3306端口被占有

[root@phoenix ~]# tar -zxf mysql-5.0.81.tar.gz -C /usr/local/src

[root@phoenix ~]# cd /usr/local/src/mysql-5.0.81/

[root@phoenix mysql-5.0.81]# ./configure --prefix=/usr/local/mysql

[root@phoenix mysql-5.0.81]# make

[root@phoenix mysql-5.0.81]# make install

配置mysql

[root@phoenix mysql-5.0.81]# pwd

/usr/local/src/mysql-5.0.81

[root@phoenix mysql-5.0.81]# cp support-files/my-medium.cnf /etc/my.cnf //复制主配置文件

[root@phoenix mysql-5.0.81]#/usr/local/mysql/bin/mysql_install_db --user=mysql //初始化

[root@phoenix mysql-5.0.81]# chown -R root:mysql /usr/local/mysql

[root@phoenix mysql-5.0.81]# chown -R mysql /usr/local/mysql/var

[root@phoenix mysql-5.0.81]#

[root@phoenix mysql-5.0.81]# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf //添加库文件路径

[root@phoenix mysql-5.0.81]# ldconfig //刷新库文件搜索路径

[root@phoenix mysql-5.0.81]# /usr/local/mysql/bin/mysqld_safe --user=mysql & //后台安全启动 (如果显示启动并且卡住不动按回车)

[root@phoenix mysql-5.0.81]# cd /usr/local/src/mysql-5.0.81/

[root@phoenix mysql-5.0.81]# cp support-files/mysql.server /etc/init.d/mysqld //复制启动脚本

[root@phoenix mysql-5.0.81]# chmod +x /etc/init.d/mysqld //赋予脚本执行权限

[root@phoenix mysql-5.0.81]# chkconfig --add mysqld //添加到系统自动启动服务中

[root@phoenix mysql-5.0.81]# chkconfig mysqld on

[root@phoenix mysql-5.0.81]# chkconfig --list |grep mysqld

mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@phoenix mysql-5.0.81]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile //设置系统全局的环境变量PATH值,方便使用mysql数据库命令

[root@phoenix ~]# service mysqld start

Starting MySQL [ OK ]

[root@phoenix ~]# chkconfig mysqld on

[root@phoenix ~]# chkconfig --list |grep mysqld

mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@phoenix ~]#

[root@phoenix ~]# . /etc/profile

[root@phoenix ~]# mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.0.81-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

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

| Database |

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

| information_schema |

| mysql |

| test |

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

3 rows in set (0.00 sec)

mysql> \q

Bye

[root@phoenix ~]#

2.3安装php软件

[root@phoenix ~]# tar -jxf php-5.3.7.tar.bz2 -C /usr/local/src

[root@phoenix ~]# cd /usr/local/src/php-5.3.7/

[root@phoenix php-5.3.7]# ./configure --prefix=/usr/local/php5 --enable-mbstring --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5

[root@phoenix php-5.3.7]# make

[root@phoenix php-5.3.7]# make test

[root@phoenix php-5.3.7]# make install

[root@phoenix php-5.3.7]# cd /usr/local/src/php-5.3.7/

[root@phoenix php-5.3.7]# cp php.ini-production /usr/local/php5/php.ini //复制配置文件

[root@phoenix php-5.3.7]# vim /usr/local/apache2/conf/httpd.conf //修改apache服务的主配置文件使其支持php

53 LoadModule php5_module modules/libphp5.so //确认这行的存在,如果没有就重新编译php

310 AddType application/x-httpd-php .php //添加这行记录

167 DirectoryIndex index.html index.php // 在这行添加关于php格式的首页

2.4测试php是否与apache整合成功

[root@phoenix ~]# /usr/local/apache2/bin/apachectl start

[root@phoenix ~]# netstat -tupln |grep 80

tcp 0 0 :::80 :::* LISTEN 14620/httpd

[root@phoenix ~]# vim /usr/local/apache2/htdocs/index.php

<?php

phpinfo();

?>

使用客户端测试

 

 

Mysql测试

[root@phoenix ~]# cd /usr/local/apache2/htdocs/

[root@phoenix htdocs]# ll

total 28

-rw-r--r-- 1 root root 2205 Dec 15 2005 apache_pb22_ani.gif

-rw-r--r-- 1 root root 2410 Dec 15 2005 apache_pb22.gif

-rw-r--r-- 1 root root 1502 Dec 15 2005 apache_pb22.png

-rw-r--r-- 1 root root 2326 Nov 21 2004 apache_pb.gif

-rw-r--r-- 1 root root 1385 Nov 21 2004 apache_pb.png

-rw-r--r-- 1 root root 44 Nov 21 2004 index.html

-rw-r--r-- 1 root root 20 Feb 8 04:17 index.php

[root@phoenix htdocs]# vim index.php

<?php

$link=mysql_connect('localhost' , 'test', '');

If (!$link) echo "Fail!!!";

else echo "Success!!!";

mysql_close();

?>

使用客户端进行测试

 

第三章 安装postfix软件

3.1安装postfix之前首先停止掉系统自带的sendmail软件

[root@phoenix ~]# service sendmail stop

Shutting down sm-client: [ OK ]

Shutting down sendmail: [ OK ]

[root@phoenix ~]# chkconfig --level 35 sendmail off

[root@phoenix ~]#

3.2编译安装postfix软件

[root@phoenix ~]# groupadd -g 1200 postdrop

[root@phoenix ~]# groupadd -g 1000 postfix

[root@phoenix ~]# useradd -M -u 1000 -g postfix -G postdrop -s /sbin/nologin postfix // 不创建宿主目录 附属组

[root@phoenix ~]# tar zxf postfix-2.8.2.tar.gz -C /usr/local/src

如果是2.6版本需要cp postfix-2.4.6-vda-ng.path.gz /usr/local/src 补丁文件,用以支持虚拟用户设置配额

#cd /usr/local/src

#gunzip postfix-2.4.6-vda-ng.path.gz

#cd postfix-2.4.6

#path -p1 <../postfix-2.4.6-vda-ng.path.gz 打补丁(注意此处-p1,后面是数字1而不是字母l)

 

  

以上显示表示补丁已经打上。

[root@phoenix ~]#cd /usr/local/src/postfix-2.8.2/

[root@phoenix postfix-2.8.2]# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH-DUSE_CYRUS_SASL -I/usr/include/sasl' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2'

[root@phoenix postfix-2.8.2]# make

[root@phoenix postfix-2.8.2]# make install

安装过程中会出现互动提问,直接选择默认设置即可。

 

第四章 配置postfix

4.1 postfix主配文件修改

[root@phoenix ~]# vim /etc/postfix/main.cf

113 inet_interfaces = all //默认设置

75 myhostname = mail.phoenix.com //主机名

83 mydomain = phoenix.com //邮件域名

99 myorigin = $mydomain //外发邮件时发件人地址中的邮件域名

164 mydestination = $mydomain,$myhostname //可接收的邮件地址中的域名

415 home_mailbox = Maildir/ //邮件存储位置格式

[root@phoenix ~]# postfix check

[root@phoenix ~]# postfix start

postfix/postfix-script: starting the Postfix mail system

[root@phoenix ~]#

4.2 Smtp发送邮件测试

邮件本地账户管理

[root@phoenix ~]# useradd -g mailusers -s /sbin/nologin phoenix

[root@phoenix ~]# useradd -g mailusers -s /sbin/nologin test

[root@phoenix ~]# passwd phoenix

Changing password for user phoenix.

New UNIX password:

BAD PASSWORD: it is WAY too short

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

[root@phoenix ~]# passwd test

Changing password for user test.

New UNIX password:

BAD PASSWORD: it is WAY too short

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

[root@phoenix ~]#

SMTP发送邮件测试

[root@phoenix ~]# telnet localhost 25 //连接本地的SMPT端口

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 mail.phoenix.com ESMTP Postfix

EHLO localhost //宣告客户端主机地址

250-mail.phoenix.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

mail from:phoenix@phoenix.com //发信人地址

250 2.1.0 Ok

rcpt to:test@phoenix.com //收信人地址

250 2.1.5 Ok

data //标记开始写信

354 End data with &lt;CR><LF>.<CR><LF>

hello! I am phoenix.

. //“点”表示信件结束

250 2.0.0 Ok: queued as 87F161C344C

quit

221 2.0.0 Bye

Connection closed by foreign host.

[root@phoenix ~]#

查看接收到的邮件

[root@phoenix ~]#

cat /home/test/Maildir/new/1328652472.V802Ic5e1aM796298.mail.phoenix.com //cat /home/test/Maildir/new/ 后按tab键

Return-Path: <phoenix@phoenix.com>

X-Original-To: test@phoenix.com

Delivered-To: test@phoenix.com

Received: from localhost (server.com [127.0.0.1])

by mail.phoenix.com (Postfix) with ESMTP id 87F161C344C

for <test@phoenix.com>; Wed, 8 Feb 2012 06:07:11 +0800 (CST)

Message-Id: <20120207220727.87F161C344C@mail.phoenix.com>

Date: Wed, 8 Feb 2012 06:07:11 +0800 (CST)

From: phoenix@phoenix.com

hello! I am phoenix.

[root@phoenix ~]#

可以看见刚才发的那封邮件,说明SMTP没有问题。

第五章 Dovecot 邮局软件安装(提供pop3/imap4协议)

5.1安装Dovecot

[root@phoenix ~]# useradd -M -s /sbin/nologin dovecot

[root@phoenix ~]# tar -zxvf dovecot-1.1.4.tar.gz -C /usr/local/src

[root@phoenix ~]# cd /usr/local/src/dovecot-1.1.4/

[root@phoenix dovecot-1.1.4]# ./configure --sysconfdir=/etc --with-mysql

[root@phoenix dovecot-1.1.4]# make

[root@phoenix dovecot-1.1.4]# make install

5.2安装完成,配置

[root@phoenix dovecot-1.1.4]# cp /etc/dovecot-example.conf /etc/dovecot.conf //复制主配置文件

[root@phoenix dovecot-1.1.4]# vim /etc/dovecot.conf

87 ssl_disable = yes //禁用SSL机制

23 protocols = imap pop3 // 指定邮局协议

47 disable_plaintext_auth = no //允许明文密码认证

208 mail_location = maildir:~/Maildir //设置邮件存储格式和位置

[root@phoenix dovecot-1.1.4]# vim /etc/pam.d/dovecot //创建pam认证文件

1 auth required pam_nologin.so

2 auth include system-auth

3 account include system-auth

4 session include system-auth

[root@phoenix ~]# /usr/local/sbin/dovecot -c /etc/dovecot.conf //启动

5.3 POP3邮件接收测试

[root@phoenix ~]# telnet localhost 110

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

+OK Dovecot ready.

user test

+OK

pass 123

+OK Logged in.

list

+OK 1 messages:

1 429.

retr 1

+OK 429 octets

Return-Path: <phoenix@phoenix.com>

X-Original-To: test@phoenix.com

Delivered-To: test@phoenix.com

Received: from localhost (server.com [127.0.0.1])

by mail.phoenix.com (Postfix) with ESMTP id 87F161C344C

for <test@phoenix.com>; Wed, 8 Feb 2012 06:07:11 +0800 (CST)

Message-Id: <20120207220727.87F161C344C@mail.phoenix.com>

Date: Wed, 8 Feb 2012 06:07:11 +0800 (CST)

From: phoenix@phoenix.com

hello! I am phoenix..

quit

+OK Logging out.

Connection closed by foreign host.

[root@phoenix ~]#

下面显示邮件内容,测试完成

第六章 安装Webmail软件

6.1 squirrelmail安装

[root@phoenix ~]# tar -zxf squirrelmail-webmail-1.4.22.tar.gz -C /usr/local/apache2/htdocs

[root@phoenix ~]# cd /usr/local/apache2/htdocs/

[root@phoenix htdocs]# mv squirrelmail-webmail-1.4.22 webmail

6.2 配置webmail

[root@phoenix htdocs]# cd /usr/local/apache2/htdocs/webmail

[root@phoenix webmail]# mkdir -p attach data

[root@phoenix webmail]# chown -R daemon:daemon attach/ data/

[root@phoenix webmail]# chmod 730 attach/

[root@phoenix webmail]# cp config/config_default.php config/config.php //创建配置文件

[root@phoenix webmail]# vim config/config.php

118 $domain = 'phoenix.com';

146 $smtpServerAddress = 'localhost'; //设置发信服务器地址

151 $smtpPort = 25; //设置发信服务器端口

231 $imap_server_type = 'dovecot'; // 设置收信服务器软件

210 $imapPort = 143; //设置收信服务器端口

499 $data_dir = '/usr/local/apache2/htdocs/webmail/data/';

517 $attachment_dir = '/usr/local/apache2/htdocs/webmail/attach/';

[root@phoenix webmail]# /usr/local/apache2/bin/apachectl restart

[root@phoenix webmail]#

客户端IE地址栏中输入 http://mail.phoenix.com/webmail (前提mail.phoenix.com可以被解析,否则用ip) 

 

 

第七章 初始化extman软件

7.1 数据库脚本

[root@mail ~]# service mysqld restart

Shutting down MySQL. [ OK ]

Starting MySQL. [ OK ]

[root@mail ~]#

[root@mail ~]# tar -zxf extman-0.2.5.tar.gz -C /usr/local/src

[root@mail ~]# cd /usr/local/src/extman-0.2.5/docs/

[root@mail docs]# mysql -u root -p < extmail.sql

Enter password:

[root@mail docs]#

[root@mail docs]# mysql -u root -p &lt;init.sql

Enter password:

[root@mail docs]# //脚本导入数据库的时候会询问密码,默认情况下root用户密码为空

第八章 配置 Postfix

[root@mail ~]# postconf -m |grep mysql

mysql

[root@mail ~]# //返回值有mysql,说明可以支持mysql 数据库的查询表

8.1 修改配置文件

[root@mail ~]# vim /etc/postfix/main.cf

164 #mydestination = $mydomain,$myhostname //该行需要注释掉

180 virtual_mailbox_base = /mailbox //指定虚拟邮箱存储目录的路径起点

176 virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

//指定虚拟邮件用户对应的别名文件位置

177 virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

//指定记录虚拟邮箱地址与存储位置对应关系的映射文件位置

274 virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

//设置postfix服务器可以接收的虚拟邮件域的域名

170 virtual_uid_maps = static:1000 //设置所有虚拟邮件用户映射的本地用户的UID号

171 virtual_gid_maps = static:1000 //设置所有虚拟邮件用户映射的本地组的GID 号

[root@mail ~]# cd /usr/local/src/extman-0.2.5/docs

[root@mail docs]# cp mysql_virtual_* /etc/postfix/

[root@mail docs]# //在上面的三行配置中指定了这三个文件

第九章 虚拟用户设置SMTP发信认证

9.1 软件安装

注意:确认系统中的rpm格式的mysql 软件被卸载

[root@mail ~]# tar -jxf courier-authlib-0.62.4.tar.bz2 -C /usr/local/src

[root@mail ~]# cd /usr/local/src/courier-authlib-0.62.4/

[root@mail courier-authlib-0.62.4]#

./configure --prefix=/usr/local/courier-authlib --without-stdheaderdir --with-authmysql --with-redhat --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql

[root@mail courier-authlib-0.62.4]# make

[root@mail courier-authlib-0.62.4]# make install

[root@mail courier-authlib-0.62.4]# make install-configure //生成默认配置文件authmysqlrc 和 authdaemonrc

9.2 添加courier-authlib的库文件路径

[root@mail ~]# vim /etc/ld.so.conf

/usr/local/courier-authlib/lib/courier-authlib

[root@mail ~]# ldconfig

9.3 修改authdaemonrc主配置文件

[root@mail ~]# cd /usr/local/courier-authlib/etc/authlib

[root@mail authlib]# cp authdaemonrc authdaemonrc.bak

[root@mail authlib]# vim authdaemonrc

27 authmodulelist="authmysql"

34 authmodulelistorig="authmysql"

[root@mail authlib]#

chmod -R 755 /usr/local/courier-authlib/var/spool/authdaemon

9.4 修改authmysqlrc 文件

[root@mail authlib]# cd /usr/local/courier-authlib/etc/authlib

[root@mail authlib]# cp authmysqlrc authmysqlrc.bak

[root@mail authlib]# vim authmysqlrc

26 MYSQL_SERVER localhost // 数据库服务器位置

27 MYSQL_USERNAME extmail // 数据库管理员账户

28 MYSQL_PASSWORD extmail // 数据库管理员账户密码

49 MYSQL_SOCKET /tmp/mysql.sock //文件位置

68 MYSQL_DATABASE extmail //虚拟用户数据库

83 MYSQL_USER_TABLE mailbox //从mailbox表获得邮件账户信息

92 MYSQL_CRYPT_PWFIELD password //从password字段获得账户密码

113 MYSQL_UID_FIELD uidnumber //从uidnumber字段获得映射的本地用户UID

119 MYSQL_GID_FIELD gidnumber //从gidnumber字段获得映射的本地组GID

128 MYSQL_LOGIN_FIELD username //从username字段获得账户名称,带@后缀

133 MYSQL_HOME_FIELD concat('/mailbox/',homedir) //合并出用户的宿主目录路径

139 MYSQL_NAME_FIELD name //从name 字段获得账户名称,不带@后缀

151 MYSQL_MAILDIR_FIELD concat('/mailbox/',maildir) //合并出用户的邮件存储路径

9.5 复制脚本,启动服务

[root@mail ~]# cd /usr/local/src/courier-authlib-0.62.4/

[root@mail courier-authlib-0.62.4]#

cp courier-authlib.sysvinit /etc/init.d/courier-authlib

[root@mail courier-authlib-0.62.4]#

chmod 755 /etc/rc.d/init.d/courier-authlib

[root@mail courier-authlib-0.62.4]# chkconfig --level 35 courier-authlib on

[root@mail courier-authlib-0.62.4]# service courier-authlib start

Starting Courier authentication services: authdaemond

[root@mail courier-authlib-0.62.4]#

第十章 修改Cyrus sasl 设置

[root@mail ~]# vim /usr/lib/sasl2/smtpd.conf

1 pwcheck_method:authdaemond

2 authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

第十一章 修改Dovecot配置

11.1修改Dovecot

[root@mail ~]# vim /etc/dovecot.conf

214 mail_location = maildir:/mailbox/%d/%n/Maildir

…………………………………………………………………….省略号表示文件中原有的内容

790 auth default {

795 mechanisms = plain

899 passdb sql {

901 args = /etc/dovecot-mysql.conf

902 }

962 userdb sql {

964 args = /etc/dovecot-mysql.conf

965 }

……………………………………………………………………...省略号表示文件中原有内容

11.2 建立数据查询配置文件

[root@mail ~]# vim /etc/dovecot-mysql.conf

1 driver = mysql

2 connect = host=localhost dbname=extmail user=extmail password=extmail

3 default_pass_scheme = CRYPT //数据库中存储的密码串的加密算法

4 password_query = SELECT username AS user,password AS password FROM mailbox WHERE u sername = '%u' //查询用户密码的语句

5 user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHER E username = '%u' //查询用户身份语句

 

第十二章 建立虚拟用户

12.1 建立邮箱目录并调整权限

[root@mail ~]# mkdir -p /mailbox/extmail.org/postmaster/Maildir

[root@mail ~]# cd /mailbox/extmail.org/postmaster/Maildir

[root@mail Maildir]# chown -R postfix:postfix /mailbox

[root@mail Maildir]# dovecot //启动服务

12.2 虚拟用户测试

确认authlib服务

[root@mail Maildir]# /usr/local/courier-authlib/sbin/authtest -s login postmaster@extmail.org extmail

Authentication succeeded. //成功提示信息

Authenticated: postmaster@extmail.org (uid 1000, gid 1000)

Home Directory: /mailbox/extmail.org/postmaster

Maildir: (none)

Quota: (none)

Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0

Cleartext Password: extmail

Options: (none)

[root@mail Maildir]#

第十三章 ExtMail平台

基于Perl 语言开发的中文Webmail管理平台

套件:ExtMail --Web 界面的邮件操作

Extman –Web 界面的邮件系统管理

13.1平台安装

3个倚赖包

[root@mail ~]# tar -zxf Unix-Syslog-1.1.tar.gz -C /usr/local/src

[root@mail ~]# cd /usr/local/src/Unix-Syslog-1.1/

[root@mail Unix-Syslog-1.1]#

[root@mail Unix-Syslog-1.1]# perl Makefile.PL

[root@mail Unix-Syslog-1.1]# make

[root@mail Unix-Syslog-1.1]# make install

[root@mail ~]# tar -zxf DBI-1.616.tar.gz -C /usr/local/src

[root@mail ~]# cd /usr/local/src/DBI-1.616/

[root@mail DBI-1.616]# perl Makefile.PL

[root@mail DBI-1.616]# make

[root@mail DBI-1.616]# make install

 

[root@mail ~]# tar -zxf DBD-mysql-4.020.tar.gz -C /usr/local/src

[root@mail ~]# cd /usr/local/src/DBD-mysql-4.020/

[root@mail DBD-mysql-4.020]# perl Makefile.PL

[root@mail DBD-mysql-4.020]# make

[root@mail DBD-mysql-4.020]# make install

注意以上三个包在编译安装过程可能会提示 警告信息隐式函数 计算出的变量值未被使用等,只要没有error信息就一切ok

安装ExtMail

[root@mail ~]# tar -zxf extmail-1.0.5.tar.gz -C /usr/local/apache2/htdocs

[root@mail ~]# cd /usr/local/apache2/htdocs

[root@mail htdocs]# mv extmail-1.0.5 extmail

[root@mail htdocs]# cd extmail

[root@mail extmail]# chown -R postfix:postfix cgi

[root@mail extmail]# cp webmail.cf.default webmail.cf

[root@mail extmail]#

13.2 修改配置文件

[root@mail ~]# cd /usr/local/apache2/htdocs/extmail

[root@mail extmail]# vim webmail.cf

2 SYS_CONFIG = /usr/local/apache2/htdocs/extmail/ // 程序根目录

5 SYS_LANGDIR = /usr/local/apache2/htdocs/extmail/lang //语言包文件目录

8 SYS_TEMPLDIR = /usr/local/apache2/htdocs/extmail/html //系统模版目录

112 SYS_MAILDIR_BASE = /mailbox //邮件存储目录

124 SYS_MYSQL_USER = extmail //访问mysql数据库的用户

125 SYS_MYSQL_PASS = extmail //访问mysql数据库的用户的密码

126 SYS_MYSQL_DB = extmail //使用数据库的名称

127 SYS_MYSQL_HOST = localhost //数据库服务器地址

128 SYS_MYSQL_SOCKET = /tmp/mysql.sock //数据库套接文件位置

13.3 修改apache服务,添加虚拟主机

[root@mail extmail]# vim /usr/local/apache2/conf/httpd.conf

411 NameVirtualHost *:80

412 &lt;VirtualHost *:80>

413 ServerName mail.phoenix.com

414 DocumentRoot /usr/local/apache2/htdocs/extmail/html/

415 ScriptAlias /extmail/cgi/ "/usr/local/apache2/htdocs/extmail/cgi/"

416 Alias /extmail "/usr/local/apache2/htdocs/extmail/html/"

417 </VirtualHost>

66 User postfix // 找到 User 该用户为postfix

67 Group postfix //找到 Group 该组为postfix

这里由于前面我们并没有启用Suexec 所以我们没有在虚拟主机中添加 SuexecUerGroup postfix postfix

[root@mail extmail]# /usr/local/apache2/bin/apachectl restart

[root@mail extmail]#

13.4 Extmail无法访问问题原因

到这一步很多网上的文档都会说这时候只要在客户端访问 http://mail.phoenix.com 就可以看到ExtMail的登录界面,但是经过我很多次实践改动配置得到的结果都是访问页面不存在404的错误提示页面,一度我曾认为可能是我之前编译的那三个倚赖包有问题,或者是我的PHP有问题,以及cgi权限问题都想到但是结果依然是404页面不存在,但是我可以很正常的看到访问http://mail.phoenix.com时候页面确实是跳转到了http://mail.phoenix.com/extmail/cgi/index.cgi这个目录,而且我这个目录中文件确实存在,没有任何问题,经过我多次尝试终于找到原因如果要成功的访问到这个页面就必须把Extman装上,并且在apache配置文件中写入extman的路径这样我终于如愿以偿的看到了期望已久的ExtMail的登录界面。

下面我们开始安装Extman

第十四章 Extman平台

14.1 安装包

4个倚赖包

[root@mail ~]# tar -zxf GD-2.46.tar.gz -C /usr/local/src

[root@mail ~]# cd /usr/local/src/GD-2.46/

[root@mail GD-2.46]# perl Makefile.PL

[root@mail GD-2.46]# make

[root@mail GD-2.46]# make install

[root@mail ~]# tar -zxf File-Tail-0.99.3.tar.gz -C /usr/local/src

[root@mail ~]# cd /usr/local/src/File-Tail-0.99.3/

[root@mail File-Tail-0.99.3]# perl Makefile.PL

[root@mail File-Tail-0.99.3]# make

[root@mail File-Tail-0.99.3]# make install

[root@mail ~]# rpm -ivh rrdtool-1.2.23-3.el5.i386.rpm

[root@mail ~]# rpm -ivh rrdtool-perl-1.2.23-3.el5.i386.rpm

Extman 套件

[root@mail ~]# tar -zxf extman-0.2.5.tar.gz -C /usr/local/apache2/htdocs

[root@mail ~]# cd /usr/local/apache2/htdocs

[root@mail htdocs]# mv extman-0.2.5 extman

[root@mail htdocs]# cd extman

[root@mail extman]# chown -R postfix:postfix cgi

[root@mail extman]# mkdir /tmp/extman //临时回话保存目录

[root@mail extman]# chown -R postfix:postfix /tmp/extman

14.2 修改配置文件

[root@mail extman]# vim /usr/local/apache2/htdocs/extman/webman.cf

2 SYS_CONFIG = /usr/local/apache2/htdocs/extman/ //程序根目录

5 SYS_LANGDIR = /usr/local/apache2/htdocs/extman/lang //语言包文件目录

8 SYS_TEMPLDIR = /usr/local/apache2/htdocs/extman/html //系统模版目录

12 SYS_MAILDIR_BASE = /mailbox // 邮件数据存放路径

127 SYS_MYSQL_USER = webman //访问mysql数据库的用户

128 SYS_MYSQL_PASS = webman //访问mysql数据库的用户的密码

129 SYS_MYSQL_DB = extmail // 使用的数据库名称

130 SYS_MYSQL_HOST = localhost //数据库服务器地址

131 SYS_MYSQL_SOCKET = /tmp/mysql.sock //数据库套接文件位置

14.3 调整apache主配文件。添加extman相关目录别名

[root@mail extman]# vim /usr/local/apache2/conf/httpd.conf

411 NameVirtualHost *:80

412 <VirtualHost *:80>

413 ServerName mail.phoenix.com

414 DocumentRoot /usr/local/apache2/htdocs/extmail/html/

415 ScriptAlias /extmail/cgi/ "/usr/local/apache2/htdocs/extmail/cgi/"

416 Alias /extmail "/usr/local/apache2/htdocs/extmail/html/"

417 ScriptAlias /extman/cgi "/usr/local/apache2/htdocs/extman/cgi/"

418 Alias /extman "/usr/local/apache2/htdocs/extman/html/"

419 </VirtualHost>

[root@mail extman]# /usr/local/apache2/bin/apachectl restart

14.4 现在在客户端访问

http://mail.phoenix.com 就可以看见ExtMail的登录界面了。

 

 

在客户端访问http://mail.phoenix.com/extman 就可以看见Extman后台管理登录界面了

默认管理员账户:root@extmail.org

默认密码:extmail*123*

 

 

如果您出现校验码错误,就修改

[root@mail extman]# vim /usr/local/apache2/htdocs/extman/webman.cf

21 SYS_CAPTCHA_ON = 0

[root@mail extman]# /usr/local/apache2/bin/apachectl restart

 

 未完,由于篇幅限制,本篇被迫分为上下两篇,给您带来的不便,请您谅解,谢谢!