如何使用PostfixAdmin配置邮件服务器

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.

具有 sudo 权限的用户 。

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

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

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 配置邮件服务器

• 安装和配置 Postfix 和 Dovecot

• 安装和集成 Rspamd

• 安装和配置 Roundcube Webmail

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容