虚拟用户和域与Postfix,Express,MySQL和松鼠邮件(Mandriva 2008.1)

虚拟用户和域与Postfix,Express,MySQL和松鼠邮件(Mandriva 2008.1) 本文档描述如何安装Postfix邮件服务器

虚拟用户和域名与Postfix,Courier,MySQL和SquirrelMail(Mandriva 2008.1)

版本1.0
作者:Falko Timme

本教程是由Falko Timme提供的版权所有(c)2008。 它来自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 2008.1(i386)。 您应该已经设置了一个基本的Mandriva系统,如本教程的第1至7章所述: http : //www.howtoing.com/perfect-server-mandriva-2008.1请留下第6.3章创建自动更新脚本,因为如果有Postfix更新,它将替换我们将在第3章中构建的我们定制的Postfix!

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

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

初步说明

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

1安装Apache,MySQL,phpMyAdmin

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

urpmi MySQL MySQL-client libmysql15-devel phpmyadmin db4-devel html2text libsasl-devel openssl-devel openldap-devel pcre-devel postgresql-devel rpm-build

2安装Express和Saslauthd

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

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

3应用配额补丁到Postfix

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

cd /usr/src
mkdir rpm
wget ftp://wftp.tu-chemnitz.de/pub/linux/mandrakelinux/official/2008.1/SRPMS/main/release/postfix-2.5.1-2mdv2008.1.src.rpm
rpm -ivh postfix-2.5.1-2mdv2008.1.src.rpm

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

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

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

cd /usr/src/rpm/SOURCES
tar xvfz postfix-2.5.1.tar.gz
wget http://vda.sourceforge.net/VDA/postfix-2.5.1-vda-ng.patch.gz
gunzip postfix-2.5.1-vda-ng.patch.gz
cd postfix-2.5.1
patch -p1 < ../postfix-2.5.1-vda-ng.patch
cd ..
mv postfix-2.5.1.tar.gz postfix-2.5.1.tar.gz_orig
tar -pczf postfix-2.5.1.tar.gz postfix-2.5.1/
rm -fr postfix-2.5.1/

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

cd /usr/src/rpm/SPECS/
rpmbuild -ba postfix.spec

我们的Postfix rpm包是在/ usr / src / rpm / RPMS / i586中创建的,所以我们去那里:

cd /usr/src/rpm/RPMS/i586

命令

ls -l

显示可用包:

[root@server1 i586]# ls -l
total 4712
-rw-r--r-- 1 root root  275303 2008-04-11 16:22 libpostfix1-2.5.1-2mdv2008.1.i586.rpm
-rw-r--r-- 1 root root 1822571 2008-04-11 16:22 postfix-2.5.1-2mdv2008.1.i586.rpm
-rw-r--r-- 1 root root 2608569 2008-04-11 16:22 postfix-debug-2.5.1-2mdv2008.1.i586.rpm
-rw-r--r-- 1 root root   27341 2008-04-11 16:22 postfix-ldap-2.5.1-2mdv2008.1.i586.rpm
-rw-r--r-- 1 root root   22208 2008-04-11 16:22 postfix-mysql-2.5.1-2mdv2008.1.i586.rpm
-rw-r--r-- 1 root root   22150 2008-04-11 16:22 postfix-pcre-2.5.1-2mdv2008.1.i586.rpm
-rw-r--r-- 1 root root   22266 2008-04-11 16:22 postfix-pgsql-2.5.1-2mdv2008.1.i586.rpm
[root@server1 i586]#

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

urpme postfix

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

rpm -ivh postfix-2.5.1-2mdv2008.1.i586.rpm postfix-mysql-2.5.1-2mdv2008.1.i586.rpm

4设置MySQL密码并配置phpMyAdmin

默认情况下,Mandriva 2008.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 i586]# netstat -tap | grep mysql
tcp        0      0 *:mysql-im                  *:*                         LISTEN      13537/mysqlmanager
tcp        0      0 *:mysql                     *:*                         LISTEN      13545/mysqld
[root@server1 i586]#

接下来,运行

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密码登录。