虚拟用户和域与Postfix,Courier,MySQL和SquirrelMail(CentOS 6.3 x86_64)

本文档描述如何安装Postfix邮件服务器 基于虚拟用户和域,即位于的用户和域 一个MySQL ...

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

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

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

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

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

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

1初步说明

本教程基于CentOS 6.3 x86_64,因此您应该在继续本教程之前设置基本的CentOS 6.3服务器安装。 系统应该有一个静态IP地址。 我在本教程中使用192.168.0.100作为我的IP地址,将server1.example.com用作主机名。

您应该确保防火墙已关闭(至少现在),并且SELinux已禁用 (这很重要!)。

2启用其他存储库并安装一些软件

首先我们导入软件包的GPG密钥:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

然后,我们在CentOS系统上启用RPMforge和EPEL存储库,因为在本教程中将安装的许多软件包在官方CentOS 6.3存储库中不可用:

rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

cd /tmp
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

(如果上述链接不再工作,可以在这里找到rpmforge-release的当前版本: http : //packages.sw.be/rpmforge-release/

rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

yum install yum-priorities

编辑/etc/yum.repos.d/epel.repo ...

vi /etc/yum.repos.d/epel.repo

...并将行优先级= 10添加到[epel]部分:

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[...]

然后我们更新系统上现有的软件包:

yum update

现在我们安装一些我们以后需要的软件:

yum groupinstall 'Development Tools'

3安装Apache,MySQL,phpMyAdmin

这可以安装一个单一命令(包括我们构建Courier-IMAP所需的包):

yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel phpMyAdmin pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel libidn-devel db4-devel mod_ssl telnet sqlite-devel

4安装Courier-IMAP,Courier-Authlib和Maildrop

不幸的是,Courier-IMAP,Courier-Authlib和Maildrop没有rpm包,因此我们必须自己构建它们。

RPM包不应该以root身份构建; 如果检测到编译以root用户身份运行,则courier-imap甚至拒绝编译。 因此,我们现在创建一个正常的用户帐户(在这个例子中为falko ),并给他一个密码:

useradd -m -s /bin/bash falko
passwd falko

稍后我们将需要sudo命令,以便用户falko可以编译和安装rpm包。 但首先,我们必须允许falko使用sudo来运行所有命令:

visudo

在打开的文件中有一个行根ALL =(ALL)ALL 。 在falko上添加一条类似的行:

[...]
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
falko ALL=(ALL) ALL
[...]

现在我们已经准备好构建我们的rpm包了。 首先成为用户falko

su falko

接下来我们创建我们的构建环境:

mkdir $HOME/rpm
mkdir $HOME/rpm/SOURCES
mkdir $HOME/rpm/SPECS
mkdir $HOME/rpm/BUILD
mkdir $HOME/rpm/BUILDROOT
mkdir $HOME/rpm/SRPMS
mkdir $HOME/rpm/RPMS
mkdir $HOME/rpm/RPMS/i386
mkdir $HOME/rpm/RPMS/x86_64

echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros

现在我们创建一个下载目录,并从http://www.courier-mta.org/download.php下载源文件:

mkdir $HOME/downloads
cd $HOME/downloads

wget --no-check-certificate https://sourceforge.net/projects/courier/files/authlib/0.65.0/courier-authlib-0.65.0.tar.bz2/download
wget --no-check-certificate https://sourceforge.net/projects/courier/files/imap/4.12.0/courier-imap-4.12.0.tar.bz2/download
wget --no-check-certificate https://sourceforge.net/projects/courier/files/maildrop/2.6.0/maildrop-2.6.0.tar.bz2/download

现在(仍然在$ HOME /下载 )我们可以建立Expressauthlib:

sudo rpmbuild -ta courier-authlib-0.65.0.tar.bz2

构建过程之后,如果您在i386系统上,则可以在/ root / rpmbuild / RPMS / x86_64/ root / rpmbuild / RPMS / i386)中找到rpm包。 命令

sudo ls -l /root/rpmbuild/RPMS/x86_64

显示可用的rpm包:

[falko@server1 downloads]$ sudo ls -l /root/rpmbuild/RPMS/x86_64
total 544
-rw-r--r-- 1 root root 126728 Mar  4 12:49 courier-authlib-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 274772 Mar  4 12:49 courier-authlib-debuginfo-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  37824 Mar  4 12:49 courier-authlib-devel-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  17256 Mar  4 12:49 courier-authlib-ldap-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  12000 Mar  4 12:49 courier-authlib-mysql-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  12984 Mar  4 12:49 courier-authlib-pgsql-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root   8244 Mar  4 12:49 courier-authlib-pipe-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  10620 Mar  4 12:49 courier-authlib-sqlite-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  34644 Mar  4 12:49 courier-authlib-userdb-0.65.0-1.el6.x86_64.rpm
[falko@server1 downloads]$

选择要安装的文件,并安装它们:

sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/courier-authlib-0.65.0-1.el6.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-mysql-0.65.0-1.el6.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-devel-0.65.0-1.el6.x86_64.rpm

现在我们回到我们的下载目录:

cd $HOME/downloads

运行以下命令创建所需目录/更改目录权限(否则,Courier-Imap的构建过程将失败):

sudo mkdir -p /var/cache/ccache/tmp
sudo chmod o+rwx /var/cache/ccache/
sudo chmod 777 /var/cache/ccache/tmp

现在再次运行rpmbuild ,这次没有sudo ,否则编译将失败,因为它是以root身份运行:

rpmbuild -ta courier-imap-4.12.0.tar.bz2

在构建过程之后,可以在$ HOME / rpm / RPMS / x86_64$ HOME / rpm / RPMS / i386(如果您在i386系统上))中找到rpm包:

cd $HOME/rpm/RPMS/x86_64

命令

ls -l

显示可用的rpm包:

[falko@server1 x86_64]$ ls -l
total 1116
-rw-rw-r-- 1 falko falko 332112 Mar  4 12:53 courier-imap-4.12.0-1.x86_64.rpm
-rw-rw-r-- 1 falko falko 805288 Mar  4 12:53 courier-imap-debuginfo-4.12.0-1.x86_64.rpm
[falko@server1 x86_64]$ 

你可以这样安装courier-imap:

sudo rpm -ivh courier-imap-4.12.0-1.x86_64.rpm

现在我们回到我们的下载目录:

cd $HOME/downloads

并再次运行rpmbuild ,这次建一个maildrop包:

sudo rpmbuild -ta maildrop-2.6.0.tar.bz2

构建过程之后,如果您在i386系统上,则可以在/ root / rpmbuild / RPMS / x86_64/ root / rpmbuild / RPMS / i386)中找到rpm包。 命令

sudo ls -l /root/rpmbuild/RPMS/x86_64

显示可用的rpm包:

[falko@server1 downloads]$ sudo ls -l /root/rpmbuild/RPMS/x86_64
total 1732
-rw-r--r-- 1 root root 126728 Mar  4 12:49 courier-authlib-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 274772 Mar  4 12:49 courier-authlib-debuginfo-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  37824 Mar  4 12:49 courier-authlib-devel-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  17256 Mar  4 12:49 courier-authlib-ldap-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  12000 Mar  4 12:49 courier-authlib-mysql-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  12984 Mar  4 12:49 courier-authlib-pgsql-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root   8244 Mar  4 12:49 courier-authlib-pipe-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  10620 Mar  4 12:49 courier-authlib-sqlite-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  34644 Mar  4 12:49 courier-authlib-userdb-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 286752 Mar  4 13:03 maildrop-2.6.0-1.x86_64.rpm
-rw-r--r-- 1 root root 751304 Mar  4 13:03 maildrop-debuginfo-2.6.0-1.x86_64.rpm
-rw-r--r-- 1 root root 102052 Mar  4 13:03 maildrop-devel-2.6.0-1.x86_64.rpm
-rw-r--r-- 1 root root  66184 Mar  4 13:03 maildrop-man-2.6.0-1.x86_64.rpm
[falko@server1 downloads]$

你现在可以这样安装maildrop:

sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/maildrop-2.6.0-1.x86_64.rpm

编译并安装所有需要的软件包后,您可以通过键入再次成为root

exit

5应用配额补丁到Postfix

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

cd /usr/src
wget http://vault.centos.org/6.3/os/Source/SPackages/postfix-2.6.6-2.2.el6_1.src.rpm
rpm -ivh postfix-2.6.6-2.2.el6_1.src.rpm

最后一个命令将显示一些您可以忽略的警告:

warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root

cd /root/rpmbuild/SOURCES
wget http://vda.sourceforge.net/VDA/postfix-2.6.5-vda-ng.patch.gz
gunzip postfix-2.6.5-vda-ng.patch.gz
cd /root/rpmbuild/SPECS/

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

vi postfix.spec

Patch0:postfix-2.6.5-vda-ng.patch添加#Patches节,将%patch0 -p1 -b .vda-ng添加到%setup -q stanza中:

[...]
# Patches Patch0: postfix-2.6.5-vda-ng.patch Patch1: postfix-2.6.1-config.patch Patch2: postfix-2.6.1-files.patch Patch3: postfix-alternatives.patch Patch8: postfix-large-fs.patch Patch9: pflogsumm-1.1.1-datecalc.patch Patch10: postfix-2.6.6-CVE-2011-0411.patch Patch11: postfix-2.6.6-CVE-2011-1720.patch
[...]
%prep %setup -q # Apply obligatory patches %patch0 -p1 -b .vda-ng %patch1 -p1 -b .config %patch2 -p1 -b .files %patch3 -p1 -b .alternatives %patch8 -p1 -b .large-fs
[...]

然后我们构建我们的新的Postfix rpm包,配额和MySQL支持:

rpmbuild -ba postfix.spec

我们的Postfix rpm包是在/ root / rpmbuild / RPMS / x86_64/ root / rpmbuild / RPMS / i386)中创建的,如果你在i386系统上),那么我们去那里:

cd /root/rpmbuild/RPMS/x86_64

命令

ls -l

显示可用包:

[root@server1 x86_64]# ls -l
total 10748
-rw-r--r-- 1 root root  126728 Mar  4 12:49 courier-authlib-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  274772 Mar  4 12:49 courier-authlib-debuginfo-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root   37824 Mar  4 12:49 courier-authlib-devel-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root   17256 Mar  4 12:49 courier-authlib-ldap-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root   12000 Mar  4 12:49 courier-authlib-mysql-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root   12984 Mar  4 12:49 courier-authlib-pgsql-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root    8244 Mar  4 12:49 courier-authlib-pipe-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root   10620 Mar  4 12:49 courier-authlib-sqlite-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root   34644 Mar  4 12:49 courier-authlib-userdb-0.65.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  286752 Mar  4 13:03 maildrop-2.6.0-1.x86_64.rpm
-rw-r--r-- 1 root root  751304 Mar  4 13:03 maildrop-debuginfo-2.6.0-1.x86_64.rpm
-rw-r--r-- 1 root root  102052 Mar  4 13:03 maildrop-devel-2.6.0-1.x86_64.rpm
-rw-r--r-- 1 root root   66184 Mar  4 13:03 maildrop-man-2.6.0-1.x86_64.rpm
-rw-r--r-- 1 root root 2138908 Mar  4 13:15 postfix-2.6.6-2.2.el6.x86_64.rpm
-rw-r--r-- 1 root root 7021184 Mar  4 13:15 postfix-debuginfo-2.6.6-2.2.el6.x86_64.rpm
-rw-r--r-- 1 root root   61752 Mar  4 13:15 postfix-perl-scripts-2.6.6-2.2.el6.x86_64.rpm
[root@server1 x86_64]# 

要确保您的系统以前没有安装任何版本的postfix,请使用:

yum remove postfix

选择Postfix软件包,安装如下:

rpm -ivh postfix-2.6.6-2.2.el6.x86_64.rpm


分享按钮