Postfix Admin是一个基于Web的界面,允许用户配置和管理基于Postfix的电子邮件服务器。使用Postfix Admin,您可以创建和管理多个虚拟域,用户和别名
在本教程其中包括创建必要的DNS记录,并解释如何使用免费的Let's Encrypt HTTPS SSL证书,PHP和MySQL安装和配置Postfix Admin,Nginx。
本教程是基于Ubuntu 16.04编写,但是相同的小修改步骤也适用于较新版本的Ubuntu
前提条件
在开始之前你必须具备以下条件,您将需要:
- Ubuntu 16.04服务器。该服务器主机名必须是FQDN((Fully Qualified Domain Name)全限定域名,同时带有主机名和域名的名称)在本系列中我们将使用
mail.myfreax.com
- 具有sudo权限的用户
DNS设置
您需要为您的邮件系统设置以下DNS记录
- 一条A记录,用于将系统的FQDN(主机名)指向您的邮件服务器IPv4地址。
mail.myfreax.com. 3600 IN A 231.23.64.89
FQDN由两部分组成,主机名和域名
- MX记录,用于指定哪个邮件服务器负责邮件地址
@myfreax.com
收发电子邮件。在我们的案例中,我们希望邮件服务器mail.myfreax.com
接受发送到电子邮件地址@myfreax.com
的所有电子邮件。
myfreax.com. 3600 IN MX 0 mail.myfreax.com.
- SPF记录,用于验证哪些邮件服务器被批准代表指定域发送电子邮件。在下面的示例中,我们批准域邮件服务器(mx),如果SPF检查失败,结果将是软故障码(~all):
myfreax.com. 3600 IN TXT "v=spf1 mx ~all"
您需要使用您的真实域名和邮件服务器IP地址替换域名和IP地址。
反向DNS(PTR)
反向DNS(PTR)是IP地址映射域名,与DNS完全相反,它将IP地址映射到域名。
大多数电子邮件服务器将对尝试连接它们的IP地址执行反向DNS查找,如果未设置PTR记录,则可能不接受来自服务器的电子邮件
在大多数情况下,可以通过您的托管服务提供商Web界面设置PTR条目,或者联系支持团队并要求他们为您设置正确的PTR记录
您可以使用dig命令查找给定IP地址的反向DNS。
dig -x 223.45.67.89
223.45.67.89.in-addr.arpa domain name pointer mail.myfreax.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 root密码。
下载并配置Postfix管理员
在撰写本文时,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
目录(smarty cache):
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
使用以下命令创建新的MySQL用户和数据库:
CREATE DATABASE postfixadmin;GRANT ALL ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'P4ssvv0rD';FLUSH PRIVILEGES;
不要忘记将密码(P4ssvv0rD
)更改为更安全的密码。
我们将创建一个名为config.local.php
覆盖默认应用程序设置的新文件,而不是编辑默认的Postfix Admin配置:
使用vim文本编辑器打开文件:
sudo vim /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@myfreax.com',
'hostmaster' => 'hostmaster@myfreax.com',
'postmaster' => 'postmaster@myfreax.com',
'webmaster' => 'webmaster@myfreax.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@myfreax.com --superadmin 1 --active 1 --password P4ssvv0rD --password2 P4ssvv0rD
输出应该如下所示:
Welcome to Postfixadmin-CLI v0.2
---------------------------------------------------------------
The admin superadmin@myfreax.com has been added!
---------------------------------------------------------------
不要忘记P4ssvv0rD
将超级用户的密码更改为更安全的密码。
安装Let's Encrypt SSL证书
我们将使用SSL证书访问我们的Postfix Admin安装并启用Dovecot和Postfix SSL / TLS加密
我们有一个关于如何安装Let的加密SSL证书的教程。这里最重要的一点是在我们的案例中为您的服务器主机名(FQDN)生成SSL证书mail.myfreax.com
。
按照上面链接的教程生成SSL证书后,编辑Nginx服务器配置,如下所示:
/etc/nginx/sites-enabled/mail.myfreax.com.conf
server {
listen 80;
server_name mail.myfreax.com;
root /var/www;
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;
}
}
执行命令获取证书
sudo certbot --nginx -d mail.myfreax.com
重新加载Nginx服务以使更改生效:
sudo systemctl reload nginx
此时,您应该可以打开 https://mail.myfreax.com/postfixadmin
,使用本教程前面创建的superadmin用户登录Postfix Admin
至此,您已安装Postfix Admin,在下一篇文章中我们将会配置并集成dovecot和postfix,如果你喜欢我们的内容可以选择在下方二维码中捐赠我们,或者点击广告予以支持,感谢你的支持