使用Postfix,Courier,MySQL和SquirrelMail(Ubuntu 14.04LTS)的虚拟用户和域
本教程是Falko Timme&Srijan Kishore的版权所有(c)2014。 它来自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中。 第三个优点是用户使用电子邮件地址作为用户名(而不是用户名+电子邮件地址),这更容易理解和记住。
这是一个实践指南; 它不包括理论背景。 他们在网络上的许多其他文档中被处理。
本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
1初步说明
本教程基于Ubuntu 14.04 Server(Trusty Tahr),因此您应该在继续本教程之前设置基本的Ubuntu 14.04服务器安装。 系统应该有一个静态IP地址。 我在本教程中使用192.168.0.100
作为我的IP地址,将server1.example.com
用作主机名。
确保您以root身份登录(输入
sudo su
成为root),因为我们必须以root用户身份运行本教程中的所有步骤。
将/ bin / sh
的符号链接到/ bin / bash
是非常重要的...
dpkg-reconfigure dash
使用破折号作为默认系统shell(/ bin / sh)?
< - 不
...并且您禁用AppArmor,如果您正在获得apparmor:无法识别的服务,
然后从update-rc.d中删除它
service apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils
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-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass
你会被问到几个问题:
MySQL“root”用户的新密码:
< - yourrootsqlpassword
重复MySQL“root”用户的密码:
< - yourrootsqlpassword
创建基于Web的管理目录?
< - 不
一般类型的邮件配置:
< - 网站
系统邮件名称:
< - server1.example.com
需要SSL证书
< - 好的
Web服务器自动重新配置:
< - apache2
使用dbconfig-common配置phpmyadmin的数据库?
< - 不
3应用配额补丁到Postfix
我们必须得到Postfix源代码,使用配额补丁进行修补,构建新的Postfix .deb
包并安装这些.deb
包:
apt-get build-dep postfix
有一段时间你可以得到如下错误:
root@server1:~# apt-get build-dep postfix
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: You must put some 'source' URIs in your sources.list
root@server1:~#
您可以通过添加源存储库来进行如下更正:
vi /etc/apt/sources.list
按照我的情况进入
deb http://archive.ubuntu.com/ubuntu trusty main restricted universe
deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb http://archive.canonical.com/ubuntu trusty partner
deb-src http://archive.ubuntu.com/ubuntu trusty main restricted universe
deb-src http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe
deb-src http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb-src http://archive.canonical.com/ubuntu trusty partner
下一个
apt-get update
apt-get build-dep postfix
cd /usr/src
apt-get source postfix
(确保在以下命令中使用正确的Postfix版本我已经安装了Postfix 2.11.0,您可以通过运行
postconf -d | grep mail_version
输出应如下所示:
root@server1:/usr/src# postconf -d | grep mail_version
mail_version = 2.11.0
milter_macro_v = $mail_name $mail_version
root@server1:/usr/src#
wget http://vda.sourceforge.net/VDA/postfix-vda-v13-2.10.0.patch
cd postfix-2.11.0
patch -p1 < ../postfix-vda-v13-2.10.0.patch
下一个打开debian /规则
并将DEB_BUILD_HARDENING
从1
更改为0
:
vi debian/rules
[...] export DEB_BUILD_HARDENING=0 [...] |
如果您不这样做,您的构建将失败并显示以下错误消息:
maildir.c: In function âdeliver_maildirâ:
maildir.c:974:17: error: format not a string literal and no format arguments [-Werror=format-security]
maildir.c:977:17: error: format not a string literal and no format arguments [-Werror=format-security]
maildir.c:983:17: error: format not a string literal and no format arguments [-Werror=format-security]
maildir.c:986:17: error: format not a string literal and no format arguments [-Werror=format-security]
maildir.c: In function âsql2fileâ:
maildir.c:404:25: warning: ignoring return value of âreadâ, declared with attribute warn_unused_result [-Wunused-result]
maildir.c:417:26: warning: ignoring return value of âwriteâ, declared with attribute warn_unused_result [-Wunused-result]
cc1: some warnings being treated as errors
make: *** [maildir.o] Error 1
make: Leaving directory `/usr/src/postfix-2.11.0/src/virtual'
make[1]: *** [update] Error 1
make[1]: Leaving directory `/usr/src/postfix-2.11.0'
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
root@server1:/usr/src/postfix-2.11.0#
现在我们可以构建新的Postfix .deb
包:
dpkg-buildpackage
现在我们去一个目录,这就是新的.deb
包的创建地方:
cd ..
命令
ls -l
显示可用包:
root@server1:/usr/src# ls -l
total 6824
drwxr-xr-x 18 root root 4096 Apr 30 04:28 postfix-2.11.0
-rw-r--r-- 1 root root 46756 Apr 30 04:28 postfix-cdb_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 142842 Apr 30 04:28 postfix-dev_2.11.0-1_all.deb
-rw-r--r-- 1 root root 851842 Apr 30 04:28 postfix-doc_2.11.0-1_all.deb
-rw-r--r-- 1 root root 53898 Apr 30 04:28 postfix-ldap_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 48500 Apr 30 04:28 postfix-mysql_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 48610 Apr 30 04:28 postfix-pcre_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 48324 Apr 30 04:28 postfix-pgsql_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 55701 Jun 7 2013 postfix-vda-v13-2.10.0.patch
-rw-r--r-- 1 root root 267855 Apr 30 04:27 postfix_2.11.0-1.diff.gz
-rw-r--r-- 1 root root 1522 Apr 30 04:27 postfix_2.11.0-1.dsc
-rw-r--r-- 1 root root 3885 Apr 30 04:28 postfix_2.11.0-1_amd64.changes
-rw-r--r-- 1 root root 1329238 Apr 30 04:28 postfix_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 4034741 Feb 12 01:38 postfix_2.11.0.orig.tar.gz
root@server1:/usr/src#
选择postfix
和postfix-mysql
包,并安装它们如下所示:
dpkg -i postfix_2.11.0-1_amd64.deb postfix-mysql_2.11.0-1_amd64.deb
4为Postfix / Courier创建MySQL数据库
现在我们创建一个名为mail
的数据库:
mysqladmin -u root -p create mail
您将被要求提供此问题:
输入密码:
< - yourrootsql 密码
接下来,我们去MySQL shell:
mysql -u root -p
在MySQL shell上,我们用邮件
数据库中具有SELECT,INSERT,UPDATE,DELETE
权限的passwort mail_admin_password
(替换为自己的密码)创建用户mail_admin
。 该用户将被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) )
ENGINE=MyISAM;
CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
ENGINE=MyISAM;
CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
PRIMARY KEY (email)
) ENGINE=MyISAM;
CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
) ENGINE=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管理邮件服务器。