——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:[email protected] //发信人地址
250 2.1.0 Ok
rcpt to:[email protected] //收信人地址
250 2.1.5 Ok
data //标记开始写信
354 End data with <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: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: from localhost (server.com [127.0.0.1])
by mail.phoenix.com (Postfix) with ESMTP id 87F161C344C
for <[email protected]>; Wed, 8 Feb 2012 06:07:11 +0800 (CST)
Message-Id: <[email protected]>
Date: Wed, 8 Feb 2012 06:07:11 +0800 (CST)
From: [email protected]
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: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: from localhost (server.com [127.0.0.1])
by mail.phoenix.com (Postfix) with ESMTP id 87F161C344C
for <[email protected]>; Wed, 8 Feb 2012 06:07:11 +0800 (CST)
Message-Id: <[email protected]>
Date: Wed, 8 Feb 2012 06:07:11 +0800 (CST)
From: [email protected]
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 <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 [email protected] extmail
Authentication succeeded. //成功提示信息
Authenticated: [email protected] (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 <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后台管理登录界面了
默认管理员账户:[email protected]
默认密码: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
未完,由于篇幅限制,本篇被迫分为上下两篇,给您带来的不便,请您谅解,谢谢!