虚拟用户和域与Postfix,Courier,MySQL和SquirrelMail(Mandriva 2009.1 x86_64)

虚拟用户和域与Postfix,Courier,MySQL和SquirrelMail(Mandriva 2009.1 x86_64) 本文档描述如何安装Postfix ...

使用Postfix,Courier,MySQL和SquirrelMail的虚拟用户和域(Mandriva 2009.1 x86_64)

版本1.0
作者:Falko Timme

本教程由Falko Timme提供的版权所有(c)2009。 它来自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中。 第三个优点是用户使用电子邮件地址作为用户名(而不是用户名+电子邮件地址),这更容易理解和记住。

本教程基于Mandriva 2009.1(x86_64)。 您应该已经设置了一个基本的Mandriva系统,如本教程的第1至7章所述: http : //www.howtoing.com/perfect-server-mandriva-2009.1-free-x86_64-ispconfig-2请留下第6.1章创建自动更新脚本,因为如果有Postfix更新,它将替换我们将在第3章中构建的我们定制的Postfix!

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

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

初步说明

系统应该有一个静态IP地址。 我在本教程中使用192.168.0.100作为我的IP地址,将server1.example.com用作主机名。

1安装Apache,MySQL,phpMyAdmin

首先我们更新我们的包数据库:

urpmi.update -a

我们可以使用一个命令安装软件包:

urpmi MySQL MySQL-client lib64mysql-devel phpmyadmin db4-devel html2text lib64sasl-devel openssl-devel openldap-devel pcre-devel postgresql8.3-devel rpm-build

2安装Express和Saslauthd

要安装Courier和saslauthd,我们只需运行:

urpmi courier-authlib courier-authlib-mysql courier-imap courier-pop cyrus-sasl lib64sasl2 lib64sasl2-devel lib64sasl2-plug-plain lib64sasl2-plug-anonymous lib64sasl2-plug-crammd5 lib64sasl2-plug-digestmd5 lib64sasl2-plug-gssapi lib64sasl2-plug-login

3应用配额补丁到Postfix

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

cd /usr/src
wget ftp://wftp.tu-chemnitz.de/pub/linux/mandrakelinux/official/2009.1/SRPMS/main/release/postfix-2.5.6-4mdv2009.1.src.rpm
rpm -ivh postfix-2.5.6-4mdv2009.1.src.rpm

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

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

现在我们使用postfix-2.5.6-vda-ng补丁(来自http://vda.sourceforge.net/ )修补Postfix源:

cd /root/rpmbuild/SOURCES
tar xvfz postfix-2.5.6.tar.gz
wget http://vda.sourceforge.net/VDA/postfix-2.5.6-vda-ng.patch.gz
gunzip postfix-2.5.6-vda-ng.patch.gz
cd postfix-2.5.6
patch -p1 < ../postfix-2.5.6-vda-ng.patch
cd ..
mv postfix-2.5.6.tar.gz postfix-2.5.6.tar.gz_orig
tar -pczf postfix-2.5.6.tar.gz postfix-2.5.6/
rm -fr postfix-2.5.6/

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

cd /root/rpmbuild/SPECS/
rpmbuild -ba postfix.spec

我们的Postfix rpm包是在/ root / rpmbuild / RPMS / x86_64中创建的,所以我们去那里:

cd /root/rpmbuild/RPMS/x86_64

命令

ls -l

显示可用包:

[root@server1 x86_64]# ls -l
total 3304
-rw-r--r-- 1 root root  225752 2009-10-07 15:49 lib64postfix1-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root 1273469 2009-10-07 15:49 postfix-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root 1746832 2009-10-07 15:49 postfix-debug-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root   29372 2009-10-07 15:49 postfix-ldap-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root   24616 2009-10-07 15:49 postfix-mysql-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root   24846 2009-10-07 15:49 postfix-pcre-2.5.6-4mdv2009.1.x86_64.rpm
-rw-r--r-- 1 root root   24691 2009-10-07 15:49 postfix-pgsql-2.5.6-4mdv2009.1.x86_64.rpm
[root@server1 x86_64]#

首先卸载你当前的Postfix包...

urpme postfix

然后选择Postfixpostfix-mysql包,并像这样安装它们:

rpm -ivh postfix-2.5.6-4mdv2009.1.x86_64.rpm postfix-mysql-2.5.6-4mdv2009.1.x86_64.rpm

4设置MySQL密码并配置phpMyAdmin

默认情况下,Mandriva 2009.1的MySQL软件包未启用网络连接,但ISPConfig需要网络连接。 我们可以通过在/etc/my.cnf注释掉 skip-networking来改变这一点

vi /etc/my.cnf

[...]
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
[...]

之后,我们为Apache和MySQL创建系统启动链接...

chkconfig mysqld on
chkconfig httpd on

...并启动两项服务:

/etc/init.d/mysqld start
/etc/init.d/httpd start

现在检查网络是否启用。 跑

netstat -tap | grep mysql

输出应如下所示:

[root@server1 x86_64]# netstat -tap | grep mysql
tcp        0      0 *:mysql-im                  *:*                         LISTEN      14395/mysqlmanager
tcp        0      0 *:mysql                     *:*                         LISTEN      14403/mysqld
[root@server1 x86_64]#

接下来,运行

mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

为用户root设置密码(否则任何人都可以访问您的MySQL数据库!)。

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