Postfix,Courier和MySQL的虚拟用户和域(Ubuntu 6.06 LTS)

虚拟用户和域名与Postfix,Express和MySQL(Ubuntu 6.06 LTS)

本教程源自Christoph Haas的教程,您可以在http://workaround.org找到该教程 您可以根据知识共享许可2.5或更高版本免费使用本教程。

本文档介绍如何安装基于Postfix的邮件服务器,该邮件服务器基于虚拟用户和域,即MySQL数据库中的用户和域。 我还将展示Courier(Courier-POP3,Courier-IMAP)的安装和配置,以便Courier可以针对Postfix使用的同一MySQL数据库进行身份验证。

所得到的Postfix服务器能够使用SMTP-AUTHTLS配额 (默认情况下,配额不会内置到Postfix中),我将显示如何适当修补Postfix。 密码以加密形式存储在数据库中(我发现大多数文档都是处理明文密码,这是一个安全风险)。

这种“虚拟”设置(MySQL数据库中的虚拟用户和域)的优点是,它比基于“真实”系统用户的设置性能要好得多。 通过此虚拟设置,您的邮件服务器可以处理数千个域和用户。 此外,更容易管理,因为您只需在添加新用户/域或编辑现有的MySQL数据库时处理MySQL数据库。 没有更多的postmap命令来创建数据库文件,不需要再重新加载Postfix等。对于MySQL数据库的管理,您可以使用基于Web的工具,如phpMyAdmin,它也将安装在这个howto中。 第三个优点是用户使用电子邮件地址作为用户名(而不是用户名+电子邮件地址),这更容易理解和记住。

1初步说明

本教程基于Ubuntu 6.06 LTS服务器基础安装(IE不LAMP)。

2安装Postfix,Courier,Saslauthd,MySQL,phpMyAdmin

要安装Postfix,Courier,Saslauthd,MySQL和phpMyAdmin,我们只需运行

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authmysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql 

你会被问到几个问题:

创建基于Web的管理目录? < - 不
一般类型的邮件配置: < - 网站
系统邮件名称: < - server1.example.com

3应用配额补丁到Postfix

我们必须得到Postfix源代码,使用配额补丁进行修补,构建新的Postfix .deb包并安装这些.deb包:

apt-get install build-essential dpkg-dev fakeroot debhelper libgdbm-dev libldap2-dev libpcre3-dev libssl-dev libsasl2-dev postgresql-dev po-debconf dpatch libdb4.3-dev libmysqlclient15-dev postgresql-dev libdb4.3-dev tinycdb libcdb-dev
cd /usr/src
apt-get source postfix

(请确保在以下命令中使用正确的Postfix版本。我安装了Postfix 2.4.5,您可以通过运行

postconf -d | grep mail_version

输出应如下所示:

root@server1:~# postconf -d | grep mail_version
mail_version = 2.4.5
milter_macro_v = $mail_name $mail_version
root@server1:~#

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
dpkg-buildpackage

您可能会在dpkg-buildpackage命令的末尾看到类似的警告:

(WARNING: Failed to sign .dsc and .changes file)

您可以忽略此消息。

现在我们去一个目录,这就是新的.deb包的创建地方:

cd ..

命令

ls -l

显示可用包:

root@server1:/usr/src# ls -la
total 5400
drwxrwsr-x 3 root src 4096 2007-11-14 13:15 .
drwxr-xr-x 11 root root 4096 2007-11-14 13:02 ..
drwxr-xr-x 19 1001 root 4096 2007-11-14 13:15 postfix-2.4.5
-rw-r--r-- 1 root src 226965 2007-11-14 13:13 postfix_2.4.5-3build1~dapper1.diff.gz
-rw-r--r-- 1 root src 673 2007-11-14 13:13 postfix_2.4.5-3build1~dapper1.dsc
-rw-r--r-- 1 root src 1826 2007-11-14 13:15 postfix_2.4.5-3build1~dapper1_i386.changes
-rw-r--r-- 1 root src 1093064 2007-11-14 13:15 postfix_2.4.5-3build1~dapper1_i386.deb
-rw-r--r-- 1 root src 2934634 2007-08-03 13:53 postfix_2.4.5.orig.tar.gz
-rw-r--r-- 1 root src 57055 2007-08-01 19:13 postfix-2.4.5-vdang.patch
-rw-r--r-- 1 root src 40218 2007-11-14 13:15 postfix-cdb_2.4.5-3build1~dapper1_i386.deb
-rw-r--r-- 1 root src 131728 2007-11-14 13:15 postfix-dev_2.4.5-3build1~dapper1_all.deb
-rw-r--r-- 1 root src 820058 2007-11-14 13:15 postfix-doc_2.4.5-3build1~dapper1_all.deb
-rw-r--r-- 1 root src 44012 2007-11-14 13:15 postfix-ldap_2.4.5-3build1~dapper1_i386.deb
-rw-r--r-- 1 root src 39496 2007-11-14 13:15 postfix-mysql_2.4.5-3build1~dapper1_i386.deb
-rw-r--r-- 1 root src 39306 2007-11-14 13:15 postfix-pcre_2.4.5-3build1~dapper1_i386.deb
-rw-r--r-- 1 root src 39600 2007-11-14 13:15 postfix-pgsql_2.4.5-3build1~dapper1_i386.deb

选择postfixpostfix-mysql包,并安装它们如下所示:

dpkg -i postfix_2.4.5-3build1~dapper1_i386.deb
dpkg -i postfix-mysql_2.4.5-3build1~dapper1_i386.deb

4为Postfix / Courier创建MySQL数据库

首先我们需要设置root mysql密码来进行安全性:

/etc/init.d/mysql reset-password

现在我们创建一个名为mail的数据库:

mysqladmin -u root -p create mail

接下来,我们去MySQL shell:

mysql -u root -p

在mySQL shell上,我们使用密码'mail_admin_password'创建用户mail_admin(您可以使用此密码来轻松进行安装,因为我将使用该密码进行其余的操作,但是您可以使用任何要记住改变的密码有必要)谁拥有SELECT,INSERT,UPDATE,DELETE权限的邮件数据库。 该用户将被Postfix和Courier用于连接到邮件数据库:

GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';
FLUSH PRIVILEGES;

仍然在MySQL shell上,我们创建Postfix和Courier需要的表:

USE mail;
CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain) )
TYPE=MyISAM;
CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
TYPE=MyISAM;
CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
PRIMARY KEY (email)
) TYPE=MyISAM;
CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
) TYPE=MyISAM;
quit;

你可能已经注意到,随着戒烟; 命令我们已经离开了MySQL shell,并回到了Linux shell。

表将存储Postfix应接收(例如example.com )的电子邮件的每个虚拟域。

example.com

发表用于将一个电子邮件地址别名,例如将info@example.com的电子邮件转发sales@example.com

资源 目的地
info@example.com sales@example.com

用户表存储所有虚拟用户(即,电子邮件地址,因为电子邮件地址和用户名相同)和密码( 加密形式!)和每个邮箱的配额值(在本示例中,默认值为10485760字节意味着10MB)。

电子邮件 密码 配额
sales@example.com No.4E4skNvGa (加密形式的“秘密”) 10485760

运输表是可选的,适用于高级用户。 它允许将单个用户,整个域或所有邮件的邮件转发到另一个服务器。 例如,

运输
example.com smtp:[1.2.3.4]

将通过smtp协议将所有em.com的电子邮件转发到IP地址为1.2.3.4的服务器(方括号[]表示“不查找MX DNS记录”)(这对IP地址有意义。 。)如果您使用完全限定域名(FQDN),则不要使用方括号。

BTW,(我假设您的邮件服务器系统的IP地址为192.168.0.100 ),您可以通过http://192.168.0.100/phpmyadmin/在浏览器中访问phpMyAdmin并以mail_admin身份登录。 那么你可以看看数据库。 以后可以使用phpMyAdmin管理邮件服务器。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏