虚拟用户和域名与Postfix,Courier和MySQL(CentOS 5.1)
版本1.0
作者:Falko Timme
本教程是Falko Timme的版权所有(c)2007。 它来自Christoph Haas的教程,您可以在http://workaround.org找到。 您可以根据知识共享许可2.5或更高版本免费使用本教程。
本文档介绍如何安装基于虚拟用户和域的Postfix邮件服务器,即MySQL数据库中的用户和域。 我还将展示Courier(Courier-POP3,Courier-IMAP)的安装和配置,以便Courier可以对Postfix使用的相同的MySQL数据库进行身份验证。
所得到的Postfix服务器能够使用SMTP-AUTH和TLS和配额 (默认情况下,配额不会内置到Postfix中),我将显示如何适当修补Postfix。 密码以加密形式存储在数据库中(我发现大多数文档都是处理明文密码,这是一个安全风险)。 除此之外,本教程还介绍了Amavisd , SpamAssassin和ClamAV的安装 ,以便电子邮件扫描垃圾邮件和病毒。
这种“虚拟”设置(MySQL数据库中的虚拟用户和域)的优点是,它比基于“真实”系统用户的设置性能要好得多。 通过此虚拟设置,您的邮件服务器可以处理数千个域和用户。 此外,更容易管理,因为您只需在添加新用户/域或编辑现有的MySQL数据库时处理MySQL数据库。 没有更多的postmap命令来创建数据库文件,不需要再重新加载Postfix等。对于MySQL数据库的管理,您可以使用基于Web的工具,如phpMyAdmin,它也将安装在这个howto中。 第三个优点是用户使用电子邮件地址作为用户名(而不是用户名+电子邮件地址),这更容易理解和记住。
本教程基于CentOS 5.1(i386)。 您应该已经设置了一个基本的CentOS系统,如下所述: http : //www.youcl.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig和 。 此外,您应该确保防火墙已关闭(至少现在),并且SELinux已禁用 (这很重要!),如https://www.youcl.com/centos-5.1-中的第六章所示, 。
这是一个实践指南; 它不包括理论背景。 他们在网络上的许多其他文档中被处理。
本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
1编辑/ etc / hosts
我们在这个例子中的主机名是server1.example.com
,它的IP地址为192.168.0.100
,所以我们改变/ etc / hosts
如下:
vi /etc/hosts
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 ::1 localhost6.localdomain6 localhost6 |
2安装一些软件
首先我们导入软件包的GPG密钥:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
然后我们更新系统上现有的软件包:
yum update
现在我们安装一些我们以后需要的软件:
yum groupinstall 'Development Tools'
yum groupinstall 'Development Libraries'
3安装Apache,MySQL,phpMyAdmin
首先,我们在CentOS系统上启用RPMforge存储库,因为本教程中将要安装的许多软件包在官方CentOS 5.1存储库中不可用:
rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
(如果上述链接不起作用,可以在这里找到rpmforge-release
的当前版本: http : //apt.sw.be/packages/rpmforge-release/ )
之后,我们可以使用一个命令来安装所需的软件包(包括构建Courier-IMAP所需的软件包):
yum install ntp httpd mysql-server php php-mysql php-mbstring php-mcrypt phpmyadmin rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel
4安装Courier-IMAP,Courier-Authlib和Maildrop
不幸的是,Courier-IMAP,Courier-Authlib和Maildrop没有rpm包,因此我们必须按照本教程中所述安装它们: 如何安装courier-imap,courier-authlib和maildrop在Fedora,RedHat,CentOS
如果创建rpm包时遇到问题,可以下载我的:
- Expressauthlib-0.60.2-1.i386.rpm
- courier-authlib-devel-0.60.2-1.i386.rpm
- courier-authlib-mysql-0.60.2-1.i386.rpm
- Expressimap-4.2.1-1.i386.rpm
- maildrop-2.0.4-1.i386.rpm
5应用配额补丁到Postfix
我们必须得到Postfix源rpm,用配额补丁进行修补,构建一个新的Postfix rpm包并进行安装。
cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.1/os/SRPMS/postfix-2.3.3-2.src.rpm
rpm -ivh postfix-2.3.3-2.src.rpm
最后一个命令将显示一些您可以忽略的警告:
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
cd /usr/src/redhat/SOURCES
wget http://vda.sourceforge.net/VDA/postfix-2.3.3-vda.patch.gz
gunzip postfix-2.3.3-vda.patch.gz
cd /usr/src/redhat/SPECS/
现在我们必须编辑postfix.spec
文件:
vi postfix.spec
更改%将MYSQL 0定义
为%定义MYSQL 1
,将Patch0:postfix-2.3.3-vda.patch添加
到#Patches
节,最后将%patch0 -p1 -b .vda
添加到%setup -q
stanza中:
[...] %define MYSQL 1 [...] # Patches Patch0: postfix-2.3.3-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch Patch6: postfix-2.1.1-obsolete.patch Patch7: postfix-2.1.5-aliases.patch Patch8: postfix-large-fs.patch Patch9: postfix-2.2.5-cyrus.patch [...] %setup -q # Apply obligatory patches %patch0 -p1 -b .vda %patch1 -p1 -b .config %patch3 -p1 -b .alternatives %patch6 -p1 -b .obsolete %patch7 -p1 -b .aliases %patch8 -p1 -b .large-fs %patch9 -p1 -b .cyrus [...] |
然后我们构建我们的新的Postfix rpm包,配额和MySQL支持:
rpmbuild -ba postfix.spec
你会看到很多这样的警告,你可以忽略:
msg.h:12:1: warning: "/*" within comment
msg.h:14:1: warning: "/*" within comment
msg.h:33:1: warning: "/*" within comment
msg.h:34:1: warning: "/*" within comment
msg.h:35:1: warning: "/*" within comment
msg.h:36:1: warning: "/*" within comment
我们的Postfix rpm包是在/ usr / src / redhat / RPMS / i386
中创建的,所以我们去那里:
cd /usr/src/redhat/RPMS/i386
命令
ls -l
显示可用包:
[root@server1 i386]# ls -l
total 11280
-rw-r--r-- 1 root root 3819299 Dec 5 15:25 postfix-2.3.3-2.i386.rpm
-rw-r--r-- 1 root root 7655069 Dec 5 15:25 postfix-debuginfo-2.3.3-2.i386.rpm
-rw-r--r-- 1 root root 50346 Dec 5 15:25 postfix-pflogsumm-2.3.3-2.i386.rpm
[root@server1 i386]#
选择Postfix软件包,安装如下:
rpm -ivh postfix-2.3.3-2.i386.rpm
(如果在创建Postfix rpm包时遇到问题,可以从这里下载我的邮箱 : postfix-2.3.3-2.i386.rpm 。)
6设置MySQL密码并配置phpMyAdmin
启动MySQL:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start
然后设置MySQL根帐户的密码:
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword
现在我们配置phpMyAdmin。 我们更改Apache配置,以便phpMyAdmin允许连接不仅来自localhost(通过注释<Directory“/ usr / share / phpmyadmin”>
节):
vi /etc/httpd/conf.d/phpmyadmin.conf
# # Web application to manage MySQL # #<Directory "/usr/share/phpmyadmin"> # Order Deny,Allow # Deny from all # Allow from 127.0.0.1 #</Directory> Alias /phpmyadmin /usr/share/phpmyadmin Alias /phpMyAdmin /usr/share/phpmyadmin Alias /mysqladmin /usr/share/phpmyadmin |
接下来,我们将phpMyAdmin中的身份验证从cookie
更改为http
:
vi /usr/share/phpmyadmin/config.inc.php
[...] /* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |
然后我们创建Apache的系统启动链接并启动它:
chkconfig --levels 235 httpd on
/etc/init.d/httpd start
现在您可以将浏览器指向http://server1.example.com/phpmyadmin/
或http://192.168.0.100/phpmyadmin/
,并使用用户名root
和新的root MySQL密码登录。