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