使用PostfixAdmin设置邮件服务器

Postfix Admin是基于Web的界面,允许用户配置和管理基于Postfix的电子邮件服务器。 使用Postfix Admin,您可以创建和管理多个虚拟域,用户和别名。

这是“设置和配置邮件服务器”系列文章中的第一篇,介绍创建必要的DNS记录,并说明如何安装和配置Postfix Admin,带有免费的Let’s Encrypt证书的Nginx,PHP和MySQL。

本教程是为Ubuntu 16.04编写的,但是在任何较新版本的Ubuntu上,只需进行少量修改即可执行相同的步骤。

先决条件

作为遵循此系列的前提条件,您将需要:

  • Ubuntu 16.04服务器。 服务器主机名必须是FQDN。 在本系列中,我们将使用 mail.linuxize.com
  • 具有sudo特权的用户。

DNS设置

您需要设置以下DNS记录才能使邮件系统正常工作:

  • 一条记录,用于将系统的FQDN(主机名)指向邮件服务器的IPv4地址。
mail.linuxize.com. 3600 IN A   23.45.67.89

FQDN由两部分组成,主机名和域名。

  • MX记录,以指定哪个邮件服务器负责代表收件人的域接受电子邮件。 在我们的情况下,我们希望将所有电子邮件发送到 @linuxize.com 接受的电子邮件地址 mail.linuxize.com 邮件服务器。
linuxize.com.      3600 IN MX  0 mail.linuxize.com.
  • SPF记录,用于验证哪些邮件服务器被允许代表给定域发送电子邮件。 在下面的示例中,我们正在批准域邮件服务器(mx),如果SPF检查失败,则结果将是软故障(〜all):
linuxize.com.      3600 IN TXT "v=spf1 mx ~all"

当然,您需要用真实域名和邮件服务器IP地址替换域名和IP地址。

反向DNS(PTR)#

反向DNS(PTR)是IP地址到域名的映射,与DNS恰好相反,DNS会将域名映射到IP地址。

大多数电子邮件服务器将在尝试连接到它们的IP地址上执行反向DNS查找,如果未设置PTR记录,则可能不接受来自服务器的电子邮件。

在大多数情况下,可以通过主机提供商的Web界面或联系支持团队并要求他们为您设置正确的PTR记录来设置PTR条目。

您可以使用dig命令找出给定IP地址的反向DNS。

dig -x 23.45.67.89
23.45.67.89.in-addr.arpa domain name pointer mail.linuxize.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管理员编号

在撰写本文时, 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

使用以下命令创建一个新的MySQL用户和数据库:

CREATE DATABASE postfixadmin;GRANT ALL ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'P4ssvv0rD';FLUSH PRIVILEGES;

别忘了更改密码(P4ssvv0rD)到更安全的地方。

我们将创建一个名为的新文件,而不是编辑默认的Postfix Admin配置。 config.local.php 它将覆盖默认的应用程序设置:

用文本文件打开文件:

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'      => '[email protected]',
  'hostmaster' => '[email protected]',
  'postmaster' => '[email protected]',
  'webmaster'  => '[email protected]'
);

$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超级管理员用户: postfixadmin-cli 工具。

该用户将具有管理权限,可以修改任何域或应用程序设置。

sudo bash /var/www/postfixadmin/scripts/postfixadmin-cli admin add [email protected] --superadmin 1 --active 1 --password P4ssvv0rD --password2 P4ssvv0rD

输出应如下所示:

Welcome to Postfixadmin-CLI v0.2
---------------------------------------------------------------

The admin [email protected] has been added!

---------------------------------------------------------------

别忘了更改密码(P4ssvv0rD),以使超级管理员帐户更安全。

免费安装“让我们加密SSL证书”

我们将使用SSL证书来访问Postfix Admin安装并启用Dovecot和Postfix SSL / TLS加密。

我们有一个有关如何安装“让我们加密SSL证书”的教程。 在此情况下,最重要的一点是为您的服务器主机名(FQDN)生成SSL证书 mail.linuxize.com

按照上面的链接教程生成SSL证书后,请按照以下步骤编辑Nginx服务器块:

/etc/nginx/sites-enabled/mail.linuxize.com.conf

server {
    listen 80;
    server_name mail.linuxize.com;

    include snippets/letsencrypt.conf;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name mail.linuxize.com;
    root /var/www;

    ssl_certificate /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mail.linuxize.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/mail.linuxize.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

此时,您应该可以从以下位置登录到Postfix Admin安装: https://mail.linuxize.com/postfixadmin,使用本教程前面创建的superadmin用户。

结论#

在本教程中,您已经安装了Postfix Admin。 在本系列的下一部分中,我们将继续进行Postfix和Dovecot的安装和配置。 敬请关注!

postfixadmin邮件服务器postfix dovecot dns ssl ubuntu

这篇文章是“设置和配置邮件服务器”系列的一部分。该系列的其他文章:

•使用PostfixAdminMarch 1,2018设置邮件服务器•安装和配置Postfix和DovecotMarch 2,2018•安装和集成RspamdMarch 8,2018•安装和配置Roundcube Webmail2018年3月12日

Sidebar