使用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-AUTH和TLS和配额 (默认情况下,配额不会内置到Postfix中),我将显示如何适当修补Postfix。 密码以加密形式存储在数据库中(我发现大多数文档都是处理明文密码,这是一个安全风险)。 除此之外,本教程还介绍了Amavisd , SpamAssassin和ClamAV的安装 ,以便电子邮件扫描垃圾邮件和病毒。 我还将展示如何将SquirrelMail安装为Webmail界面,以便用户可以读取和发送电子邮件并更改密码。
这种“虚拟”设置(MySQL数据库中的虚拟用户和域)的优点是,它比基于“真实”系统用户的设置性能要好得多。 通过此虚拟设置,您的邮件服务器可以处理数千个域和用户。 此外,更容易管理,因为您只需在添加新用户/域或编辑现有的MySQL数据库时处理MySQL数据库。 没有更多的postmap命令来创建数据库文件,不需要再重新加载Postfix等。对于MySQL数据库的管理,您可以使用基于Web的工具,如phpMyAdmin,它也将安装在这个howto中。 第三个优点是用户使用电子邮件地址作为用户名(而不是用户名+电子邮件地址),这更容易理解和记住。
本教程基于Mandriva 2009.1(x86_64)。 您应该已经设置了一个基本的Mandriva系统,如本教程的第1至7章所述: http : //www.youcl.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
然后选择Postfix
和postfix-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密码登录。