虚拟用户和域与Postfix,Courier和MySQL(Fedora核心5)

使用Postfix,Courier和MySQL的虚拟用户和域(Fedora Core 5)

版本1.0
作者:Falko Timme

本教程是Falko Timme的版权所有(c)2006。 它来自Christoph Haas的教程,您可以在http://workaround.org找到。 您可以根据知识共享许可2.5或更高版本免费使用本教程。

本文档介绍如何安装基于Postfix的邮件服务器,该邮件服务器基于虚拟用户和域,即MySQL数据库中的用户和域。 我还将展示Courier(Courier-POP3,Courier-IMAP)的安装和配置,以便Courier可以对Postfix使用的相同的MySQL数据库进行身份验证。

所得到的Postfix服务器能够使用SMTP-AUTHTLS配额 (默认情况下,配额不会内置到Postfix中),我将显示如何适当修补Postfix。 密码以加密形式存储在数据库中(我发现大多数文档都是处理明文密码,这是一个安全风险)。 除此之外,本教程还介绍了AmavisdSpamAssassinClamAV的安装 ,以便电子邮件扫描垃圾邮件和病毒。

这种“虚拟”设置(MySQL数据库中的虚拟用户和域)的优点是,它比基于“真实”系统用户的设置性能要好得多。 通过此虚拟设置,您的邮件服务器可以处理数千个域和用户。 此外,更容易管理,因为您只需在添加新用户/域或编辑现有的MySQL数据库时处理MySQL数据库。 没有更多的postmap命令来创建数据库文件,不需要再重新加载Postfix等。对于MySQL数据库的管理,您可以使用基于Web的工具,如phpMyAdmin,它也将安装在这个howto中。 第三个优点是用户使用电子邮件地址作为用户名(而不是用户名+电子邮件地址),这更容易理解和记住。

本教程基于Fedora Core 5(i386)。 您应该已经设置了一个基本的Fedora系统,如这里所述(对于x86_64系统,但i386系统的过程是相同的): 和 。 此外,您应该确保防火墙已关闭(至少现在),并且SELinux已禁用 (这很重要!),如所示。

这是一个实践指南; 它不包括理论背景。 他们在网络上的许多其他文档中被处理。

本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

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

2为Fedora软件包配置其他存储库

我们必须安装的一些软件包(如courier-imap )不包括在官方的Fedora存储库中,因此我们必须向yum添加另一个存储库:

rpm -ivh http://www.enlartenment.com/packages/fedora/5/i386/enlartenment-release-1.1-2.fc5.mf.noarch.rpm

之后,我们必须在/etc/yum.repos.d/enlartenment.repo中设置为1:

vi /etc/yum.repos.d/enlartenment.repo
[enlartenment]
name=Enlartenment Repository for $releasever - $basearch
baseurl=http://www.enlartenment.com/packages/fedora/$releasever/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment
enabled=1
gpgcheck=1

[enlartenment-sources]
name=Enlartenment Repository for $releasever - Sources
baseurl=http://www.enlartenment.com/packages/fedora/$releasever/SRPMS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment
enabled=1
gpgcheck=1

接下来,我们导入该存储库的GPG密钥:

rpm --import http://www.enlartenment.com/RPM-GPG-KEY.mf

3安装Postfix,Courier,Saslauthd,MySQL,phpMyAdmin

这一切都可以通过一个命令安装:

yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel maildrop courier-imap courier-authlib-mysql phpmyadmin pcre-devel openldap-devel

当你看到这个:

warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Public key for ntp-4.2.0.a.20050816-11.FC5.i386.rpm is not installed
Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
Importing GPG key 0x4F2A6FD2 "Fedora Project <fedora@redhat.com>"
Is this ok [y/N]:

请用y回答。

4应用配额补丁到Postfix

我们必须得到Postfix源rpm,用配额补丁进行修补,构建一个新的Postfix rpm包并进行安装。

cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/core/5/source/SRPMS/postfix-2.2.8-1.2.src.rpm
rpm -ivh postfix-2.2.8-1.2.src.rpm
cd /usr/src/redhat/SOURCES
wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.2.8-vda.patch.gz
gunzip postfix-2.2.8-vda.patch.gz
cd /usr/src/redhat/SPECS/

现在我们必须编辑postfix.spec文件:

vi postfix.spec

更改%将MYSQL 0定义%定义MYSQL 1 ,将Patch0:postfix-2.2.8-vda.patch添加#Patches节,最后将%patch0 -p1 -b .vda添加到%setup -q节:

[...]
%define MYSQL 1
[...]
# Patches

Patch0: postfix-2.2.8-vda.patch
Patch1: postfix-2.1.1-config.patch
Patch3: postfix-alternatives.patch
Patch4: postfix-hostname-fqdn.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
%patch4 -p1 -b .postfix-hostname-fqdn
%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
rpm -ivh postfix-2.2.8-1.2.i386.rpm

(如果在创建Postfix rpm包时遇到问题,可以从这里下载我的。)

5设置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。 创建/usr/share/phpmyadmin/config.inc.php

vi /usr/share/phpmyadmin/config.inc.php
<?php
$cfg[PmaAbsoluteUri] = 'http://192.168.0.100/phpmyadmin/';
$i=0;
$i++;
$cfg['Servers'][$i]['auth_type']          = 'http';
?>

然后我们更改Apache配置,以便phpMyAdmin不仅允许从localhost进行连接:

vi /etc/httpd/conf.d/phpmyadmin.conf
Alias /phpmyadmin/ "/usr/share/phpmyadmin/"
#<Location "/phpmyadmin/">
#        Order allow,deny
#       Allow from 127.0.0.1
#</Location>

然后我们创建Apache的系统启动链接并启动它:

chkconfig --levels 235 httpd on
/etc/init.d/httpd start

现在,您可以将浏览器指向http://server1.example.com/phpmyadmin/ ,并使用用户名root和新的root MySQL密码登录。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏