如何在 Ubuntu 上的 PostfixAdmin 中托管多个邮件域

[ad_1]

本教程将向您展示如何使用 PostfixAdmin 在 Ubuntu 服务器上设置多个邮件域(虚拟主机),PostfixAdmin 是一个基于 Web 的开源界面,用于为许多域和用户配置和管理基于 Postfix 的电子邮件服务器。

先决条件

要遵循本教程,假设

  • 您已经为 PostfixAdmin 配置了一个邮件域(Ubuntu 18.04 指南,Ubuntu 20.04 指南)。
  • 您已按照第 4 部分设置 SPF 和 OpenDKIM。
  • 您已经为第一个邮件域安装了 Roundcube Webmail(Ubuntu 18.04 指南,Ubuntu 20.04 指南。)

你需要做什么

如果要托管多个邮件域,则需要

  • 在基于 Web 的 PostfixAdmin 面板中添加新的邮件域和用户。
  • 为新邮件域创建 MX、A 和 SPF 记录。
  • 为新域设置 DKIM 签名。
  • 为新域创建 DMARC 记录。
  • 为多个域设置 RoundCube Webmail、Postfix 和 Dovecot

反向 DNS 检查用于检查发件人的 IP 地址是否与 HELO 主机名匹配。 添加新邮件域时,您无需添加其他 PTR 记录。

步骤 1:在 PostfixAdmin 面板中添加其他域

使用 postmaster 帐户登录 PostfixAdmin 面板。 (https://postfixadmin.your-domain.com/) 然后去 Domain List -> New Domain 添加一个新域。

请注意,新域应具有 DNS A 记录,否则 PostfixAdmin 会抛出以下错误消息。 您可以在 dnsmap.io 上检查 DNS 传播状态。

Invalid domain domain2.com, and/or not discoverable in DNS

接下来,在新域下添加一个用户。

第 2 步:为新邮件域创建 MX、A 和 SPF 记录

在您的 DNS 管理器中,为新域添加 MX 记录,如下所示。

Record Type    Name      Value

MX             @         mail.domain2.com

A 记录指向您的邮件服务器的 IP 地址。

Record Type    Name     Value

A              mail     IP-address-of-mail-server

如果您的服务器使用 IPv6 地址,请务必添加 AAAA 记录。

然后创建 SPF 记录以允许 MX 主机为新邮件域发送电子邮件。

Record Type    Name      Value

TXT            @         v=spf1 mx ~all

第 3 步:为新域设置 DKIM 签名

在本教程系列的第 4 部分中,我们已经为单个域安装并配置了 OpenDKIM。 现在我们需要告诉 OpenDKIM 为新邮件域签署每封外发电子邮件。

编辑 OpenDKIM 签名表文件。

sudo nano /etc/opendkim/signing.table

添加第二个域,如下所示。

*@domain1.com       default._domainkey.domain1.com
*@domain2.com       default._domainkey.domain2.com

编辑密钥表文件。

sudo nano /etc/opendkim/key.table

添加第二个域,如下所示。

default._domainkey.domain1.com     domain1.com:default:/etc/opendkim/keys/domain1.com/default.private
default._domainkey.domain2.com     domain2.com:default:/etc/opendkim/keys/domain2.com/default.private

编辑受信任的主机文件。

sudo nano /etc/opendkim/trusted.hosts

添加第二个域,如下所示。

127.0.0.1
localhost

*.domain1.com
*.domain2.com

接下来,我们需要为第二个域生成一个私人/公共密钥对。 为第二个域创建一个单独的文件夹。

sudo mkdir /etc/opendkim/keys/domain2.com

使用生成密钥 opendkim-genkey 工具。

sudo opendkim-genkey -b 2048 -d domain2.com -D /etc/opendkim/keys/domain2.com -s default -v

上述命令将创建 2048 位密钥。 -d (domain) 指定域。 -D (directory) 指定将存储密钥的目录,我们使用 default 作为 selector (-s). 命令执行后,私钥将被写入 default.private 文件和公钥将被写入 default.txt 文件。

制作 opendkim 作为私钥的所有者。

sudo chown opendkim:opendkim /etc/opendkim/keys/domain2.com/default.private

显示公钥

sudo cat /etc/opendkim/keys/domain2.com/default.txt

后面的字符串 p 参数是公钥。

在 opendkim 中添加一个新域

在您的 DNS 管理器中,为第二个域创建 TXT 记录。 Enter default._domainkey 在名称字段中。 复制括号中的所有内容并粘贴到值字段中。 删除所有双引号。 (您可以先将其粘贴到文本编辑器中,删除所有双引号,然后将其复制到您的 DNS 管理器中。您的 DNS 管理器可能会要求您删除其他无效字符,例如回车。)

创建 dkim 记录

保存更改后。 使用此命令检查 TXT 记录。

dig TXT default._domainkey.domain2.com

现在您可以运行以下命令来测试您的 DKIM DNS 记录是否正确。

sudo opendkim-testkey -d domain2.com -s default -vvv

如果一切正常,你会看到

opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'default._domainkey.domain2.com'
opendkim-testkey: key secure
opendkim-testkey: key OK

如果您看到“密钥不安全”,请不要惊慌。 这是因为您的域名未启用 DNSSEC。 DNSSEC 是用于安全 DNS 查询的安全标准。 大多数域名尚未启用 DNSSEC。 您可以继续遵循本指南。

重新启动 OpenDKIM,以便它开始为第二个域签署电子邮件。

sudo systemctl restart opendkim

步骤 4:为新域创建 DMARC 记录

要创建 DMARC 记录,请转到您的 DNS 管理器并添加一个 文本 记录。 在名称字段中,输入 _dmarc. 在值字段中,输入以下内容。 请注意,您需要创建 [email protected] 电子邮件地址。

v=DMARC1; p=none; pct=100; rua=mailto:[email protected]

创建 dmarc 记录 txt

上面的 DMARC 记录是一个安全的起点。 要查看 DMARC 的完整说明,请查看以下文章。

  • 创建 DMARC 记录以保护您的域名免受电子邮件欺骗

第 5 步:为多个域设置 RoundCube、Postfix 和 Dovecot

我假设您为第一个邮件域安装了 Roundcube webmail。

让第一个域的用户使用是有意义的 mail.domain1.com 和第二个域的用户使用 mail.domain2.com 访问 RoundCube 网络邮件时。 我会告诉你怎么做 Apache 和 Nginx。

Apache

如果 Roundcube 由 Apache web 服务器,然后为第二个域创建一个虚拟主机。

sudo nano /etc/apache2/sites-available/mail.domain2.com.conf

将以下文本放入文件中。

<VirtualHost *:80>
  ServerName mail.domain2.com
  DocumentRoot /var/www/roundcube/

  ErrorLog ${APACHE_LOG_DIR}/mail.domain2.com_error.log
  CustomLog ${APACHE_LOG_DIR}/mail.domain2.com_access.log combined

  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>

  <Directory /var/www/roundcube/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

</VirtualHost>

Save 和 close 文件。 然后使用以下命令启用此虚拟主机:

sudo a2ensite mail.domain2.com.conf

重新加载 Apache 以使更改生效。

sudo systemctl reload apache2

nginx

如果 Roundcube 由 Nginx Web 服务器提供服务,则为第二个域创建一个虚拟主机。

sudo nano /etc/nginx/conf.d/mail.domain2.com.conf

将以下文本放入文件中。

server {
  listen 80;
  server_name mail.domain2.com;
  root /var/www/roundcube/;
  index index.php index.html index.htm;

  error_log /var/log/nginx/mail.domain2.com.error;
  access_log /var/log/nginx/mail.domain2.com.access;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ .php$ {
   try_files $uri =404;
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }

  location ~ /.well-known/acme-challenge {
    allow all;
  }
 location ~ ^/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
    deny all;
  }
  location ~ ^/(bin|SQL)/ {
    deny all;
  }
 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* .(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }
}

笔记: 如果你使用 Ubuntu 20.04,你应该更换 php7.2-fpmphp7.4-fpm 在上面的代码中。

Save 和 close 文件。 然后测试 Nginx 配置。

sudo nginx -t

如果测试成功,请重新加载 Nginx 以使更改生效。

sudo systemctl reload nginx

获取TLS证书

现在使用 Certbot 为您的所有邮件域获取 TLS 证书,因此您将拥有一个带有多个域名的 TLS 证书,并且邮件客户端不会抛出安全警告。

Apache

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email [email protected]

nginx

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email [email protected]

请注意,在上面的命令中,我们使用第一个邮件域指定了证书名称,它将在文件路径中使用,因此您不必更改 Postfix 或 Dovecot 配置文件中的文件路径。

当它询问您是否要更新现有证书以包含新域时,请回答 U 并击中 Enter.

certbot 多域 iredmail

现在您应该看到以下消息,这表明已成功获取多域证书。

iredmail nginx 多域

重新加载 Apache 或 Nginx 来获取新证书。

sudo systemctl reload apache2
sudo systemctl reload nginx

您现在应该可以使用不同的域来访问 RoundCube 网络邮件。 您还需要重新加载 Postfix SMTP 服务器和 Dovecot IMAP 服务器,以便让它们获取新证书。 这就是 Postfix 和 Dovecot 为多个域提供服务所需的全部工作。

sudo systemctl reload postfix dovecot

在您的计算机或移动设备上使用邮件客户端

启动您的桌面电子邮件客户端(例如 Mozilla Thunderbird)并添加第二个域的邮件帐户。

  • 在传入服务器部分,选择 IMAP 协议,输入 mail.domain2.com 作为服务器名称,选择端口 143 和 STARTTLS。 选择 normal password 作为身份验证方法。
  • 在传出部分,选择 SMTP 协议,输入 mail.domain2.com 作为服务器名称,选择端口 587 和 STARTTLS。 选择 normal password 作为身份验证方法。

postfixadmin-multiple-domain-postfix-dovecot

暗示:您还可以将端口 993 与 SSL/TLS 加密用于 IMAP,并将端口 465 与 SSL/TLS 加密用于 SMTP。 你应该 不是 使用端口 25 作为 SMTP 端口来提交外发电子邮件。

尽管 Postfix SMTP 服务器和 Dovecot IMAP 服务器在与他人通信时使用的是第一个邮件域 (mail.domain1.com) 的主机名,但它们现在使用的是多域证书,因此邮件客户端不会显示证书警告。

SPF 和 DKIM 检查

现在,您可以使用桌面电子邮件客户端或网络邮件客户端将测试电子邮件发送至 [email protected] 并获得免费的电子邮件身份验证报告。 这是我从 port25.com 得到的报告

后缀 spf dkim ubuntu

不要忘记在 https://www.mail-tester.com 上测试您的电子邮件分数,并使用 GlockApps 测试电子邮件位置。

如果 DKIM 检查失败,您可以访问 https://www.dmarcanalyzer.com/dkim/dkim-check/ 查看您的 DKIM 记录是否有任何错误。

dmarc 分析器 dkim 记录检查器

如果您的电子邮件仍然被标记为垃圾邮件怎么办?

我在本文中为您提供了更多提示:阻止您的电子邮件被标记为垃圾邮件的 7 个有效提示。 虽然这需要一些时间和精力,但在应用这些技巧后,您的电子邮件最终会被放入收件箱。

多个邮件域的 rDNS?

反向 DNS (rDNS),又名 PTR 记录,用于检查发件人的 IP 地址是否与 HELO 主机名匹配。 添加新邮件域时,您无需添加其他 PTR 记录。 您的 rDNS 应仅设置为一个主机名,即 Postfix 中设置的主机名,可以使用以下命令显示。

postconf myhostname

rDNS 是 IP 地址的记录。 它不是域名的记录。 如果您只有一个 IP 地址,那么您只需要一个指向一个主机名的 rDNS 记录。 反向 DNS 检查不验证什么 From: 域在您的电子邮件中,只要您的 IP 地址有 rDNS 记录并且主机名可以解析回相同的 IP 地址,您就可以通过反向 DNS 检查。

此外,在一台服务器上托管多个域时,您无需更改 Postfix 中的以下设置。

  • 我的主机名
  • 肌源
  • 我的目的地

托管电子邮件服务,如 G Suite微软在线交换 所有服务器都使用一个主机名为其客户发送电子邮件。 G Suite 用户发送的电子邮件都使用 google.com 在主机名和 Microsoft Exchange Online 用户发送的电子邮件中都使用 outlook.com 在主机名中。 对于其他电子邮件服务提供商(如 Mailchimp、SendinBlue、SendPluse 等)也是如此。它们都为单个服务器使用一个主机名,而一个 IP 地址只有一个 rDNS 记录。

包起来

就是这样! 我希望本教程可以帮助您使用 PostfixAdmin 托管多个电子邮件域。 与往常一样,如果您发现这篇文章有用,请订阅我们的免费时事通讯以获取更多提示和技巧。 保重?

[ad_2]

Related Posts