RedHat Enterprise Linux 5.4 搭建完整Postfix 邮件服务器

导师让搭建一个邮件服务器,上网搜了一些教程,但是都有错误,在我三天半的努力下终于搭建完毕,向写那些教程的前辈表示感谢,以下是我的总结。

(authmysql.so和athlib连接mysql的配置文件中用户名之后的空格千万注意,害我不浅阿)

一.安装 postfix 邮件服务器所需的软件列表:(一下软件用新点版本也行)
RedHat as 4.0
RedHat 高级服务器操作系统
2、Postfix
这一个是自然少不了的,邮件服务器系统的 smtp 服务器,在邮件服务器系统中充当MTA角色。软件版本:postfix-2.4.5
下载地址:

3、mysql
最优秀的开源数据库之一,用于存储虚拟域、虚拟账户信息。使用的版本: mysql-5.0.45
下载地址:

4、apache
最优秀的 web 服务器软件之一,用于 extman 的后台管理,extmail 的 web 邮件收发。
软件版本:httpd-2.2.4
下载地址:

5、php
Extman & extmail 需要使用 php.作用版本:php-5.2.3
下载地址:

6、cyrus-sasl
用于实现身份验证的smtp 服务器,使用版本:cyrus-sasl-2.1.22
下载地址:

7、courier-authlib
实现带验证的 pop3 服务器,使用版本:courier-authlib-0.58
下载地址:

8、courier-imap
用于实现 pop3、imap 收邮件功能,使用版本: courier-imap-4.1.0
下载地址:
...6&Resourceid=77
9、openssl
提供安全的邮件服务器连接,使用版本:openssl-0.9.8e
下载地址:

10、extman
用于邮件服务器的后台管理,使用版本:extman-0[1].2.2
下载地址:

11、extmail
用于实现 webmail.使用版本:extmail-1[1].0.2
下载地址:

12、DBD-Mysql
用于解决依赖关系,extmail 将会用到,使用版本:DBD-Mysql-3.0002_4
下载地址:

13、Unix-Syslog
用于解决依赖关系,extmail 将会用到,使用版本:Unix-Syslog-0.100
下载地址:

14、BerkeleyDB
使用版本:BerkeleyDB-4.5.20
下载地址:
Oracle.com/technology ...keley-db/index.html

二.邮件服务器系统的安装
本文约定:默认情况下,本文中的所有软件的压缩安装文件都放在 /root 目录下,除非特别说明的情况下。


禁用 selinux
[root @ 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 isenforced.
#      permissive - SELinux prints warnings instead ofenforcing.
#      disabled - SELinux is fully disabled.
将 SELINUX=enforcing
改成
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
#      targeted - Only targeted network daemons areprotected.
#      strict - Full SELinux protection.
SELINUXTYPE=targeted
Selinux 是 linux 系统中一个强制性的安全机制,但也带来了不少麻烦,为了避免不必要的麻烦,还是先关了吧。我之前在Fedora cora 5 上安装邮件服务器时就因为没有关掉 selinux ,而苦恼了一段时间。


 

1.安装 mysql服务器(这才是真正的数据库)

下载一个MySQL-server-community-5.1.44-1.rhel5.i386.rpm
[root @ root]#rpm -vihMySQL-server-community-5.1.44-1.rhel5.i386.rpm

安装 mysql客户端(提供mysql等命令和库文件的)
添加虚帐户mysql 并同时产生一个 mysql 组。注:如果系统中已有就不必添加了。
[root @ root]#groupadd  mysql
[root @ root]# useradd -g mysql mysql
解压缩mysql 安装文件
[root @ ]#tar xvzf mysql-5.0.45-linux-i686.tar.gz
[root @ ]#cd mysql-5.0.45
[root @ ]# ./configure --prefix=/usr/local/mysql

[root @ ]# make

[root @ ]# make install

[root @ ]# chown -R mysql:mysql /var/lib/mysql
初始化 mysql 数据库
[root @testlocal]#./script/mysql_install_db  —user=mysql&
修改目录所有权限为mysql 所有
[root @ ]#chown -R root .
[root @ ]#chown -R mysql:mysql data
[root @ ]#chgrp -R mysql .
       注:将/var/lib/mysql/mysql.sock链接到 /tmp 目录下,并保持名称不变,如果不这样做的话,有时候可能mysql 启动时会报错,如 ERROR 200:Can’tconnect to local MYSQL server throuht socket /tmp/mysql.sock.
[root @ ]#ln -s /var/lib/mysql/mysql.sock /tmp/
启动测试mysql
[root @ ]#/usr/local/mysql/bin/safe_mysqld —user= mysql&
复制一个编译目录的脚本,以使 mysql 每次启动时都能自动运行
[root @ ]#cp support-files/mysql.server/etc/rc.d/init.d/mysqld
[root @ ]#chmod 700 /etc/init.d/mysqld
[root @ ]#chkconfig —add mysqld
[root @ ]#chkconfig —level 35 mysqld on
[root @ ] # echo “/usr/local/mysql/lib/mysql”>> /etc/ls.so.conf
[root @ ] # ldconfig
说明:在用 /usr/local/mysql/bin/mysqld_safe —user=mysql& 命令启动测试 mysql 时,总是无法启动mysql ,自然也无法进入 mysql,开始还以为是自己操作失误,然后又重新解压mysql安装文件,重新安装,依然如此,甚是郁闷,最后查看日志/var/log/mysqld.log,显示:
070829  9:04:08 [ERROR]/usr/local/mysql/bin/mysqld: Can't create/write tofile'/var/run/mysqld/mysqld.pid' (Errcode: 13)
070829  9:04:08 [ERROR] Can'tstart server: can't create PID file: Permission denied
070829 09:04:08  mysqldended
       根据日志提示,查看/var/run/mysqld 目录,发现该目录下并没有mysqld.pid文件,查看该目录的文件权限,发现用户所有者即不属于root ,也不属于mysql ,文件所有者显示为27。据此推断,可能是mysql启动时会向此文件夹内写一些东西,但 mysql 的进程用户mysql 却没有权限写,导致mysql 无法启动,用touch/var/run/mysqld/mysqld.pid 命令创建mysql 所需要文件,chown -Rmysql:mysql/var/run/mysqld将/var/run/mysqld 的目录权限转给mysql。再次用/usr/local/mysql/bin/mysqld_safe —user=mysql& 启动mysql ,没有再报错,用netatst -tlnup 命令,查看mysql的端口号3306是否启动,已经可以看到3306端口处于监听状态,mysql启动成功,用/usr/lcoal/mysql/bin/mysql 进入mysql 数据库,没问题。至此 mysql安装成功。此问题只在 Fedora cora 5 中发现,我在 RHEL5.4 中安装 mysql 没有发现这个问题。


 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://127.0.0.1/wyyjgd.html