Postfix Admin 是一个基于 Web 的界面,允许用户配置和管理基于 Postfix 的电子邮件服务器。使用 Postfix Admin,您可以创建和管理多个虚拟域、用户和别名。
这是设置和配置邮件服务器系列中的第一篇文章, 其中涵盖了创建必要的 DNS 记录并解释了如何使用免费的 Let's Encrypt 证书、PHP 和 MySQL 安装和配置 Postfix Admin、Nginx。
本教程是为 Ubuntu 16.04 编写的,但是经过少量修改的相同步骤应该适用于任何较新版本的 Ubuntu 。
先决条件
作为学习本系列的先决条件,您将需要:
Ubuntu 16.04 服务器。该服务器主机名 必须是FQDN。在本系列中,我们将使用mail.jskcw.com.
DNS 配置
您需要为邮件系统配置以下 DNS 记录才能正常工作:
一条记录,将您系统的 FQDN(主机名)指向您的邮件服务器 IPv4 地址。
mail.jskcw.com. 3600 IN A 23.45.67.89
FQDN 由两部分组成,主机名和域名。
MX 记录,指定哪个邮件服务器负责代表收件人的域接受电子邮件。在我们的例子中,我们希望所有发送到@jskcw.com电子邮件地址的mail.jskcw.com电子邮件都被邮件服务器接受。
jskcw.com. 3600 IN MX 0 mail.jskcw.com.
SPF 记录,用于验证哪些邮件服务器被批准代表给定域发送电子邮件。在下面的示例中,我们正在批准域邮件服务器 (mx),如果 SPF 检查失败,结果将是软故障(~all):
jskcw.com. 3600 IN TXT "v=spf1 mx ~all"
当然,您需要将域名和IP地址替换为您的真实域名和邮件服务器IP地址。
反向 DNS (PTR)
反向 DNS (PTR) 是 IP 地址到域名的映射,与 DNS 将域名映射到 IP 地址完全相反。
大多数电子邮件服务器将对尝试连接到它们的 IP 地址执行反向 DNS 查找,如果未配置 PTR 记录,则可能不接受来自服务器的电子邮件。
在大多数情况下,PTR 条目可以通过您的托管服务提供商 Web 界面或通过联系支持团队并要求他们为您配置正确的 PTR 记录来配置。
您可以使用dig 命令 找出给定 IP 地址的反向 DNS。
dig -x 23.45.67.89
23.45.67.89.in-addr.arpa domain name pointer mail.jskcw.com.
创建系统用户
由于我们正在为虚拟用户配置邮件服务器,因此我们需要一个系统用户,该用户将成为所有邮箱的所有者,虚拟用户将使用该用户访问服务器上的电子邮件。
以下命令将创建一个 名为的新组和用户vmail,并将用户的主目录配置为/var/mail/vmail:
sudo groupadd -g 5000 vmailsudo useradd -u 5000 -g vmail -s /usr/sbin/nologin -d /var/mail/vmail -m vmail
所有虚拟邮箱都将存储在该/var/mail/vmail目录中。
安装 Nginx PHP 和 MySQL
Postfix Admin 是一个基于 PHP 的应用程序。为了能够访问 PostfixAdmin Web 界面,我们需要安装Web 服务器 和 PHP。
运行以下命令来安装 Nginx、PHP 和所有必需的 PHP 模块:
sudo apt install nginx mysql-server php7.0-fpm php7.0-cli php7.0-imap php7.0-json php7.0-mysql php7.0-opcache php7.0-mbstring php7.0-readline
在安装过程中,系统会提示您创建 MySQL 根密码。
下载并配置 Postfix Admin
在撰写本文时,3.1是 Postfix Admin 的最新稳定版本。
使用以下wget 命令下载 Postfix Admin 存档 :
VERSION=3.1wget -q https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-${VERSION}/postfixadmin-${VERSION}.tar.gz
下载完成后解压缩存档 :
tar xzf postfixadmin-${VERSION}.tar.gz
将 Postfix Admin 源文件移动到/var/www目录并创建templates_c目录(智能缓存):
sudo mv postfixadmin-${VERSION}/ /var/www/postfixadminrm -f postfixadmin-${VERSION}.tar.gzmkdir /var/www/postfixadmin/templates_c
Nginx 和 PHP-FPM 都在用户下运行,www-data因此我们需要将 的所有权更改/var/www/postfixadmin为该用户:
sudo chown -R www-data: /var/www/postfixadmin
Postfix Admin 将使用MySQL 数据库 来存储有关用户、域和应用程序配置的信息。
登录到MySQL shell :
mysql -u root -p
CREATE DATABASE postfixadmin;GRANT ALL ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'P4ssvv0rD';FLUSH PRIVILEGES;
不要忘记将密码 ( P4ssvv0rD)更改为更安全的密码。
我们将创建一个名为的新文件config.local.php,而不是编辑默认的 Postfix Admin 配置,该文件将覆盖默认的应用程序配置:
使用文本文件打开文件:
sudo nano /var/www/postfixadmin/config.local.php
粘贴以下php代码:
/var/www/postfixadmin/config.local.php
<?php$CONF['configured'] = true;$CONF['database_type'] = 'mysqli';$CONF['database_host'] = 'localhost';$CONF['database_user'] = 'postfixadmin';$CONF['database_password'] = 'P4ssvv0rD';$CONF['database_name'] = 'postfixadmin';$CONF['default_aliases'] = array ( 'abuse' => 'abuse@jskcw.com', 'hostmaster' => 'hostmaster@jskcw.com', 'postmaster' => 'postmaster@jskcw.com', 'webmaster' => 'webmaster@jskcw.com');$CONF['fetchmail'] = 'NO';$CONF['show_footer_text'] = 'NO';$CONF['quota'] = 'YES';$CONF['domain_quota'] = 'YES';$CONF['quota_multiplier'] = '1024000';$CONF['used_quotas'] = 'YES';$CONF['new_quota_table'] = 'YES';$CONF['aliases'] = '0';$CONF['mailboxes'] = '0';$CONF['maxquota'] = '0';$CONF['domain_quota_default'] = '0';?>
保存并关闭文件。
通过上面的配置,我们定义了数据库类型和登录凭据。此外,我们正在指定默认别名、禁用fetchmail和启用配额。
接下来,运行以下命令为 Postfix Admin 数据库创建架构:
sudo -u www-data php /var/www/postfixadmin/upgrade.php
填充数据库后,我们可以继续使用该postfixadmin-cli工具创建我们的第一个 PostfixAdmin 超级管理员用户。
此用户将拥有修改任何域或应用程序配置的管理权限。
sudo bash /var/www/postfixadmin/scripts/postfixadmin-cli admin add superadmin@jskcw.com --superadmin 1 --active 1 --password P4ssvv0rD --password2 P4ssvv0rD
输出应如下所示:
Welcome to Postfixadmin-CLI v0.2---------------------------------------------------------------The admin superadmin@jskcw.com has been added!---------------------------------------------------------------
不要忘记P4ssvv0rD将超级管理员帐户的密码 ( )更改为更安全的密码。
安装免费的 Let's Encrypt SSL 证书
我们将使用 SSL 证书访问我们的 Postfix Admin 安装并启用 Dovecot 和 Postfix SSL/TLS 加密。
我们有一个关于如何安装 Let's Encrypt SSL Certificate的教程 。在我们的例子中,这里最重要的一点是为您的服务器主机名 (FQDN) 生成 SSL 证书mail.jskcw.com。
按照上面链接的教程生成 SSL 证书后,按如下方式编辑Nginx 服务器块 :
/etc/nginx/sites-enabled/mail.jskcw.com.conf
server { listen 80; server_name mail.jskcw.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri;}server { listen 443 ssl http2; server_name mail.jskcw.com; root /var/www; ssl_certificate /etc/letsencrypt/live/mail.jskcw.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mail.jskcw.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/mail.jskcw.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; location / { try_files $uri $uri/ /index.php; } location /postfixadmin { index index.php; try_files $uri $uri/ /postfixadmin/index.php; } location ~* \.php$ { fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) {return 404;} fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }}
重新加载 Nginx 服务 以使更改生效:
sudo systemctl reload nginx
此时,您应该能够https://mail.jskcw.com/postfixadmin使用本教程前面创建的超级管理员用户登录到您的 Postfix Admin 安装。
结论
在本教程中,您已经安装了 Postfix Admin。在本系列的下一部分中,我们将继续 Postfix 和 Dovecot 的安装和配置。敬请关注!
这篇文章是设置和配置邮件服务器系列的一部分。
本系列的其他帖子:
• 使用 PostfixAdmin 配置邮件服务器