使用Postfix,Courier和MySQL的虚拟用户和域(Mandriva 2008.0)
版本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-AUTH和TLS和配额 (默认情况下,配额不会内置到Postfix中),我将显示如何适当修补Postfix。 密码以加密形式存储在数据库中(我发现大多数文档都是处理明文密码,这是一个安全风险)。 除此之外,本教程还介绍了Amavisd , SpamAssassin和ClamAV的安装 ,以便电子邮件扫描垃圾邮件和病毒。
这种“虚拟”设置(MySQL数据库中的虚拟用户和域)的优点是,它比基于“真实”系统用户的设置性能要好得多。 通过此虚拟设置,您的邮件服务器可以处理数千个域和用户。 此外,更容易管理,因为您只需在添加新用户/域或编辑现有的MySQL数据库时处理MySQL数据库。 没有更多的postmap命令来创建数据库文件,不需要再重新加载Postfix等。对于MySQL数据库的管理,您可以使用基于Web的工具,如phpMyAdmin,它也将安装在这个howto中。 第三个优点是用户使用电子邮件地址作为用户名(而不是用户名+电子邮件地址),这更容易理解和记住。
本教程基于Mandriva 2008.0(i386)。 您应该已经设置了一个基本的Mandriva系统,如本教程的第1至7章所述: http : //www.youcl.com/perfect_server_mandriva_2008.0 。
这是一个实践指南; 它不包括理论背景。 他们在网络上的许多其他文档中被处理。
本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
初步说明
系统应该有一个静态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
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
wget ftp://ftp.uni-bayreuth.de/pub/linux/Mandrakelinux/official/2008.0/SRPMS/main/release/postfix-2.4.5-2mdv2008.0.src.rpm
rpm -ivh postfix-2.4.5-2mdv2008.0.src.rpm
最后一个命令将显示一些您可以忽略的警告:
warning: user mandrake does not exist - using root
warning: group mandrake does not exist - using root
现在我们使用postfix-2.4.5-vda-ng
补丁(来自http://vda.sourceforge.net/ )修补Postfix源:
cd /usr/src/rpm/SOURCES
tar xvfz postfix-2.4.5.tar.gz
wget http://vda.sourceforge.net/VDA/postfix-2.4.5-vda-ng.patch.gz
gunzip postfix-2.4.5-vda-ng.patch.gz
cd postfix-2.4.5
patch -p1 < ../postfix-2.4.5-vda-ng.patch
cd ..
mv postfix-2.4.5.tar.gz postfix-2.4.5.tar.gz_orig
tar -pczf postfix-2.4.5.tar.gz postfix-2.4.5/
rm -fr postfix-2.4.5/
然后我们构建我们的新的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 4552
-rw-r--r-- 1 root root 264550 2008-01-04 19:36 libpostfix1-2.4.5-2mdv2008.0.i586.rpm
-rw-r--r-- 1 root root 1746569 2008-01-04 19:36 postfix-2.4.5-2mdv2008.0.i586.rpm
-rw-r--r-- 1 root root 2540076 2008-01-04 19:36 postfix-debug-2.4.5-2mdv2008.0.i586.rpm
-rw-r--r-- 1 root root 24970 2008-01-04 19:36 postfix-ldap-2.4.5-2mdv2008.0.i586.rpm
-rw-r--r-- 1 root root 20132 2008-01-04 19:36 postfix-mysql-2.4.5-2mdv2008.0.i586.rpm
-rw-r--r-- 1 root root 20154 2008-01-04 19:36 postfix-pcre-2.4.5-2mdv2008.0.i586.rpm
-rw-r--r-- 1 root root 20196 2008-01-04 19:36 postfix-pgsql-2.4.5-2mdv2008.0.i586.rpm
[root@server1 i586]#
首先卸载你当前的Postfix包...
urpme postfix
然后选择Postfix
和postfix-mysql
包,并像这样安装它们:
rpm -ivh postfix-2.4.5-2mdv2008.0.i586.rpm postfix-mysql-2.4.5-2mdv2008.0.i586.rpm
4设置MySQL密码并配置phpMyAdmin
默认情况下,Mandriva 2008的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 [...] |
之后我们启动MySQL:
/etc/init.d/mysqld start
现在检查网络是否启用。 跑
netstat -tap | grep mysql
输出应如下所示:
[root@server1 var]# netstat -tap | grep mysql
tcp 0 0 *:mysql-im *:* LISTEN 5697/mysqlmanager
tcp 0 0 *:mysql *:* LISTEN 5705/mysqld
接下来,运行
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密码登录。