如何在Modoboa邮件服务器中托管多个域

本教程将向您展示如何使用Modoboa(一个易于使用的开源邮件托管解决方案)设置多个电子邮件域(虚拟托管)。 为了遵循本教程,假定您已经用一个域名设置了Modoboa邮件服务器。

你需要做什么

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

  • 在Modoboa管理面板中添加新的邮件域和用户。
  • 为新邮件域创建MX,A,SPF,DKIM和DMARC记录。
  • 为多个域设置Webmail,Postfix和Dovecot

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

步骤1:在Modoboa管理面板中添加其他域

使用管理员帐户登录到Modoboa管理面板。 (https://mail.your-domain.com/admin)然后转到 Domains 标签并点击 Add 按钮添加新域。

然后在“名称”字段中输入您的主域名。 强烈建议您启用DKIM签名,这可以帮助提高您的域名信誉。 在 Key selector 提起诉讼时,您可以输入类似 modoboa。 选择2048作为密钥长度。

在modoboa中托管多个电子邮件域

在下一个屏幕中,您可以选择为您的域创建一个管理员帐户。 SMTP协议要求邮件服务器应具有[email protected]地址。

modoboa添加第二个域

单击提交按钮,您的新域名将添加到Modoboa中。

要添加电子邮件地址,请转到 Domains 标签,然后单击您的第二个域名。

modoboa简单邮件托管

然后单击邮箱。

modoboa虚拟域

请点击 Add 按钮并选择 Account

modoboa域邮箱

然后选择 Simple user 作为角色。 在用户名字段中输入电子邮件地址,然后输入密码。

modoboa添加第二个域的电子邮件地址

在下一个屏幕中,您可以选择为此电子邮件地址创建别名。

在modoboa邮件服务器中创建别名

单击提交按钮后,将创建电子邮件地址。

步骤2:为新邮件域创建MX,A,SPF,DKIM和DMARC记录

MX和记录

在您的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,DKIM和DMARC记录

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

Record Type    Name      Value

TXT            @         v=spf1 mx ~all

要创建DKIM记录,我们需要获取公共密钥。 转到Modoboa管理面板,然后在 Domains 标签。 在“ DNS”部分中,单击 Show key 按钮。

modoboa-dkim签名第二个域

第二个域的公钥将被显示。 有两种格式。 我们只需要绑定/命名格式。

modoboa-dkim第二个域的公共密钥

转到您的DNS管理员,创建TXT记录,输入 modoboa._domainkey 在名称字段中。 (回想一下,在管理面板中添加第二个域名时,我们使用modoboa作为选择器。)复制括号中的所有内容并将其粘贴到value字段中。 删除所有双引号。 您的DNS管理员可能会要求您删除其他无效字符,例如回车符。

Modoboa DKIM格式

要创建DMARC记录,请转到您的DNS管理器并添加一个 文本 记录。 在名称字段中,输入 _dmarc。 在值字段中,输入以下内容:

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

创建dmarc记录txt

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

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

步骤3:为多个域设置Webmail,Postfix和Dovecot

让第一个域的用户使用 mail.domain1.com 和第二个域的用户使用 mail.domain2.com 访问网络邮件时。

首先,我们需要将第二个邮件域添加到允许的主机列表中。 编辑 settings.py 文件。

sudo nano /srv/modoboa/instance/instance/settings.py

找到以下几行。

ALLOWED_HOSTS = [
    'mail.domain1.com',
]

添加您的第二个域。

ALLOWED_HOSTS = [
    'mail.domain1.com',
    'mail.domain2.com',
]

保存并关闭文件。 然后重新启动uWSGI,以使更改生效。

sudo systemctl restart uwsgi

接下来,我们需要在第二个域中创建一个Nginx虚拟主机文件。 将工作目录更改为 /etc/nginx/sites-enabled

cd /etc/nginx/sites-enabled

将第一邮件域虚拟主机文件的内容复制到第二域虚拟主机文件。

sudo cp mail.domain1.com.conf mail.domain2.com.conf

编辑第二个域虚拟主机文件。

sudo nano mail.domain2.com.conf

找到以下行。

server_name mail.domain1.com;

我们需要将server_name更改为 mail.domain2.com

server_name mail.domain2.com;

有2个实例 server_name,您需要同时更改它们。 (请注意,您不应在SSL证书路径中更改域名。)然后注释掉以下3行,因为该上游已经在 mail.domain1.com.conf 文件。

upstream modoboa {
    server unix:/run/uwsgi/app/modoboa_instance/socket fail_timeout=0;
}

保存并关闭文件。 然后测试Nginx配置。

sudo nginx -t

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

sudo systemctl reload nginx

确保在Debian / Ubuntu服务器上安装了cerbot。

sudo apt install certbot python3-certbot-nginx

在CentOS / RHEL上,运行以下命令以安装certbot。

sudo dnf install certbot python3-certbot-nginx

现在,使用Certbot nginx插件来获取所有邮件域的TLS证书,因此您将拥有一个带有多个域名的TLS证书。

sudo certbot certonly --nginx --agree-tos -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email your-email-address 

请注意,在上述命令中,我们使用第一个邮件域指定了证书名称,该域名将在文件路径中使用,因此您不必在Postfix或Dovecot配置文件中更改文件路径。 另请注意,我们告诉certbot仅获取而不安装证书(certonly)。

当它询问您是否要更新现有证书以包括新域时,请回答U并按Enter。

modoboa letsencrypt多域

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

Modoboa多域Nginx证书

重新加载Nginx以获取新证书。

sudo systemctl reload nginx

现在,您应该可以使用其他域来访问Webmail。 另外,您还需要重新加载Postfix SMTP服务器和Dovecot IMAP服务器,以使它们获取新证书。

sudo systemctl reload postfix dovecot

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

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

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

莫多波阿多域后缀鸽

暗示:您还可以将端口993与SSL / TLS加密一起用于IMAP,并将端口465与SSL / TLS加密一起用于SMTP。 你应该 使用端口25作为邮件客户端中的SMTP端口来提交传出电子邮件。

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

SPF和DKIM检查

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

postfix spf dkim Ubuntu

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

如果DKIM检查失败,则可以转到https://www.dmarcanalyzer.com/dkim/dkim-check/查看DKIM记录是否存在任何错误。

dmarc分析器dkim记录检查器

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

在本文中,我为您提供了更多提示:如何停止将您的电子邮件标记为垃圾邮件。 尽管需要一些时间和精力,但应用这些提示后,您的电子邮件最终将被放置在收件箱中。

(可选)为多个域设置自动发现和自动配置

通过自动发现和自动配置,可以轻松配置桌面或移动邮件客户端。 最终用户只需要输入名称,电子邮件地址和密码来设置他/她的邮件帐户,而无需输入SMTP或IMAP服务器详细信息。 为多个域设置Autodiscover和AutoConfig需要两个简单步骤。

首先,在您的DNS管理器中为第二个域创建CNAME记录,

autoconfig.domain2.com       CNAME         mail.domain2.com
autodiscover.domain2.com     CNAME         mail.domain2.com

然后转到Nginx虚拟主机目录。

cd /etc/nginx/sites-enabled/

复制第二个域的自动配置虚拟主机。

sudo cp autoconfig.domain1.com.conf autoconfig.domain2.com.conf

编辑新的虚拟主机文件。

sudo nano autoconfig.domain2.com.conf

找到以下行。

server_name autoconfig.domain1.com;

我们需要将server_name更改为 autoconfig.domain2.com

server_name autoconfig.domain2.com;

然后注释掉以下3行,因为该上游已经在 autoconfig.domain1.com.conf 文件,我们无法再次定义。

upstream automx {
      server unix:/run/uwsgi/app/automx_instance/socket fail_timeout=0;
}

保存并关闭文件。 然后测试Nginx配置。

sudo nginx -t

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

sudo systemctl reload nginx

现在,您可以在Microsoft Outlook和Mozilla Thunderbird邮件客户端中测试自动发现和自动配置功能。

默认情况下,AutoMX将发送第一个主机名(mail.domain1.com)邮寄给需要自动发现和自动配置信息的客户端,这意味着Microsoft Outlook和Mozilla Thunderbird将使用 mail.domain1.com 作为第二个域的SMTP服务器和IMAP服务器。 这可行,但并不完美。

如果要使用Microsoft Outlook和Mozilla Thunderbird mail.domain2.com 作为第二个域的SMTP和IMAP服务器地址,然后编辑AutoMX配置文件。

sudo nano /etc/automx.conf

在该文件的末尾为第二个域创建一个新部分。

[domain2.com]

然后从 [global] 部分并更改域名。

[domain2.com]
backend = sql
action = settings
account_type = email
host = postgres://modoboa:[email protected]/modoboa
query = SELECT first_name || ' ' || last_name AS display_name, email, SPLIT_PART(email, '@', 2) AS domain FROM core_user WHERE email="%s" AND is_active
result_attrs = display_name, email

smtp = yes
smtp_server = mail.domain2.com
smtp_port = 587
smtp_encryption = starttls
smtp_auth = plaintext
smtp_auth_identity = ${email}
smtp_refresh_ttl = 6
smtp_default = yes

imap = yes
imap_server = mail.domain2.com
imap_port = 143
imap_encryption = starttls
imap_auth = plaintext
imap_auth_identity = ${email}
imap_refresh_ttl = 6

pop = yes
pop_server = mail.domain2.com
pop_port = 110
pop_encryption = starttls
pop_auth = plaintext
pop_auth_identity = ${email}

保存并关闭文件。 然后重新启动AutoMX。

sudo systemctl restart uwsgi

包起来

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

Sidebar