- 论坛徽章:
- 0
|
Centos5.2搭建Postfix邮件系统
序言:
用了5天的时间,终于现实了我要达到目标.最开始的2天其实已经按着网上的教程现实了本次试验的目标.但是其中很多错误的排查,并没有及时的纪录和思考.以及对整个系统所需要的软件包功能,也没有多少理解.总觉得第一次的试验多少是侥幸成功.糊里糊涂的一次试验.因此,为了在验证一次,加深理解.我又从新建了虚拟机,从新安装操作系统,从新搭建postfix邮件系统.
多哩罗嗦写下这长一个文档,尽可能的纪录下了每一步操作,及产生错误时解决的方法.
从开始对linux的一无所知到搭建起这个系统,算来已经有3,4个月了.当我看到postfix时,这个系统好大,用了如此多的软件包.我想我要把它搭起来,会是一件伟大的事,在本论坛的mail服务器版看了很多很多安装教程,把<POSTFIX权威指南>粗粗的看了一次.看postfix的安装教程似乎不是很困难,可是当我一步一步做下来的时候,几乎每一步都会出错,有的错误一个小时两个小时都解决不了,我想过放弃,太难了.我还对linux还不了解,等以后我了解多了,在搞它.可我又想,这么复杂的一个系统,我要把它拿下,多有成就感.好吧,有错不怕,见一个解决一个,能解决一个是一个,大不了最后失败.
两天的时间,解决着每个出现的错误,解决一个,我就似乎看到成功不远了.最后当我现实了我想要到达的目标时,感觉迷迷糊糊的,什么都没明白,就是解决错误了.于是我想在从来一次吧.做一件事,总的让自己清楚是做了些什么.当然最重要的是把过程记录下来,以后多练习,多总结.总有一天我不会再用一周的时间才能把它搞定.第二次依旧有很多出现了大量错误,加上我边做别记录操作,花了3天时间.
在此次试验过程中,很多的错误都是由于输入的参数和配置错误引起的,仔细要仔细.试验不是为了一点错都不出错就成功的,那样似乎没有任何成就感,而且网上到处都是基本的安装配置教程,学习不是为了按着教程一步不犯错的完成,这样似乎失去了意义,就是要出错,学的就是一种排查和解决错误的能力.
到现在越学,越觉得linux太复杂了,太难了.似乎依旧不得要领,无法入门,写这么多废话,希望能和大家分享和探讨下学习linux方法和经验.欢迎大家批评指正.
在此,感谢网上那些分享教程的朋友,感谢本论坛的热心朋友,虽然我很少提问题,但问的问题,总会获得论坛里热心的朋友回答.
From the Internet,For the Internet.
By Drvial
PDF文档
Postfix安装配置.pdf
(821.72 KB, 下载次数: 1152)
一 系统运行环境
1.1硬件要求
基本上,能够安装linux系统就能够满足硬件的要求…….
1.2运行环境
操作系统为centos 5.2+VMware-workstation6.0.
我使用的VM6虚拟机和Centos5.2做的本次试验.
1.3所需软件
1, Centos 服务器操作系统
2, Postfix 邮件服务器系统的smtp服务器,在邮件服务器系统中充当MTA角色.
3, Mysql 开源数据库,用于存储邮件系统虚拟域,虚拟帐户信息.
4, apache web服务器软件,用于extman对邮件系统的后台管理,extmail的web邮件收发.
5, php extman和extmail需要使用php解析
6, cyrus-sasl 用于实现身份验证的smtp服务器
7, courier-authlib 现实带验证的pop3服务器
8, courier-imap 用于实现pop3,imap收邮件功能
9,extman 用于邮件服务器的后台管理
10,extmail 用于实现webmail
11,DBD-mysql 用于解决依赖关系,extmail将会用到
12,unix-syslog 用于解决依赖关系,extmail将会用到
13,BerkeleyDB 用于提供数据库效率
14, openssl 提供安全的邮件服务器连接 (本次试验未配置此功能)
15, maildrop 用于替代postfix的mta功能,邮件投递代理,将收到的邮件转发到用户的邮箱目录(本次试验未配置此功能)
16,clamav 反病毒工具 (本次试验未配置此功能)
17,SpamAssassin 反垃圾邮件过滤器 (本次试验未配置此功能)
18,amavisd-new 是一个连接MTA和内容检测工具 (本次试验未配置此功能)
二 准备工作
2.1 下载所需要的软件
按照上面给出的地址下载,默认情况,本文所有软件包都放置在/usr/local/src下.所使用的安装包都为源码包.
2.2 禁用服务和软件
默认环境下,有部分服务和软件已被起用及安装到系统里,这些都影响到本系统的安装.所以需要禁止和卸载.
2.2.1禁用selinux
Selinux 是 linux 系统中一个强制性的安全机制,但也带来了不少麻烦,为了避免不必要的麻烦,还是先关了吧。我之前在 Fedora cora 5 上安装邮件服务器时就因为没有关掉 selinux ,而苦恼了一段时间。
[root @test root]# vi /etc/selinux/conifg
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
将 SELINUX=enforcing
改成
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
2.2.2 卸载sendmail
默认安装系统时,sendmail
查看系统是否安装sendmail
[root@mail mysql]# rpm -qa | grep sendmail
sendmail-8.13.8-2.el5
卸载
[root@mail mysql]# rpm -e sendmail
error: Failed dependencies:
/usr/sbin/sendmail is needed by (installed) redhat-lsb-3.1-12.3.EL.el5.centos.i386
smtpdaemon is needed by (installed) mdadm-2.6.4-1.el5.i386
smtpdaemon is needed by (installed) fetchmail-6.3.6-1.1.el5.i386
smtpdaemon is needed by (installed) mutt-1.4.2.2-3.0.2.el5.i386
提示出错,有相关依赖关系,使用--nodeps强制卸载
[root@mail mysql]# rpm -e --nodeps sendmail
warning: /var/log/mail/statistics saved as /var/log/mail/statistics.rpmsave
会提示警告不要管,继续.
2.2.3 卸载httpd
[root@mail bin]# rpm -qa |grep httpd
httpd-2.2.3-11.el5_1.centos.3
[root@mail bin]# rpm -e --nodeps httpd
卸载sasl
[root@mail mysql]# rpm -qa | grep sasl
cyrus-sasl-plain-2.1.22-4
cyrus-sasl-lib-2.1.22-4
cyrus-sasl-2.1.22-4
[root@mail mysql]# rpm -e --nodeps cyrus-sasl-plain cyrus-sasl-lib cyrus-sasl
2.3 创建邮件系统运行时所需要的用户和组
因为安全和管理方面的考虑,一些软件我们不希望其以root用户为属主而运行,甚至有些软件没有为其创建专用用户,安装不能进行.因此,我们要预先创建postfix系统所用到的用户和组.对于centos或redhat等发行版,用命令useradd创建用户时,也就同时创建了一个同名的组.而另外一些linux发行版创建用户时不会创建同名组,这需要单独执行groupadd来创建所需组.
下面是我们需要创建的用户和组,及其说明.
用户名 组名 作用 备注
mysql mysql 数据库mysql运行用户
extmail extmail 虚拟邮件帐号所使用用户及组 uid:501,gid:501
postfix postfix postfix主程序使用帐号和组
postdrop postfix setid_group setgid_group=postdrop
#这里有2个值得注意的地方,他们是extmail用户,组及postdrop.在postfix邮件系统中,有好几个程序是以extmail来运行,postdrop是postfix主配置文件main.cf里标明的, setgid_group=postdrop.
三 安装软件包
3.1 Mysql安装和配置
3.1.1 编译安装mysql
[root@mail /]# cd /usr/local/src
[root@mail src]# ls
apache mysql php postfix
[root@mail src]# cd mysql/
[root@mail mysql]# ls
mysql-5.1.36.tar.gz
[root@mail mysql]# tar –zxvf mysql-5.1.36.tar.gz
[root@mail mysql]# cd mysql-5.1.36
[root@mailmysql-5.1.36]#./configure --prefix=/usr/local/mysql
--enable-thread-safe-client --enable-local-infile --with-charset=gbk --with-low-memory
#我在这里出错了,提示: configure: error: No curses/termcap library found
#google说是缺少ncurses包,挂载安装盘,找到ncurses-devel-5.5-24.20060715.i386.rpm安装
[root@mailmysql-5.1.36]#make
[root@mailmysql-5.1.36]#make install
make[4]: Entering directory `/data0/software/mysql-5.1.34/mysql-test'
#到这里时候会等待很久,我开始以为出错了,强行终止了,google发行已经有前人没耐心犯过错了~
3.1.2 MySQL配置文件
如果你想要设置一个选项文件,使用support-files目录中的一个作为模板。在这个目录中有4个模板文件,是根据
不同机器的内存定制的。
[root@mail mysql-5.1.36]# cp support-files/my-medium.cnf /etc/my.cnf
[root@mail mysql-5.1.36]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
3.1.3设置开机自动启动
[root@mail mysql-5.1.36]# chmod 700 /etc/rc.d/init.d/mysqld
[root@mail mysql-5.1.36]# chkconfig --add mysqld
[root@mail mysql-5.1.36]# chkconfig --level 345 mysqld on
[root@mail mysql-5.1.36]# cd /usr/local/mysql/
3.1.4初始化授权表
用mysql_install_db创建MySQL
[root@mail mysql]# ./bin/mysql_install_db --user=mysql
设定目录访问权限,并设置mysql,root帐号访问权限。
[root@mail mysql]# chown -R root .
[root@mail mysql]# chgrp -R mysql .
[root@mail mysql]# chown -R mysql var
3.1.5 运行mysql
[root@mail mysql]# bin/mysqld_safe --user=mysql &
(如果没有问题的话,应该会出现类似这样的提示:
[1] 42264
#Starting mysqld daemon with databases from /usr/local/mysql/var
如果出现 mysql ended这样的语句,表示Mysql没有正常启动,你可以到log中查找问题,Log文件的通常在 /etc/my.cnf中配置,大多数问题是权限设置不正确引起的.
日志文件路径
mysql安装路径(/usr/local/mysql)./var/主机名.err
我的错误日志路径 /usr/local/mysql/var/mail.drvial.com.err
3.1.6 测试mysql
[root@mail mysql]# bin/mysqladmin ping
mysqld is alive
[root@mail mysql]# bin/mysqladmin version
bin/mysqladmin Ver 8.42 Distrib 5.1.36, for pc-linux-gnu on i686
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Server version 5.1.36-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 5 min 56 sec
Threads: 1 Questions: 2 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second
avg: 0.5
查看3306端口是否打开。要注意在防火墙中开放该端口
[root@mail mysql]# netstat -atln
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
3.1.7设置root密码
默认安装密码为空,为了安全你需要修改密码。
[root@mail mysql]#/usr/local/mysql/bin/mysqladmin –u root password 密码
修改环境变量文件/etc/profile,添加mysql的PATH变量.
[root@mail mysql]#vi /etc/profile
在以下字段添加添加pathmunge /usr/local/mysql/bin
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /usr/local/mysql/bin
也可以做符号连接如下:
[root@mail mysql]#cd bin
[root@mail mysql]#for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done
这样既可以在任何目录路径下,都可以在shell提示符下直接执行/usr/local/mysql/bin下的管理程序.
3.1.8添加连接库
postfix安装时候会用到,否则报错.
[root@mail mysql]#echo “/usr/local/mysql/lib/mysql” >> /etc/ls.so.conf
[root@mail mysql]# ldconfig
Ok!Mysql安装完毕.
3.2 安装apache
3.2.1 编译安装apache
[root@mail src]# cd apache
[root@mail apache]# ls
httpd-2.2.11.tar.gz
[root@mail apache]# tar -zxvf httpd-2.2.11.tar.gz
[root@mail httpd-2.2.11]# ./configure --prefix=/usr/local/apache
--enable-so --enable-rewrite --with-zlib --enable-mods-shared=most
[root@mail httpd-2.2.11]#make
[root@mail httpd-2.2.11]#make install
3.2.2 设置开机自启动
[root@mail apache]# cd /usr/local/apache/bin/
[root@mail bin]# cp apachectl /etc/rc.d/init.d/httpd
[root@mail bin]# chmod 700 /etc/rc.d/init.d/httpd
[root@mail bin]# vi /etc/rc.d/init.d/httpd
在# |||||||||||||||||||| START CONFIGURATION SECTION ||||||||||||||||||||下添加下面三行:
#Comments to support chkconfig on RedHat Linux
#chkconfig: 2345 90 90
#description:http server
注意:前面的#不能少,没有这三行,在使用chkconfig时会提示你:service httpd does not support chkconfig
[root@mail bin]# chkconfig --add httpd
[root@mail bin]# chkconfig --level 345 httpd on
这样,在运行级别345上httpd就可以自动启动了。
对于这个提示:
httpd: Could not determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
只需要编辑httpd.conf,找到ServerName xxxx这一行,去掉前面的注释即可。
3.2.3 配置apache
[root@mail bin]# cd /usr/local/apache/conf
[root@mail conf]# vi httpd.conf
更改user,group为postfix
启动apache
[root@mail conf]#service httpd start
[root@mail apache]# netstat -atln
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 :::80 :::* LIST
ok!apache安装完毕
3.3 安装php
3.3.1 编译安装php
[root@mail apache]# cd /usr/local/src/php
[root@mail php]# tar -zxvf php-5.2.10.tar.gz
[root@mail php]# cd php-5.2.10
[root@mail php-5.2.10]#./configure --prefix=/usr/local/php
--with-apxs2=/usr/local/apache/bin/apxs
--with-mysql=/usr/local/mysql/
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-zlib --with-gd --enable-mbstring=all
#我这里报错
checking for xml2-config path…
configure: error: xml2-config not found. Please check your libxml2 installation.
#google是缺少libxml2-dev包, 挂载安装盘找到libxml2-dev包,并安装.
[root@mail php-5.2.10]#make
[root@mail php-5.2.10]#make install
[root@mail php-5.2.10]# cp php.ini-dist /usr/local/php/lib/php.ini
3.3.2编辑apache使支持php
[root@mail php-5.2.10]#vi /usr/local/apache/conf/httpd.conf
在DirectoryIndex处添加 index.php
DirectoryIndex index.html index.php
在AddType添加
AddType application/x-httpd-php .php
3.3.3 测试apache是否支持pap
[root@mail php-5.2.10]#vi /usr/local/apache/htdocs/index.html
编辑apache/htdocs目录下的index.html
添加如下代码
<?php
Phpinfo();
?>
保存,重命名为index.php
[root@mail php-5.2.10]#mv /usr/local/apache/htdocs/index.html /usr/local/apache/htdocs/index.php
在浏览器输入http://localhost 或者http://ip,确定apache是否以支持php.
Ok,php安装完毕!
3.4 安装phpmyadmin
(这个不是必须,用于管理Mysql数据库)
3.4.1解压拷贝到apache目录下
将所文件解压后拷贝到apache的htdocs目录的某个目录下.
[root@mail php]# tar -zxvf phpMyAdmin-3.2.0.1-all-languages.tar.gz
[root@mail php]# cp -r phpMyAdmin-3.2.0.1-all-languages /usr/local/apache/htdocs/phpMyadmin
[root@mail php]# cd /usr/local/apache/htdocs/phpMyadmin/libraries
phpmyadmin的配置文件是libraries/config.default.php.
[root@mail libraries]# vi config.default.php
3.4.2解决需要一个密语验证的问题
phpmyadmin登录MySQL的方式:
config -- 直接在配置文件中写入一个能登录mysql的帐号和密码,只要浏览这个datamgr目录就可以直接以这个写入配置文件的mysql帐号进行管理mysql的操作。特点是方便,缺点是没有安全性。
http -- 利用web服务器的验证功能,浏览datamgr这个目录前会跳出一个身份验证窗口,只要mysql帐号对得上就可以有datamgr目录的访问权。这样比较安全,不过用cgi或fastcgi的方式配置php将无法使用该功能,因为cgi不会想服务器发送一些验证信息变量。
cookie -- 和http一样也会跳出一个验证窗口,不过这个不是用web服务器的验证功能,直接是php写的一个普通登录窗口,只要浏览器支持cookie就行,21世界的浏览器都应该支持cookie这个基本功能,所以我们一般选择cookie验证方式。
这些字段和config.default.php对应的是
$cfg['Servers'][$i]['auth_type'] = 'cookie'; (valid choices: config, http, HTTP, signon or cookie)
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = ''; // MySQL password (only needed
config要三处都要填完,http填auth_type为http就行了,cookie的话除了填这里,还要填写一个加密用的私钥,往配置文件的上面找.
$cfg['blowfish_secret'] = '111';
blowfish_secret随便填写一些字符就行了,如111.
3.4.3为phpMyadmin安装mcrypt
否则会提示以下警告:无法加载 mcrypt 扩展,请检查您的 PHP 配置
安装步骤详见:
http://hi.baidu.com/drvial/blog/ ... 8ac3df277fb5d3.html
[ 本帖最后由 drvial 于 2009-7-20 18:41 编辑 ] |
|